#include "util/qt_dirs.hpp"
#include "../../audio_filter/equalizer_presets.h"
-#include <vlc_aout.h>
+#include <vlc_aout_intf.h>
#include <vlc_intf_strings.h>
#include <vlc_vout.h>
#include <vlc_osd.h>
{ \
vlc_object_t *p_obj = ( vlc_object_t * ) \
vlc_object_find_name( p_intf->p_libvlc, \
- #widget, \
- FIND_CHILD ); \
+ #widget ); \
QCheckBox *checkbox = qobject_cast<QCheckBox*>( ui.widget##Enable ); \
QGroupBox *groupbox = qobject_cast<QGroupBox*>( ui.widget##Enable ); \
if( p_obj ) \
{ \
vlc_object_release( p_obj ); \
if( checkbox ) checkbox->setChecked( true ); \
- else groupbox->setChecked( true ); \
+ else if (groupbox) groupbox->setChecked( true ); \
} \
else \
{ \
if( checkbox ) checkbox->setChecked( false ); \
- else groupbox->setChecked( false ); \
+ else if (groupbox) groupbox->setChecked( false ); \
} \
} \
CONNECT( ui.widget##Enable, clicked(), this, updateFilters() );
+
+
#define SETUP_VFILTER_OPTION( widget, signal ) \
initComboBoxItems( ui.widget ); \
setWidgetValue( ui.widget ); \
SETUP_VFILTER_OPTION( extractComponentText, textChanged( const QString& ) )
SETUP_VFILTER( posterize )
- SETUP_VFILTER_OPTION( posterizeLevelSpin, valueChanged( int ) )
SETUP_VFILTER( colorthres )
SETUP_VFILTER_OPTION( colorthresColorText, textChanged( const QString& ) )
SETUP_VFILTER( motiondetect )
-// SETUP_VFILTER( noise )
-
SETUP_VFILTER( psychedelic )
SETUP_VFILTER( sharpen )
SETUP_VFILTER_OPTION( wallRowsSpin, valueChanged( int ) )
SETUP_VFILTER_OPTION( wallColsSpin, valueChanged( int ) )
- SETUP_VFILTER( panoramix )
- SETUP_VFILTER_OPTION( panoramixRowsSpin, valueChanged( int ) )
- SETUP_VFILTER_OPTION( panoramixColsSpin, valueChanged( int ) )
-
SETUP_VFILTER( erase )
SETUP_VFILTER_OPTION( eraseMaskText, editingFinished() )
SETUP_VFILTER( grain )
SETUP_VFILTER_OPTION( grainVarianceSlider, valueChanged( int ) )
+ SETUP_VFILTER( mirror )
+
+ SETUP_VFILTER( gaussianblur )
+ SETUP_VFILTER_OPTION( gaussianbluSigmaSlider, valueChanged( int ) )
+
+ SETUP_VFILTER( antiflicker )
+ SETUP_VFILTER_OPTION( antiflickerSofteningSizeSlider, valueChanged( int ) )
+
+
if( module_exists( "atmo" ) )
{
SETUP_VFILTER( atmo )
}
else
{
- module_release (p_obj);
msg_Err( p_intf, "Unknown video filter type." );
return;
}
- module_release (p_obj);
psz_string = config_GetPsz( p_intf, psz_filter_type );
}
else
{
+ free( psz_string );
return;
}
}
qtu( option ) );
if( p_item )
{
- int i_type = p_item->i_type & CONFIG_ITEM;
+ int i_type = p_item->i_type;
for( int i_index = 0; i_index < p_item->i_list; i_index++ )
{
if( i_type == CONFIG_ITEM_INTEGER
//std::cout << "Option name: " << option.toStdString() << std::endl;
vlc_object_t *p_obj = ( vlc_object_t * )
- vlc_object_find_name( p_intf->p_libvlc,
- qtu( module ),
- FIND_CHILD );
+ vlc_object_find_name( p_intf->p_libvlc, qtu( module ) );
int i_type;
vlc_value_t val;
//std::cout << "Option name: " << option.toStdString() << std::endl;
vlc_object_t *p_obj = ( vlc_object_t * )
- vlc_object_find_name( p_intf->p_libvlc,
- qtu( module ),
- FIND_CHILD );
+ vlc_object_find_name( p_intf->p_libvlc, qtu( module ) );
int i_type;
bool b_is_command;
if( !p_obj )
b_is_command = ( i_type & VLC_VAR_ISCOMMAND );
}
- if( !b_is_command )
- {
- msg_Warn( p_intf, "Module %s's %s variable isn't a command. You'll need to restart the filter to take change into account.",
- qtu( module ),
- qtu( option ) );
- /* FIXME: restart automatically somewhere near the end of this function */
- }
-
/* Try to cast to all the widgets we're likely to encounter. Only
* one of the casts is expected to work. */
QSlider *slider = qobject_cast<QSlider*> ( sender() );
}
else if( i_type == VLC_VAR_STRING )
{
- char *psz_string = NULL;
- if( lineedit ) psz_string = strdup( qtu( lineedit->text() ) );
- else if( combobox ) psz_string = strdup( qtu( combobox->itemData(
- combobox->currentIndex() ).toString() ) );
- else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );
- config_PutPsz( p_intf, qtu( option ), psz_string );
+ QString val;
+ if( lineedit )
+ val = lineedit->text();
+ else if( combobox )
+ val = combobox->itemData( combobox->currentIndex() ).toString();
+ else
+ msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );
+ config_PutPsz( p_intf, qtu( option ), qtu( val ) );
if( b_is_command )
- var_SetString( p_obj, qtu( option ), psz_string );
- free( psz_string );
+ var_SetString( p_obj, qtu( option ), qtu( val ) );
}
else
msg_Err( p_intf,
qtu( option ),
i_type );
+ if( !b_is_command )
+ {
+ msg_Warn( p_intf, "Module %s's %s variable isn't a command. Brute-restarting the filter.",
+ qtu( module ),
+ qtu( option ) );
+ ChangeVFiltersString( p_intf, qtu( module ), false );
+ ChangeVFiltersString( p_intf, qtu( module ), true );
+ }
+
if( p_obj ) vlc_object_release( p_obj );
}
void ExtV4l2::Refresh( void )
{
- vlc_object_t *p_obj = (vlc_object_t*)vlc_object_find_name( p_intf, "v4l2", FIND_ANYWHERE );
+ vlc_object_t *p_obj = (vlc_object_t*)vlc_object_find_name( pl_Get(p_intf), "v4l2" );
help->hide();
if( box )
{
void ExtV4l2::ValueChange( int value )
{
QObject *s = sender();
- vlc_object_t *p_obj = (vlc_object_t*)vlc_object_find_name( p_intf, "v4l2", FIND_ANYWHERE );
+ vlc_object_t *p_obj = (vlc_object_t*)vlc_object_find_name( pl_Get(p_intf), "v4l2" );
if( p_obj )
{
- char *psz_var = strdup( qtu( s->objectName() ) );
- int i_type = var_Type( p_obj, psz_var );
+ QString var = s->objectName();
+ int i_type = var_Type( p_obj, qtu( var ) );
switch( i_type & VLC_VAR_TYPE )
{
case VLC_VAR_INTEGER:
QComboBox *combobox = qobject_cast<QComboBox*>( s );
value = combobox->itemData( value ).toInt();
}
- var_SetInteger( p_obj, psz_var, value );
+ var_SetInteger( p_obj, qtu( var ), value );
break;
case VLC_VAR_BOOL:
- var_SetBool( p_obj, psz_var, value );
+ var_SetBool( p_obj, qtu( var ), value );
break;
case VLC_VAR_VOID:
- var_TriggerCallback( p_obj, psz_var );
+ var_TriggerCallback( p_obj, qtu( var ) );
break;
}
- free( psz_var );
vlc_object_release( p_obj );
}
else
float f_preamp;
int i_preset;
- aout_instance_t *p_aout = THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
if( p_aout )
{
psz_af = var_GetNonEmptyString( p_aout, "audio-filter" );
/* Function called when the set2Pass button is activated */
void Equalizer::set2Pass()
{
- aout_instance_t *p_aout= THEMIM->getAout();
+ vlc_object_t *p_aout= (vlc_object_t *)THEMIM->getAout();
bool b_2p = ui.eq2PassCheck->isChecked();
if( p_aout )
void Equalizer::setPreamp()
{
const float f = ( float )( ui.preampSlider->value() ) /10 - 20;
- aout_instance_t *p_aout = THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
ui.preampLabel->setText( qtr( "Preamp\n" ) + QString::number( f, 'f', 1 )
+ qtr( "dB" ) );
band_texts[i]->setText( band_frequencies[i] + "\n" + val + "dB" );
values += " " + val;
}
- const char *psz_values = values.toAscii().constData();
- aout_instance_t *p_aout = THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
if( p_aout )
{
//delCallbacks( p_aout );
- var_SetString( p_aout, "equalizer-bands", psz_values );
+ var_SetString( p_aout, "equalizer-bands", qtu( values ) );
//addCallbacks( p_aout );
vlc_object_release( p_aout );
}
/* Create the QString in Qt */
for( int i = 0 ; i< BANDS ;i++ )
- values += QString( " %1" ).arg( eqz_preset_10b[i_preset]->f_amp[i] );
+ values += QString( " %1" ).arg( eqz_preset_10b[i_preset].f_amp[i], 5, 'f', 1 );
/* Convert it to char * */
return strdup( values.toAscii().constData() );
return;
/* Update pre-amplification in the UI */
- float f_preamp = eqz_preset_10b[i_preset]->f_preamp;
+ float f_preamp = eqz_preset_10b[i_preset].f_preamp;
ui.preampSlider->setValue( (int)( ( f_preamp + 20 ) * 10 ) );
ui.preampLabel->setText( qtr( "Preamp\n" )
+ QString::number( f_preamp, 'f', 1 ) + qtr( "dB" ) );
}
/* Apply presets to audio output */
- aout_instance_t *p_aout= THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
if( p_aout )
{
var_SetString( p_aout , "equalizer-preset" , preset_list[i_preset] );
var_SetString( p_aout, "equalizer-bands", psz_values );
var_SetFloat( p_aout, "equalizer-preamp",
- eqz_preset_10b[i_preset]->f_preamp );
+ eqz_preset_10b[i_preset].f_preamp );
vlc_object_release( p_aout );
}
config_PutPsz( p_intf, "equalizer-bands", psz_values );
config_PutPsz( p_intf, "equalizer-preset", preset_list[i_preset] );
config_PutFloat( p_intf, "equalizer-preamp",
- eqz_preset_10b[i_preset]->f_preamp );
+ eqz_preset_10b[i_preset].f_preamp );
free( psz_values );
}
return VLC_SUCCESS;
}
-void Equalizer::delCallbacks( aout_instance_t *p_aout )
+void Equalizer::delCallbacks( vlc_object_t *p_aout )
{
//var_DelCallback( p_aout, "equalizer-bands", EqzCallback, this );
//var_DelCallback( p_aout, "equalizer-preamp", EqzCallback, this );
var_DelCallback( p_aout, "equalizer-preset", PresetCallback, this );
}
-void Equalizer::addCallbacks( aout_instance_t *p_aout )
+void Equalizer::addCallbacks( vlc_object_t *p_aout )
{
//var_AddCallback( p_aout, "equalizer-bands", EqzCallback, this );
//var_AddCallback( p_aout, "equalizer-preamp", EqzCallback, this );
BUTTONACT( enableCheck, enable() );
/* Write down initial values */
- aout_instance_t *p_aout = THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
char *psz_af;
if( p_aout )
void Compressor::setValues()
{
- aout_instance_t *p_aout = THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
for( int i = 0 ; i < NUM_CP_CTRL ; i++ )
{
BUTTONACT( enableCheck, enable() );
/* Write down initial values */
- aout_instance_t *p_aout = THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
char *psz_af;
if( p_aout )
void Spatializer::setValues()
{
- aout_instance_t *p_aout = THEMIM->getAout();
+ vlc_object_t *p_aout = (vlc_object_t *)THEMIM->getAout();
for( int i = 0 ; i < NUM_SP_CTRL ; i++ )
{
}
}
-void Spatializer::delCallbacks( aout_instance_t *p_aout )
+void Spatializer::delCallbacks( vlc_object_t *p_aout )
{
VLC_UNUSED( p_aout );
// var_DelCallback( p_aout, "Spatializer-bands", EqzCallback, this );
// var_DelCallback( p_aout, "Spatializer-preamp", EqzCallback, this );
}
-void Spatializer::addCallbacks( aout_instance_t *p_aout )
+void Spatializer::addCallbacks( vlc_object_t *p_aout )
{
VLC_UNUSED( p_aout );
// var_AddCallback( p_aout, "Spatializer-bands", EqzCallback, this );
AVLayout->addWidget( plusAV, 0, 3, 1, 1 );
QLabel *AVLabel = new QLabel;
- AVLabel->setText( qtr( "Advance of audio over video:" ) );
+ AVLabel->setText( qtr( "Add a delay to the audio track:" ) );
AVLayout->addWidget( AVLabel, 0, 0, 1, 1 );
AVSpin = new QDoubleSpinBox;
AVSpin->setMinimum( -600.0 );
AVSpin->setMaximum( 600.0 );
AVSpin->setSingleStep( 0.1 );
- AVSpin->setToolTip( qtr( "A positive value means that\n"
- "the audio is ahead of the video" ) );
+ AVSpin->setToolTip( qtr( "A positive value will delay\n"
+ "the audio, when it was ahead of the video" ) );
AVSpin->setSuffix( " s" );
AVLayout->addWidget( AVSpin, 0, 2, 1, 1 );
mainLayout->addWidget( AVBox, 1, 0, 1, 5 );
subsLayout->addWidget( plussubs, 0, 3, 1, 1 );
QLabel *subsLabel = new QLabel;
- subsLabel->setText( qtr( "Advance of subtitles over video:" ) );
+ subsLabel->setText( qtr( "Add a delay to the subtitle track:" ) );
subsLayout->addWidget( subsLabel, 0, 0, 1, 1 );
subsSpin = new QDoubleSpinBox;
subsSpin->setMinimum( -600.0 );
subsSpin->setMaximum( 600.0 );
subsSpin->setSingleStep( 0.1 );
- subsSpin->setToolTip( qtr( "A positive value means that\n"
- "the subtitles are ahead of the video" ) );
+ subsSpin->setToolTip( qtr( "A positive value will delay the\n"
+ "subtitles, when they were ahead of the video" ) );
subsSpin->setSuffix( " s" );
subsLayout->addWidget( subsSpin, 0, 2, 1, 1 );
BUTTON_SET_ACT_I( updateButton, "", update,
qtr( "Force update of this dialog's values" ), update() );
+ initSubsDuration();
+
/* Set it */
update();
- updateSubsDuration();
}
SyncControls::~SyncControls()
subsSpin->setValue( 0.0 );
subSpeedSpin->setValue( 1.0 );
subsdelayClean();
- updateSubsDuration();
b_userAction = true;
}
i_delay = var_GetTime( THEMIM->getInput(), "spu-delay" );
subsSpin->setValue( ( (double)i_delay ) / 1000000 );
subSpeedSpin->setValue( var_GetFloat( THEMIM->getInput(), "sub-fps" ) );
+ subDurationSpin->setValue( var_InheritFloat( p_intf, SUBSDELAY_CFG_FACTOR ) );
}
b_userAction = true;
}
}
}
-void SyncControls::updateSubsDuration()
+void SyncControls::initSubsDuration()
{
int i_mode = var_InheritInteger( p_intf, SUBSDELAY_CFG_MODE );
subDurationSpin->setSuffix( "" );
break;
}
-
- subDurationSpin->setValue( var_InheritFloat( p_intf, SUBSDELAY_CFG_FACTOR ) );
}
void SyncControls::subsdelayClean()
config_PutFloat( p_intf, SUBSDELAY_CFG_FACTOR, f_factor );
/* Try to find an instance of subsdelay, and set its factor */
- vlc_object_t *p_obj = ( vlc_object_t * ) vlc_object_find_name( p_intf->p_libvlc, "subsdelay", FIND_CHILD );
+ vlc_object_t *p_obj = ( vlc_object_t * ) vlc_object_find_name( p_intf->p_libvlc, "subsdelay" );
if( p_obj )
{
var_SetFloat( p_obj, SUBSDELAY_CFG_FACTOR, f_factor );