+ return 0;
+}
+
+/*****************************************************************************
+ * aout_MixerRun: entry point for the mixer & post-filters processing
+ *****************************************************************************
+ * Please note that you must hold the mixer lock.
+ *****************************************************************************/
+void aout_MixerRun( aout_instance_t * p_aout )
+{
+ while( MixBuffer( p_aout ) != -1 );
+}
+
+/*****************************************************************************
+ * aout_MixerMultiplierSet: set p_aout->mixer.f_multiplier
+ *****************************************************************************
+ * Please note that we assume that you own the mixer lock when entering this
+ * function. This function returns -1 on error.
+ *****************************************************************************/
+int aout_MixerMultiplierSet( aout_instance_t * p_aout, float f_multiplier )
+{
+ float f_old = p_aout->mixer_multiplier;
+ bool b_new_mixer = false;
+
+ if ( p_aout->p_mixer )
+ {
+ aout_MixerDelete( p_aout );
+ b_new_mixer = true;
+ }
+
+ p_aout->mixer_multiplier = f_multiplier;
+
+ if ( b_new_mixer && aout_MixerNew( p_aout ) )
+ {
+ p_aout->mixer_multiplier = f_old;
+ aout_MixerNew( p_aout );
+ return -1;
+ }
+
+ return 0;
+}
+
+/*****************************************************************************
+ * aout_MixerMultiplierGet: get p_aout->mixer.f_multiplier
+ *****************************************************************************
+ * Please note that we assume that you own the mixer lock when entering this
+ * function. This function returns -1 on error.
+ *****************************************************************************/
+int aout_MixerMultiplierGet( aout_instance_t * p_aout, float * pf_multiplier )
+{
+ *pf_multiplier = p_aout->mixer_multiplier;
+ return 0;