OSDN Git Service

swscale: Fix rounding in yuv2mono_1_c_template()
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 14 Feb 2012 18:34:17 +0000 (19:34 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 14 Feb 2012 20:33:30 +0000 (21:33 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libswscale/output.c

index 90e284e..658ee2c 100644 (file)
@@ -378,14 +378,14 @@ yuv2mono_1_c_template(SwsContext *c, const int16_t *buf0,
     int i;
 
     for (i = 0; i < dstW - 7; i += 8) {
-        int acc =    g[(buf0[i    ] >> 7) + d128[0]];
-        acc += acc + g[(buf0[i + 1] >> 7) + d128[1]];
-        acc += acc + g[(buf0[i + 2] >> 7) + d128[2]];
-        acc += acc + g[(buf0[i + 3] >> 7) + d128[3]];
-        acc += acc + g[(buf0[i + 4] >> 7) + d128[4]];
-        acc += acc + g[(buf0[i + 5] >> 7) + d128[5]];
-        acc += acc + g[(buf0[i + 6] >> 7) + d128[6]];
-        acc += acc + g[(buf0[i + 7] >> 7) + d128[7]];
+        int acc =    g[((buf0[i    ] + 64) >> 7) + d128[0]];
+        acc += acc + g[((buf0[i + 1] + 64) >> 7) + d128[1]];
+        acc += acc + g[((buf0[i + 2] + 64) >> 7) + d128[2]];
+        acc += acc + g[((buf0[i + 3] + 64) >> 7) + d128[3]];
+        acc += acc + g[((buf0[i + 4] + 64) >> 7) + d128[4]];
+        acc += acc + g[((buf0[i + 5] + 64) >> 7) + d128[5]];
+        acc += acc + g[((buf0[i + 6] + 64) >> 7) + d128[6]];
+        acc += acc + g[((buf0[i + 7] + 64) >> 7) + d128[7]];
         output_pixel(*dest++, acc);
     }
 }