diff --git a/doc/devel/uml/class132741.html b/doc/devel/uml/class132741.html index a9dd11ca8..89bb5e220 100644 --- a/doc/devel/uml/class132741.html +++ b/doc/devel/uml/class132741.html @@ -16,7 +16,7 @@ -

Declaration :

Directly inherited by : InvocationStateBase StateAdapter StateProxy

+

Declaration :

Directly inherited by : StateAdapter StateProxy

Artifact : stateproxy, Component(s) : Builder

Relation currFrame (<unidirectional association>)

Declaration :

diff --git a/doc/devel/uml/class142469.html b/doc/devel/uml/class142469.html index 31b631174..58c82f008 100644 --- a/doc/devel/uml/class142469.html +++ b/doc/devel/uml/class142469.html @@ -16,9 +16,8 @@ -

Declaration :

- -
Relation wiring (<unidirectional association>)

Declaration :

+

Declaration :

+

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

diff --git a/doc/devel/uml/class142725.html b/doc/devel/uml/class142725.html index 13bdadf5b..93345b68f 100644 --- a/doc/devel/uml/class142725.html +++ b/doc/devel/uml/class142725.html @@ -17,5 +17,9 @@

Declaration :

Directly inherited by : NodeWiring

+
+ +
Operation callDown

Declaration :

+

All public operations : callDown

diff --git a/doc/devel/uml/class143365.html b/doc/devel/uml/class143365.html index 8f96f6b27..c4e3718c3 100644 --- a/doc/devel/uml/class143365.html +++ b/doc/devel/uml/class143365.html @@ -16,7 +16,13 @@ -

Declaration :

-
+

Declaration :

+ +
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+
Relation <unidirectional association>

Declaration :

+
Operation callDown

Declaration :

+

All public operations : callDown , callDown

diff --git a/doc/devel/uml/class143493.html b/doc/devel/uml/class143493.html index 63ef30fb2..37a6496d9 100644 --- a/doc/devel/uml/class143493.html +++ b/doc/devel/uml/class143493.html @@ -4,21 +4,18 @@ -Class InvocationStateBase +Class OperationBase -
Class InvocationStateBase
+
Class OperationBase

-

Declaration :

Directly inherited by : Caching

-
-
-

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

+

Declaration :

Directly inherited by : FeedCache ProcessData ReadSource

diff --git a/doc/devel/uml/class143621.html b/doc/devel/uml/class143621.html index 39379446c..649d441e7 100644 --- a/doc/devel/uml/class143621.html +++ b/doc/devel/uml/class143621.html @@ -4,21 +4,20 @@ -Class Caching +Class QueryCache -
Class Caching
+
Class QueryCache

-

Declaration :

Directly inherited by : Process

+

Declaration :

Directly inherited by : Strategy

-

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

diff --git a/doc/devel/uml/class143749.html b/doc/devel/uml/class143749.html index 2d3726110..426d12aaa 100644 --- a/doc/devel/uml/class143749.html +++ b/doc/devel/uml/class143749.html @@ -4,21 +4,21 @@ -Class Process +Class PullInput -
Class Process
+
Class PullInput

-

Declaration :

Directly inherited by : InPlace

+

Declaration :

Directly inherited by : QueryCache Strategy

-
-

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

+ +
Relation <association>

Declaration :

diff --git a/doc/devel/uml/class143877.html b/doc/devel/uml/class143877.html index b3164a70a..bad34df65 100644 --- a/doc/devel/uml/class143877.html +++ b/doc/devel/uml/class143877.html @@ -4,21 +4,20 @@ -Class InPlace +Class ReadSource -
Class InPlace
+
Class ReadSource

-

Declaration :

Directly inherited by : StateProxy

+

Declaration :

Directly inherited by : Strategy

-

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

diff --git a/doc/devel/uml/class144005.html b/doc/devel/uml/class144005.html index 9fd2629bc..bc2bf60f2 100644 --- a/doc/devel/uml/class144005.html +++ b/doc/devel/uml/class144005.html @@ -4,19 +4,19 @@ -Class WiringTable +Class BuffTable -
Class WiringTable
+
Class BuffTable

-

Declaration :

+

Declaration :

Relation <directional aggregation by value>

Declaration :

Relation <unidirectional association>

Declaration :

diff --git a/doc/devel/uml/class144261.html b/doc/devel/uml/class144261.html new file mode 100644 index 000000000..d9c258fab --- /dev/null +++ b/doc/devel/uml/class144261.html @@ -0,0 +1,25 @@ + + + + + + +Class Invocation + + + + + +
Class Invocation
+

+ + + + +

Declaration :

+ +
Relation <unidirectional association>

Declaration :

+
Relation <unidirectional association>

Declaration :

+
Relation <unidirectional association>

Declaration :

+ + diff --git a/doc/devel/uml/class144389.html b/doc/devel/uml/class144389.html new file mode 100644 index 000000000..fb3f25daf --- /dev/null +++ b/doc/devel/uml/class144389.html @@ -0,0 +1,24 @@ + + + + + + +Class ProcessData + + + + + +
Class ProcessData
+

+ + + + +

Declaration :

Directly inherited by : PullInput

+
+ +
Relation <association>

Declaration :

+ + diff --git a/doc/devel/uml/class144517.html b/doc/devel/uml/class144517.html new file mode 100644 index 000000000..8eace63da --- /dev/null +++ b/doc/devel/uml/class144517.html @@ -0,0 +1,25 @@ + + + + + + +Class Strategy + + + + + +
Class Strategy
+

+ + + + +

Declaration :

+ +
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+ + diff --git a/doc/devel/uml/class144645.html b/doc/devel/uml/class144645.html new file mode 100644 index 000000000..c5cc7c0cb --- /dev/null +++ b/doc/devel/uml/class144645.html @@ -0,0 +1,23 @@ + + + + + + +Class FeedCache + + + + + +
Class FeedCache
+

+ + + + +

Declaration :

Directly inherited by : ProcessData

+
+
+ + diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index 7992c89cf..319577971 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -27,11 +27,11 @@ AutoAutomation data for some parameter (i.e. a time varying function) BackendCache BuffHandle +BuffTable Buildableinterface BuilderFacadeboundaryProvides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade BuilderToolinterfaceUsed according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes BuildInstruct(Interface) building instructions to be executed by the Builder on the render node network under construction. -Caching Caller Categorytree like classification of Assets Clipbookkeeping (asset) view of a media clip. @@ -60,6 +60,7 @@ ExplicitPlacementinterface External Factorya template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only. +FeedCache File FileHandle FileHandleCache @@ -74,10 +75,9 @@ FrameDescriptorinterfaceA FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes FrameReference GLBuf -InPlace InterpolatorProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter Invalid -InvocationStateBase +Invocation Label Link LocatingPinAn element with value semantics, which actually implements the placement of some MObject by positioning it in some way. @@ -94,6 +94,7 @@ MutexI provided a reworked Mutex class in my Cinelerra2 repository NodeCreatorToolThis Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render. NodeWiring +OperationBase ParameterDescriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated. ParamProviderinterfaceA facility to get the actual value of a plugin/effect parameter PathManagerWhile building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state) @@ -105,13 +106,16 @@ Previewalternative version of the media data, probably with lower resolution Prockey abstraction: data processing asset ProcDispatcher -Process +ProcessData Processor ProcNodeinterfaceKey abstraction of the Render Engine: A Data processing Node ProcPattspecial type of structural Asset representing information how to build some part of the render engine's processing nodes network. ProjectorSpecial video processing node used to scale and translate image data. +PullInput +QueryCache QueryHandlerinterface QueryHandlerImpl +ReadSource RelativeLocation RelTypeenumthe possible kinds of RelativePlacements RenderEngine @@ -132,6 +136,7 @@ StateAdapter StateProxyimplementation std::exceptionauxiliary +Strategy Structkey abstraction: structural asset ThreadWe can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads Timedenotes a temporal position (time point), based on timeline start.

investigate posix.4 realtime timers, wrap these here @@ -147,7 +152,6 @@ VFrame Visitable WiringDescriptor -WiringTable Wish WriteBuffer WriteBufferPool diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index f89fb300a..8e8c2d9a6 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -28,11 +28,11 @@ Auto
BackendCache
BuffHandle
+BuffTable
Buildable
BuilderFacade
BuilderTool
BuildInstruct
-Caching
Caller
Category
Clip
@@ -61,6 +61,7 @@ ExplicitPlacement
External
Factory
+FeedCache
File
FileHandle
FileHandleCache
@@ -75,10 +76,9 @@ FrameDescriptor
FrameReference
GLBuf
-InPlace
Interpolator
Invalid
-InvocationStateBase
+Invocation
Label
Link
LocatingPin
@@ -95,6 +95,7 @@ Mutex
NodeCreatorTool
NodeWiring
+OperationBase
Parameter
ParamProvider
PathManager
@@ -106,13 +107,16 @@ Preview
Proc
ProcDispatcher
-Process
+ProcessData
Processor
ProcNode
ProcPatt
Projector
+PullInput
+QueryCache
QueryHandler
QueryHandlerImpl
+ReadSource
RelativeLocation
RelType
RenderEngine
@@ -133,6 +137,7 @@ StateAdapter
StateProxy
std::exception
+Strategy
Struct
Thread
Time
@@ -148,7 +153,6 @@ VFrame
Visitable
WiringDescriptor
-WiringTable
Wish
WriteBuffer
WriteBufferPool
diff --git a/doc/devel/uml/fig131973.png b/doc/devel/uml/fig131973.png index 78f068e2d..d16d88131 100644 Binary files a/doc/devel/uml/fig131973.png and b/doc/devel/uml/fig131973.png differ diff --git a/doc/devel/uml/fig132357.png b/doc/devel/uml/fig132357.png index e454c31e9..8f89db240 100644 Binary files a/doc/devel/uml/fig132357.png and b/doc/devel/uml/fig132357.png differ diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index de5e95e2f..0ec64e61e 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -116,7 +116,7 @@ Documentation
Artifact Lumiera

Depends on common

Depends on gui

Depends on proc

Depends on backend

the main executable to be built

-

executable associated with : 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, exitnode, pathmanager, track, paramprovider, mask, main, conmanager, clip, meta, fixedlocation, relativelocation

+

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

@@ -902,12 +902,16 @@ reuse exiting Engine

Selection :

Transformation
-
-
Class Caching
-
Class Process
-
Class InPlace
-
+
+
+
Class PullInput
+
+
+
Class FeedCache
+
Class Strategy
+
Class BuffTable
+

diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index 8712d7074..a873c25b0 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -17,8 +17,8 @@ - + @@ -28,10 +28,10 @@ - - + + diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index ab57596c5..33d5ebd2f 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -55,12 +55,12 @@ - + - - + + diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index db64b33db..3a6ba7379 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -24,6 +24,7 @@ + @@ -36,8 +37,8 @@ - + diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index 1612ca9ea..8432e5cc6 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -19,7 +19,8 @@ - + + @@ -29,34 +30,34 @@ - - - - - - - + + + + + - - - + + + + + + + - - - - - - - - - - + + + + + + + + diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index 1f6fd3f19..a7245b34b 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -18,14 +18,14 @@
NameKindDescription
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
Assetsclass view
ATTACHattributeattach subject to anchor (e.g. an effect to a clip)
au1class instance
aud_aclass instance
aud_Aclass instance
aud_aclass instance
audioclass instance
audio1class instance
audio1class instance
audio1class instance
audio1class instance
audio1class instance
autoartifactMedia Object holding automation data
AutoclassAutomation data for some parameter (i.e. a time varying function)
Automation Entitiesclass diagram
BackendCacheclass
BackendLayerpackage
BuffHandleclass
BuffTableclass
buildoperation
build flowactivity diagram
build necessary?decision activity node
buildableartifactmarker interface denoting any MObject able to be treated by Tools
buildEngineoperationMain Operation of the Builder: create a render engine for a given part of the timeline
Buildercomponent
builderpackagesourcecode package

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

The Builder creating the Render Engine,
located within the MObject Subsystem
Builder Entitiesclass diagram
Builder Workingsclass view
BuilderFacadeclassProvides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade
NameKindDescription
Cachecomponent
Cachecomponent view
Cachingclass
callDownoperation
callDownoperation
Callerclass
categoryrelationprimary tree like classification of the asset
Categoryclasstree like classification of Assets
chainrelationChain of additional Placements further constraining the position of this MObject
checked_inrelationchecked_in objects are subject of cache aging and must be not in use
checked_outrelationthis list keeps all mappings which are in use, and thus prevents them from Cache aging
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
class instanceclass instance
clearoperationclear current session contents
without resetting overall session config.
Afterwards, the session will contain only one
empty EDL, while all Assets are retained.
client codecomponent
Clipclassbookkeeping (asset) view of a media clip.
- + - + diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index 5e1189dd5..56bc1daaf 100644 --- a/doc/devel/uml/index_70.html +++ b/doc/devel/uml/index_70.html @@ -18,6 +18,7 @@
NameKindDescription
edlartifactthe (high level) Edit Decision List within the current Session
EDLclass
EDLcomponent
EDLclass
EDL Example1object diagramA 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 Example2object diagramMore 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
edlsrelation
EffectclassEffect or media processing component
effectartifactEffect or media processing component
effectartifactEDL representation of a pluggable and automatable effect.
effectartifactEffect or media processing component
Effectclass
elementsrelationrelevant MObjects comprising this segment. TODO: actually necessary??
enableoperationchange the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well
+ diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html index 3547e6f3e..7e5b73a00 100644 --- a/doc/devel/uml/index_72.html +++ b/doc/devel/uml/index_72.html @@ -23,8 +23,8 @@ - +
NameKindDescription
Factoryclassa template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only.
FeedCacheclass
fetchoperation
Fileclass
filerelation
Hierarchyclass diagramLumiera Exception hierarchy
howtoProcoperation@return descriptor how to build a render pipeline corresponding to this media
hubartifactspecial ProcNode used to build data distributing connections
HUEclass instance
HUEclass instance
HUEclass instance
diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index 9a0a77429..e127cf07e 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -20,10 +20,9 @@ idattributeAsset primary key. In Memory Databaseclass diagram inFixtureactivity action pin -InPlaceclass -inputclass instance -inputclass instance inputclass instance +inputclass instance +inputclass instance instanceoperation instructionsrelation Interfaceclass view @@ -32,7 +31,7 @@ interpolatorartifactdenotes a facility to get (continuously interpolated) parameter values InterpolatorclassProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter Invalidclass -InvocationStateBaseclass +Invocationclass iporelation isActiveoperationweather this asset is swithced on and consequently included in the fixture and participates in rendering isCalculatedoperation diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index 1428ef6eb..e6d8e8031 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -33,8 +33,8 @@ MediaFactoryclassspecialized Asset Factory for configuring (new) media asset instances based on existing media files on disk; can create placeholder assets as well merge activity nodemerge activity node Metaclasskey abstraction: metadata and organisational asset -metaartifactabstract base class of all MObjects representing meta data or processing instructions metaartifactkey abstraction: metadata and organisational asset +metaartifactabstract base class of all MObjects representing meta data or processing instructions Metaclass mobjectartifactKey Abstraction: A Media Object in the Session mobjectpackagesourcecode package

MObject Subsystem
including the Session (EDL), Builder and Processing Controller diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index d1fdc83c0..e17eadde8 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -18,6 +18,7 @@ + diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index a3268b59b..368babe6a 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -53,8 +53,8 @@ - + @@ -67,6 +67,7 @@ +
NameKindDescription
offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation?
OperationBaseclass
orgattributeorigin or authorship id. Can be a project abbreviation, a package id or just the authors nickname or UID. This allows for the compnent name to be more generic (e.g. "blur"). Default for all assets provided by the core Lumiera codebase is "lumi".
ouputclass instance
ouputclass instance
Proc-Asset Relationsclass diagram
proc-componentscomponent diagram
ProcDispatcherclass
Processclass
processoperation
ProcessDataclass
ProcessingLayerpackage
Processorclass
processorartifacta single render pipeline for one segment of the timeline
projectorartifactvideo ProcNode for scaling and translating image data
providerrelation
pulloperation
PullInputclass
diff --git a/doc/devel/uml/index_81.html b/doc/devel/uml/index_81.html index 5a521bd2f..6367201fd 100644 --- a/doc/devel/uml/index_81.html +++ b/doc/devel/uml/index_81.html @@ -20,6 +20,7 @@ queryclass view Query System overviewcomponent view query useuse case view +QueryCacheclass QueryHandlerclass QueryHandlerImplclass diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index b5b305e10..9b107d854 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -17,14 +17,15 @@ + - + diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 5dd747140..4ea8bf79b 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -32,8 +32,8 @@ - + @@ -47,8 +47,8 @@ - + @@ -64,6 +64,7 @@ + diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index b0541e88b..96532f18f 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -42,13 +42,13 @@ - + - +
NameKindDescription
ReadSourceclass
refPointclass instance
regoperationregisters an asset object in the internal DB, providing its unique key
registryrelation@internal Table or DB holding all registered asset instances.
relativelocationartifactPlacement implemnetaion providing various ways of attaching a MObject to another one
RelativeLocationclass
releaseBufferoperation
relTypeattributethe kind of relation denoted by this Placement
RelTypeclassthe possible kinds of RelativePlacements
relTypeattributethe kind of relation denoted by this Placement
removeoperationremove the given asset <i>together with all its dependants</i> from the internal DB
Render Entitiesclass diagram
Render Mechanicsclass diagram
Service Componentsclass view
Sessioncomponent
sessionartifactInterface: the session edited by the user
sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem
Sessionclass view
sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem
SessionclassPrimary Interface for all editing tasks.
The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.
Session structureclass diagram
sessionimplartifactholds the complete session data to be edited by the user
SimpleClipclassElementary clip consisting of only one media stream
SmartPointerclass
SmartPointersclass view
sourcerelationmedia source of this clip
sourcerelationthe media source this clip referes to
sourcerelationmedia source of this clip
SourceclassSource Node: represents a media source to pull data from.
sourceartifactRepresentation of a Media source
Source Overviewdeployment diagram
StateProxyclass
stateproxyartifactKey Interface representing a render process and encapsulating state
std::exceptionclass
Strategyclass
Structclasskey abstraction: structural asset
structartifactkey abstraction: structural asset
Struct-Asset Relationsclass diagram
trafoartifacttransforming processing Node
treatoperation
treatoperationThis operation is to be overloaded for the specific MObject subclasses to be treated.
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
TypeHandlerclass
TypeHandler<Pipe>class
diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index cda6a585e..3538c8202 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -22,18 +22,18 @@ vframeartifacta buffer and render process holding a Video frame vid1class instance vid_Aclass instance -vid_aclass instance +vid_aclass instance vid_Aclass instance vid_Aclass instance -vid_aclass instance -videoclass instance -videoclass instance +vid_aclass instance videoclass instance +videoclass instance videoclass instance +videoclass instance video1class instance -video1class instance video1class instance video1class instance +video1class instance video1class instance video1class instance Visitableclass diff --git a/doc/devel/uml/index_87.html b/doc/devel/uml/index_87.html index 7e2b7e31f..616839a54 100644 --- a/doc/devel/uml/index_87.html +++ b/doc/devel/uml/index_87.html @@ -20,9 +20,7 @@ whatoperation whatoperationthe base class of all exceptions thrown by the standard library when to queryuse case diagram -wiringrelation WiringDescriptorclass -WiringTableclass wiringTemplaterelation wishartifactLocatingPin representing a low-priority directive by the user,
to be fulfilled only if possible (and after satisfying the
more important LocatingPins) Wishclass diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index c252030f0..07fb079d7 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -23,6 +23,8 @@ buildAssembler buildEngineBuilderFacadeMain Operation of the Builder: create a render engine for a given part of the timeline buildProcessorPathManager +callDownNodeWiring +callDownWiringDescriptor chainPlacementcreate and add another Placement for this media object, thus increasingly constraining the (possible) position of this object. clearSessManagerclear current session contents
without resetting overall session config.
Afterwards, the session will contain only one
empty EDL, while all Assets are retained.
configureToolFactory @@ -67,12 +69,12 @@ saveSessManagercreate a complete, serialized representation
of the current session config and contents.
@todo how to serialize, prameters, return value? treatApplicable treatBuilderToolThis operation is to be overloaded for the specific MObject subclasses to be treated. -treatNodeCreatorTool treatNodeCreatorTool treatNodeCreatorTool +treatNodeCreatorTool treatNodeCreatorTool -treatSegmentationTool treatSegmentationTool +treatSegmentationTool treatSegmentationTool useFileFileProviderAnnounces that the application intends to use this file with mode (READ|WRITE|READWRITE) useTemporaryStorageFileProviderProvides a pool for interminate frames diff --git a/src/common/util.hpp b/src/common/util.hpp index 7f8704554..c71ba3b6a 100644 --- a/src/common/util.hpp +++ b/src/common/util.hpp @@ -237,4 +237,8 @@ namespace util * and we probably will enforce this design rule in future. */ #define INSTANCEOF(CLASS, EXPR) (dynamic_cast (EXPR)) +/** the inevitalbe MAX macro, sometimes still necessary in template code */ +#define MAX(A,B) (A < B) ? (B) : (A) + + #endif /*UTIL_HPP_*/ diff --git a/src/proc/engine/nodeoperation.hpp b/src/proc/engine/nodeoperation.hpp index 2cd5eb09d..c8740def0 100644 --- a/src/proc/engine/nodeoperation.hpp +++ b/src/proc/engine/nodeoperation.hpp @@ -81,34 +81,86 @@ namespace engine { * defined in nodewiring.cpp actually drives the instantiation of all * those possible combinations */ - class InvocationStateBase + class StateAdapter : public State { - WiringDescriptor const& wiring_; - protected: State& parent_; State& current_; uint requiredOutputNr; - StateAdapter (State& callingProcess, WiringDescriptor const&) + StateAdapter (State& callingProcess) : parent_ (callingProcess), current_(callingProcess.getCurrentImplementation()) { } - friend class NodeWiring; // both are sharing implementation details... - - virtual State& getCurrentImplementation () { return current_; } }; + + struct BuffTable + { + BuffHandle *const outHandle; + BuffHandle *const inHandle; + BuffHandle::PBuff *const outBuff; + BuffHandle::PBuff *const inBuff; + }; + + + struct Invocation + { + WiringDescriptor const& wiring; + BuffTable& buffTab; + const uint outNr; + + protected: + Invocation (WiringDescriptor const& w, BuffTable& b, uint o) + : wiring(w), + buffTab(b), + outNr(o) + { } + }; + + + template + class InvocationImpl + : private StateAdapter, + private BuffTableStorage, + public Invocation + { + + protected: + InvocationImpl (State& callingProcess, WiringDescriptor const& w, const uint outCh) + : StateAdapter(callingProcess), + BuffTableStorage(w), + Invocation(w, static_cast(*this), outCh) + { } + + /** contains the details of Cache query and recursive calls + * to the predecessor node(s), eventually followed by the + * ProcNode::process() callback + */ + template + BuffHandle retrieve () + { + return Strategy::step (*this); + } + }; + + + + + class OperationBase + { + + }; template struct QueryCache : NEXT { BuffHandle - step () + step (Invocation& ivo) { BuffHandle fetched = this->current_.fetch ( this->genFrameID ( @@ -116,7 +168,7 @@ namespace engine { if (fetched) return fetched; else - return NEXT::step(); + return NEXT::step (ivo); } }; @@ -125,7 +177,7 @@ namespace engine { struct PullInput : NEXT { BuffHandle - step () + step (Invocation& ivo) { this->createBuffTable(); @@ -143,7 +195,7 @@ namespace engine { *(inH[i] = this->pullPredecessor(i)); // invoke predecessor // now Input #i is ready... } - return NEXT::step(); + return NEXT::step (ivo); } }; @@ -152,7 +204,7 @@ namespace engine { struct ReadSource : NEXT { BuffHandle - step () + step (Invocation& ivo) { this->createBuffTable(); @@ -171,7 +223,7 @@ namespace engine { *(inH[i] = outH[i] = this->getSource(i)); // TODO: how to access source nodes??? // now Input #i is ready... } - return NEXT::step(); + return NEXT::step (ivo); } }; @@ -180,7 +232,7 @@ namespace engine { struct AllocOutput { BuffHandle - step () + step (Invocation& ivo) { ASSERT (this->buffTab); ASSERT (this->nrO < this->buffTabSize()); @@ -193,7 +245,7 @@ namespace engine { *(outH[i] = allocateBuffer (i)); // now Output buffer for channel #i is available... } - return NEXT::step(); + return NEXT::step (ivo); } private: @@ -228,7 +280,7 @@ namespace engine { struct ProcessData { BuffHandle - step () + step (Invocation& ivo) { ASSERT (this->buffTab); ASSERT (this->nrO+this->nrI <= this->buffTabSize()); @@ -237,7 +289,7 @@ namespace engine { // Invoke our own process() function, providing the buffer array this->wiring_.processFunction (this->buffTab->buffers); - return NEXT::step(); + return NEXT::step (ivo); } }; @@ -245,13 +297,13 @@ namespace engine { struct FeedCache { BuffHandle - step () + step (Invocation& ivo) { // declare all Outputs as finished this->current_.isCalculated(this->buffTab->handles, this->nrO); - return NEXT::step(); + return NEXT::step (ivo); } }; @@ -259,7 +311,7 @@ namespace engine { struct ReleaseBuffers { BuffHandle - step () + step (Invocation& ivo) { // all buffers besides the required Output no longer needed this->current_.releaseBuffers(this->buffTab->handles, @@ -270,28 +322,6 @@ namespace engine { } }; - template - struct NoProcess - { - BuffHandle calculateResult(BuffHandle* calculated) - { - uint nrO = this->getNrO(); - for (uint i = 0; iretrieveInput(i); ///TODO: Null pointer when no caching!!!!! - this->outBuff[i] = current_.getBuffer(calculated[i]); - // now Buffer containing Output channel #i is available... - } - - this->feedCache(); - for (uint i=0; i < nrO; ++i) - if (i!=requiredOutputNr) - current_.releaseBuffer(i); - - return calculated[requiredOutputNr]; - }; - - }; @@ -314,13 +344,13 @@ namespace engine { template struct Strategy< Config > - : QueryCache < + : QueryCache< PullInput< AllocOutput, ProcessData< FeedCache< ReleaseBuffers< - InvocationStateBase > > > > > > + OperationBase > > > > > > { }; template @@ -329,14 +359,14 @@ namespace engine { AllocOutput, ProcessData< ReleaseBuffers< - InvocationStateBase > > > > + OperationBase > > > > { }; template<> struct Strategy< Config<> > : ReadSource< ReleaseBuffers< - InvocationStateBase > > + OperationBase > > { }; template<> @@ -348,28 +378,10 @@ namespace engine { AllocOutput, ProcessData< // wiring_.processFunction is supposed to do just buffer copying here ReleaseBuffers< - InvocationStateBase > > > > + OperationBase > > > > { }; - template - class StateAdapter - : Strategy - { - - protected: - - /** contains the details of Cache query and recursive calls - * to the predecessor node(s), eventually followed by the - * ProcNode::process() callback - */ - BuffHandle retrieve (uint outNr) - { - this->requiredOutputNr = outNr; - return Strategy::step (); - } - - }; } // namespace engine diff --git a/src/proc/engine/nodewiringconfig.hpp b/src/proc/engine/nodewiringconfig.hpp index aba017fde..1fc221bf6 100644 --- a/src/proc/engine/nodewiringconfig.hpp +++ b/src/proc/engine/nodewiringconfig.hpp @@ -25,6 +25,7 @@ #define ENGINE_NODEWIRINGCONFIG_H +#include "common/util.hpp" //#include #include @@ -121,11 +122,11 @@ namespace lumiera { { }; template class _PERM_> struct Combine,_PERM_> - : Distribute<_PERM_, Combine > + : Distribute<_PERM_, Combine > { }; template - struct FlagOnOff : Types::List + struct FlagOnOff : Types::List { }; template @@ -168,11 +169,11 @@ namespace lumiera { template struct DefineConfigByFlags; - template< char f1=0 - , char f2=0 - , char f3=0 - , char f4=0 - , char f5=0 + template< char f1 + , char f2 + , char f3 + , char f4 + , char f5 > struct DefineConfigByFlags< FlagTuple > : Config @@ -199,7 +200,7 @@ namespace lumiera { template struct FlagInfo, FLAGS> > { - enum{ BITS = max(ff, FlagInfo::BITS) + enum{ BITS = MAX(ff, FlagInfo::BITS) , CODE = (1<::CODE }; }; @@ -211,7 +212,7 @@ namespace lumiera { }; template - static FUNC::Ret + static typename FUNC::Ret accept (FUNC& functor) { return functor.done(); @@ -223,11 +224,11 @@ namespace lumiera { > > { typedef Node, FLAGS> ThisConfig; - enum{ BITS = max (FlagInfo::BITS, FlagInfo::BITS) + enum{ BITS = MAX (FlagInfo::BITS, FlagInfo::BITS) }; template - static FUNC::Ret + static typename FUNC::Ret accept (FUNC& functor) { functor.template visit(FlagInfo::CODE); @@ -271,14 +272,6 @@ namespace engine { typedef std::bitset Bits; - //////////////////////////////////TODO: noch nötig?? - template - Bits - getCaseRepresentation (CONF config) - { - return Bits (FlagInfo::CODE); - } - /** @@ -325,24 +318,25 @@ namespace engine { * the use of template metaprogramming for extracting all * currently defined StateProxy object configurations. */ - template class Factory> + template< template class Factory + , class PAR ///< ctor parameter of the Factories + , class RET ///< common base class of the Factory's products + > class ConfigSelector { - typedef typename Factory::Ret Ret; - typedef typename Factory::Param Param; struct FacFunctor { virtual ~FacFunctor() {} - virtual Ret invoke() =0; + virtual RET invoke() =0; }; template struct FactoryHolder : FacFunctor { FAC factory_; - FactroyHolder(Param p) : factory_(p) {} + FactoryHolder(PAR p) : factory_(p) {} - virtual Ret invoke () { return factory_(); } + virtual RET invoke () { return factory_(); } }; @@ -354,10 +348,10 @@ namespace engine { /** Helper: a visitor usable with FlagInfo */ struct FactoryTableBuilder { - Param ctor_param_; + PAR ctor_param_; ConfigTable& factories_; - FactoryTableBuilder (ConfigTable& tab, Param p) + FactoryTableBuilder (ConfigTable& tab, PAR p) : ctor_param_(p), factories_(tab) { } @@ -370,7 +364,7 @@ namespace engine { void visit (ulong code) { - typedef typename DefineConfigByFlags Config; + typedef DefineConfigByFlags Config; factories_[code].reset (new FactoryHolder > (ctor_param_)); } @@ -379,7 +373,7 @@ namespace engine { public: template - ConfigSelector(Param factory_ctor_param) + ConfigSelector(PAR factory_ctor_param) { FactoryTableBuilder buildTable(this->possibleConfig_, factory_ctor_param ); @@ -388,7 +382,7 @@ namespace engine { FlagInfo::accept (buildTable); } - Ret + RET operator() (Bits configFlags) ///< invoke the factory corresponding to the given config { return possibleConfig_[configFlags]->invoke(); diff --git a/src/proc/state.hpp b/src/proc/state.hpp index 7828398ed..2f047ee7a 100644 --- a/src/proc/state.hpp +++ b/src/proc/state.hpp @@ -34,7 +34,7 @@ namespace engine { - class StateAdapter; + class InvocationStateBase; struct BuffHandle { @@ -72,7 +72,7 @@ namespace engine { */ virtual State& getCurrentImplementation () =0; - friend class engine::StateAdapter; + friend class engine::InvocationStateBase; public: diff --git a/uml/lumiera/128389 b/uml/lumiera/128389 index 2a8c1a7c0..05bf51f89 100644 --- a/uml/lumiera/128389 +++ b/uml/lumiera/128389 @@ -1,6 +1,6 @@ format 40 "RenderEngine" // ProcessingLayer::RenderEngine - revision 16 + revision 17 modified_by 5 "hiv" // class settings //class diagram settings @@ -517,11 +517,6 @@ ${inlines} class 142469 "StateProxy" visibility package stereotype "implementation" - nformals 2 - formal name "WIRING" type "class" explicit_default_value "" - explicit_extends "" - formal name "POLICY" type "class" explicit_default_value "" - explicit_extends "" cpp_decl "${comment}${template}class ${name}${inherit} { ${members} }; @@ -539,22 +534,6 @@ ${inlines} b multiplicity "" parent class_ref 132741 // State end - classrelation 153221 // - relation 149765 ---|> - a public - cpp default "${type}" - classrelation_ref 153221 // - b multiplicity "" parent class_ref 143877 // InPlace - end - - classrelation 154117 // wiring () - relation 150661 ---> - a role_name "wiring" multiplicity "1" const_relation protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; -" - classrelation_ref 154117 // wiring () - b multiplicity "" parent class_ref 144005 // WiringTable - end end class 142597 "StateAdapter" @@ -621,12 +600,30 @@ ${inlines} idl_decl "" explicit_switch_type "" + operation 136453 "callDown" + cpp_virtual public explicit_return_type "" + nparams 2 + param inout name "" type class_ref 132741 // State + param in name "requiredOutput" explicit_type "uint" + nexceptions 1 + exception class_ref 144133 // BuffHandle + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + end end class 143365 "NodeWiring" visibility package nformals 1 - formal name "STATE" type "class" explicit_default_value "" + formal name "CONF" type "class" explicit_default_value "" explicit_extends "" cpp_decl "${comment}${template}class ${name}${inherit} { @@ -648,13 +645,74 @@ ${inlines} classrelation 153093 // relation 149637 -_-> a default - cpp default "Generated" + cpp default "#include in header" classrelation_ref 153093 // b multiplicity "" parent class_ref 142597 // StateAdapter end + + classrelation 156165 // + relation 152581 ---- + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156165 // + b role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156293 // + end + + classrelation 156421 // + relation 152709 ---- + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156421 // + b role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156549 // + end + + classrelation 156677 // + relation 152837 ---- + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156677 // + b role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156805 // + end + + classrelation 156933 // + relation 152965 ---> + stereotype "creates" + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156933 // + b multiplicity "" parent class_ref 144261 // Invocation + end + + operation 136581 "callDown" + public explicit_return_type "" + nparams 0 + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + end end - class 143493 "InvocationStateBase" + class 143493 "OperationBase" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -665,16 +723,9 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 153733 // - relation 150277 ---|> - a public - cpp default "${type}" - classrelation_ref 153733 // - b multiplicity "" parent class_ref 132741 // State - end end - class 143621 "Caching" + class 143621 "QueryCache" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -685,16 +736,16 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 153605 // - relation 150149 ---|> + classrelation 157189 // + relation 153221 ---|> a public cpp default "${type}" - classrelation_ref 153605 // - b multiplicity "" parent class_ref 143493 // InvocationStateBase + classrelation_ref 157189 // + b multiplicity "" parent class_ref 143749 // PullInput end end - class 143749 "Process" + class 143749 "PullInput" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -705,16 +756,28 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 153477 // - relation 150021 ---|> + classrelation 157317 // + relation 153349 ---|> a public cpp default "${type}" - classrelation_ref 153477 // - b multiplicity "" parent class_ref 143621 // Caching + classrelation_ref 157317 // + b multiplicity "" parent class_ref 144389 // ProcessData + end + + classrelation 158085 // + relation 154117 ---- + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 158085 // + b role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 158213 // end end - class 143877 "InPlace" + class 143877 "ReadSource" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -725,16 +788,119 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 153349 // - relation 149893 ---|> + classrelation 157701 // + relation 153733 ---|> a public cpp default "${type}" - classrelation_ref 153349 // - b multiplicity "" parent class_ref 143749 // Process + classrelation_ref 157701 // + b multiplicity "" parent class_ref 143493 // OperationBase end end - class 144005 "WiringTable" + class 144389 "ProcessData" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 157445 // + relation 153477 ---|> + a public + cpp default "${type}" + classrelation_ref 157445 // + b multiplicity "" parent class_ref 144645 // FeedCache + end + + classrelation 157829 // + relation 153861 ---|> + a public + cpp default "${type}" + classrelation_ref 157829 // + b multiplicity "" parent class_ref 143493 // OperationBase + end + + classrelation 158213 // + relation_ref 154117 // + end + end + + class 144645 "FeedCache" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 157573 // + relation 153605 ---|> + a public + cpp default "${type}" + classrelation_ref 157573 // + b multiplicity "" parent class_ref 143493 // OperationBase + end + end + + class 144517 "Strategy" + visibility package + nformals 1 + formal name "CONF" type "class" explicit_default_value "" + explicit_extends "" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 154757 // + relation 151301 ---|> + a public + cpp default "${type}" + classrelation_ref 154757 // + b multiplicity "" parent class_ref 143877 // ReadSource + end + + classrelation 156293 // + relation_ref 152581 // + end + + classrelation 156549 // + relation_ref 152709 // + end + + classrelation 156805 // + relation_ref 152837 // + end + + classrelation 157061 // + relation 153093 ---|> + a public + cpp default "${type}" + classrelation_ref 157061 // + b multiplicity "" parent class_ref 143621 // QueryCache + end + + classrelation 157957 // + relation 153989 ---|> + a public + cpp default "${type}" + classrelation_ref 157957 // + b multiplicity "" parent class_ref 143749 // PullInput + end + end + + class 144005 "BuffTable" visibility package nformals 1 formal name "SIZ" type "int" explicit_default_value "" @@ -780,5 +946,44 @@ ${inlines} explicit_switch_type "" end + + class 144261 "Invocation" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 155781 // + relation 152197 ---> + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 155781 // + b multiplicity "" parent class_ref 142597 // StateAdapter + end + + classrelation 155909 // + relation 152325 ---> + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 155909 // + b multiplicity "" parent class_ref 142725 // WiringDescriptor + end + + classrelation 156037 // + relation 152453 ---> + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 156037 // + b multiplicity "" parent class_ref 144005 // BuffTable + end + end end end diff --git a/uml/lumiera/128901 b/uml/lumiera/128901 index 455fee7d7..9a2bf5b90 100644 --- a/uml/lumiera/128901 +++ b/uml/lumiera/128901 @@ -1,6 +1,6 @@ format 40 "Builder" // ProcessingLayer::MObject::Builder - revision 16 + revision 17 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/lumiera/129285 b/uml/lumiera/129285 index 246c9e4d6..1441c4bdf 100644 --- a/uml/lumiera/129285 +++ b/uml/lumiera/129285 @@ -1,6 +1,6 @@ format 40 "ProcessingLayer" // ProcessingLayer - revision 21 + revision 22 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/lumiera/131973.diagram b/uml/lumiera/131973.diagram index 4b7003a43..dda416518 100644 --- a/uml/lumiera/131973.diagram +++ b/uml/lumiera/131973.diagram @@ -14,7 +14,7 @@ classcanvas 129669 class_ref 133253 // Frame end classcanvas 131845 class_ref 142469 // StateProxy draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 126 211 2000 + xyz 126 220 2000 end classcanvas 131973 class_ref 142597 // StateAdapter draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default @@ -22,11 +22,13 @@ classcanvas 131973 class_ref 142597 // StateAdapter end classcanvas 132357 class_ref 142725 // WiringDescriptor draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 229 497 2000 + hidden_operations + operation_ref 136453 // callDown + xyz 229 498 2000 end classcanvas 135045 class_ref 143365 // NodeWiring draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 241 568 2000 + xyz 241 561 2000 end textcanvas 135685 "determines concrete Type" xyzwh 100 594 2004 130 18 @@ -37,15 +39,15 @@ relationcanvas 129797 relation_ref 134533 // no_multiplicity_a multiplicity_b_pos 173 109 3000 relationcanvas 132101 relation_ref 148869 // geometry VHV unfixed - from ref 131973 z 1999 to point 78 181 - line 134021 z 1999 to point 118 181 + from ref 131973 z 1999 to point 78 186 + line 134021 z 1999 to point 118 186 line 134149 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 132229 relation_ref 148997 // geometry VHV - from ref 131845 z 1999 to point 178 181 - line 134277 z 1999 to point 118 181 + from ref 131845 z 1999 to point 178 186 + line 134277 z 1999 to point 118 186 line 134405 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b @@ -53,13 +55,13 @@ relationcanvas 132485 relation_ref 149125 // geometry HV from ref 128005 z 1999 stereotype "<>" xyz 205 454 3000 to point 277 452 line 133381 z 1999 to ref 132357 - role_a_pos 289 472 3000 no_role_b - multiplicity_a_pos 265 472 3000 no_multiplicity_b + role_a_pos 289 473 3000 no_role_b + multiplicity_a_pos 265 473 3000 no_multiplicity_b relationcanvas 133509 relation_ref 149253 // from ref 131973 z 1999 to point 178 312 line 133637 z 1999 to ref 131845 - role_a_pos 190 302 3000 no_role_b - multiplicity_a_pos 164 302 3000 no_multiplicity_b + role_a_pos 190 293 3000 no_role_b + multiplicity_a_pos 164 293 3000 no_multiplicity_b relationcanvas 134533 relation_ref 149381 // from ref 131973 z 3004 to ref 129669 no_role_a no_role_b diff --git a/uml/lumiera/132357.diagram b/uml/lumiera/132357.diagram index a097c7137..5a7ffa76a 100644 --- a/uml/lumiera/132357.diagram +++ b/uml/lumiera/132357.diagram @@ -1,81 +1,172 @@ format 40 -classcanvas 128005 class_ref 132741 // State +classcanvas 128133 class_ref 143493 // OperationBase draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 78 10 2000 + xyz 232 13 2000 end -classcanvas 128133 class_ref 143493 // InvocationStateBase +classcanvas 128261 class_ref 143621 // QueryCache draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 203 104 2000 + xyz 186 252 2000 end -classcanvas 128261 class_ref 143621 // Caching +classcanvas 128517 class_ref 143877 // ReadSource draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 235 157 2000 + xyz 297 165 2000 end -classcanvas 128389 class_ref 143749 // Process +classcanvas 130309 class_ref 144005 // BuffTable draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 236 212 2000 - end -classcanvas 128517 class_ref 143877 // InPlace - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 238 268 2000 - end -classcanvas 128645 class_ref 142469 // StateProxy - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 209 332 2004 - end -classcanvas 130309 class_ref 144005 // WiringTable - draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 101 298 2000 + xyz 100 508 2000 end classcanvas 130437 class_ref 142725 // WiringDescriptor draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 36 213 2005 + xyz 82 319 2005 end classcanvas 130565 class_ref 144133 // BuffHandle draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 36 379 2000 + xyz 169 563 2000 end textcanvas 131461 "const" - xyzwh 109 257 2010 29 18 -relationcanvas 128901 relation_ref 149765 // - from ref 128645 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129029 relation_ref 149893 // - from ref 128517 z 1999 to ref 128389 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129157 relation_ref 150021 // - from ref 128389 z 1999 to ref 128261 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129285 relation_ref 150149 // - from ref 128261 z 1999 to ref 128133 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129413 relation_ref 150277 // - from ref 128133 z 1999 to point 260 69 - line 129925 z 1999 to point 190 69 - line 130181 z 1999 to point 161 176 - line 130053 z 1999 to point 118 176 - line 129797 z 1999 to ref 128005 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b + xyzwh 101 388 2010 29 18 +classcanvas 131717 class_ref 144261 // Invocation + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + color lightorange + xyz 31 439 2000 + end +classcanvas 131845 class_ref 143365 // NodeWiring + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 222 423 2005 + end +classcanvas 131973 class_ref 142597 // StateAdapter + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 25 230 2005 + end +classcanvas 132357 class_ref 144389 // ProcessData + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 186 140 2015 + end +classcanvas 132997 class_ref 144517 // Strategy + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 199 319 3010 + end +classcanvas 133253 class_ref 144517 // Strategy + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 301 301 2005 + end +classcanvas 134021 class_ref 144645 // FeedCache + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 190 80 2010 + end +classcanvas 134533 class_ref 144389 // ProcessData + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 238 125 2004 + end +classcanvas 134661 class_ref 144517 // Strategy + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 250 309 3005 + end +textcanvas 137477 "as configured" + xyzwh 308 376 3010 68 18 +classcanvas 137733 class_ref 143749 // PullInput + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 194 198 2010 + end +classcanvas 137861 class_ref 143749 // PullInput + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 247 184 2005 + end +textcanvas 139781 "Policy Classes" + xyzwh 163 50 2005 81 21 relationcanvas 130693 relation_ref 150405 // geometry VHr - from ref 130309 z 1999 stereotype "<>" xyz 43 309 3000 to point 70 326 + from ref 130309 z 1999 stereotype "<>" xyz 177 517 3000 to point 203 536 line 130821 z 1999 to ref 130565 no_role_a no_role_b - multiplicity_a_pos 45 354 3000 no_multiplicity_b + multiplicity_a_pos 211 537 3000 no_multiplicity_b relationcanvas 130949 relation_ref 150533 // from ref 130309 z 1999 to ref 130437 no_role_a no_role_b no_multiplicity_a no_multiplicity_b -relationcanvas 131077 relation_ref 150661 // - geometry VHr - from ref 128645 z 1999 to point 136 371 - line 131333 z 1999 to ref 130309 - role_a_pos 148 367 3000 no_role_b - multiplicity_a_pos 122 359 3000 no_multiplicity_b +relationcanvas 132229 relation_ref 149509 // + from ref 131845 z 2004 to point 219 401 + line 137605 z 2004 to point 162 401 + line 137221 z 2004 to ref 130437 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 133381 relation_ref 151301 // + from ref 133253 z 1999 to point 333 274 + line 137349 z 1999 to ref 128517 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 135685 relation_ref 152197 // + from ref 131717 z 1999 to ref 131973 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 135813 relation_ref 152325 // + from ref 131717 z 1999 to ref 130437 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 135941 relation_ref 152453 // + geometry VH + from ref 131717 z 1999 to point 63 536 + line 137093 z 1999 to ref 130309 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 136069 relation_ref 152581 // + from ref 131845 z 2004 to ref 132997 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 136197 relation_ref 152709 // + from ref 131845 z 2004 to ref 134661 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 136325 relation_ref 152837 // + from ref 131845 z 2004 to ref 133253 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 136453 relation_ref 152965 // + from ref 131845 z 1999 stereotype "<>" xyz 145 441 3000 to ref 131717 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 137989 relation_ref 153093 // + from ref 132997 z 1999 to point 222 316 + line 139653 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 138117 relation_ref 153221 // + from ref 128261 z 1999 to ref 137733 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 138245 relation_ref 153349 // + from ref 137733 z 2009 to ref 132357 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 138373 relation_ref 153477 // + from ref 132357 z 2009 to ref 134021 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 138501 relation_ref 153605 // + geometry VHV unfixed + from ref 134021 z 1999 to point 223 68 + line 138885 z 1999 to point 275 68 + line 139013 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 138629 relation_ref 153733 // + geometry VHV unfixed + from ref 128517 z 1999 to point 333 68 + line 139141 z 1999 to point 275 68 + line 139269 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 138757 relation_ref 153861 // + from ref 134533 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 139397 relation_ref 153989 // + from ref 134661 z 2004 to ref 137861 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 139525 relation_ref 154117 // + from ref 137861 z 2003 to ref 134533 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 1a789da17..e24c87ad6 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -1,22 +1,32 @@ -window_sizes 1140 830 270 860 680 71 +window_sizes 1302 1004 270 1022 854 71 diagrams classdiagram_ref 131973 // Render Mechanics - 428 623 100 4 2 0 + 407 690 100 4 2 0 collaborationdiagram_ref 132229 // Render Process - 817 644 100 4 0 0 + 825 684 100 4 0 0 active classdiagram_ref 132357 // StateAdapter composition - 418 520 100 4 0 0 + 414 658 100 4 0 0 end show_stereotypes selected -package_ref 129 // lumiera + package_ref 129 // lumiera open class_ref 132741 // State -package_ref 129029 // Controller + package_ref 129029 // Controller class_ref 131717 // ProcNode class_ref 142469 // StateProxy class_ref 142597 // StateAdapter + class_ref 142725 // WiringDescriptor + class_ref 143365 // NodeWiring + class_ref 143621 // QueryCache + class_ref 143749 // PullInput + class_ref 143877 // ReadSource + class_ref 144389 // ProcessData + class_ref 144645 // FeedCache + class_ref 144517 // Strategy + class_ref 144005 // BuffTable + class_ref 144261 // Invocation usecaseview_ref 128005 // Renderengine Use class_ref 140677 // QueryHandler class_ref 140805 // TypeHandler diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index 2238424c2..a533da6cc 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 40 "lumiera" - revision 47 + revision 48 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 6384ef114..51956bb30 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -900,12 +900,12 @@ at the lowest level within the builder there is the step of building a //connect &rarr;see also: BuilderPrimitives for the elementary working situations corresponding to each of these [[builder moulds|BuilderMould]] -
+
Background: #fefefd
 Foreground: #000
 PrimaryPale: #8fb
-PrimaryLight: #50d2ae
-PrimaryMid: #1b9989
+PrimaryLight: #4dc9a7
+PrimaryMid: #16877a
 PrimaryDark: #0f3f56
 SecondaryPale: #ffc
 SecondaryLight: #fe8
@@ -3043,7 +3043,7 @@ At first sight the link between asset and clip-MO is a simple logical relation b
 [img[Entities comprising the Render Engine|uml/fig128389.png]]
 
-
+
Below are some notes regarding details of the actual implementation of the render process and processing node operation. In the description of the [[render node operation protocol|NodeOperationProtocol]] and the [[mechanics of the render process|RenderMechanics]], these details were left out deliberately.
 
 !Layered structure of State
@@ -3059,18 +3059,19 @@ Some data processors simply require to work on multiple channels simultanously,
 [>img[uml/fig132357.png]]
 Every node is actually decomposed into three parts
 * an interface container of a ProcNode subclass
-* an {{{const}}} WiringDescriptor, which is actually parametrized to a subtype encoding details of the intended operation
-* an StateAdapter object created on the stack for each {{{pull()}}} call and configured specifically for the intended operation
-Thus, the outer container can be changed polymorphically to support the different kinds of nodes (large-scale view). The actual wiring of the nodes is contained in the WiringDescriptor, including the {{{process()}}} function pointer. Additionally, this WiringDescriptor knows the actual type of the StateAdapter to create, and this actual type has been chosen by the builder such as to select details of the desired operation of this mode, for example caching / no caching or maybe ~OpenGL rendering or the special case of a node pulling directly from a source reader. Most of this configuration is done by selecting the right template specialisation within the builder; thus in the critical path most of the calls can be inlined
+* an {{{const}}} WiringDescriptor, which is actually parametrized to a subtype encoding details of how to carry out the intended operation
+* the Invocation state created on the stack for each {{{pull()}}} call. It is comprised of references to an StateAdapter object  and the current overall process state, the WiringDescriptor, and finally a table of suitable buffer handles
+Thus, the outer container can be changed polymorphically to support the different kinds of nodes (large-scale view). The actual wiring of the nodes is contained in the WiringDescriptor, including the {{{process()}}} function pointer. Additionally, this WiringDescriptor knows the actual type of the operation Strategy, and this actual type has been chosen by the builder such as to select details of the desired operation of this node, for example caching / no caching or maybe ~OpenGL rendering or the special case of a node pulling directly from a source reader. Most of this configuration is done by selecting the right template specialisation within the builder; thus in the critical path most of the calls can be inlined
 
-!!!! composing the actual StateAdapter
-As shown in the class diagram to the right, the actual implementation is assembled by chaining together the various policy classes governing parts of the node operation, like Caching, in-Place calculation capability, etc. (&rarr; see [[here|StateAdapter]] for details). The rationale is that we can allocate at runtime a StateProxy object directly on the stack with the necessary buffer table size and an precisely tailored and mostly inlined implementation of the call sequence for "calculating the predecessor nodes". We //do employ//&nbsp; some virtual calls for the buffer management in order to avoid coupling the policy classes to the actual number of in/out buffers. (As of 6/2008, this is mainly a precaution to be able to control the number of generated template instances. If we ever get in the region of several hundred individual specialisations, we'd need to separate out the allocation of the "wiring table" into a hand-made stack-like buffer allocated from the heap.)
+!!!! composing the actual operation Strategy
+As shown in the class diagram to the right, the actual implementation is assembled by chaining together the various policy classes governing parts of the node operation, like Caching, in-Place calculation capability, etc. (&rarr; see [[here|WiringDescriptor]] for details). The rationale is that the variable part of the Invocation data is allocated at runtime directly on the stack, while a precisely tailored call sequence for "calculating the predecessor nodes" can be defined out of a bunch of simple building blocks. This helps avoiding "spaghetti code", which would be especially dangerous because of the large number of different execution paths to get right. Additionally, a nice side effect of this implementation technique is that a good deal of the implementation is eligible to inlining.
+We //do employ//&nbsp; some virtual calls for the buffer management in order to avoid coupling the policy classes to the actual number of in/out buffers. (As of 6/2008, this is mainly a precaution to be able to control the number of generated template instances. If we ever get in the region of several hundred individual specialisations, we'd need to separate out the allocation of the "buffer table" into a hand-made stack-like buffer allocated from the heap.)
 
 !Rules for buffer allocation and freeing
 * only output buffers are allocated. It is //never necessary//&nbsp; to allocate input buffers!
 * buffers are to be allocated as late as possible, typically just before invoking {{{process()}}}
-* buffers are allways allocated by calling to the preceeding StateAdapter in the callstack ("parent stae"), because of the possibility to write to cache.
-* {{{pull()}}} returns the buffer-ID of the single output requested by this call. Using this ID, the caller may retrieve the actual buffer holding the result from the "current state" StaeProxy.
+* buffers are allways allocated by calling to the preceeding StateAdapter in the callstack ("parent stae"), because of the possibility of writing the result to cache.
+* {{{pull()}}} returns a handle for the single output requested by this call. Using this ID, the caller may retrieve the actual buffer holding the result from the "current state" StaeProxy.
 * any other buffers filled with results in the course of the same {{{process()}}} call can be released immediately before returning from the {{{pull()}}}
 * similar, and input buffers are to be released immediately after the {{{process()}}} call, but before returing from this {{{pull()}}}
 * buffers are allways released by calling to the "current state" (which is a StateProxy), providing the buffer-ID to be released
@@ -3246,32 +3247,8 @@ if (oldText.indexOf("SplashScreen")==-1)
 }
 //}}}
-
-
A small (in terms of storage) and specifically configured StateProxy object which is created on the stack for each individual {{{pull()}}} call. The actual type of this object is composed out of several building blocks (policy classes) and placed by the builder as a template parameter on the WiringDescriptor of the individual ProcNode. This happens in the WiringFactory in file {{{nodewiring.cpp}}}, which consequently contains all the possible combinations (pre)generated at compile time.
-
-!building blocks
-* ''Caching'': whether the result frames of this processing step will be communicated to the Cache and thus could be fetched from there instead of actually calculating them.
-* ''Process'': whether this node does any calculations on it's own or just pulls from a source
-* ''Inplace'': whether this node is capable of processing the result "in-place", thereby overwriting the input buffer
-* ''Multiout'': whether this node produces multiple output channels/frames in one processing step
-
-!!implementation
-!!!!Caching
-When a node participates in ''caching'', a result frame may be pulled immediately from cache instead of calculating it. Moreover, //any output buffer//&nbsp; of this node will be allocated //within the cache.// Consequently, caching interferes with the ability of the next node to calculate "in-Place". In the other case, when ''not using the cache'', the {{{pull()}}} call immediately starts out with calling down to the predecessor nodes, and the allocation of output buffer(s) is always delegated to the parent state (i.e. the StateProxy pulling results from this node). 
-
-Generally, buffer allocation requests from predecessor nodes (while being pulled by this node) will either be satisfied by using the "current state", or treated as if they were our own output buffers when this node is in-Place capable.
-
-!!!!Multiple Outputs
-Some simplifications are possible in the default case of a node producing just ''one single output'' stream. Otherwise, we'd have to allocate multiple output buffers, and then, after processing, select the one needed as a result and deallocate the superfluous further buffers.
-
-!!!!in-Place capability
-If a node is capable of calculating the result by ''modifying it's input'' buffer(s), an important performance optimization is possible, because in a chain of in-place capable nodes, we don't need any buffer allocations. But, on the other hand, this optimization may collide with the caching, because a frame retrieved from cache must not be modified.
-Without this optimization, in the base case each processing needs an input and an output. Exceptionally, we could think of special nodes which //require// to process in-place, in which case we'd need to provide a copy of the input buffer to work on under certain circumstances. 
-
-!!!!Processing
-If ''not processing'' we don't have any input buffers, instead we get our output buffers from an external source.
-Otherwise, in the default case of actually ''processing'' out output, we have to organize input buffers, allocate output buffers, call the {{{process()}}} function of the WiringDescriptor and finally release the input buffers.
-
+
+
A small (in terms of storage) and specifically configured StateProxy object which is created on the stack for each individual {{{pull()}}} call. It is part of the invocation state of such a call and participates in the buffer management. Thus, in a calldown sequence of {{{pull()}}} calls we get a corresponding sequence of "parent" states. At each level, the &rarr; WiringDescriptor of the respective node defines a Strategy how the call is passed on.
An Object representing a //Render Process// and containing associated state information.
@@ -4648,6 +4625,33 @@ In case it's not already clear: we don't have "the" Render Engine, rat
 The &raquo;current setup&laquo; of the objects in the EDL is sort of a global state. Same holds true for the Controller, as the Engine can be at playback, it can run a background render or scrub single frames. But the whole complicated subsystem of the Builder and one given Render Engine configuration can be made ''stateless''. As a benefit of this we can run this subsystems multi-threaded without the need of any precautions (locking, synchronizing). Because all state information is just passed in as function parameters and lives in local variables on the stack, or is contained in the StateProxy which represents the given render //process// and is passed down as function parameter as well. (note: I use the term "stateless" in the usual, slightly relaxed manner; of course there are some configuration values contained in instance variables of the objects carrying out the calculations, but this values are considered to be constant over the course of the object usage).
 
+
+
Each [[processing node|ProcNode]] contains a stateless ({{{const}}}) descriptor detailing the inputs, outputs and predecessors. Moreover, this descriptor contains the configuration of the call sequence yielding the &raquo;data pulled from predecessor(s)&laquo;. The actual type of this object is composed out of several building blocks (policy classes) and placed by the builder as a template parameter on the WiringDescriptor of the individual ProcNode. This happens in the WiringFactory in file {{{nodewiring.cpp}}}, which consequently contains all the possible combinations (pre)generated at compile time.
+
+!building blocks
+* ''Caching'': whether the result frames of this processing step will be communicated to the Cache and thus could be fetched from there instead of actually calculating them.
+* ''Process'': whether this node does any calculations on it's own or just pulls from a source
+* ''Inplace'': whether this node is capable of processing the result "in-place", thereby overwriting the input buffer
+* ''Multiout'': whether this node produces multiple output channels/frames in one processing step
+
+!!implementation
+!!!!Caching
+When a node participates in ''caching'', a result frame may be pulled immediately from cache instead of calculating it. Moreover, //any output buffer//&nbsp; of this node will be allocated //within the cache.// Consequently, caching interferes with the ability of the next node to calculate "in-Place". In the other case, when ''not using the cache'', the {{{pull()}}} call immediately starts out with calling down to the predecessor nodes, and the allocation of output buffer(s) is always delegated to the parent state (i.e. the StateProxy pulling results from this node). 
+
+Generally, buffer allocation requests from predecessor nodes (while being pulled by this node) will either be satisfied by using the "current state", or treated as if they were our own output buffers when this node is in-Place capable.
+
+!!!!Multiple Outputs
+Some simplifications are possible in the default case of a node producing just ''one single output'' stream. Otherwise, we'd have to allocate multiple output buffers, and then, after processing, select the one needed as a result and deallocate the superfluous further buffers.
+
+!!!!in-Place capability
+If a node is capable of calculating the result by ''modifying it's input'' buffer(s), an important performance optimization is possible, because in a chain of in-place capable nodes, we don't need any buffer allocations. But, on the other hand, this optimization may collide with the caching, because a frame retrieved from cache must not be modified.
+Without this optimization, in the base case each processing needs an input and an output. Exceptionally, we could think of special nodes which //require// to process in-place, in which case we'd need to provide it with a copy of the input buffer to work on. 
+
+!!!!Processing
+If ''not processing'' we don't have any input buffers, instead we get our output buffers from an external source.
+Otherwise, in the default case of actually ''processing'' out output, we have to organize input buffers, allocate output buffers, call the {{{process()}}} function of the WiringDescriptor and finally release the input buffers.
+
+
The purpose of automation is to vary a parameter of some data processing instance in the course of time while rendering. Thus, automation encompasses all the variability within the render network //which is not a structural change.//