[FFmpeg-devel] [PATCH] lavfi/idet: switch to filter_frame API

Matthieu Bouron matthieu.bouron at gmail.com
Fri Dec 7 11:15:50 CET 2012


On Thu, Dec 06, 2012 at 10:47:47PM +0100, Stefano Sabatini wrote:
> On date Thursday 2012-12-06 21:09:17 +0100, Matthieu Bouron encoded:
> > ---
> >  libavfilter/vf_idet.c | 29 +++++++----------------------
> >  1 file changed, 7 insertions(+), 22 deletions(-)
> > 
> > diff --git a/libavfilter/vf_idet.c b/libavfilter/vf_idet.c
> > index cc20fac..7470b51 100644
> > --- a/libavfilter/vf_idet.c
> > +++ b/libavfilter/vf_idet.c
> > @@ -165,17 +165,17 @@ static void filter(AVFilterContext *ctx)
> >      av_log(ctx, AV_LOG_DEBUG, "Single frame:%s, Multi frame:%s\n", type2str(type), type2str(idet->last_type));
> >  }
> >  
> > -static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
> > +static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
> >  {
> > -    AVFilterContext *ctx = link->dst;
> > +    AVFilterContext *ctx = inlink->dst;
> >      IDETContext *idet = ctx->priv;
> >  
> >      if (idet->prev)
> >          avfilter_unref_buffer(idet->prev);
> >      idet->prev = idet->cur;
> >      idet->cur  = idet->next;
> > -    idet->next = picref;
> > -    link->cur_buf = NULL;
> > +    idet->next = inpicref;
> 
> > +    inlink->cur_buf = NULL;
> 
> This can be safely skipped.
>   
> >      if (!idet->cur)
> >          return 0;
> > @@ -183,26 +183,14 @@ static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
> >      if (!idet->prev)
> >          idet->prev = avfilter_ref_buffer(idet->cur, ~0);
> >  
> > -    return ff_start_frame(ctx->outputs[0], avfilter_ref_buffer(idet->cur, ~0));
> > -}
> > -
> > -static int end_frame(AVFilterLink *link)
> > -{
> > -    AVFilterContext *ctx = link->dst;
> > -    IDETContext *idet = ctx->priv;
> > -
> > -    if (!idet->cur)
> > -        return 0;
> > -
> >      if (!idet->csp)
> > -        idet->csp = av_pix_fmt_desc_get(link->format);
> > +        idet->csp = av_pix_fmt_desc_get(inlink->format);
> >      if (idet->csp->comp[0].depth_minus1 / 8 == 1)
> >          idet->filter_line = (void*)filter_line_c_16bit;
> >  
> >      filter(ctx);
> >  
> > -    ff_draw_slice(ctx->outputs[0], 0, link->h, 1);
> > -    return ff_end_frame(ctx->outputs[0]);
> > +    return ff_filter_frame(ctx->outputs[0], avfilter_ref_buffer(idet->next, ~0));
> >  }
> >  
> >  static int request_frame(AVFilterLink *link)
> > @@ -308,15 +296,12 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
> >      return 0;
> >  }
> >  
> > -static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; }
> >  
> >  static const AVFilterPad idet_inputs[] = {
> >      {
> >          .name         = "default",
> >          .type         = AVMEDIA_TYPE_VIDEO,
> > -        .start_frame  = start_frame,
> > -        .draw_slice   = null_draw_slice,
> > -        .end_frame    = end_frame,
> > +        .filter_frame = filter_frame,
> >          .min_perms    = AV_PERM_PRESERVE,
> >      },
> >      { NULL }
> 
> inlink->link and picref->inpicref can be avoided to shrink the diff,
> but looks good anyway, thanks.

New patch attached.

[...]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-lavfi-idet-switch-to-filter_frame-API.patch
Type: text/x-diff
Size: 2540 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20121207/991539d6/attachment.bin>


More information about the ffmpeg-devel mailing list