]> git.sesse.net Git - ffmpeg/commitdiff
avfilter/vf_photosensitivity: fix memleak
authorPaul B Mahol <onemda@gmail.com>
Mon, 30 Sep 2019 18:37:25 +0000 (20:37 +0200)
committerPaul B Mahol <onemda@gmail.com>
Mon, 30 Sep 2019 18:37:25 +0000 (20:37 +0200)
libavfilter/vf_photosensitivity.c

index 4559454846a34c1d2d1229cc3a57a11952613b36..e05c187eebb9f0d77ccf63aac43afdaafb7e2a7b 100644 (file)
@@ -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);
 }