]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/utvideodec.c
Merge commit '16cb06bb30390c3d74312fc6aead818e19bfd8e4'
[ffmpeg] / libavcodec / utvideodec.c
index 40c12772b34e4a3ae8be1b10f87ff46b282bff07..26c3f8a506c4f9efbea2453b7ff7fbd520b89f9c 100644 (file)
@@ -229,6 +229,16 @@ fail:
     return AVERROR_INVALIDDATA;
 }
 
+static int compute_cmask(int plane_no, int interlaced, enum AVPixelFormat pix_fmt)
+{
+    const int is_luma = (pix_fmt == AV_PIX_FMT_YUV420P) && !plane_no;
+
+    if (interlaced)
+        return ~(1 + 2 * is_luma);
+
+    return ~is_luma;
+}
+
 static int decode_plane(UtvideoContext *c, int plane_no,
                         uint8_t *dst, int step, ptrdiff_t stride,
                         int width, int height,
@@ -239,7 +249,7 @@ static int decode_plane(UtvideoContext *c, int plane_no,
     VLC vlc;
     GetBitContext gb;
     int prev, fsym;
-    const int cmask = c->interlaced ? ~(1 + 2 * (!plane_no && c->avctx->pix_fmt == AV_PIX_FMT_YUV420P)) : ~(!plane_no && c->avctx->pix_fmt == AV_PIX_FMT_YUV420P);
+    const int cmask = compute_cmask(plane_no, c->interlaced, c->avctx->pix_fmt);
 
     if (build_huff(src, &vlc, &fsym)) {
         av_log(c->avctx, AV_LOG_ERROR, "Cannot build Huffman codes\n");