skip_bits1(&s->gb); /* marker */
height = get_bits(&s->gb, 13);
skip_bits1(&s->gb); /* marker */
+ if(width && height){ /* they should be non zero but who knows ... */
+ s->width = width;
+ s->height = height;
+ }
}
if(get_bits1(&s->gb)) printf("interlaced not supported\n"); /* interlaced */
}
/* 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;
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;