[SCM] libav/experimental: add heuristic to discern the old sample clips from streams encoded with rm52j encoder, a marker_bit has been added in the I-Frame syntax

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:00:08 UTC 2013


The following commit has been merged in the experimental branch:
commit 35122bd93e7f3e08b42fbbed2e9b5c7ac5c1f4f5
Author: Stefan Gehrer <stefan.gehrer at gmx.de>
Date:   Mon Feb 15 16:43:45 2010 +0000

    add heuristic to discern the old sample clips from streams encoded
    with rm52j encoder, a marker_bit has been added in the I-Frame syntax
    
    Originally committed as revision 21836 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/cavs.h b/libavcodec/cavs.h
index 5ae664d..fce55c3 100644
--- a/libavcodec/cavs.h
+++ b/libavcodec/cavs.h
@@ -160,6 +160,7 @@ typedef struct {
     int aspect_ratio;
     int mb_width, mb_height;
     int pic_type;
+    int stream_revision; ///<0 for samples from 2006, 1 for rm52j encoder
     int progressive;
     int pic_structure;
     int skip_mode_flag; ///< select between skip_count or one skip_flag per MB
diff --git a/libavcodec/cavsdec.c b/libavcodec/cavsdec.c
index 458fcf2..5929c8e 100644
--- a/libavcodec/cavsdec.c
+++ b/libavcodec/cavsdec.c
@@ -483,6 +483,15 @@ static int decode_pic(AVSContext *h) {
         h->pic_type = FF_I_TYPE;
         if(get_bits1(&s->gb))
             skip_bits(&s->gb,24);//time_code
+        /* old sample clips were all progressive and no low_delay,
+           bump stream revision if detected otherwise */
+        if((s->low_delay) || !(show_bits(&s->gb,9) & 1))
+            h->stream_revision = 1;
+        /* similarly test top_field_first and repeat_first_field */
+        else if(show_bits(&s->gb,11) & 3)
+            h->stream_revision = 1;
+        if(h->stream_revision > 0)
+            skip_bits(&s->gb,1); //marker_bit
     }
     /* release last B frame */
     if(h->picture.data[0])

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list