# [FFmpeg-devel] [PATCH] [2/??] [3/3] Filter graphs - Parser for a graph description

Fri Mar 21 16:50:20 CET 2008

```Michael,

On 18 Mar 2008, at 23:12, Michael Niedermayer wrote:
>> So IMO, this case just show that "mathematical" description allows
>> to represent complex graph as well as the original description.
>
> no, it does not, it shows that you could represent the given graph.
> Its
> not a proof that all graphs can be represented. Though its quite easy
> to proof that if you want ...

Indeed all finite graphs can be represented, it's an algebra entirely
axiomatisable, no problems.

> More complex ones without feedback could look like
>
> filter1(T),filter2,filter3,(T)filter4
> VS.
> filter1,filter2*nop,filter3*nop,filter4
>
> i think first wins

It's mostly a matter of taste, to me they are equally complex because
in the first form I may struggle to follow the threading; but as I
wrote in a previous message you need to refine you language to specify
the order of the outputs out of a complex filter.

> With one feedback
>
> (T)filter1,filter2,filter3(T),filter4
> VS.
> !(filter1,filter2,filter3),filter4

Yes, feedback is tricky, no question. But with names you either have
to accept that each time you need a particular feedback you have to
hack the code of your filter (see my previous message), or you have to
provide a some combinator to do it.

> And with multiple feedbacks we have seen that the !*, description is

Agreed, multiple feedback should only be handled with some carefully
crafted abbreviation.

> So IMHO while the * operator might be worth considering, the way
> feedbacks
> are handled is absolutely messy when there is more than 1 feedback.

We have a problem of terminology here: while I agree is difficult to
follow, and clumsy to write, and that there might be better ways, I
don't agree it's messy: it is very precise and well defined, it can be
explained in one line, no further confusion is possible.

> Also i think ,* is unintuitiv |, might be better but then maybe not
> i dunno

Not sure I understand, I expect "*" is the same as Vitor's ";" , just
a different notation.

```