Mercurial > libavformat.hg
changeset 1526:135565ec768d libavformat
Clean up XAN DPCM hack and set codec_tag to 0 for XAN DPCM, AVI files
with XAN DPCM audio (wrongly) declare PCM audio in the header.
author | diego |
---|---|
date | Sat, 18 Nov 2006 17:37:56 +0000 |
parents | 518d9cecef02 |
children | 185cafb49ae8 |
files | avidec.c |
diffstat | 1 files changed, 6 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/avidec.c Fri Nov 17 16:54:18 2006 +0000 +++ b/avidec.c Sat Nov 18 17:37:56 2006 +0000 @@ -216,7 +216,6 @@ int i, n; AVStream *st; AVIStream *ast = NULL; - int xan_video = 0; /* hack to support Xan A/V */ char str_track[4]; avi->stream_index= -1; @@ -432,8 +431,6 @@ st->codec->codec_type = CODEC_TYPE_VIDEO; st->codec->codec_tag = tag1; st->codec->codec_id = codec_get_id(codec_bmp_tags, tag1); - if (st->codec->codec_id == CODEC_ID_XAN_WC4) - xan_video = 1; st->need_parsing = 2; //only parse headers dont do slower repacketization, this is needed to get the pict type which is needed for generating correct pts // url_fskip(pb, size - 5 * 4); break; @@ -443,16 +440,18 @@ av_log(s, AV_LOG_DEBUG, "invalid sample size or block align detected\n"); if (size%2) /* 2-aligned (fix for Stargate SG-1 - 3x18 - Shades of Grey.avi) */ url_fskip(pb, 1); - /* special case time: To support Xan DPCM, hardcode - * the format if Xxan is the video codec */ st->need_parsing = 1; /* ADTS header is in extradata, AAC without header must be stored as exact frames, parser not needed and it will fail */ if (st->codec->codec_id == CODEC_ID_AAC && st->codec->extradata_size) st->need_parsing = 0; /* force parsing as several audio frames can be in one packet */ - if (xan_video) - st->codec->codec_id = CODEC_ID_XAN_DPCM; + /* AVI files with Xan DPCM audio (wrongly) declare PCM + * audio in the header but have Axan as stream_code_tag. */ + if (st->codec->stream_codec_tag == ff_get_fourcc("Axan")){ + st->codec->codec_id = CODEC_ID_XAN_DPCM; + st->codec->codec_tag = 0; + } break; default: st->codec->codec_type = CODEC_TYPE_DATA;