diff options
-rw-r--r-- | filters/f_autoconvert.c | 2 | ||||
-rw-r--r-- | filters/f_swscale.c | 9 | ||||
-rw-r--r-- | filters/f_swscale.h | 3 | ||||
-rw-r--r-- | video/sws_utils.c | 1 |
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); |