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

vmrsss vmrsss
Fri Mar 21 17:28:07 CET 2008

On 19 Mar 2008, at 00:16, Aurelien Jacobs wrote:
> BTW, both syntax are not mutually exclusive. Just replace () by []
> in the original syntax and we could combine advantages.
> Just an example with two "branches" plus a feedback:
> (X)filter1(T1),filter2,filter3,(T2)filter4;(T1)filter5(X,T2)
> VS.
> [X]filter1,filter2*filter5[X],filter3*nop,filter4

Not entirely sure what you meant here, but indeed a feedback operator  
based on names rather than indices could be something like this (not  
necessarily simple to understand, but I repeat: feedback is hard, it's  
an intrinsically difficult beast)

(1) In the absence of a specific indication, there are no loops (even  
if names coincide): eg in

> 	(X)filter1(T1),filter2,filter3,(T2)filter4;(T1)filter5(X,T2)

the two occurrencs of X and thos of T1 and T2 are different, do not  
form a loop: this is a filter with no feedback.

(2) We have a feedback operator [X] which acts like ! on the specific  
name X. Eg

	 [T1] (X)filter1(T1),filter2,filter3,(T2)filter4;(T1)filter5(X,T2)

where there is only one loop on name T1, or

	 [X T1 T2] (X)filter1(T1),filter2,filter3,(T2)filter4;(T1)filter5(X,T2)

where all the loops are closed. I know this is buggy and needs more  
thinking, eg in a term like

	(X Y) filter (K H)

one would never be able to add feedback without hacking in the code,  
because there isn't any shared variable. So perhaps a more useful  
operator would be

	[X0,Y0  X1,Y1 ... ]  FILTER  meaning feedback Y0 to  X0, Y1 to  
X1, .... in FILTER

Hmm, not sure perhaps [X] is better but need to be paired with some  
renaming mechanism.

If there is interest, I will think about this.

More information about the ffmpeg-devel mailing list