vlc | branch: master | Thomas Guillem <[email protected]> | Fri Jul 7 11:45:38 2017 +0200| [952c089c2ce32cba4231ffd66920cc7b703e5418] | committer: Thomas Guillem
demux: wav: supports inputs with channels > AOUT_CHAN_MAX If the channel number is higher than AOUT_CHAN_MAX, don't set the physical mask, and just set the number of channels. A filter will take of dropping extra channels or doing an ambisonics conversion. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=952c089c2ce32cba4231ffd66920cc7b703e5418 --- modules/demux/wav.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/demux/wav.c b/modules/demux/wav.c index db7a32c93c..d48ca384a4 100644 --- a/modules/demux/wav.c +++ b/modules/demux/wav.c @@ -29,6 +29,8 @@ # include "config.h" #endif +#include <assert.h> + #include <vlc_common.h> #include <vlc_plugin.h> #include <vlc_demux.h> @@ -37,6 +39,9 @@ #include "windows_audio_commons.h" +#define WAV_CHAN_MAX 32 +static_assert( INPUT_CHAN_MAX >= WAV_CHAN_MAX, "channel count mismatch" ); + /***************************************************************************** * Module descriptor *****************************************************************************/ @@ -271,7 +276,8 @@ static int Open( vlc_object_t * p_this ) } } } - if( p_sys->i_channel_mask == 0 && p_sys->fmt.audio.i_channels > 2 ) + if( p_sys->i_channel_mask == 0 && p_sys->fmt.audio.i_channels > 2 + && p_sys->fmt.audio.i_channels <= AOUT_CHAN_MAX ) { /* A dwChannelMask of 0 tells the audio device to render the first * channel to the first port on the device, the second channel to the @@ -555,7 +561,7 @@ static int FrameInfo_PCM( unsigned int *pi_size, int *pi_samples, if( p_fmt->audio.i_rate > 352800 || p_fmt->audio.i_bitspersample > 64 - || p_fmt->audio.i_channels > AOUT_CHAN_MAX ) + || p_fmt->audio.i_channels > WAV_CHAN_MAX ) return VLC_EGENERIC; /* read samples for 50ms of */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
