summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/video.c
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.xyz>2017-06-09 09:16:06 +0200
committerRicardo Constantino <wiiaboo@gmail.com>2017-06-09 11:27:28 +0100
commitd8a3b10f45eb10fb34ce9da3a9a76e3bd8644e3d (patch)
tree80186e11d21707072751d95e055f44da7a36f159 /video/out/opengl/video.c
parent30cd963b25520089f56417eb2f946c98afeef073 (diff)
downloadmpv-d8a3b10f45eb10fb34ce9da3a9a76e3bd8644e3d.tar.bz2
mpv-d8a3b10f45eb10fb34ce9da3a9a76e3bd8644e3d.tar.xz
vo_opengl: add new HDR tone mapping algorithm
I call it `mobius` because apparently the form f(x) = (cx+a)/(dx+b) is called a Möbius transform, which is the algorithm this is based on. In the extremes it becomes `reinhard` (param=0.0 and `clip` (param=1.0), smoothly transitioning between the two depending on the parameter. This is a useful tone mapping algorithm since the tunable mobius transform allows the user to decide the trade-off between color accuracy and detail preservation on a continuous scale. The default of 0.3 is already far more accurate than `reinhard` while also being reasonably good at preserving highlights, without suffering from the overall brightness drop and color distortion of `hable`. For these reasons, make this the new default. Also expand and improve the documentation for these tone mapping functions.
Diffstat (limited to 'video/out/opengl/video.c')
-rw-r--r--video/out/opengl/video.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c
index 0bfba10ae1..4a91db69f0 100644
--- a/video/out/opengl/video.c
+++ b/video/out/opengl/video.c
@@ -328,6 +328,7 @@ const struct m_sub_options gl_video_conf = {
OPT_INTRANGE("target-brightness", target_brightness, 0, 1, 100000),
OPT_CHOICE("hdr-tone-mapping", hdr_tone_mapping, 0,
({"clip", TONE_MAPPING_CLIP},
+ {"mobius", TONE_MAPPING_MOBIUS},
{"reinhard", TONE_MAPPING_REINHARD},
{"hable", TONE_MAPPING_HABLE},
{"gamma", TONE_MAPPING_GAMMA},