vlc | branch: master | Thomas Guillem <[email protected]> | Tue Oct 25 13:26:38 2016 +0200| [e9574d8bd45a132ff6c57fb7837de47bf22983ee] | committer: Thomas Guillem
trivial: don't duplicate channels This is a partial revert of 08d95b393f6471fd31d11ebd9bdbbf5c2dde9a7f We don't want to copy Stereo chans to Rear and/or Middle chans, even if these chans won't be used. We should just use Middle chans as Rear chans (if they are not used) and vice-versa. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e9574d8bd45a132ff6c57fb7837de47bf22983ee --- modules/audio_filter/channel_mixer/trivial.c | 68 +++++++--------------------- 1 file changed, 17 insertions(+), 51 deletions(-) diff --git a/modules/audio_filter/channel_mixer/trivial.c b/modules/audio_filter/channel_mixer/trivial.c index 48fa84f..b500e1a 100644 --- a/modules/audio_filter/channel_mixer/trivial.c +++ b/modules/audio_filter/channel_mixer/trivial.c @@ -297,57 +297,23 @@ static int Create( vlc_object_t *p_this ) } else { -#define AOUT_CHAN_LEFT_IDX 0 -#define AOUT_CHAN_RIGHT_IDX 1 -#define AOUT_CHAN_MIDDLELEFT_IDX 2 -#define AOUT_CHAN_MIDDLERIGHT_IDX 3 -#define AOUT_CHAN_REARLEFT_IDX 4 -#define AOUT_CHAN_REARRIGHT_IDX 5 -#define AOUT_CHAN_REARCENTER_IDX 6 -#define AOUT_CHAN_CENTER_IDX 7 -#define AOUT_CHAN_LFE_IDX 8 - - /* There is no corresponding input channel for the output channel. - * Try to match an input channel of the same side. For example, if - * there is an output ML, but no input ML, try to use RL or L - * instead. */ - if( unlikely( i_chan == AOUT_CHAN_LEFT ) ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_MIDDLELEFT_IDX] != -1 ? - src_chans[AOUT_CHAN_MIDDLELEFT_IDX] : - src_chans[AOUT_CHAN_REARLEFT_IDX]; - else if( unlikely( i_chan == AOUT_CHAN_RIGHT ) ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_MIDDLERIGHT_IDX] != -1 ? - src_chans[AOUT_CHAN_MIDDLERIGHT_IDX] : - src_chans[AOUT_CHAN_REARRIGHT_IDX]; - else if( i_chan == AOUT_CHAN_MIDDLELEFT ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_REARLEFT_IDX] != -1 ? - src_chans[AOUT_CHAN_REARLEFT_IDX] : - src_chans[AOUT_CHAN_LEFT_IDX]; - else if( i_chan == AOUT_CHAN_MIDDLERIGHT ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_REARRIGHT_IDX] != -1 ? - src_chans[AOUT_CHAN_REARRIGHT_IDX] : - src_chans[AOUT_CHAN_RIGHT_IDX]; - else if( i_chan == AOUT_CHAN_REARLEFT ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_MIDDLELEFT_IDX] != -1 ? - src_chans[AOUT_CHAN_MIDDLELEFT_IDX] : - src_chans[AOUT_CHAN_LEFT_IDX]; - else if( i_chan == AOUT_CHAN_REARRIGHT ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_MIDDLERIGHT_IDX] != -1 ? - src_chans[AOUT_CHAN_MIDDLERIGHT_IDX] : - src_chans[AOUT_CHAN_RIGHT_IDX]; - else if( i_chan == AOUT_CHAN_REARCENTER ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_CENTER_IDX]; - else if( i_chan == AOUT_CHAN_CENTER ) - channel_map[i_dst_idx] = - src_chans[AOUT_CHAN_REARCENTER_IDX]; - else /* LFE */ + if( ( i_chan & AOUT_CHANS_MIDDLE ) + && !( i_out_physical_channels & AOUT_CHANS_REAR ) ) + { + /* Use Rear chans as Middle chans if Rear chans are not used */ + assert( i + 2 < AOUT_CHAN_MAX ); + assert( pi_vlc_chan_order_wg4[i + 2] & AOUT_CHANS_REAR ); + channel_map[i_dst_idx] = src_chans[i + 2]; + } + else if( ( i_chan & AOUT_CHANS_REAR ) + && !( i_out_physical_channels & AOUT_CHANS_MIDDLE ) ) + { + /* Use Middle chans as Rear chans if Middle chans are not used */ + assert( (int) i - 2 >= 0 ); + assert( pi_vlc_chan_order_wg4[i - 2] & AOUT_CHANS_MIDDLE ); + channel_map[i_dst_idx] = src_chans[i - 2]; + } + else channel_map[i_dst_idx] = -1; } i_dst_idx++; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
