quietvoid / dovi_tool

dovi_tool is a CLI tool combining multiple utilities for working with Dolby Vision.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Profile 7 to Profile 8 / Interleaved Bitstream Question

jebaum opened this issue · comments

Thanks for the awesome tool, and apologies if this information was already provided in one of the below linked issues and I just didn't comprehend it, or in another issue I missed:

My hardware can play DV profiles 5 and 8, not 7. I have DV profile 7 files with FELs that I want to convert to profile 8. There are several different ways to do this, and I'd like to understand if one is technically "best".

It seems like in a profile 7 file, the RPU.bin is contained within the FEL. I can use dovi_tool demux -m 5 to separate out the BL and the FEL, extract the RPU from the FEL with dovi_tool extract-rpu EL.hevc, and inject the RPU back into the base layer to get a profile 8 file. This new file will be several GBs smaller than the original, since the FEL was effectively removed (in my test cases, the FEL was usually about 4.5gb).

Alternatively, after demuxing like the above, I can mux the BL.hevc and EL.hevc back together with dovi_tool mux instead of extracting RPU.bin and injecting it. I'll end up with a profile 8 file that seems to have the FEL still contained in it, based on the fact that the file size is about the same as the original.

So my main question is - should one of these methods be considered "better" than the other? I suppose if I can't visually tell the difference it doesn't really matter but I'd like to understand what's happening, and if it's possible to get the benefits of a FEL in a profile 8 file.
Put concretely, is there a better way to convert a profile 7 file to profile 8 than the following:

ffmpeg -i input.mkv -c:v copy -bsf:v hevc_mp4toannexb -f hevc - | dovi_tool -m 5 demux -
dovi_tool mux --bl BL.hevc --el EL.hevc
# use mkvtoolnix or equivalent to replace the hevc video stream in input.mkv with the new 'BL_EL_RPU.hevc' video stream created by the previous command

This issue is very relevant, but it was created before release 1.5.0 added the feature to the mux subcommand for creating BL+EL interleaved bitstreams, so I'm not sure if the answer would be different now.
This issue is relevant as well but also predates the improved mux functionality.