Change RGB2YUV_SHIFT from 16 to 15 to make it able to work
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 10 Sep 2008 16:39:56 +0000 (16:39 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 10 Sep 2008 16:39:56 +0000 (16:39 +0000)
with 16bit signed constants (like SIMD might use).

Originally committed as revision 27568 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale

libswscale/swscale.c
libswscale/swscale_template.c

index 72ba001..52d2359 100644 (file)
@@ -152,7 +152,7 @@ unsigned swscale_version(void)
         || isBGR(x)                 \
     )
 
-#define RGB2YUV_SHIFT 16
+#define RGB2YUV_SHIFT 15
 #define BY ((int)( 0.098*(1<<RGB2YUV_SHIFT)+0.5))
 #define BV ((int)(-0.071*(1<<RGB2YUV_SHIFT)+0.5))
 #define BU ((int)( 0.439*(1<<RGB2YUV_SHIFT)+0.5))
index f969fc6..ea11141 100644 (file)
@@ -1891,10 +1891,8 @@ static inline void RENAME(name ## _half)(uint8_t *dstU, uint8_t *dstV, uint8_t *
 \
         g>>=shg;\
 \
-        dstU[i]= (((RU)>>1)*r + ((GU)>>1)*g + ((BU)>>1)*b + (257<<((S)-1)))>>(S);\
-        dstV[i]= (((RV)>>1)*r + ((GV)>>1)*g + ((BV)>>1)*b + (257<<((S)-1)))>>(S);\
-/*        dstU[i]= ((RU)*r + (GU)*g + (BU)*b + (257<<(S)))>>((S)+1);\
-        dstV[i]= ((RV)*r + (GV)*g + (BV)*b + (257<<(S)))>>((S)+1);*/\
+        dstU[i]= ((RU)*r + (GU)*g + (BU)*b + (257<<(S)))>>((S)+1);\
+        dstV[i]= ((RV)*r + (GV)*g + (BV)*b + (257<<(S)))>>((S)+1);\
     }\
 }