Add chunk for HDR Reference White level, fix #390#573
Conversation
chrisn
left a comment
There was a problem hiding this comment.
Just one very minor suggestion.
Co-authored-by: Chris Needham <chrisn@users.noreply.github.com>
|
This corresponds to a code value of 58% in PQ and 75% in HLG on a 1000 cd/m2 display. I think there needs to be an explicit statement that when using HLG, just because the composition happened on a pseudo-1000nit monitor, the brightness at which the item will be displayed is variable. (I would argue that it's far easier to choose a different pesudo-monitor brightness to do the transform at if you want shadows and mid-tones to match - having 1000 written here makes it seem that that's the correct option) |
|
I was drawing from this text in BT.2408-9, section 2.1 HDR Reference White:
(plus the values in Table 1, which is where 58% and 75% come from) (there is a lot more text after this, but that is the first paragraph of the definition). And isn't 75% the code value where the gamma and the log potions join, in HLG? I agree that for display on less-capable displays, or in brighter than reference viewing conditions, the actual measured luminance for HDR Reference White will vary due to a color re-rendering step (OOTF), Do you have a specific change to the current proposed wording? |
Fixed, thanks. |
As noted in
hRWl(HDR Reference White Level) chunk to conform to ISO 22028-5 #390this references the definition in the (freely available) ITU-R BT.2409-9 specification, which becomes a normative reference, while noting that this is technically aligned with ISO 22028-5 (which costs 135CHF).
This should satisfy W3C criteria regarding normatively referencing specifications which are not freely available.
Both references are added to the bibliography, in their most recent (2026) editions.
For consistency, the luminance level is stored in exactly the same way as in the
cLLIchunk (four bytes, value is multiplied by 10,000).I also added the chunk to the chunk ordering table but will leave adding it to the six SVG diagrams to another pull request, once this is merged.
Because the chunk is optional and contains only one value, I did not add language (like we have in
cLLi) that a zero value means undefined. Just don't add the chunk, in that case.I added an encoding example, similar to the ones for
cLLI, for 160 nits.Note: I am aware of the earlier pull request for an earlier version of this chunk but there were many unresolved requests for changes and the references were also from 2023 so it was easier to start from scratch.