avfilter/vf_idet: flush internal buffers on parameter changes
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 19 Jan 2015 04:36:27 +0000 (05:36 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 19 Jan 2015 05:03:57 +0000 (06:03 +0100)
This is needed to auto insert the filter by default

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavfilter/vf_idet.c

index 72729be833d40c641d624de3c003ec08c58dc007..c6ee8dbb334c0948953021f7b1e3991002d035f6 100644 (file)
@@ -249,6 +249,18 @@ static int filter_frame(AVFilterLink *link, AVFrame *picref)
         return ff_filter_frame(ctx->outputs[0], picref);
     }
 
+    if(   picref->width  != link->w
+       || picref->height != link->h
+       || picref->format != link->format) {
+        link->dst->inputs[0]->format = picref->format;
+        link->dst->inputs[0]->w      = picref->width;
+        link->dst->inputs[0]->h      = picref->height;
+
+        av_frame_free(&idet->prev);
+        av_frame_free(&idet->cur );
+        av_frame_free(&idet->next);
+    }
+
     if (idet->prev)
         av_frame_free(&idet->prev);
     idet->prev = idet->cur;