X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fdemux%2Fwav.c;h=be7f848baf88ab278d03adacbd73b396e4a6b231;hb=161532ab4cdff7ce1821cf9e8119e30ca01aeaf2;hp=e174ac4a5fd7525c2d05d27959b816b581ccc7ab;hpb=d97af9aeb77ec6a505fc37a5a55c5ae85bb6ea35;p=vlc diff --git a/modules/demux/wav.c b/modules/demux/wav.c index e174ac4a5f..be7f848baf 100644 --- a/modules/demux/wav.c +++ b/modules/demux/wav.c @@ -41,13 +41,13 @@ static int Open ( vlc_object_t * ); static void Close( vlc_object_t * ); -vlc_module_begin(); - set_description( N_("WAV demuxer") ); - set_category( CAT_INPUT ); - set_subcategory( SUBCAT_INPUT_DEMUX ); - set_capability( "demux", 142 ); - set_callbacks( Open, Close ); -vlc_module_end(); +vlc_module_begin () + set_description( N_("WAV demuxer") ) + set_category( CAT_INPUT ) + set_subcategory( SUBCAT_INPUT_DEMUX ) + set_capability( "demux", 142 ) + set_callbacks( Open, Close ) +vlc_module_end () /***************************************************************************** * Local prototypes @@ -73,8 +73,6 @@ struct demux_sys_t int pi_chan_table[AOUT_CHAN_MAX]; }; -#define __EVEN( x ) (((x) + 1) & ~1) - static int ChunkFind( demux_t *, const char *, unsigned int * ); static void FrameInfo_IMA_ADPCM( demux_t *, unsigned int *, int * ); @@ -84,18 +82,13 @@ static void FrameInfo_PCM ( demux_t *, unsigned int *, int * ); static const uint32_t pi_channels_src[] = { WAVE_SPEAKER_FRONT_LEFT, WAVE_SPEAKER_FRONT_RIGHT, WAVE_SPEAKER_FRONT_CENTER, WAVE_SPEAKER_LOW_FREQUENCY, - WAVE_SPEAKER_BACK_LEFT, WAVE_SPEAKER_BACK_RIGHT, + WAVE_SPEAKER_BACK_LEFT, WAVE_SPEAKER_BACK_RIGHT, WAVE_SPEAKER_BACK_CENTER, WAVE_SPEAKER_SIDE_LEFT, WAVE_SPEAKER_SIDE_RIGHT, 0 }; static const uint32_t pi_channels_in[] = { AOUT_CHAN_LEFT, AOUT_CHAN_RIGHT, AOUT_CHAN_CENTER, AOUT_CHAN_LFE, - AOUT_CHAN_REARLEFT, AOUT_CHAN_REARRIGHT, + AOUT_CHAN_REARLEFT, AOUT_CHAN_REARRIGHT, AOUT_CHAN_REARCENTER, AOUT_CHAN_MIDDLELEFT, AOUT_CHAN_MIDDLERIGHT, 0 }; -static const uint32_t pi_channels_out[] = - { AOUT_CHAN_LEFT, AOUT_CHAN_RIGHT, - AOUT_CHAN_MIDDLELEFT, AOUT_CHAN_MIDDLERIGHT, - AOUT_CHAN_REARLEFT, AOUT_CHAN_REARRIGHT, - AOUT_CHAN_CENTER, AOUT_CHAN_LFE, 0 }; /***************************************************************************** * Open: check file and initializes structures @@ -171,7 +164,8 @@ static int Open( vlc_object_t * p_this ) p_sys->fmt.audio.i_blockalign = GetWLE( &p_wf->nBlockAlign ); p_sys->fmt.i_bitrate = GetDWLE( &p_wf->nAvgBytesPerSec ) * 8; p_sys->fmt.audio.i_bitspersample = GetWLE( &p_wf->wBitsPerSample ); - p_sys->fmt.i_extra = GetWLE( &p_wf->cbSize ); + if( i_size >= sizeof(WAVEFORMATEX) ) + p_sys->fmt.i_extra = __MIN( GetWLE( &p_wf->cbSize ), i_size - sizeof(WAVEFORMATEX) ); i_extended = 0; /* Handle new WAVE_FORMAT_EXTENSIBLE wav files */ @@ -209,7 +203,7 @@ static int Open( vlc_object_t * p_this ) p_sys->fmt.i_codec == VLC_FOURCC('a','f','l','t') ) p_sys->b_chan_reorder = - aout_CheckChannelReorder( pi_channels_in, pi_channels_out, + aout_CheckChannelReorder( pi_channels_in, NULL, p_sys->i_channel_mask, p_sys->fmt.audio.i_channels, p_sys->pi_chan_table );