All things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions.
The various Components comprising the Lumiera Video editing Application

Overview
This drawing shows the top level compoents and relations
Component CommonLib |
provided classes : Error, Time
Component Builder |
provided classes : StateProxy
required classes : Fixture, SessionImpl
Component Session |
provided classes : EDL, Fixture, MObject, ParamProvider, SessionImpl
Component Controller |
Depends on Builder
provided classes : BuilderFacade
Component AssetManagement |
Component Dispatcher |
Component Engine |
Depends on Frame (Stream) Provider
required classes : StateProxy
Component Frame (Stream) Provider |
Depends on Cache
Component Cache |
Component RenderPathManager |
provided classes : PathManager
Component MediaFactory |
required classes : MediaAccessFacade
Component AssetDB |

proc-components
Component ControllerFacade |
provided classes : ControllerFacade
required classes : BuilderFacade, PathManager
Component ConManager |
required classes : ParamProvider

backend-components
Component Media Access |
provided classes : MediaAccessFacade
This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.
defines and lists how the Lumiera executable has to be created

Source Overview
Artifact Lumiera |
Depends on common
Depends on gui
Depends on proc
Depends on backend
the main executable to be built
executable associated with : exitnode, pathmanager, track, paramprovider, mask, main, conmanager, clip, meta, fixedlocation, relativelocation, mobject, source, frame, placement, sessionimpl, builderfacade, controllerfacade, processor, pluginadapter, effect, buildertool, segmentationtool, aframe, assembler, trafo, explicitplacement, auto, glrender, link, parameter, renderengine, allocation, vframe, toolfactory, arender, renderstate, label, glbuf, procnode, stateproxy, hub, buildable, abstractmo, nodecreatertool, projector, interpolator, edl, fixture, glpipe, vrender
Artifact main |
Artifact source
sourcecode package
Common library and helper classes
Diagram : Source Overview
defines source files to be generated by BOUML
Artifact visitor |
Acyclic Visitor library
Artifact source associated with : Visitable, Tool, Applicable
Artifact error |
Lumiera Exception Interface
Artifact source associated with : Error, Logic, Config, State, Invalid, External
Artifact appconfig |
for global initialization and configuration
Artifact source associated with : Appconfig
Artifact time |
unified representation of a time point, including conversion functions
Artifact source associated with : Time
Namespace for Exception Kinds
sub-namespace for visitor library implementation
sourcecode package
Data backend classes here...
Artifact mediaaccessfacade |
functions for querying media file and channels.
Artifact source associated with : MediaAccessFacade
sourcecode package
All classes belonging to the (middle) processing layer
defines source files to be generated by BOUML
Artifact assetmanager |
Facade for the Asset subsystem
Artifact source associated with : AssetManager
Artifact asset |
Superinterface: bookeeping view of "things" present in the session
Artifact source associated with : Asset
Artifact stateproxy |
Key Interface representing a render process and encapsulating state
Artifact source associated with : StateProxy
Artifact controllerfacade |
Facade and service access point for the Proc Layer Controller
Artifact source associated with : ControllerFacade
Artifact frame |
Key Abstraction: render process and buffer holding frame data.
Artifact source associated with : Frame
sourcecode package
Asset Management
defines source files to be generated by BOUML
Artifact dataset |
meta asset describing a collection of control data
Artifact source associated with : Dataset
Artifact category |
tree like classification of Assets
Artifact source associated with : Category
Artifact media |
key abstraction: media-like assets
Artifact source associated with : Media, MediaFactory
Artifact proc |
key abstraction: media-like assets
Artifact source associated with : Proc
Artifact struct |
key abstraction: structural asset
Artifact source associated with : Struct
Artifact meta |
key abstraction: metadata and organisational asset
Artifact source associated with : Meta
Artifact clip |
bookkeeping (asset) view of a media clip.
Artifact source associated with : Clip
Artifact compoundmedia |
a special clip as a compound of several elementary media tracks,
e.g. the individual media streams found in one media file
Artifact source associated with : CompoundMedia
Artifact preview |
alternative version of the media data, probably with lower resolution
Artifact source associated with : Preview
Artifact unknown |
placeholder for unknown or unavailable media source
Artifact source associated with : Unknown
Artifact effect |
Effect or media processing component
Artifact source associated with : Effect
Artifact codec |
description of some media data decoder or encoder facility
Artifact source associated with : Codec
Artifact pipe |
structural asset corresponding to some port generating media output
Artifact source associated with : Pipe
Artifact track |
structural asset holding the configuration of a track in the EDL
Artifact source associated with : Track
Artifact procpatt |
template for building some render processing network
Artifact source associated with : ProcPatt
Artifact buildinstruct |
Instructions for building some configuration of render nodes.
Artifact source associated with : BuildInstruct, DoRecurse, DoAttach
Artifact db |
registry holding known Asset instances.
Artifact source associated with : DB
sourcecode package
MObject Subsystem
including the Session (EDL), Builder and Processing Controller
defines source files to be generated by BOUML
Artifact session |
Interface: the session edited by the user
Artifact source associated with : Session
Artifact mobject |
Key Abstraction: A Media Object in the Session
Artifact source associated with : MObject
Artifact placement |
Key Abstraction: a way to place and locate a Media Object
Artifact source associated with : Placement
Artifact explicitplacement |
special Placement yielding an absolute location (Time,Track)-location for a MObject
Artifact source associated with : ExplicitPlacement
Artifact builderfacade |
Facade and service access point for the Builder Subsystem
Artifact source associated with : BuilderFacade
Artifact buildable |
marker interface denoting any MObject able to be treated by Tools
Artifact source associated with : Buildable
Artifact parameter |
representation of an automatable effect/plugin parameter
Artifact source associated with : Parameter
Artifact paramprovider |
interface denoting a source for actual Parameter values
Artifact source associated with : ParamProvider
Artifact interpolator |
denotes a facility to get (continuously interpolated) parameter values
Artifact source associated with : Interpolator
sourcecode package
Everything concerning the EDL and Session, within the MObject Subsystem
defines source files to be generated by BOUML
Artifact sessionimpl |
holds the complete session data to be edited by the user
Artifact source associated with : SessionImpl
Artifact sessmanager |
global session access and lifecycle
Artifact source associated with : SessManager
Artifact edl |
the (high level) Edit Decision List within the current Session
Artifact source associated with : EDL
Artifact fixture |
the (low level) representation of the EDL with concrete placement data
Artifact source associated with : Fixture
Artifact segment |
Segment of the Timeline.
Used at the moment (7/07) for partitioning the timeline/fixture into segments
to be rendered by a specialized render node network for each, without the need
to change any connections within a given segment.
Note this concept may be superfluos alltogether; is a draft and the real
use still needs to be worked out...
Artifact source associated with : Segment
Artifact track |
A grouping device within the EDL. The corresponding Placement
by which this Track object is refered defines fallback placing
properties to be used by all objects placed on this track in
case they don't specify more concrete placements.
Typically, tracks are used do make default Port connections,
define a layer or pan for sound and for for disabling groups
of clips. Note tracks are grouped in a tree like fashion.
Artifact source associated with : Track
Artifact abstractmo |
abstract base class for all Media Objects
Artifact source associated with : AbstractMO
Artifact clip |
a Media Clip
Artifact source associated with : Clip
Artifact simpleclip |
Elementary clip (single media stream only)
Artifact source associated with : SimpleClip
Artifact compoundclip |
compound of several clips (multichannel)
Artifact source associated with : CompoundClip
Artifact effect |
EDL representation of a pluggable and automatable effect.
Artifact source associated with : Effect
Artifact meta |
abstract base class of all MObjects representing meta data or processing instructions
Artifact source associated with : Meta
Artifact locatingpin |
Chaining and constraining the Placement of a Media Object
Artifact source associated with : LocatingPin
Artifact fixedlocation |
implements fixed placement of a MObject
Artifact source associated with : FixedLocation
Artifact relativelocation |
Placement implemnetaion providing various ways of attaching a MObject to another one
Artifact source associated with : RelativeLocation
Artifact allocation |
Artifact source associated with : Allocation
Artifact constraint |
LocatingPin representing an directive by the user that
must not be violated
Artifact source associated with : Constraint
Artifact wish |
LocatingPin representing a low-priority directive by the user,
to be fulfilled only if possible (and after satisfying the
more important LocatingPins)
Artifact source associated with : Wish
Artifact plug |
LocatingPin for requesting connection to some Port
Artifact source associated with : Plug
Artifact label |
Artifact source associated with : Label
Artifact auto |
Media Object holding automation data
Artifact source associated with : Auto
sourcecode package
The Builder creating the Render Engine,
located within the MObject Subsystem
defines source files to be generated by BOUML
Artifact toolfactory |
supply of Tool implementations for the Builder
Artifact source associated with : ToolFactory
Artifact conmanager |
manages the creation of additional ProcNode connections for the Renderengine
Artifact source associated with : ConManager
Artifact assembler |
building facility (implementation of the build process)
Artifact source associated with : Assembler
Artifact buildertool |
Interface, any tool for processing MObjects
Artifact source associated with : BuilderTool
Artifact segmentationtool |
Tool for creating a partitioning of the current timeline
Artifact source associated with : SegmentationTool
Artifact nodecreatertool |
central Tool implementing the Renderengine building
Artifact source associated with : NodeCreatorTool
sourcecode package
The Processing and Render Controller,
located within the MObject Subsystem
defines source files to be generated by BOUML
Artifact pathmanager |
Manager for deciding the actual render strategy
Artifact source associated with : PathManager
Artifact renderstate |
renderengine state manager
Artifact source associated with : RenderState
sourcecode package
The Core Render Engine
defines source files to be generated by BOUML
Artifact renderengine |
a complete network of processing nodes usable for rendering
Artifact source associated with : RenderEngine
Artifact processor |
a single render pipeline for one segment of the timeline
Artifact source associated with : Processor
Artifact exitnode |
special Processing Node providing "pullable" output
Artifact source associated with : ExitNode
Artifact procnode |
Key abstraction of the Render Engine: a Processing Node
Artifact source associated with : ProcNode
Artifact trafo |
transforming processing Node
Artifact source associated with : Trafo
Artifact link |
forwarding, adapting or connecting ProcNode
Artifact source associated with : Link
Artifact hub |
special ProcNode used to build data distributing connections
Artifact source associated with : Hub
Artifact projector |
video ProcNode for scaling and translating image data
Artifact source associated with : Projector
Artifact mask |
Video ProcNode for masking regions of the image (automatable)
Artifact source associated with : Mask
Artifact pluginadapter |
Adapter for integrating various Effect processors in the render pipeline
Artifact source associated with : PluginAdapter
Artifact codecadapter |
Processing Node for (de)coding media data
Artifact source associated with : CodecAdapter
Artifact glpipe |
specialized connection element for handling OpenGL implementation details
Artifact source associated with : GLPipe
Artifact arender |
Representation of a Audio Render process
Artifact source associated with : ARender
Artifact vrender |
Representation of a Video render process
Artifact source associated with : VRender
Artifact glrender |
Representation of a OpenGL accellerated Video render process
Artifact source associated with : GLRender
Artifact aframe |
a buffer and render process holding a Audio frame
Artifact source associated with : AFrame
Artifact vframe |
a buffer and render process holding a Video frame
Artifact source associated with : VFrame
Artifact glbuf |
a buffer and render process holding a Video frame for OpenGL rendering
Artifact source associated with : GLBuf
Artifact source |
Representation of a Media source
Artifact source associated with : Source
sourcecode package
User Interface classes go here
sourcecode package
Tools and Utilities
(separate from the main cinelrra binary)

Asset Kinds

Media-Asset Relations

Proc-Asset Relations

Struct-Asset Relations
Class Asset |
Class AssetManager |
Class Media |
Class MediaFactory |
Class CompoundMedia |
Class Proc |
Class Struct |
Class Meta |
Class Category |
Class Clip |
Class Unknown |
Class Preview |
Class Effect |
Class Codec |
Class Track |
Class Pipe |
Class ProcPatt |
Class Dataset |
Class DB |
Class BuildInstruct |
Class DoAttach |
Class DoRecurse |

Session structure
Class Session |
Class SessionImpl |
Class SessManager |
Class EDL |
Class Fixture |
Class Segment |
Class Track |
Class MObject |
Class Placement |
Class ExplicitPlacement |
Class AbstractMO |
Class Clip |
Class SimpleClip |
Class CompoundClip |
Class Effect |
Class Meta |
Class FixedLocation |
Class RelativeLocation |
Class Allocation |
Class Label |
Class Auto |
Class Wish |
Class Constraint |
Class Plug |
Class Parameter |
Class ParamProvider |
Class Interpolator |
Class LocatingPin |

build process
This figure shows the process of building and starting a RenderEngine
Pre Condition :
Post Condition :

build flow
Activity action pin build Request |
Direction : input
Type :
Selection :
Opaque activity action configure Tools |
Defined in building the Engine
Pre Condition :
Post Condition :
Behavior :
Opaque activity action define segment |
Defined in establish partitioning
Pre Condition :
Post Condition :
Behavior :
Activity action pin inFixture |
Direction : input
Type :
Selection :
Flow <flow> |
From define segment To segments
Weight :
Guard :
Selection :
Transformation :
Activity object segment Tool |
Type :
Selection :
Is control type
Activity object segments |
Type :
Selection :
Is control type
Activity object Fixture |
Type :
Selection :
Flow <flow> |
Weight :
Guard :
Selection :
Transformation :
Flow <flow> |
Weight :
Guard :
Selection :
Transformation :
Fork activity node |
Defined in building the Engine
Flow <flow> |
From fork activity node To segment Tool
Weight :
Guard :
Selection :
Transformation :
Flow <flow> |
From fork activity node To build Tool
Weight :
Guard :
Selection :
Transformation :
Activity object build Tool |
Type :
Selection :
Is control type
Activity object segments |
Type :
Selection :
Is control type
Opaque activity action create ProcNode |
Defined in build Processors
Pre Condition :
Post Condition :
Behavior :
Opaque activity action connect |
Defined in build Processors
Pre Condition :
Post Condition :
Behavior :
Activity object complete Render Engine |
Type :
Selection :
Is control type
Activity final |
Defined in building the Engine

Builder Entities
Class BuilderFacade |
Class ToolFactory |
Class ConManager |
Class Assembler |
Class StateProxy |
Class Buildable |
Class BuilderTool |
Class SegmentationTool |
Class NodeCreatorTool |

Controller Entities
Pre Condition :
Post Condition :

the render configuration flow
Activity action pin Render Request |
Direction : input
Type :
Selection :
Opaque activity action setup StateProxy |
Defined in configure Render
Pre Condition :
Post Condition :
Behavior :
Decision activity node build necessary? |
Defined in configure Render
Flow <flow> |
From build necessary? To build Render Engine
Weight :
Guard :
build necessary
Selection :
Transformation :
Flow <flow> |
From build necessary? To merge activity node
Weight :
Guard :
reuse exiting Engine
Selection :
Transformation :
Opaque activity action setup Build Params |
Defined in configure Render
Pre Condition :
Post Condition :
Behavior :
Merge activity node |
Defined in configure Render
Opaque activity action determine Render Params |
Diagram : the render configuration flow
Defined in configure Render
Pre Condition :
Post Condition :
Behavior :
Flow <flow> |
From determine Render Params To setup StateProxy
Weight :
Guard :
Selection :
Transformation :
Opaque activity action build Render Engine |
Defined in configure Render
Pre Condition :
Post Condition :
Behavior :
Flow <flow> |
From build Render Engine To merge activity node
Weight :
Guard :
Selection :
Transformation :
Activity final |
Defined in configure Render
Class ControllerFacade |
Class PathManager |
Class RenderState |

multichannel clip
Class instance |
type :Clip
Class instance |
type :CompoundMedia
Class instance |
type :Media
Class instance |
type :Media
Class instance |
type :Media
Class instance |
type :CompoundClip
Class instance |
type :SimpleClip
Class instance |
type :SimpleClip
Class instance |
type :SimpleClip
Class instance |
type :Placement

Render Entities

Automation Entities
Class RenderEngine |
Class Processor |
Class ExitNode |
Class ProcNode |
Class Trafo |
Class Link |
Class Hub |
Class Projector |
Class Mask |
Class PluginAdapter |
Class CodecAdapter |
Class GLPipe |
Class ARender |
Class VRender |
Class GLRender |
Class Frame |
Class AFrame |
Class VFrame |
Class GLBuf |
Class Source |

EDL Example1
A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks

EDL Example2
More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip

Engine Example1
Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1

Engine Example2
Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.
Class instance |
type :Fixture
Class instance |
type :ExplicitPlacement
attributes :
Class instance |
type :ExplicitPlacement
attributes :
Class instance audio1 |
type :Track
Class instance video1 |
type :Track
Class instance vid_A |
type :Clip
attributes :
Class instance aud_A |
type :Clip
attributes :
Class instance audio1 |
type :Track
Class instance |
type :ExplicitPlacement
attributes :
Class instance video1 |
type :Track
Class instance |
type :Fixture
Class instance vid_A |
type :Clip
attributes :
Class instance |
type :EDL
Class instance refPoint |
type :Label
attributes :
Class instance |
type :Allocation
attributes :
Class instance vid_A |
type :Clip
attributes :
Class instance |
type :RelativeLocation
attributes :
relations :
Class instance |
type :Effect
attributes :
Class instance |
type :RelativeLocation
attributes :
relations :
Class instance |
type :Effect
attributes :
Class instance |
type :ExplicitPlacement
attributes :
Class instance |
type :RenderEngine
relations :
Class instance audio1 |
type :Processor
attributes :
relations :
Class instance video1 |
type :Processor
attributes :
relations :
Class instance video |
type :ExitNode
relations :
Class instance audio |
type :ExitNode
relations :
Class instance ouput |
type :Projector
relations :
Class instance input |
type :Projector
relations :
Class instance |
type :Mask
relations :
Class instance vid_a |
type :Source
Class instance aud_a |
type :Source
Class instance vid1 |
type :VRender
relations :
Class instance au1 |
type :ARender
relations :
Class instance |
type :VFrame
Class instance |
type :AFrame
Class instance |
type :RenderEngine
relations :
Class instance devnull |
type :Source
Class instance video |
type :ExitNode
relations :
Class instance input |
type :Projector
relations :
Class instance video1 |
type :Processor
attributes :
relations :
Class instance ouput |
type :Projector
relations :
Class instance HUE |
type :PluginAdapter
relations :
Class instance vid1 |
type :VRender
relations :
Class instance |
type :VFrame
Class instance video1 |
type :Processor
attributes :
relations :
Class instance video |
type :ExitNode
relations :
Class instance HUE |
type :PluginAdapter
relations :
Class instance vid_a |
type :Source
Class instance input |
type :Projector
relations :
Class instance video1 |
type :Processor
attributes :
relations :
Class instance ouput |
type :Projector
relations :
Class instance video |
type :ExitNode
relations :

backend use cases

File Mapping
Shows whats used to access Frames

In Memory Database
Class File |
Class FileHandleCache |
Class FileMapCache |
Class FileMap |
Class FileHandle |
Class Frame |
Class FrameDescriptor |
Class Prefetch |
Class Scheduler |
Class FileProvider |
Class FrameReference |
Class FileReference |
Pre Condition :
Post Condition :
Class WriteBufferPool |
Class WriteBuffer |
GUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft

Hierarchy
Lumiera Exception hierarchy
Class Error |
Class Logic |
Class Config |
Class State |
Class Invalid |
Class External |
Class std::exception |
C++ wrapers for pthreads
Class SmartPointer |