Commit 7c25523c authored by Paul B Mahol's avatar Paul B Mahol Committed by Luca Barbato

utvideodec: Fix decoding odd sizes with interlaced video with some formats

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
parent 8c0cadd1
......@@ -228,6 +228,16 @@ fail:
return AVERROR_INVALIDDATA;
}
static int compute_cmask(int plane_no, int interlaced, int 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,
......@@ -238,7 +248,7 @@ static int decode_plane(UtvideoContext *c, int plane_no,
VLC vlc;
BitstreamContext bc;
int prev, fsym;
const int cmask = ~(!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");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment