lavfi/atempo: fix tempo range limit inconsistency
[ffmpeg.git] / libavfilter / vf_framestep.c
index bd079cc..8102e7c 100644 (file)
@@ -28,9 +28,9 @@
 #include "internal.h"
 #include "video.h"
 
 #include "internal.h"
 #include "video.h"
 
-typedef struct {
+typedef struct NullContext {
     const AVClass *class;
     const AVClass *class;
-    int frame_step, frame_count;
+    int frame_step;
 } FrameStepContext;
 
 #define OFFSET(x) offsetof(FrameStepContext, x)
 } FrameStepContext;
 
 #define OFFSET(x) offsetof(FrameStepContext, x)
@@ -38,7 +38,7 @@ typedef struct {
 
 static const AVOption framestep_options[] = {
     { "step", "set frame step",  OFFSET(frame_step), AV_OPT_TYPE_INT, {.i64=1}, 1, INT_MAX, FLAGS},
 
 static const AVOption framestep_options[] = {
     { "step", "set frame step",  OFFSET(frame_step), AV_OPT_TYPE_INT, {.i64=1}, 1, INT_MAX, FLAGS},
-    {NULL},
+    { NULL },
 };
 
 AVFILTER_DEFINE_CLASS(framestep);
 };
 
 AVFILTER_DEFINE_CLASS(framestep);
@@ -49,7 +49,6 @@ static int config_output_props(AVFilterLink *outlink)
     FrameStepContext *framestep = ctx->priv;
     AVFilterLink *inlink = ctx->inputs[0];
 
     FrameStepContext *framestep = ctx->priv;
     AVFilterLink *inlink = ctx->inputs[0];
 
-    outlink->flags |= FF_LINK_FLAG_REQUEST_LOOP;
     outlink->frame_rate =
         av_div_q(inlink->frame_rate, (AVRational){framestep->frame_step, 1});
 
     outlink->frame_rate =
         av_div_q(inlink->frame_rate, (AVRational){framestep->frame_step, 1});
 
@@ -64,7 +63,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *ref)
 {
     FrameStepContext *framestep = inlink->dst->priv;
 
 {
     FrameStepContext *framestep = inlink->dst->priv;
 
-    if (!(framestep->frame_count++ % framestep->frame_step)) {
+    if (!(inlink->frame_count_out % framestep->frame_step)) {
         return ff_filter_frame(inlink->dst->outputs[0], ref);
     } else {
         av_frame_free(&ref);
         return ff_filter_frame(inlink->dst->outputs[0], ref);
     } else {
         av_frame_free(&ref);
@@ -74,27 +73,28 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *ref)
 
 static const AVFilterPad framestep_inputs[] = {
     {
 
 static const AVFilterPad framestep_inputs[] = {
     {
-        .name             = "default",
-        .type             = AVMEDIA_TYPE_VIDEO,
-        .filter_frame     = filter_frame,
+        .name         = "default",
+        .type         = AVMEDIA_TYPE_VIDEO,
+        .filter_frame = filter_frame,
     },
     { NULL }
 };
 
 static const AVFilterPad framestep_outputs[] = {
     {
     },
     { NULL }
 };
 
 static const AVFilterPad framestep_outputs[] = {
     {
-        .name          = "default",
-        .type          = AVMEDIA_TYPE_VIDEO,
-        .config_props  = config_output_props,
+        .name         = "default",
+        .type         = AVMEDIA_TYPE_VIDEO,
+        .config_props = config_output_props,
     },
     { NULL }
 };
 
     },
     { NULL }
 };
 
-AVFilter avfilter_vf_framestep = {
-    .name      = "framestep",
+AVFilter ff_vf_framestep = {
+    .name        = "framestep",
     .description = NULL_IF_CONFIG_SMALL("Select one frame every N frames."),
     .description = NULL_IF_CONFIG_SMALL("Select one frame every N frames."),
-    .priv_size = sizeof(FrameStepContext),
-    .priv_class = &framestep_class,
-    .inputs    = framestep_inputs,
-    .outputs   = framestep_outputs,
+    .priv_size   = sizeof(FrameStepContext),
+    .priv_class  = &framestep_class,
+    .inputs      = framestep_inputs,
+    .outputs     = framestep_outputs,
+    .flags       = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC,
 };
 };