XBMC PulseAudio passthrough support (including Nvidia) is available

  Thread Rating:
  • 3 Votes - 4 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #16
Philmatic Wrote:Isn't this duplicating the work being done in the AudioEngine branch? Or do I not understand what you're talking about (Always possible Smile)?

I'm working on PulseAudio passthrough specifically. I read through the thread and it looks I could probably take advantage of some of the extensions they're adding. So I'll probably branch off their git as soon as I'm ready. Thanks for the link.
find quote
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #17
OK, I've got dts-hd muxing working in AudioFilter. Now to make a few changes in Xbmc code and I'll have pulse dts-hd passthrough working.
find quote
acemt Offline
Senior Member
Posts: 141
Joined: Oct 2009
Reputation: 0
Post: #18
this is going to be incredible if you can integrate this. This is really the biggest thing missing from XBMC
find quote
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #19
Good news Big Grin I've just watched District 9 and Master and Commander in full dts-hd. A few minor glitches (a couple of pops, I think it might be buffer underruns), other than that it worked great!

One thing I did notice with Master and Commander was that with standard dts the dialogue was not nearly as clear as it was with dts-hd. dts-hd has about 4 times the bandwidth.

I'll be putting up the newer code sometime tomorrow. I've been working pretty long hours on it and now I just want to relax a bit.
(This post was last modified: 2011-03-20 12:01 by cbxbiker61.)
find quote
Philmatic Offline
Fan
Posts: 457
Joined: Nov 2009
Reputation: 1
Location: Santa Barbara, CA
Post: #20
Those drop-outs are happening on Boxee's bitstreaming code too.. they haven't been fixed yet and they're proving to be quite hard to troubleshoot.

Living Room: AppleTV 1st Gen / Broadcom CrystalHD / XBMC 12.3 Frodo on Crystalbuntu 2.0
Bedroom: AppleTV 1st Gen / Broadcom CrystalHD / XBMC 12.3 Frodo on Crystalbuntu 2.0
Home Office: AppleTV 1st Gen / Broadcom CrystalHD / XBMC 12.3 Frodo on Crystalbuntu 2.0
Windows Home Server: Intel Core i3-2100T / 8GB Ram / 32TB / MySQL / StableBit DrivePool on WHS 2011
find quote
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #21
Looks like it'll be a day or two before I have a git-branch ready for testing. I just did some testing on the AudioEngine branch and it seems to have problems. I'll be posting some patches for AudioEngine to at least get them compiling with external FFmpeg. If the AudioEngine branch fixes their problems I've got the patches ready to apply.

Considering the AudioEngine branch doesn't seem to currently succeed in handling passthrough, I'll be branching off head. I'm hoping Pulse gets a commit in to their passthrough branch that eliminates the need to patch PulseAudio code at all. It'll just be a matter of git cloning from the right tree.

I'm wrapping the code in conditionals so that it will build Pulse passthrough support if the installed version of Pulse supports passthrough (this should be official in Pulse version 1.0).
find quote
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #22
OK, I've been burnin the midnight oil so I'm ready for others to test the results.

Download/build/install in order.

git://git.collabora.co.uk/git/user/arun/pulseaudio.git

after you clone pulseaudio.git change into the pulseaudio directory and "git checkout passthrough".

git://github.com/cbxbiker61/audiofilter.git

git://github.com/cbxbiker61/xbmc.git

Configure xbmc with appropriate devices selected in System Settings/Audio, pulse audio devices show up with (pulse) extension.
(This post was last modified: 2011-03-20 23:18 by cbxbiker61.)
find quote
SpectreX Offline
Senior Member
Posts: 278
Joined: Oct 2010
Reputation: 0
Post: #23
Great work cbxbiker61, is it possible to post/upload a compiled version for less tehnical people so we can test out, since i don`t know how to compile/use git? I`m interested mostly in DTS-HD MA and True HD bitstreaming, so i`ll let you know the results on a Denon 2310 receiver.
find quote
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #24
SpectreX Wrote:Great work cbxbiker61, is it possible to post/upload a compiled version for less tehnical people so we can test out, since i don`t know how to compile/use git? I`m interested mostly in DTS-HD MA and True HD bitstreaming, so i`ll let you know the results on a Denon 2310 receiver.

I feel your pain...but it's probably not a great idea to build a testing binary since it's dependent on a test version of Pulse which will break some of your standard package dependencies. I have my own distribution which I can hack at will, so when I use a testing version of PulseAudio I just rebuild the packages that depend on it.

Now if we could find a user that has your distribution and your OK with breaking some packages that depend on PulseAudio we might get someone to compile a package for you. Other than that, you'll have to wait for PulseAudio 1.0 and Xbmc 11.

Other users might find it useful that my version of xbmc has been patched to work with external Python 2.7 and compiles clean against the latest and greatest git FFmpeg.
find quote
shadow Offline
Senior Member
Posts: 197
Joined: Jan 2011
Reputation: 3
Post: #25
I am having a problem compiling audiofilter, here is the output.

#make -j8
mkdir -p out.x86_64 out.x86
make -C out.x86_64 -f ../GNUmakefile TOP=../.. libAudioFilter.a bsconvert noise mpeg_demux spdifer swab wavdiff
make[1]: Entering directory `/home/shadow/audiofilter/gnu/out.x86_64'
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/Ac3HeaderParser.cpp -o Ac3HeaderParser.o
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/Ac3Parser.cpp -o Ac3Parser.o
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/AgcFilter.cpp -o AgcFilter.o
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/AutoFile.cpp -o AutoFile.o
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/BitStream.cpp -o BitStream.o
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/filters/Converter.cpp -o Converter.o
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/filters/ConvertFunc.cpp -o ConvertFunc.o
g++ -c -D_GNU_SOURCE -g -O -Wall -I../../include -I../../lib ../../lib/filters/Convolver.cpp -o Convolver.o
../../lib/Ac3HeaderParser.cpp:46:6: error: ‘Ac3HeaderParser’ has not been declared
../../lib/Ac3HeaderParser.cpp:142:6: error: ‘Ac3HeaderParser’ has not been declared
make[1]: *** [Ac3HeaderParser.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/home/shadow/audiofilter/gnu/out.x86_64'
make: *** [all] Error 2
find quote
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #26
shadow Wrote:I am having a problem compiling audiofilter, here is the output.

It's fixed now, I did a last second header rename.
find quote
shadow Offline
Senior Member
Posts: 197
Joined: Jan 2011
Reputation: 3
Post: #27
Thanks, it worked. Compiling xbmc now then I finally get to test it.
find quote
shadow Offline
Senior Member
Posts: 197
Joined: Jan 2011
Reputation: 3
Post: #28
I can't get it to work. In the audio output setting I have no Pulse choices for the passthrough output device
find quote
cbxbiker61 Offline
Senior Member
Posts: 183
Joined: Nov 2010
Reputation: 2
Post: #29
shadow Wrote:I can't get it to work. In the audio output setting I have no Pulse choices for the passthrough output device

I'd say that you don't have the PulseAudio git installed, or maybe not in a normal location.

/usr/include/pulse/version.h should have:

#define PA_PROTOCOL_VERSION 21

If it doesn't passthrough support isn't built into xbmc.

BTW, you have to rebuild xbmc after you fix that.
find quote
shadow Offline
Senior Member
Posts: 197
Joined: Jan 2011
Reputation: 3
Post: #30
I was in /usr/local

Although I noticed that I I am only at 20 not 21. (stock ubuntu PA was 16)
Am I still having problems or did you miss type?

Recompiling xbmc now.
find quote
Post Reply