Commit 5137c6e9 authored by stefang's avatar stefang

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


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@21836 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent c26e2abf
...@@ -160,6 +160,7 @@ typedef struct { ...@@ -160,6 +160,7 @@ typedef struct {
int aspect_ratio; int aspect_ratio;
int mb_width, mb_height; int mb_width, mb_height;
int pic_type; int pic_type;
int stream_revision; ///<0 for samples from 2006, 1 for rm52j encoder
int progressive; int progressive;
int pic_structure; int pic_structure;
int skip_mode_flag; ///< select between skip_count or one skip_flag per MB int skip_mode_flag; ///< select between skip_count or one skip_flag per MB
......
...@@ -483,6 +483,15 @@ static int decode_pic(AVSContext *h) { ...@@ -483,6 +483,15 @@ static int decode_pic(AVSContext *h) {
h->pic_type = FF_I_TYPE; h->pic_type = FF_I_TYPE;
if(get_bits1(&s->gb)) if(get_bits1(&s->gb))
skip_bits(&s->gb,24);//time_code 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 */ /* release last B frame */
if(h->picture.data[0]) if(h->picture.data[0])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment