]> git.sesse.net Git - vlc/commitdiff
* modules/audio_filter/converter/mpgatofixed32.c: added downmixing from stereo to...
authorGildas Bazin <gbazin@videolan.org>
Thu, 17 Mar 2005 08:20:53 +0000 (08:20 +0000)
committerGildas Bazin <gbazin@videolan.org>
Thu, 17 Mar 2005 08:20:53 +0000 (08:20 +0000)
modules/audio_filter/converter/mpgatofixed32.c

index 5ddb7bd3da32b52371858972e2405806f10b3a6b..8c30c4b3f535fd034d978d7ecf50f4bc7e1b55a0 100644 (file)
@@ -165,6 +165,12 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
         switch ( p_pcm->channels )
         {
         case 2:
+            if ( p_filter->output.i_original_channels == AOUT_CHAN_CENTER )
+            while ( i_samples-- )
+            {
+                *p_samples++ = (*p_left++ >> 1) + (*p_right++ >> 1);
+            }
+            else
             while ( i_samples-- )
             {
                 *p_samples++ = *p_left++;
@@ -191,10 +197,17 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
         mad_fixed_t const * p_left = p_pcm->samples[0];
         mad_fixed_t const * p_right = p_pcm->samples[1];
         float f_temp = (float)FIXED32_ONE;
-        
+
         switch ( p_pcm->channels )
         {
         case 2:
+            if ( p_filter->output.i_original_channels == AOUT_CHAN_CENTER )
+            while ( i_samples-- )
+            {
+                *p_samples++ = (float)*p_left++ / f_temp / 2 +
+                               (float)*p_right++ / f_temp / 2;
+            }
+            else
             while ( i_samples-- )
             {
                 *p_samples++ = (float)*p_left++ / f_temp;