109 lines
4.8 KiB
Text
109 lines
4.8 KiB
Text
Lumiera Design Documents
|
|
========================
|
|
|
|
// Menu : prepend child design/lowlevel
|
|
// Menu : prepend child engine
|
|
// Menu : prepend child model
|
|
// Menu : prepend child design/gui
|
|
// Menu : prepend child architecture
|
|
|
|
// Menu : append child plugins
|
|
// Menu : append child workflow
|
|
|
|
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. A key aspect of Lumiera
|
|
is the strong separation between the user interface and the processing core.
|
|
We are developing Lumiera with a GTK GUI but that will in no way be exclusive;
|
|
other GUIs can be written, as well as scripts to drive the core.
|
|
This becomes 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 perform any conceivable
|
|
task on video and audio, maybe even tasks entirely unrelated to video editing.
|
|
|
|
.Workflow
|
|
*****************
|
|
The word ``workflow'' is used to name the way tasks can be achieved in an
|
|
application. Any operation in Lumiera must be possible in the most suitable and
|
|
stringent fashion. The workflow is closely related to how flexible the GUI is
|
|
but is also the concern of deeper and more technical parts of the application.
|
|
*****************
|
|
|
|
|
|
Overview
|
|
--------
|
|
|
|
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.
|
|
|
|
|
|
Stage: Graphical User Interface
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
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 component that is closest to the user. It
|
|
provides purely visual interaction with the user. Within this work environment, 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/Stage-Layer design documents]
|
|
|
|
|
|
Steam: the Transformation Layer
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The ``Steam Layer'' covers several closely related aspects.
|
|
When the user works with the GUI, all the clips, effects and other visually presented
|
|
components are actually stored within the _Session model_ (``high-level model''). Any editing
|
|
operation initiated by the user is actually _executed_ in the context of the session. Next,
|
|
after each change, a component known as _the Builder_ assembles the contents of this session model
|
|
to transform them into a network of nodes, which can be efficiently _performed_ for rendering.
|
|
Often, we refer to this node structure as the ``low-level model''. On rendering or
|
|
playback, the Proc-layer is responsible for accessing this low-level node structure to
|
|
generate individual _frame render jobs,_ ready to be handed over to the backend, which
|
|
finally initiates the actual rendering calculations. +
|
|
-> more about the link:model/index.html[Model] +
|
|
-> design of the link:engine/index.html[Engine] subsystem
|
|
|
|
|
|
|
|
Vault: Low-Level Services
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The Vault Layer attaches to the low-level model and the _render jobs_ generated by the Steam Layer.
|
|
It actually conducts the rendering operations and makes heavy use of the
|
|
Input/Output System for accessing media content and sending generated data to
|
|
the screen or to external output. +
|
|
-> link:lowlevel/index.html[Backend design level documents] +
|
|
-> link:{ldoc}/technical/vault/index.html[technical documentation] +
|
|
|
|
|
|
Extra Components
|
|
----------------
|
|
|
|
The Application
|
|
~~~~~~~~~~~~~~~
|
|
|
|
The application controls the initialization and shutdown procedures as well as
|
|
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]
|
|
|
|
|
|
link:plugins/index.html[Plugins]
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Plug-ins play an important role within Lumiera since the application relies
|
|
heavily on current FLOSS implementations and external libraries. Moreover, the
|
|
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 documents regarding the link:plugins/index.html[Plugins]
|
|
|