From: Jai Menon Date: Sat, 26 Jun 2010 19:38:11 +0000 (+0530) Subject: WAV Mux : Extend the muxer to support non-PCM codecs. X-Git-Tag: 1.2.0-pre1~6048 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=05627b6605e043e1fdc02acd7955709ffacf6510;p=vlc WAV Mux : Extend the muxer to support non-PCM codecs. 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 --- diff --git a/include/vlc_codecs.h b/include/vlc_codecs.h index d3a5a555da..6c087da247 100644 --- a/include/vlc_codecs.h +++ b/include/vlc_codecs.h @@ -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" }, diff --git a/modules/mux/wav.c b/modules/mux/wav.c index f2f4091d78..b7c8c15386 100644 --- a/modules/mux/wav.c +++ b/modules/mux/wav.c @@ -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 */