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) |
- Forsaken - 2011-12-04 It seems that it's the intel driver that is not parsing the edid information correctly, I dumped the edid data and put it through a tool to parse it and it looks correct there, it reports all the formats and so on. - sjongele - 2011-12-04 cbxbiker61 Wrote:No, unfortunately all of my material that is DD-5.1 is interlaced 60fps. That did not help. I'll send you a PM with a download link. - Forsaken - 2011-12-04 cbxbiker61 Wrote: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. I upgraded the kernel to 3.2-rc4 and now I get seemingly good info in eld. DTS-MA does not work though, regular DTS/DD works fine. I'm running without pulseaudio. I've set the custom device to "alsa:hw:0,3" and I've tried "hdmi:CARD=Intel,DEV=3" but no luck. I'm seeing errors like this: ALSA lib conf.c:4514parse_args) Unknown parameter AES0 ALSA lib conf.c:4647snd_config_expand) Parse arguments error: No such file or directory ALSA lib pcm.c:2212snd_pcm_open_noupdate) Unknown PCM hw:0,3,AES0=0x6,AES1=0x82,AES2=0x0,AES3=0x2 ALSA lib conf.c:4514parse_args) Unknown parameter AES0 ALSA lib conf.c:4647snd_config_expand) Parse arguments error: No such file or directory ALSA lib pcm.c:2212snd_pcm_open_noupdate) Unknown PCM hw:0,3,AES0=0x6,AES1=0x82,AES2=0x0,AES3=0xe Code: monitor_present 1 - megakha - 2011-12-04 Forsaken Wrote:I upgraded the kernel to 3.2-rc4 and now I get seemingly good info in eld. For ATI cards ELD is working starting from kernel 3.2 only Is there a way to fake ELD so that is would be usable with 3.0? or even a master switch to put everything to passthrough regardless of sound format. - cbxbiker61 - 2011-12-04 megakha Wrote:For ATI cards ELD is working starting from kernel 3.2 only No, the eld info only indicates what the alsa driver is capable of dealing with. So if it's not in the eld info, the alsa driver is going to fail anyway. At this point my code is not using the eld info, it's just making the assumption that if you've turned pass-through on, that the hdmi device is capable of all of the high-def formats. In the future I'll probably parse the eld and filter out combinations that the eld indicates are not valid. - cbxbiker61 - 2011-12-04 Forsaken Wrote:I upgraded the kernel to 3.2-rc4 and now I get seemingly good info in eld. Try substituting "plughw" for "hw". I think AES0 has to be interpretted by Alsa proper rather than passing it directly to the kernel driver. - eternalsword - 2011-12-05 After upgrading to pulse1.1 and applying your latest updates, I noticed I had no option for the HDMI 7.1 and was only getting LPCM data across to my sony amp. I checked the eld and noticed it was only LPCM, so I disabled TV+AMP and just set it to AMP, so now the eld is correct, but still no HDMI 7.1 option. I checked pavucontrol and noticed had no ability to set profiles on the card, which I have found out is due to me not using pulse's hardware detect, but putting in my card number manually. Here's the problem. If I don't do it manually, I get no sound because pulse chooses the wrong device for the card. From aplay -L, the correct device is hdmi:CARD=NVidia_1,DEV=3, but pulse wants to use device string 2. Also weird, I tried using hw:2,3 and got nothing. only hw:2,9 has ever worked. Any ideas? - eternalsword - 2011-12-05 Here is the current eld info. Code: cat /proc/asound/card2/eld\#3.0 - cbxbiker61 - 2011-12-05 eternalsword Wrote:After upgrading to pulse1.1 and applying your latest updates, I noticed I had no option for the HDMI 7.1 and was only getting LPCM data across to my sony amp. I checked the eld and noticed it was only LPCM, so I disabled TV+AMP and just set it to AMP, so now the eld is correct, but still no HDMI 7.1 option. I checked pavucontrol and noticed had no ability to set profiles on the card, which I have found out is due to me not using pulse's hardware detect, but putting in my card number manually. Here's the problem. If I don't do it manually, I get no sound because pulse chooses the wrong device for the card. From aplay -L, the correct device is hdmi:CARD=NVidia_1,DEV=3, but pulse wants to use device string 2. Also weird, I tried using hw:2,3 and got nothing. only hw:2,9 has ever worked. Any ideas? Make sure you apply the patch mentioned earlier in the thread for the hdmi 7.1. As for pulseaudio and nvidia hdmi I found that using a probe mask works well for me. My probe mask allows my internal audio card to work with my nvidia card. No doubt you'll need to use different parameters than me. There's plenty of info on the web for the magic probe_mask values for Nvidia. Here's mine: cat /etc/modprobe.d/snd_hda_intel.conf Code: options snd-hda-intel probe_mask=-1,0xa - eternalsword - 2011-12-05 after digging around some more, I figured out that my card has 4 valid options hw:2,3 hw:2,7 hw:2,8 and hw:2,9 (by valid I mean speaker-test doesn't crap out on them). However the first three provide no sound. From your last post, I'm assuming the probe-mask will filter those out. Will give that a try. In the mean time, I found this bug: https://bugzilla.redhat.com/show_bug.cgi?id=727915 and figured out if I hard-code the hdmi-surround-71 profile to hdmi:2,3 everything works. Will report back if I have any luck with the probe mask, but in case anyone else out there is running an nvidia gtx590, this is my solution at this point in time. - eternalsword - 2011-12-05 the probe mask did work. Thanks for the tip. There's a good post over at http://ubuntuforums.org/showpost.php?p=10465858&postcount=21 that explains how to calculate the mask. Basically run aplay -l and look at the card numbers. The probe mask is a comma separated list starting from card 0 and going up. a mask of -1 tells it to not mask it. To find what mask you need, check the eld files. There should be four of them, but you only need to look for active ones. The numbers of the active eld files added together will tell you the mask to use. eld#0 = 0x1, eld#1 = 0x2, eld#2 = 0x4, and eld#3 = 0x8. So in my case I have three cards from aplay. card 0 is the onboard, card 1 is NVidia inactive and card 2 is NVidia active. My active eld is eld#3, so I set my mask to probe_mask=-1,0x8,0x8 and everything is working great. I'm assuming cbxbiker61 has 2 active eld files #1 and #3, so 8+2 = 10 which in hex is 0xa. I could be completely off with regards to the active eld files, but that's how it worked out for me. - cbxbiker61 - 2011-12-05 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? I've just committed a fix for this in my xbmc repo. It seems that the VOB's are starting with an invalid audio frame which my code didn't allow for. Specifically the sample rate was being set to 0 which was causing xbmc to lockup. I might suggest to you to use makemkv to put those DVD ISO's into mkv files. I'm pretty sure that would eliminate the invalid frame problem at the beginning of a new VOB. Makemkv is pretty awesome, free for dvd only use, nominal charge to get blu-ray support. - eternalsword - 2011-12-05 I spoke too soon about probe_mask fixing all of the problems. While pulse worked fine, xbmc was not connecting to the right device. I'm guessing it was trying the inactive NVidia card which happens to come first (even though this card has profile off). I'm not sure if I can mask that card out completely. I'll try a mask of -1,0x0,0x8 next and see if that is the remedy. For now I'll just hard-code the profile. - megakha - 2011-12-05 cbxbiker61 Wrote:No, the eld info only indicates what the alsa driver is capable of dealing with. So if it's not in the eld info, the alsa driver is going to fail anyway. Well, aplay streams multichannel audio (DTS, AC-3, ..., etc.) correctly through HDMI to my receiver. Meaning that alsa works correctly. XMBC passes movies soundtracks correctly as well. It is just multichannel music I have trouble with. "IsPassthrough - false" always in log. ATI HD63xx (E350) => Onkyo 808. - sjongele - 2011-12-05 cbxbiker61 Wrote:I've just committed a fix for this in my xbmc repo. It seems that the VOB's are starting with an invalid audio frame which my code didn't allow for. Specifically the sample rate was being set to 0 which was causing xbmc to lockup. You have fixed the issue for the individual VOBs. Great step forward! It is getting more subtle now Turns out the menus are 25fps and the movies are 50 fps. On switching from a 25fps VOB to a 50fps one, things go wrong. By jumping up and down 30s once, everything I have tried can be made to play correctly now. For many of my DVDs I have just made an ISO, so that menus and options are still present. Thanks for the mkv hint, but converting them with makemkv looks like a work-around as it would take quite some time and menus/options could be lost. As the issue appears with ISOs, it also means that the original DVDs don't play correctly anymore. That cannot be the intention? |