sync with current dok tree
This commit is contained in:
commit
1ad48be1b6
8 changed files with 112 additions and 40 deletions
8
README
8
README
|
|
@ -66,8 +66,8 @@ or the local Copy of this page in the file INSTALL
|
||||||
|
|
||||||
Debian Package
|
Debian Package
|
||||||
--------------
|
--------------
|
||||||
[verse]
|
Hermann Vosseler (aka Ichthyo) maintains a *Debian* packaging of the source tree
|
||||||
Hermann Vosseler (aka Ichthyo) maintains a *Debian* packaging of the source tree,
|
|
||||||
which can be pulled from +git://git.lumiera.org/lumiera/debian+
|
- the package definition can be pulled from +git://git.lumiera.org/lumiera/debian+
|
||||||
It can be built by +git-buildpackage+
|
- the package can be built by +git-buildpackage+
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,8 +70,8 @@ proceeding along a timeline).
|
||||||
|
|
||||||
Reconfiguration
|
Reconfiguration
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
Some of these operation modes need to be prepared to an unpredictable live reconfiguration,
|
Some of these operation modes need to be prepared to encounter an unpredictable live
|
||||||
driven by user interactions:
|
reconfiguration, driven by user interactions:
|
||||||
|
|
||||||
- any part of background rendering can be invalidated and restarted, while other parts
|
- any part of background rendering can be invalidated and restarted, while other parts
|
||||||
should be re-integrated, possibly with adjusted position
|
should be re-integrated, possibly with adjusted position
|
||||||
|
|
@ -108,7 +108,7 @@ playback location, and it can be hooked up with a play-control GUI widget
|
||||||
|
|
||||||
Each play-controller in turn gets associated with several *play/render-processes*,
|
Each play-controller in turn gets associated with several *play/render-processes*,
|
||||||
one for each independent media stream (channel) to be produced. Of course this
|
one for each independent media stream (channel) to be produced. Of course this
|
||||||
isn't an operating system process; rather, ach such process is a compound of entries
|
isn't an operating system process; rather, each such process is a compound of entries
|
||||||
in a registration table, which serve the purpose of tying several other services together,
|
in a registration table, which serve the purpose of tying several other services together,
|
||||||
which we initiate and use in order to make that render process happen.
|
which we initiate and use in order to make that render process happen.
|
||||||
Most notably, we'll use the services of the actual engine, which provides us with kind of
|
Most notably, we'll use the services of the actual engine, which provides us with kind of
|
||||||
|
|
@ -126,7 +126,7 @@ Viewer and Output connection
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
Creating a player instance binds together three partners: a _timeline_, a _viewer_
|
Creating a player instance binds together three partners: a _timeline_, a _viewer_
|
||||||
and _the engine_. While the timeline provides the content to play, the _viewer connection_
|
and _the engine_. While the timeline provides the content to play, the _viewer connection_
|
||||||
is crutial for working out the actual output sink(s) and thus the output format to use.
|
is crucial for working out the actual output sink(s) and thus the output format to use.
|
||||||
Thus, a viewer connection is prerequisite for creating a player instance.
|
Thus, a viewer connection is prerequisite for creating a player instance.
|
||||||
|
|
||||||
Viewer connections exist as associations in the session/model -- as entities separate
|
Viewer connections exist as associations in the session/model -- as entities separate
|
||||||
|
|
@ -135,8 +135,8 @@ such a connection is (still) missing, building a player instance recurs to the s
|
||||||
to get a suitable viewer _allocated_. The viewer connection can't be broken during the
|
to get a suitable viewer _allocated_. The viewer connection can't be broken during the
|
||||||
lifetime of that player instance (or putting it the other way: breaking that viewer
|
lifetime of that player instance (or putting it the other way: breaking that viewer
|
||||||
connection, e.g. by forcing a different connection or by shutting down the viewer,
|
connection, e.g. by forcing a different connection or by shutting down the viewer,
|
||||||
immediately terminates the player. This detaching works synchroneously, i.e. it
|
immediately terminates the player. This detaching works synchronously, i.e. it
|
||||||
blocks untlil all the allocated _output slots_ could be released.
|
blocks until all the allocated _output slots_ could be released.
|
||||||
|
|
||||||
Live switching
|
Live switching
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
|
|
@ -164,7 +164,7 @@ the quantisation, which leaves us with just a few possible junction points
|
||||||
where to place quantisation: The backend, the GUI, the player, the session.
|
where to place quantisation: The backend, the GUI, the player, the session.
|
||||||
|
|
||||||
- putting it into the backend seems to be the most reasonable at first sight:
|
- putting it into the backend seems to be the most reasonable at first sight:
|
||||||
We can ``do away'' with nasty things soon, especially if they are technicallities,
|
We can ``do away'' with nasty things soon, especially if they are technicalities,
|
||||||
``get a clean state soon'' -- and hasn't frame quantisation something to do
|
``get a clean state soon'' -- and hasn't frame quantisation something to do
|
||||||
with media data, which is handled in the backend?
|
with media data, which is handled in the backend?
|
||||||
+
|
+
|
||||||
|
|
@ -174,7 +174,7 @@ amount of degraded information flows throughout the whole system; thus the
|
||||||
general rule to do it as late as possible. Uncrippled information is
|
general rule to do it as late as possible. Uncrippled information is
|
||||||
enablement. And last but not least: the frame quantisation is connected
|
enablement. And last but not least: the frame quantisation is connected
|
||||||
to the _output_ format -- and the backend is likely within the whole
|
to the _output_ format -- and the backend is likely within the whole
|
||||||
application the subsytem most remote and unaware of output requirements.
|
application the subsystem most remote and unaware of output requirements.
|
||||||
|
|
||||||
- rounding/quantising in the GUI is extremely common within media applications;
|
- rounding/quantising in the GUI is extremely common within media applications;
|
||||||
unfortunately there seems to be not a single rational argument supporting that habit.
|
unfortunately there seems to be not a single rational argument supporting that habit.
|
||||||
|
|
@ -184,7 +184,7 @@ Which leaves us with the player and the session. Both positions could
|
||||||
arguably be supported. Here, a more careful consideration shows, that
|
arguably be supported. Here, a more careful consideration shows, that
|
||||||
the ``act of frame rounding'' can be decomposed: into the _act of quantisation_
|
the ``act of frame rounding'' can be decomposed: into the _act of quantisation_
|
||||||
and the _frame grid:. Basically its the session which has the ability
|
and the _frame grid:. Basically its the session which has the ability
|
||||||
to form the *frame grid*, but it is lacking crutial information about
|
to form the *frame grid*, but it is lacking crucial information about
|
||||||
the output. Only when connecting both -- which is the essence of the
|
the output. Only when connecting both -- which is the essence of the
|
||||||
player -- frame quantisation can actually be performed. Thus, the
|
player -- frame quantisation can actually be performed. Thus, the
|
||||||
player is the natural location to perform that quantisation operation.
|
player is the natural location to perform that quantisation operation.
|
||||||
|
|
|
||||||
15
doc/design/engine/OutputHandling.txt
Normal file
15
doc/design/engine/OutputHandling.txt
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
Design: Output Handling
|
||||||
|
=======================
|
||||||
|
:Date: June 2011
|
||||||
|
:Author: Ichthyostega
|
||||||
|
|
||||||
|
//Menu: label Output handling
|
||||||
|
|
||||||
|
Some ideas....
|
||||||
|
|
||||||
|
- abstract away the actual technology used for output
|
||||||
|
- have generic *output designations* and translate them into an *output slot*
|
||||||
|
- the OutputSlot interface can be designed to match the requirements of the Engine
|
||||||
|
- assume a mechanism to handle timeouts, glitches and skips within each concrete OutputSlot implementation
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
Design Documents: Renderengine
|
Design Documents: Renderengine
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
Eventually, this will have design documentation for the Engine.
|
This section contains design documents regarding the overall workings of the Render Engine,
|
||||||
|
and the handling of output generation and output connections.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
Technical Documentation: Backend
|
Technical Documentation: Backend
|
||||||
================================
|
================================
|
||||||
|
|
||||||
Eventually, this will have technical documentation for the Backend.
|
Here we collect bits of technical documentation for the Backend.
|
||||||
|
|
||||||
For now, we have:
|
For now, we have:
|
||||||
|
|
||||||
* link:ConfigLoader.html[Config Loader brainstorming from 2008]
|
* link:ConfigLoader.html[Config Loader brainstorming from 2008]
|
||||||
|
* link:scheduler.html[Scheduler and Jobs]
|
||||||
|
|
|
||||||
40
doc/technical/backend/scheduler.txt
Normal file
40
doc/technical/backend/scheduler.txt
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
Scheduler and Job handling
|
||||||
|
==========================
|
||||||
|
|
||||||
|
The purpose of the _Scheduler_ is to run small self contained _Jobs_
|
||||||
|
ordered by priority and observing specific timing constraints.
|
||||||
|
|
||||||
|
Scheduler implementation ideas
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
Use multiple priority queues
|
||||||
|
|
||||||
|
- background work
|
||||||
|
- foreground high-priority
|
||||||
|
- soft-realtime actions
|
||||||
|
|
||||||
|
About Jobs
|
||||||
|
----------
|
||||||
|
A job is a closure to run a small and limited action or operation, which
|
||||||
|
in itself _should not block_. Job may depend on each other and on resources
|
||||||
|
to be provided. A job may be conained in multiple queues and may be marked
|
||||||
|
as _canceled_ -- in which case the job function will never run and the job
|
||||||
|
will be discarded on occasion.
|
||||||
|
|
||||||
|
Job States
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
[source,C]
|
||||||
|
--------------
|
||||||
|
enum job_state
|
||||||
|
{
|
||||||
|
done, // already done, nothing to do
|
||||||
|
running, // job is running
|
||||||
|
waiting, // waits for some resource (annother job)
|
||||||
|
rejected, // sorry, cant do that dave, time will run out
|
||||||
|
expired, // time expired
|
||||||
|
aborted // got aborted
|
||||||
|
}
|
||||||
|
--------------
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -5,16 +5,24 @@ Since some time, GDB supports Python written extension modules, especially
|
||||||
for pretty printing of data structures. A selection of pre-defined pretty printers
|
for pretty printing of data structures. A selection of pre-defined pretty printers
|
||||||
for STL containers is part of the standard distribution. The graphical debugger frontend
|
for STL containers is part of the standard distribution. The graphical debugger frontend
|
||||||
provided by the Eclipse CDT automatically uses this debugger provided presentation
|
provided by the Eclipse CDT automatically uses this debugger provided presentation
|
||||||
to show the value of variables in the detail pane of the variables view, while the
|
to show the value of variables in the detail pane of the variables view. The most recent
|
||||||
individual variable entries always show the expandable structure view.
|
version of CDT (Version 8 for Eclipe 3.7 »Indigo«) is even able to populate the structure view
|
||||||
|
based on the python pretty printer's output, which is a big step ahead towards easy debugging
|
||||||
|
of more elaborate data structures based on STL containers.
|
||||||
|
|
||||||
|
|
||||||
Installation notes
|
Installation notes
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
This feature requires an python enabled GDB (>6.8.50). Debian/Lenny isn't enough,
|
This feature requires an python enabled GDB (>6.8.50). Actually, even the most recent stable
|
||||||
but compiling the GDB package from Debian/Squeeze (GDB-7.1) is straightforward.
|
GDB (Version 7.2) is recommended, because it contains some relevant bugfixes. Debian users
|
||||||
Moreover, you need to check out and install the python pretty-printers and
|
might want to backport the the GDB package from Debian/Wheezy (GDB-7.2).
|
||||||
you need to activate them through your +~/.gdbinit+
|
Moreover, you need to check out and install a recent version of the python pretty-printers
|
||||||
|
from the GNU Subversion repository:
|
||||||
|
|
||||||
|
* 'svn checkout'
|
||||||
|
http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/python/[svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python stlPrettyPrinter]
|
||||||
|
* you need to activate them explicitly through your +~/.gdbinit
|
||||||
|
|
||||||
[source,python]
|
[source,python]
|
||||||
----
|
----
|
||||||
|
|
@ -61,4 +69,8 @@ When selecting the string or the vector in the Eclipse variables view
|
||||||
(or when issuing "print str" at the GDB prompt), the GDB python pretty-printer
|
(or when issuing "print str" at the GDB prompt), the GDB python pretty-printer
|
||||||
should be activated.
|
should be activated.
|
||||||
|
|
||||||
|
NOTE: to get the full support in _Eclipse Indigo + CDT-8_, you need to activate
|
||||||
|
the setting ``enable pretty printers in variable/expression tree'', which
|
||||||
|
can be accessed as Window/Preferences > C++ / debug / GDB
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
Lumiera (as seen) from Outer Space
|
Lumiera (as seen) from Outer Space
|
||||||
==================================
|
==================================
|
||||||
:Author: Christian Thäter ct@pipapo.org
|
:Author: Christian Thäter ct@pipapo.org
|
||||||
|
:Author: Hermann Voßeler Ichthyostega@web.de
|
||||||
:Date: Summer 2010
|
:Date: Summer 2010
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -18,13 +19,10 @@ they get to work with. It is aimed for workflow designers any anyone who wants
|
||||||
to know how the program works in general.
|
to know how the program works in general.
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
|
|
||||||
|
|
||||||
About this Document
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
// all things starting with '//' are asciidoc comments and drafts/notes while
|
// all things starting with '//' are asciidoc comments and drafts/notes while
|
||||||
// working on this document
|
// working on this document
|
||||||
|
|
||||||
|
.About this Document
|
||||||
This document is meant to be read electronically, it contains a lot
|
This document is meant to be read electronically, it contains a lot
|
||||||
hyper-links between explanations denoted by an arrow ->. Lumiera is still in
|
hyper-links between explanations denoted by an arrow ->. Lumiera is still in
|
||||||
development, we describe here planned features without explicitly tagging them;
|
development, we describe here planned features without explicitly tagging them;
|
||||||
|
|
@ -38,8 +36,13 @@ Vision
|
||||||
|
|
||||||
// objective and goals of the project
|
// objective and goals of the project
|
||||||
|
|
||||||
Lumiera claims to be `professional', this is quite a vague term and needs
|
Lumiera claims to be a _professional non-linear video editor_. To start with, we should
|
||||||
some explanation what it means to us:
|
point out that ``professional'' does not necessarily mean ``commercial'' or ``industrial''.
|
||||||
|
It's more of an attitude or mindset -- doing work seriously, and to be subject to any
|
||||||
|
kind of wider goal, demand, or purpose. When it comes to editing film, this might be
|
||||||
|
artistry, a narration or meaning to convey, a political message or something to show
|
||||||
|
to your audience. Anyhow, for the tools, the editing software used to this end,
|
||||||
|
we can identify several properties and requirements, to be labeled ``professional'':
|
||||||
|
|
||||||
Reliability::
|
Reliability::
|
||||||
Whatever happens, your work must be safe, protected against software
|
Whatever happens, your work must be safe, protected against software
|
||||||
|
|
@ -47,34 +50,34 @@ some explanation what it means to us:
|
||||||
never crash, in practice even crashes or power outages should not
|
never crash, in practice even crashes or power outages should not
|
||||||
result in lost work.
|
result in lost work.
|
||||||
|
|
||||||
Productivity::
|
Quality::
|
||||||
|
If you work with high quality, cinema grade digital video material you
|
||||||
|
want to be sure that you can deliver crisp quality without compromise,
|
||||||
|
throughout the whole workflow to your final product. All rendering
|
||||||
|
must be reproducible to the bit.
|
||||||
|
|
||||||
|
Performance and Productivity::
|
||||||
Professionals want to get things done, in time, but optionally with control
|
Professionals want to get things done, in time, but optionally with control
|
||||||
over every aspect. Balancing these goals should be the central concern for
|
over every aspect. Balancing these goals should be the central concern for
|
||||||
workflow design and usability.
|
workflow design and usability.
|
||||||
|
|
||||||
Quality::
|
Scalability and Adaptability::
|
||||||
If you work with high quality, cinema grade digital video material you
|
|
||||||
want to be sure that you can deliver this crisp quality without
|
|
||||||
compromise throughout you workflow to your final product. All rendering
|
|
||||||
must be reproducible to the bit.
|
|
||||||
|
|
||||||
Scalability::
|
|
||||||
Projects and budgets differ, hardware advances, Lumiera must scale
|
Projects and budgets differ, hardware advances, Lumiera must scale
|
||||||
in different dimensions and use the available resources as best as it
|
in different dimensions and use the available resources as best as it
|
||||||
can. From small Laptops to multicore Computers and Renderfarms.
|
can. From small Laptops to multi core computers and Renderfarms.
|
||||||
|
|
||||||
Future Proofness::
|
Durability::
|
||||||
Soft and Hardware advances at a fast pace. We must not lock into the
|
Soft and Hardware advances at a fast pace. We must not lock into the
|
||||||
current state of technology but being flexible to extend the System
|
current state of technology but being flexible to extend the System
|
||||||
without breaking compatibility. Projects you create nowadays with
|
without breaking compatibility. Projects you create nowadays with
|
||||||
Lumiera should be usable in foreseeable future, at least there needs
|
Lumiera should be usable in foreseeable future, at least there needs
|
||||||
to be a guaranteed upgrade path.
|
to be a guaranteed upgrade path.
|
||||||
<
|
|
||||||
|
|
||||||
Fundamental Forces
|
Fundamental Forces
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
// the basic ideas which drive the lumiera design
|
// the basic ideas which drive the Lumiera design
|
||||||
|
|
||||||
The Lumiera design is guided by a small number of basic principles. Keeping
|
The Lumiera design is guided by a small number of basic principles. Keeping
|
||||||
these in mind will help to understand how actually more interesting things can
|
these in mind will help to understand how actually more interesting things can
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue