X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Futvideodec.c;h=26c3f8a506c4f9efbea2453b7ff7fbd520b89f9c;hb=2b739e1cb8f6ce8baead03ce5c999103ba78f24f;hp=40c12772b34e4a3ae8be1b10f87ff46b282bff07;hpb=087e9ab1b35794174a9604d09369db3d75e39db6;p=ffmpeg diff --git a/libavcodec/utvideodec.c b/libavcodec/utvideodec.c index 40c12772b34..26c3f8a506c 100644 --- a/libavcodec/utvideodec.c +++ b/libavcodec/utvideodec.c @@ -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");