Bug: https://bugs.gentoo.org/910406 Backports the following two commits: https://github.com/FFmpeg/FFmpeg/commit/11eca6018c40f5ebe6af93cbc4b4dce447d8b3bc https://github.com/FFmpeg/FFmpeg/commit/1231003c3c6d4839a9e838d06f8e16ee7690958f --- a/doc/filters.texi +++ b/doc/filters.texi @@ -16242,9 +16242,6 @@ @item disable_builtin Disable built-in GPU sampling (forces LUT). -@item force_icc_lut -Force the use of a full ICC 3DLUT for gamut mapping. - @item disable_fbos Forcibly disable FBOs, resulting in loss of almost all functionality, but offering the maximum possible speed. --- a/libavfilter/version_major.h +++ b/libavfilter/version_major.h @@ -35,4 +35,6 @@ * the public API and may change, break or disappear at any time. */ +#define FF_API_LIBPLACEBO_OPTS (LIBAVFILTER_VERSION_MAJOR < 10) + #endif /* AVFILTER_VERSION_MAJOR_H */ --- a/libavfilter/vf_libplacebo.c +++ b/libavfilter/vf_libplacebo.c @@ -97,7 +97,6 @@ float polar_cutoff; int disable_linear; int disable_builtin; - int force_icc_lut; int force_dither; int disable_fbos; @@ -132,11 +131,15 @@ int inverse_tonemapping; float crosstalk; int tonemapping_lut_size; + +#if FF_API_LIBPLACEBO_OPTS /* for backwards compatibility */ float desat_str; float desat_exp; int gamut_warning; int gamut_clipping; + int force_icc_lut; +#endif /* pl_dither_params */ int dithering; @@ -380,6 +383,7 @@ pl_rect2df_aspect_set(&target.crop, aspect, s->pad_crop_ratio); } +#if FF_API_LIBPLACEBO_OPTS /* backwards compatibility with older API */ if (!tonemapping_mode && (s->desat_str >= 0.0f || s->desat_exp >= 0.0f)) { float str = s->desat_str < 0.0f ? 0.9f : s->desat_str; @@ -397,6 +401,7 @@ gamut_mode = PL_GAMUT_WARN; if (s->gamut_clipping) gamut_mode = PL_GAMUT_DESATURATE; +#endif /* Update render params */ params = (struct pl_render_params) { @@ -458,7 +463,6 @@ .polar_cutoff = s->polar_cutoff, .disable_linear_scaling = s->disable_linear, .disable_builtin_scalers = s->disable_builtin, - .force_icc_lut = s->force_icc_lut, .force_dither = s->force_dither, .disable_fbos = s->disable_fbos, }; @@ -818,11 +822,14 @@ { "inverse_tonemapping", "Inverse tone mapping (range expansion)", OFFSET(inverse_tonemapping), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC }, { "tonemapping_crosstalk", "Crosstalk factor for tone-mapping", OFFSET(crosstalk), AV_OPT_TYPE_FLOAT, {.dbl = 0.04}, 0.0, 0.30, DYNAMIC }, { "tonemapping_lut_size", "Tone-mapping LUT size", OFFSET(tonemapping_lut_size), AV_OPT_TYPE_INT, {.i64 = 256}, 2, 1024, DYNAMIC }, + +#if FF_API_LIBPLACEBO_OPTS /* deprecated options for backwards compatibility, defaulting to -1 to not override the new defaults */ { "desaturation_strength", "Desaturation strength", OFFSET(desat_str), AV_OPT_TYPE_FLOAT, {.dbl = -1.0}, -1.0, 1.0, DYNAMIC | AV_OPT_FLAG_DEPRECATED }, { "desaturation_exponent", "Desaturation exponent", OFFSET(desat_exp), AV_OPT_TYPE_FLOAT, {.dbl = -1.0}, -1.0, 10.0, DYNAMIC | AV_OPT_FLAG_DEPRECATED }, { "gamut_warning", "Highlight out-of-gamut colors", OFFSET(gamut_warning), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC | AV_OPT_FLAG_DEPRECATED }, { "gamut_clipping", "Enable colorimetric gamut clipping", OFFSET(gamut_clipping), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC | AV_OPT_FLAG_DEPRECATED }, +#endif { "dithering", "Dither method to use", OFFSET(dithering), AV_OPT_TYPE_INT, {.i64 = PL_DITHER_BLUE_NOISE}, -1, PL_DITHER_METHOD_COUNT - 1, DYNAMIC, "dither" }, { "none", "Disable dithering", 0, AV_OPT_TYPE_CONST, {.i64 = -1}, 0, 0, STATIC, "dither" }, @@ -847,7 +854,9 @@ { "polar_cutoff", "Polar LUT cutoff", OFFSET(polar_cutoff), AV_OPT_TYPE_FLOAT, {.dbl = 0}, 0.0, 1.0, DYNAMIC }, { "disable_linear", "Disable linear scaling", OFFSET(disable_linear), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC }, { "disable_builtin", "Disable built-in scalers", OFFSET(disable_builtin), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC }, - { "force_icc_lut", "Force the use of a full ICC 3DLUT for color mapping", OFFSET(force_icc_lut), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC }, +#if FF_API_LIBPLACEBO_OPTS + { "force_icc_lut", "Deprecated, does nothing", OFFSET(force_icc_lut), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC | AV_OPT_FLAG_DEPRECATED }, +#endif { "force_dither", "Force dithering", OFFSET(force_dither), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC }, { "disable_fbos", "Force-disable FBOs", OFFSET(disable_fbos), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DYNAMIC }, { NULL },