summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filters/f_autoconvert.c2
-rw-r--r--filters/f_swscale.c9
-rw-r--r--filters/f_swscale.h3
-rw-r--r--video/sws_utils.c1
4 files changed, 7 insertions, 8 deletions
diff --git a/filters/f_autoconvert.c b/filters/f_autoconvert.c
index 20c083de54..d563b1fcd3 100644
--- a/filters/f_autoconvert.c
+++ b/filters/f_autoconvert.c
@@ -309,7 +309,7 @@ static bool build_image_converter(struct mp_autoconvert *c, struct mp_log *log,
goto fail;
}
- int out = mp_sws_find_best_out_format(src_fmt, fmts, num_fmts);
+ int out = mp_sws_find_best_out_format(sws, src_fmt, fmts, num_fmts);
if (!out) {
mp_err(log, "can't find video conversion for %s\n",
mp_imgfmt_to_name(src_fmt));
diff --git a/filters/f_swscale.c b/filters/f_swscale.c
index 6b4b5842ac..f9af4d18fb 100644
--- a/filters/f_swscale.c
+++ b/filters/f_swscale.c
@@ -40,17 +40,14 @@
#include "filter.h"
#include "filter_internal.h"
-int mp_sws_find_best_out_format(int in_format, int *out_formats,
- int num_out_formats)
+int mp_sws_find_best_out_format(struct mp_sws_filter *sws, int in_format,
+ int *out_formats, int num_out_formats)
{
- if (sws_isSupportedInput(imgfmt2pixfmt(in_format)) < 1)
- return 0;
-
int best = 0;
for (int n = 0; n < num_out_formats; n++) {
int out_format = out_formats[n];
- if (sws_isSupportedOutput(imgfmt2pixfmt(out_format)) < 1)
+ if (!mp_sws_supports_formats(sws->sws, out_format, in_format))
continue;
if (best) {
diff --git a/filters/f_swscale.h b/filters/f_swscale.h
index 6e26aef1ac..861ad029dd 100644
--- a/filters/f_swscale.h
+++ b/filters/f_swscale.h
@@ -23,7 +23,8 @@ struct mp_sws_filter *mp_sws_filter_create(struct mp_filter *parent);
// formats. This tries to set the output format to the one that will result in
// the least loss. Returns a format from out_formats[], or 0 if no format could
// be chosen (or it's not supported by libswscale).
-int mp_sws_find_best_out_format(int in_format, int *out_formats,
+int mp_sws_find_best_out_format(struct mp_sws_filter *sws,
+ int in_format, int *out_formats,
int num_out_formats);
// Whether the given format is supported as input format.
diff --git a/video/sws_utils.c b/video/sws_utils.c
index 47af77ca50..c22b13109b 100644
--- a/video/sws_utils.c
+++ b/video/sws_utils.c
@@ -202,6 +202,7 @@ void mp_sws_enable_cmdline_opts(struct mp_sws_context *ctx, struct mpv_global *g
ctx->opts_cache = m_config_cache_alloc(ctx, g, &sws_conf);
ctx->force_reload = true;
+ mp_sws_update_from_cmdline(ctx);
#if HAVE_ZIMG
mp_zimg_enable_cmdline_opts(ctx->zimg, g);