[FFmpeg-trac] #3329(avfilter:open): fps filter bug

FFmpeg trac at avcodec.org
Mon Jan 20 11:38:01 CET 2014


#3329: fps filter bug
------------------------------------+------------------------------------
             Reporter:  Krieger     |                    Owner:
                 Type:  defect      |                   Status:  open
             Priority:  normal      |                Component:  avfilter
              Version:  git-master  |               Resolution:
             Keywords:  fps         |               Blocked By:
             Blocking:              |  Reproduced by developer:  1
Analyzed by developer:  1           |
------------------------------------+------------------------------------
Changes (by Cigaes):

 * analyzed:  0 => 1


Comment:

 The timestamp logic in {{{vf_fps}}} is wrong. The major culprit is this
 hunk:

 {{{
     /* number of output frames */
     delta = av_rescale_q_rnd(buf->pts - s->pts, inlink->time_base,
                              outlink->time_base, s->rounding);
 }}}

 As you can see, it means: number of frames to output = (time of next
 frame) - (time of current frame) rescaled to output frame rate. In this
 particular case (2 FPS -> 25 FPS, it is 12.5, rounded to 13. Rounded to 13
 every time. That means a 0.5/25 error for every input frame.

 The in this case fix would be to convert all timestamps to the output time
 base immediately, but it must be tested also when decreasing the frame
 rate and other corner cases.

 As a temporary workaround, I suggest: {{{-vf fps=50,framestep=2}}}: 2→50
 is exact, and framestep is easy.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/3329#comment:2>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list