Commit 552b005a authored by Rémi Duraffort's avatar Rémi Duraffort

No need to test for p_sys != NULL as it's already tested in the constructor.

parent 5b6db145
......@@ -558,84 +558,77 @@ static void stereo2mono_downmix( aout_filter_t * p_filter,
p_out = p_out_buf->p_buffer;
i_out_size = p_out_buf->i_nb_bytes;
if( p_sys != NULL )
{
/* Slide the overflow buffer */
p_overflow = p_sys->p_overflow_buffer;
i_overflow_size = p_sys->i_overflow_buffer_size;
/* Slide the overflow buffer */
p_overflow = p_sys->p_overflow_buffer;
i_overflow_size = p_sys->i_overflow_buffer_size;
if ( i_out_size > i_overflow_size )
memcpy( p_out, p_overflow, i_overflow_size );
else
memcpy( p_out, p_overflow, i_out_size );
if ( i_out_size > i_overflow_size )
memcpy( p_out, p_overflow, i_overflow_size );
p_slide = p_sys->p_overflow_buffer;
while( p_slide < p_overflow + i_overflow_size )
{
if( p_slide + i_out_size < p_overflow + i_overflow_size )
{
memset( p_slide, 0, i_out_size );
if( p_slide + 2 * i_out_size < p_overflow + i_overflow_size )
memcpy( p_slide, p_slide + i_out_size, i_out_size );
else
memcpy( p_slide, p_slide + i_out_size,
p_overflow + i_overflow_size - ( p_slide + i_out_size ) );
}
else
memcpy( p_out, p_overflow, i_out_size );
{
memset( p_slide, 0, p_overflow + i_overflow_size - p_slide );
}
p_slide += i_out_size;
}
/* apply the atomic operations */
for( i = 0; i < p_sys->i_nb_atomic_operations; i++ )
{
/* shorter variable names */
i_source_channel_offset
= p_sys->p_atomic_operations[i].i_source_channel_offset;
i_dest_channel_offset
= p_sys->p_atomic_operations[i].i_dest_channel_offset;
i_delay = p_sys->p_atomic_operations[i].i_delay;
d_amplitude_factor
= p_sys->p_atomic_operations[i].d_amplitude_factor;
p_slide = p_sys->p_overflow_buffer;
while( p_slide < p_overflow + i_overflow_size )
if( p_out_buf->i_nb_samples > i_delay )
{
if( p_slide + i_out_size < p_overflow + i_overflow_size )
/* current buffer coefficients */
for( j = 0; j < p_out_buf->i_nb_samples - i_delay; j++ )
{
memset( p_slide, 0, i_out_size );
if( p_slide + 2 * i_out_size < p_overflow + i_overflow_size )
memcpy( p_slide, p_slide + i_out_size, i_out_size );
else
memcpy( p_slide, p_slide + i_out_size,
p_overflow + i_overflow_size - ( p_slide + i_out_size ) );
((int16_t*)p_out)[ (i_delay+j)*i_output_nb + i_dest_channel_offset ]
+= p_in[ j * i_input_nb + i_source_channel_offset ]
* d_amplitude_factor;
}
else
/* overflow buffer coefficients */
for( j = 0; j < i_delay; j++ )
{
memset( p_slide, 0, p_overflow + i_overflow_size - p_slide );
((int16_t*)p_overflow)[ j*i_output_nb + i_dest_channel_offset ]
+= p_in[ (p_out_buf->i_nb_samples - i_delay + j)
* i_input_nb + i_source_channel_offset ]
* d_amplitude_factor;
}
p_slide += i_out_size;
}
/* apply the atomic operations */
for( i = 0; i < p_sys->i_nb_atomic_operations; i++ )
else
{
/* shorter variable names */
i_source_channel_offset
= p_sys->p_atomic_operations[i].i_source_channel_offset;
i_dest_channel_offset
= p_sys->p_atomic_operations[i].i_dest_channel_offset;
i_delay = p_sys->p_atomic_operations[i].i_delay;
d_amplitude_factor
= p_sys->p_atomic_operations[i].d_amplitude_factor;
if( p_out_buf->i_nb_samples > i_delay )
/* overflow buffer coefficients only */
for( j = 0; j < p_out_buf->i_nb_samples; j++ )
{
/* current buffer coefficients */
for( j = 0; j < p_out_buf->i_nb_samples - i_delay; j++ )
{
((int16_t*)p_out)[ (i_delay+j)*i_output_nb + i_dest_channel_offset ]
+= p_in[ j * i_input_nb + i_source_channel_offset ]
* d_amplitude_factor;
}
/* overflow buffer coefficients */
for( j = 0; j < i_delay; j++ )
{
((int16_t*)p_overflow)[ j*i_output_nb + i_dest_channel_offset ]
+= p_in[ (p_out_buf->i_nb_samples - i_delay + j)
* i_input_nb + i_source_channel_offset ]
* d_amplitude_factor;
}
}
else
{
/* overflow buffer coefficients only */
for( j = 0; j < p_out_buf->i_nb_samples; j++ )
{
((int16_t*)p_overflow)[ (i_delay - p_out_buf->i_nb_samples + j)
* i_output_nb + i_dest_channel_offset ]
+= p_in[ j * i_input_nb + i_source_channel_offset ]
* d_amplitude_factor;
}
((int16_t*)p_overflow)[ (i_delay - p_out_buf->i_nb_samples + j)
* i_output_nb + i_dest_channel_offset ]
+= p_in[ j * i_input_nb + i_source_channel_offset ]
* d_amplitude_factor;
}
}
}
else
{
memset( p_out, 0, i_out_size );
}
}
/* Simple stereo to mono mixing. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment