]> git.sesse.net Git - ffmpeg/blobdiff - libswscale/swscale.c
lavc/xfaceenc: prefer do{}while() over for(){} construct in xface_encode_frame()...
[ffmpeg] / libswscale / swscale.c
index 37b7712e228abb1b859d4aef12f3f42f9ed524e7..632e85a44f4618e96499f3beed101995ade9d3f3 100644 (file)
@@ -659,9 +659,18 @@ static int swScale(SwsContext *c, const uint8_t *src[],
             }
         }
     }
-
-    if (isPlanar(dstFormat) && isALPHA(dstFormat) && !alpPixBuf)
-        fillPlane(dst[3], dstStride[3], dstW, dstY - lastDstY, lastDstY, 255);
+    if (isPlanar(dstFormat) && isALPHA(dstFormat) && !alpPixBuf) {
+        int length = dstW;
+        int height = dstY - lastDstY;
+
+        if (is16BPS(dstFormat) || isNBPS(dstFormat)) {
+            const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(dstFormat);
+            fillPlane16(dst[3], dstStride[3], length, height, lastDstY,
+                    1, desc->comp[3].depth_minus1,
+                    isBE(dstFormat));
+        } else
+            fillPlane(dst[3], dstStride[3], length, height, lastDstY, 255);
+    }
 
 #if HAVE_MMXEXT_INLINE
     if (av_get_cpu_flags() & AV_CPU_FLAG_MMXEXT)