Skip to content

Output headroom: let tone mappers take their peak from the output #22664

Open

Description

@nicknezis

Is your feature request related to a problem? Please describe.

Since colorout maps 1.0 to 203 nits for PQ and HLG, a tone mapper's target white sets the peak brightness of an HDR export (with the AgX HDR PR: peak nits = target white x 203). The user has to set it by hand for each target: 100% for SDR, about 493% for HLG (which clips at 1000 nits), about 790% for a 1600 nit display. The same edit can't produce a correct SDR and HDR render without changing the history. That also blocks gain map export and HDR display in the darkroom, which both need two renders of one edit at different peaks.

Describe the solution you'd like

A per-pipe "output headroom" value (peak luminance / 203 nits) that the export or the display sets:

  • SDR output: 1.0. PQ export: from a peak setting in export, or the profile. HLG: 1000/203. Darkroom on an HDR display: the headroom the display reports.
  • AgX gets a "target white from output" option that uses the headroom instead of the slider. sigmoid could use it too.
  • History and params stay unchanged. The headroom is a pipe property, not a module parameter, so one history renders correctly for any target.

Alternatives

  • Keep the manual slider (status quo). It works for single-target exports, but not for gain maps or adaptive display.
  • Presets per target. They're simpler, but they still change the history.

Open questions: should the headroom live on the pipe, in colorout, or in the export format? How should it be shown in the module UI when it overrides the slider?

Additional context

Would serve gain map export (#17399) and HDR display (#17710, which also asks for the available headroom to be shown). Builds on the 203 nit reference white from #22516.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions