# HG changeset patch # User michaelni # Date 1063237255 0 # Node ID 40b69d238beb3033b5f4f64dcd215a073c05e4e8 # Parent 460e5ead67226773d82501aeadec28a847d20acc AVI stream header FCC / more reliable detection of old xvid files diff -r 460e5ead6722 -r 40b69d238beb avcodec.h --- a/avcodec.h Wed Sep 10 11:28:18 2003 +0000 +++ b/avcodec.h Wed Sep 10 23:40:55 2003 +0000 @@ -15,8 +15,8 @@ #define LIBAVCODEC_VERSION_INT 0x000408 #define LIBAVCODEC_VERSION "0.4.8" -#define LIBAVCODEC_BUILD 4678 -#define LIBAVCODEC_BUILD_STR "4678" +#define LIBAVCODEC_BUILD 4679 +#define LIBAVCODEC_BUILD_STR "4679" #define LIBAVCODEC_IDENT "FFmpeg" LIBAVCODEC_VERSION "b" LIBAVCODEC_BUILD_STR @@ -1219,6 +1219,13 @@ */ uint16_t *inter_matrix; + /** + * fourcc from the AVI stream header (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, will be converted to upper case by lavc during init + */ + unsigned int stream_codec_tag; } AVCodecContext; diff -r 460e5ead6722 -r 40b69d238beb h263dec.c --- a/h263dec.c Wed Sep 10 11:28:18 2003 +0000 +++ b/h263dec.c Wed Sep 10 23:40:55 2003 +0000 @@ -482,13 +482,17 @@ avctx->has_b_frames= !s->low_delay; if(s->xvid_build==0 && s->divx_version==0 && s->lavc_build==0){ - if(s->avctx->codec_tag == ff_get_fourcc("XVID") || s->avctx->codec_tag == ff_get_fourcc("XVIX")) + if(s->avctx->stream_codec_tag == ff_get_fourcc("XVID") || + s->avctx->codec_tag == ff_get_fourcc("XVID") || s->avctx->codec_tag == ff_get_fourcc("XVIX")) s->xvid_build= -1; - +#if 0 if(s->avctx->codec_tag == ff_get_fourcc("DIVX") && s->vo_type==0 && s->vol_control_parameters==1 && s->padding_bug_score > 0 && s->low_delay) // XVID with modified fourcc s->xvid_build= -1; +#endif + } + if(s->xvid_build==0 && s->divx_version==0 && s->lavc_build==0){ if(s->avctx->codec_tag == ff_get_fourcc("DIVX") && s->vo_type==0 && s->vol_control_parameters==0) s->divx_version= 400; //divx 4 } diff -r 460e5ead6722 -r 40b69d238beb mpegvideo.c --- a/mpegvideo.c Wed Sep 10 11:28:18 2003 +0000 +++ b/mpegvideo.c Wed Sep 10 23:40:55 2003 +0000 @@ -371,6 +371,11 @@ + (toupper((s->avctx->codec_tag>>16)&0xFF)<<16) + (toupper((s->avctx->codec_tag>>24)&0xFF)<<24); + s->avctx->stream_codec_tag= toupper( s->avctx->stream_codec_tag &0xFF) + + (toupper((s->avctx->stream_codec_tag>>8 )&0xFF)<<8 ) + + (toupper((s->avctx->stream_codec_tag>>16)&0xFF)<<16) + + (toupper((s->avctx->stream_codec_tag>>24)&0xFF)<<24); + CHECKED_ALLOCZ(s->allocated_edge_emu_buffer, (s->width+64)*2*17*2); //(width + edge + align)*interlaced*MBsize*tolerance s->edge_emu_buffer= s->allocated_edge_emu_buffer + (s->width+64)*2*17; @@ -874,7 +879,7 @@ MPV_common_end(s); if (s->out_format == FMT_MJPEG) mjpeg_close(s); - + av_freep(&avctx->extradata); return 0;