[FFmpeg-cvslog] swscale: fix yuv range correction when using 16-bit scaling.

Ronald S. Bultje git at videolan.org
Mon Jul 11 04:12:58 CEST 2011


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Wed Jun 29 21:04:45 2011 -0700| [ebb0d6035394eaeddc346173e7c0a314fe568fd9] | committer: Michael Niedermayer

swscale: fix yuv range correction when using 16-bit scaling.
(cherry picked from commit e0b8fff6c7a293e35079ba1931bd19372686b3f6)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ebb0d6035394eaeddc346173e7c0a314fe568fd9
---

 libswscale/swscale.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 987afff..644f848 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -1982,8 +1982,8 @@ static void chrRangeToJpeg16_c(int16_t *_dstU, int16_t *_dstV, int width)
     int32_t *dstU = (int32_t *) _dstU;
     int32_t *dstV = (int32_t *) _dstV;
     for (i = 0; i < width; i++) {
-        dstU[i] = (FFMIN(dstU[i],30775)*4663 - 9289992)>>12; //-264
-        dstV[i] = (FFMIN(dstV[i],30775)*4663 - 9289992)>>12; //-264
+        dstU[i] = (FFMIN(dstU[i],30775<<4)*4663 - (9289992<<4))>>12; //-264
+        dstV[i] = (FFMIN(dstV[i],30775<<4)*4663 - (9289992<<4))>>12; //-264
     }
 }
 static void chrRangeFromJpeg16_c(int16_t *_dstU, int16_t *_dstV, int width)
@@ -1992,8 +1992,8 @@ static void chrRangeFromJpeg16_c(int16_t *_dstU, int16_t *_dstV, int width)
     int32_t *dstU = (int32_t *) _dstU;
     int32_t *dstV = (int32_t *) _dstV;
     for (i = 0; i < width; i++) {
-        dstU[i] = (dstU[i]*1799 + 4081085)>>11; //1469
-        dstV[i] = (dstV[i]*1799 + 4081085)>>11; //1469
+        dstU[i] = (dstU[i]*1799 + (4081085<<4))>>11; //1469
+        dstV[i] = (dstV[i]*1799 + (4081085<<4))>>11; //1469
     }
 }
 static void lumRangeToJpeg16_c(int16_t *_dst, int width)
@@ -2001,14 +2001,14 @@ static void lumRangeToJpeg16_c(int16_t *_dst, int width)
     int i;
     int32_t *dst = (int32_t *) _dst;
     for (i = 0; i < width; i++)
-        dst[i] = (FFMIN(dst[i],30189)*19077 - 39057361)>>14;
+        dst[i] = (FFMIN(dst[i],30189<<4)*19077 - (39057361<<4))>>14;
 }
 static void lumRangeFromJpeg16_c(int16_t *_dst, int width)
 {
     int i;
     int32_t *dst = (int32_t *) _dst;
     for (i = 0; i < width; i++)
-        dst[i] = (dst[i]*14071 + 33561947)>>14;
+        dst[i] = (dst[i]*14071 + (33561947<<4))>>14;
 }
 
 static void hyscale_fast_c(SwsContext *c, int16_t *dst, int dstWidth,



More information about the ffmpeg-cvslog mailing list