diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-06-10 13:48:10 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-06-22 06:28:40 -0400 |
commit | 4b3acaf5b56f53ef259a6ddf8e17dcb529631d9b (patch) | |
tree | 158c8be4beaea35e9e9f855205d10c5375da6cf9 /sound/pci/hda | |
parent | 3e289f16ec2e08bbb37ce57a31386ed135887da4 (diff) |
[ALSA] hda-codec - Feed front signals to all surrounds
HDA Codec driver
Feed front signals to all surround channels if no data is given
for surround channels.
It seems that CLFE works as expected (only center outputs) even if
connected from the front line - at least on my test system.
If this change causes problems on other system (e.g. only the left
channel is transferred to the center channel), please let me know...
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r-- | sound/pci/hda/hda_codec.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index cb3a76139341..8805928167f5 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -1682,11 +1682,12 @@ int snd_hda_multi_out_analog_prepare(struct hda_codec *codec, struct hda_multi_o | |||
1682 | snd_hda_codec_setup_stream(codec, mout->hp_nid, stream_tag, 0, format); | 1682 | snd_hda_codec_setup_stream(codec, mout->hp_nid, stream_tag, 0, format); |
1683 | /* surrounds */ | 1683 | /* surrounds */ |
1684 | for (i = 1; i < mout->num_dacs; i++) { | 1684 | for (i = 1; i < mout->num_dacs; i++) { |
1685 | if (i == HDA_REAR && chs == 2) /* copy front to rear */ | 1685 | if (chs >= (i + 1) * 2) /* independent out */ |
1686 | snd_hda_codec_setup_stream(codec, nids[i], stream_tag, 0, format); | ||
1687 | else if (chs >= (i + 1) * 2) /* independent out */ | ||
1688 | snd_hda_codec_setup_stream(codec, nids[i], stream_tag, i * 2, | 1686 | snd_hda_codec_setup_stream(codec, nids[i], stream_tag, i * 2, |
1689 | format); | 1687 | format); |
1688 | else /* copy front */ | ||
1689 | snd_hda_codec_setup_stream(codec, nids[i], stream_tag, 0, | ||
1690 | format); | ||
1690 | } | 1691 | } |
1691 | return 0; | 1692 | return 0; |
1692 | } | 1693 | } |