Mercurial > mplayer.hg
changeset 25789:5cdba0d1c4cf
Allow overriding the codec_tag for audio codecs, and always override
codec_tag for PCM codecs (codec_id from lavf is correct, but the
codec_tag may be non-zero and wrong).
Also fixes bugzilla #983
author | rtogni |
---|---|
date | Sun, 20 Jan 2008 12:57:53 +0000 |
parents | 495cbb49fb1b |
children | 6aad76cd84d3 |
files | libmpdemux/demux_lavf.c |
diffstat | 1 files changed, 13 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/demux_lavf.c Sun Jan 20 09:59:55 2008 +0000 +++ b/libmpdemux/demux_lavf.c Sun Jan 20 12:57:53 2008 +0000 @@ -92,9 +92,6 @@ { CODEC_ID_MUSEPACK7, MKTAG('M', 'P', 'C', ' ')}, { CODEC_ID_MUSEPACK8, MKTAG('M', 'P', 'C', '8')}, { CODEC_ID_NELLYMOSER, MKTAG('N', 'E', 'L', 'L')}, - { CODEC_ID_PCM_S24BE, MKTAG('i', 'n', '2', '4')}, - { CODEC_ID_PCM_S16BE, MKTAG('t', 'w', 'o', 's')}, - { CODEC_ID_PCM_S8, MKTAG('t', 'w', 'o', 's')}, { CODEC_ID_ROQ_DPCM, MKTAG('R', 'o', 'Q', 'A')}, { CODEC_ID_SHORTEN, MKTAG('s', 'h', 'r', 'n')}, { CODEC_ID_TTA, MKTAG('T', 'T', 'A', '1')}, @@ -106,6 +103,17 @@ const struct AVCodecTag *mp_wav_taglists[] = {codec_wav_tags, mp_wav_tags, 0}; +static const AVCodecTag mp_wav_override_tags[] = { + { CODEC_ID_PCM_S8, MKTAG('t', 'w', 'o', 's')}, + { CODEC_ID_PCM_U8, 0}, + { CODEC_ID_PCM_S16BE, MKTAG('t', 'w', 'o', 's')}, + { CODEC_ID_PCM_S16LE, 0}, + { CODEC_ID_PCM_S24BE, MKTAG('i', 'n', '2', '4')}, + { 0, 0 }, +}; + +const struct AVCodecTag *mp_wav_override_taglists[] = {mp_wav_override_tags, 0}; + static const AVCodecTag mp_bmp_tags[] = { { CODEC_ID_AMV, MKTAG('A', 'M', 'V', 'V')}, { CODEC_ID_BETHSOFTVID, MKTAG('B', 'E', 'T', 'H')}, @@ -271,6 +279,8 @@ break; priv->astreams[priv->audio_streams] = i; priv->audio_streams++; + // For some formats (like PCM) always trust CODEC_ID_* more than codec_tag + codec->codec_tag= av_codec_get_tag(mp_wav_override_taglists, codec->codec_id); // mp4a tag is used for all mp4 files no matter what they actually contain if(codec->codec_tag == MKTAG('m', 'p', '4', 'a')) codec->codec_tag= 0;