diff options
author | wm4 <wm4@nowhere> | 2012-10-19 19:11:58 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-10-24 21:56:34 +0200 |
commit | a4f9077f6c1a897120616cc70c1ca37c6a247be2 (patch) | |
tree | 613c8f7979171f759372abd7869c5ddfe4d9a21b /libmpcodecs | |
parent | bf68634d15c747fd05f118b1bd95e3017c1eb6bb (diff) | |
download | mpv-a4f9077f6c1a897120616cc70c1ca37c6a247be2.tar.bz2 mpv-a4f9077f6c1a897120616cc70c1ca37c6a247be2.tar.xz |
draw_bmp: don't try to call swscale if image format not supported
If that happens, we silently fail.
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/sws_utils.c | 8 | ||||
-rw-r--r-- | libmpcodecs/sws_utils.h | 9 |
2 files changed, 15 insertions, 2 deletions
diff --git a/libmpcodecs/sws_utils.c b/libmpcodecs/sws_utils.c index 65b079dd84..d7500efe2e 100644 --- a/libmpcodecs/sws_utils.c +++ b/libmpcodecs/sws_utils.c @@ -131,6 +131,14 @@ struct SwsContext *sws_getContextFromCmdLine_hq(int srcW, int srcH, SWS_ACCURATE_RND | SWS_BITEXACT); } +bool mp_sws_supported_format(int imgfmt) +{ + enum PixelFormat av_format = imgfmt2pixfmt(imgfmt); + + return av_format != PIX_FMT_NONE && sws_isSupportedInput(av_format) + && sws_isSupportedOutput(av_format); +} + void mp_image_swscale(struct mp_image *dst, const struct mp_image *src, struct mp_csp_details *csp, diff --git a/libmpcodecs/sws_utils.h b/libmpcodecs/sws_utils.h index b2c55eb407..70b7d0b7fb 100644 --- a/libmpcodecs/sws_utils.h +++ b/libmpcodecs/sws_utils.h @@ -1,6 +1,7 @@ #ifndef MPLAYER_SWS_UTILS_H #define MPLAYER_SWS_UTILS_H +#include <stdbool.h> #include <libswscale/swscale.h> struct mp_image; @@ -22,8 +23,12 @@ struct SwsContext *sws_getContextFromCmdLine_hq(int srcW, int srcH, int dstFormat); int mp_sws_set_colorspace(struct SwsContext *sws, struct mp_csp_details *csp); -void mp_image_swscale(struct mp_image *dst, const struct mp_image *src, - struct mp_csp_details *csp, int my_sws_flags); +bool mp_sws_supported_format(int imgfmt); + +void mp_image_swscale(struct mp_image *dst, + const struct mp_image *src, + struct mp_csp_details *csp, + int my_sws_flags); #endif /* MP_SWS_UTILS_H */ |