On Tue, 2009-01-06 at 18:07 +0100, Francesco Romani wrote:
> On Tue, 2009-01-06 at 23:14 +0000, Andrew Church wrote:
> 
> > >like we already do?
> > >(our current code is not that different, see for example
> > >frame_threads.c , and vframe_reserve/vframe_push_next and their
> > >implementation)
> > >
> > >In a nutshell, why can't just pass away the old frame recycling it?
> > 
> > Because then we'd have to add framebuffer_free(frame) calls to every
> > filter that doesn't have a 1:1 correspondence between frames.
> > Admittedly, I don't think there are very many filters like that (modfps,
> > decimate, 29to23, ...) but I'm more concerned about the possibility of
> > resource leakage in general.  As a rule, I prefer a mechanism that's
> > robust against leakage (e.g. by having a single free() call that applies
> > to every module) over one which relies on multiple modules to all do the
> > right thing (e.g. call free() if they don't put() the same frame buffer).
> 
> What we essentially need is a safe way for a filter _plugin_ (while I
> was referring to the core part handling the filtering) to deliver N
> *more* (cloned) frames to the core, right?
> 
> If I'm right, we're facing the issue of having more than just one output
> for a filter module (so the issue of having more than just one input is
> just behind the corner).

Because we already have a few filters that need more than one frame to
work -smartyuv, smartdeinter...-. It would be nice to sort out a method
to handle such situation at the core level, simplyfing the filters and
removing (or at least optimizing) the need for internal buffer
(reimplemented each time).

-- 
Francesco Romani // Ikitt
http://fromani.exit1.org  ::: transcode homepage
http://tcforge.berlios.de ::: transcode experimental forge

Reply via email to