[FFmpeg-cvslog] lavfi/vf_decimate: do not compare the first frame to itself.
Nicolas George
git at videolan.org
Sun Jan 3 15:54:34 CET 2016
ffmpeg | branch: master | Nicolas George <george at nsup.org> | Sat Oct 24 19:43:55 2015 +0200| [962727acb4e3c4dff856b48460ddcf747fcfda93] | committer: Nicolas George
lavfi/vf_decimate: do not compare the first frame to itself.
This is a waste of computing power and will result to 0,
making it always dropped.
Use maximum difference values instead.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=962727acb4e3c4dff856b48460ddcf747fcfda93
---
libavfilter/vf_decimate.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/libavfilter/vf_decimate.c b/libavfilter/vf_decimate.c
index cd374c3..8b950b4 100644
--- a/libavfilter/vf_decimate.c
+++ b/libavfilter/vf_decimate.c
@@ -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);
More information about the ffmpeg-cvslog
mailing list