mirror of https://github.com/mpv-player/mpv
image_writer: check for conversion errors
This can happen when e.g. a VO returns a screenshot in an unsupported format.
This commit is contained in:
parent
a6997be61b
commit
c118d8f6cc
|
@ -296,7 +296,11 @@ int write_image(struct mp_image *image, const struct image_writer_opts *opts,
|
|||
}
|
||||
mp_image_copy_attributes(dst, image);
|
||||
|
||||
mp_image_swscale(dst, image, mp_sws_hq_flags);
|
||||
if (mp_image_swscale(dst, image, mp_sws_hq_flags) < 0) {
|
||||
mp_err(log, "Error when converting image.\n");
|
||||
talloc_free(dst);
|
||||
return 0;
|
||||
}
|
||||
|
||||
allocated_image = dst;
|
||||
image = dst;
|
||||
|
|
|
@ -268,24 +268,26 @@ int mp_sws_scale(struct mp_sws_context *ctx, struct mp_image *dst,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void mp_image_swscale(struct mp_image *dst, struct mp_image *src,
|
||||
int mp_image_swscale(struct mp_image *dst, struct mp_image *src,
|
||||
int my_sws_flags)
|
||||
{
|
||||
struct mp_sws_context *ctx = mp_sws_alloc(NULL);
|
||||
ctx->flags = my_sws_flags;
|
||||
mp_sws_scale(ctx, dst, src);
|
||||
int res = mp_sws_scale(ctx, dst, src);
|
||||
talloc_free(ctx);
|
||||
return res;
|
||||
}
|
||||
|
||||
void mp_image_sw_blur_scale(struct mp_image *dst, struct mp_image *src,
|
||||
int mp_image_sw_blur_scale(struct mp_image *dst, struct mp_image *src,
|
||||
float gblur)
|
||||
{
|
||||
struct mp_sws_context *ctx = mp_sws_alloc(NULL);
|
||||
ctx->flags = mp_sws_hq_flags;
|
||||
ctx->src_filter = sws_getDefaultFilter(gblur, gblur, 0, 0, 0, 0, 0);
|
||||
ctx->force_reload = true;
|
||||
mp_sws_scale(ctx, dst, src);
|
||||
int res = mp_sws_scale(ctx, dst, src);
|
||||
talloc_free(ctx);
|
||||
return res;
|
||||
}
|
||||
|
||||
int mp_sws_get_vf_equalizer(struct mp_sws_context *sws, struct vf_seteq *eq)
|
||||
|
|
|
@ -18,10 +18,10 @@ extern const int mp_sws_fast_flags;
|
|||
|
||||
bool mp_sws_supported_format(int imgfmt);
|
||||
|
||||
void mp_image_swscale(struct mp_image *dst, struct mp_image *src,
|
||||
int mp_image_swscale(struct mp_image *dst, struct mp_image *src,
|
||||
int my_sws_flags);
|
||||
|
||||
void mp_image_sw_blur_scale(struct mp_image *dst, struct mp_image *src,
|
||||
int mp_image_sw_blur_scale(struct mp_image *dst, struct mp_image *src,
|
||||
float gblur);
|
||||
|
||||
struct mp_sws_context {
|
||||
|
|
Loading…
Reference in New Issue