diff options
author | Niklas Haas <git@nand.wakku.to> | 2014-12-29 14:48:16 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-12-29 15:20:40 +0100 |
commit | 016bb148040b9e55a5e57a4af72a928939e70091 (patch) | |
tree | 3382067610feeb5053ff858a71c06dc0cb967711 | |
parent | 1a6dc9ae44cd7ddd9ee12578b5167d689a810ef7 (diff) | |
download | mpv-016bb148040b9e55a5e57a4af72a928939e70091.tar.bz2 mpv-016bb148040b9e55a5e57a4af72a928939e70091.tar.xz |
vo_opengl: Ignore approx-gamma for BT.2020-CL
The details of the non-linear transformation from/to BT.2020's constant
luminance system don't really make sense with any other gamma curve,
since changing the gamma curve completely breaks the chroma channels.
-rw-r--r-- | video/out/gl_video.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/video/out/gl_video.c b/video/out/gl_video.c index 95fcdfba7c..24a7a13f1d 100644 --- a/video/out/gl_video.c +++ b/video/out/gl_video.c @@ -1021,8 +1021,8 @@ static void compile_shaders(struct gl_video *p) // Linear light scaling is only enabled when either color correction // option (3dlut or srgb) is enabled, otherwise scaling is done in the - // source space. We also need to linearize for constant luminance systems. - if ((!p->is_linear_rgb && use_cms) || use_const_luma) { + // source space. + if (!p->is_linear_rgb && use_cms) { // We just use the color level range to distinguish between PC // content like images, which are most likely sRGB, and TV content // like movies, which are most likely BT.2020 @@ -1037,6 +1037,13 @@ static void compile_shaders(struct gl_video *p) } } + // We also need to linearize for the constant luminance system. This + // transformation really makes no sense with anything other than the + // official gamma curves, though. This overrides approx-gamma. + if (use_const_luma) { + gamma_fun = MP_CSP_TRC_BT_2020_EXACT; + } + // Figure out the right color spaces we need to convert, if any enum mp_csp_prim prim_src = p->image_params.primaries, prim_dest; if (use_cms) { |