[alsa-devel] Direct Stream Digital (DSD/DST, One Bit Audio) HDMI pass-trough
Hello,
I am collecting requirements for implementation a DSD HDMI pass-trough, according to HDMI specs version 1.2 and 1.3a
I am wondering if anyone previously worked on this, or has any interest in this functionality.
Any advice or pointers are gratefully received. Here is my list of the core facts so far:
1. hda_eld.c in current kernel git ignores raw DSD (One Bit Audio) labelled AUDIO_CODING_TYPE_SACD ("SACD" because originally DSD formats where only used commercially in SACDs) and compressed DSD (DST) is labelled AUDIO_CODING_TYPE_DST (1) 2. It is my understanding that apart from "special handling" denoted in "Table 47 CEA Short Audio Descriptor for Audio Format Codes 9 to 13", (eg setting the format code, etc) this should be a reasonably straightforward stream pass-trough (2) 3. Typical use scenario for DSD over HDMI: an DVD/BluRay player that supports SACD (Super Audio CD) outputs a DSD stream over HDMI to a DSD capable receiver. For instance, my Oppo and Sony BluRay players both do that, and all my receivers (Onkyo, Pioneer, Marantz, Yamaha, NAD) have DSD DACs and I can play both stereo and surround music this way, without converting DSD to PCM. There is currently about 30 million DSD capable receivers on the planet, conservatively speaking (Just Onkyo makes 1 million a year, and makes DSD capable ones since 2003) 4. Wanted scenario: play DSD files using DSD enabled players (Linux: MPD, mplayer, VLC, Squeezeboxserver, etc / Windows: FooBar, JRiver, etc) to an HDMI audio card/device on a PC motherboard or add-on video card with HDMI, connected via HDMI cable to a DSD enabled receiver/DAC 5. Note that as far as I know, no proprietary drivers on Windows (ATI/AMD, Nvidia, Intel) support this; It will be the first time a device that is not a SACD player outputs DSD over HDMI, on any OS. I am assuming that this has nothing to do with hardware limitations of the HDMI chips used for video outputs (I could not find any reference for such assumption in any HDMI chips I examined specs for). Therefore, I assume that implementing this has no hardware prerequisites. 6. DSD format general info: http://en.wikipedia.org/wiki/Direct_Stream_Digital http://dsd-guide.com/ http://dsd-guide.com/what-dsd-audio-simple-explanation
Thanks, Andrej Falout
References: (1) https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/p... - Same source file in Alsa GIT tree:
http://git.alsa-project.org/?p=alsa-kernel.git;a=blob;f=sound/pci/hda/hda_el...
(2) CEA Standard PDF, page 66, table 47. HDMI specs version 1.3a, pages 72-73 for DSD(One Bit Audio) and DST audio packet header and body formats
<%2B385%2891%291520436>
On 10/11/14, 1:33 AM, Andrej Falout wrote:
Hello,
I am collecting requirements for implementation a DSD HDMI pass-trough, according to HDMI specs version 1.2 and 1.3a
I am wondering if anyone previously worked on this, or has any interest in this functionality.
Any advice or pointers are gratefully received. Here is my list of the core facts so far:
1. hda_eld.c in current kernel git ignores raw DSD (One Bit Audio) labelled AUDIO_CODING_TYPE_SACD ("SACD" because originally DSD formats where only used commercially in SACDs) and compressed DSD (DST) is labelled AUDIO_CODING_TYPE_DST (1) 2. It is my understanding that apart from "special handling" denoted in "Table 47 CEA Short Audio Descriptor for Audio Format Codes 9 to 13", (eg setting the format code, etc) this should be a reasonably straightforward stream pass-trough (2) 3. Typical use scenario for DSD over HDMI: an DVD/BluRay player that supports SACD (Super Audio CD) outputs a DSD stream over HDMI to a DSD capable receiver. For instance, my Oppo and Sony BluRay players both do that, and all my receivers (Onkyo, Pioneer, Marantz, Yamaha, NAD) have DSD DACs and I can play both stereo and surround music this way, without converting DSD to PCM. There is currently about 30 million DSD capable receivers on the planet, conservatively speaking (Just Onkyo makes 1 million a year, and makes DSD capable ones since 2003) 4. Wanted scenario: play DSD files using DSD enabled players (Linux: MPD, mplayer, VLC, Squeezeboxserver, etc / Windows: FooBar, JRiver, etc) to an HDMI audio card/device on a PC motherboard or add-on video card with HDMI, connected via HDMI cable to a DSD enabled receiver/DAC 5. Note that as far as I know, no proprietary drivers on Windows (ATI/AMD, Nvidia, Intel) support this; It will be the first time a device that is not a SACD player outputs DSD over HDMI, on any OS. I am assuming that this has nothing to do with hardware limitations of the HDMI chips used for video outputs (I could not find any reference for such assumption in any HDMI chips I examined specs for). Therefore, I assume that implementing this has no hardware prerequisites.
HDMI controllers typically don't support DSD in the PC space. It'd be easier to convert to high-res PCM (HBR).
6. DSD format general info: http://en.wikipedia.org/wiki/Direct_Stream_Digital http://dsd-guide.com/ http://dsd-guide.com/what-dsd-audio-simple-explanation
Thanks, Andrej Falout
References: (1) https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/p...
- Same source file in Alsa GIT tree:
http://git.alsa-project.org/?p=alsa-kernel.git;a=blob;f=sound/pci/hda/hda_el...
(2) CEA Standard PDF, page 66, table 47. HDMI specs version 1.3a, pages 72-73 for DSD(One Bit Audio) and DST audio packet header and body formats
<%2B385%2891%291520436> _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
On Tue, Oct 14, 2014 at 11:56 AM, Pierre-Louis Bossart < pierre-louis.bossart@linux.intel.com> wrote:
On 10/11/14, 1:33 AM, Andrej Falout wrote:
Hello, <...snip...> 5. Note that as far as I know, no proprietary drivers on Windows (ATI/AMD, Nvidia, Intel) support this; It will be the first time a device that is not a SACD player outputs DSD over HDMI, on any OS. I am assuming that this has nothing to do with hardware limitations of the HDMI chips used for video outputs (I could not find any reference for such assumption in any HDMI chips I examined specs for). Therefore, I assume that implementing this has no hardware prerequisites.
HDMI controllers typically don't support DSD in the PC space. It'd be easier to convert to high-res PCM (HBR).
Hello Pierre-Louis,
Thank you for your comment.
What are you basing your assessment that "HDMI controllers typically don't support DSD in the PC space"? I looked, but could not find any evidence for this.
Certainly, DSD is not a part of HDMI hardware implementation (such as for example, CEC). From all info I have, DSD is simply multiplexed into HDMI data stream, just as DST-HD or AC3 is.
The goal here is to have a native DSD transport, so conversion to PCM is not an option.
Thanks, Andrej Falout
On 10/13/14, 7:49 PM, Andrej Falout wrote:
On Tue, Oct 14, 2014 at 11:56 AM, Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com mailto:pierre-louis.bossart@linux.intel.com> wrote:
On 10/11/14, 1:33 AM, Andrej Falout wrote: Hello, <...snip...> 5. Note that as far as I know, no proprietary drivers on Windows (ATI/AMD, Nvidia, Intel) support this; It will be the first time a device that is not a SACD player outputs DSD over HDMI, on any OS. I am assuming that this has nothing to do with hardware limitations of the HDMI chips used for video outputs (I could not find any reference for such assumption in any HDMI chips I examined specs for). Therefore, I assume that implementing this has no hardware prerequisites. HDMI controllers typically don't support DSD in the PC space. It'd be easier to convert to high-res PCM (HBR).
Hello Pierre-Louis,
Thank you for your comment.
What are you basing your assessment that "HDMI controllers typically don't support DSD in the PC space"? I looked, but could not find any evidence for this.
I am basing my judgement on first-hand experience with silicon.
Certainly, DSD is not a part of HDMI hardware implementation (such as for example, CEC). From all info I have, DSD is simply multiplexed into HDMI data stream, just as DST-HD or AC3 is.
This multiplexing is typically not implemented - mainly because this isn't a format used outside of niche markets and there was no real format to convey DSD over PCM frames until the DOP format was created in 2012. DTS-HD and AC3 use a PCM format which is rather straightforward to implement but there's quite a few cases where these modes have been dropped. HDMI only requires 48kHz 2ch really. Note that the facts don't mean any negative judgement on quality, i was at AES this week-end where I heard outstanding DSD/DXD recordings. You will have more luck with a USB DAC, there are multiple USB DSD products available.
The goal here is to have a native DSD transport, so conversion to PCM is not an option.
Thanks, Andrej Falout
Hello Pierre-Louis,
On Wed, Oct 15, 2014 at 3:43 AM, Pierre-Louis Bossart < pierre-louis.bossart@linux.intel.com> wrote:
On 10/13/14, 7:49 PM, Andrej Falout wrote:
What are you basing your assessment that "HDMI controllers typically don't support DSD in the PC space"? I looked, but could not find any evidence for this.
I am basing my judgement on first-hand experience with silicon.
Me too :) Absolutely every HDMI related chip I examined specs for and tested, including the cheapest of the cheap ones made as HDMI repeaters for splitters and audio extractors, supported DSD stream passing (Both up and down stream), just as they did all other audio bitstreams.
For example: http://www.mds.com/system/resources/BAhbBlsHOgZmSSIuMjAxMy8xMC8xNi8xNy8yOS80...
Can you please point out a specification or other document that say otherwise?
Certainly, DSD is not a part of HDMI hardware implementation (such as
for example, CEC). From all info I have, DSD is simply multiplexed into HDMI data stream, just as DST-HD or AC3 is.
This multiplexing is typically not implemented - mainly because this isn't a format used outside of niche markets
It seems that you are talking about coding/decoding, not bitstream multiplexing? Same TMDS stream multiplexing is used for all audio streams in HDMI - weather native (PCM/DSD) or encoded (AC3, DTS, ...) The only real difference that I can see is the stream setup as described in my OP ("Table 47 CEA Short Audio Descriptor for Audio Format Codes 9 to 13", (eg setting the format code, bittness, etc))
and there was no real format to convey DSD over PCM frames until the DOP format was created in 2012.
Again, I am talking about native DSD formats/streams, not DoP - which is in essence PCM. HDMI specs do not know or need DoP. HDMI is capable of native DSD transfer since version 1.2. See point #5 in my OP.
DTS-HD and AC3 use a PCM format which is rather straightforward to implement but there's quite a few cases where these modes have been dropped.
As you say, these are rather straightforward to implement, as evident from the HDMI specification which describes the stream setup. Same specification also described DSD stream setup, which is is essence exactly the same, just uses the different identifiers. (CEA Standard PDF, page 66, table 47. HDMI specs version 1.3a, pages 72-73 for DSD(One Bit Audio) and DST audio packet header and body formats)
Can you point out a documented case where "these modes have been dropped"?
HDMI only requires 48kHz 2ch really.
Even the HDMI version 1 requires "8 channel LPCM http://en.wikipedia.org/wiki/Linear_pulse_code_modulation, 192 kHz http://en.wikipedia.org/wiki/Hertz, 24-bit audio capability" : http://en.wikipedia.org/wiki/HDMI#Version_comparison
Note that the facts don't mean any negative judgement on quality, i was at AES this week-end where I heard outstanding DSD/DXD recordings. You will have more luck with a USB DAC, there are multiple USB DSD products available.
There is about 30 million DSD capable DACs in the world today, conservatively speaking, most of them multi-channel capable (See point #3 in my OP). I appreciate that there are a few USB DSD DACs out there too, and even 2 (two) multi-channel models. ;)
Thanks, Andrej Falout
Andrej Falout wrote:
On Wed, Oct 15, 2014 at 3:43 AM, Pierre-Louis Bossart wrote:
On 10/13/14, 7:49 PM, Andrej Falout wrote:
What are you basing your assessment that "HDMI controllers typically don't support DSD in the PC space"? I looked, but could not find any evidence for this.
I am basing my judgement on first-hand experience with silicon.
Me too :) Absolutely every HDMI related chip I examined specs for and tested, including the cheapest of the cheap ones made as HDMI repeaters for splitters and audio extractors, supported DSD stream passing (Both up and down stream), just as they did all other audio bitstreams.
Because they just need to copy the packets from the input to the output.
Can you please point out a specification or other document that say otherwise?
For PCs, all HDMI outputs are handled with HDA controllers. The HDA specification does not mention DSD. AMD's HDA verb documentation has the following list of audio formats codes: 0: reserved 1: LPCM 2: AC-3 3: MPEG1 (Layers 1 and 2) 4: MP3 (MPEG1 Layer 3) 5: MPEG2 (Multichannel) 6: AAC 7: DTS 8: ATRAC 9: Reserved 10: Dolby Digital + 11: DTS-HD 12: MAT/MLP (Dolby True HD) 13: Reserved 14: WMA Pro
Would DSD be one of the reserved ones?
As you say, these are rather straightforward to implement
... if one bothers to implement it.
Same specification also described DSD stream setup, which is is essence exactly the same, just uses the different identifiers.
So the hardware needs some mechanism to output these identifiers.
HDMI only requires 48kHz 2ch really.
Even the HDMI version 1 requires "8 channel LPCM, 192 kHz, 24-bit audio capability": http://en.wikipedia.org/wiki/HDMI#Version_comparison
That page lists the version where a feature was introduced; these are not requirements.
The HDMI specification says: | If an HDMI Source supports any HDMI audio transmission, then it shall | support 2 channel L-PCM ..., with either 32kHz, 44.1kHz or 48kHz | sampling rate and a sample size of 16 bits or more. [...] | An HDMI Sink that is capable of accepting any audio format is required | to accept two channel ... L-PCM audio at sample rates of 32kHz, | 44.1kHz, and 48kHz.
Regards, Clemens
On 10/14/14, 10:30 PM, Andrej Falout wrote:
Hello Pierre-Louis,
On Wed, Oct 15, 2014 at 3:43 AM, Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com mailto:pierre-louis.bossart@linux.intel.com> wrote:
On 10/13/14, 7:49 PM, Andrej Falout wrote: What are you basing your assessment that "HDMI controllers typically don't support DSD in the PC space"? I looked, but could not find any evidence for this. I am basing my judgement on first-hand experience with silicon.
Me too :) Absolutely every HDMI related chip I examined specs for and tested, including the cheapest of the cheap ones made as HDMI repeaters for splitters and audio extractors, supported DSD stream passing (Both up and down stream), just as they did all other audio bitstreams.
For example: http://www.mds.com/system/resources/BAhbBlsHOgZmSSIuMjAxMy8xMC8xNi8xNy8yOS80...
Can you please point out a specification or other document that say otherwise?
You are not looking at the right specifications. You need to look at HDMI interfaces for PCs, and I maintain that most of them don't support DSD.
Certainly, DSD is not a part of HDMI hardware implementation (such as for example, CEC). From all info I have, DSD is simply multiplexed into HDMI data stream, just as DST-HD or AC3 is. This multiplexing is typically not implemented - mainly because this isn't a format used outside of niche markets
It seems that you are talking about coding/decoding, not bitstream multiplexing? Same TMDS stream multiplexing is used for all audio streams in HDMI - weather native (PCM/DSD) or encoded (AC3, DTS, ...) The only real difference that I can see is the stream setup as described in my OP ("Table 47 CEA Short Audio Descriptor for Audio Format Codes 9 to 13", (eg setting the format code, bittness, etc))
and there was no real format to convey DSD over PCM frames until the DOP format was created in 2012.
Again, I am talking about native DSD formats/streams, not DoP - which is in essence PCM. HDMI specs do not know or need DoP. HDMI is capable of native DSD transfer since version 1.2. See point #5 in my OP.
DTS-HD and AC3 use a PCM format which is rather straightforward to implement but there's quite a few cases where these modes have been dropped.
As you say, these are rather straightforward to implement, as evident from the HDMI specification which describes the stream setup. Same specification also described DSD stream setup, which is is essence exactly the same, just uses the different identifiers. (CEA Standard PDF, page 66, table 47. HDMI specs version 1.3a, pages 72-73 for DSD(One Bit Audio) and DST audio packet header and body formats)
Can you point out a documented case where "these modes have been dropped"?
HDMI only requires 48kHz 2ch really.
Even the HDMI version 1 requires "8 channel LPCM http://en.wikipedia.org/wiki/Linear_pulse_code_modulation, 192 kHz http://en.wikipedia.org/wiki/Hertz, 24-bit audio capability" : http://en.wikipedia.org/wiki/HDMI#Version_comparison
Wrong. See the HDMI spec, not Wikipedia. The only requirement is: If an HDMI Source supports any HDMI audio transmission, then it shall support 2 channel L-PCM (using an IEC 60958 Subpacket structure), with either 32kHz, 44.1kHz or 48kHz sampling rate and a sample size of 16 bits or more.
Additional rates are not required and often not implemented: An HDMI Source is permitted to transmit L-PCM audio data at sample rates of 32kHz, 44.1kHz,48kHz, 88.2kHz, 96kHz, 176.4kHz or 192kHz.
DSD is equally optional: A Source may transmit One Bit Audio at an fS (1/64th of the bit rate) of 32kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz or 192kHz. Any Source capable of supporting One Bit Audio should support an fS of 44.1kHz, corresponding to a bit rate of 2.8224MHz.
May and should are not mandatory statements.
Note that the facts don't mean any negative judgement on quality, i was at AES this week-end where I heard outstanding DSD/DXD recordings. You will have more luck with a USB DAC, there are multiple USB DSD products available.
There is about 30 million DSD capable DACs in the world today, conservatively speaking, most of them multi-channel capable (See point #3 in my OP). I appreciate that there are a few USB DSD DACs out there too, and even 2 (two) multi-channel models. ;)
I wish you luck. over and out.
Thanks, Andrej Falout
Hello,
15.10.2014, 06:30, Andrej Falout kirjoitti:
On Wed, Oct 15, 2014 at 3:43 AM, Pierre-Louis Bossart < pierre-louis.bossart@linux.intel.com> wrote:
DTS-HD and AC3 use a PCM format which is rather straightforward to implement but there's quite a few cases where these modes have been dropped.
As you say, these are rather straightforward to implement, as evident from the HDMI specification which describes the stream setup. Same specification also described DSD stream setup, which is is essence exactly the same, just uses the different identifiers. (CEA Standard PDF, page 66, table 47. HDMI specs version 1.3a, pages 72-73 for DSD(One Bit Audio) and DST audio packet header and body formats)
As you can see from the HDMI spec, there are 4 different types of audio packets:
- Audio Sample Packet, used by: * PCM audio * most passthrough formats (AC-3, DTS, E-AC-3, etc.)
- High Bitrate (HBR) Audio Stream Packet, used by: * over-1.5Mbps passthrough formats, i.e. DTS HD and Dolby TrueHD, sometimes called "HD Audio passthrough".
- One Bit Audio Sample Packet - DST Audio Packet
Can you point out a documented case where "these modes have been dropped"?
Of the above 4 packet types, the currently available PC HDMI audio controllers usually only support the first two.
For example, Intel and NVIDIA HDMI audio hardware follow the Intel HD Audio specification, which only knows of the first two types (7.3.3.13, Table 89 - "EPT Values"): http://www.intel.com/content/www/us/en/standards/high-definition-audio-speci...
participants (4)
-
Andrej Falout
-
Anssi Hannula
-
Clemens Ladisch
-
Pierre-Louis Bossart