(restored CC)
Kirjoitit tiistai, 3. elokuuta 2010 23:40:13:
On Tue, Aug 3, 2010 at 1:32 PM, Anssi Hannula anssi.hannula@iki.fi wrote:
pl bossart kirjoitti tiistai, 3. elokuuta 2010 23:15:28:
Well, this is one of my looong-standing TODOs. Originally I wanted to implement a new API to get/set the channel-mapping, mainly for HDMI. But, I've been recently too busy for other tasks (I can spend little time for ALSA), thus it's pending forever.
You would only need an API to get the channel mapping. The HDMI sink will report its speaker configuration through a CEA code (section 7.4 of the spec), and if we parsed the EDID info we could present the relevant channel order to user-space apps.
I'm not sure I see how that will help with the problem of this thread, though, i.e. NVIDIA MCP7A hdmi codec apparently assuming audio being fed in windows channel order instead of alsa channel order.
You can in theory specify the channel order in the InfoFrame (CA field). If you had access to a register to program this, you would no longer be tied to alsa or windows or whatever order. You would just provide ALSA with the channels in the order you configured with the CA code.
The CA field is programmable, but the channel orders are predefined and no arbitrary channel formats are possible (see patch_hdmi.c or the related CEA spec).
The nvhdmi MCP7x codec driver tries to specify a channel order by using the channel_id field in AC_VERB_SET_CHANNEL_STREAMID for the 4 slave digital converters, but it doesn't seem to have any effect (at least on hardware I have; confirmed by swapping the channel_ids around with no effect).