swscale: override the lack of the accurate rounding flag when needed for dither.
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 5 Jun 2011 02:31:36 +0000 (04:31 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 5 Jun 2011 02:47:48 +0000 (04:47 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libswscale/x86/swscale_template.c

index ccd4052..58c6bde 100644 (file)
@@ -2366,7 +2366,8 @@ static void RENAME(sws_init_swScale)(SwsContext *c)
             default: break;
             }
         } else {
-            c->yuv2yuv1     = RENAME(yuv2yuv1    );
+            int should_dither= isNBPS(c->srcFormat) || is16BPS(c->srcFormat);
+            c->yuv2yuv1     = should_dither ? RENAME(yuv2yuv1_ar    ) : RENAME(yuv2yuv1    );
             c->yuv2yuvX     = RENAME(yuv2yuvX    );
             switch (c->dstFormat) {
             case PIX_FMT_RGB32:   c->yuv2packedX = RENAME(yuv2rgb32_X);   break;