[FFmpeg-cvslog] lavfi/vidstabdetect: fix direct path.

Clément Bœsch git at videolan.org
Wed Apr 24 18:47:56 CEST 2013


ffmpeg | branch: master | Clément Bœsch <ubitux at gmail.com> | Wed Apr 24 17:55:55 2013 +0200| [c7d2a3abf037f0bd7755f2ac39ee6dead979c596] | committer: Clément Bœsch

lavfi/vidstabdetect: fix direct path.

The frame must be writable if the show option is set, otherwise pass the
frame unchanged.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c7d2a3abf037f0bd7755f2ac39ee6dead979c596
---

 libavfilter/vf_vidstabdetect.c |   25 +++----------------------
 1 file changed, 3 insertions(+), 22 deletions(-)

diff --git a/libavfilter/vf_vidstabdetect.c b/libavfilter/vf_vidstabdetect.c
index bbc8ef4..d96ca8e 100644
--- a/libavfilter/vf_vidstabdetect.c
+++ b/libavfilter/vf_vidstabdetect.c
@@ -160,22 +160,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
     LocalMotions localmotions;
 
     AVFilterLink *outlink = inlink->dst->outputs[0];
-    int direct = 0;
-    AVFrame *out;
     VSFrame frame;
     int plane;
 
-    if (av_frame_is_writable(in)) {
-        direct = 1;
-        out = in;
-    } else {
-        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
-        if (!out) {
-            av_frame_free(&in);
-            return AVERROR(ENOMEM);
-        }
-        av_frame_copy_props(out, in);
-    }
+    if (sd->conf.show > 0 && !av_frame_is_writable(in))
+        av_frame_make_writable(in);
 
     for (plane = 0; plane < md->fi.planes; plane++) {
         frame.data[plane] = in->data[plane];
@@ -191,16 +180,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
         }
         vs_vector_del(&localmotions);
     }
-    if (sd->conf.show > 0 && !direct) {
-        av_image_copy(out->data, out->linesize,
-                      (void*)in->data, in->linesize,
-                      in->format, in->width, in->height);
-    }
-
-    if (!direct)
-        av_frame_free(&in);
 
-    return ff_filter_frame(outlink, out);
+    return ff_filter_frame(outlink, in);
 }
 
 static const AVFilterPad avfilter_vf_vidstabdetect_inputs[] = {



More information about the ffmpeg-cvslog mailing list