diff options
author | Stefan Gehrer <stefan.gehrer@gmx.de> | 2010-02-15 16:43:45 +0000 |
---|---|---|
committer | Stefan Gehrer <stefan.gehrer@gmx.de> | 2010-02-15 16:43:45 +0000 |
commit | 35122bd93e7f3e08b42fbbed2e9b5c7ac5c1f4f5 (patch) | |
tree | 2c1f8983898c31eceb394a01956a583d53975b60 /libavcodec | |
parent | 026b9d3c5a2460f492b96a7e37758324cc729e7e (diff) | |
download | ffmpeg-35122bd93e7f3e08b42fbbed2e9b5c7ac5c1f4f5.tar.gz |
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
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/cavs.h | 1 | ||||
-rw-r--r-- | libavcodec/cavsdec.c | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/libavcodec/cavs.h b/libavcodec/cavs.h index 5ae664dd33..fce55c3b71 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 458fcf2bb5..5929c8e2fb 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]) |