X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_zoompan.c;h=59c9b19ec853491c811532b8d1c8f27d45a13deb;hb=8d861cd850597c009b6d947a556209f4ac7469d9;hp=dea10d51371f6905104061ca785019c2c3496fae;hpb=ff44c2d4f483cda53859ce019f3815c69239a7e0;p=ffmpeg diff --git a/libavfilter/vf_zoompan.c b/libavfilter/vf_zoompan.c index dea10d51371..59c9b19ec85 100644 --- a/libavfilter/vf_zoompan.c +++ b/libavfilter/vf_zoompan.c @@ -245,6 +245,8 @@ static int output_single_frame(AVFilterContext *ctx, AVFrame *in, double *var_va } return ret; error: + sws_freeContext(s->sws); + s->sws = NULL; av_frame_free(&out); return ret; } @@ -257,6 +259,8 @@ static int activate(AVFilterContext *ctx) int status, ret = 0; int64_t pts; + FF_FILTER_FORWARD_STATUS_BACK(outlink, inlink); + if (s->in && ff_outlink_frame_wanted(outlink)) { double zoom = -1, dx = -1, dy = -1; @@ -344,6 +348,10 @@ static av_cold void uninit(AVFilterContext *ctx) sws_freeContext(s->sws); s->sws = NULL; + av_expr_free(s->x_expr); + av_expr_free(s->y_expr); + av_expr_free(s->zoom_expr); + av_frame_free(&s->in); } static const AVFilterPad inputs[] = {