提交 7b20d35a 编写于 作者: J John Stebbins 提交者: Anton Khirnov

vc1: re-initialize tables after width/height change.

read_sequence_header can change width/height; therefore, re-initialize
all tables if width/height changed
Signed-off-by: NAnton Khirnov <anton@khirnov.net>
上级 1397ac0a
......@@ -3398,7 +3398,7 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx)
VC1Context *v = avctx->priv_data;
MpegEncContext *s = &v->s;
GetBitContext gb;
int i;
int i, cur_width, cur_height;
if (!avctx->extradata_size || !avctx->extradata) return -1;
if (!(avctx->flags & CODEC_FLAG_GRAY))
......@@ -3419,8 +3419,8 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx)
if (vc1_init_common(v) < 0) return -1;
ff_vc1dsp_init(&v->vc1dsp);
avctx->coded_width = avctx->width;
avctx->coded_height = avctx->height;
cur_width = avctx->coded_width = avctx->width;
cur_height = avctx->coded_height = avctx->height;
if (avctx->codec_id == CODEC_ID_WMV3)
{
int count = 0;
......@@ -3491,6 +3491,19 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx)
}
v->res_sprite = (avctx->codec_tag == MKTAG('W','V','P','2'));
}
// Sequence header information may not have been parsed
// yet when ff_msmpeg4_decode_init was called the fist time
// above. If sequence information changes, we need to call
// it again.
if (cur_width != avctx->width ||
cur_height != avctx->height) {
MPV_common_end(s);
if(ff_msmpeg4_decode_init(avctx) < 0)
return -1;
avctx->coded_width = avctx->width;
avctx->coded_height = avctx->height;
}
avctx->profile = v->profile;
if (v->profile == PROFILE_ADVANCED)
avctx->level = v->level;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册