mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
Merge commit '7c25523cc8e618e77dc84d960e41e9644eaf8c33'
* commit '7c25523cc8e618e77dc84d960e41e9644eaf8c33':
utvideodec: Fix decoding odd sizes with interlaced video with some formats
See 9ef21a897c
Merged-by: James Almer <jamrial@gmail.com>
This commit is contained in:
commit
b428d445a8
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user