diff options
author | John Stebbins <stebbins@jetheaddev.com> | 2014-08-08 08:21:02 -0700 |
---|---|---|
committer | John Stebbins <stebbins@jetheaddev.com> | 2014-08-14 07:58:50 -0700 |
commit | b869eea7ea8f5d8331fcd6355f848bb6a6e06b14 (patch) | |
tree | 6d301b5b633d65cd013e2a2eb490ded915b191fd | |
parent | 998c9f15d1ca8c7489775ebcca51623b915988f1 (diff) | |
download | ffmpeg-b869eea7ea8f5d8331fcd6355f848bb6a6e06b14.tar.gz |
h263dec: Fix order of initialization
ff_MPV_common_init requires the frame dimensions which get parsed in
*_decode_picture_header.
-rw-r--r-- | libavcodec/h263dec.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index a6d16b7258..c4db99e6c3 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -416,21 +416,9 @@ int ff_h263_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, if (ret < 0) return ret; - if (!s->context_initialized) { + if (!s->context_initialized) // we need the idct permutaton for reading a custom matrix ff_mpv_idct_init(s); - if ((ret = ff_MPV_common_init(s)) < 0) - return ret; - } - - /* We need to set current_picture_ptr before reading the header, - * otherwise we cannot store anyting in there */ - if (s->current_picture_ptr == NULL || s->current_picture_ptr->f->data[0]) { - int i = ff_find_unused_picture(s, 0); - if (i < 0) - return i; - s->current_picture_ptr = &s->picture[i]; - } /* let's go :-) */ if (CONFIG_WMV2_DECODER && s->msmpeg4_version == 5) { @@ -465,6 +453,17 @@ int ff_h263_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, return ret; } + if (!s->context_initialized) + if ((ret = ff_MPV_common_init(s)) < 0) + return ret; + + if (s->current_picture_ptr == NULL || s->current_picture_ptr->f->data[0]) { + int i = ff_find_unused_picture(s, 0); + if (i < 0) + return i; + s->current_picture_ptr = &s->picture[i]; + } + avctx->has_b_frames = !s->low_delay; #define SET_QPEL_FUNC(postfix1, postfix2) \ |