swscale/utils: check chroma width for fast bilinear scaler
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 15 Dec 2013 13:13:55 +0000 (14:13 +0100)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Mon, 16 Dec 2013 01:24:13 +0000 (02:24 +0100)
Fixes artifacts where fast bilinear was used for downscaling chroma

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 037fc3b054b10aee0f11fdbe835e5dffa8e95b37)

libswscale/utils.c

index c87cbf5..ee136ac 100644 (file)
@@ -1269,8 +1269,9 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
 
     if (INLINE_MMXEXT(cpu_flags) && c->srcBpc == 8 && c->dstBpc <= 14) {
         c->canMMXEXTBeUsed = dstW >= srcW && (dstW & 31) == 0 &&
+                             c->chrDstW >= c->chrSrcW &&
                              (srcW & 15) == 0;
-        if (!c->canMMXEXTBeUsed && dstW >= srcW && (srcW & 15) == 0
+        if (!c->canMMXEXTBeUsed && dstW >= srcW && c->chrDstW >= c->chrSrcW && (srcW & 15) == 0
 
             && (flags & SWS_FAST_BILINEAR)) {
             if (flags & SWS_PRINT_INFO)