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

Robert Swain robert.swain
Wed Mar 19 00:06:35 CET 2008


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... :)

Rob




More information about the ffmpeg-devel mailing list