Mercurial > libavcodec.hg
changeset 8209:65e05fda5280 libavcodec
move decoder initialization in separate function, earlier failure detection
author | bcoudurier |
---|---|
date | Mon, 24 Nov 2008 18:49:50 +0000 |
parents | 1fbeeeec901d |
children | e1f9d8919cb5 |
files | svq3.c |
diffstat | 1 files changed, 17 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/svq3.c Mon Nov 24 16:33:11 2008 +0000 +++ b/svq3.c Mon Nov 24 18:49:50 2008 +0000 @@ -774,16 +774,17 @@ return 0; } -static int svq3_decode_frame(AVCodecContext *avctx, - void *data, int *data_size, - const uint8_t *buf, int buf_size) +static int svq3_decode_init(AVCodecContext *avctx) { MpegEncContext *const s = avctx->priv_data; H264Context *const h = avctx->priv_data; - int m, mb_type; + int m; unsigned char *extradata; unsigned int size; + if (decode_init(avctx) < 0) + return -1; + s->flags = avctx->flags; s->flags2 = avctx->flags2; s->unrestricted_mv = 1; @@ -880,6 +881,17 @@ } } + return 0; +} + +static int svq3_decode_frame(AVCodecContext *avctx, + void *data, int *data_size, + const uint8_t *buf, int buf_size) +{ + MpegEncContext *const s = avctx->priv_data; + H264Context *const h = avctx->priv_data; + int m, mb_type; + /* special case for last picture */ if (buf_size == 0) { if (s->next_picture_ptr && !s->low_delay) { @@ -1030,7 +1042,7 @@ CODEC_TYPE_VIDEO, CODEC_ID_SVQ3, sizeof(H264Context), - decode_init, + svq3_decode_init, NULL, decode_end, svq3_decode_frame,