diff options
Diffstat (limited to 'video')
-rw-r--r-- | video/sws_utils.c | 15 | ||||
-rw-r--r-- | video/sws_utils.h | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/video/sws_utils.c b/video/sws_utils.c index a310772280..9f1d0fd950 100644 --- a/video/sws_utils.c +++ b/video/sws_utils.c @@ -121,6 +121,21 @@ bool mp_sws_supported_format(int imgfmt) && sws_isSupportedOutput(av_format); } +bool mp_sws_supports_formats(struct mp_sws_context *ctx, + int imgfmt_out, int imgfmt_in) +{ +#if HAVE_ZIMG + if (ctx->allow_zimg && ctx->opts_allow_zimg) { + if (mp_zimg_supports_in_format(imgfmt_in) && + mp_zimg_supports_out_format(imgfmt_out)) + return true; + } +#endif + + return sws_isSupportedInput(imgfmt2pixfmt(imgfmt_in)) && + sws_isSupportedOutput(imgfmt2pixfmt(imgfmt_out)); +} + static int mp_csp_to_sws_colorspace(enum mp_csp csp) { // The SWS_CS_* macros are just convenience redefinitions of the diff --git a/video/sws_utils.h b/video/sws_utils.h index 1d40ceab66..c305bda748 100644 --- a/video/sws_utils.h +++ b/video/sws_utils.h @@ -59,6 +59,9 @@ void mp_sws_set_from_cmdline(struct mp_sws_context *ctx, struct mpv_global *g); int mp_sws_scale(struct mp_sws_context *ctx, struct mp_image *dst, struct mp_image *src); +bool mp_sws_supports_formats(struct mp_sws_context *ctx, + int imgfmt_out, int imgfmt_in); + struct mp_image *mp_img_swap_to_native(struct mp_image *img); #endif /* MP_SWS_UTILS_H */ |