diff options
author | Paul B Mahol <onemda@gmail.com> | 2013-04-11 00:09:47 +0000 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2013-04-11 00:18:28 +0000 |
commit | 7c79ec66b6cc25a150d33d7397c8f4310b77e70f (patch) | |
tree | 696d5e5dcc85e3a5e325eac0d71a8fa1fa4fd97e /libavfilter/vf_framestep.c | |
parent | f77db72965f834141a5c7cc405ff4b15b70eeacb (diff) | |
download | ffmpeg-7c79ec66b6cc25a150d33d7397c8f4310b77e70f.tar.gz |
lavfi/framestep: remove request_frame hack
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavfilter/vf_framestep.c')
-rw-r--r-- | libavfilter/vf_framestep.c | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/libavfilter/vf_framestep.c b/libavfilter/vf_framestep.c index 50a0f509ca..bd079cc32c 100644 --- a/libavfilter/vf_framestep.c +++ b/libavfilter/vf_framestep.c @@ -30,7 +30,7 @@ typedef struct { const AVClass *class; - int frame_step, frame_count, frame_selected; + int frame_step, frame_count; } FrameStepContext; #define OFFSET(x) offsetof(FrameStepContext, x) @@ -49,6 +49,7 @@ static int config_output_props(AVFilterLink *outlink) 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}); @@ -64,34 +65,17 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *ref) FrameStepContext *framestep = inlink->dst->priv; if (!(framestep->frame_count++ % framestep->frame_step)) { - framestep->frame_selected = 1; return ff_filter_frame(inlink->dst->outputs[0], ref); } else { - framestep->frame_selected = 0; av_frame_free(&ref); return 0; } } -static int request_frame(AVFilterLink *outlink) -{ - FrameStepContext *framestep = outlink->src->priv; - AVFilterLink *inlink = outlink->src->inputs[0]; - int ret; - - framestep->frame_selected = 0; - do { - ret = ff_request_frame(inlink); - } while (!framestep->frame_selected && ret >= 0); - - return ret; -} - static const AVFilterPad framestep_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_VIDEO, - .get_video_buffer = ff_null_get_video_buffer, .filter_frame = filter_frame, }, { NULL } @@ -102,7 +86,6 @@ static const AVFilterPad framestep_outputs[] = { .name = "default", .type = AVMEDIA_TYPE_VIDEO, .config_props = config_output_props, - .request_frame = request_frame, }, { NULL } }; |