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

Víctor Paesa wzrlpy
Wed Mar 19 09:34:19 CET 2008

```Hi,

Robert Swain said:
>
> On 18 Mar 2008, at 22:13, Aurelien Jacobs wrote:
>> Michael Niedermayer wrote:
>>> How does the following work in your system?
>>>
>>> (in0,tmp0,tmp2)filter1(tmp1,out0,tmp2);
>>> (in1,tmp1,tmp3)filter2(tmp3,tmp0,out1)
>>
>> If I understood correctly, this would look like this:
>>
>> !(swap*nop,
>>     !(swap*nop*nop, nop*swap*nop,
>>           !(swap*nop,nop*swap,filter1,nop*swap,swap*nop)
>>         * (swap, !(swap*nop,nop*swap,filter2))
>>       ),
>>  swap*nop)
>>
>> Well, not very beautiful, but at least, it is possible to describe
>> such
>> a filter chain.
>> I suppose this would not exactly be a common filter chain, and I also
>> suppose that filter1 and filter2 would naturally be designed so that
>> their "natural" self-feedback in and out pad would be the first pad.
>> This would highly simplify this filter graph. Here is an example of
>> the exact same graph, with ideally ordered filters pad:
>>
>> (tmp0,tmp1,in0)filter1(tmp0,tmp2,out0);
>> (tmp3,tmp2,in1)filter2(tmp3,tmp1,out1)
>>
>> !(swap*nop, !( !filter1 * !filter2, nop*swap*nop, swap,nop,nop))
>
> While this 'final' solution has reasonable notation in the vmrsss
> syntax, it would seem that, for complex filter graphs, linking inputs
> and outputs of filters that have multiple i/o pads may benefit from
> labeling. This is one case where I was able to visualise the graph far
> more easily with Vitor's notation. I'm still working on distilling the
> vmrsss notation from the graph... :)

I also consider Vitor's notation easier to read.

Regards,
V?ctor

```