mpv/video/out/gpu
Niklas Haas e3d93fde2f vo_gpu: port HDR tone mapping algorithm from libplacebo
The current peak detection algorithm was very bugged (which contributed
to the excessive cross-frame flicker without long normalization) and
also didn't take into account the frame average brightness level.

The new algorithm both takes into account frame average brightness (in
addition to peak brightness), and also computes the values in a more
stable/correct way. (The old path was basically undefined behavior)

In addition to improving the algorithm, we also switch to hable tone
mapping by default, and try to enable peak computation automatically
whever possible (compute shaders + SSBOs supported). We also make the
desaturation milder, after extensive testing during libplacebo
development.

I also had to compensate a bit for the representational differences
between mpv and libplacebo (libplacebo treats 1.0 as the reference peak,
but mpv treats it as the nominal peak), but it shouldn't have caused any
problems.

This is still not quite the same as libplacebo, since libplacebo also
allows tagging the desired scene average brightness on the output, and
it also supports reading the scene average brightness from static
metadata (MaxFALL) where available. But those changes are a bit more
involved. It's possible we could also read this from metadata in the
future, but we have problems communicating with AVFrames as it is and I
don't want to touch the mpv colorimetry structs for the time being.
2018-02-05 23:11:18 -08:00
..
context.c vo_gpu: d3d11: initial implementation 2017-11-07 20:27:13 +11:00
context.h vo_gpu: vulkan: generalize SPIR-V compiler 2017-09-26 17:25:35 +02:00
d3d11_helpers.c vo_gpu: d3d11: don't use a bgra8 swapchain 2018-01-04 22:08:10 +11:00
d3d11_helpers.h vo_gpu: move d3d11_screenshot to shared code 2017-11-07 20:27:13 +11:00
hwdec.c hwdec: detach d3d and d3d9 hwaccel from angle 2018-01-25 20:57:45 -08:00
hwdec.h vo_gpu: hwdec: remove redundant fields 2017-12-01 05:57:41 +01:00
lcms.c Fix various typos in log messages 2017-12-03 21:24:18 +01:00
lcms.h
osd.c vo_gpu: invalidate fbotex before drawing 2017-12-25 00:47:53 +01:00
osd.h vo_gpu: simplify structs / names 2017-09-22 16:58:55 +02:00
ra.c vo_gpu: export the GLSL format qualifier for ra_format 2017-11-07 20:27:13 +11:00
ra.h vo_gpu: add RA_CAP for gl_NumWorkGroups 2018-02-05 23:11:18 -08:00
shader_cache.c vo_gpu: vulkan: omit needless #define 2017-12-25 00:47:53 +01:00
shader_cache.h vo_gpu: invalidate fbotex before drawing 2017-12-25 00:47:53 +01:00
spirv.c vo_gpu: fix memleak in spirv.c 2017-09-26 17:32:36 +02:00
spirv.h vo_gpu: vulkan: generalize SPIR-V compiler 2017-09-26 17:25:35 +02:00
spirv_shaderc.c vo_gpu: shaderc: include debug info when --gpu-debug is set 2017-10-11 12:22:21 +11:00
user_shaders.c
user_shaders.h vo_gpu: make the vertex attribs dynamic 2017-09-28 01:54:38 +02:00
utils.c msg: reinterpret a bunch of message levels 2017-12-15 22:28:47 -08:00
utils.h vo_gpu: simplify structs / names 2017-09-22 16:58:55 +02:00
video.c vo_gpu: port HDR tone mapping algorithm from libplacebo 2018-02-05 23:11:18 -08:00
video.h vo_gpu: port HDR tone mapping algorithm from libplacebo 2018-02-05 23:11:18 -08:00
video_shaders.c vo_gpu: port HDR tone mapping algorithm from libplacebo 2018-02-05 23:11:18 -08:00
video_shaders.h vo_gpu: d3d11: add RA caps for ra_d3d11 2017-11-07 20:27:13 +11:00