This adds support for conversion between color spaces, in particular HDR tone mapping and wide gamut -> standard gamut conversion.
Things that this commit does not (yet) address:
- It does not use libplacebo's scaling features. This is blocked by the fact that libplacebo does not currently support OpenGL (only Vulkan).
- It does not add support for BT.2020 YCbCr. This would be easy to implement in much the same way as the tone mapping support, by using pl_shader_decode_color, replacing the hard-coded matrices. This would also allow adding support for hue, saturation etc. controls.
- It does not hook up the pl_color_map_params options to the VLC GUI. This would have to be done to let users influence the subjective configuration options, as well as specify their display device's configuration.
All of the new code is optional, due to the lack of rigorous testing of libplacebo (especially on other platforms) and the short timeframe between this commit and the VLC 3.0 release. This may be changed later on (possibly for VLC 4.0).
77d8be7e63 video_output: opengl: add basic support for libplacebo
configure.ac | 20 ++++
modules/video_output/Makefile.am | 24 +++--
modules/video_output/opengl/converter.h | 15 +++
modules/video_output/opengl/fragment_shaders.c | 140 +++++++++++++++++++++++++
modules/video_output/opengl/vout_helper.c | 31 ++++++
5 files changed, 224 insertions(+), 6 deletions(-)