Practical implementation related note: I found I was blocked by this one in
further working out the details of the processing nodes wiring, and thus make
any advance on the builder and thus to know more precisely how to organize the
objects in the EDL/Session. Because I need a way to define a viable
abstraction for getting a buffer and working on frames. The reason is not
immediately obvious (because initially you could just use an opaque type). The
problem is related to the question what kind of structures I can assume for the
builder to work on for deciding on connections. Because at this point, the
high-level view (pipes) and the low level view (processing functions with a
number of inputs and outputs) need in some way to be connected.
The fact that we don’t have a rule based system for deciding queries currently
is not much of a problem. A table with some pre configured default answers for
a small number of common query cases is enough to get the first clip rendered.
(Such a solution is already in place and working.)
— Ichthyostega 2008-10-05
Woops fast note, I didn’t read this proposal completely yet. Stream types could
or maybe should be coopertatively handled together with the backend. Basically
the backend offers one to access regions of a file in a continous block, this
regions are addressed as "frames" (this are not necessary video frames). The
backend will keep indices which associate this memory management with the frame
number, plus adding the capabilitiy of per frame metadata. This indices get
abstracted by "indexing engines" it will be possible to have different kinds of
indices over one file (for example, one enumerating single frames, one
enumerating keyframes or gops). Such a indexing engine would be also the place
to attach per media metadata. From the proc layer it can then look like struct
frameinfo* get_frame(unsigned num) where struct frameinfo (not yet defined)
is something like { void* data; size_t size; struct metadata* meta; ...}
— ct 2008-10-06
Needs Work
There are a lot details to be worked out for an actual implementation but we
agreed that we want this concept as proposed here.
Do 14 Apr 2011 03:06:42 CEST Christian Thaeter