summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2019-09-30 20:37:25 +0200
committerPaul B Mahol <onemda@gmail.com>2019-09-30 20:37:25 +0200
commit056bc9393ea78d24982cdf555c0bb3fcfe734262 (patch)
treeb33471d26811c93f9c4223e65ea766b45a262028 /libavfilter
parentc888adf590eeaf8f854de9067886ecb2f0f08419 (diff)
avfilter/vf_photosensitivity: fix memleak
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/vf_photosensitivity.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavfilter/vf_photosensitivity.c b/libavfilter/vf_photosensitivity.c
index 4559454846..e05c187eeb 100644
--- a/libavfilter/vf_photosensitivity.c
+++ b/libavfilter/vf_photosensitivity.c
@@ -220,6 +220,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
int this_badness, current_badness, fixed_badness, new_badness, i, res;
PhotosensitivityFrame ef;
AVFrame *src, *out;
+ int free_in = 0;
float factor;
AVDictionary **metadata;
@@ -270,12 +271,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
s->history[s->history_pos] = this_badness;
}
src = s->last_frame_av;
+ free_in = 1;
}
s->history_pos = (s->history_pos + 1) % s->nb_frames;
out = ff_get_video_buffer(outlink, in->width, in->height);
if (!out) {
- av_frame_free(&in);
+ if (free_in == 1)
+ av_frame_free(&in);
return AVERROR(ENOMEM);
}
av_frame_copy_props(out, in);
@@ -296,6 +299,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
av_dict_set(metadata, "lavfi.photosensitivity.factor", value, 0);
}
av_frame_copy(out, src);
+ if (free_in == 1)
+ av_frame_free(&in);
return ff_filter_frame(outlink, out);
}