Log in

View Full Version : Dolby Vision + Dolby Atmos (TrueHD) muxing?


Lucius Snow
4th October 2022, 20:47
Hi all,

I'm trying to mux a HEVC Dolby Vision (profile 8.1) file with a Dolby Atmos file (inside a Meridian TrueHD container). Is that possible into a MP4? Should I split the MLP into a .AC3 with EAC3to first?

I found Dolby official muxer but it doesn't seem to support Atmos (except inside Dolby Digital Plus lossy container).

Here are the streams:

General
Complete name : E:\test.hevc
Format : HEVC
Format/Info : High Efficiency Video Coding
File size : 1.17 GiB
Writing library : x265 3.5+11-c8905a745:[Windows][MSVC 1900][64 bit] 10bit
Encoding settings : cpuid=1111039 / frame-threads=6 / numa-pools=64,0 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=3840x2160 / interlace=0 / total-frames=0 / level-idc=61 / high-tier=0 / uhd-bd=0 / ref=5 / no-allow-non-conformance / repeat-headers / annexb / aud / no-eob / no-eos / hrd / info / hash=0 / no-temporal-layers / no-open-gop / min-keyint=1 / keyint=25 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=40 / lookahead-slices=0 / scenecut=40 / no-hist-scenecut / radl=0 / no-splice / no-intra-refresh / ctu=64 / min-cu-size=8 / rect / amp / max-tu-size=32 / tu-inter-depth=3 / tu-intra-depth=3 / limit-tu=0 / rdoq-level=2 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=5 / limit-refs=0 / no-limit-modes / me=3 / subme=4 / merange=57 / temporal-mvp / no-frame-dup / no-hme / weightp / weightb / no-analyze-src-pics / deblock=-1:-1 / sao / no-sao-non-deblock / rd=3 / selective-sao=4 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=1.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=abr / bitrate=80000 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / vbv-maxrate=100000 / vbv-bufsize=60000 / vbv-init=0.9 / min-vbv-fullness=50.0 / max-vbv-fullness=80.0 / ipratio=1.40 / pbratio=1.30 / aq-mode=2 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=1 / overscan-crop=0 / videoformat=5 / range=0 / colorprim=9 / transfer=16 / colormatrix=9 / chromaloc=0 / display-window=0 / master-display=G(8500,39850)B(6550,2300)R(35400,14600)WP(15635,16450)L(10000000,500) / cll=3279,223 / min-luma=64 / max-luma=940 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / hist-threshold=0.03 / no-opt-cu-delta-qp / no-aq-motion / hdr10 / hdr10-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=0 / analysis-save-reuse-level=0 / analysis-load-reuse-level=0 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=1 / refine-ctu-distortion=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-analysis-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei / no-hevc-aq / no-svt / no-field / qp-adaptation-range=1.00 / scenecut-aware-qp=0conformance-window-offsets / right=0 / bottom=0 / decoder-max-rate=0 / no-vbv-live-multi-pass

Video
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : Main 10@L6.1@Main
HDR format : SMPTE ST 2086, HDR10 compatible
Width : 3 840 pixels
Height : 2 160 pixels
Display aspect ratio : 16:9
Frame rate : 25.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 10 bits
Writing library : x265 3.5+11-c8905a745:[Windows][MSVC 1900][64 bit] 10bit
Encoding settings : cpuid=1111039 / frame-threads=6 / numa-pools=64,0 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=3840x2160 / interlace=0 / total-frames=0 / level-idc=61 / high-tier=0 / uhd-bd=0 / ref=5 / no-allow-non-conformance / repeat-headers / annexb / aud / no-eob / no-eos / hrd / info / hash=0 / no-temporal-layers / no-open-gop / min-keyint=1 / keyint=25 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=40 / lookahead-slices=0 / scenecut=40 / no-hist-scenecut / radl=0 / no-splice / no-intra-refresh / ctu=64 / min-cu-size=8 / rect / amp / max-tu-size=32 / tu-inter-depth=3 / tu-intra-depth=3 / limit-tu=0 / rdoq-level=2 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=5 / limit-refs=0 / no-limit-modes / me=3 / subme=4 / merange=57 / temporal-mvp / no-frame-dup / no-hme / weightp / weightb / no-analyze-src-pics / deblock=-1:-1 / sao / no-sao-non-deblock / rd=3 / selective-sao=4 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=1.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=abr / bitrate=80000 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / vbv-maxrate=100000 / vbv-bufsize=60000 / vbv-init=0.9 / min-vbv-fullness=50.0 / max-vbv-fullness=80.0 / ipratio=1.40 / pbratio=1.30 / aq-mode=2 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=1 / overscan-crop=0 / videoformat=5 / range=0 / colorprim=9 / transfer=16 / colormatrix=9 / chromaloc=0 / display-window=0 / master-display=G(8500,39850)B(6550,2300)R(35400,14600)WP(15635,16450)L(10000000,500) / cll=3279,223 / min-luma=64 / max-luma=940 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / hist-threshold=0.03 / no-opt-cu-delta-qp / no-aq-motion / hdr10 / hdr10-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=0 / analysis-save-reuse-level=0 / analysis-load-reuse-level=0 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=1 / refine-ctu-distortion=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-analysis-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei / no-hevc-aq / no-svt / no-field / qp-adaptation-range=1.00 / scenecut-aware-qp=0conformance-window-offsets / right=0 / bottom=0 / decoder-max-rate=0 / no-vbv-live-multi-pass
Color range : Limited
Color primaries : BT.2020
Transfer characteristics : PQ
Matrix coefficients : BT.2020 non-constant
Mastering display color primaries : BT.2020
Mastering display luminance : min: 0.0500 cd/m2, max: 1000 cd/m2
Maximum Content Light Level : 3279 cd/m2
Maximum Frame-Average Light Level : 223 cd/m2

General
Complete name : E:\test.mlp
Format : MLP FBA 16-ch
Format/Info : Meridian Lossless Packing FBA with 16-channel presentation
Commercial name : Dolby TrueHD with Dolby Atmos
File size : 152 MiB
Overall bit rate mode : Variable

Audio
Format : MLP FBA 16-ch
Format/Info : Meridian Lossless Packing FBA with 16-channel presentation
Commercial name : Dolby TrueHD with Dolby Atmos
Bit rate mode : Variable
Maximum bit rate : 6 933 kb/s
Channel(s) : 8 channels
Channel layout : L R C LFE Ls Rs Lb Rb
Sampling rate : 48.0 kHz
Frame rate : 1 200.000 FPS (40 SPF)
Compression mode : Lossless
Number of dynamic objects : 11
Bed channel count : 1 channel
Bed channel configuration : LFE


Thanks.

von Suppé
5th October 2022, 08:15
It is possible. With a short test I found TrueHD+Atmos is preserved in the DV mkv-to-mp4 converter script of -QfG- https://forum.doom9.org/showthread.php?t=183479


Also take a look at the Dolby Vision scripts of RESET_9999 at the MakeMKV forums https://forum.makemkv.com/forum/viewtopic.php?p=127774#p127774
The link is in his signature.

Lucius Snow
5th October 2022, 11:44
Thank you. The MKV->MP4 script works.

Just one question by the way: I noticed that MKVToolNix imports by default the AC3 core as a second audio track. Should I leave it that way or uncheck it? Isn't the AC3 core supposed to be inside the main audio track?

EDIT: Sorry, my MKVToolNix was not up to date. Now it's fine!

von Suppé
5th October 2022, 14:06
Nice you got it working.

As for the embedded AC3 track, for TrueHD (with or without Atmos) it's mandatory on (UHD)BD because of legacy reasons. The mkv container simply is not able to hold such a "double" stream. Should you chose to keep this embedded track, mkv can carry it as a second (or more) audiotrack. It is not mandatory for mkv though.
So it's up to you to keep it or not. Note that it can be handy to have it. It happened to me that a "TrueHD only" file left me having no sound when I played back on non-compliant equipment.

Lucius Snow
5th October 2022, 15:15
Finally, the M2Ts muxing seems the most compliant with Blu-Ray standalone players (from USB key / network).

von Suppé
5th October 2022, 20:14
Yes, it seems so. And for that compliancy chances are you need an embedded AC3 track in TrueHD, even for a standalone m2ts.

FranceBB
6th October 2022, 12:58
Finally, the M2Ts muxing seems the most compliant with Blu-Ray standalone players (from USB key / network).

Out of curiosity, are you using TSMuxer to remux to m2ts or some other muxer?

Lucius Snow
7th October 2022, 12:26
Out of curiosity, are you using TSMuxer to remux to m2ts or some other muxer?
Yes, I used TSMuxer. My Sony UBP-X700 couldn't read MP4 or MKV container with both HEVC Dolby Vision and Dolby Atmos (embedded in Dolby TrueHD) streams. M2TS one is fine.

By the way, I've been told that Dolby doesn't allow TrueHD being used outside Blu-Ray discs. Is that true?

benwaggoner
8th October 2022, 01:50
By the way, I've been told that Dolby doesn't allow TrueHD being used outside Blu-Ray discs. Is that true?
IIRC, Dolby has evangelized its use outside of Blu-Ray. It's a poor fit for streaming as it is intensely VBR and can have multi-Mbps peaks. Blu-ray has lots of extra bandwidth that can't be used to further increase video bitrate, plus tons of disc space so those are rarely issues.

As lossless audio is placebo, there's really not any reason to use TrueHD instead of EAC3 in an overkill bitrate like 640 Kbps in any circumstance where peak or average bitrate is a material concern.

HD MOVIE SOURCE
21st October 2022, 11:32
IIRC, Dolby has evangelized its use outside of Blu-Ray. It's a poor fit for streaming as it is intensely VBR and can have multi-Mbps peaks. Blu-ray has lots of extra bandwidth that can't be used to further increase video bitrate, plus tons of disc space so those are rarely issues.

As lossless audio is placebo, there's really not any reason to use TrueHD instead of EAC3 in an overkill bitrate like 640 Kbps in any circumstance where peak or average bitrate is a material concern.

One thing I'd like to ask you about this, is...why do streaming services lower the volume of their atmos tracks compared to discs? Is this for compression reasons? The dynamic headroom, I'm assuming is lessened, and puts more emphasis on your receiver's volume. I've found that when they do this they seem to lower the volume, but the sub-channel might not be lowered by as much, and bass seems to be slightly louder than the main track, well, anything not in the point 1 track.

I've heard anywhere from 6 to 10 db differences compared to discs. If you're already using a lossy codec why change volume levels too? Do they do this for sound bars or average equipment so it sounds more balanced on those systems? I don't agree with it, but I understand if that is the case.

With that said, I've also heard differences between a roku and the LG apps on an LGC9, so I guess the equipment being used can also play a part in the volume of streaming services too. An example is the rings of power on an LGC9 app is at what I would call reference volume, but on a roku, it was 6 to 8 db lower using the same settings.