mirror of https://git.ffmpeg.org/ffmpeg.git
avfilter/vf_fps: Do not drop a random subset of frames
This also avoids droping the frame which is closest to the target timestamp Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
b11994593a
commit
7f02fcd917
|
@ -214,17 +214,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
|
||||||
|
|
||||||
if (delta < 1) {
|
if (delta < 1) {
|
||||||
/* drop the frame and everything buffered except the first */
|
/* drop the frame and everything buffered except the first */
|
||||||
AVFrame *tmp;
|
|
||||||
int drop = av_fifo_size(s->fifo)/sizeof(AVFrame*);
|
int drop = av_fifo_size(s->fifo)/sizeof(AVFrame*);
|
||||||
|
|
||||||
av_log(ctx, AV_LOG_DEBUG, "Dropping %d frame(s).\n", drop);
|
av_log(ctx, AV_LOG_DEBUG, "Dropping %d frame(s).\n", drop);
|
||||||
s->drop += drop;
|
s->drop += drop;
|
||||||
|
|
||||||
av_fifo_generic_read(s->fifo, &tmp, sizeof(tmp), NULL);
|
|
||||||
flush_fifo(s->fifo);
|
flush_fifo(s->fifo);
|
||||||
ret = write_to_fifo(s->fifo, tmp);
|
ret = write_to_fifo(s->fifo, buf);
|
||||||
|
|
||||||
av_frame_free(&buf);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue