vo_opengl: refactor HDR mechanism

Instead of doing HDR tone mapping on an ad-hoc basis inside
pass_colormanage, the reference peak of an image is now part of the
image params (alongside colorspace, gamma, etc.) and tone mapping is
done whenever peak_src != peak_dst.

To get sensible behavior when mixing HDR and SDR content and displays,
target-brightness is a generic filler for "the assumed brightness of SDR
content".

This gets rid of the weird display_scaled hack, sets the framework
for multiple HDR functions with difference reference peaks, and allows
us to (in a future commit) autodetect the right source peak from
the HDR metadata.

(Apart from metadata, the source peak can also be controlled via
vf_format. For HDR content this adjusts the overall image brightness,
for SDR content it's like simulating a different exposure)
This commit is contained in:
Niklas Haas
2016-05-30 19:56:58 +02:00
committed by wm4
parent 098ff4174c
commit 45c3e0f0d0
8 changed files with 66 additions and 30 deletions

View File

@@ -1061,9 +1061,10 @@ Available video output drivers are:
``target-brightness=<1..100000>``
Specifies the display's approximate brightness in cd/m^2. When playing
HDR content, video colors will be tone mapped to this target brightness
using the algorithm specified by ``hdr-tone-mapping``. The default of
250 cd/m^2 corresponds to a typical consumer display.
HDR content on a SDR display (or SDR content on an HDR display), video
colors will be tone mapped to this target brightness using the
algorithm specified by ``hdr-tone-mapping``. The default of 250 cd/m^2
corresponds to a typical consumer display.
``hdr-tone-mapping=<value>``
Specifies the algorithm used for tone-mapping HDR images onto the