---
 libavfilter/vf_fps.c |   22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/libavfilter/vf_fps.c b/libavfilter/vf_fps.c
index 7f51752..4cccf08 100644
--- a/libavfilter/vf_fps.c
+++ b/libavfilter/vf_fps.c
@@ -44,8 +44,6 @@ typedef struct FPSContext {
     char *fps;              ///< a string describing target framerate
 
     /* statistics */
-    int frames_in;             ///< number of frames on input
-    int frames_out;            ///< number of frames on output
     int dup;                   ///< number of frames duplicated
     int drop;                  ///< number of framed dropped
 } FPSContext;
@@ -101,8 +99,8 @@ static av_cold void uninit(AVFilterContext *ctx)
         av_fifo_free(s->fifo);
     }
 
-    av_log(ctx, AV_LOG_VERBOSE, "%d frames in, %d frames out; %d frames 
dropped, "
-           "%d frames duplicated.\n", s->frames_in, s->frames_out, s->drop, 
s->dup);
+    av_log(ctx, AV_LOG_VERBOSE, "%d frames dropped, %d frames duplicated.\n",
+           s->drop, s->dup);
 }
 
 static int config_props(AVFilterLink* link)
@@ -120,10 +118,10 @@ static int request_frame(AVFilterLink *outlink)
 {
     AVFilterContext *ctx = outlink->src;
     FPSContext        *s = ctx->priv;
-    int frames_out = s->frames_out;
+    int frames_out = ctx->nb_frames_out[0];
     int ret = 0;
 
-    while (ret >= 0 && s->frames_out == frames_out)
+    while (ret >= 0 && ctx->nb_frames_out[0] == frames_out)
         ret = ff_request_frame(ctx->inputs[0]);
 
     /* flush the fifo */
@@ -134,12 +132,10 @@ static int request_frame(AVFilterLink *outlink)
 
             av_fifo_generic_read(s->fifo, &buf, sizeof(buf), NULL);
             buf->pts = av_rescale_q(s->first_pts, ctx->inputs[0]->time_base,
-                                    outlink->time_base) + s->frames_out;
+                                    outlink->time_base) + 
ctx->nb_frames_out[0];
 
             if ((ret = ff_filter_frame(outlink, buf)) < 0)
                 return ret;
-
-            s->frames_out++;
         }
         return 0;
     }
@@ -169,7 +165,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
     int64_t delta;
     int i, ret;
 
-    s->frames_in++;
     /* discard frames until we get the first timestamp */
     if (s->pts == AV_NOPTS_VALUE) {
         if (buf->pts != AV_NOPTS_VALUE) {
@@ -237,19 +232,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame 
*buf)
         }
 
         buf_out->pts = av_rescale_q(s->first_pts, inlink->time_base,
-                                    outlink->time_base) + s->frames_out;
+                                    outlink->time_base) + 
ctx->nb_frames_out[0];
 
         if ((ret = ff_filter_frame(outlink, buf_out)) < 0) {
             av_frame_free(&buf);
             return ret;
         }
-
-        s->frames_out++;
     }
     flush_fifo(s->fifo);
 
     ret = write_to_fifo(s->fifo, buf);
-    s->pts = s->first_pts + av_rescale_q(s->frames_out, outlink->time_base, 
inlink->time_base);
+    s->pts = s->first_pts + av_rescale_q(ctx->nb_frames_out[0],
+                                         outlink->time_base, 
inlink->time_base);
 
     return ret;
 }
-- 
1.7.10.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to