Minor grammatical and textual improvements in the documentation.

This commit is contained in:
Hendrik Boom 2013-04-11 21:42:46 -04:00
parent 08bae37de7
commit 0c135952d6
6 changed files with 94 additions and 78 deletions

View file

@ -1,22 +1,22 @@
Design Documents: Backend
=========================
What follows is a summary regarding the design of Lumiera's *Data Handling Backend*
What follows is a summary of Lumiera's *Data Handling Backend*
This is the foundation layer responsible for any high performance or high volume
data access. Within Lumiera, ther are two main kinds how data is handled:
data access. Within Lumiera, there are two main kinds of data handling:
* The Session and the object models manipulated through the GUI is kept in memory.
It is backed by a _storage backend,_ which provides database like storage and
* The Session and the object models manipulated through the GUI are kept in memory.
They are backed by a _storage backend,_ which provides database-like storage and
especially logging, replaying and ``Undo'' of all ongoing modifications..
* Media data is handled _frame wise_ -- as described below.
The backend uses *memory mapping* to make data available to the program.
This is somewhat different to the more common open/read/write/close file access,
while giving superior performance and much better memory utilization.
The data backend must be capable to handle more data than will fit into the memory
The data backend must be able to handle more data than will fit into the memory
or even address space on 32 bit architectures. Moreover, a project might access more files
than the OS can handle at a any time, thus the for _Files used by the Backend,_ it needs a
than the OS can keep open simultaneously, thus the for _Files used by the Backend,_ it needs a
*FilehandleCache* to manage file handle dynamically.
Which parts of a file are actually mapped to physical RAM is managed by the kernel;

View file

@ -10,18 +10,19 @@ Lumiera Design Documents
// Menu : append child plugins
// Menu : append child workflow
The goal of Lumiera is to provide a professional tool for video editing on
Lumiera is to be a professional tool for video editing on
GNU/Linux systems. The vision of the development team defines a modern design
for the core of a Non-Linear Editing software. One of the key aspect of Lumiera
is the strong separation between the user interface and the processing core.
Lumiera as a software will come along with a GTK GUI but that does not make this
exclusive, any other GUI could be written as well as scripts to drive the core.
for the core of a Non-Linear Editing software. A key aspect of Lumiera
is strong separation between the user interface and the processing core.
Lumiera will have a GTK GUI but that will not be
exclusive; other GUIs can be written, even by users,
as well as scripts to drive the core.
This is made possible by an ongoing effort to decrease coupling. Each major
component in the application strives to be open to extensions, but closed
against external modification. The presentation, the model and the ``performing''
of the model are separate and self-contained parts of the application. Lumiera
as a processing core will be able to do anything possibly conceivable, therefore it
may be used to do any task on video (and audio?), even unrelated to video editing.
as a processing core will be able to perform any conceivable
task on video and audio, even some unrelated to video editing.
.Workflow
*****************
@ -35,19 +36,19 @@ but is also the concern of deeper and more technical parts of the application.
Overview
--------
The internal structure of Lumiera is divided into numerous subsystems. This
overview will provide a general description of the major areas that make up
Lumiera from the highest down to the lowest level. Lumiera can be considered to
be composed of three main areas with an additional extra components. We discuss
theses areas below.
Lumiera is built from numerous subsystems. This
overview will provide a general description of the major components
from the highest to the lowest level. Lumiera
is composed of three main areas with a few additional extra components. We discuss
these areas below.
Graphical User Interface
~~~~~~~~~~~~~~~~~~~~~~~~
User interfaces are basically implemented as a plugin. As a consequence, it is
User interfaces are implemented as plug-ins. As a consequence, it is
possible to interface with Lumiera through scripts. It is also possible to create
specialised GUIs. The interface is the closest component to the user. It is
a purely visual interaction with the user. There the user manipulates,
specialised GUIs. The interface is the component that is closest to the user. It
provides purely visual interaction with the user. There the user manipulates,
organizes, loads, configures all sorts of data, especially MObjects (media
objects) and Assets. These elements are contained within a structure called the Session. +
-> link:gui/index.html[GUI design documents]
@ -56,10 +57,10 @@ objects) and Assets. These elements are contained within a structure called the
The Processing Layer
~~~~~~~~~~~~~~~~~~~~
The processing layer (``Proc-layer'' or ``proc'') covers several closely related aspects.
While the user works with the GUI, all the clips, effects and other components presented
The processing layer (``Proc-layer'' or ``proc'') has several closely related aspects.
When the user works with the GUI, all the clips, effects and other components presented
there are actually stored within the _Session model_ (``high-level model''). Any editing
operations initiated by the user are actually performed here. Next, after each change,
operations initiated by the user are actually performed there. Next, after each change,
a component known as _the Builder_ assembles the contents of this model and transforms
them to form a network of nodes, which can be _performed_ efficiently for rendering.
Often, we refer to this node structure as the ``low-level model''. On rendering or
@ -89,7 +90,7 @@ The Application
~~~~~~~~~~~~~~~
The application controls the initialization and shutdown procedures as well as
loading external elements such as plugins, which are widely used throughout
loading external elements such as plug-ins, which are widely used throughout
Lumiera. It acts as the framework which supports core component operations. This
framework is complemented by a library of commonly used components, algorithms and data structures. +
-> link:application/index.html[Application framework]
@ -98,11 +99,11 @@ framework is complemented by a library of commonly used components, algorithms a
link:plugins/index.html[Plugins]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Plugins play an important role within Lumiera since the application relies
Plug-ins play an important role within Lumiera since the application relies
heavily on current FLOSS implementations and external libraries. Moreover, the
application is envisioned to be configurable and can be extended in various
application will be configurable and can be extended in various
ways; whenever some extension isn't permanent or will be used only on demand, it
is packaged as a separate module into a plug-in. For example, the GUI of Lumiera
is a plugin. +
-> design doruments regarding the link:plugins/index.html[Plugins]
-> design documents regarding the link:plugins/index.html[Plugins]

View file

@ -3,3 +3,4 @@ Design Documents: Model
* two models: high-level and low-level
* RfC: link:{rfc}/../rfc_pending/ProcHighLevelModel.html[high-level model basics]
// TODO: this link goes nowhere

View file

@ -1,3 +1,4 @@
= Documentation =
This documentation section contains documentation for both users and developers.
@ -29,7 +30,7 @@ used as design notebook, featuring day-to-day design sketches, notes but also
quite some more persistent planning. Finished documentation text is constantly
moved over to the documentation section(s) of the Lumiera website.
-> access the Proy-Layer link:http://lumiera.org/wiki/renderengine.html[TiddlyWiki online here]
-> access the Proc-Layer link:http://lumiera.org/wiki/renderengine.html[TiddlyWiki online here]
== Media and Presentations ==

View file

@ -25,11 +25,11 @@ behind Lumiera to start working with Lumiera quickly.
// working on this document
.About this Document
Lumiera is an innovative video editing software, still under active development
by an open source community. This document acts as introduction, we try to start
Lumiera is an innovative video editor still under active development
by an open-source community. This document acts as introduction. We try to start
with a broad overview, then explain some core concepts towards the end.
We describe planned features here without explicitly tagging them and we'll omit
any technical details.
We describe planned features here without explicitly tagging them as such and we omit
technical details.
There is a link:Glossary.html[Glossary of common terms]; readers curious about
the inner workings might want to continue their path of exploration into
link:{ldoc}/technical/overview.html[The Inner Core]
@ -46,42 +46,39 @@ link:{ldoc}/technical/overview.html[The Inner Core]
Vision
------
Lumiera strives towards being a _professional non-linear video editor_. It is
Lumiera is to be a _professional non-linear video editor_. It is
important to note that by ``professional'' we do not necessarily imply
``commercial'' or even ``industrial''. We do, however, wish to suggest an
attitude or frame of mind in how this work is approached, but not the goal,
attitude or frame of mind in how we approach this work, but not the goal,
requirement or purpose of this work. The concept of professionality in film
editing can indicate something of an artistic nature, suggest that there is a
narration, meaning or political messages revealed by the work; or, simply, that
the work attempts to convey something to an audience.
Anyhow, for the tools, the editing software used to this end, we can identify
several properties and requirements, to be labelled ``professional'':
With this perspective in mind, we can identify a number of key properties
film production tools should have and be professional:
film production tools should have to be considered professional:
Reliability::
All work must be secure and be safe against any software glitches,
incompatibility or instability. Ideally, Lumiera should be reliable,
very stable and not susceptible to software crashes, i.e., crashes or
power failure should ideally not result in data or work loss.
All work must be secure and safe against any software glitches,
incompatibility or instability. Lumiera should be reliable,
very stable and resistant to software crashes. Even
power failures should not result in data or work loss.
Quality::
The demands placed on high-quality, cinema grade digital video material
High-quality, cinema grade digital video material
requires crisp-quality results with no concessions made throughout the
entire workflow that might compromise quality of the final work.
A common requirement is the ability to reproduce all rendering
calculations down to a single digit.
calculations down to the last bit.
Performance and Productivity::
Professionals want to get things done in time and content, but, ideally,
Professionals want to get things done on time and content, but
with control over all detail. The fine balance of these goals is a
central goal of workflow design and usability.
Scalability and Adaptability::
Projects and budgets differ, hardware advances; and Lumiera must scale
in different dimensions and make optimum use of the resources that are
in many ways and make optimum use of the resources that are
available. From small Laptops to multi-core computers up to render farms,
Lumiera must be adept in optimum use of the hardware at hand.
@ -107,12 +104,12 @@ Open Ended Combination of Building Blocks
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lumiera is not so much defined in terms of _features_.
Instead it can be better envisaged as a workshop in which the emphasis is on
Instead it can be better seen as a workshop in which the emphasis is on
individual _basic building-blocks_ that can be combined together in interesting
ways to form more complex structures. These basic modules, entities or objects
each have a distinct _type_ which explicitly limits the connections between the
modules. Within these limits, any conceivable combination is possible without
additional hidden restrictions.
each have a distinct _type_ which explicitly identifies the possible connections between
modules. Within these constraints, any combination is possible without
hidden restrictions.
Lumiera is not a set of Lego bricks, nor is it a business application
driven by finite usage stories.
@ -125,7 +122,7 @@ These building blocks within Lumiera create a moderate level of abstraction; a
user may use the GUI to manipulate several elements directly -- not only the
clips and effects, but also individual effect parameter automation, masks, layering,
and even the placements xref:placement[<-] used to stitch the objects together,
which is comparatively low-level. Such moderate abstraction encourages to
which is comparatively low-level. Such moderate abstraction encourages the user to
understand the inner workings, while shielding the user from merely technical
details such as header format conversion or access to individual channels.
@ -142,13 +139,13 @@ Rendering is Graph Processing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Processing video (and audio) data can be conceived as a graph (more precisely
_directed acyclic graphs_). In this model of video processing, data flows
a _directed acyclic graph_). In this model of video processing, data flows
along the edges of the graph and is processed at the nodes.
The following figure depicts manipulating video data as a graph. The nodes of
the root of the graph is where data input occurs. From there, the data moves on
to the next nodes: the direct siblings of the root. Here, the video data
pre-processing occurs. All other operations on the data can be represented by
the root of the graph are where data input occurs. From there, the data moves on
to the next nodes: the direct siblings of the root. Here, the video data is
pre-processed. All other operations on the data can be represented by
nodes, and data flows from one operation to the next along the nodes of the
graph.
@ -185,9 +182,9 @@ the inputs. This scheme offers a number of advantages over the naive scheme.
Don't waste work
~~~~~~~~~~~~~~~~
Rendering A/V data can be computationally intensive. To relieve the core workload
by not rendering material twice or avoiding having to throw away material because
it could not be rendered in time, Lumiera employs a sophisticated means of using
Rendering A/V data can be computationally intensive. To avoid duplicated or wasted work and
ensure it is possible to render on time,
Lumiera employs a sophisticated means of using
cache xref:caching[<-] and profiling xref:profiling[<-].
@ -205,32 +202,41 @@ cache xref:caching[<-] and profiling xref:profiling[<-].
The visible Universe
--------------------
Now its time to take a look at the preliminary Lumiera GUI:
image:{l}/images/lumiera_gui_small.png[Current Lumiera GUI Screenshot]
Lumiera consists of three major parts:
- Graphical User Interface (GUI)
- Processing layer (``Proc-layer'')
- Backend for storage and access
In this section, we discuss the user's perspective, when working with the GUI.
In this section, we discuss the user's perspective when working with the GUI.
Lumiera will initially ship with a standard, default GUI. This, however, is not
the only GUI possible to operate Lumiera. Indeed, Lumiera can work
Although Lumiera will initially ship with a standard, default GUI, we do not presume that this GUI will be suitable for all uses.
We expect there to be multiple, different GUIs, each designed for different kinds of tasks. We expect that some of these will be written by users, and the proc-layer is designed to make this easy.
Indeed, Lumiera can even work
satisfactorily without a GUI, for example, for special purposes
(e.g. as headless rendernode xref:rendernode[<-] or frameserver
xref:frameserver[<-]). At a later stage in the project, scripts will be written
to facilitate automated processing. GUIs geared towards special purposes are
also envisaged later.
xref:frameserver[<-]). Scripts will eventually be written
to facilitate automated processing.
Now it is time to take a look at the preliminary Lumiera GUI:
image:{l}/images/lumiera_gui_small.png[Current Lumiera GUI Screenshot]
We expect this GUI to change once we are at the point of having feedback from actual users.
The screenshot of the GUI presented above is more or less the standard GUI when
it is started for the first time without any user configuration etc. A second
viewer is planned for later to be added to the default. We support a much more
sophisticated screen concept xref:screenconcept[<-] to adapt to different
workplaces and workflows.
// TODO
// The above paragrph isn't all it should be, but I can't tell what it should
// be without seeing it in the context of the other changes I'm making.
// I suspect it's better to discuss how rewritable the GUI is rather than
// the specifics ot the GUI presented above. -- hendrik
At a first glance, the GUI might seem somewhat overwhelming, something similar
to the cockpit of a jumbo jet. However, nearly all the bells and whistles can
@ -246,7 +252,7 @@ Obviously, support for audio will also be provided. As there are many sources t
can be displayed, a viewer is attached to a source via the viewer switch board.
Timelines, probe points, wire taps and individual clips are examples of sources
that can be attached to a viewer. Moreover, the number of viewers open at any one
time is only limited by the hardware, and each viewer can be collapsed, hooked
time is only limited by the hardware, and each viewer can be collapsed or hooked
up to a beamer or monitor.
@ -257,6 +263,11 @@ The preliminary layout in the current GUI is rather provisional -- a final decis
has yet to be taken on where the transport controls will be located. In later
versions of the standard GUI, the transport controls will change. There is even
a possibility that the transport controls will be allocated their own GUI element.
// TODO:
// A final decision about where the transport controls are located?
// Isn't the whole point of enabling multiple GUIs that there won't be
// final decisions? Only provisional ones?
Transport controls are devices that are controlled by widgets or by some input device
(MIDI, control surface, etc) so the look-and-feel of the transport control
@ -387,6 +398,8 @@ a certain degree of compatibility while the application evolves.
Placements
~~~~~~~~~~
// Can placements place things in space as well as in time??
Generic mechanism to stitch together media objects. Any placement may contain
a list of conditions on how to locate the placed object, examples being
time-absolute/relative, relative to another object, or relative to some
@ -441,7 +454,7 @@ in which this is performed is managed by the _scheduler_.
This is all done in the backend.
Apart from memory, the backend will be responsible for accessing and saving
files. It will be of the utmost to do this efficiently. This will be carried out
files. It is essential to do this efficiently. This will be carried out
in the backend using low-level mechanisms.
// file handling
@ -489,7 +502,7 @@ libraries are being constantly improved. If the application wants to use new
features, it will have to be recompiled with the new library which provides the
new features.
_Dynamic Linking_ helps rectify the necessity of having to recompile. If a
_Dynamic Linking_ helps avoid the necessity of having to recompile. If a
new, improved library becomes available, all the user has to do is to install
the new library onto the operating system, restart the application and the new
features can be used by the application. The features provided by a dynamic
@ -502,9 +515,9 @@ memory and possibly increasing performance. This scheme of making features
available to an application is known as run-time linking, aka plug-ins.
Plug-ins offer other benefits: the application can continue to use both the old
features and the new features together, side-by-side, by using the version
number associated with the plug-in. This saves the application from considerable
headaches associated with other linking methods, havocked library version
incompatibility.
number associated with the plug-in. This saves the application from the havoc
of library incompatibility that is
associated with other linking methods.
Most modern applications use plug-ins, some are heavily dependent on plug-ins
and only provide limited functionality without any plug-ins.

View file

@ -1,8 +1,8 @@
Lumiera User Manual
===================
The plan is to create the users manual later in a colaborative
fashion, similar to what turned out so effective for Cinelerra.
The plan is to create the users manual later in a collaborative
fashion, which was effective for Cinelerra.
This work is postponed until the software is actually working.