]> git.sesse.net Git - vlc/commitdiff
WAV Mux : Extend the muxer to support non-PCM codecs.
authorJai Menon <jmenon86@gmail.com>
Sat, 26 Jun 2010 19:38:11 +0000 (01:08 +0530)
committerJean-Baptiste Kempf <jb@videolan.org>
Sat, 26 Jun 2010 21:11:53 +0000 (23:11 +0200)
Currently, the muxer generates invalid files whenever any streams
with  non-PCM codecs are used as input. This is fixed by adding a few
additional waveformat tags to the wave_format_tag_to_fourcc table and
using the fourcc_to_wf_tag utility function.

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
include/vlc_codecs.h
modules/mux/wav.c

index d3a5a555da754f2761e6e9d74717147888533486..6c087da247c783853216142549def12140d09c09 100644 (file)
@@ -309,8 +309,14 @@ static const struct
 wave_format_tag_to_fourcc[] =
 {
     { WAVE_FORMAT_PCM,        VLC_FOURCC( 'a', 'r', 'a', 'w' ), "Raw audio" },
+    { WAVE_FORMAT_PCM,        VLC_CODEC_S8,                     "PCM S8 audio" },
+    { WAVE_FORMAT_PCM,        VLC_CODEC_S16L,                   "PCM S16L audio" },
+    { WAVE_FORMAT_PCM,        VLC_CODEC_S24L,                   "PCM S24L audio" },
+    { WAVE_FORMAT_PCM,        VLC_CODEC_S32L,                   "PCM S32L audio" },
     { WAVE_FORMAT_ADPCM,      VLC_CODEC_ADPCM_MS,               "ADPCM" },
     { WAVE_FORMAT_IEEE_FLOAT, VLC_FOURCC( 'a', 'f', 'l', 't' ), "IEEE Float audio" },
+    { WAVE_FORMAT_IEEE_FLOAT, VLC_CODEC_F32L,                   "PCM 32 (Float) audio" },
+    { WAVE_FORMAT_IEEE_FLOAT, VLC_CODEC_F64L,                   "PCM 64 (Float) audio" },
     { WAVE_FORMAT_ALAW,       VLC_CODEC_ALAW,                   "A-Law" },
     { WAVE_FORMAT_MULAW,      VLC_CODEC_MULAW,                  "Mu-Law" },
     { WAVE_FORMAT_IMA_ADPCM,  VLC_CODEC_ADPCM_IMA_WAV,          "Ima-ADPCM" },
index f2f4091d78f7d7334659ed5d49875f33a214af03..b7c8c1538632120e778330ee2233ea15eee0e620 100644 (file)
@@ -204,8 +204,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
                  p_sys->i_channel_mask, (int)p_sys->b_chan_reorder );
     }
 
-    i_format = p_input->p_fmt->i_codec == VLC_CODEC_FL32 ?
-        WAVE_FORMAT_IEEE_FLOAT : WAVE_FORMAT_PCM;
+    fourcc_to_wf_tag( p_input->p_fmt->i_codec, &i_format );
     b_ext = p_sys->b_ext = p_input->p_fmt->audio.i_channels > 2;
 
     /* Build a WAV header for the output data */