Mercurial > libavcodec.hg
changeset 699:f69f9cb461bc libavcodec
automatically detect broken opendivx codec and workaround, so bug=1 shouldnt be needed anymore for mpeg4 files, if there still are files which need bug=1 then tell me ...
author | michaelni |
---|---|
date | Thu, 26 Sep 2002 22:37:33 +0000 |
parents | e050a053e259 |
children | 0fb4c66527e1 |
files | h263.c |
diffstat | 1 files changed, 13 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/h263.c Thu Sep 26 09:16:23 2002 +0000 +++ b/h263.c Thu Sep 26 22:37:33 2002 +0000 @@ -4147,8 +4147,9 @@ } s->scalability= get_bits1(&s->gb); - if(s->workaround_bugs==1) s->scalability=0; + if (s->scalability) { + GetBitContext bak= s->gb; int dummy= s->hierachy_type= get_bits1(&s->gb); int ref_layer_id= get_bits(&s->gb, 4); int ref_layer_sampling_dir= get_bits1(&s->gb); @@ -4157,6 +4158,17 @@ int v_sampling_factor_n= get_bits(&s->gb, 5); int v_sampling_factor_m= get_bits(&s->gb, 5); s->enhancement_type= get_bits1(&s->gb); + + 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"); + s->scalability=0; + + s->gb= bak; + goto redo; + } + // bin shape stuff FIXME printf("scalability not supported\n"); }