[SCM] libav/experimental: use the width & height from the mpeg4 header ... in the case that its complete

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:31:11 UTC 2013


The following commit has been merged in the experimental branch:
commit 488fa19a86dd9f9ae3adfedcd45fe62acf6d309a
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Tue Mar 19 03:51:36 2002 +0000

    use the width & height from the mpeg4 header ... in the case that its complete
    
    Originally committed as revision 340 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index d68240b..34cfe46 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -2149,6 +2149,10 @@ int mpeg4_decode_picture_header(MpegEncContext * s)
                 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 --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index 5da9ac5..8a80af6 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -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;
 

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list