quietvoid / hdr10plus_tool

CLI utility to work with HDR10+ in HEVC files.
MIT License
288 stars 33 forks source link
dynamic-metadata ffmpeg hdr hdr10plus

hdr10plus_tool CI Artifacts

CLI utility to work with HDR10+ in HEVC files.
Previously named hdr10plus_parser, now it's more than just a parser.

 

Building

Toolchain

The minimum Rust version to build hdr10plus_tool is 1.79.0.

Dependencies

On Linux systems, fontconfig is required.
Alternatively, system fonts can be bypassed by building with --no-default-features --features internal-font.

 

Options that apply to the commands:

Commands

 

 

Wrong metadata order workaround

The skip-reorder option should only be used as a workaround for misauthored HEVC files.
Some rare retail discs use an incorrect workflow where the original metadata is inserted sequentially in the final video, which causes issues when B frames exist.
As the metadata is inserted for every frame in decode order, on playback it is likely that the presentation order is different.
In playback, this means that the metadata associated with the image presented may be wrong.

A simple way to tell if the metadata is in the wrong order is by looking at the SceneFrameNumbers list in the JSON.
If there are many entries where scenes only contain 1 to 3 frames, it is likely that the video has wrong order.
The SceneFirstFrameIndex values should also be aligned with scene cuts in the video.
If the scenes are small and misaligned, skip-reorder must be used when using extract to keep the order correct.

 

Sample files

Tears of Steel samples encoded with x265 using --dhdr10-info for tests.

Sample JSON metadata available here: https://bitbucket.org/multicoreware/x265_git/downloads/