# lumiera Documentation

lumiera
Documentation

# 1 Package design

All things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions.

## 1.1 Component View Architecture

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 : State

required classes : Fixture, SessionImpl

Component Session

provided classes : Seq, Fixture, MObject, ParamProvider, SessionImpl

Component EDL

nested in Session

Component Fixture

nested in Session

Component Controller

Depends on Builder

provided classes : BuilderFacade

Component AssetManagement

Component Dispatcher

provided classes : ProcDispatcher

Component Engine

Depends on Frame (Stream) Provider

required classes : State

Component ProcNode

nested in Engine

provided classes : Parameter

required classes : ParamProvider

Component Frame (Stream) Provider

Depends on Cache

Component Cache

Component RenderPathManager

provided classes : PathManager

Component MediaFactory

required classes : MediaAccessFacade

Component AssetDB

Component client code

required classes : ProcDispatcher

## 1.2 Class View Project Entities

TimelineSequences

Class Project

Class PlayControl

Class Monitor

Class RenderTask

Class Sequence

Class PlayheadCursor

## 1.3 Component View interfaces

proc-components

Component ControllerFacade

provided classes : ControllerFacade

required classes : BuilderFacade, PathManager

Component ConManager

required classes : ParamProvider

backend-components

Component Media Access

provided classes : MediaAccessFacade

## 1.4 Package codegen

This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.

### 1.4.1 Deployment View EXE Deployment

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 : glbuf, procnode, stateproxy, hub, buildable, abstractmo, nodecreatertool, projector, interpolator, edl, fixture, glpipe, vrender, 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

Artifact main

Artifact source

### 1.4.2 Package common

- C++ namespace : lumiera

sourcecode package
Common library and helper classes

Diagram : Source Overview

#### 1.4.2.1 Deployment View gen

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

Artifact streamtype

Artifact source associated with : StreamType, Prototype, ImplFacade

#### 1.4.2.2 Package error

- C++ namespace : lumiera::error

Namespace for Exception Kinds

#### 1.4.2.3 Package visitor

- C++ namespace : lumiera::visitor

sub-namespace for visitor library implementation

### 1.4.3 Package backend

- C++ namespace : backend_interface

sourcecode package
Data backend classes here...

#### 1.4.3.1 Deployment View gen

Artifact mediaaccessfacade

functions for querying media file and channels.

Artifact source associated with : MediaAccessFacade

### 1.4.4 Package proc

- C++ namespace : proc_interface

sourcecode package
All classes belonging to the (middle) processing layer

#### 1.4.4.1 Deployment View gen

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 : State

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

#### 1.4.4.2 Package asset

- C++ namespace : asset

sourcecode package
Asset Management

#### 1.4.4.2.1 Deployment View gen

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

#### 1.4.4.3 Package control

- C++ namespace : control

sourcecode package
The Processing and Render Controller,
and the Proc-Layer dispatcher

#### 1.4.4.3.1 Deployment View gen

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

Artifact stypemanager

Artifact source associated with : STypeManager

#### 1.4.4.4 Package mobject

- C++ namespace : mobject

sourcecode package
MObject Subsystem
including the Session (EDL), Builder and Processing Controller

#### 1.4.4.4.1 Deployment View gen

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

#### 1.4.4.4.2 Package session

- C++ namespace : mobject::session

sourcecode package
Everything concerning the EDL and Session, within the MObject Subsystem

#### 1.4.4.4.2.1 Deployment View gen

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 : Seq

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

#### 1.4.4.4.3 Package builder

- C++ namespace : mobject::builder

sourcecode package
The Builder creating the Render Engine,
located within the MObject Subsystem

#### 1.4.4.4.3.1 Deployment View gen

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

#### 1.4.4.5 Package engine

- C++ namespace : engine

sourcecode package
The Core Render Engine

#### 1.4.4.5.1 Deployment View gen

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

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

Artifact arender

Representation of a Audio Render process

Artifact source

Artifact vrender

Representation of a Video render process

Artifact source

Artifact glrender

Representation of a OpenGL accellerated Video render process

Artifact source

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

### 1.4.5 Package gui

- C++ namespace : gui

sourcecode package
User Interface classes go here

#### 1.4.5.1 Deployment View gen

defines source files to be generated by BOUML

### 1.4.6 Package tool

sourcecode package
Tools and Utilities
(separate from the main cinelrra binary)

#### 1.4.6.1 Deployment View gen

defines source files to be generated by BOUML

# 2 Package ProcessingLayer

## 2.1 Package Asset

### 2.1.1 Class View Assets

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

## 2.2 Package Control

### 2.2.1 Class View Controller Workings

Controller Entities

#### 2.2.1.1 Activity configure Render

Pre Condition :

Post Condition :

the render configuration flow

Activity action pin Render Request

Direction : input

Type :

Selection :

Flow <flow>

From Render Request To determine Render Params

Weight :

Guard :

Selection :

Transformation :

Opaque activity action setup StateProxy

Defined in configure Render

Pre Condition :

Post Condition :

Behavior :

Flow <flow>

From setup StateProxy To build necessary?

Weight :

Guard :

Selection :

Transformation :

Decision activity node build necessary?

Defined in configure Render

Flow <flow>

From build necessary? To build Render Engine

Weight :

Guard :

- OCL :

      build necessary

Selection :

Transformation :

Flow <flow>

From build necessary? To merge activity node

Weight :

Guard :

- OCL :

      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

Flow <flow>

From merge activity node To activity final

Weight :

Guard :

Selection :

Transformation :

#### 2.2.1.1.1 Expansion region determine Render Params

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

Class STypeManager

## 2.3 Package MObject

### 2.3.1 Class View Session

Session structure

Class Session

Class SessionImpl

Class SessManager

Class Timeline

Class TimelineView

Class Seq

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

Class ProcDispatcher

### 2.3.2 Package Builder

#### 2.3.2.1 Class View Builder Workings

build process

This figure shows the process of building and starting a RenderEngine

#### 2.3.2.1.1 Activity building the Engine

Pre Condition :

Post Condition :

build flow

Activity action pin build Request

Direction : input

Type :

Selection :

Flow <flow>

From build Request To configure Tools

Weight :

Guard :

Selection :

Transformation :

Opaque activity action configure Tools

Defined in building the Engine

Pre Condition :

Post Condition :

Behavior :

Flow <flow>

From configure Tools To fork activity node

Weight :

Guard :

Selection :

Transformation :

#### 2.3.2.1.1.1 Expansion region establish partitioning

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

Flow <flow>

From segment Tool To define segment

Weight :

Guard :

Selection :

Transformation :

Activity object segments

Type :

Selection :

Is control type

Activity object Fixture

Type :

Selection :

Flow <flow>

From Fixture To inFixture

Weight :

Guard :

Selection :

Transformation :

Flow <flow>

From Fixture To inFixture

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 :

#### 2.3.2.1.1.2 Expansion region build Processors

Activity object build Tool

Type :

Selection :

Is control type

Flow <flow>

From build Tool To create ProcNode

Weight :

Guard :

Selection :

Transformation :

Activity object segments

Type :

Selection :

Is control type

Flow <flow>

From segments To create ProcNode

Weight :

Guard :

Selection :

Transformation :

Opaque activity action create ProcNode

Defined in build Processors

Pre Condition :

Post Condition :

Behavior :

Flow <flow>

From create ProcNode To connect

Weight :

Guard :

Selection :

Transformation :

Opaque activity action connect

Defined in build Processors

Pre Condition :

Post Condition :

Behavior :

Flow <flow>

From connect To complete Render Engine

Weight :

Guard :

Selection :

Transformation :

Activity object complete Render Engine

Type :

Selection :

Is control type

Flow <flow>

From complete Render Engine To activity final

Weight :

Guard :

Selection :

Transformation :

Activity final

Defined in building the Engine

Builder Entities

Class BuilderFacade

Class ToolFactory

Class ConManager

Class Assembler

Class State

Class Buildable

Class BuilderTool

Class SegmentationTool

Class NodeCreatorTool

### 2.3.3 Use Case View config examples

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

## 2.4 Package RenderEngine

### 2.4.1 Deployment View Engine Parts

Overview Render Engine

Node timeline

Node playlist

Node proc

Node pnode

Node Frame

Node State

### 2.4.2 Class View Engine Workings

Render Entities

Automation Entities

Render Mechanics

StateAdapter composition

Class RenderEngine

Class Processor

Class ExitNode

Class ProcNode

Class Trafo

Class Link

Class Projector

Class Mask

Class PluginAdapter

Class CodecAdapter

Class Frame

Class AFrame

Class VFrame

Class GLBuf

Class Source

Class StateProxy

Class StateAdapter

Class WiringDescriptor

Class NodeWiring

Class OperationBase

Class QueryCache

Class PullInput

Class ReadSource

Class ProcessData

Class FeedCache

Class Strategy

Class BuffTable

Class BuffHandle

Class Invocation

## 2.5 Use Case View Renderengine Use

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 :

- time = 2
- track = video1

Class instance

type :ExplicitPlacement

attributes :

- time = 2
- track = audio1

Class instance audio1

type :Track

Class instance video1

type :Track

Class instance vid_A

type :Clip

attributes :

- length = 5

Class instance aud_A

type :Clip

attributes :

- length = 8820

Class instance audio1

type :Track

Class instance

type :ExplicitPlacement

attributes :

- time = 2
- track = video1

Class instance video1

type :Track

Class instance

type :Fixture

Class instance vid_A

type :Clip

attributes :

- length = 5

Class instance

type :Seq

Class instance refPoint

type :Label

attributes :

- length = 0

Class instance

type :Allocation

attributes :

- repr = "t=2"

Class instance vid_A

type :Clip

attributes :

- length = 5

Class instance

type :RelativeLocation

attributes :

- relType = SAMETIME

relations :

- anchor = refPoint

Class instance

type :Effect

attributes :

- length = 3
- plugin = "Hue"

Class instance

type :RelativeLocation

attributes :

- offset = +3
- relType = ATTACH

relations :

- anchor = vid_A

Class instance

type :Effect

attributes :

- length = 3
- plugin = "Hue"

Class instance

type :ExplicitPlacement

attributes :

- time = 5
- track = video1

Class instance

type :RenderEngine

relations :

- renderSegments = video1

Class instance audio1

type :Processor

attributes :

- end = 7/25
- start = 2/25

relations :

- output = audio

Class instance video1

type :Processor

attributes :

- end = 7/25
- start = 2/25

relations :

- output = video

Class instance video

type :ExitNode

relations :

- datasrc = ouput

Class instance audio

type :ExitNode

relations :

- datasrc = aud_a

Class instance ouput

type :Projector

relations :

- datasrc = class instance

Class instance input

type :Projector

relations :

- datasrc = vid_a

Class instance

type :Mask

relations :

- datasrc = input

Class instance vid_a

type :Source

Class instance aud_a

type :Source

Class instance

type :VFrame

Class instance

type :AFrame

Class instance

type :RenderEngine

relations :

- renderSegments = video1

Class instance devnull

type :Source

Class instance video

type :ExitNode

relations :

- datasrc = HUE

Class instance input

type :Projector

relations :

- datasrc = vid_a

Class instance video1

type :Processor

attributes :

- end = 8/25
- start = 7/25

relations :

- output = video

Class instance ouput

type :Projector

relations :

- datasrc = HUE

Class instance HUE

type :PluginAdapter

relations :

- datasrc = input

Class instance

type :VFrame

Class instance video1

type :Processor

attributes :

- end = 7/25
- start = 5/25

relations :

- output = video

Class instance video

type :ExitNode

relations :

- datasrc = ouput

Class instance HUE

type :PluginAdapter

relations :

- datasrc = devnull

Class instance vid_a

type :Source

Class instance input

type :Projector

relations :

- datasrc = vid_a

Class instance video1

type :Processor

attributes :

- end = 5/25
- start = 2/25

relations :

- output = video

Class instance ouput

type :Projector

relations :

- datasrc = input

Class instance video

type :ExitNode

relations :

- datasrc = ouput

Render Process

Class instance node1

type :ProcNode

Class instance ad1

type :StateAdapter

Class instance current

type :StateProxy

Class instance node2

type :ProcNode

Class instance ad2

type :StateAdapter

Class BackendCache

Class Caller

Class instance node3

type :ProcNode

Class instance ad3

type :StateAdapter

Class instance vid1

type :StateProxy

Class instance au1

type :StateProxy

# 3 Package BackendLayer

## 3.1 Class View Interface

interface components

Class MediaAccessFacade

## 3.2 Use Case View usage

backend use cases

### 3.2.1 Use Case load Media

### 3.2.2 Use Case access File

### 3.2.3 Use Case detect Channels

### 3.2.4 Use Case access Channel

## 3.3 Package design

### 3.3.1 Class View Backend Components

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

#### 3.3.1.1 Activity get frame

Pre Condition :

Post Condition :

Class WriteBufferPool

Class WriteBuffer

## 3.4 Component View Cache

## 3.5 Component View FileMapping

# 4 Package GUI

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

# 5 Package CommonLib

## 5.1 Class View StreamType

Stream Type Framework

Class StreamType

Class Prototype

Class ImplFacade

Class StreamTypeID

Class MediaKind

## 5.2 Package ConfigQuery

### 5.2.1 Component View Query System overview

components

Component ConfigRules

A system for accessing various kinds of preconfigured objects by querying for capabilities.

Component Resolver

Component Rule Base

Component DefaultsManager

### 5.2.2 Class View query

Rules access

Class ConfigRules

Class QueryHandler

Class TypeHandler

Class ResolverBase

Class YAP_Prolog

Class QueryHandlerImpl

Class TypeHandler<Pipe>

Class DefaultsManager

Class DefaultsRegistry

### 5.2.3 Use Case View query use

when to query

#### 5.2.3.1 Use Case create specific object

#### 5.2.3.2 Use Case use "default" object

#### 5.2.3.3 Use Case load object from session

#### 5.2.3.4 Use Case add new object to session

Class User

Class Serializer

#### 5.2.3.5 Use Case ConfigQuery

#### 5.2.3.6 Use Case need sub object

"default" object

Class instance predicate impl

type :TypeHandler

## 5.3 Class View error

Hierarchy

Lumiera Exception hierarchy

Class Error

Class Logic

Class Config

Class State

Class Invalid

Class External

Class std::exception

## 5.4 Class View Service Components

Class Applicable

Class Tool

Class Visitable

Class Time

Class Factory

Class Appconfig

## 5.5 Class View Posix Threads Abstraction

C++ wrapers for pthreads

Class Thread

Class Condition

Class Mutex

## 5.6 Class View SmartPointers

Class SmartPointer