swscale: fix off-by-one in second coefficient in bilinear filters.
authorRonald S. Bultje <rsbultje@gmail.com>
Fri, 13 Apr 2012 21:37:47 +0000 (14:37 -0700)
committerRonald S. Bultje <rsbultje@gmail.com>
Sat, 14 Apr 2012 23:29:10 +0000 (16:29 -0700)
If coefficient A is 12-bits xixed-point number "X", then the other
coefficient is (1 << 12) - X, not (1 << 12) - X - 1.

libswscale/output.c

index 5bc25fc35ad909f91c8d5c5a6c10e4df0614791b..c0f9b367d39953a0c60a9d8c5a3e336af25aac15 100644 (file)
@@ -353,7 +353,7 @@ yuv2mono_2_c_template(SwsContext *c, const int16_t *buf[2],
 {
     const int16_t *buf0  = buf[0],  *buf1  = buf[1];
     const uint8_t * const d128 = dither_8x8_220[y & 7];
-    int  yalpha1 = 4095 - yalpha;
+    int  yalpha1 = 4096 - yalpha;
     int i;
 
     for (i = 0; i < dstW; i += 8) {
@@ -505,8 +505,8 @@ yuv2422_2_c_template(SwsContext *c, const int16_t *buf[2],
     const int16_t *buf0  = buf[0],  *buf1  = buf[1],
                   *ubuf0 = ubuf[0], *ubuf1 = ubuf[1],
                   *vbuf0 = vbuf[0], *vbuf1 = vbuf[1];
-    int  yalpha1 = 4095 - yalpha;
-    int uvalpha1 = 4095 - uvalpha;
+    int  yalpha1 = 4096 - yalpha;
+    int uvalpha1 = 4096 - uvalpha;
     int i;
 
     for (i = 0; i < ((dstW + 1) >> 1); i++) {
@@ -648,8 +648,8 @@ yuv2rgb48_2_c_template(SwsContext *c, const int32_t *buf[2],
     const int32_t *buf0  = buf[0],  *buf1  = buf[1],
                   *ubuf0 = ubuf[0], *ubuf1 = ubuf[1],
                   *vbuf0 = vbuf[0], *vbuf1 = vbuf[1];
-    int  yalpha1 = 4095 - yalpha;
-    int uvalpha1 = 4095 - uvalpha;
+    int  yalpha1 = 4096 - yalpha;
+    int uvalpha1 = 4096 - uvalpha;
     int i;
 
     for (i = 0; i < ((dstW + 1) >> 1); i++) {
@@ -995,8 +995,8 @@ yuv2rgb_2_c_template(SwsContext *c, const int16_t *buf[2],
                   *vbuf0 = vbuf[0], *vbuf1 = vbuf[1],
                   *abuf0 = hasAlpha ? abuf[0] : NULL,
                   *abuf1 = hasAlpha ? abuf[1] : NULL;
-    int  yalpha1 = 4095 - yalpha;
-    int uvalpha1 = 4095 - uvalpha;
+    int  yalpha1 = 4096 - yalpha;
+    int uvalpha1 = 4096 - uvalpha;
     int i;
 
     for (i = 0; i < ((dstW + 1) >> 1); i++) {