Takashi Iwai kirjoitti maanantai, 26. heinäkuuta 2010 12:14:17:
At Sun, 25 Jul 2010 19:51:39 +0300,
Anssi Hannula wrote:
Hi all!
I have a motherboard with NVIDIA MCP7A HDMI audio. However, multichannel audio is not mapped properly into the HDMI order.
On 5.1, I get RL in FC, RR in LFE, FC in RL, LFE in RR.
Interestingly, this is not consistent with the ALSA channel order (FL FR RL RR FC LFE) being passed directly to HDMI (FL FR LFE FC RL RR). Instead it looks like there has been a waveformatex (FL FR FC LFE RL RR; windows?) => HDMI conversion instead of ALSA => HDMI.
Same happens for 7.1.
Is it possible to set the hardware to do an ALSA => HDMI conversion instead? If not, we should manually compensate for this somewhere, right?
Does the patch below change anything?
AFAICS no stuff from patch_hdmi.c is used for MCP7x, so it has no effect. Tested anyway, it doesn't change anything.
Somewhat relatedly, trying to output 4 channels results in silence only.
Although 5.1/7.1 work?
Yep, with wrong channel order.
Trying to output 3 or 5 channels triggers a timeout with I/O error, with the following in the kernel log: "ALSA pcm_lib.c:1757: playback write error (DMA or IRQ trouble?)"
HD-audio doesn't support the odd number of channels in general, so they should be played as 4 or 6 channels. But, it looks like something wrong in the setup...
thanks,
Takashi
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 3c10c0b..7355c60 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -511,6 +511,8 @@ static int patch_nvhdmi_8ch_7x(struct hda_codec *codec)
codec->patch_ops = nvhdmi_patch_ops_8ch_7x;
- init_channel_allocations();
- return 0;
}