- From: Christopher Cameron <ccameron@google.com>
- Date: Tue, 16 Mar 2021 23:39:27 -0700
- To: Pierre-Anthony Lemieux <pal@sandflow.com>
- Cc: public-colorweb@w3.org
- Message-ID: <CAGnfxj_qRWOWhVYAR5J3PydLpjiN9OfipwZTOC-tjH9g0-8c9Q@mail.gmail.com>
On Tue, Mar 16, 2021 at 1:50 PM Pierre-Anthony Lemieux <pal@sandflow.com> wrote: > Thanks to Chris for drafting a concrete proposal [0]. Below is a > potential challenge when handling PQ HDR content. > > Starting from mastering, video pixels are coded as non-linear integer > code values, e.g. HLG, PQ, etc.. > > These pixels ideally remain unmodified until they are rendered to the > display since each conversion carries a risk that fidelity will be > lost. This is the case even in the case where the color space and the > pixel encoded remain the same. > > The strawman currently requires that PQ pixels be converted to linear > values when written to Canvas: > > PQ CV ----F----> linear value -----G-----> PQ CV > > This is non-trivial and computationally expensive since F is highly > non-linear and covers many orders of magnitude. It also requires G to > be the exact inverse of F, which is not always simple if F and G are > provided by different implementations. > > How do we provide a means of avoiding this complexity and potential > loss of fidelity? > > Could one approach be to add optional support for non-linear pixel > encodings, e.g. add 'rec2100--pq' to [1]. In other words, > implementation would need to support 'rec2020-linear' but could also > support 'rec2100--pq'. Adding a 'rec2100-pq' and 'rec2100-hlg' color is quite reasonable. Support is spotty on desktop operating systems. - Windows has a "rec2100-pq + rgb10-alpha2" mode - DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020+DXGI_FORMAT_R10G10B10A2_UNORM - This would be very efficient for the application you discuss - Windows has no "rec2100-hlg" support - That is, no support for RGB HLG buffers (there does exist YUV HLG support, of course) - macOS had a "rec2100-pq" CGColorSpace (kCGColorSpaceITUR_2020_PQ_EOTF) but that has been deprecated - PQ can, of course, be used with video <http://kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ> - macOS also deprecated "rec2100-hlg" CGColorSpace (kCGColorSpaceITUR_2020_HLG) but has a "display-p3-hlg" space. All of this is to say that the browser would, in the background, be converting into a floating point format behind the user's back most of the time. But it may be that TV-embedded browsers will have a particular signal and pixel format that is desired. So I'm in favor of this being exposed if it's well-supported.
Received on Wednesday, 17 March 2021 06:39:53 UTC