W3C home > Mailing lists > Public > public-colorweb@w3.org > May 2017

Re: PQ HDR in PNG - draft review

From: Fredrik Hubinette <hubbe@google.com>
Date: Sat, 20 May 2017 14:34:00 -0700
Message-ID: <CAEVbG5qF9emHcWS-9u-8tEAtDpkFT9cAAsMy9H08o=-yYO-jzw@mail.gmail.com>
To: Pierre-Anthony Lemieux <pal@sandflow.com>
Cc: Lars Borg <borg@adobe.com>, Chris Lilley <chris@w3.org>, "public-colorweb@w3.org" <public-colorweb@w3.org>
On Sat, May 20, 2017 at 2:31 PM, Pierre-Anthony Lemieux <pal@sandflow.com>
wrote:

> Hi Fredrik,
>
> I appreciate your bearing with me.
>
> > But using luminanceGain = 4 as a way to express that, implies that
> > luminanceGain = 1 should be 100 nits, which is the part that I think
> > is unfortunate.
>
> Are you arguing that the default should be 400 nits for subtitles
> instead of 80 nits?
>

I would prefer that the default was undefined.


> > No, I meant that sRGB peak is mapped to some unknown number of nits, and
> > luminanceGain = 2 is twice as bright as that.
>
> That would not allow the author to precisely control subtitle light
> levels relatively to the PQ image, right?
>
>
Correct. Which is why I suggesting that maybe we should have a different
tag which lets you specify absolute luminance.


> Best,
>
> -- Pierre
>
> On Sat, May 20, 2017 at 2:14 PM, Fredrik Hubinette <hubbe@google.com>
> wrote:
> >
> >
> > On Fri, May 19, 2017 at 9:20 PM, Pierre-Anthony Lemieux <
> pal@sandflow.com>
> > wrote:
> >>
> >>  Hi Fredrik,
> >>
> >> > I think it's confusing
> >> > to suggest that sRGB is 80 nits since almost all monitors in use today
> >> > are
> >> > brighter than that.
> >>
> >>  A default of sRGB 80 nits peak white was chosen as the default in
> >> TTML2 because it is always safe when compositing subtitles onto full
> >> screen video: it is particularly jarring when subtitles are much
> >> brighter than the picture!
> >>
> >> In practice, subtitles are typically presented around 400 nits when
> >> composited onto PQ content, i.e. luminanceGain = 4, with occasional
> >> exceptions that are content dependent.
> >>
> >
> > I think it's fine to want 400 nits subtitles.
> > But using luminanceGain = 4 as a way to express that, implies that
> > luminanceGain = 1 should be 100 nits, which is the part that I think
> > is unfortunate.
> >
> >>
> >> A default of sRGB 80 nits peak white might not be the right answer for
> >> general UI/web page work.
> >>
> >
> > Agreed.
> >
> >>
> >> > > Would it be possible to drop the 80 lumens and just say that
> >> > > luminanceGain =
> >> > 2 is twice as bright
> >> > as the default?
> >>
> >> What do you mean by "default"? Is the suggestion that, by default,
> >> sRGB peak white be mapped to 160 nits?
> >>
> >
> > No, I meant that sRGB peak is mapped to some unknown number of nits, and
> > luminanceGain = 2 is twice as bright as that.
> >
> >>
> >> Best,
> >>
> >> -- Pierre
> >>
> >> On Fri, May 19, 2017 at 6:40 PM, Fredrik Hubinette <hubbe@google.com>
> >> wrote:
> >> > The TTLML2 gain value seems like a good idea. It is imilar in some
> sense
> >> > to
> >> > the wording
> >> > for how to deal with floats outside of 0-1 in the canvas-color-space.
> >> > However, I think it's confusing
> >> > to suggest that sRGB is 80 nits since almost all monitors in use today
> >> > are
> >> > brighter than that. It seems
> >> > like the tts:luminanceGain wording would lock legacy elements at 80
> nits
> >> > (aka "dark and dreary").
> >> >
> >> > Would it be possible to drop the 80 lumens and just say that
> >> > luminanceGain =
> >> > 2 is twice as bright
> >> > as the default?
> >> >
> >> > If we really need a way to match how PQ works, it might be better to
> >> > have an
> >> > absoluteLuminance
> >> > tag instead.  But personally I would prefer not to deal with absolute
> >> > luminance as that is not compatible
> >> > with how I use my TV and monitor.
> >> >
> >> >      /Hubbe
> >> >
> >> > On Fri, May 19, 2017 at 3:30 PM, Pierre-Anthony Lemieux
> >> > <pal@sandflow.com>
> >> > wrote:
> >> >>
> >> >> Hi Frederik et al.,
> >> >>
> >> >> >  Since non-HDR images are all in screen-relative brightness, it's
> >> >> > impossible to make an PQ image
> >> >> > which looks the same as a non-HDR image.
> >> >>
> >> >> One approach is to specify an (optional) gain value to scale the SDR
> >> >> image before compositing it onto HDR images.
> >> >>
> >> >> This is the approach taken in recent TTML2 [1] draft, and has the
> >> >> advantage of giving the author control because, sometimes, the white
> >> >> point of the SDR image should be at 80/100 nits.
> >> >>
> >> >> [1]
> >> >>
> >> >> https://w3c.github.io/ttml2/spec/ttml2.html#style-
> attribute-luminanceGain
> >> >>
> >> >> > Suddenly all legacy apps become dark and gray, as windows
> translates
> >> >> > them to 80 nits.
> >> >>
> >> >> Using 80 nits as the default white point for SDR images is certainly
> >> >> safe and conservative, but not appropriate in all cases. I think this
> >> >> is an industry discussion, which hopefully we can have.
> >> >>
> >> >> Hope this makes sense.
> >> >>
> >> >> Best,
> >> >>
> >> >> -- Pierre
> >> >>
> >> >> On Fri, May 19, 2017 at 2:55 PM, Fredrik Hubinette <hubbe@google.com
> >
> >> >> wrote:
> >> >> > While ICCMax does have proper ways to describe PQ, it seems to do
> so
> >> >> > in
> >> >> > a
> >> >> > way that is not easy to understand and implement.  Recent work to
> >> >> > support
> >> >> > ICC profiles in chrome has focused on ICC version 2, because ICC
> >> >> > version
> >> >> > 4.x
> >> >> > is too difficult to implement efficiently, and ICCMax looks much
> more
> >> >> > difficult. Since we don't know what the uptake on ICCMax will look
> >> >> > like,
> >> >> > having a special bit for HDR content might not be a bad idea.
> >> >> > (However,
> >> >> > the
> >> >> > proposed magic string solution doesn't sound like a good idea.)
> >> >> >
> >> >> > Another problem altogether is that PQ as a transform is defined in
> >> >> > absolute
> >> >> > lumens. Since non-HDR images are all in screen-relative brightness,
> >> >> > it's
> >> >> > impossible to make an PQ image which looks the same as a non-HDR
> >> >> > image.
> >> >> > To
> >> >> > observe this problem in practice, hook up a recent Win10 machine
> with
> >> >> > an
> >> >> > HDR-capable graphics card to an HDR-capable tv and turn on HDR.
> >> >> > Suddenly
> >> >> > all legacy apps become dark and gray, as windows translates them to
> >> >> > 80
> >> >> > nits.
> >> >> > Most people quickly turn HDR off again.
> >> >> >
> >> >> > A better solution is probably to use hybrid-log-gamma, which uses
> >> >> > screen-relative brightness. I'm not sure if there is an ICC(Max)
> >> >> > profile
> >> >> > that describes HLG accurately though.
> >> >> >
> >> >> >       /Fredrik "Hubbe" Hubinette (Chrome HDR Video)
> >> >> >
> >> >> >
> >> >> > On Thu, May 18, 2017 at 8:04 PM, Lars Borg <borg@adobe..com>
> wrote:
> >> >> >>
> >> >> >> Hi Chris,
> >> >> >>
> >> >> >> I assume you’re looking at the profile that I created.
> >> >> >> The profile was designed to provide a transform to/from Rec.2100
> PQ
> >> >> >> to
> >> >> >> XYZ
> >> >> >> D50.
> >> >> >> The only descriptive metadata included is the profile description,
> >> >> >> as
> >> >> >> that’s what’s being displayed in profile menus, etc.
> >> >> >> No effort was made to add other descriptive metadata, as no such
> was
> >> >> >> asked
> >> >> >> for.
> >> >> >>
> >> >> >> Elaborating on some of the ICC constraints that you’re observing.
> >> >> >>
> >> >> >> The first thing I noticed is that there are no colorant tags to
> >> >> >> indicate
> >> >> >> the primaries used.
> >> >> >>
> >> >> >> The colorant tag will not be used by the CMM.
> >> >> >> One tricky thing is that the colorant values in this tag will not
> >> >> >> match
> >> >> >> the Rec. 2100 spec.
> >> >> >> The colorant XYZ value has to be in PCS space, so it has to be
> >> >> >> chromatically adapted to D50.
> >> >> >>
> >> >> >> There is a chromaticityType tag that can indicate the unconverted
> xy
> >> >> >> chromaticities from the Rec. 2100 spec.
> >> >> >> Probably more useful.
> >> >> >> The chromaticityType tag will not be used by the CMM.
> >> >> >> This is purely descriptive metadata.
> >> >> >>
> >> >> >> Although the specification itself does list the chromaticities of
> >> >> >> the
> >> >> >> 2020
> >> >> >> primaries, they are not in the ICC profile.
> >> >> >>
> >> >> >> They are embedded in the matrices in the A2B and B2A tags.
> >> >> >>
> >> >> >> The second thing I noticed was that the lumi tag indicates a peak
> >> >> >> luminance of 100 cd/m^2 which does not sound like HDR at all.
> >> >> >>
> >> >> >> True.
> >> >> >> It’s not clear from the ICC spec that the lumi tag shall express
> >> >> >> peak
> >> >> >> luminance.
> >> >> >> It is here set to match the luminance of the PCS white point.
> >> >> >> A PQ value of 508, 508, 508 (/1023) corresponds to 100 nits.
> >> >> >> This is also the reference SDR diffuse white, and was selected as
> >> >> >> the
> >> >> >> PCS
> >> >> >> white point for cross-media conversion.
> >> >> >> The reason:
> >> >> >> ICC profiles are used for converting between SDR and HDR.
> >> >> >> No established practice exists for mapping colors between HDR and
> >> >> >> SDR.
> >> >> >> Reference white for SDR in the studio is 100 nits.
> >> >> >> But many consumer SDR displays operate at 300 nits, so some
> existing
> >> >> >> programs put diffuse white in HDR at 300 nits.
> >> >> >> So the desired crossover between SDR and HDR is at 100 or 300
> nits,
> >> >> >> definitely not at 1000 or 10,000 nits.
> >> >> >> Time will tell.
> >> >> >>
> >> >> >> There are A2B0 and B2A0 tags for the transfer functions. The B
> curve
> >> >> >> is
> >> >> >> linear, the M curve has a gamma of 5 and there is a slightly
> >> >> >> sigmoidal
> >> >> >> A
> >> >> >> curve. I am not able to tell whether this correctly represents the
> >> >> >> BT.2100
> >> >> >> EOTF and would appreciate guidance here.
> >> >> >>
> >> >> >> The dynamic range of the PQ curve (10^9) far exceeds the U16 code
> >> >> >> range
> >> >> >> available in an ICC sampled curves.
> >> >> >> The high gamma in the M curve expands the dynamic range of the
> >> >> >> sampled
> >> >> >> A
> >> >> >> curve. (Established practice)
> >> >> >> Thus, the A curve has a dynamic range of <100. This allows for
> >> >> >> almost 3
> >> >> >> significant digits in the low end.
> >> >> >> This results in a more accurate transform.
> >> >> >>
> >> >> >> Eek! It looks as if a magic string is used to signal the image
> >> >> >> contents,
> >> >> >> and that string is the name of the ICC profile. Not only are the
> >> >> >> gamma
> >> >> >> and
> >> >> >> chromaticity to be ignored, but also the contents of the ICC
> >> >> >> profile.
> >> >> >>
> >> >> >> Agreed. That looks horrible.
> >> >> >>
> >> >> >> It seems clear that a vastly better way to encode BT.2100 still
> >> >> >> images
> >> >> >> in
> >> >> >> PNG would be to embed an ICCMax profile that correctly describes
> the
> >> >> >> EOTF
> >> >> >> and the primary chromaticities, and has a correct peak luminance
> >> >> >> value.
> >> >> >> I
> >> >> >> assume that the flaws noted above are due to limitations of ICC
> v.4?
> >> >> >>
> >> >> >> Any obvious drawbacks of my proposed approach?
> >> >> >>
> >> >> >> Have you created such an ICCMax profile?
> >> >> >> How do you encode PQ EOTF?
> >> >> >>
> >> >> >> 1. I assume the profile is to be used for color conversions, and
> not
> >> >> >> only
> >> >> >> to signal a color space. The current profile works in tested
> >> >> >> contemporary
> >> >> >> CMMs and apps. Those same CMMs fail on ICCMax profiles. I am not
> >> >> >> aware
> >> >> >> of
> >> >> >> any plans to change that.
> >> >> >> 2. No way to map the content to SDR media as the 10,000 nits value
> >> >> >> is
> >> >> >> useless for this. The current ICC profile provides a fallback for
> >> >> >> SDR
> >> >> >> on
> >> >> >> existing systems.
> >> >> >> 3. Did you find any flaws related to ICC v4? It seems the mismatch
> >> >> >> between
> >> >> >> your expectations and the current implementation are not due to
> >> >> >> flaws
> >> >> >> in ICC
> >> >> >> v4, so we can simply update the ICC profile to address your needs.
> >> >> >>
> >> >> >> How about adding descriptive metadata tags to a v4.2 profile?
> >> >> >> The chromaticityType tag is already in the ICC standard.
> >> >> >> Not sure how to indicate an EOTF in ICC.
> >> >> >> Maybe the best is to indicate color and EOTF by name or enum
> instead
> >> >> >> of
> >> >> >> by
> >> >> >> value?
> >> >> >> HEVC, etc. have adopted enumerations for a closed set of color
> tags.
> >> >> >> Here
> >> >> >> the values would be 9,16,0.
> >> >> >>
> >> >> >> Lars
> >> >> >
> >> >> >
> >> >
> >> >
> >
> >
>
Received on Saturday, 20 May 2017 21:34:36 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:14:11 UTC