Commit fddef964 authored by Paul B Mahol's avatar Paul B Mahol

avfilter/vf_colorspace: fix memmory leaks

Fixes #8303
parent daf2bef9
...@@ -780,6 +780,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) ...@@ -780,6 +780,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
res = av_frame_copy_props(out, in); res = av_frame_copy_props(out, in);
if (res < 0) { if (res < 0) {
av_frame_free(&in); av_frame_free(&in);
av_frame_free(&out);
return res; return res;
} }
...@@ -839,13 +840,18 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) ...@@ -839,13 +840,18 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
!s->dither_scratch_base[1][0] || !s->dither_scratch_base[1][1] || !s->dither_scratch_base[1][0] || !s->dither_scratch_base[1][1] ||
!s->dither_scratch_base[2][0] || !s->dither_scratch_base[2][1]) { !s->dither_scratch_base[2][0] || !s->dither_scratch_base[2][1]) {
uninit(ctx); uninit(ctx);
av_frame_free(&in);
av_frame_free(&out);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
s->rgb_sz = rgb_sz; s->rgb_sz = rgb_sz;
} }
res = create_filtergraph(ctx, in, out); res = create_filtergraph(ctx, in, out);
if (res < 0) if (res < 0) {
av_frame_free(&in);
av_frame_free(&out);
return res; return res;
}
s->rgb_stride = rgb_stride / sizeof(int16_t); s->rgb_stride = rgb_stride / sizeof(int16_t);
td.in = in; td.in = in;
td.out = out; td.out = out;
...@@ -859,8 +865,11 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) ...@@ -859,8 +865,11 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
td.out_ss_h = av_pix_fmt_desc_get(out->format)->log2_chroma_h; td.out_ss_h = av_pix_fmt_desc_get(out->format)->log2_chroma_h;
if (s->yuv2yuv_passthrough) { if (s->yuv2yuv_passthrough) {
res = av_frame_copy(out, in); res = av_frame_copy(out, in);
if (res < 0) if (res < 0) {
av_frame_free(&in);
av_frame_free(&out);
return res; return res;
}
} else { } else {
ctx->internal->execute(ctx, convert, &td, NULL, ctx->internal->execute(ctx, convert, &td, NULL,
FFMIN((in->height + 1) >> 1, ff_filter_get_nb_threads(ctx))); FFMIN((in->height + 1) >> 1, ff_filter_get_nb_threads(ctx)));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment