diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 59bc16708f..ea8c6df26f 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -5281,7 +5281,7 @@ The following video options are currently all specific to ``--vo=gpu`` and Size of the 3D LUT generated from the ICC profile in each dimension. Default is 64x64x64. Sizes may range from 2 to 512. -``--icc-contrast=<0-100000>`` +``--icc-contrast=<0-1000000>`` Specifies an upper limit on the target device's contrast ratio. This is detected automatically from the profile if possible, but for some profiles it might be missing, causing the contrast to be assumed as infinite. As a diff --git a/video/out/gpu/lcms.c b/video/out/gpu/lcms.c index 3552351219..bc76db965f 100644 --- a/video/out/gpu/lcms.c +++ b/video/out/gpu/lcms.c @@ -83,7 +83,7 @@ const struct m_sub_options mp_icc_conf = { OPT_FLAG("icc-profile-auto", profile_auto, 0), OPT_STRING("icc-cache-dir", cache_dir, M_OPT_FILE), OPT_INT("icc-intent", intent, 0), - OPT_INTRANGE("icc-contrast", contrast, 0, 0, 100000), + OPT_INTRANGE("icc-contrast", contrast, 0, 0, 1000000), OPT_STRING_VALIDATE("icc-3dlut-size", size_str, 0, validate_3dlut_size_opt), OPT_REPLACED("3dlut-size", "icc-3dlut-size"), @@ -304,7 +304,8 @@ static cmsHPROFILE get_vid_profile(struct gl_lcms *p, cmsContext cms, // Built-in contrast failsafe double contrast = 3.0 / (src_black[0] + src_black[1] + src_black[2]); - if (contrast > 100000) { + MP_VERBOSE(p, "Detected ICC profile contrast: %f\n", contrast); + if (contrast > 100000 && !p->opts->contrast) { MP_WARN(p, "ICC profile detected contrast very high (>100000)," " falling back to contrast 1000 for sanity. Set the" " icc-contrast option to silence this warning.\n");