Signed-off-by: Nicolas George <geo...@nsup.org> --- libavfilter/vf_zoompan.c | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-)
I do not have the faintest idea what the output of this filter is supposed to look like, so testing is limited. But at least now it outputs something. diff --git a/libavfilter/vf_zoompan.c b/libavfilter/vf_zoompan.c index 14d0a1707b..b1ade33b1f 100644 --- a/libavfilter/vf_zoompan.c +++ b/libavfilter/vf_zoompan.c @@ -95,7 +95,6 @@ typedef struct ZPcontext { double var_values[VARS_NB]; int nb_frames; int current_frame; - int finished; AVRational framerate; } ZPContext; @@ -240,7 +239,6 @@ static int output_single_frame(AVFilterContext *ctx, AVFrame *in, double *var_va s->nb_frames = 0; s->current_frame = 0; av_frame_free(&s->in); - s->finished = 1; } return ret; error: @@ -253,22 +251,12 @@ static int activate(AVFilterContext *ctx) ZPContext *s = ctx->priv; AVFilterLink *inlink = ctx->inputs[0]; AVFilterLink *outlink = ctx->outputs[0]; - int status, ret = 0; - int64_t pts; - - if (s->in && ff_outlink_frame_wanted(outlink)) { - double zoom = -1, dx = -1, dy = -1; - - ret = output_single_frame(ctx, s->in, s->var_values, s->current_frame, - &zoom, &dx, &dy); - if (ret < 0) - return ret; - } + int ret = 0; + FF_FILTER_FORWARD_STATUS_BACK(outlink, inlink); if (!s->in && (ret = ff_inlink_consume_frame(inlink, &s->in)) > 0) { - double zoom = -1, dx = -1, dy = -1, nb_frames; + double nb_frames; - s->finished = 0; s->var_values[VAR_IN_W] = s->var_values[VAR_IW] = s->in->width; s->var_values[VAR_IN_H] = s->var_values[VAR_IH] = s->in->height; s->var_values[VAR_OUT_W] = s->var_values[VAR_OW] = s->w; @@ -297,22 +285,16 @@ static int activate(AVFilterContext *ctx) } s->var_values[VAR_DURATION] = s->nb_frames = nb_frames; - + } + if (s->in) { + double zoom = -1, dx = -1, dy = -1; ret = output_single_frame(ctx, s->in, s->var_values, s->current_frame, &zoom, &dx, &dy); - if (ret < 0) - return ret; - } - if (ret < 0) { return ret; - } else if (s->finished && ff_inlink_acknowledge_status(inlink, &status, &pts)) { - ff_outlink_set_status(outlink, status, pts); - return 0; - } else { - if (ff_outlink_frame_wanted(outlink) && s->finished) - ff_inlink_request_frame(inlink); - return 0; } + FF_FILTER_FORWARD_STATUS(inlink, outlink); + FF_FILTER_FORWARD_WANTED(outlink, inlink); + return 0; } static int query_formats(AVFilterContext *ctx) -- 2.14.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel