avfilter/vf_shuffleframes: unbreak filter
authorPaul B Mahol <onemda@gmail.com>
Thu, 8 Sep 2016 08:53:43 +0000 (10:53 +0200)
committerPaul B Mahol <onemda@gmail.com>
Thu, 8 Sep 2016 08:56:30 +0000 (10:56 +0200)
Regression since 736e2e2c30088d0c2a428a51372c78a0bfb7f356.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavfilter/vf_shuffleframes.c

index f49c9c6..bfbf4bd 100644 (file)
@@ -84,14 +84,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 {
     AVFilterContext    *ctx = inlink->dst;
     ShuffleFramesContext *s = ctx->priv;
-    int ret;
+    int ret = 0;
 
     if (s->in_frames < s->nb_frames) {
         s->frames[s->in_frames] = frame;
         s->pts[s->in_frames] = frame->pts;
         s->in_frames++;
-        ret = 0;
-    } else if (s->in_frames == s->nb_frames) {
+    }
+
+    if (s->in_frames == s->nb_frames) {
         int n, x;
 
         for (n = 0; n < s->nb_frames; n++) {
@@ -108,8 +109,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 
         for (n = 0; n < s->nb_frames; n++)
             av_frame_free(&s->frames[n]);
-    } else
-        av_assert0(0);
+    }
 
     return ret;
 }
@@ -118,6 +118,11 @@ static av_cold void uninit(AVFilterContext *ctx)
 {
     ShuffleFramesContext *s = ctx->priv;
 
+    while (s->in_frames > 0) {
+        s->in_frames--;
+        av_frame_free(&s->frames[s->in_frames]);
+    }
+
     av_freep(&s->frames);
     av_freep(&s->map);
     av_freep(&s->pts);