pl bossart wrote: > > What I'm talking about is that pulseaudio is incapable of ever sending > > audio to anything other than the default device/subdevice within a card, > > irrespective of whether a cable is plugged in and signal being transmitted. > > ok, I am not sure I understand why there are several devices in the > first place. Can you elaborate on what these 4 devices are? Can all > these devices be used concurrently with different streams,ie up to 4 > independent HDMI outputs/cables? Or is each device stereo only, and > the hardware will multiplex channel pairs on the same HDMI link? The GPU has four[1] sets of DVI/HDMI/DP pins on the package, and on any given board, some subset of these is routed out to actual connectors. For example, there may be two DVI ports and an HDMI port. [1] I assume since there are 4 HD audio codecs... For each of these sets of pins, and hence each connector on the board, there is an HD audio codec. If/when a video signal is being transmitted across a given connector, the corresponding HD audio codec may be used to transmit audio along with that signal. There is a 1:1 mapping between HD audio codec ID (and hence ALSA device-ID) and physical connector. The exact mapping probably varies from board to board depending on OEM design. Note that right now, these 4 HD audio codecs are arranged as 1 ALSA card with 4 devices contained within. I could imagine this could also be exposed as 1 ALSA card with 1 ALSA device and 4 ALSA subdevices, depending on HD audio node configuration. In practice, NVIDIA GPUs only support sending video signals over at most two of these connectors at once, and hence the HD audio controller only allows two audio streams to be configured at once. The exact set used can be dynamically reconfigured by changing xorg.conf or using NVIDIA's tools to manipulate a running X server; similar to xrandr. Each of these audio streams may be up to multi-channel, depending on TV or receiver capabilities. In other words, there aren't 4 stereo-only streams that get mapped into a single video stream to make a single multi- channel stream. I could imagine someone wanting to use pulseaudio to send two entirely different audio streams to two different monitors at the same time. I imagine (complete guess) that Intel's and AMD's HDMI support works similarly, although the number of separate ALSA devices (or subdevices), the maximum number of streams that can operate at once, and the maximum capabilities of each stream (e.g. stereo vs. multi-channel) probably differ. In other words, this architecture is somewhat driven by Intel's HD audio codec architecture. That said, I suppose this could be exposed as 1 PCI device, and hence 1 ALSA card, per video connector. That'd be a lot of extra HW to put on the chip though. -- nvpublic