| 
																	
																	
																		
																	
																	
																 | 
																@@ -130,6 +130,9 @@ DECLARE_ALIGNED(8, const uint8_t, ff_dither_8x8_220)[8][8] = { | 
															
														
														
													
														
															
																 | 
																 | 
																        AV_WL16(pos, bias + av_clip_ ## signedness ## 16(val >> shift)); \ | 
																 | 
																 | 
																        AV_WL16(pos, bias + av_clip_ ## signedness ## 16(val >> shift)); \ | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																// Shifting negative amounts is undefined in C | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#define SHIFT_LEFT(val, shift) ((val) * (1 << (shift))) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static av_always_inline void | 
																 | 
																 | 
																static av_always_inline void | 
															
														
														
													
														
															
																 | 
																 | 
																yuv2plane1_16_c_template(const int32_t *src, uint16_t *dest, int dstW, | 
																 | 
																 | 
																yuv2plane1_16_c_template(const int32_t *src, uint16_t *dest, int dstW, | 
															
														
														
													
														
															
																 | 
																 | 
																                         int big_endian, int output_bits) | 
																 | 
																 | 
																                         int big_endian, int output_bits) | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -601,8 +604,8 @@ yuv2rgb48_X_c_template(SwsContext *c, const int16_t *lumFilter, | 
															
														
														
													
														
															
																 | 
																 | 
																        int j; | 
																 | 
																 | 
																        int j; | 
															
														
														
													
														
															
																 | 
																 | 
																        int Y1 = -0x40000000; | 
																 | 
																 | 
																        int Y1 = -0x40000000; | 
															
														
														
													
														
															
																 | 
																 | 
																        int Y2 = -0x40000000; | 
																 | 
																 | 
																        int Y2 = -0x40000000; | 
															
														
														
													
														
															
																 | 
																 | 
																        int U  = -128 << 23; // 19 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        int V  = -128 << 23; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        int U  = SHIFT_LEFT(-128, 23); // 19 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        int V  = SHIFT_LEFT(-128, 23); | 
															
														
														
													
														
															
																 | 
																 | 
																        int R, G, B; | 
																 | 
																 | 
																        int R, G, B; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        for (j = 0; j < lumFilterSize; j++) { | 
																 | 
																 | 
																        for (j = 0; j < lumFilterSize; j++) { | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -663,8 +666,8 @@ yuv2rgb48_2_c_template(SwsContext *c, const int32_t *buf[2], | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < ((dstW + 1) >> 1); i++) { | 
																 | 
																 | 
																    for (i = 0; i < ((dstW + 1) >> 1); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																        int Y1 = (buf0[i * 2]     * yalpha1  + buf1[i * 2]     * yalpha) >> 14; | 
																 | 
																 | 
																        int Y1 = (buf0[i * 2]     * yalpha1  + buf1[i * 2]     * yalpha) >> 14; | 
															
														
														
													
														
															
																 | 
																 | 
																        int Y2 = (buf0[i * 2 + 1] * yalpha1  + buf1[i * 2 + 1] * yalpha) >> 14; | 
																 | 
																 | 
																        int Y2 = (buf0[i * 2 + 1] * yalpha1  + buf1[i * 2 + 1] * yalpha) >> 14; | 
															
														
														
													
														
															
																 | 
																 | 
																        int U  = (ubuf0[i]        * uvalpha1 + ubuf1[i]        * uvalpha + (-128 << 23)) >> 14; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        int V  = (vbuf0[i]        * uvalpha1 + vbuf1[i]        * uvalpha + (-128 << 23)) >> 14; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        int U  = (ubuf0[i]        * uvalpha1 + ubuf1[i]        * uvalpha + SHIFT_LEFT(-128, 23)) >> 14; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        int V  = (vbuf0[i]        * uvalpha1 + vbuf1[i]        * uvalpha + SHIFT_LEFT(-128, 23)) >> 14; | 
															
														
														
													
														
															
																 | 
																 | 
																        int R, G, B; | 
																 | 
																 | 
																        int R, G, B; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        Y1 -= c->yuv2rgb_y_offset; | 
																 | 
																 | 
																        Y1 -= c->yuv2rgb_y_offset; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -701,8 +704,8 @@ yuv2rgb48_1_c_template(SwsContext *c, const int32_t *buf0, | 
															
														
														
													
														
															
																 | 
																 | 
																        for (i = 0; i < ((dstW + 1) >> 1); i++) { | 
																 | 
																 | 
																        for (i = 0; i < ((dstW + 1) >> 1); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																            int Y1 = (buf0[i * 2]    ) >> 2; | 
																 | 
																 | 
																            int Y1 = (buf0[i * 2]    ) >> 2; | 
															
														
														
													
														
															
																 | 
																 | 
																            int Y2 = (buf0[i * 2 + 1]) >> 2; | 
																 | 
																 | 
																            int Y2 = (buf0[i * 2 + 1]) >> 2; | 
															
														
														
													
														
															
																 | 
																 | 
																            int U  = (ubuf0[i] + (-128 << 11)) >> 2; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            int V  = (vbuf0[i] + (-128 << 11)) >> 2; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int U  = (ubuf0[i] + SHIFT_LEFT(-128, 11)) >> 2; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int V  = (vbuf0[i] + SHIFT_LEFT(-128, 11)) >> 2; | 
															
														
														
													
														
															
																 | 
																 | 
																            int R, G, B; | 
																 | 
																 | 
																            int R, G, B; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																            Y1 -= c->yuv2rgb_y_offset; | 
																 | 
																 | 
																            Y1 -= c->yuv2rgb_y_offset; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -729,8 +732,8 @@ yuv2rgb48_1_c_template(SwsContext *c, const int32_t *buf0, | 
															
														
														
													
														
															
																 | 
																 | 
																        for (i = 0; i < ((dstW + 1) >> 1); i++) { | 
																 | 
																 | 
																        for (i = 0; i < ((dstW + 1) >> 1); i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																            int Y1 = (buf0[i * 2]    ) >> 2; | 
																 | 
																 | 
																            int Y1 = (buf0[i * 2]    ) >> 2; | 
															
														
														
													
														
															
																 | 
																 | 
																            int Y2 = (buf0[i * 2 + 1]) >> 2; | 
																 | 
																 | 
																            int Y2 = (buf0[i * 2 + 1]) >> 2; | 
															
														
														
													
														
															
																 | 
																 | 
																            int U  = (ubuf0[i] + ubuf1[i] + (-128 << 12)) >> 3; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            int V  = (vbuf0[i] + vbuf1[i] + (-128 << 12)) >> 3; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int U  = (ubuf0[i] + ubuf1[i] + SHIFT_LEFT(-128, 12)) >> 3; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int V  = (vbuf0[i] + vbuf1[i] + SHIFT_LEFT(-128, 12)) >> 3; | 
															
														
														
													
														
															
																 | 
																 | 
																            int R, G, B; | 
																 | 
																 | 
																            int R, G, B; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																            Y1 -= c->yuv2rgb_y_offset; | 
																 | 
																 | 
																            Y1 -= c->yuv2rgb_y_offset; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -1172,8 +1175,8 @@ yuv2rgb_full_X_c_template(SwsContext *c, const int16_t *lumFilter, | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < dstW; i++) { | 
																 | 
																 | 
																    for (i = 0; i < dstW; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																        int j; | 
																 | 
																 | 
																        int j; | 
															
														
														
													
														
															
																 | 
																 | 
																        int Y = 0; | 
																 | 
																 | 
																        int Y = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																        int U = -128 << 19; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        int V = -128 << 19; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        int U = SHIFT_LEFT(-128, 19); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        int V = SHIFT_LEFT(-128, 19); | 
															
														
														
													
														
															
																 | 
																 | 
																        int R, G, B, A; | 
																 | 
																 | 
																        int R, G, B, A; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        for (j = 0; j < lumFilterSize; j++) { | 
																 | 
																 | 
																        for (j = 0; j < lumFilterSize; j++) { | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |