From 2dcf18c0c01282f0f0e72423038a78c1fc938b02 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Sat, 13 Feb 2016 15:33:00 +0100 Subject: vo_opengl: generate 3DLUT against source and use full BT.1886 This commit refactors the 3DLUT loading mechanism to build the 3DLUT against the original source characteristics of the file. This allows us, among other things, to use a real BT.1886 profile for the source. This also allows us to actually use perceptual mappings. Finally, this reduces errors on standard gamut displays (where the previous 3DLUT target of BT.2020 was unreasonably wide). This also improves the overall accuracy of the 3DLUT due to eliminating rounding errors where possible, and allows for more accurate use of LUT-based ICC profiles. The current code is somewhat more ugly than necessary, because the idea was to implement this commit in a working state first, and then maybe refactor the profile loading mechanism in a later commit. Fixes #2815. --- video/out/opengl/lcms.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'video/out/opengl/lcms.h') diff --git a/video/out/opengl/lcms.h b/video/out/opengl/lcms.h index 5ad08b7d64..ee2a48b59c 100644 --- a/video/out/opengl/lcms.h +++ b/video/out/opengl/lcms.h @@ -24,7 +24,9 @@ struct gl_lcms *gl_lcms_init(void *talloc_ctx, struct mp_log *log, struct mpv_global *global); void gl_lcms_set_options(struct gl_lcms *p, struct mp_icc_opts *opts); void gl_lcms_set_memory_profile(struct gl_lcms *p, bstr *profile); -bool gl_lcms_get_lut3d(struct gl_lcms *p, struct lut3d **); -bool gl_lcms_has_changed(struct gl_lcms *p); +bool gl_lcms_get_lut3d(struct gl_lcms *p, struct lut3d **, + enum mp_csp_prim prim, enum mp_csp_trc trc); +bool gl_lcms_has_changed(struct gl_lcms *p, enum mp_csp_prim prim, + enum mp_csp_trc trc); #endif -- cgit v1.2.3