-
Notifications
You must be signed in to change notification settings - Fork 249
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement support for encoding HDR10+ from JSON metadata file #3000
base: master
Are you sure you want to change the base?
Conversation
85f734b
to
bb25f47
Compare
As is, this is probably ready for review. Also, hopefully it also works in |
It does appear that the current T.35 insertion code skips over some frames with Though the spec (draft) does say
So I'm not sure if the ref sample is correct. There is also an updated figure of the structure: https://github.com/raw/AOMediaCodec/av1-hdr10plus/0e2a5d82ec9b7c24e3c4bf84c31557eb99563dd1/obu_tu.png |
bb25f47
to
ee4d6d1
Compare
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## master #3000 +/- ##
==========================================
- Coverage 88.10% 86.32% -1.78%
==========================================
Files 85 89 +4
Lines 33596 34122 +526
==========================================
- Hits 29599 29457 -142
- Misses 3997 4665 +668
☔ View full report in Codecov by Sentry. |
ee4d6d1
to
f147251
Compare
003623b
to
0627800
Compare
As the specification seems to be in a final state, I've reworked things to work properly for the OBU placement. The T.35 metadata is added at the end when present in the |
0627800
to
bbb3464
Compare
bbb3464
to
49f5ce8
Compare
clippy seems unhappy, I let @tdaede confirm the actual specification details. |
Doh. I was running clippy with |
49f5ce8
to
bab794c
Compare
bab794c
to
d470cab
Compare
d470cab
to
82dd0df
Compare
It was pointed out on the IRC that the payloads should probably be handled on the CLI side only, as the API |
The goal of this PR is to allow users to encode HDR video with HDR10+ metadata, in compliance with the AV1 HDR10+ specification.
In the current state, the changes make it possible to encode HDR10+ for both CLI and Rust API usage.
From CLI, the metadata is expected to be passed as a JSON metadata file, which follows the same format as encoders like
x265
.The metadata parsing/encoding is done through the hdr10plus crate.
The library is probably less than ideal but it should be fine to parse things at init.
The CLI opt can be either
--hdr10plus-json
or--dhdr10-info
(used byx265
)From Rust, the metadata must be encoded into the final T.35 and provided for the frames that require it.
Output bitstream validated with the AOM AV1 HDR10+ Validator.
Starting this as a draft, as some things need to be improved;
ST2094-40
prefix const.