# HG changeset patch # User michaelni # Date 1033082842 0 # Node ID 0fb4c66527e18d8b3a0127747e773d0712aa0997 # Parent f69f9cb461bc49a77f906a6af16419de084ccd2e autodetect UMP4 (by adding a fourcc field to AVCodecContext) diff -r f69f9cb461bc -r 0fb4c66527e1 avcodec.h --- a/avcodec.h Thu Sep 26 22:37:33 2002 +0000 +++ b/avcodec.h Thu Sep 26 23:27:22 2002 +0000 @@ -5,8 +5,8 @@ #define LIBAVCODEC_VERSION_INT 0x000406 #define LIBAVCODEC_VERSION "0.4.6" -#define LIBAVCODEC_BUILD 4627 -#define LIBAVCODEC_BUILD_STR "4627" +#define LIBAVCODEC_BUILD 4628 +#define LIBAVCODEC_BUILD_STR "4628" enum CodecID { CODEC_ID_NONE, @@ -675,6 +675,14 @@ * decoding: unused */ float dark_masking; + + /** + * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A') + * this is used to workaround some encoder bugs + * encoding: unused + * decoding: set by user + */ + int fourcc; //FIXME this should be reordered after kabis API is finished ... //TODO kill kabi diff -r f69f9cb461bc -r 0fb4c66527e1 h263.c --- a/h263.c Thu Sep 26 22:37:33 2002 +0000 +++ b/h263.c Thu Sep 26 23:27:22 2002 +0000 @@ -4162,7 +4162,7 @@ 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"); +// fprintf(stderr, "illegal scalability header (VERY broken encoder), trying to workaround\n"); s->scalability=0; s->gb= bak; @@ -4231,10 +4231,12 @@ s->last_time_base= s->time_base; s->time_base+= time_incr; s->time= s->time_base*s->time_increment_resolution + time_increment; - if(s->time < s->last_non_b_time && s->workaround_bugs==3){ - fprintf(stderr, "header is not mpeg4 compatible, broken encoder, trying to workaround\n"); - s->time_base++; - s->time+= s->time_increment_resolution; + if(s->workaround_bugs==3 || s->avctx->fourcc== 'U' + ('M'<<8) + ('P'<<16) + ('4'<<24)){ + if(s->time < s->last_non_b_time){ +// fprintf(stderr, "header is not mpeg4 compatible, broken encoder, trying to workaround\n"); + s->time_base++; + s->time+= s->time_increment_resolution; + } } s->pp_time= s->time - s->last_non_b_time; s->last_non_b_time= s->time;