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

Overview
This drawing shows the top level compoents and relations
Component Builder |
Component Session |
Component Controller |
Depends on Builder
Component AssetManagement |
Component Dispatcher |
Component Engine |
Depends on Frame (Stream) Provider
Component Frame (Stream) Provider |
Depends on Cache
Component Cache |
Component RenderPathManager |
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 Cinelerra executable has to be created

Source Overview
Artifact Cinelerra3 |
Depends on common
Depends on gui
Depends on proc
Depends on backend
the main executable to be built
executable associated with : mask, main, paramprovider, frame, processor, fixedplacement, glrender, glbuf, controllerfacade, meta, pluginadapter, renderstate, session, vframe, source, exitnode, fixture, track, renderengine, edl, parameter, explicitplacement, projector, builderfacade, toolfactory, buildable, clip, hub, conmanager, relativeplacement, assembler, aframe, label, tool, allocation, stateproxy, segmentationtool, pathmanager, vrender, arender, effect, pipe, interpolator, auto, mobject, placement, trafo, openglpipe, procnode, abstractmo, nodecreatertool
Artifact main |
Artifact source
sourcecode package
Common library and helper classes
Diagram : Source Overview
sourcecode package
Data backend classes here...
sourcecode package
All classes belonging to the (middle) processing layer
defines source files to be generated by BOUML
Artifact stateproxy |
Artifact source associated with : StateProxy
Artifact controllerfacade |
Artifact source associated with : ControllerFacade
Artifact frame |
Artifact source associated with : Frame
sourcecode package
Asset Management
sourcecode package
MObject Subsystem
including the Session (EDL), Builder and Processing Controller
defines source files to be generated by BOUML
Artifact mobject |
Artifact source associated with : Time, MObject
Artifact placement |
Artifact source associated with : Placement
Artifact explicitplacement |
Artifact source associated with : ExplicitPlacement
Artifact builderfacade |
Artifact source associated with : BuilderFacade
Artifact buildable |
Artifact source associated with : Buildable
Artifact parameter |
Artifact source associated with : Parameter
Artifact paramprovider |
Artifact source associated with : ParamProvider
Artifact interpolator |
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 session |
Artifact source associated with : Session
Artifact edl |
Artifact source associated with : EDL
Artifact fixture |
Artifact source associated with : Fixture
Artifact track |
Artifact source associated with : Track
Artifact abstractmo |
Artifact source associated with : AbstractMO
Artifact clip |
Artifact source associated with : Clip
Artifact effect |
Artifact source associated with : Effect
Artifact meta |
Artifact source associated with : Meta
Artifact fixedplacement |
Artifact source associated with : DirectPlacement
Artifact relativeplacement |
Artifact source associated with : RelativePlacement
Artifact allocation |
Artifact source associated with : Allocation
Artifact label |
Artifact source associated with : Label
Artifact auto |
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 |
Artifact source associated with : ToolFactory
Artifact conmanager |
Artifact source associated with : ConManager
Artifact assembler |
Artifact source associated with : Assembler
Artifact tool |
Artifact source associated with : Tool
Artifact segmentationtool |
Artifact source associated with : SegmentationTool
Artifact nodecreatertool |
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 |
Artifact source associated with : PathManager
Artifact renderstate |
Artifact source associated with : RenderState
sourcecode package
The Core Render Engine
defines source files to be generated by BOUML
Artifact renderengine |
Artifact source associated with : RenderEngine
Artifact processor |
Artifact source associated with : Processor
Artifact exitnode |
Artifact source associated with : ExitNode
Artifact procnode |
Artifact source associated with : ProcNode
Artifact trafo |
Artifact source associated with : Trafo
Artifact pipe |
Artifact source associated with : Link
Artifact hub |
Artifact source associated with : Hub
Artifact projector |
Artifact source associated with : Projector
Artifact mask |
Artifact source associated with : Mask
Artifact pluginadapter |
Artifact source associated with : PluginAdapter
Artifact openglpipe |
Artifact source associated with : OpenGLPipe
Artifact arender |
Artifact source associated with : ARender
Artifact vrender |
Artifact source associated with : VRender
Artifact glrender |
Artifact source associated with : GLRender
Artifact aframe |
Artifact source associated with : AFrame
Artifact vframe |
Artifact source associated with : VFrame
Artifact glbuf |
Artifact source associated with : GLBuf
Artifact source |
Artifact source associated with : Source
sourcecode package
User Interface classes go here
sourcecode package
Tools and Utilities
(separate from the main cinelrra binary)

Session structure
Class Session |
Class EDL |
Class Fixture |
Class Track |
Class MObject |
Class Placement |
Class AbstractMO |
Class Clip |
Class Effect |
Class Meta |
Class DirectPlacement |
Class RelativePlacement |
Class Allocation |
Class Label |
Class ExplicitPlacement |
Class Auto |
Class Wish |
Class Constraint |

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 Tool |
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 |

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 OpenGLPipe |
Class ARender |
Class VRender |
Class GLRender |
Class Frame |
Class AFrame |
Class VFrame |
Class GLBuf |
Class Source |
Class Parameter |
Class ParamProvider |
Class Interpolator |

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 :
relations :
Class instance |
type :RelativePlacement
attributes :
relations :
Class instance |
type :Effect
attributes :
relations :
Class instance |
type :RelativePlacement
attributes :
relations :
Class instance |
type :Effect
attributes :
relations :
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 :

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 :
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
Class Time |
C++ wrapers for pthreads
Class SmartPointer |