summaryrefslogtreecommitdiffstats
path: root/video/out/gpu
diff options
context:
space:
mode:
authorWessel Dankers <wsl@uvt.nl>2018-08-22 14:39:40 +0200
committerwm4 <1387750+wm4@users.noreply.github.com>2019-09-27 13:21:41 +0200
commit643417dd175ebe3a1b90213f97acddaea7eaea80 (patch)
treeecd0f64845724490fc932aa28d643e850a208163 /video/out/gpu
parent919b7a55cdc837166bf831cdd1f01e4ad5b2cf89 (diff)
downloadmpv-643417dd175ebe3a1b90213f97acddaea7eaea80.tar.bz2
mpv-643417dd175ebe3a1b90213f97acddaea7eaea80.tar.xz
video: add pure gamma TRC curves for 2.0, 2.4 and 2.6.
Diffstat (limited to 'video/out/gpu')
-rw-r--r--video/out/gpu/lcms.c3
-rw-r--r--video/out/gpu/video_shaders.c18
2 files changed, 21 insertions, 0 deletions
diff --git a/video/out/gpu/lcms.c b/video/out/gpu/lcms.c
index a8f277d3f0..1d4e90d7af 100644
--- a/video/out/gpu/lcms.c
+++ b/video/out/gpu/lcms.c
@@ -253,7 +253,10 @@ static cmsHPROFILE get_vid_profile(struct gl_lcms *p, cmsContext cms,
switch (trc) {
case MP_CSP_TRC_LINEAR: tonecurve[0] = cmsBuildGamma(cms, 1.0); break;
case MP_CSP_TRC_GAMMA18: tonecurve[0] = cmsBuildGamma(cms, 1.8); break;
+ case MP_CSP_TRC_GAMMA20: tonecurve[0] = cmsBuildGamma(cms, 2.0); break;
case MP_CSP_TRC_GAMMA22: tonecurve[0] = cmsBuildGamma(cms, 2.2); break;
+ case MP_CSP_TRC_GAMMA24: tonecurve[0] = cmsBuildGamma(cms, 2.4); break;
+ case MP_CSP_TRC_GAMMA26: tonecurve[0] = cmsBuildGamma(cms, 2.6); break;
case MP_CSP_TRC_GAMMA28: tonecurve[0] = cmsBuildGamma(cms, 2.8); break;
case MP_CSP_TRC_SRGB:
diff --git a/video/out/gpu/video_shaders.c b/video/out/gpu/video_shaders.c
index e3021fdb9c..51b62ad7db 100644
--- a/video/out/gpu/video_shaders.c
+++ b/video/out/gpu/video_shaders.c
@@ -364,9 +364,18 @@ void pass_linearize(struct gl_shader_cache *sc, enum mp_csp_trc trc)
case MP_CSP_TRC_GAMMA18:
GLSL(color.rgb = pow(color.rgb, vec3(1.8));)
break;
+ case MP_CSP_TRC_GAMMA20:
+ GLSL(color.rgb = pow(color.rgb, vec3(2.0));)
+ break;
case MP_CSP_TRC_GAMMA22:
GLSL(color.rgb = pow(color.rgb, vec3(2.2));)
break;
+ case MP_CSP_TRC_GAMMA24:
+ GLSL(color.rgb = pow(color.rgb, vec3(2.4));)
+ break;
+ case MP_CSP_TRC_GAMMA26:
+ GLSL(color.rgb = pow(color.rgb, vec3(2.6));)
+ break;
case MP_CSP_TRC_GAMMA28:
GLSL(color.rgb = pow(color.rgb, vec3(2.8));)
break;
@@ -445,9 +454,18 @@ void pass_delinearize(struct gl_shader_cache *sc, enum mp_csp_trc trc)
case MP_CSP_TRC_GAMMA18:
GLSL(color.rgb = pow(color.rgb, vec3(1.0/1.8));)
break;
+ case MP_CSP_TRC_GAMMA20:
+ GLSL(color.rgb = pow(color.rgb, vec3(1.0/2.0));)
+ break;
case MP_CSP_TRC_GAMMA22:
GLSL(color.rgb = pow(color.rgb, vec3(1.0/2.2));)
break;
+ case MP_CSP_TRC_GAMMA24:
+ GLSL(color.rgb = pow(color.rgb, vec3(1.0/2.4));)
+ break;
+ case MP_CSP_TRC_GAMMA26:
+ GLSL(color.rgb = pow(color.rgb, vec3(1.0/2.6));)
+ break;
case MP_CSP_TRC_GAMMA28:
GLSL(color.rgb = pow(color.rgb, vec3(1.0/2.8));)
break;