mirror of
https://code.videolan.org/videolan/vlc
synced 2024-10-03 01:31:53 +02:00
combine two channels into mono for the dowmix as last step.
This commit is contained in:
parent
b19ddef0a3
commit
f9dfd9843c
@ -55,6 +55,8 @@ static block_t *Convert( filter_t *p_filter, block_t *p_block );
|
||||
|
||||
static unsigned int stereo_to_mono( aout_instance_t *, aout_filter_t *,
|
||||
aout_buffer_t *, aout_buffer_t * );
|
||||
static unsigned int mono( aout_instance_t *, aout_filter_t *,
|
||||
aout_buffer_t *, aout_buffer_t * );
|
||||
static void stereo2mono_downmix( aout_instance_t *, aout_filter_t *,
|
||||
aout_buffer_t *, aout_buffer_t * );
|
||||
|
||||
@ -349,7 +351,7 @@ static int Init( vlc_object_t *p_this, struct filter_sys_t * p_data,
|
||||
msg_Err( p_this, "out of memory" );
|
||||
return -1;
|
||||
}
|
||||
memset( p_data->p_overflow_buffer, 0 , p_data->i_overflow_buffer_size );
|
||||
memset( p_data->p_overflow_buffer, 0, p_data->i_overflow_buffer_size );
|
||||
|
||||
/* end */
|
||||
return 0;
|
||||
@ -526,6 +528,8 @@ static block_t *Convert( filter_t *p_filter, block_t *p_block )
|
||||
{
|
||||
stereo2mono_downmix( (aout_instance_t *)p_filter, &aout_filter,
|
||||
&in_buf, &out_buf );
|
||||
i_samples = mono( (aout_instance_t *)p_filter, &aout_filter,
|
||||
&out_buf, &in_buf );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -654,6 +658,26 @@ static void stereo2mono_downmix( aout_instance_t * p_aout, aout_filter_t * p_fil
|
||||
}
|
||||
}
|
||||
|
||||
/* Simple stereo to mono mixing. */
|
||||
static unsigned int mono( aout_instance_t * p_aout, aout_filter_t *p_filter,
|
||||
aout_buffer_t *p_output, aout_buffer_t *p_input )
|
||||
{
|
||||
filter_sys_t *p_sys = (filter_sys_t *)p_filter->p_sys;
|
||||
int16_t *p_in, *p_out;
|
||||
unsigned int n = 0, r = 0;
|
||||
|
||||
p_in = (int16_t *) p_input->p_buffer;
|
||||
p_out = (int16_t *) p_output->p_buffer;
|
||||
|
||||
while( n < (p_input->i_nb_samples * p_sys->i_nb_channels) )
|
||||
{
|
||||
p_out[r] = (p_in[n] + p_in[n+1]) >> 1;
|
||||
r++;
|
||||
n += 2;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Simple stereo to mono mixing. */
|
||||
static unsigned int stereo_to_mono( aout_instance_t * p_aout, aout_filter_t *p_filter,
|
||||
aout_buffer_t *p_output, aout_buffer_t *p_input )
|
||||
|
Loading…
Reference in New Issue
Block a user