[SCM] libav/experimental: autodetect UMP4 (by adding a fourcc field to AVCodecContext)

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:33:25 UTC 2013


The following commit has been merged in the experimental branch:
commit 0c2dd16eb65bb0ade97346aabecc4762f6bcac31
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Thu Sep 26 23:27:22 2002 +0000

    autodetect UMP4 (by adding a fourcc field to AVCodecContext)
    
    Originally committed as revision 974 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 85a9d9a..0d2c342 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -5,8 +5,8 @@
 
 #define LIBAVCODEC_VERSION_INT 0x000406
 #define LIBAVCODEC_VERSION     "0.4.6"
-#define LIBAVCODEC_BUILD       4627
-#define LIBAVCODEC_BUILD_STR   "4627"
+#define LIBAVCODEC_BUILD       4628
+#define LIBAVCODEC_BUILD_STR   "4628"
 
 enum CodecID {
     CODEC_ID_NONE, 
@@ -675,6 +675,14 @@ typedef struct AVCodecContext {
      * decoding: unused
      */
     float dark_masking;
+    
+    /**
+     * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A')
+     * this is used to workaround some encoder bugs
+     * encoding: unused
+     * decoding: set by user
+     */
+    int fourcc;
 
     //FIXME this should be reordered after kabis API is finished ...
     //TODO kill kabi
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 86a6f07..a6d73d2 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -4162,7 +4162,7 @@ int mpeg4_decode_picture_header(MpegEncContext * s)
                 if(   h_sampling_factor_n==0 || h_sampling_factor_m==0 
                    || v_sampling_factor_n==0 || v_sampling_factor_m==0 || s->workaround_bugs==1){
                    
-                    fprintf(stderr, "illegal scalability header (VERY broken encoder), trying to workaround\n");
+//                    fprintf(stderr, "illegal scalability header (VERY broken encoder), trying to workaround\n");
                     s->scalability=0;
                    
                     s->gb= bak;
@@ -4231,10 +4231,12 @@ int mpeg4_decode_picture_header(MpegEncContext * s)
         s->last_time_base= s->time_base;
         s->time_base+= time_incr;
         s->time= s->time_base*s->time_increment_resolution + time_increment;
-        if(s->time < s->last_non_b_time && s->workaround_bugs==3){
-            fprintf(stderr, "header is not mpeg4 compatible, broken encoder, trying to workaround\n");
-            s->time_base++;
-            s->time+= s->time_increment_resolution;
+        if(s->workaround_bugs==3 || s->avctx->fourcc== 'U' + ('M'<<8) + ('P'<<16) + ('4'<<24)){
+            if(s->time < s->last_non_b_time){
+//                fprintf(stderr, "header is not mpeg4 compatible, broken encoder, trying to workaround\n");
+                s->time_base++;
+                s->time+= s->time_increment_resolution;
+            }
         }
         s->pp_time= s->time - s->last_non_b_time;
         s->last_non_b_time= s->time;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list