Kodi Community Forum
XBMC PulseAudio passthrough support (including Nvidia) is available - Printable Version

Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Kodi Application (https://forum.kodi.tv/forumdisplay.php?fid=93)
--- Thread: XBMC PulseAudio passthrough support (including Nvidia) is available (/showthread.php?tid=96316)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18


- cbxbiker61 - 2011-12-03

sjongele Wrote:Some SD DD5.1 movies (they still exist) no longer want to play correctly: the frame rate drops from 25fps to 4fps. The same content plays correctly in the current XBMC nightly, so there might be a little error somewhere in Audiofilter.

I can't reproduce the problem here. I can play my Smallville DD-5.1 media without problems. I would need a sample of a file to test.


- sjongele - 2011-12-03

50fps and 60fps material work fine (as far as I have seen). 25fps material fails pretty consistently; I'm using DVD ISOs to test this. Do you have some 25fps material?


- Forsaken - 2011-12-03

boulogne75 Wrote:As promised last week:

Zotac ID41 (ION2)
Debian testing minimal (fresh install)
Alsa 0.23
XBMC compiled with external ffmpeg support and PA disabled
PA not installed in the system
FFMpeg v0.8.6


Just had to figure out which custom device name to use as hdmi audio device cos hw:0,7 (the usual one) didn't work for hd bitstreaming (dolby and dts were ok). So I tried hdmi:CARD=NVidia,DEV=1 and then DTS-HD MSTR flashed in my Onkyo Receiver.

Thank you very much and keep up the great work, cbxbiker61.

Waiting for Dolby True-HD implementation to test it Wink

PD: The few files I tested played without any problems (no slutter...)

I've been trying to get this to work but no luck, I have a intel card though. Where did you set the "hdmi:CARD=NVidia,DEV=1" parameter ?


- cbxbiker61 - 2011-12-03

sjongele Wrote:50fps and 60fps material work fine (as far as I have seen). 25fps material fails pretty consistently; I'm using DVD ISOs to test this. Do you have some 25fps material?

No, unfortunately all of my material that is DD-5.1 is interlaced 60fps.

On a maybe related note... FFmpeg no longer exports ff_vdpau_vc1_decode_picture. So if you're building with the latest external FFmpeg, xbmc will not turn on vdpau support. In my case I patched configure.in to use a simpler detection method. I wonder if that may be your issue.

Code:
--- ./configure.in.orig    2011-11-16 01:48:58.000000000 -0700
+++ ./configure.in    2011-11-17 06:38:35.311358161 -0700
@@ -1248,7 +1248,7 @@ if test "$use_external_ffmpeg" = "yes";
   AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])

   # Disable vdpau support if external libavcodec doesn't have it
-  AC_CHECK_LIB([avcodec], [ff_vdpau_vc1_decode_picture],,
+  AC_CHECK_LIB([avcodec], [avcodec_open],,
     [if test "x$use_vdpau" = "xyes"; then
       AC_MSG_ERROR($ffmpeg_vdpau_not_supported)
     else
--- ./configure.in.orig    2011-11-17 06:40:58.078030669 -0700
+++ ./configure.in    2011-11-17 07:16:06.214464029 -0700
@@ -1297,7 +1297,7 @@ if test "x$use_vdpau" != "xno"; then
     USE_VDPAU=0
   else
     USE_VDPAU=1
-    AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
+    AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [1],
       [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
     [if test "x$use_vdpau" = "xyes"; then
       USE_VDPAU=0



- cbxbiker61 - 2011-12-03

Forsaken Wrote:I've been trying to get this to work but no luck, I have a intel card though. Where did you set the "hdmi:CARD=NVidia,DEV=1" parameter ?

He was setting the "custom pass-through device", which was only necessary because he was using "native" Alsa rather than the PulseAudio device. If you're using PulseAudio you would select the Intel device in the pass-through device list. If you're using Intel/native Alsa, then the custom pass-through device line would be different than "hdmi:CARD=NVidia,DEV=1". I'm guessing it would be more like "hdmi:CARD=Intel,DEV=1". You should be able to identify it with "aplay -l".


- Forsaken - 2011-12-04

cbxbiker61 Wrote:He was setting the "custom pass-through device", which was only necessary because he was using "native" Alsa rather than the PulseAudio device. If you're using PulseAudio you would select the Intel device in the pass-through device list. If you're using Intel/native Alsa, then the custom pass-through device line would be different than "hdmi:CARD=NVidia,DEV=1". I'm guessing it would be more like "hdmi:CARD=Intel,DEV=1". You should be able to identify it with "aplay -l".

Yes I've tried both with pulseaudio and with alsa only, it works fine with "vanilla" xbmc and hdmi(ALSA) but I'm not getting any audio with your xbmc and the same settings and if I set the custom device to "hdmi:CARD=Intel,DEV=3" then I get an error about not being able to open device.
aplay -l tells me it's card 0 and device 3.

Something I'm missing ?


- cbxbiker61 - 2011-12-04

Forsaken Wrote:Yes I've tried both with pulseaudio and with alsa only, it works fine with "vanilla" xbmc and hdmi(ALSA) but I'm not getting any audio with your xbmc and the same settings and if I set the custom device to "hdmi:CARD=Intel,DEV=3" then I get an error about not being able to open device.
aplay -l tells me it's card 0 and device 3.

Something I'm missing ?

post the output of:
Code:
for f in /proc/asound/card*/eld*; do                        
echo "***** $f *****"
cat $f
done

That should tell me more about what you can and can't do with your config. At some point I expect to parse that output in my pass-through code and theoretically do the "right" thing.


- Forsaken - 2011-12-04

cbxbiker61 Wrote:post the output of:
Code:
for f in /proc/asound/card*/eld*; do                        
echo "***** $f *****"
cat $f
done

That should tell me more about what you can and can't do with your config. At some point I expect to parse that output in my pass-through code and theoretically do the "right" thing.

This is the output, its connected to a Onkyo 709.

***** /proc/asound/card0/eld#3.0 *****
monitor_present 1
eld_valid 1
monitor_name
connection_type HDMI
eld_version [0x0] reserved
edid_version [0x0] no CEA EDID Timing Extension block present
manufacture_id 0x0
product_id 0x0
port_id 0x0
support_hdcp 0
support_ai 0
audio_sync_delay 0
speakers [0xffff] FL/FR LFE FC RL/RR RC FLC/FRC RLC/RRC FLW/FRW FLH/FRH TC FCH
sad_count 0


- cbxbiker61 - 2011-12-04

Forsaken Wrote:This is the output, its connected to a Onkyo 709.

***** /proc/asound/card0/eld#3.0 *****
monitor_present 1
eld_valid 1
monitor_name
connection_type HDMI
eld_version [0x0] reserved
edid_version [0x0] no CEA EDID Timing Extension block present
manufacture_id 0x0
product_id 0x0
port_id 0x0
support_hdcp 0
support_ai 0
audio_sync_delay 0
speakers [0xffff] FL/FR LFE FC RL/RR RC FLC/FRC RLC/RRC FLW/FRW FLH/FRH TC FCH
sad_count 0

It should look more like this: (note the receiver name is specified, and the supported pass-through formats are listed).

My wiring is: hdmi cable from computer to receiver and then hdmi cable from receiver to tv. Did you connect it like that? I can't remember if there's a configuration option in the receiver configuration to allow pass-through, that could also be the problem.

Code:
***** /proc/asound/card1/eld#1.0 *****
monitor_present         1
eld_valid               1
monitor_name            TX-SR608
    
connection_type         HDMI
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0xcb3d
product_id              0xa62
port_id                 0x20000
support_hdcp            0
support_ai              0
audio_sync_delay        0
speakers                [0x4f] FL/FR LFE FC RL/RR RLC/RRC
sad_count               8
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0x1ee0] 44100 48000 88200 176400 192000 384000
sad0_bits               [0xe0000] 16 20 24
sad1_coding_type        [0x1] LPCM
sad1_channels           8
sad1_rates              [0x1ee0] 44100 48000 88200 176400 192000 384000
sad1_bits               [0xe0000] 16 20 24
sad2_coding_type        [0x2] AC-3
sad2_channels           8
sad2_rates              [0xe0] 44100 48000 88200
sad2_max_bitrate        640000
sad3_coding_type        [0x7] DTS
sad3_channels           8
sad3_rates              [0xc0] 48000 88200
sad3_max_bitrate        1536000
sad4_coding_type        [0x9] DSD (One Bit Audio)
sad4_channels           6
sad4_rates              [0x40] 48000
sad5_coding_type        [0xa] E-AC-3/DD+ (Dolby Digital Plus)
sad5_channels           8
sad5_rates              [0xc0] 48000 88200
sad6_coding_type        [0xb] DTS-HD
sad6_channels           8
sad6_rates              [0x1ec0] 48000 88200 176400 192000 384000
sad7_coding_type        [0xc] MLP (Dolby TrueHD)
sad7_channels           8
sad7_rates              [0x1480] 88200 192000



- Forsaken - 2011-12-04

cbxbiker61 Wrote:It should look more like this: (note the receiver name is specified, and the supported pass-through formats are listed).

My wiring is: hdmi cable from computer to receiver and then hdmi cable from receiver to tv. Did you connect it like that? I can't remember if there's a configuration option in the receiver configuration to allow pass-through, that could also be the problem.

I have the same wiring, well except I have a projector at the other end of the receiver.

I restarted the computer with a newer kernel, 3.1.4 and now it gave me some more info but not nearly as much as you have. I've tried the different "adjust picture" settings for HDMI but they don't change the info in eld. I use "direct" mode as I don't want the receiver to do anything with the picture.

Code:
monitor_present         1
eld_valid               1
monitor_name
connection_type         HDMI
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0x0
product_id              0x0
port_id                 0x0
support_hdcp            1
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0xe0] 44100 48000 88200
sad0_bits               [0x20000] 16



- cbxbiker61 - 2011-12-04

Forsaken Wrote:I have the same wiring, well except I have a projector at the other end of the receiver.

I restarted the computer with a newer kernel, 3.1.4 and now it gave me some more info but not nearly as much as you have. I've tried the different "adjust picture" settings for HDMI but they don't change the info in eld. I use "direct" mode as I don't want the receiver to do anything with the picture.

Code:
monitor_present         1
eld_valid               1
monitor_name
connection_type         HDMI
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0x0
product_id              0x0
port_id                 0x0
support_hdcp            1
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0xe0] 44100 48000 88200
sad0_bits               [0x20000] 16

Now I'm wondering if "direct" mode is the culprit. To me that would imply don't process "any" part of the signal, and that would include audio. In that case the video card is probably getting the capabilities of the projector, rather than what you want, which is the capabilities of the receiver. Try turning direct mode off, and reboot the computer (It polls the device for capabilites when the video card driver loads).


- Forsaken - 2011-12-04

cbxbiker61 Wrote:Now I'm wondering if "direct" mode is the culprit. To me that would imply don't process "any" part of the signal, and that would include audio. In that case the video card is probably getting the capabilities of the projector, rather than what you want, which is the capabilities of the receiver. Try turning direct mode off, and reboot the computer (It polls the device for capabilites when the video card driver loads).

No difference unfortunately.


- cbxbiker61 - 2011-12-04

Forsaken Wrote:No difference unfortunately.

OK. At this point I'm not sure what you need to do to get your receiver to offer up pass-through support. Until you can see those pass-through features show up in /proc/asound/card*/eld* it isn't going to work. You can turn off pass-through support in xbmc until you figure it out.


- jawilljr - 2011-12-04

Forsaken, On your Onkyo receiver, make sure that the "Audio TV Out" is set to "OFF". I got that from pages 58 and 59 of the Reciever's manual.

I would probably set RIHD a "Audio Return Channel" to off also.

Also here is an excellent thread for your receiver. I would also ask there on what the proper HDMI Audio settings should be.

Of-course when you change audio settings in the receiver you should reboot XBMC so the NVIDIA drivers could re-read the EDID from your receiver.

Hope the info helps... and good luck.

Jerry


- Forsaken - 2011-12-04

jawilljr Wrote:Forsaken, On your Onkyo receiver, make sure that the "Audio TV Out" is set to "OFF". I got that from pages 58 and 59 of the Reciever's manual.

I would probably set RIHD a "Audio Return Channel" to off also.

Also here is an excellent thread for your receiver. I would also ask there on what the proper HDMI Audio settings should be.

Of-course when you change audio settings in the receiver you should reboot XBMC so the NVIDIA drivers could re-read the EDID from your receiver.

Hope the info helps... and good luck.

Jerry

Yes they are off, I'll see if I can find something else.

cbxbiker, ok I'm going to play around with the settings on the receiver and see if I can't get it to work.


This forum uses Lukasz Tkacz MyBB addons.