MythTV trunk from December 5th 2010 supports HD audio passthrough
Those are preliminary information on how to enable HD audio passthrough over HDMI (currenly E-AC3, DTS-HD Hi-Res, TrueHD and DTS-HD MA).
Not all video cards are equals. You need a video card with built-in audio chipset, and hdmi port. Additionally, for TrueHD and DTS-HD MA it has support to HBR (high bit-rate).
Dolby Digital Plus (E-AC3) and DTS-HD Hi-Res
To support DD+ and DTS-HD HR ; your audio card must support stereo output at 192kHz.
Audio/Video cards known to support it:
- ION and 9400M IGP : provided you use a kernel newer than 2.6.32 (it is not supported in kernel 2.6.31 and earlier)
- nVidia GT2xx
- nVidia GT4xx
- nVidia GT5xx
- Some Intel HDMI graphics chipsets (in particular IbexPeak (0x80862804), CougarPoint)
Audio/Video cards known not to support it
- Most ATI card (many only support 48kHz)
- Intel HDMI graphics chipsets Cantiga, Eaglelake
To check for actual support, run mythfrontend and go into Setup -> Audio. If the E-AC3/DTS-HD flag is enabled, it is likely that your audio card supports it. Remember you must use an HDMI connection. Optical or coaxial SPDIF will *not* work.
TrueHD and DTS-HD MA support
For your audio card to support loss-less HD audio passthrough (TrueHD and DTS-HD MA), your audio card has to support HBR You can check DTS-HD/TrueHD support on Linux by checking for "HBR" text in "Pincap" line in /proc/asound/cardX/codec#Y
Chips known *not* to support HBR:
- ION first generation
- nVidia 9400M IGP
- nVidia 8xxx, 9xxx
Chips known to support HBR:
- nVidia GT4xx
- nVidia GT5xx
Though not officially supported, HBR works to some extent with nVidia GT2xx ; your mileage may vary. It is highly dependent of the combination between audio processor/amplifier and video card.
You'll need a recent linux kernel (>= 2.6.36) that contains the required ALSA drivers.
Alternatively get the latest ALSA driver from the git repository
git clone git://git.alsa-project.org/alsa-driver.git alsa-driver git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror cd alsa-driver ./gitcompile sudo make install
Alsa library 1.0.23 is the required minimum. However if you had to mess with the device name to get basic audio working, it is strongly recommended you get a new version as otherwise you will likely have to mess with alsa configuration file.
git clone git://git.alsa-project.org/alsa-lib.git alsa-lib cd alsa-lib ./git-compile sudo make install
Checking your TV / Amplifier / Audio Processor capabilities
For HDA Intel audio device (used pretty much for all HDMI devices), recent version of linux kernel or alsa, it is usually possible to retrieve what your audio processing capabilities are:
The file is located in /proc/asound/cardX/eld#Y.0 (where X is the card number, and Y is the device number starting from 0. So if aplay -l shows Card 0, device 3 as being the first device listed you need to check /proc/asound/card0/eld#0.0).
eld standard for "EDID like Data" and would look like:
monitor_present 1 eld_valid 1 monitor_name SP32 connection_type HDMI eld_version [0x2] CEA-861D or below edid_version [0x3] CEA-861-B, C or D manufacture_id 0x294d product_id 0x214f port_id 0x10000 support_hdcp 0 support_ai 0 audio_sync_delay 0 speakers [0x7f] FL/FR LFE FC RL/RR RC FLC/FRC RLC/RRC sad_count 6 sad0_coding_type [0x1] LPCM sad0_channels 8 sad0_rates [0x1ee0] 44100 48000 88200 176400 192000 384000 sad0_bits [0xe0000] 16 20 24 sad1_coding_type [0x2] AC-3 sad1_channels 6 sad1_rates [0x1ee0] 44100 48000 88200 176400 192000 384000 sad1_max_bitrate 1536000 sad2_coding_type [0x7] DTS sad2_channels 6 sad2_rates [0x1ee0] 44100 48000 88200 176400 192000 384000 sad2_max_bitrate 1536000 sad3_coding_type [0xb] DTS-HD sad3_channels 8 sad3_rates [0x1ee0] 44100 48000 88200 176400 192000 384000 sad4_coding_type [0xa] E-AC-3/DD+ (Dolby Digital Plus) sad4_channels 8 sad4_rates [0x1ee0] 44100 48000 88200 176400 192000 384000 sad5_coding_type [0xc] MLP (Dolby TrueHD) sad5_channels 8 sad5_rates [0x1ee0] 44100 48000 88200 176400 192000 384000
This indicates that your amplifier supports 8 channels LPCM, AC3, DTS, DTS-HD, E-AC3 and TrueHD.
Summary of working / non-working know solution
Thank you for contributing with the information below.
- eld indicates if the eld#Y.0 file exists in /proc/asound/cardX exists
- HBR: is a flag that would appear in the eld file above. Put - if eld doesn't exist, or HBR isn't mentioed
- LPCM: If eld exists, enter the number of channels in the LPCM section. If the eld file doesn't exist, enter the maximum number of channels as reported by alsa. You can get this information running mythfrontend with -v audio.
|Audio Card||Amplifier/Processor||Linux Version||Alsa Version||eld file present||HBR||AC3||DTS||LPCM (number of channels)||DTS-HD||E-AC3||TrueHD|
|nVidia 9400M||Yamaha SP-4000 soundbar||2.6.32||1.0.23||-||-||X||X||Shows 8, but only 2 works||-||-||-|
|nVidia GT220||Yamaha SP-4000 soundbar||2.6.32||1.0.23||X||X||X||X||2||-||-||-|
|nVidia GT430||Primare SP-32||2.6.32||Alsa git as of 20101214||X||X||X||X||8||X||X||X|
|nVidia GT220||Primare SP-32||2.6.32||Alsa git as of 20101214||X||X||X||X||8||(< 6.411Mbit/s only)||X||X|
|nVidia GT430||Onkyo TX-NR807||2.6.30||Alsa git as of 20101119||X||X||X||X||8||X||X||X|