[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