• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Atmos finally decoded in PC/Mac

How to get HDMI out bitstream audio is last step. If anybody can get dolby atmos bitstream from HDMI out MAT. Realtime decode to multichannels pcm is not an issue.
 
  • Like
Reactions: EJ3
I don't know why you could not use it to watch Netflix inasmuch as you can get Netflix Atmos on their desktop app. The larger problem is how you get the decoded Dolby Atmos PCM to a multichannel DAC, and what DAC multi channel (other than a pair daisy-chained Octo DAC 8s) is able to decode 16 channels of the PCM digital stream? Can USB carry 16 PCM channels? I know that HDMI 2.0 will only carry 8 PCM channels.
Simple calculations show USB2 can easily handle several hundred channels of 44.1KHz 16 bit mono audio.

USB2: 480Mbits/sec, per https://en.m.wikipedia.org/wiki/USB
480Mbits/sec ÷ 8 = 60Mbytes/sec

44.1KHz 16 bit data rate (1 channel) = 88.2 Kbytes/sec

60 Mbytes/sec ÷ 88.2 Kbytes/sec = 680 mono channels at 44.1K 16bit (theoretical max, assuming no other data on the USB port)
FWIW
 
Last edited:
Simple calculations show USB2 can easily handle several hundred channels of 44.1KHz 16 bit mono audio.

USB2: 480Mbits/sec, per https://en.m.wikipedia.org/wiki/USB
480Mbits/sec ÷ 8 = 60Mbytes/sec

44.1KHz 16 bit data rate (1 channel) = 88.2 Kbytes/sec

60 Mbytes/sec ÷ 88.2 Kbytes/sec = 680 mono channels at 44.1K 16bit (theoretical max, assuming no other data on the USB port)
FWIW
USB audio is passed via isochronous transfer. One-transaction isochronous stream can use max. 1024 bytes per USB2 125us microframe, i.e. 8.2 MB/s. That corresponds to 92 channels of 44.1/16 adaptive mode (i.e. no extra room left for asynchronous adjustments). At most 3 transactions per packet can be used, i.e. 92 x 3 = 276 channels, but very few USB audio devices support multiple transactions, neither do some host operating systems, i.e. iOS.
 
Hi VoidX:
where can download cavernpipe for testing?
Because no software supports it yet, you have to build it from the source code. This is currently made for developers to allow integration in their software.
 
Last edited:
I am using MPC-HC (clsid2 release) to play 7.1.4 Dolby sources pre-decoded by cavernize for now more than one year. I have two cascaded Marian Seraph8 mk2 PCI soundcard in my PC to have 16 analog out, so in theory I can use this system to play 9.1.6 dolby audio streams. Marian has replaced recently the Seraph8 mk2 by the clara A model:
These cards process internaly 32 audio channels. For the end-user, the only thing different between the Clara A and the Seraph8 mk2 is the external TDM SyncBus that provide 16 channels instead of 8 (x2 if bidir) to exchange data between the cards and synchronize them.

These cards have a multi-client driver that supports ASIO and WDM audio/WASAPI clients in the same session. Thus, in the control pannel of the soundcard n°1, I have defined 12 channels for the multichannels Wdm Audio (channels 17 to 28) to play 7.1.4 audio tracks and MPC-HC is configured to use WASAPI on the wdm audio.

5k2j.png


Then, with the mixer of the soundcard n°1, the audio stream generated by MPC-HC is sent to a DAW working in ASIO (in and out) that processes the sound (bass managment, filtering, delay etc.). For this, I use the free version of Usine Hollyhook that is a sort of audio DSP easy to program with a graphical language (it is also a VST host):

The 12 Usine Out (7.1.4) are dispatched to the two soundcards Analog Out using their routing panels and also the external TDM syncBus. In fact, Usine generates more than 10 outs because I also use it to manage several subwoofers. Of course, the use of Usine is not necessary if no audio post processing is needed or if another approach is used to post process the multichannel wdm.

To play a movie with a 7.1.4 audio track in MPC-HC, I use cavernize to decode the Dolby track in a multichannel wav. Then I compress this wav using either wavpack (lossless) or opus (lossy) to obtain a 12-channel predecoded file (.wv or .opus) and I integrate it in the mkv container with MKVToolNix. MPC-HC is able to play multichannels wavepack or opus tracks with no problem. In order to have a correct matching with the surround speakers when the decoding in Cavernize is set to 5.1.4 instead of 7.1.4, I need to add two empty channels at the right place before the compression with wavpack or opus in order to obtain a "false" 12 channels. ffmpeg is able to do this easily.

Of course, this is a lot a processing (that can be automated) and I am waiting like many a real-time dolby atmos (eac3 and truehd) decoder that can be integrated easily in a player like MPC-HC.

I can provide all my wdm settings (snapshots of the soundcards control pannel and MPC-HC options) to VoidX if he wants to document them on the help of Cavernize. Of course, these settings are dependent of how the driver of these soundcards manages the multichannel wdm.
 
Last edited:
Lossless compression with wavepack for the 12 channels (7.1.4) of a 24-bit multichannel wav (with 14 logical CPU threads):
wavpack --pre-quantize=20 --threads=14 -h -x4 in.wav
=> generate in.wv with a bit depth of 20 for each channel (more than enough for an atmos trueHD track)

Lossy compression with opus for more than 8 channels :
ffmpeg -i in.wav -codec:a libopus -mapping_family 255 -b:a xxxxxxx out.opus
where xxxxxxx is the total bitrate for all channels. For instance, if the bitrate is 128 Kb/sec/ch then xxxxxxx = 128 * 12 = 1536000 for 12 channels.
 
Last edited:
Lossy compression with opus for more than 8 channels :
ffmpeg -i in.wav -codec:a libopus -mapping_family 255 -b:a xxxxxxx out.opus
where xxxxxxx is the total bitrate for all channels. For instance, if the bitrate is 128 Kb/sec/ch then xxxxxxx = 128 * 12 = 1536000 for 12 channels.
Keep in mind that some players (like VLC) treat mapping family 255 poorly and don't respect the standard channel order. Same goes for Dune media players with stripped metadata WAVs.
 
Thanks for the info. FYI, I only use MPC-HC and the channels assignment/order can be forced in it with a matrix representation in a given option. I had to do it, because for 5.1(.4) tracks, I dislike to have the surrounds on the back channels (instead of the side channels) and unfortunately MPC-HC behaves like this by defaut with the LAV Audio filter. It was a little tricky, but finally I have the assigment I want for my HT setup for both 7.1(.4) and 5.1(.4) ...
 
Last edited:
Thanks for the info. FYI, I only use MPC-HC and the channels assignment/order can be forced in it with a matrix representation in a given option. I had to do it, because for 5.1(.4) tracks, I dislike to have the surrounds on the back channels (instead of the side channels) and unfortunately MPC-HC behaves like this by defaut with the LAV Audio filter. It was a little tricky, but finally I have the assigment I want for my HT setup for both 7.1(.4) and 5.1(.4) ...
Does MPC-HC use some sort of add-on component like Foobar2000 (Matrix Mixer) to map the channels?
 
And the "MPC Audio Renderer" must be chosen and configured exactly like this to have some sounds with a Marian soundcard (DAW Out Multichannel, Exclusive WASAPI mode, "Use system layout channels" unchecked, "Do not check format support" checked, "Release device when idle" unckecked (necessary to have sounds after the sequence play/stop/play again)):

3tnu.png
 
Back
Top Bottom