Mercurial > libavcodec.hg
changeset 11179:9a793cb05a85 libavcodec
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
author | stefang |
---|---|
date | Mon, 15 Feb 2010 16:43:45 +0000 |
parents | fda40558e98a |
children | 0b2618b091df |
files | cavs.h cavsdec.c |
diffstat | 2 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/cavs.h Mon Feb 15 16:37:13 2010 +0000 +++ b/cavs.h Mon Feb 15 16:43:45 2010 +0000 @@ -160,6 +160,7 @@ 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
--- a/cavsdec.c Mon Feb 15 16:37:13 2010 +0000 +++ b/cavsdec.c Mon Feb 15 16:43:45 2010 +0000 @@ -483,6 +483,15 @@ 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])