[ALSA] ymfpci: fix swapped channels in SPDIF output
authorClemens Ladisch <clemens@ladisch.de>
Fri, 13 Jan 2006 06:48:59 +0000 (07:48 +0100)
committerJaroslav Kysela <perex@suse.cz>
Wed, 22 Mar 2006 09:23:00 +0000 (10:23 +0100)
Modules: YMFPCI driver

The routing of the effect 2/3 channels to the digital output is the
opposite of the rear analog output (left/right swapped).

We make the order correct for the digital output (which will make the
analog rear have the channels swapped) to make AC3 output work.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
sound/pci/ymfpci/ymfpci_main.c

index a1aa74b79b3d9c2086aa6acc21df188cbbcf12b9..30ee53adb494134e1ea4ef2d284f96250557ed7a 100644 (file)
@@ -536,13 +536,17 @@ static void snd_ymfpci_pcm_init_voice(struct snd_ymfpci_pcm *ypcm, unsigned int
                        }
                }
                if (ypcm->output_rear) {
+                       /* The SPDIF out channels seem to be swapped, so we have
+                        * to swap them here, too.  The rear analog out channels
+                        * will be wrong, but otherwise AC3 would not work.
+                        */
                        if (use_left) {
-                               bank->eff2_gain =
-                               bank->eff2_gain_end = vol_left;
+                               bank->eff3_gain =
+                               bank->eff3_gain_end = vol_left;
                        }
                        if (use_right) {
-                               bank->eff3_gain =
-                               bank->eff3_gain_end = vol_right;
+                               bank->eff2_gain =
+                               bank->eff2_gain_end = vol_right;
                        }
                }
        }