changeset 25886:feb0f4e3c81f

Fix r25817 to not always destroy codec_tag, this broke playback of e.g. ape files.
author reimar
date Tue, 29 Jan 2008 19:05:36 +0000
parents fa24feceb3f9
children 36bc17c090a6
files libmpdemux/demux_lavf.c
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/demux_lavf.c	Tue Jan 29 18:00:20 2008 +0000
+++ b/libmpdemux/demux_lavf.c	Tue Jan 29 19:05:36 2008 +0000
@@ -106,9 +106,9 @@
 
 static const AVCodecTag mp_wav_override_tags[] = {
     { CODEC_ID_PCM_S8,            MKTAG('t', 'w', 'o', 's')},
-    { CODEC_ID_PCM_U8,            0},
+    { CODEC_ID_PCM_U8,            1},
     { CODEC_ID_PCM_S16BE,         MKTAG('t', 'w', 'o', 's')},
-    { CODEC_ID_PCM_S16LE,         0},
+    { CODEC_ID_PCM_S16LE,         1},
     { CODEC_ID_PCM_S24BE,         MKTAG('i', 'n', '2', '4')},
     { 0, 0 },
 };
@@ -271,6 +271,7 @@
 
     switch(codec->codec_type){
         case CODEC_TYPE_AUDIO:{
+            int override_tag;
             WAVEFORMATEX *wf= calloc(sizeof(WAVEFORMATEX) + codec->extradata_size, 1);
             sh_audio_t* sh_audio;
             if(priv->audio_streams >= MAX_A_STREAMS)
@@ -282,7 +283,9 @@
             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);
+            override_tag= av_codec_get_tag(mp_wav_override_taglists, codec->codec_id);
+            if (override_tag)
+                codec->codec_tag= override_tag;
             // 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;