On Sun, 2009-01-04 at 15:31 +0100, Georg Martius wrote: > > An order as returned by filter layer can be 1-2-3-4, 4-3-2-1, 1-3-2-4, > > any combination is legal. > How is it exactly done?
In a nutshell, the filter layer is composed by N equivalent thread. Anyone of those is allowed to pick any frame any time. Of course they can also deliver the frame in any order. > I am wondering whether it is still garanteed that > filter plugins are called with subsequent frames. Simple: it's not granted at all :) You have to use a Syncrhonized (PRE_S_PROCESS or POST_S_PROCESS) slot if your filter need so. See docs/tech/architecture for the full story. (questions are of course welcome) > E.g. the stabilization > filter requires to be called with subsequent frames. Also the transform > plugin has for each frame a certain transformation to make so it would be bad > if it is called out of order. The code actually used the preview slot, which looks quite questionable to me. But this ensure that the filter(s) will see all the frames into the correct order. > .... > > I've initially thought (and I'm still convinced that is possible, that's > > the most efficient solution and it's also quite elegant) that it is > > possible to use a pseudo-sliding-window procedure > > (http://en.wikipedia.org/wiki/Sliding_window), having implicit ordering. > > The export buffers become a sort of rotating sliding window (so, a > > sliding window implemented using a ring buffer), > > no longer a plain old FIFO. So filter layer can deliver the completed > > frames directly into the correct slot without hassle and, as said, with > > implicit ordering. And maximum efficiency. > > > > Uhm, clever! Probably too clever. That's hard to explain (so hard to > > document, hard understand, hard to hack, and that's Bad. Very Bad.) > > I also believe that sliding window is to be preferred over a heap. The > concept > is not so difficult and should be easier to understand than a heap. Sounds a bit strage to me: the heap is nothing else than a priority queue (opposed to a plain FIFO queue), that should be more familiar with respect to a sliding window. Anyway, I'll first recover 1.1.0, then we'll see :) Bests, -- Francesco Romani // Ikitt http://fromani.exit1.org ::: transcode homepage http://tcforge.berlios.de ::: transcode experimental forge