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

Reply via email to