2013-12-30, 16:29
I help a lot of people with their home theater systems, HTPCs and XBMC setups and lately I've run into a lot of issues with bitstreaming HD Audio (DTS-HD MA and Dolby TrueHD).
Some of the problems are because people are misinformed about how HD Audio works, some issues are hardware related, and some are driver related.
I thought I'd post this troubleshooting guide as general starting point for anybody dealing with HD audio bitstreaming and trying to understand how to make it work.
The first thing you need to understand about the HD Audio formats is how they are encoded and how and why they are different from normal 5.1 AC-3 and DTS.
DTS-HD Master Audio (MA)
DTS chose to encode their HD format using what is known as a Core+Extension scheme. Essentially the Lossless HD audio stream contains a Lossy DTS 5.1 audio stream at it's core which is wrapped in the additional, extension, audio data. Together the lossy core + the extension provide enough information that it's possible for a decoder to get back to a Lossless reproduction of the audio.
The bonus about this audio scheme (and probably part of the reason why it's more popular than Dolby TrueHD) is that in theory you only ever need to have 1 audio stream in your movie file, the HD one. This is because any older player should be able to extract the 5.1 Core audio from that and only play the normal 5.1 DTS if it cannot handle the full Lossless HD audio track. This backward compatability is by design. Some older players don't quite get this right, but in principle that's what is supposed to happen.
Dolby TrueHD
Unlike DTS, Dolby do NOT employ a Core+Extension packaging scheme for TrueHD. If your audio playback device cannot handle TrueHD then your movie file MUST have an additional audio stream that it can handle available in order for you to get any audio. And in fact, the Blu-Ray standard dictates that any Blu-Ray movie with a Dolby TrueHD audio track MUST also include a normal 5.1 Dolby AC-3 audio track for backward compatibility.
That means that technically speaking, if a movie has a TrueHD track, it should ALWAYS have at least 2 audio streams embedded in it.
And that's pretty much the long and short of what the story is with the HD audio formats, at a high level.
Requirements for bitstreaming HD audio successfully
1. You MUST be bitstreaming over HDMI. You cannot bitstream HD audio over S/PDIF. Period, no exceptions.
2. Your A/V receiver / audio playback device must natively support decoding of the HD audio formats. This may seem obvious, but people will try to send HD audio to devices that don't support it time and again.
3. The audio chipset in the PC that is sending the HD Audio bitstream to your audio playback device of choice must be capable of:
a. Negotiating properly with your audio playback device over HDMI and correctly interpreting the EDID's received over HDMI. Some older audio chipsets had problems with this that caused various issues.
b. Capable of actually bitstreaming HD audio. All modern ones should be as far as I know, but here again it pays to confirm against official specs and not assume things.
4. If you are attempting to play HD Audio from XBMC then:
a. You MUST use the WASAPI audio filters and NOT DirectShow.
b. You must enable HD Audio format support in the System-->Hardware-->Audio page of the XBMC settings.
5. If you are attempting to play HD Audio via another media player besides XBMC then:
a. You must make sure that you have DirectShow, LAV Audio Filters, or both installed.
b. You must make sure that either DirectShow or the LAV Audio Filters have been configured to pass through all the various Audio formats, including the HD Audio formats, depending on which one you are using.
c. You must make sure that whatever Splitter you are using (LAV, Haali, etc.) is invoking the Audio filter library (DirectShow, LAV Audio, etc.) that you think it is. Watch your windows tray to see what gets invoked when you play a movie.
And that's pretty much the high level requirements list for bitstreaming HD Audio.
The 4 most common reasons for HD Audio bitstreaming NOT working
1. The audio playback device of choice actually does NOT support it. Sometimes the spec for the device says it does, but it still actually does not.
2. There is a problem with the drivers for the audio chipset you are using.
3. You somehow have the audio getting output to the wrong Audio output on your PC (S/PDIF instead of HDMI for example). Possibly because you don't have the HDMI out set as the system default.
4. The HDMI cable. Try a different HDMI cable. Even if the HDMI cable works with other devices, still try a different one. There have been cases where people have got Blu-Ray players passing through audio on a cable that does NOT do the same from the PC, but they try a different audio cable and suddenly the problems go away. Sometimes it doesn't even make sense why, but certain cables work and others don't and certain cables work with certain devices. It is always a good idea to try a few different HDMI cables to make sure it's not the cable.
And while we are on the subject of HDMI cables, please note that all HDMI cables are NOT made equal. There different revisions of the cables. In this day and age you need to make sure you have at least an HDMI v1.3 rated cable, and preferably an HDMI v1.4 rated cable.
Common Symptoms of HD Audio not working
1. You simply get no audio. You get video playing fine, but no audio at all.
2. You get video, but it's choppy and stutters, and no audio.
3. You get choppy video and you get choppy audio. I'm not sure about this scenario but I think some people have experienced this.
When attempting to play HD Audio in XBMC via DirectShow instead of WASAPI, you will experience one of the above symptoms, even if your audio playback device (receiver) is capable of playing HD Audio.
How to do low level diagnostics of your playback hardware
During all the troubleshooting that I've done related to HD audio, I came across a very useful utility that is capable of interrogating the equipment you have connected to the HDMI output of your PC and will tell you what that equipment should be able to support in terms of both Video Resolutions / Modes and Audio formats.
You can get it here: http://www.entechtaiwan.com/util/moninfo.shtm - Download link top left of page.
What that app does is it interrogates the chain of hardware connected to the HDMI out of your PC and interprets the EDID data that is sent back to it by your hardware.
The EDID data is a big blob of information that tells you everything about what the connected hardware can support and is capable of (among other things).
On my personal system, about 3/4 of the way down the report that MonInfo generates, I see this:
CE audio data (formats supported)
LPCM 2-channel, 16/20/24 bit depths at 32/44/48/88/96/176/192 kHz
LPCM 8-channel, 16/20/24 bit depths at 32/44/48/88/96/176/192 kHz
AC-3 6-channel, 640k max. bit rate at 32/44/48 kHz
DTS 7-channel, 1536k max. bit rate at 32/44/48/88/96 kHz
SACD 6-channel at 44 kHz
DD+ 8-channel at 44/48 kHz
DVD-A 8-channel at 48/96/192 kHz
DTS-HD 8-channel, 16-bit at 48/96/192 kHz
NOTE: The entry in the list of devices in the top left panel that you want to be looking at is the entry with the words "Real Time ..." in brackets next to it. That is the ONLY entry that seems to return a full combined EDID package that INCLUDES audio information.
You may see various devices in that list that identify your TV or A/V Receiver separately, but those entries may not contain audio information. In my case, I see separate entries for my Samsung TV and my Yamaha A/V Receiver, and neither of those entries contains any audio information. ONLY the entry with "Real Time ..." next to it returns the audio information shown above.
What is particularly useful about this is:
1. If you have your PC connected to your A/V receiver via HDMI, and then your A/V receiver connected to your TV via HDMI (Video passthru), then the EDID package that comes back is effectively a combination of information about BOTH of those devices merged together.
2. The EDID information is low level and direct from the source devices. This means that it should give you a VERY accurate picture of what Audio formats are supported by your hardware, without things like audio chipset drivers confusing the issue.
The bottom line is, if you run this app and it tells you that the connected devices do NOT support DTS-HD MA and / or Dolby TruSurround, then you can be fairly sure you've got compatibility issues with your playback hardware and NOT with your PC at source.
----------------------------------------------------------------------
And that's all there is to it, at a high level.
Most of the issues experienced are either simply bad configuration or outright lack of compatibility of certain hardware involved.
XBMC actually does a very good job of playing HD Audio via WASAPI if all of your hardware is compliant and your drivers are up to date and installed correctly.
HD Audio bitstreaming FAQ
1. Q: Why does the manual for my A/V receiver say that it supports DTS-HD MA and TruSurround, but it refuses to work ?
A: Possible explanations (assuming everything else is set correctly and the receiver just refuses to play HD Audio) are:
a. Although the manual for your receiver says it supports those formats, what it actually means is that it will fall back to the Core track (for DTS) or mandatory AC-3 audio track for TrueHD automatically and will play you 5.1 audio. In other words, it doesn't actually PLAY HD audio, it just supports it from the point of view that it won't play nothing, it will fall back to what it can play.
b. The manual is lying and it does not support those formats.
c. It supports those formats if they are coming off of a Blu-Ray disc (all-in-one Blu-Ray Player / Receiver combo) but NOT if they are sent to it over HDMI as a bitstream.
The MoInfo app I gave a link for earlier in this article will help a lot to clarify if this is the case and determine what the device on the other end of the HDMI cable can ACTUALLY handle.
2. Q: In XBMC, what do I do if my hardware does not support the HD Audio formats ? Does this mean I can't get any surround sound ?
A: Absolutely no problem. Simply go to the Settings --> Hardware --> Audio page in the XBMC settings and disable support for DTS-HD and Dolby TrueHDand make sure you are using the WASAPI filters for all audio output.
That should guarantee that XBMC always extracts the 5.1 Core for DTS and will attempt to play a different audio track to the TrueHDtrack in the case of TrueHD, automatically.
In other words, you should still be able to get discrete DTS or Dolby 5.1 audio (assuming your audio playback hardware at least supports that) even if your audio playback hardware does not support the HD audio formats at all.
NOTE: If you have a movie that has Dolby TrueHD and NOT other audio stream embedded, and your audio playback hardware does not support TrueHD, you will NOT get any audio unfortunately, because in that case no Core audio can be extracted like it can for DTS, and another separate non-HD audio stream is required.
3. Q: When I run MonInfo (Monitor Asset Manager) I can see my devices listed top left and I see an entry for "Real Time ..." but none of those entries return any audio information. Why not ?
A: Good question ! One possible explanation for this is that you have your A/V receiver set to pass thru Audio as well as Video. In that case it is possible that your A/V receiver gets ignored completely during the HDMI hand shaking process and no information specific to audio is returned in the EDID package.
To rectify this, you should check the settings on your receiver itself and see if there is a setting to control pass thru. Make sure you do not have it set to pass thru Audio, ONLY Video. Your receiver should NOT pass thru audio, it should consume the audio itself and play it and ONLY pass thru the video to your display device.
Some of the problems are because people are misinformed about how HD Audio works, some issues are hardware related, and some are driver related.
I thought I'd post this troubleshooting guide as general starting point for anybody dealing with HD audio bitstreaming and trying to understand how to make it work.
The first thing you need to understand about the HD Audio formats is how they are encoded and how and why they are different from normal 5.1 AC-3 and DTS.
DTS-HD Master Audio (MA)
DTS chose to encode their HD format using what is known as a Core+Extension scheme. Essentially the Lossless HD audio stream contains a Lossy DTS 5.1 audio stream at it's core which is wrapped in the additional, extension, audio data. Together the lossy core + the extension provide enough information that it's possible for a decoder to get back to a Lossless reproduction of the audio.
The bonus about this audio scheme (and probably part of the reason why it's more popular than Dolby TrueHD) is that in theory you only ever need to have 1 audio stream in your movie file, the HD one. This is because any older player should be able to extract the 5.1 Core audio from that and only play the normal 5.1 DTS if it cannot handle the full Lossless HD audio track. This backward compatability is by design. Some older players don't quite get this right, but in principle that's what is supposed to happen.
Dolby TrueHD
Unlike DTS, Dolby do NOT employ a Core+Extension packaging scheme for TrueHD. If your audio playback device cannot handle TrueHD then your movie file MUST have an additional audio stream that it can handle available in order for you to get any audio. And in fact, the Blu-Ray standard dictates that any Blu-Ray movie with a Dolby TrueHD audio track MUST also include a normal 5.1 Dolby AC-3 audio track for backward compatibility.
That means that technically speaking, if a movie has a TrueHD track, it should ALWAYS have at least 2 audio streams embedded in it.
And that's pretty much the long and short of what the story is with the HD audio formats, at a high level.
Requirements for bitstreaming HD audio successfully
1. You MUST be bitstreaming over HDMI. You cannot bitstream HD audio over S/PDIF. Period, no exceptions.
2. Your A/V receiver / audio playback device must natively support decoding of the HD audio formats. This may seem obvious, but people will try to send HD audio to devices that don't support it time and again.
3. The audio chipset in the PC that is sending the HD Audio bitstream to your audio playback device of choice must be capable of:
a. Negotiating properly with your audio playback device over HDMI and correctly interpreting the EDID's received over HDMI. Some older audio chipsets had problems with this that caused various issues.
b. Capable of actually bitstreaming HD audio. All modern ones should be as far as I know, but here again it pays to confirm against official specs and not assume things.
4. If you are attempting to play HD Audio from XBMC then:
a. You MUST use the WASAPI audio filters and NOT DirectShow.
b. You must enable HD Audio format support in the System-->Hardware-->Audio page of the XBMC settings.
5. If you are attempting to play HD Audio via another media player besides XBMC then:
a. You must make sure that you have DirectShow, LAV Audio Filters, or both installed.
b. You must make sure that either DirectShow or the LAV Audio Filters have been configured to pass through all the various Audio formats, including the HD Audio formats, depending on which one you are using.
c. You must make sure that whatever Splitter you are using (LAV, Haali, etc.) is invoking the Audio filter library (DirectShow, LAV Audio, etc.) that you think it is. Watch your windows tray to see what gets invoked when you play a movie.
And that's pretty much the high level requirements list for bitstreaming HD Audio.
The 4 most common reasons for HD Audio bitstreaming NOT working
1. The audio playback device of choice actually does NOT support it. Sometimes the spec for the device says it does, but it still actually does not.
2. There is a problem with the drivers for the audio chipset you are using.
3. You somehow have the audio getting output to the wrong Audio output on your PC (S/PDIF instead of HDMI for example). Possibly because you don't have the HDMI out set as the system default.
4. The HDMI cable. Try a different HDMI cable. Even if the HDMI cable works with other devices, still try a different one. There have been cases where people have got Blu-Ray players passing through audio on a cable that does NOT do the same from the PC, but they try a different audio cable and suddenly the problems go away. Sometimes it doesn't even make sense why, but certain cables work and others don't and certain cables work with certain devices. It is always a good idea to try a few different HDMI cables to make sure it's not the cable.
And while we are on the subject of HDMI cables, please note that all HDMI cables are NOT made equal. There different revisions of the cables. In this day and age you need to make sure you have at least an HDMI v1.3 rated cable, and preferably an HDMI v1.4 rated cable.
Common Symptoms of HD Audio not working
1. You simply get no audio. You get video playing fine, but no audio at all.
2. You get video, but it's choppy and stutters, and no audio.
3. You get choppy video and you get choppy audio. I'm not sure about this scenario but I think some people have experienced this.
When attempting to play HD Audio in XBMC via DirectShow instead of WASAPI, you will experience one of the above symptoms, even if your audio playback device (receiver) is capable of playing HD Audio.
How to do low level diagnostics of your playback hardware
During all the troubleshooting that I've done related to HD audio, I came across a very useful utility that is capable of interrogating the equipment you have connected to the HDMI output of your PC and will tell you what that equipment should be able to support in terms of both Video Resolutions / Modes and Audio formats.
You can get it here: http://www.entechtaiwan.com/util/moninfo.shtm - Download link top left of page.
What that app does is it interrogates the chain of hardware connected to the HDMI out of your PC and interprets the EDID data that is sent back to it by your hardware.
The EDID data is a big blob of information that tells you everything about what the connected hardware can support and is capable of (among other things).
On my personal system, about 3/4 of the way down the report that MonInfo generates, I see this:
CE audio data (formats supported)
LPCM 2-channel, 16/20/24 bit depths at 32/44/48/88/96/176/192 kHz
LPCM 8-channel, 16/20/24 bit depths at 32/44/48/88/96/176/192 kHz
AC-3 6-channel, 640k max. bit rate at 32/44/48 kHz
DTS 7-channel, 1536k max. bit rate at 32/44/48/88/96 kHz
SACD 6-channel at 44 kHz
DD+ 8-channel at 44/48 kHz
DVD-A 8-channel at 48/96/192 kHz
DTS-HD 8-channel, 16-bit at 48/96/192 kHz
NOTE: The entry in the list of devices in the top left panel that you want to be looking at is the entry with the words "Real Time ..." in brackets next to it. That is the ONLY entry that seems to return a full combined EDID package that INCLUDES audio information.
You may see various devices in that list that identify your TV or A/V Receiver separately, but those entries may not contain audio information. In my case, I see separate entries for my Samsung TV and my Yamaha A/V Receiver, and neither of those entries contains any audio information. ONLY the entry with "Real Time ..." next to it returns the audio information shown above.
What is particularly useful about this is:
1. If you have your PC connected to your A/V receiver via HDMI, and then your A/V receiver connected to your TV via HDMI (Video passthru), then the EDID package that comes back is effectively a combination of information about BOTH of those devices merged together.
2. The EDID information is low level and direct from the source devices. This means that it should give you a VERY accurate picture of what Audio formats are supported by your hardware, without things like audio chipset drivers confusing the issue.
The bottom line is, if you run this app and it tells you that the connected devices do NOT support DTS-HD MA and / or Dolby TruSurround, then you can be fairly sure you've got compatibility issues with your playback hardware and NOT with your PC at source.
----------------------------------------------------------------------
And that's all there is to it, at a high level.
Most of the issues experienced are either simply bad configuration or outright lack of compatibility of certain hardware involved.
XBMC actually does a very good job of playing HD Audio via WASAPI if all of your hardware is compliant and your drivers are up to date and installed correctly.
HD Audio bitstreaming FAQ
1. Q: Why does the manual for my A/V receiver say that it supports DTS-HD MA and TruSurround, but it refuses to work ?
A: Possible explanations (assuming everything else is set correctly and the receiver just refuses to play HD Audio) are:
a. Although the manual for your receiver says it supports those formats, what it actually means is that it will fall back to the Core track (for DTS) or mandatory AC-3 audio track for TrueHD automatically and will play you 5.1 audio. In other words, it doesn't actually PLAY HD audio, it just supports it from the point of view that it won't play nothing, it will fall back to what it can play.
b. The manual is lying and it does not support those formats.
c. It supports those formats if they are coming off of a Blu-Ray disc (all-in-one Blu-Ray Player / Receiver combo) but NOT if they are sent to it over HDMI as a bitstream.
The MoInfo app I gave a link for earlier in this article will help a lot to clarify if this is the case and determine what the device on the other end of the HDMI cable can ACTUALLY handle.
2. Q: In XBMC, what do I do if my hardware does not support the HD Audio formats ? Does this mean I can't get any surround sound ?
A: Absolutely no problem. Simply go to the Settings --> Hardware --> Audio page in the XBMC settings and disable support for DTS-HD and Dolby TrueHDand make sure you are using the WASAPI filters for all audio output.
That should guarantee that XBMC always extracts the 5.1 Core for DTS and will attempt to play a different audio track to the TrueHDtrack in the case of TrueHD, automatically.
In other words, you should still be able to get discrete DTS or Dolby 5.1 audio (assuming your audio playback hardware at least supports that) even if your audio playback hardware does not support the HD audio formats at all.
NOTE: If you have a movie that has Dolby TrueHD and NOT other audio stream embedded, and your audio playback hardware does not support TrueHD, you will NOT get any audio unfortunately, because in that case no Core audio can be extracted like it can for DTS, and another separate non-HD audio stream is required.
3. Q: When I run MonInfo (Monitor Asset Manager) I can see my devices listed top left and I see an entry for "Real Time ..." but none of those entries return any audio information. Why not ?
A: Good question ! One possible explanation for this is that you have your A/V receiver set to pass thru Audio as well as Video. In that case it is possible that your A/V receiver gets ignored completely during the HDMI hand shaking process and no information specific to audio is returned in the EDID package.
To rectify this, you should check the settings on your receiver itself and see if there is a setting to control pass thru. Make sure you do not have it set to pass thru Audio, ONLY Video. Your receiver should NOT pass thru audio, it should consume the audio itself and play it and ONLY pass thru the video to your display device.