|
|
|
@ -59,7 +59,7 @@ static int h263_decode_init(AVCodecContext *avctx) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* for h263, we allocate the images after having read the header */ |
|
|
|
|
if (avctx->codec->id != CODEC_ID_H263) |
|
|
|
|
if (avctx->codec->id != CODEC_ID_H263 && avctx->codec->id != CODEC_ID_MPEG4) |
|
|
|
|
if (MPV_common_init(s) < 0) |
|
|
|
|
return -1; |
|
|
|
|
|
|
|
|
@ -114,22 +114,24 @@ static int h263_decode_frame(AVCodecContext *avctx, |
|
|
|
|
ret = intel_h263_decode_picture_header(s); |
|
|
|
|
} else { |
|
|
|
|
ret = h263_decode_picture_header(s); |
|
|
|
|
/* After H263 header decode we have the height, width, */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* After H263 & mpeg4 header decode we have the height, width,*/ |
|
|
|
|
/* and other parameters. So then we could init the picture */ |
|
|
|
|
/* FIXME: By the way H263 decoder is evolving it should have */ |
|
|
|
|
/* an H263EncContext */ |
|
|
|
|
if (!s->context_initialized) { |
|
|
|
|
avctx->width = s->width; |
|
|
|
|
avctx->height = s->height; |
|
|
|
|
if (MPV_common_init(s) < 0) |
|
|
|
|
return -1; |
|
|
|
|
} else if (s->width != avctx->width || s->height != avctx->height) { |
|
|
|
|
/* H.263 could change picture size any time */ |
|
|
|
|
MPV_common_end(s); |
|
|
|
|
if (MPV_common_init(s) < 0) |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
if (!s->context_initialized) { |
|
|
|
|
avctx->width = s->width; |
|
|
|
|
avctx->height = s->height; |
|
|
|
|
if (MPV_common_init(s) < 0) |
|
|
|
|
return -1; |
|
|
|
|
} else if (s->width != avctx->width || s->height != avctx->height) { |
|
|
|
|
/* H.263 could change picture size any time */ |
|
|
|
|
MPV_common_end(s); |
|
|
|
|
if (MPV_common_init(s) < 0) |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (ret < 0) |
|
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|