[pulseaudio-discuss] [PATCH]: High-definition audio pass-through support

Kelly Anderson kelly at silka.with-linux.com
Thu Nov 17 13:14:08 PST 2011


Hi,

I finally got around to working out the kinks to pass-through 
high-definition audio
in Xbmc.  Funny how long it took me to get back to it.  I was re-reading 
some
emails on the list from way back in March and one of the emails turned 
me on to
a proper solution.  One thing that I wasn't able to do was to get PulseAudio
to pass-through 8 channel audio when the device's sink was set as 
hdmi-stereo.

So I patched PulseAudio 1.1 for hdmi-surround-71 and lo and behold it 
worked.
Here's a patch, hopefully we can get this added in the next official release
of PulseAudio.  I know that there are quite a few Xbmc users that have 
been anxiously
waiting for high-definition audio pass-through to work correctly.  Of 
course if someone
has a better solution, that would be fine too.

--- ./src/modules/alsa/mixer/profile-sets/default.conf.orig    
2011-10-20 06:54:16.000000000 -0600
+++ ./src/modules/alsa/mixer/profile-sets/default.conf    2011-11-17 
02:16:00.038900536 -0700
@@ -173,6 +173,12 @@ channel-map = left,right
  priority = 4
  direction = output

+[Mapping hdmi-surround-71]
+device-strings = hdmi:%f
+channel-map = 
front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+priority = 5
+direction = output
+
  ; An example for defining multiple-sink profiles
  #[Profile output:analog-stereo+output:iec958-stereo+input:analog-stereo]
  #description = Foobar
--- ./src/modules/alsa/alsa-mixer.c.orig    2011-10-20 
06:54:16.000000000 -0600
+++ ./src/modules/alsa/alsa-mixer.c    2011-11-17 02:15:38.168035216 -0700
@@ -3700,7 +3700,8 @@ static int mapping_verify(pa_alsa_mappin
          { "iec958-passthrough",     N_("Digital Passthrough  (IEC958)") },
          { "iec958-ac3-surround-40", N_("Digital Surround 4.0 
(IEC958/AC3)") },
          { "iec958-ac3-surround-51", N_("Digital Surround 5.1 
(IEC958/AC3)") },
-        { "hdmi-stereo",            N_("Digital Stereo (HDMI)") }
+        { "hdmi-stereo",            N_("Digital Stereo (HDMI)") },
+        { "hdmi-surround-71",       N_("Digital Surround 7.1 (HDMI)") }
      };

      pa_assert(m);



More information about the pulseaudio-discuss mailing list