create pages and sections for the design of output handling and player subsystem

Signed-off-by: Ichthyostega <prg@ichthyostega.de>
This commit is contained in:
Fischlurch 2011-05-22 05:45:59 +02:00
parent 51b3f0defa
commit c6f4f9bf25
4 changed files with 48 additions and 29 deletions

View file

@ -70,8 +70,8 @@ proceeding along a timeline).
Reconfiguration
^^^^^^^^^^^^^^^
Some of these operation modes need to be prepared to an unpredictable live reconfiguration,
driven by user interactions:
Some of these operation modes need to be prepared to encounter an unpredictable live
reconfiguration, driven by user interactions:
- any part of background rendering can be invalidated and restarted, while other parts
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*,
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,
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
@ -126,7 +126,7 @@ Viewer and Output connection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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_
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.
Viewer connections exist as associations in the session/model -- as entities separate
@ -135,13 +135,13 @@ 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
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,
immediately terminates the player. This detaching works synchroneously, i.e. it
blocks untlil all the allocated _output slots_ could be released.
immediately terminates the player. This detaching works synchronously, i.e. it
blocks until all the allocated _output slots_ could be released.
Live switching
^^^^^^^^^^^^^^
While the viewer connection can be treated as fixed during the lifespan of a player
instance, several life switching and reconfiguration operations might happen anytime:
instance, several life switching and reconfiguration operations might happen any time:
The _model port_ (place where data is retrieved from calculation), the output characteristics
(framerate, direction) and the delivery goals (playback position, loop playing, scrubbing)
all may be changed during playback -- we need a way for the player to ``cancel'' and
@ -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.
- 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
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
enablement. And last but not least: the frame quantisation is connected
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;
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
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
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
player -- frame quantisation can actually be performed. Thus, the
player is the natural location to perform that quantisation operation.

View 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

View file

@ -1,5 +1,6 @@
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.

View file

@ -1,6 +1,7 @@
Lumiera (as seen) from Outer Space
==================================
:Author: Christian Thäter ct@pipapo.org
:Author: Hermann Voßeler Ichthyostega@web.de
: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.
******************************************************************************
About this Document
-------------------
// all things starting with '//' are asciidoc comments and drafts/notes while
// working on this document
.About this Document
This document is meant to be read electronically, it contains a lot
hyper-links between explanations denoted by an arrow ->. Lumiera is still in
development, we describe here planned features without explicitly tagging them;
@ -38,8 +36,13 @@ Vision
// objective and goals of the project
Lumiera claims to be `professional', this is quite a vague term and needs
some explanation what it means to us:
Lumiera claims to be a _professional non-linear video editor_. To start with, we should
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::
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
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
over every aspect. Balancing these goals should be the central concern for
workflow design and usability.
Quality::
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::
Scalability and Adaptability::
Projects and budgets differ, hardware advances, Lumiera must scale
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
current state of technology but being flexible to extend the System
without breaking compatibility. Projects you create nowadays with
Lumiera should be usable in foreseeable future, at least there needs
to be a guaranteed upgrade path.
<
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
these in mind will help to understand how actually more interesting things can