# HG changeset patch # User michaelni # Date 1016509896 0 # Node ID d0c186bcf07512f6f7d5fccec5a19f622ab273b8 # Parent 34f40a0fc840c79b25b9dfa9c6867ff9b330f8d3 use the width & height from the mpeg4 header ... in the case that its complete diff -r 34f40a0fc840 -r d0c186bcf075 h263.c --- a/h263.c Mon Mar 18 21:06:07 2002 +0000 +++ b/h263.c Tue Mar 19 03:51:36 2002 +0000 @@ -2149,6 +2149,10 @@ 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 */ diff -r 34f40a0fc840 -r d0c186bcf075 h263dec.c --- a/h263dec.c Mon Mar 18 21:06:07 2002 +0000 +++ b/h263dec.c Tue Mar 19 03:51:36 2002 +0000 @@ -59,7 +59,7 @@ } /* 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 @@ 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;