*****************************************************************************/
#include <math.h> /* sqrt */
*****************************************************************************/
#include <math.h> /* sqrt */
set_subcategory( SUBCAT_AUDIO_AFILTER );
add_integer( "headphone-dim", 10, NULL, HEADPHONE_DIM_TEXT,
set_subcategory( SUBCAT_AUDIO_AFILTER );
add_integer( "headphone-dim", 10, NULL, HEADPHONE_DIM_TEXT,
add_bool( "headphone-compensate", 0, NULL, HEADPHONE_COMPENSATE_TEXT,
add_bool( "headphone-compensate", 0, NULL, HEADPHONE_COMPENSATE_TEXT,
add_bool( "headphone-dolby", 0, NULL, HEADPHONE_DOLBY_TEXT,
add_bool( "headphone-dolby", 0, NULL, HEADPHONE_DOLBY_TEXT,
set_capability( "audio filter", 0 );
set_callbacks( Create, Destroy );
set_capability( "audio filter", 0 );
set_callbacks( Create, Destroy );
p_filter->input.i_original_channels =
p_filter->output.i_original_channels;
}
if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
|| p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
{
p_filter->input.i_original_channels =
p_filter->output.i_original_channels;
}
if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
|| p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
{
p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
}
if( p_filter->input.i_rate != p_filter->output.i_rate )
{
p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
}
if( p_filter->input.i_rate != p_filter->output.i_rate )
{
p_filter->input.i_rate = p_filter->output.i_rate;
}
if( p_filter->input.i_physical_channels == (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT)
&& ( p_filter->input.i_original_channels & AOUT_CHAN_DOLBYSTEREO )
&& ! config_GetInt ( p_filter , "headphone-dolby" ) )
{
p_filter->input.i_rate = p_filter->output.i_rate;
}
if( p_filter->input.i_physical_channels == (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT)
&& ( p_filter->input.i_original_channels & AOUT_CHAN_DOLBYSTEREO )
&& ! config_GetInt ( p_filter , "headphone-dolby" ) )
{
static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
aout_buffer_t * p_in_buf, aout_buffer_t * p_out_buf )
{
static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
aout_buffer_t * p_in_buf, aout_buffer_t * p_out_buf )
{
int i_input_nb = aout_FormatNbChannels( &p_filter->input );
int i_output_nb = aout_FormatNbChannels( &p_filter->output );
float * p_in = (float*) p_in_buf->p_buffer;
int i_input_nb = aout_FormatNbChannels( &p_filter->input );
int i_output_nb = aout_FormatNbChannels( &p_filter->output );
float * p_in = (float*) p_in_buf->p_buffer;
p_filter->fmt_in.audio.i_original_channels =
p_filter->fmt_out.audio.i_original_channels;
}
if( p_filter->fmt_in.audio.i_format != VLC_FOURCC('f','l','3','2')
|| p_filter->fmt_out.audio.i_format != VLC_FOURCC('f','l','3','2') )
{
p_filter->fmt_in.audio.i_original_channels =
p_filter->fmt_out.audio.i_original_channels;
}
if( p_filter->fmt_in.audio.i_format != VLC_FOURCC('f','l','3','2')
|| p_filter->fmt_out.audio.i_format != VLC_FOURCC('f','l','3','2') )
{
p_filter->fmt_in.audio.i_format = VLC_FOURCC('f','l','3','2');
p_filter->fmt_out.audio.i_format = VLC_FOURCC('f','l','3','2');
}
if( p_filter->fmt_in.audio.i_rate != p_filter->fmt_out.audio.i_rate )
{
p_filter->fmt_in.audio.i_format = VLC_FOURCC('f','l','3','2');
p_filter->fmt_out.audio.i_format = VLC_FOURCC('f','l','3','2');
}
if( p_filter->fmt_in.audio.i_rate != p_filter->fmt_out.audio.i_rate )
{
p_filter->fmt_in.audio.i_rate = p_filter->fmt_out.audio.i_rate;
}
if( p_filter->fmt_in.audio.i_physical_channels == (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT)
&& ( p_filter->fmt_in.audio.i_original_channels & AOUT_CHAN_DOLBYSTEREO )
&& !config_GetInt( p_filter, "headphone-dolby" ) )
{
p_filter->fmt_in.audio.i_rate = p_filter->fmt_out.audio.i_rate;
}
if( p_filter->fmt_in.audio.i_physical_channels == (AOUT_CHAN_LEFT|AOUT_CHAN_RIGHT)
&& ( p_filter->fmt_in.audio.i_original_channels & AOUT_CHAN_DOLBYSTEREO )
&& !config_GetInt( p_filter, "headphone-dolby" ) )
{