quietvoid / dovi_tool

dovi_tool is a CLI tool combining multiple utilities for working with Dolby Vision.
MIT License
581 stars 57 forks source link

Long play mode and alternative conditions #160

Closed saindriches closed 2 years ago

saindriches commented 2 years ago

There is an undocumented option in verifier that allows checking user generated content from consumer devices like iPhone’s profile 8.4 video, named --alternative-conditions or -ac, it supports ugch4_ios14, ugch4_ios15 etc. The ios14 mode requires scene_reflash_flag always be 1, and actually it’s expected (but not limited) to be DM2 and only has L1 block. It’s also the behavior of some broadcasting devices, which only analyze frame based L1 values, in realtime. It’s a mode that RPU generated from this tool being considered as fully valid, it’s worth implementing this as an option. See this branch

Btw ugch4 modes have different recommended composer metadata values, and ios15 mode has strictly defined L8, L9, L10 and L11, different values will not pass the verifier. I don’t know if it’s worth implementing generating with ability to specify alternative conditions.

The recent version of Final Cut Pro also generates profile 8.4 video with ios15 condition, but Resolve beta on Windows doesn’t follow that.

quietvoid commented 2 years ago

Making specific presets for these "alternative conditions" isn't something I'm interested in. It's all possible to do with the current generate config.

By default, iOS15 (my samples are only labeled iPhone 11 to 13) profile 8.4 look like:

Do you plan on creating a PR for the long play mode config? It's almost good enough but I was planning to do it anyways.

Also, I don't think profile 5 with profile 7/8 DM metadata is valid (especially the RGB coeffs). Although Apple once made HDR10 profile 5 files, which I don't believe are valid.

Resolve indeed produces profile 5 without reshaping, but the coeffs are correct (for IPT).

saindriches commented 2 years ago

I didn't use the profile 8 coeffs for profile 5 in that commit, just used the default composer metadata of profile 8.1 (no reshaping), with correct IPT dm_data (coeffs).

quietvoid commented 2 years ago

You're right, I forgot I had done this already for Profile5::dm_data.