[FFmpeg-devel] [PATCH 6/6] lavfi/af_atempo: simplify request_frame loop.

Pavel Koshevoy pkoshevoy at gmail.com
Sun Mar 31 20:36:36 CEST 2013


On 3/31/13 11:43 AM, Nicolas George wrote:
> Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
> ---
>   libavfilter/af_atempo.c |   11 +++--------
>   1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
> index 9547969..af49b0b 100644
> --- a/libavfilter/af_atempo.c
> +++ b/libavfilter/af_atempo.c
> @@ -139,7 +139,6 @@ typedef struct {
>       FFTSample *correlation;
>   
>       // for managing AVFilterPad.request_frame and AVFilterPad.filter_frame
> -    int request_fulfilled;
>       AVFrame *dst_buffer;
>       uint8_t *dst;
>       uint8_t *dst_end;
> @@ -181,7 +180,6 @@ static void yae_clear(ATempoContext *atempo)
>       atempo->dst     = NULL;
>       atempo->dst_end = NULL;
>   
> -    atempo->request_fulfilled = 0;
>       atempo->nsamples_in       = 0;
>       atempo->nsamples_out      = 0;
>   }
> @@ -1017,6 +1015,8 @@ static int config_props(AVFilterLink *inlink)
>       int sample_rate = (int)inlink->sample_rate;
>       int channels = av_get_channel_layout_nb_channels(inlink->channel_layout);
>   
> +    ctx->outputs[0]->flags |= FF_LINK_FLAG_REQUEST_LOOP;
> +
>       return yae_reset(atempo, format, sample_rate, channels);
>   }
>   
> @@ -1074,7 +1074,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *src_buffer)
>               ret = push_samples(atempo, outlink, n_out);
>               if (ret < 0)
>                   goto end;
> -            atempo->request_fulfilled = 1;
>           }
>       }
>   
> @@ -1090,11 +1089,7 @@ static int request_frame(AVFilterLink *outlink)
>       ATempoContext *atempo = ctx->priv;
>       int ret;
>   
> -    atempo->request_fulfilled = 0;
> -    do {
> -        ret = ff_request_frame(ctx->inputs[0]);
> -    }
> -    while (!atempo->request_fulfilled && ret >= 0);
> +    ret = ff_request_frame(ctx->inputs[0]);
>   
>       if (ret == AVERROR_EOF) {
>           // flush the filter:

Looks OK.  Perhaps I shouldn't be listed as the maintainer for 
af_atempo.c any more, since you and others are making all of the 
changes?  I don't really have anything new to add to the filter anyway...

Pavel.


More information about the ffmpeg-devel mailing list