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

Michael Niedermayer michaelni
Tue Feb 26 01:33:34 CET 2008


On Mon, Feb 25, 2008 at 01:11:02PM -0500, Bobby Bingham wrote:
> 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.

Could you or vitor summarize what exactly would become more complex without
the dummy filters? Other filter systems like mplayers dont need
such dummy filters.

Also an application which doesnt want to interface directly with a filter
graph could always insert a fifo or whatever filter in between.

And if the goal is to somehow allow one graph to be inserted as filter into
another then i plain dont understand what this is good for.

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

No snowflake in an avalanche ever feels responsible. -- Voltaire
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080226/cdc147ba/attachment.pgp>



More information about the ffmpeg-devel mailing list