+ var_Set( p_aout, psz_variable, val );
+ free( val.psz_string );
+ return 1;
+}
+
+static int VisualizationCallback( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
+{
+ aout_instance_t *p_aout = (aout_instance_t *)p_this;
+ char *psz_mode = newval.psz_string;
+ vlc_value_t val;
+ int i;
+ (void)psz_cmd; (void)oldval; (void)p_data;
+
+ if( !psz_mode || !*psz_mode )
+ {
+ ChangeFiltersString( p_aout, "audio-visual", "goom", false );
+ ChangeFiltersString( p_aout, "audio-visual", "visual", false );
+ ChangeFiltersString( p_aout, "audio-visual", "galaktos", false );
+ }
+ else
+ {
+ if( !strcmp( "goom", psz_mode ) )
+ {
+ ChangeFiltersString( p_aout, "audio-visual", "visual", false );
+ ChangeFiltersString( p_aout, "audio-visual", "goom", true );
+ ChangeFiltersString( p_aout, "audio-visual", "galaktos", false);
+ }
+ else if( !strcmp( "galaktos", psz_mode ) )
+ {
+ ChangeFiltersString( p_aout, "audio-visual", "visual", false );
+ ChangeFiltersString( p_aout, "audio-visual", "goom", false );
+ ChangeFiltersString( p_aout, "audio-visual", "galaktos", true );
+ }
+ else
+ {
+ val.psz_string = psz_mode;
+ var_Create( p_aout, "effect-list", VLC_VAR_STRING );
+ var_Set( p_aout, "effect-list", val );
+
+ ChangeFiltersString( p_aout, "audio-visual", "goom", false );
+ ChangeFiltersString( p_aout, "audio-visual", "visual", true );
+ ChangeFiltersString( p_aout, "audio-visual", "galaktos", false);
+ }
+ }
+
+ /* That sucks */
+ for( i = 0; i < p_aout->i_nb_inputs; i++ )
+ {
+ p_aout->pp_inputs[i]->b_restart = true;
+ }
+
+ return VLC_SUCCESS;
+}
+
+static int EqualizerCallback( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
+{
+ aout_instance_t *p_aout = (aout_instance_t *)p_this;
+ char *psz_mode = newval.psz_string;
+ vlc_value_t val;
+ int i;
+ int i_ret;
+ (void)psz_cmd; (void)oldval; (void)p_data;
+
+ if( !psz_mode || !*psz_mode )
+ {
+ i_ret = ChangeFiltersString( p_aout, "audio-filter", "equalizer",
+ false );
+ }
+ else
+ {
+ val.psz_string = psz_mode;
+ var_Create( p_aout, "equalizer-preset", VLC_VAR_STRING );
+ var_Set( p_aout, "equalizer-preset", val );
+ i_ret = ChangeFiltersString( p_aout, "audio-filter", "equalizer",
+ true );
+
+ }
+
+ /* That sucks */
+ if( i_ret == 1 )
+ {
+ for( i = 0; i < p_aout->i_nb_inputs; i++ )
+ {
+ p_aout->pp_inputs[i]->b_restart = true;
+ }
+ }
+
+ return VLC_SUCCESS;
+}
+
+static int ReplayGainCallback( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
+{
+ VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval);
+ VLC_UNUSED(newval); VLC_UNUSED(p_data);
+ aout_instance_t *p_aout = (aout_instance_t *)p_this;
+ int i;
+