[FFmpeg-devel] [PATCH] [2/??] [2/3] Filter graphs - Basic infrastructure

Bobby Bingham uhmmmm
Mon Feb 25 19:11:02 CET 2008


On Sun, 24 Feb 2008 12:58:20 +0100
Vitor Sessak <vitor1001 at gmail.com> wrote:

> Hi
> 
> Michael Niedermayer wrote:
> > On Sat, Feb 16, 2008 at 12:44:04PM +0100, Vitor Sessak wrote:
> >> See $subj.
> >>
> > 
> >> /*
> >>  * filter graphs
> >>  * copyright (c) 2007 Bobby Bingham
> >>  *
> > [...]
> >> #include "avfilter.h"
> >> #include "avfiltergraph.h"
> >>
> > 
> >> extern AVFilter avfilter_vf_scale;
> >> extern AVFilter avfilter_vf_graph;
> >> extern AVFilter avfilter_vf_graphdesc;
> > 
> > this belongs in some header
> > 
> > 
> >> typedef struct AVFilterGraph {
> >>     unsigned filter_count;
> >>     AVFilterContext **filters;
> >>
> >>     /** fake filters to handle links to internal filters */
> >>     AVFilterContext *link_filter_in;
> >>     AVFilterContext *link_filter_out;
> >> } GraphContext;
> >>
> >> typedef struct {
> >>     AVFilterContext *graph;
> >> } GraphLinkContext;
> >>
> >> static int link_init(AVFilterContext *ctx, const char *args, void
> >> *opaque) {
> >>     GraphLinkContext *linkctx = ctx->priv;
> >>     linkctx->graph = opaque;
> >>     return !opaque;
> >> }
> >>
> >> /**
> >>  * Given the link between the dummy filter and an internal filter
> >> whose input
> >>  * is being exported outside the graph, this returns the
> >> externally visible
> >>  * link.
> >>  */
> >> static inline AVFilterLink *get_extern_input_link(AVFilterLink
> >> *link) {
> >>     GraphLinkContext *lctx = link->src->priv;
> >>     return lctx->graph->inputs[link->srcpad];
> >> }
> > 
> > Why are all the dummy filters needed? This looks kinda messy ...
> > Cant a filter graph just be a filter graph where the filters
> > directly link to the outside? If dummy filters really are needed (i
> > need a clear explanation for this first) then they should at least
> > be in their seperate vf_ files.
> 
> I think dummy filters were introduced to make a filter graph a filter 
> like any other. This make all the rest of the filter framework
> simpler (no need to add graph handling code to avfilter_draw_slice(),
> etc). I'm cc'ing this to Bobby, this is the kind of design decision I
> think he can explain better than myself.
> 

Yes, this was the reason.
I agree that the dummy filters are ugly, but I thought it was worth it
to let them be treated as a sort of black box filter and not complicate
the api or applications too much to deal with them.

-- 
Bobby Bingham
Never trust atoms.  Or anything made of atoms.
??????????????????????




More information about the ffmpeg-devel mailing list