summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-10-19 19:11:58 +0200
committerwm4 <wm4@nowhere>2012-10-24 21:56:34 +0200
commita4f9077f6c1a897120616cc70c1ca37c6a247be2 (patch)
tree613c8f7979171f759372abd7869c5ddfe4d9a21b /libmpcodecs
parentbf68634d15c747fd05f118b1bd95e3017c1eb6bb (diff)
downloadmpv-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.c8
-rw-r--r--libmpcodecs/sws_utils.h9
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 */