lavfi/vf_decimate: do not compare the first frame to itself.
authorNicolas George <george@nsup.org>
Sat, 24 Oct 2015 17:43:55 +0000 (19:43 +0200)
committerNicolas George <george@nsup.org>
Sun, 3 Jan 2016 14:50:51 +0000 (15:50 +0100)
This is a waste of computing power and will result to 0,
making it always dropped.
Use maximum difference values instead.

libavfilter/vf_decimate.c

index cd374c3..8b950b4 100644 (file)
@@ -167,9 +167,12 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
     if (in) {
         /* update frame metrics */
         prv = dm->fid ? dm->queue[dm->fid - 1].frame : dm->last;
-        if (!prv)
-            prv = in;
-        calc_diffs(dm, &dm->queue[dm->fid], prv, in);
+        if (!prv) {
+            dm->queue[dm->fid].maxbdiff = INT64_MAX;
+            dm->queue[dm->fid].totdiff  = INT64_MAX;
+        } else {
+            calc_diffs(dm, &dm->queue[dm->fid], prv, in);
+        }
         if (++dm->fid != dm->cycle)
             return 0;
         av_frame_free(&dm->last);