View Full Version : [DDVT Tool] Dolby Vision RPU Demuxing / Injecting / Editing.
terrorindeed
29th August 2022, 03:04
Hey everyone. I’m new to using the tool. I’ve completed about 7 hybrids from various films and episodes.
Several of the files have the flickering issue. I began to investigate, and found that the frames do not match. One example is
Jungle Cruise 2021 HDR EVO 183377 frames (2 hrs 7 min)
Jungle Cruise 2021 DV FLUX 125474 frames (2 hrs 7 min).
What am I supposed to do here to make them match and have error free DV/HDR10 fallback? Thank you !! Awesome tool by the way :)
GodzilaAvenger
29th August 2022, 03:20
You have to make sure the frames in your RPU match the frames in your BL by setting a positive or negative delay in the injector tool. To find out what the delay should be either compare the frame numbers of one particular frame in the two sources using a tool like djv, or use the frameinfo tool on the RPU file and enter "ALL" to get all the scene cuts, then match those to the corresponding scene cuts in the film. This only affects DV, your HDR playback should be fine either way since that only concerns the base layer.
BTW are you sure about those frame numbers? The second one is 60000 frames less than the first!
DiscoD
29th August 2022, 04:34
You can use this (https://drive.google.com/file/d/1Dop-5nwyXUHfCjPMtf5r-IbpHbTwVf11/view?usp=sharing) one I've made for your test.
even if it fallback on some players to HDR10 compatibility is compromised because DV5 should not fallback to HDR as noted by this chart with the base layer...
https://pbs.twimg.com/media/DvkzVMBWkAAo2fM.jpg
AgentXXL
29th August 2022, 04:47
Yes there is, but I never wanted to make this script public.
I called this L6 Demuxer and can extract these RPUs. I post the script here, just create a cmd, save the content there and use this script just like the others.
It is recommended to mux this RPU with L6 Function in INJECTOR.
You're a god at script making! Thank you so much. If you accept donations via Paypal, DM me.
von Suppé
29th August 2022, 08:16
You can use this file (https://drive.google.com/file/d/1Dop-5nwyXUHfCjPMtf5r-IbpHbTwVf11/view?usp=sharing) I've made for your test.
Quite some file you conjured up, GA :)
FYI Dolby Vision playback is triggered on my player, but the picture is buggered up. The colors show purple/green. Same like when you try to playback "genuine" P5 on a pc. Like it can't deal with the specific colorspace. Even if I disable DV playback and force my player to HDR output, purple/green remains.
I tried to strip RPU. When dropping the file on DDVT_REMOVER I get "Profile 5 cannot be removed!"
-QfG-
29th August 2022, 11:31
I tried to strip RPU. When dropping the file on DDVT_REMOVER I get "Profile 5 cannot be removed!"
The remover doesn't check, that this RPU is muxed in a HDR BT.2020 Bitstream. You can't remove RPUs from P5 Base Layers, it's a security feature from me ;).
If you accept donations via Paypal, DM me.
If you will donate this work, make a donation to quietvoid. Without him this scripts here never exists.
terrorindeed
29th August 2022, 16:37
You have to make sure the frames in your RPU match the frames in your BL by setting a positive or negative delay in the injector tool. To find out what the delay should be either compare the frame numbers of one particular frame in the two sources using a tool like djv, or use the frameinfo tool on the RPU file and enter "ALL" to get all the scene cuts, then match those to the corresponding scene cuts in the film. This only affects DV, your HDR playback should be fine either way since that only concerns the base layer.
BTW are you sure about those frame numbers? The second one is 60000 frames less than the first!
Im an idiot. I was using the wrong rpu.bin, as far as I can tell. Do you guys delete the rpu.bin after each use? I've been leaving it in the BL-RPU extracted folder, very weird.
von Suppé
29th August 2022, 16:38
The remover doesn't check, that this RPU is muxed in a HDR BT.2020 Bitstream. You can't remove RPUs from P5 Base Layers, it's a security feature from me ;).
Ah, ok.
So I removed RPU with dovitool and the result played with proper colors, like expected.
Of course I also wanted to see what removing RPU from "real" P5 IPTPQc2 video would yield. Playback showed purple/green colors.
I think that Dolby Vision hardware only accepts proper, spec-compliant DV videos. Which makes sense of course.
von Suppé
29th August 2022, 16:51
Do you guys delete the rpu.bin after each use?.
I do. But not before I'm satisfied with my end-result playing as it should.
RPU can always be extracted/edited again, if need be in the future.
GodzilaAvenger
29th August 2022, 17:19
Quite some file you conjured up, GA :)
FYI Dolby Vision playback is triggered on my player, but the picture is buggered up. The colors show purple/green. Same like when you try to playback "genuine" P5 on a pc. Like it can't deal with the specific colorspace. Even if I disable DV playback and force my player to HDR output, purple/green remains.
I tried to strip RPU. When dropping the file on DDVT_REMOVER I get "Profile 5 cannot be removed!"
It was the shortest I had on hand :)
Interesting, so it seems that my TV completely ignores the RPU and just plays back the BL, but your player recognizes the RPU and tries to interpret the BT.2020 colorspace as Profile 5, which results in those weird colors. Thanks for checking it out!
AgentXXL
29th August 2022, 23:43
If you will donate this work, make a donation to quietvoid. Without him this scripts here never exists.
I'd be more than happy to donate to both of you. Just haven't seen a donation link anywhere.
And again, thank you for the L6 Demuxer script. Works as expected, and I am using the Match L6 option in Injector with successful hybrids as a result.
speedy
30th August 2022, 00:49
I'm not sure of the process surrounding 8.4 but here is a good list put together about playback device compatibility...
https://docs.google.com/spreadsheets/d/1jBIGF8XTVi9VmDBZ8a5hEyongYMCDlUiLHU9n1f_S74/edit#gid=427220017
maybe 8.4 is working for people more recently if but this list is updated pretty often.
The RPU is not Profile 8.1,8.2 or 8.4 the RPU is every times Profile 8. If you mux the RPU now in:
HDR Stream you have Profile 8.1
SDR Stream you have Profile 8.2
HLG Stream you have Profile 8.4
So you need an HLG Base layer and mux the Profile 8 RPU in it. I think this works.
Profile 5 is another thing, you have the IPT (IPTPQc2 (https://en.wikipedia.org/wiki/ICtCp#IPTPQc2)) colorspace not the BT.2020 there.
Therefore, no fallback to HDR with Profile 5, because no BT.2020 colorspace are used.
Does that mean I would need to use something like wswartzendruber/hlg-tools (https://forum.doom9.org/showthread.php?t=182499) to convert to convert the HDR10 base stream to an HLG base stream?
Would I then convert the Profile 7 8.1 RPU to 8.4?
-QfG-
31st August 2022, 08:52
Yes, i think this works, you must simply test this. Simply mux the P8 RPU frum the 8.1 video int the HLG Stream.
quietvoid
31st August 2022, 11:49
There's no point in attempting to convert to profile 8.4 as Apple devices don't support the dynamic metadata.
The only way seems to be tricking the device into thinking the file is profile 5, there's some script on MakeMKV for that.
speedy
1st September 2022, 06:26
There's no point in attempting to convert to profile 8.4 as Apple devices don't support the dynamic metadata.
The only way seems to be tricking the device into thinking the file is profile 5, there's some script on MakeMKV for that.
Does that work with MKV files too?
Link?
von Suppé
1st September 2022, 10:26
Unless I'm mistaken, quietvoid is refering to the scripts created by RESET_9999. You'll find the link "DoVi Scripts" in his signature.
Major Dolby Vision thread at MakeMKV: https://forum.makemkv.com/forum/viewtopic.php?f=12&t=18602&start=7290
quietvoid
1st September 2022, 12:50
A more in-depth guide also exists: https://www.avsforum.com/threads/apple-dolby-vision.3252865/
I think it requires MP4 files as final video.
alexflin
1st September 2022, 13:47
It's possible to extract the DoVi layer from a mkv to burn a bluray? I don't see the option in the script
-QfG-
2nd September 2022, 10:44
It's possible to extract the DoVi layer from a mkv to burn a bluray? I don't see the option in the script
Yes it is. But only if the MKV includes a profile 7 single layer HEVC file.
if you have a "REMUX" of an UHD, simply use the Demuxer and check the Options for Saving BL and EL (you can turn off RPU extracting, not needed for this operation). now you can Build a UHD with this, for example with TS-Muxer.
There's no point in attempting to convert to profile 8.4 as Apple devices don't support the dynamic metadata.
Thanks for this info quietvoid :goodpost:
I can add Apple DoVi Injection in future Updates.
alexflin
2nd September 2022, 11:34
Yes it is. But only if the MKV includes a profile 7 single layer HEVC file.
if you have a "REMUX" of an UHD, simply use the Demuxer and check the Options for Saving BL and EL (you can turn off RPU extracting, not needed for this operation). now you can Build a UHD with this, for example with TS-Muxer.
Thanks for this info quietvoid :goodpost:
I can add Apple DoVi Injection in future Updates.
Ok, thanks for the answer, I thought that it was possible to build a Bluray from a profile 8 or 5 also, but now I see that is not possible.
speedy
2nd September 2022, 19:02
I can add Apple DoVi Injection in future Updates.
That would be awesome!
Could you do this for both MKV and MP4 containers so we can test both and use MKV in the future if that ends up working?
Thank you!
speedy
4th September 2022, 21:02
There's no point in attempting to convert to profile 8.4 as Apple devices don't support the dynamic metadata.
The only way seems to be tricking the device into thinking the file is profile 5, there's some script on MakeMKV for that.
Unless I'm mistaken, quietvoid is refering to the scripts created by RESET_9999. You'll find the link "DoVi Scripts" in his signature.
Major Dolby Vision thread at MakeMKV: https://forum.makemkv.com/forum/viewtopic.php?f=12&t=18602&start=7290
A more in-depth guide also exists: https://www.avsforum.com/threads/apple-dolby-vision.3252865/
I think it requires MP4 files as final video.
I just read through those posts and RESET_9999's scripts but I still don't understand.
Could someone clarify how I'd get started converting either a Profile 7 or Profile 8.1 file to this fake Profile 5?
Also, am I correct in understanding that these Profile 5 files are essentially using Rec2020 colorspace and the same RPU metadata as a Profile 8.1 file?
Thanks
von Suppé
5th September 2022, 17:45
Could someone clarify how I'd get started converting either a Profile 7 or Profile 8.1 file to this fake Profile 5?
Why don't you just give it a go? I'm not familiar with Apple devices, but seeing the script, I suggest trying to start with 7 (MP4_MUXER Workflows). Followed by 4 (Apple iOS compatible MP4).
From there choose further, depending on what kind of source-file, and output wishes.
Balling
7th September 2022, 11:21
https://forum.makemkv.com/forum/viewtopic.php?p=122442#p122442
https://1drv.ms/v/s!Ahh4FiB9hIuT-EK3sg5uA-Ab3amj?e=RKiQG4
How was this created? Was it some real Dolby Vision HLG show and someone just delayed RPU to check the applying of it?
Does BBC already Dopby vision hlg on satellites?
panni
7th September 2022, 22:43
Hey, I'm trying to inject an RPU into a HDR file which has a VBR video stream. After injecting, the resulting MKV file has the video stream as CBR and the audio and video is super async.
Any ideas on how to fix this? Thanks!
GodzilaAvenger
7th September 2022, 23:39
Is there a way to add delay (positive or negative) to HDR10+ metadata, similar to what can be done for DV?
Balling
8th September 2022, 02:43
Hey, I'm trying to inject an RPU into a HDR file which has a VBR video stream. After injecting, the resulting MKV file has the video stream as CBR and the audio and video is super async.
Any ideas on how to fix this? Thanks!
VBR? Maybe you mean VFR? It does not matter that it is VFR, RPU is frame numbers based.
panni
8th September 2022, 03:33
Yeah, VFR. Results in a CBR file with desync A/V.
-QfG-
8th September 2022, 12:19
Hey, I'm trying to inject an RPU into a HDR file which has a VBR video stream. After injecting, the resulting MKV file has the video stream as CBR and the audio and video is super async.
Any ideas on how to fix this? Thanks!
Check the FPS on the MKV File. It's recommended to use the "Mux in Container" function. I think mediainfo shows you 25 FPS instead of 23,976.
Apple:
Many of my P8 Mixes tested succesfully with an Apple TV 4K and Infuse Player.
panni
8th September 2022, 14:06
This is how the source HDR MKV looks:
Frame rate mode : VFR
Frame rate : 23.951 fps
This is after injecting the RPU (with mux in MKV):
Frame rate mode : CFR
Frame rate : 25.000 fps
von Suppé
8th September 2022, 15:32
Mkv container doesn't really carry a header for "FPS", but for "default duration" instead. Therefore, "VFR 23.951 fps" could indeed be MediaInfo's misinterpretation of "regular CFR 23.976 fps" video. Which could be caused by some flawed timestamps.
Maybe a two-step is worth a try here. First remux the source HDR video (without RPU) using MKVToolNix with "Default duration/FPS" set to 24000/1001p. Drop that result on the DDVT_INJECTOR.
panni
8th September 2022, 22:07
Mkv container doesn't really carry a header for "FPS", but for "default duration" instead. Therefore, "VFR 23.951 fps" could indeed be MediaInfo's misinterpretation of "regular CFR 23.976 fps" video. Which could be caused by some flawed timestamps.
Maybe a two-step is worth a try here. First remux the source HDR video (without RPU) using MKVToolNix with "Default duration/FPS" set to 24000/1001p. Drop that result on the DDVT_INJECTOR.
That worked, thank you so much!
GodzilaAvenger
9th September 2022, 04:36
Is there a way to add delay (positive or negative) to HDR10+ metadata, similar to what can be done for DV?
I wrote the following Python script for adding positive or negative delay to HDR10+ metadata. Let me know if I missed anything, or if there is a better way of doing this.
@-QfG-: when injecting HDR10+ metadata into a file that already has one, is the previous one completely overwritten? Or should I first remove the previous one, then inject the new one?
import argparse
import json
import copy
# Parse the input arguments.
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input', nargs = '?', default = 'HDR10Plus.json', help = 'input HDR10+ JSON file')
parser.add_argument('-d', '--delay', nargs = '?', type = int, default = 0, help = 'desired delay (in number of frames)')
parser.add_argument('-o', '--output', nargs = '?', default = 'HDR10PlusEdited.json', help = 'output HDR10+ JSON file')
args = parser.parse_args()
with open(args.input, 'r') as hdr10plus:
# Load the input file data.
print("Reading the input file...")
data = json.load(hdr10plus)
print("Done!\n")
if args.delay > 0:
print("Applying delay...")
# Add delay to SceneFrameIndex for each frame of the first scene.
for i in range(data["SceneInfoSummary"]["SceneFrameNumbers"][0]):
data["SceneInfo"][i]["SceneFrameIndex"] += args.delay
# Add delay to SequenceFrameIndex of each frame.
for frame in data["SceneInfo"]:
frame["SequenceFrameIndex"] += args.delay
# Duplicate the first frame, then correct SceneFrameIndex and SequenceFrameIndex.
for i in range(args.delay):
data["SceneInfo"].insert(0, copy.deepcopy(data["SceneInfo"][0]))
data["SceneInfo"][0]["SceneFrameIndex"] -= 1
data["SceneInfo"][0]["SequenceFrameIndex"] -= 1
# Add delay to SceneFrameNumbers for the first scene.
data["SceneInfoSummary"]["SceneFrameNumbers"][0] += args.delay
# Add delay to SceneFirstFrameIndex of every scene apart from the first one.
for i in range(1, len(data["SceneInfoSummary"]["SceneFirstFrameIndex"])):
data["SceneInfoSummary"]["SceneFirstFrameIndex"][i] += args.delay
print("Done!\n")
elif args.delay < 0:
print("Applying delay...")
# Remove frames from the beginning. Note the SceneId and SceneFrameIndex of the first
# remaining frame.
del data["SceneInfo"][:-args.delay]
frameZero = data["SceneInfo"][0]["SceneFrameIndex"]
sceneZero = data["SceneInfo"][0]["SceneId"]
# Add delay to SequenceFrameIndex of each frame and correct SceneId.
for frame in data["SceneInfo"]:
frame["SceneId"] -= sceneZero
frame["SequenceFrameIndex"] += args.delay
# Correct SceneFrameIndex for each frame of the first scene.
for i in range(data["SceneInfoSummary"]["SceneFrameNumbers"][sceneZero] - frameZero):
data["SceneInfo"][i]["SceneFrameIndex"] -= frameZero
# Remove SceneFrameNumbers of any scene that has been removed, correct the value for the
# first remaining scene.
del data["SceneInfoSummary"]["SceneFrameNumbers"][:sceneZero]
data["SceneInfoSummary"]["SceneFrameNumbers"][0] -= frameZero
# Remove SceneFirstFrameIndex of any scene that has been removed, add delay to every
# remaining scene apart from the first one.
del data["SceneInfoSummary"]["SceneFirstFrameIndex"][1:sceneZero + 1]
for i in range(1, len(data["SceneInfoSummary"]["SceneFirstFrameIndex"])):
data["SceneInfoSummary"]["SceneFirstFrameIndex"][i] += args.delay
print("Done!\n")
with open(args.output, 'w') as edited:
# Write the output file data.
print("Writing the output file...")
json.dump(data, edited, indent = 2, separators=(", ", ": "))
print("Done!\n")
LV8
9th September 2022, 15:06
I wrote the following Python script for adding positive or negative delay to HDR10+ metadata. Let me know if I missed anything, or if there is a better way of doing this.
@-QfG-: when injecting HDR10+ metadata into a file that already has one, is the previous one completely overwritten? Or should I first remove the previous one, then inject the new one?
import argparse
import json
import copy
# Parse the input arguments.
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input', nargs = '?', default = 'HDR10Plus.json', help = 'input HDR10+ JSON file')
parser.add_argument('-d', '--delay', nargs = '?', type = int, default = 0, help = 'desired delay (in number of frames)')
parser.add_argument('-o', '--output', nargs = '?', default = 'HDR10PlusEdited.json', help = 'output HDR10+ JSON file')
args = parser.parse_args()
with open(args.input, 'r') as hdr10plus:
# Load the input file data.
print("Reading the input file...")
data = json.load(hdr10plus)
print("Done!\n")
if args.delay > 0:
print("Applying delay...")
# Add delay to SceneFrameIndex for each frame of the first scene.
for i in range(data["SceneInfoSummary"]["SceneFrameNumbers"][0]):
data["SceneInfo"][i]["SceneFrameIndex"] += args.delay
# Add delay to SequenceFrameIndex of each frame.
for frame in data["SceneInfo"]:
frame["SequenceFrameIndex"] += args.delay
# Duplicate the first frame, then correct SceneFrameIndex and SequenceFrameIndex.
for i in range(args.delay):
data["SceneInfo"].insert(0, copy.deepcopy(data["SceneInfo"][0]))
data["SceneInfo"][0]["SceneFrameIndex"] -= 1
data["SceneInfo"][0]["SequenceFrameIndex"] -= 1
# Add delay to SceneFrameNumbers for the first scene.
data["SceneInfoSummary"]["SceneFrameNumbers"][0] += args.delay
# Add delay to SceneFirstFrameIndex of every scene apart from the first one.
for i in range(1, len(data["SceneInfoSummary"]["SceneFirstFrameIndex"])):
data["SceneInfoSummary"]["SceneFirstFrameIndex"][i] += args.delay
print("Done!\n")
elif args.delay < 0:
print("Applying delay...")
# Remove frames from the beginning. Note the SceneId and SceneFrameIndex of the first
# remaining frame.
del data["SceneInfo"][:-args.delay]
frameZero = data["SceneInfo"][0]["SceneFrameIndex"]
sceneZero = data["SceneInfo"][0]["SceneId"]
# Add delay to SequenceFrameIndex of each frame and correct SceneId.
for frame in data["SceneInfo"]:
frame["SceneId"] -= sceneZero
frame["SequenceFrameIndex"] += args.delay
# Correct SceneFrameIndex for each frame of the first scene.
for i in range(data["SceneInfoSummary"]["SceneFrameNumbers"][sceneZero] - frameZero):
data["SceneInfo"][i]["SceneFrameIndex"] -= frameZero
# Remove SceneFrameNumbers of any scene that has been removed, correct the value for the
# first remaining scene.
del data["SceneInfoSummary"]["SceneFrameNumbers"][:sceneZero]
data["SceneInfoSummary"]["SceneFrameNumbers"][0] -= frameZero
# Remove SceneFirstFrameIndex of any scene that has been removed, add delay to every
# remaining scene apart from the first one.
del data["SceneInfoSummary"]["SceneFirstFrameIndex"][1:sceneZero + 1]
for i in range(1, len(data["SceneInfoSummary"]["SceneFirstFrameIndex"])):
data["SceneInfoSummary"]["SceneFirstFrameIndex"][i] += args.delay
print("Done!\n")
with open(args.output, 'w') as edited:
# Write the output file data.
print("Writing the output file...")
json.dump(data, edited, indent = 2, separators=(", ", ": "))
print("Done!\n")
Hi, I'm quite new to this DoVi hybrid world but would it be possible to implement this in the tool?
-QfG-
9th September 2022, 22:00
i test the script with any files, if it works well, i will add it.
von Suppé
11th September 2022, 11:48
@-QfG-
I've read back the recent issue @panni mentioned. Am I correct when I think that in your scripts, you don't force mkvmerge with setting --default-duration header to proper value?
If so, wouldn't it be a good idea to always do this?
-QfG-
11th September 2022, 18:02
set "duration="
SETLOCAL ENABLEDELAYEDEXPANSION
if "!FRAMERATE!"=="23.976" set "duration=--default-duration 0:24000/1001p --fix-bitstream-timing-information 0:1"
if "!FRAMERATE!"=="24.000" set "duration=--default-duration 0:24p --fix-bitstream-timing-information 0:1"
if "!FRAMERATE!"=="25.000" set "duration=--default-duration 0:25p --fix-bitstream-timing-information 0:1"
if "!FRAMERATE!"=="30.000" set "duration=--default-duration 0:30p --fix-bitstream-timing-information 0:1"
if "!FRAMERATE!"=="48.000" set "duration=--default-duration 0:48p --fix-bitstream-timing-information 0:1"
if "!FRAMERATE!"=="50.000" set "duration=--default-duration 0:50p --fix-bitstream-timing-information 0:1"
if "!FRAMERATE!"=="60.000" set "duration=--default-duration 0:60p --fix-bitstream-timing-information 0:1"
%MKVMERGEpath%" --output ^"%TARGET_FOLDER%\%HEADER_FILENAME%.mkv^" --no-video ^"^(^" ^"%~1^" ^"^)^" --language 0:und --compression 0:none !duration! ^"^(^" ^"%TARGET_FOLDER%\%HEADER_FILENAME%.hevc^" ^"^)^" --track-order 1:0
Of course i do this.
VFR 23.951 fps
is not a valid framerate, for exotic framerates you must set this manually.
Sergio
12th September 2022, 19:28
Hello,
Thank you very much for your tools, it will save me a lot of time,
i used to do everything manually with dovi tool from quietvoid,
i mainly use for a little more than 1 year the p5_to_p81.json to make
a dv-hdr compatible for my Lg tv, I then used mp4muxer and
ffmpeg to convert to mp4 and add the subtitles.
I wanted to test by curiosity the conversion mkv to mp4 (DDVT Tool-v0.48c),
it works very well but just for information, the country of the secondary languages
as well as the subtitles do not correspond any more to the country of the mkv and are put in English,
as if it were by default.
NeverExists
13th September 2022, 22:56
Yes it is. But only if the MKV includes a profile 7 single layer HEVC file.
if you have a "REMUX" of an UHD, simply use the Demuxer and check the Options for Saving BL and EL (you can turn off RPU extracting, not needed for this operation). now you can Build a UHD with this, for example with TS-Muxer.
Thanks for this info quietvoid :goodpost:
I can add Apple DoVi Injection in future Updates.
How is the Apple Dovi injection coming along? Would love to see this as well.
NeverExists
19th September 2022, 08:43
Any word?
NeverExists
24th September 2022, 02:49
Has this been abandoned?
GodzilaAvenger
24th September 2022, 06:31
Dude, chill... it's volunteer work so it's done when it's done. The project is open source (https://github.com/SASUKE-DUCK/Dolby_Vision_Tool) (though not updated in a few months) so feel free to fork it and make the changes you need.
RanmaCanada
2nd October 2022, 17:38
Any word?
The author said they CAN, not they will.
If you want something specific done by them, donate to their cause if they have a link on their github. All open source projects are done in the author's "spare" time, and money always helps to ensure they have more "spare: time as they can then dedicate more time to the project instead of real life things.
benwaggoner
3rd October 2022, 01:06
The Apple DoVi HLG + dynamic metadata profile was largely created by Apple, not Dolby. I imagine it could be harder to find documentation or reference code. Plus it's only testable on Apple devices AFAIK.
Lucius Snow
4th October 2022, 21:11
I'm back on this topic. Thank you for the XML -> RPU conversion support!
I'm trying to make a Blu-Ray with a Dolby Vision stream. Profile 7 is required for this. However, when converting the XML generated by DaVinci to the RPU binary, the software mentions it as a Profile 8.1. That's the same whatever the CMU I use (2.9 or 4.0).
DDVT Tools converts from 7 to 8.1 but not the opposite. What should I do?
At the moment, I can only achieve Blu-Ray UHD HDR authoring with HDR10.
Thanks.
quietvoid
4th October 2022, 21:53
I'm trying to make a Blu-Ray with a Dolby Vision stream. Profile 7 is required for this.
There currently isn't a public/free solution for authoring UHD Blu-ray compatible profile 7, as it requires a second HEVC stream aligned with the base HDR10 video.
rwill
4th October 2022, 22:15
There currently isn't a public/free solution for authoring UHD Blu-ray compatible profile 7, as it requires a second HEVC stream aligned with the base HDR10 video.
Well if one uses x265 one could disable scenecut detection and adaptive B-Frames, like run a fixed GOP structure, and 2 streams with the same picture count will be aligned? Am I missing something?
quietvoid
4th October 2022, 22:43
Well if one uses x265 one could disable scenecut detection and adaptive B-Frames, like run a fixed GOP structure, and 2 streams with the same picture count will be aligned? Am I missing something?
It's probably possible that way, but suboptimal.
Lucius Snow
4th October 2022, 23:04
I wonder how a profile 7 can be generated if the color grading softwares themselves deliver 8.X profiles. There might exist a 8.X to 7 converter somewhere, no? Maybe in DEE which costs $500 per year?
quietvoid
4th October 2022, 23:25
I wonder how a profile 7 can be generated if the color grading softwares themselves deliver 8.X profiles. There might exist a 8.X to 7 converter somewhere, no? Maybe in DEE which costs $500 per year?
The encoded HEVC files you get from software like Resolve is not meant to be used as a deliverable.
Normally you would export a Dolby Vision master with XML metadata.
DEE seems to have a script allowing to encode both bitstreams from the master: https://professionalsupport.dolby.com/s/article/Download-DEE-Quick-Start-Dolby-Vision-Profile-7?language=en_US
Though obviously it's better if you contact Dolby about it, you would have to for DEE anyways.
This is another guide from their documentation: https://professionalsupport.dolby.com/s/article/How-to-author-Dolby-Vision-UHD-Blu-ray-disc?language=en_US
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.