[FFmpeg-devel] [PATCH 3/5] lavfi/trim: remove request frame hack

Stefano Sabatini stefasab at gmail.com
Sun May 26 22:49:05 CEST 2013


On date Sunday 2013-05-26 19:36:14 +0000, Paul B Mahol encoded:
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
>  libavfilter/trim.c | 24 ++++--------------------
>  1 file changed, 4 insertions(+), 20 deletions(-)
> 
> diff --git a/libavfilter/trim.c b/libavfilter/trim.c
> index 34963ae..384028d 100644
> --- a/libavfilter/trim.c
> +++ b/libavfilter/trim.c
> @@ -69,7 +69,6 @@ typedef struct TrimContext {
>      int64_t next_pts;
>  
>      int eof;
> -    int got_output;
>  } TrimContext;
>  
>  static int init(AVFilterContext *ctx)
> @@ -104,22 +103,9 @@ static int config_input(AVFilterLink *inlink)
>      return 0;
>  }
>  
> -static int request_frame(AVFilterLink *outlink)
> +static int config_output(AVFilterLink *outlink)
>  {
> -    AVFilterContext *ctx = outlink->src;
> -    TrimContext       *s = ctx->priv;
> -    int ret;
> -
> -    s->got_output = 0;
> -    while (!s->got_output) {
> -        if (s->eof)
> -            return AVERROR_EOF;
> -
> -        ret = ff_request_frame(ctx->inputs[0]);
> -        if (ret < 0)
> -            return ret;
> -    }
> -
> +    outlink->flags |= FF_LINK_FLAG_REQUEST_LOOP;
>      return 0;
>  }
>  
> @@ -182,7 +168,6 @@ static int trim_filter_frame(AVFilterLink *inlink, AVFrame *frame)
>      }
>  
>      s->nb_frames++;
> -    s->got_output = 1;
>  
>      return ff_filter_frame(ctx->outputs[0], frame);
>  
> @@ -224,7 +209,7 @@ static const AVFilterPad trim_outputs[] = {
>      {
>          .name          = "default",
>          .type          = AVMEDIA_TYPE_VIDEO,
> -        .request_frame = request_frame,
> +        .config_props  = config_output,
>      },
>      { NULL }
>  };
> @@ -346,7 +331,6 @@ static int atrim_filter_frame(AVFilterLink *inlink, AVFrame *frame)
>      } else
>          frame->nb_samples = end_sample;
>  
> -    s->got_output = 1;
>      return ff_filter_frame(ctx->outputs[0], frame);
>  
>  drop:
> @@ -387,7 +371,7 @@ static const AVFilterPad atrim_outputs[] = {
>      {
>          .name          = "default",
>          .type          = AVMEDIA_TYPE_AUDIO,
> -        .request_frame = request_frame,
> +        .config_props  = config_output,

Looks good if tested&works, thanks.
-- 
FFmpeg = Fascinating Friendly MultiPurpose Ephemeral Guide


More information about the ffmpeg-devel mailing list