diff --git a/doc/devel/uml/class131589.html b/doc/devel/uml/class131589.html index beefcf13d..86ae3636b 100644 --- a/doc/devel/uml/class131589.html +++ b/doc/devel/uml/class131589.html @@ -18,6 +18,6 @@

Declaration :

The output of the render pipeline. Pulling from such exit nodes actually ivokes the render process

Artifact : exitnode

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class131717.html b/doc/devel/uml/class131717.html index 8952f6f05..93a92a0b1 100644 --- a/doc/devel/uml/class131717.html +++ b/doc/devel/uml/class131717.html @@ -20,9 +20,10 @@

Key abstraction of the Render Engine: A Data processing Node

Artifact : procnode

Relation datasrc (<unidirectional association>)

Declaration :

The predecessor in a processing pipeline, i.e. a source to get data to be processed

-
Relation params (<directional aggregation by value>)

Declaration :

-
Operation pull

Declaration :

trigger data processing by "pulling" results from the node's output

-
Relation predecessors (<directional aggregation by value>)

Declaration :

preconfigured table of all predecessor nodes, qualified
with the output port on these nodes and time offset of the data
we need for doing our calculations

-

All public operations : pull

+
Relation params (<directional aggregation by value>)

Declaration :

+
Relation predecessors (<directional aggregation by value>)

Declaration :

+
Operation pull

Declaration :

+
Operation process

Declaration :

+

All public operations : process , pull

diff --git a/doc/devel/uml/class131845.html b/doc/devel/uml/class131845.html index c59787b25..1a439ca08 100644 --- a/doc/devel/uml/class131845.html +++ b/doc/devel/uml/class131845.html @@ -19,6 +19,6 @@

Declaration :

Directly inherited by : CodecAdapter Mask PluginAdapter Projector

Artifact : trafo

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class131973.html b/doc/devel/uml/class131973.html index 82d637b48..0ed7acaef 100644 --- a/doc/devel/uml/class131973.html +++ b/doc/devel/uml/class131973.html @@ -19,6 +19,6 @@

Declaration :

Directly inherited by : GLPipe

Artifact : link

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class132101.html b/doc/devel/uml/class132101.html index 50eae3f1b..f385d98c0 100644 --- a/doc/devel/uml/class132101.html +++ b/doc/devel/uml/class132101.html @@ -18,6 +18,6 @@

Declaration :

Artifact : hub

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class132229.html b/doc/devel/uml/class132229.html index 28f198354..8fc999275 100644 --- a/doc/devel/uml/class132229.html +++ b/doc/devel/uml/class132229.html @@ -18,6 +18,6 @@

Declaration :

Special video processing node used to scale and translate image data.

Artifact : projector

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class132357.html b/doc/devel/uml/class132357.html index 9dab6ff1f..1b054fe8f 100644 --- a/doc/devel/uml/class132357.html +++ b/doc/devel/uml/class132357.html @@ -18,6 +18,6 @@

Declaration :

Artifact : mask

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class132485.html b/doc/devel/uml/class132485.html index 2ccb92506..54bafe5c9 100644 --- a/doc/devel/uml/class132485.html +++ b/doc/devel/uml/class132485.html @@ -18,6 +18,6 @@

Declaration :

Adapter used to integrage an effects processor in the render pipeline

Artifact : pluginadapter

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class132613.html b/doc/devel/uml/class132613.html index 763de044c..90fc0acbb 100644 --- a/doc/devel/uml/class132613.html +++ b/doc/devel/uml/class132613.html @@ -18,6 +18,6 @@

Declaration :

specialized connection node used to handle the transfer of OpenGL data from a image bitmap into texture form

Artifact : glpipe

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class132741.html b/doc/devel/uml/class132741.html index f543def13..1efbe8fa1 100644 --- a/doc/devel/uml/class132741.html +++ b/doc/devel/uml/class132741.html @@ -16,9 +16,14 @@ -

Declaration :

Directly inherited by : ARender GLRender StateAdapter StateProxy VRender

+

Declaration :

Directly inherited by : ARender GLRender StateAdapter StateProxy VRender

Artifact : stateproxy, Component(s) : Builder

-
Relation currFrame (<unidirectional association>)

Declaration :

+
Relation currFrame (<unidirectional association>)

Declaration :

+
Operation fetch

Declaration :

+
Operation allocateBuffer

Declaration :

+
Operation releaseBuffer

Declaration :

+
Operation isCalculated

Declaration :

+

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

diff --git a/doc/devel/uml/class132869.html b/doc/devel/uml/class132869.html index 2d6833c2a..a9d6b46c3 100644 --- a/doc/devel/uml/class132869.html +++ b/doc/devel/uml/class132869.html @@ -18,5 +18,6 @@

Declaration :

Representation of a Audio render process

Artifact : arender

+

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

diff --git a/doc/devel/uml/class132997.html b/doc/devel/uml/class132997.html index a45d3c828..e59220a95 100644 --- a/doc/devel/uml/class132997.html +++ b/doc/devel/uml/class132997.html @@ -18,5 +18,6 @@

Declaration :

Representation of a Video render process. (Encapsulates the video buffers for the actual calculations)

Artifact : vrender

+

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

diff --git a/doc/devel/uml/class133125.html b/doc/devel/uml/class133125.html index d1cf4b2b6..8c1acac1f 100644 --- a/doc/devel/uml/class133125.html +++ b/doc/devel/uml/class133125.html @@ -18,5 +18,6 @@

Declaration :

Representation of a OpenGL accelerated Video render process

Artifact : glrender

+

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

diff --git a/doc/devel/uml/class133765.html b/doc/devel/uml/class133765.html index 384101f0a..b6f9bde2d 100644 --- a/doc/devel/uml/class133765.html +++ b/doc/devel/uml/class133765.html @@ -18,6 +18,6 @@

Declaration :

Source Node: represents a media source to pull data from.

Artifact : source

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class135045.html b/doc/devel/uml/class135045.html index a651d86b1..c91ed83fb 100644 --- a/doc/devel/uml/class135045.html +++ b/doc/devel/uml/class135045.html @@ -18,6 +18,6 @@

Declaration :

Artifact : codecadapter

-

All public operations : pull

+

All public operations : process , pull

diff --git a/doc/devel/uml/class142213.html b/doc/devel/uml/class142213.html deleted file mode 100644 index a43acb9ac..000000000 --- a/doc/devel/uml/class142213.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -Class StateAdapter - - - - - -
Class StateAdapter
-

- - - - -

Declaration :

lightweight value class used to manage the buffer associations for a single pull() call on a processing node

- -
Operation pull

Declaration :

trigger data processing by "pulling" results from the node's output

-
Operation retrieveBuffers

Declaration :

invoked from within the pull() - call of a node to set up the data buffers.
@param requiredSource descriptor denoting the predecessors and the frames required from them

-
Relation <unidirectional association>

Declaration :

-
Relation state (<unidirectional association>)

Declaration :

-

All public operations : pull , retrieveBuffers

- - diff --git a/doc/devel/uml/class142469.html b/doc/devel/uml/class142469.html index 9b6ed01a1..58c82f008 100644 --- a/doc/devel/uml/class142469.html +++ b/doc/devel/uml/class142469.html @@ -4,17 +4,20 @@ -Class caller +Class StateProxy -
Class caller
+
Class StateProxy

-

Declaration :

+

Declaration :

+
+

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer

+ diff --git a/doc/devel/uml/class142597.html b/doc/devel/uml/class142597.html index 6465a8cd5..69ed2147c 100644 --- a/doc/devel/uml/class142597.html +++ b/doc/devel/uml/class142597.html @@ -4,17 +4,23 @@ -Class Backend_Cache +Class StateAdapter -
Class Backend_Cache
+
Class StateAdapter

-

Declaration :

+

Declaration :

+ +
Operation retrieve

Declaration :

+
Relation state (<unidirectional association>)

Declaration :

+
Relation <unidirectional association>

Declaration :

+

All public operations : allocateBuffer , fetch , isCalculated , releaseBuffer , retrieve

+ diff --git a/doc/devel/uml/class142341.html b/doc/devel/uml/class142725.html similarity index 84% rename from doc/devel/uml/class142341.html rename to doc/devel/uml/class142725.html index e9ac0ff67..2118cb163 100644 --- a/doc/devel/uml/class142341.html +++ b/doc/devel/uml/class142725.html @@ -15,6 +15,6 @@ - -

Declaration :

Artifact : procnode

+ +

Declaration :

diff --git a/doc/devel/uml/class142085.html b/doc/devel/uml/class143109.html similarity index 64% rename from doc/devel/uml/class142085.html rename to doc/devel/uml/class143109.html index 70fbc4c7b..f2696562b 100644 --- a/doc/devel/uml/class142085.html +++ b/doc/devel/uml/class143109.html @@ -4,19 +4,17 @@ -Class StateProxy +Class BackendCache -
Class StateProxy
+
Class BackendCache

- -

Declaration :

-
- + +

Declaration :

diff --git a/doc/devel/uml/class143237.html b/doc/devel/uml/class143237.html new file mode 100644 index 000000000..b1b5a8387 --- /dev/null +++ b/doc/devel/uml/class143237.html @@ -0,0 +1,20 @@ + + + + + + +Class Caller + + + + + +
Class Caller
+

+ + + + +

Declaration :

+ diff --git a/doc/devel/uml/classdiagrams.html b/doc/devel/uml/classdiagrams.html index c08c6d8a8..1df0fcd1d 100644 --- a/doc/devel/uml/classdiagrams.html +++ b/doc/devel/uml/classdiagrams.html @@ -20,7 +20,6 @@ Automation Entities Builder Entities Controller Entities -Engine Details File MappingShows whats used to access Frames HierarchyLumiera Exception hierarchy In Memory Database @@ -28,6 +27,7 @@ Media-Asset Relations Proc-Asset Relations Render Entities +Render Mechanics Rules access Session structure Struct-Asset Relations diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index e1343f56e..9375f3648 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -26,12 +26,12 @@ AssetinterfaceSuperinterface describing especially the bookeeping properties of Assets AssetManagerboundaryFacade for the Asset subsystem AutoAutomation data for some parameter (i.e. a time varying function) -Backend_Cache +BackendCache 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. -caller +Caller Categorytree like classification of Assets Clipbookkeeping (asset) view of a media clip. Clip @@ -76,7 +76,7 @@ GLPipespecialized connection node used to handle the transfer of OpenGL data from a image bitmap into texture form GLRenderRepresentation of a OpenGL accelerated Video render process Hub -InputDescriptor +InputDescriptor InterpolatorProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter Invalid Label @@ -128,8 +128,8 @@ SourceSource Node: represents a media source to pull data from. Stateinterface State -StateAdapterlightweight value class used to manage the buffer associations for a single pull() call on a processing node -StateProxyimplementation +StateAdapter +StateProxyimplementation std::exceptionauxiliary Structkey abstraction: structural asset ThreadWe can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index 153e47670..38b7af7d1 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -27,12 +27,12 @@ Asset
AssetManager
Auto
-Backend_Cache
+BackendCache
Buildable
BuilderFacade
BuilderTool
BuildInstruct
-caller
+Caller
Category
Clip
Clip
@@ -77,7 +77,7 @@ GLPipe
GLRender
Hub
-InputDescriptor
+InputDescriptor
Interpolator
Invalid
Label
@@ -129,8 +129,8 @@ Source
State
State
-StateAdapter
-StateProxy
+StateAdapter
+StateProxy
std::exception
Struct
Thread
diff --git a/doc/devel/uml/collaborationdiagrams.html b/doc/devel/uml/collaborationdiagrams.html index 9090762bc..5ccf1d4a5 100644 --- a/doc/devel/uml/collaborationdiagrams.html +++ b/doc/devel/uml/collaborationdiagrams.html @@ -18,7 +18,7 @@ - +
"default" object
build processThis figure shows the process of building and starting a RenderEngine
pull call
Render Process
diff --git a/doc/devel/uml/fig131973.png b/doc/devel/uml/fig131973.png index 31b9b2a18..7ed45dca7 100644 Binary files a/doc/devel/uml/fig131973.png and b/doc/devel/uml/fig131973.png differ diff --git a/doc/devel/uml/fig132101.png b/doc/devel/uml/fig132101.png deleted file mode 100644 index de8af3d00..000000000 Binary files a/doc/devel/uml/fig132101.png and /dev/null differ diff --git a/doc/devel/uml/fig132229.png b/doc/devel/uml/fig132229.png new file mode 100644 index 000000000..4cc4b71d5 Binary files /dev/null and b/doc/devel/uml/fig132229.png differ diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index a054cc161..1cfd68cc1 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 : 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, mobject, source, frame

+

executable associated with : 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, mobject, source, frame, placement, sessionimpl, builderfacade, controllerfacade, processor, pluginadapter

Artifact main

Artifact source

@@ -509,7 +509,7 @@ Documentation
Artifact procnode

Key abstraction of the Render Engine: a Processing Node

-

Artifact source associated with : ProcNode, InputDescriptor

+

Artifact source associated with : ProcNode

Artifact trafo

transforming processing Node

@@ -764,6 +764,7 @@ Documentation
Class Assembler
+
Class State
Class Buildable
@@ -876,6 +877,9 @@ reuse exiting Engine

Selection :

Transformation

Automation Entities



+ +

+

Render Mechanics



Class Processor
Class ExitNode
@@ -896,27 +900,9 @@ reuse exiting Engine

Selection :

Transformation
Class VFrame
Class GLBuf
Class Source
- -

-

Engine Details



-
Class State
-
-
-
- - -

2.3.3 Use Case View render process

-
- -

-

pull call



- -
Class instance

type :StateAdapter

-
Class instance node1

type :ProcNode

-
Class instance node2

type :ProcNode

-
Class instance next_adapter

type :StateAdapter

-
Class instance current_state

type :StateProxy

Class caller
-
+
+
+
@@ -1092,7 +1078,19 @@ reuse exiting Engine

Selection :

Transformation

Class instance video

type :ExitNode

relations :

+

+

+

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 Caller
+ +
Class instance node3

type :ProcNode

+
Class instance ad3

type :StateAdapter

3 Package BackendLayer

diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index 8712d7074..cc286ecf2 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -28,10 +28,10 @@ <flow>transition <flow>transition <flow>transition -<flow>transition <flow>transition -<flow>transition +<flow>transition <flow>transition +<flow>transition <flow>transition <flow>transition <flow>transition diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index c1c05066a..8bc6b2fca 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -23,9 +23,13 @@ access Fileuse case activity finalactivity final activity finalactivity final +ad1class instance +ad2class instance +ad3class instance add new object to sessionuse case AFrameclass aframeartifacta buffer and render process holding a Audio frame +allocateBufferoperation allocationartifact Allocationclassa directive to place a MObject in a specific way anchorrelation @@ -52,12 +56,12 @@ 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 diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index 592c6f15d..f37527c49 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -21,7 +21,7 @@ Backend Componentsclass view backend use casesuse case diagram backend-componentscomponent diagram -Backend_Cacheclass +BackendCacheclass BackendLayerpackage buildoperation build flowactivity diagram diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index 996ed7eb6..2b841a011 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -19,7 +19,7 @@ NameKindDescription Cachecomponent Cachecomponent view -callerclass +Callerclass categoryrelationprimary tree like classification of the asset Categoryclasstree like classification of Assets categoryartifacttree like classification of Assets @@ -28,35 +28,34 @@ chainoperationcreate and add another Placement for this media object, thus increasingly constraining the (possible) position of this object. 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 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. @@ -96,8 +95,8 @@ constraintartifactLocatingPin representing an directive by the user that
must not be violated Constraintclass Controllercomponent -Controllerpackage controllerpackagesourcecode package

The Processing and Render Controller,
located within the MObject Subsystem +Controllerpackage Controller Entitiesclass diagram Controller Workingsclass view ControllerFacadeclassProvides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings. @@ -107,8 +106,8 @@ create specific objectuse case createClipoperationcreate a (possibly compound) Clip refering to this media, ready to be added to the EDL. currEDLoperationThe EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands. +currentclass instance currentrelationStandard access path to get at the current session via the Session Manager, which acts as a "PImpl" smart pointer -current_stateclass instance currFramerelation diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index c9eb2c76d..6c17d406d 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -18,21 +18,20 @@ - + - + - diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index f328ad207..3d833b61f 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
EDLcomponent
EDLclass
EDLcomponent
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
endattributeend of the timerange (excl)
Enginecomponent
enginepackagesourcecode package

The Core Render Engine
Engine Detailsclass diagram
Engine Example1object diagramExample1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1
Engine Example2object diagramExample2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.
Engine Partsdeployment view
+ diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index fa68d81e1..12fe67359 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -23,7 +23,7 @@ - + @@ -34,6 +34,7 @@ +
NameKindDescription
Factoryclassa template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only.
fetchoperation
Fileclass
filerelation
File Mappingclass diagramShows whats used to access Frames
inputclass instance
inputclass instance
inputclass instance
InputDescriptorclass
InputDescriptorclass
instanceoperation
instructionsrelation
Interfaceclass view
Invalidclass
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_78.html b/doc/devel/uml/index_78.html index 8afac3d9f..d0f7bd42e 100644 --- a/doc/devel/uml/index_78.html +++ b/doc/devel/uml/index_78.html @@ -20,9 +20,9 @@ nameattributeelement ID, comprehensible but sanitized. The tuple (category, name, org) is unique. need sub objectuse case nextrelationnext additional LocatingPin, if any -next_adapterclass instance node1class instance -node2class instance +node2class instance +node3class instance nodecreatertoolartifactcentral Tool implementing the Renderengine building NodeCreatorToolclassThis 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. nodesrelation diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index f63687c5b..bfec5f683 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -19,8 +19,8 @@ NameKindDescription offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation? 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 +ouputclass instance ouputclass instance outPortrelationthe Port this MObject wants to be conected to outputrelation diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 83ab6f76d..0cff29b1c 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -40,7 +40,7 @@ pnodenode pointattributeidentifying the point where the nodes should be attached Posix Threads Abstractionclass viewC++ wrapers for pthreads -predecessorsrelationpreconfigured table of all predecessor nodes, qualified
with the output port on these nodes and time offset of the data
we need for doing our calculations
+predecessorsrelation predicate implclass instance Prefetchclass Previewclassalternative version of the media data, probably with lower resolution @@ -53,6 +53,7 @@ Proc-Asset Relationsclass diagram proc-componentscomponent diagram ProcDispatcherclass +processoperation ProcessingLayerpackage Processorclass processorartifacta single render pipeline for one segment of the timeline @@ -64,9 +65,7 @@ ProjectorclassSpecial video processing node used to scale and translate image data. projectorartifactvideo ProcNode for scaling and translating image data providerrelation -pulloperationtrigger data processing by "pulling" results from the node's output -pulloperationtrigger data processing by "pulling" results from the node's output -pull callcollaboration diagram +pulloperation diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index c807e8ca4..7f2b69c16 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -22,11 +22,13 @@ registryrelation@internal Table or DB holding all registered asset instances. relativelocationartifactPlacement implemnetaion providing various ways of attaching a MObject to another one RelativeLocationclass -relTypeattributethe kind of relation denoted by this Placement +releaseBufferoperation 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 processuse case view +Render Mechanicsclass diagram +Render Processcollaboration diagram Render Requestactivity parameter RenderEngineclass renderengineartifacta complete network of processing nodes usable for rendering @@ -43,7 +45,7 @@ resolveoperation Resolvercomponent ResolverBaseclass -retrieveBuffersoperationinvoked from within the pull() - call of a node to set up the data buffers.
@param requiredSource descriptor denoting the predecessors and the frames required from them +retrieveoperation rootCauseoperationIf this exception was caused by a chain of further exceptions,
return the first one registered in this throw sequence.
This works only, if every exceptions thrown as a consequence
of another exception is propperly constructed by passing
the original exception to the constructor Rule Basecomponent Rules accessclass diagram diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 2edde4200..c7b3fed84 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -47,20 +47,20 @@ SimpleClipclassElementary clip consisting of only one media stream SmartPointerclass SmartPointersclass view -sourcerelationthe media source this clip referes to sourcerelationmedia source of this clip +sourcerelationthe media source this clip referes to SourceclassSource Node: represents a media source to pull data from. sourceartifactRepresentation of a Media source Source Overviewdeployment diagram startattributestartpos in source startattributebegin of the timerange covered by this processor startattribute -Statenode Stateclass +Statenode Stateclass -staterelation -StateAdapterclasslightweight value class used to manage the buffer associations for a single pull() call on a processing node -StateProxyclass +staterelation +StateAdapterclass +StateProxyclass stateproxyartifactKey Interface representing a render process and encapsulating state std::exceptionclass Structclasskey abstraction: structural asset diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index bfcae496d..78e737858 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -42,12 +42,12 @@ 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 364ff0811..c2ce0bff8 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -20,23 +20,23 @@ versionattributeversion number of the thing or concept represented by this asset. Of each unique tuple (name, category, org) there will be only one version in the whole system. Version 0 is reserved for internal purposes. Versions are considered to be ordered, and any higher version is supposed to be fully backwards compatible to all previous versions. VFrameclass vframeartifacta buffer and render process holding a Video frame -vid1class instance vid1class instance -vid_aclass instance -vid_Aclass instance -vid_Aclass instance -vid_aclass instance +vid1class instance vid_Aclass instance -videoclass instance -videoclass instance +vid_aclass instance +vid_Aclass instance +vid_Aclass instance +vid_aclass instance videoclass instance +videoclass instance videoclass instance -video1class instance -video1class instance -video1class instance +videoclass instance video1class instance +video1class instance video1class instance +video1class instance video1class instance +video1class instance Visitableclass visitorpackagesub-namespace for visitor library implementation visitorartifactAcyclic Visitor library diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index 03a780210..c252030f0 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -17,6 +17,7 @@ + @@ -29,6 +30,7 @@ + @@ -47,29 +49,31 @@ + - - + + + - + - + + - diff --git a/uml/lumiera/128389 b/uml/lumiera/128389 index 52c1b5245..20d07a18b 100644 --- a/uml/lumiera/128389 +++ b/uml/lumiera/128389 @@ -1,6 +1,6 @@ format 40 "RenderEngine" // ProcessingLayer::RenderEngine - revision 13 + revision 15 modified_by 5 "hiv" // class settings //class diagram settings @@ -82,6 +82,11 @@ format 40 size A4 end + classdiagram 131973 "Render Mechanics" + draw_all_relations no hide_attributes default hide_operations default show_members_full_definition yes 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 + size A4 + end + class 131333 "RenderEngine" visibility package cpp_decl "${comment}${template}class ${name}${inherit} @@ -155,7 +160,7 @@ ${inlines} a package cpp default "#include in source" classrelation_ref 136325 // - b multiplicity "" parent class_ref 132741 // StateProxy + b multiplicity "" parent class_ref 132741 // State end attribute 129413 "start" @@ -233,6 +238,46 @@ ${members}}; classrelation_ref 137861 // params () b multiplicity "" parent class_ref 134533 // Parameter end + + classrelation 152581 // predecessors () + relation 149125 *--> + stereotype "vector" + a role_name "predecessors" multiplicity "*" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + classrelation_ref 152581 // predecessors () + b multiplicity "" parent class_ref 142725 // InputDescriptor + end + + operation 135685 "pull" + 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 + + operation 136069 "process" + 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 131845 "Trafo" @@ -415,7 +460,7 @@ ${inlines} a public cpp default "${type}" classrelation_ref 134661 // - b multiplicity "" parent class_ref 132741 // StateProxy + b multiplicity "" parent class_ref 132741 // State end end @@ -436,7 +481,7 @@ ${inlines} a public cpp default "${type}" classrelation_ref 134789 // - b multiplicity "" parent class_ref 132741 // StateProxy + b multiplicity "" parent class_ref 132741 // State end end @@ -457,7 +502,7 @@ ${inlines} a public cpp default "${type}" classrelation_ref 134917 // - b multiplicity "" parent class_ref 132741 // StateProxy + b multiplicity "" parent class_ref 132741 // State end end @@ -568,5 +613,91 @@ ${inlines} b multiplicity "" parent class_ref 136709 // Media end end + + class 142469 "StateProxy" + visibility package stereotype "implementation" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 152453 // + relation 148997 ---|> + a public + cpp default "${type}" + classrelation_ref 152453 // + b multiplicity "" parent class_ref 132741 // State + end + end + + class 142597 "StateAdapter" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 152325 // + relation 148869 ---|> + a public + cpp default "${type}" + classrelation_ref 152325 // + b multiplicity "" parent class_ref 132741 // State + end + + operation 135557 "retrieve" + 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 + + classrelation 152709 // state () + relation 149253 ---> + a role_name "state" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 152709 // state () + b multiplicity "" parent class_ref 142469 // StateProxy + end + + classrelation 152837 // + relation 149381 ---> + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 152837 // + b multiplicity "" parent class_ref 133253 // Frame + end + end + + class 142725 "InputDescriptor" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + end end end diff --git a/uml/lumiera/128901 b/uml/lumiera/128901 index e4d919380..455fee7d7 100644 --- a/uml/lumiera/128901 +++ b/uml/lumiera/128901 @@ -1,6 +1,6 @@ format 40 "Builder" // ProcessingLayer::MObject::Builder - revision 14 + revision 16 modified_by 5 "hiv" // class settings //class diagram settings @@ -299,7 +299,7 @@ ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} end end - class 132741 "StateProxy" + class 132741 "State" abstract visibility public stereotype "interface" cpp_decl "${comment}${template}class ${name}${inherit} { @@ -316,12 +316,73 @@ ${members}}; classrelation 135941 // currFrame () relation 134533 ---> + stereotype "vector" a role_name "currFrame" multiplicity "" protected cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; " classrelation_ref 135941 // currFrame () b multiplicity "1" parent class_ref 133253 // Frame end + + operation 135813 "fetch" + 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 + + operation 135941 "allocateBuffer" + 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 + + operation 136197 "releaseBuffer" + 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 + + operation 136325 "isCalculated" + 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 134021 "Buildable" diff --git a/uml/lumiera/129285 b/uml/lumiera/129285 index 7883c598c..72c222be4 100644 --- a/uml/lumiera/129285 +++ b/uml/lumiera/129285 @@ -1,6 +1,6 @@ format 40 "ProcessingLayer" // ProcessingLayer - revision 15 + revision 19 modified_by 5 "hiv" // class settings //class diagram settings @@ -602,5 +602,92 @@ format 40 classinstance_ref 134405 // ouput end end + + collaborationdiagram 132229 "Render Process" + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + size A4 + end + + classinstance 136197 "node1" + type class_ref 131717 // ProcNode + attributes + end + relations + end + end + + classinstance 136325 "ad1" + type class_ref 142597 // StateAdapter + attributes + end + relations + end + end + + classinstance 136453 "current" + type class_ref 142469 // StateProxy + attributes + end + relations + end + end + + classinstance 136581 "node2" + type class_ref 131717 // ProcNode + attributes + end + relations + end + end + + classinstance 136709 "ad2" + type class_ref 142597 // StateAdapter + attributes + end + relations + end + end + + class 143109 "BackendCache" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 143237 "Caller" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + end + + classinstance 136837 "node3" + type class_ref 131717 // ProcNode + attributes + end + relations + end + end + + classinstance 136965 "ad3" + type class_ref 142597 // StateAdapter + attributes + end + relations + end + end end end diff --git a/uml/lumiera/131973.diagram b/uml/lumiera/131973.diagram index 9d11f2c5a..7a9c0af13 100644 --- a/uml/lumiera/131973.diagram +++ b/uml/lumiera/131973.diagram @@ -2,66 +2,66 @@ format 40 classcanvas 128005 class_ref 131717 // ProcNode 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 106 330 2004 + xyz 106 313 2004 end classcanvas 128517 class_ref 132741 // State 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 83 21 2000 - end -classcanvas 128645 class_ref 142085 // 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 127 135 2000 - end -classcanvas 128773 class_ref 142213 // 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 36 216 2000 - end -classcanvas 129157 class_ref 142341 // InputDescriptor - 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 183 446 2000 + xyz 79 -16 2000 end classcanvas 129669 class_ref 133253 // Frame 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 267 221 3005 end -relationcanvas 128901 relation_ref 148229 // - geometry VHV unfixed - from ref 128645 z 1999 to point 179 108 - line 131589 z 1999 to point 120 108 - line 131717 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129029 relation_ref 148357 // - geometry VHV unfixed - from ref 128773 z 1999 to point 80 108 - line 131333 z 1999 to point 120 108 - line 131461 z 1999 to ref 128517 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b -relationcanvas 129285 relation_ref 148485 // - geometry HV - from ref 128005 z 1999 to point 228 367 - line 129541 z 1999 to ref 129157 - role_a_pos 240 421 3000 no_role_b - multiplicity_a_pos 216 421 3000 no_multiplicity_b +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 149 135 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 + xyz 43 225 3010 + end +classcanvas 132357 class_ref 142725 // InputDescriptor + 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 233 434 2000 + end relationcanvas 129797 relation_ref 134533 // - from ref 128517 z 1999 to point 303 129 - line 130053 z 1999 stereotype "<>" xyz 248 128 3000 to ref 129669 - role_a_pos 312 194 3000 no_role_b - multiplicity_a_pos 281 158 3000 multiplicity_b_pos 171 82 3000 -relationcanvas 129925 relation_ref 148613 // - from ref 128773 z 1999 to ref 129669 + from ref 128517 z 1999 stereotype "<>" xyz 282 103 3000 to point 303 129 + line 130053 z 1999 to ref 129669 + role_a_pos 315 196 3000 no_role_b + no_multiplicity_a multiplicity_b_pos 175 84 3000 +relationcanvas 132101 relation_ref 148869 // + geometry VHV unfixed + from ref 131973 z 1999 to point 81 108 + line 134021 z 1999 to point 120 108 + line 134149 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b -relationcanvas 130181 relation_ref 148741 // - from ref 128773 z 1999 to point 179 226 - line 130309 z 1999 to ref 128645 - role_a_pos 149 210 3000 no_role_b +relationcanvas 132229 relation_ref 148997 // + geometry VHV + from ref 131845 z 1999 to point 201 126 + line 134277 z 1999 to point 120 126 + line 134405 z 1999 to ref 128517 + no_role_a no_role_b no_multiplicity_a no_multiplicity_b -line 130437 -_-_ - from ref 128773 z 1999 to point 136 328 - line 130693 z 1999 to ref 128005 -line 130565 -_-_ - from ref 128773 z 1999 to ref 128005 +relationcanvas 132485 relation_ref 149125 // + geometry HV + from ref 128005 z 1999 stereotype "<>" xyz 220 359 3000 to point 278 360 + line 133381 z 1999 to ref 132357 + role_a_pos 290 409 3000 no_role_b + multiplicity_a_pos 266 409 3000 no_multiplicity_b +relationcanvas 133509 relation_ref 149253 // + from ref 131973 z 1999 to point 200 215 + line 133637 z 1999 to ref 131845 + role_a_pos 180 222 3000 no_role_b + multiplicity_a_pos 185 199 3000 no_multiplicity_b +relationcanvas 134533 relation_ref 149381 // + from ref 131973 z 3004 to ref 129669 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +line 134661 -_-_ + from ref 131973 z 2003 to ref 128005 +line 134789 -_-_ + from ref 131973 z 2003 to point 137 322 + line 134917 z 2003 to ref 128005 preferred_whz 414 544 1 end diff --git a/uml/lumiera/132101.diagram b/uml/lumiera/132101.diagram deleted file mode 100644 index 39dd25211..000000000 --- a/uml/lumiera/132101.diagram +++ /dev/null @@ -1,91 +0,0 @@ -format 40 - -classinstancecanvas 128005 classinstance_ref 136069 // - xyz 144 217 2000 - end -classinstancecanvas 128133 classinstance_ref 136197 // node1 - xyz 169 309 2000 - end -classinstancecanvas 128261 classinstance_ref 136325 // node2 - xyz 485 277 2000 - end -classinstancecanvas 128389 classinstance_ref 136453 // next_adapter - xyz 388 216 2005 - end -classinstancecanvas 128901 classinstance_ref 136581 // current_state - xyz 114 20 2000 - end -classinstance 129285 class_ref 142469 // caller - name "" xyz 29 106 2000 -classinstance 129541 class_ref 142597 // Backend_Cache - name "" xyz 412 39 2000 -textcanvas 130565 "node1 using node2 as predecessor" - xyzwh 267 343 2000 133 24 -textcanvas 130693 "try to get frame from Cache first" - xyzwh 468 121 2000 89 43 -note 130821 "Triggered by pulling" - xyzwh 5 176 2005 118 38 -note 130949 "Buffers" - xyzwh 255 20 2005 61 35 -linkcanvas 128517 - from ref 128005 z 1999 to ref 128133 -dirscanvas 128645 z 1000 linkcanvas_ref 128517 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "2 pull()" xyz 217 255 3000 - backward_label "3 retrieveBuffers()" xyz 95 282 3000 -linkcanvas 128773 - from ref 128005 z 1999 to ref 128389 -dirscanvas 130053 z 1000 linkcanvas_ref 128773 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "4 create" xyz 281 192 3000 -linkcanvas 129029 - from ref 128005 z 1999 to ref 128901 -linkcanvas 129157 - from ref 128389 z 1999 to ref 128261 -dirscanvas 130309 z 1000 linkcanvas_ref 129157 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "6 pull()" xyz 515 246 3000 -linkcanvas 129413 - from ref 129285 z 1999 to ref 128005 -dirscanvas 129925 z 1000 linkcanvas_ref 129413 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "1 pull()" xyz 124 140 3000 -linkcanvas 129669 - from ref 128389 z 1999 to ref 129541 -dirscanvas 130181 z 1000 linkcanvas_ref 129669 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "5 try_fetch" xyz 386 132 3000 -linkcanvas 129797 - from ref 128005 z 1999 to ref 129541 -dirscanvas 130437 z 1000 linkcanvas_ref 129797 - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default - forward_label "7 store" xyz 280 108 3000 -msgs - msg operation_ref 135685 // "pull(inout renderProcess : State) : void" - forward ranks 1 "1" dirscanvas_ref 129925 - msgs - msg operation_ref 135557 // "pull(inout renderProcess : State) : void" - forward ranks 2 "1.1" dirscanvas_ref 128645 - msgs - msg operation_ref 135813 // "retrieveBuffers(in requiredSource : vector const) : void" - backward ranks 3 "1.1.1" dirscanvas_ref 128645 - msgs - explicitmsg "create" - forward ranks 4 "1.1.1.1" dirscanvas_ref 130053 - msgs - explicitmsg "try_fetch" - forward ranks 5 "1.1.1.1.1" dirscanvas_ref 130181 - no_msg - msg operation_ref 135557 // "pull(inout renderProcess : State) : void" - forward ranks 6 "1.1.1.1.2" dirscanvas_ref 130309 - no_msg - msgsend - explicitmsg "store" - forward ranks 7 "1.1.1.2" dirscanvas_ref 130437 - no_msg - msgsend - msgsend - msgsend -msgsend -preferred_whz 599 408 1 -end diff --git a/uml/lumiera/132229.diagram b/uml/lumiera/132229.diagram new file mode 100644 index 000000000..af599827d --- /dev/null +++ b/uml/lumiera/132229.diagram @@ -0,0 +1,184 @@ +format 40 + +classinstancecanvas 128261 classinstance_ref 136197 // node1 + xyz 152 504 2000 + end +classinstancecanvas 128389 classinstance_ref 136325 // ad1 + xyz 191 393 2000 + end +classinstancecanvas 128517 classinstance_ref 136453 // current + xyz 188 92 2000 + end +classinstancecanvas 128645 classinstance_ref 136581 // node2 + xyz 388 393 2000 + end +classinstancecanvas 128773 classinstance_ref 136709 // ad2 + xyz 422 301 2000 + end +classinstance 128901 class_ref 143109 // BackendCache + name "" xyz 692 12 2000 +classinstance 129029 class_ref 143237 // Caller + name "" xyz 28 505 2000 +classinstancecanvas 130949 classinstance_ref 136837 // node3 + xyz 625 300 2000 + end +classinstancecanvas 131077 classinstance_ref 136965 // ad3 + xyz 665 199 2000 + end +textcanvas 133381 "node1 using node2 as predecessor; calculates in-place, will push result to Cache" + xyzwh 149 538 2000 408 21 +textcanvas 133509 "node2 using node3 as predecessor. Calculates without caching" + xyzwh 385 427 2005 350 18 +textcanvas 133637 "node3 doesn't calc, but fetch result from Cache" + xyzwh 564 329 2000 231 18 +linkcanvas 129157 + from ref 129029 z 1999 to ref 128261 +dirscanvas 129285 z 1000 linkcanvas_ref 129157 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "1 pull()" xyz 97 480 3000 +linkcanvas 129413 + from ref 128261 z 1999 to ref 128389 +dirscanvas 130309 z 1000 linkcanvas_ref 129413 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "2 retrieve()" xyz 141 437 3000 + backward_label "16 process()" xyz 236 471 3000 +linkcanvas 129541 + from ref 128389 z 1999 to ref 128517 +dirscanvas 131717 z 1000 linkcanvas_ref 129541 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "3 fetch() +11 allocateBuffer() +17 isCalculated()" xyz 128 228 3000 +linkcanvas 129669 + from ref 128389 z 1999 to ref 128645 +dirscanvas 130437 z 1000 linkcanvas_ref 129669 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "4 pull()" xyz 319 369 3000 +linkcanvas 129797 + from ref 128645 z 1999 to ref 128773 +dirscanvas 130693 z 1000 linkcanvas_ref 129797 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "5 retrieve()" xyz 379 349 3000 + backward_label "13 process()" xyz 469 372 3000 +linkcanvas 130181 + from ref 128773 z 1999 to ref 128517 +dirscanvas 133765 z 1000 linkcanvas_ref 130181 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "14 releaseBuffer()" xyz 285 227 3000 +linkcanvas 131205 + from ref 128773 z 1999 to ref 130949 +dirscanvas 131845 z 1000 linkcanvas_ref 131205 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "6 pull()" xyz 553 276 3000 +linkcanvas 131333 + from ref 130949 z 1999 to ref 131077 +dirscanvas 131973 z 1000 linkcanvas_ref 131333 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "7 retrieve()" xyz 615 236 3000 +linkcanvas 131461 + from ref 131077 z 1999 to ref 128517 +dirscanvas 132101 z 1000 linkcanvas_ref 131461 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "8 fetch()" xyz 449 179 3000 +linkcanvas 131589 + from ref 128517 z 1999 to point 295 24 + line 134277 z 1999 to ref 128901 +dirscanvas 132229 z 1000 linkcanvas_ref 134277 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "9 fetch +12 allocateNewFrame +15 releaseFrame +18 isCalculatedFrame +20 releaseFrame" xyz 487 29 3000 +linkcanvas 132357 + from ref 131077 z 1999 to point 515 211 + line 132613 z 1999 to ref 128773 +dirscanvas 132741 z 1000 linkcanvas_ref 132357 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default +linkcanvas 132485 + from ref 128773 z 1999 to point 280 312 + line 132869 z 1999 to ref 128389 +dirscanvas 132997 z 1000 linkcanvas_ref 132485 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "10 allocateBuffer()" xyz 306 293 3000 +linkcanvas 133893 + from ref 129029 z 1999 to point 49 155 + line 134021 z 1999 to ref 128517 +dirscanvas 134149 z 1000 linkcanvas_ref 134021 + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + forward_label "19 releaseBuffer()" xyz 65 100 3000 +msgs + msg operation_ref 135685 // "pull()" + forward ranks 1 "1" dirscanvas_ref 129285 + msgs + msg operation_ref 135557 // "retrieve()" + forward ranks 2 "1.1" dirscanvas_ref 130309 + msgs + msg operation_ref 135813 // "fetch()" + forward ranks 3 "1.1.1" dirscanvas_ref 131717 + no_msg + msg operation_ref 135685 // "pull()" + forward ranks 4 "1.1.2" dirscanvas_ref 130437 + msgs + msg operation_ref 135557 // "retrieve()" + forward ranks 5 "1.1.2.1" dirscanvas_ref 130693 + msgs + msg operation_ref 135685 // "pull()" + forward ranks 6 "1.1.2.1.1" dirscanvas_ref 131845 + msgs + msg operation_ref 135557 // "retrieve()" + forward ranks 7 "1.1.2.1.1.1" dirscanvas_ref 131973 + msgs + msg operation_ref 135813 // "fetch()" + forward ranks 8 "1.1.2.1.1.1.1" dirscanvas_ref 132101 + msgs + explicitmsg "fetch" + forward ranks 9 "1.1.2.1.1.1.1.1" dirscanvas_ref 132229 + no_msg + msgsend + msgsend + msgsend + msgsend + msgsend + msgsend + msgsend + msg operation_ref 135941 // "allocateBuffer()" + forward ranks 10 "2" dirscanvas_ref 132997 + msgs + msg operation_ref 135941 // "allocateBuffer()" + forward ranks 11 "2.1" dirscanvas_ref 131717 + msgs + explicitmsg "allocateNewFrame" + forward ranks 12 "2.1.1" dirscanvas_ref 132229 + no_msg + msgsend + msgsend + msg operation_ref 136069 // "process()" + backward ranks 13 "3" dirscanvas_ref 130693 + no_msg + msg operation_ref 136197 // "releaseBuffer()" + forward ranks 14 "4" dirscanvas_ref 133765 + msgs + explicitmsg "releaseFrame" + forward ranks 15 "4.1" dirscanvas_ref 132229 + no_msg + msgsend + msg operation_ref 136069 // "process()" + backward ranks 16 "5" dirscanvas_ref 130309 + no_msg + msg operation_ref 136325 // "isCalculated()" + forward ranks 17 "6" dirscanvas_ref 131717 + msgs + explicitmsg "isCalculatedFrame" + forward ranks 18 "6.1" dirscanvas_ref 132229 + no_msg + msgsend + msg operation_ref 136197 // "releaseBuffer()" + forward ranks 19 "7" dirscanvas_ref 134149 + msgs + explicitmsg "releaseFrame" + forward ranks 20 "7.1" dirscanvas_ref 132229 + no_msg + msgsend +msgsend +end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 5f7a09a5a..dc8936ef6 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -1,20 +1,20 @@ window_sizes 1140 830 270 860 680 71 diagrams - active collaborationdiagram_ref 132101 // pull call - 599 408 100 4 0 0 - classdiagram_ref 131973 // Engine Details - 414 544 100 4 0 0 - classdiagram_ref 128389 // Render Entities - 829 656 100 4 162 0 + classdiagram_ref 131973 // Render Mechanics + 428 623 100 4 2 0 + active collaborationdiagram_ref 132229 // Render Process + 817 644 100 4 0 0 end show_stereotypes selected package_ref 129 // lumiera open + class_ref 132741 // State - package_ref 128261 // MObject - classview_ref 128133 // Engine Workings - usecaseview_ref 128517 // render process + package_ref 129029 // Controller + class_ref 131717 // ProcNode + class_ref 142597 // StateAdapter + usecaseview_ref 128005 // Renderengine Use class_ref 140677 // QueryHandler class_ref 140805 // TypeHandler class_ref 140933 // ResolverBase diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index 93cb8fa6f..2b3a34ea7 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 40 "lumiera" - revision 45 + revision 46 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 09256ec75..6f55a4ef0 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -917,6 +917,15 @@ TertiaryMid: #99a TertiaryDark: #667 Error: #f88 +
+
The Connection Manager is a __Facade__ for querying information and deriving decisions regarding various aspects of data streams and possible connections.
+* retrieve information about capabilities of a stream type given by ID
+* decide if a connection is possible
+* retrieve a //strategy// for implementing a connection
+
+In the intended implementation, a good deal of this functionality will actually be implemented by [[rules|ConfigRules]], while other parts need to be provided by hard wired logic, at least as a fallback. Anyway, the purpose of the Connection Manager ois to isolate the [[Builder]], which is client of this information and decision services, from these details
+
+
Configuration Queries are requests to the system to "create or retrieve an object with //this and that // capabilities". They are resolved by a rule based system ({{red{planned feature}}}) and the user can extend the used rules for each Session. Syntactically, they are stated in ''prolog'' syntax as a conjunction (=logical and) of ''predicates'', for example {{{stream(mpeg), pipe(myPipe)}}}. Queries are typed to the kind of expected result object: {{{Query<Pipe> ("stream(mpeg)")}}} requests a pipe excepting/delivering mpeg stream data &mdash; and it depends on the current configuration what "mpeg" means. If there is any stream data producing component in the system, which advertises to deliver {{{stream(mpeg)}}}, and a pipe can be configured or connected with this component, then the [[defaults manager|DefaultsManagement]] will create/deliver a [[Pipe|PipeHandling]] object configured accordingly.
 &rarr; [[Configuration Rules system|ConfigRules]]
@@ -1886,12 +1895,12 @@ But because I know the opinions on this topc are varying (users tend to be delig
 My proposed aproach is to treat OpenGL as a separate video raw data type, requiring separete and specialized [[Processing Nodes|ProcNode]] for all calculations. Thus the Builder could connect OpenGL nodes if it is possible to cover the whole render path for preview and fall back to the normal ~ProcNodes for all relevant renders
 
-
+
A low-level abstraction within the [[Builder]] &mdash; it serves to encapsulate the details of making multi-channel connections between the render nodes: In some cases, a node can handle N channels internally, while in other cases we need to replicate the node N times and wire each channel individually.
 
 The operation point is provided by the current BuilderMould and used by the [[processing pattern|ProcPatt]] executing within this mould and conducting the current build step. The operation point's interface allows //to abstract//&nbsp; these details, as well as to //gain additional control//&nbsp; if necessary (e.g. addressing only one of the channels). The most prominent build instruction used within the processing patterns (which is the instruction {{{"attach"}}}) relies on the aforementioned //approach of abstracted handling,// letting the operation point determine automatically how to make the connection.
 
-This is possible because the operation point has been provided (by the mould) with informations about the media stream type to be wired, while at the same time relying on the [[render node interface|ProcNode]] for finding out whats possible and making the desired connections.
+This is possible because the operation point has been provided (by the mould) with informations about the media stream type to be wired, which, together with information accessible at the the [[render node interface|ProcNode]] and from the [[referred processing assets|ProcAsset]], with the help of the [[connection manager|ConManager]] allows to figure out what's possible and how to do the desired connections.
 
@@ -3026,33 +3035,57 @@ 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]]
-
-
While with respect to the dependencies, the builder and the processing function, the render process is sufficiently characterized by referring to the ''pull principle'' and by defining a [[protocol|NodeOperationProtocol]] each node has to adhere to &mdash; for actually make it happen we have to care for some important details, especially //how to manage the buffers.// It may well be that the length of the code path necessary to invoke the individual processing functions is finally not so important, compared with the time spent within the inner pixel loop of these functions. But my guess is (as of 5/08), that the number of data moving and copying operations //will be//&nbsp; of importance.
+
+
While the render process, with respect to the dependencies, the builder and the processing function is sufficiently characterized by referring to the ''pull principle'' and by defining a [[protocol|NodeOperationProtocol]] each node has to adhere to &mdash; for actually get it coded we have to care for some important details, especially //how to manage the buffers.// It may well be that the length of the code path necessary to invoke the individual processing functions is finally not so important, compared with the time spent at the inner pixel loop within these functions. But my guess is (as of 5/08), that the overall number of data moving and copying operations //will be//&nbsp; of importance.
 
 !reguirements
 * operations should be "in place" as much as possible
 * because caching necessitates a copy, the points where this happens should be controllable.
 * buffers should accommodate automatically to provide the necessary space without clipping the image.
 * the type of the media data can change while passing through the network, and so does the type of the buffers.
-On the other hand, the processing function within the individual node needs to be shielded from these complexities. It can expect to get just //N~~I~~// input buffers and //N~O~// output buffers of required type. And, moreover, as the decision how to organize the buffers certainly depends on non-local circumstances, it should be preconfigured while building.
+On the other hand, the processing function within the individual node needs to be shielded from these complexities. It can expect to get just //N~~I~~// input buffers and //N~~O~~// output buffers of required type. And, moreover, as the decision how to organize the buffers certainly depends on non-local circumstances, it should be preconfigured while building.
 
 !data flow
 [>img[uml/fig131973.png]]
-Not everything can be preconfigured though. The pull principle opens the possibility for the node to decide on a per call base what predecessor(s) to pull (if any). This decision may rely on automation parameters, which thus need to be accessible prior to 
-requesting the buffer(s). Additionally, in a later version we plan to have the node network calculate some control values for adjusting the cache and backend timings &mdash; and of course at some point we'll want to utilize the GPU, resulting in the need to feed data from our processing buffers into some texture representation.
+Not everything can be preconfigured though. The pull principle opens the possibility for the node to decide on a per call base what predecessor(s) to pull (if any). This decision may rely on automation parameters, which thus need to be accessible prior to requesting the buffer(s). Additionally, in a later version we plan to have the node network calculate some control values for adjusting the cache and backend timings &mdash; and of course at some point we'll want to utilize the GPU, resulting in the need to feed data from our processing buffers into some texture representation.
 
 !buffer management
-Besides the StateProxy representing the actual render process and holding a couple of buffer (refs), we employ a lightweight adapter object in between. It is used //for a single {{{pull()}}}-call// &mdash; mapping the actual buffers to the input and output port numbers of the processing node and for dealing with the cache calls. While the StateProxy manages a pool of frame buffers, this interspersed adapter allows us to either use a buffer retrieved from the cache as an input, possibly use a new buffer located within the cache as output, or (in case no caching happens) to just use the same buffer as input and output for "in-place"-processing. The idea is that most of the configuration of this adapter object is prepared in the wiring step while building the node network. 
+Besides the StateProxy representing the actual render process and holding a couple of buffer (refs), we employ a lightweight adapter object in between. It is used //for a single {{{pull()}}}-call// &mdash; mapping the actual buffers to the input and output port numbers of the processing node and for dealing with the cache calls. While the StateProxy manages a pool of frame buffers, this interspersed adapter allows us to either use a buffer retrieved from the cache as an input, possibly use a new buffer located within the cache as output, or (in case no caching happens) to just use the same buffer as input and output for "in-place"-processing. The idea is that most of the configuration of this adapter object is prepared in the wiring step while building the node network.
+
+The usage patern of the buffers can be stack-like when processing nodes requiring multiple input buffers. In the standard case, which also is the simplest case, a pair of buffers (or a single buffer for "in-place" capable nodes) suffices to calculate a whole chain of nodes. But &mdash; as the recursive descent means depth-first processing &mdash; in case multiple input buffers are needed, we may encounter a situation where some of these input buffers already contain processed data, while we have to descend into yet another predecessor node chain to pull the data for the remaining buffers. Care has to be taken //to allocate the buffers as late as possible,// otherwise we could end up holding onto a buffer almost for each node in the network. Effectively this translates into the rule to allocate output buffers only after all input buffers are ready and filled with data; thus we shouldn't allocate buffers when //entering// the recursive call to the predecessor(s), rather we have to wait until we are about to return from the downcall chain.
+Besides, these considerations also show we need a means of passing on the current buffer usage pattern while calling down. This usage pattern not only includes a record of what buffers are occupied, but also the intended use of these occupied buffers, especially if they can be modified in-place, and at which point they may be released and reused.
 @@clear(right):display(block):@@
 
-
+
For each segment (of the effective timeline), there is a Processor holding the exit node(s) of a processing network, which is a "Directed Acyclic Graph" of small, preconfigured, stateless [[processing nodes|ProcNode]]. This network is operated according to the ''pull principle'', meaning that the rendering is just initiated by "pulling" output from the exit node, causing a cascade of recursive downcalls. Each node knows its predecessor(s) an can pull the necessary input from there. Consequently, there is no centralized "engine object" which may invoke nodes iteratively or table driven &mdash; rather, the rendering can be seen as a passive service provided for the backend, which may pull from the exit nodes at any time, in any order (?), and possibly multithreaded.
-All State necessary for a given calculation process is encapsulated and accessible by a StateProxy object, which can be seen as the representation of "the process". At the same time, this proxy provides the buffers holding data to be processed and acts as a gateway to the backend to handle the communication with the Cache.
+All State necessary for a given calculation process is encapsulated and accessible by a StateProxy object, which can be seen as the representation of "the process". At the same time, this proxy provides the buffers holding data to be processed and acts as a gateway to the backend to handle the communication with the Cache. In addition to this //top-level State,// each calculation step includes a small [[state adapter object|StateAdapter]] (stack allocated), which is pre-configured by the builder and serves the purpose to isolate the processing function from the detals of buffer management.
 
-{{red{TODO: fill in more details of the Render Process.}}}
-[img[uml/fig132101.png]]
-* see also
+!!Example: calculating a 3 node chain
+[img[uml/fig132229.png]]
+# Caller invokes calculation by pulling from exit node, providing the top-level StateProxy
+# node1 (exit node) builds StateAdapter and calls retrieve() on it to get the desired output result
+# this StateAdapter (ad1) knows he could get the result from Cache, so he tries, but it's a miss
+# thus he pulls from the predecessor node2 according to the [[input descriptor|ProcNodeInputDescriptor]] of node1
+# node2 builds its StateAdapter and calls retrieve()
+# but because StateAdapter (ad2) is configured to directly forward the call down, it pulls from node3
+# node3 builds its StateAdapter and calls retrieve()
+# this StateAdapter (ad3) is configured to look into the Cache...
+# this time producing a Cache hit
+# now StateAdapter ad2 has input data, but needs a output buffer location, which re requests from its //parent state// (ad1)
+# and, because ad1 is configured for Caching, it's clear that this output buffer will be located within the cache
+# thus the allocation request is forwarded to the cache, which provides a new "slot"
+# now node2 has both a valid input and a usable output buffer, thus the process function can be invoked
+# and after the result has been rendered into the output buffer, the input is no longer needed
+# and can be "unlocked" in the Cache
+# now the input data for node1 is available, and as node1 is in-place-capable, no further buffer allocation is necessary prior to calculating
+# the finished result is now in the buffer (which happens to be also the input buffer and is actually located within the Cache)
+# thus it can be marked as ready for the Cache, which may now provide it to other processes (but isn't allowed to overwrite it)
+# finally, when the caller is done with the data, it signalles this to the top-level State object
+# which forwards this information to the cache, which in turn may now do with the released Buffer as he sees fit.
+
+
+__see also__
 &rarr; the [[Entities involved in Rendering|RenderEntities]]
 &rarr; the [[mechanics of rendering and buffer management|RenderMechanics]]
 &rarr; the protocol [[how to operate the nodes|NodeOperationProtocol]]
OperationClassDescription
allocateBufferState
applyBuildable
applyVisitable
buildAssembler
currEDLSessionThe EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands.
dispatchOpVisitable
enableAssetchange the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well
fetchState
findTypeHandler
getAppconfigaccess the configuation value for a given key.
@return empty string for unknown keys, else the corresponding configuration value
get_reprAllocation
getValueParamProvider
howtoProcMedia@return descriptor how to build a render pipeline corresponding to this media
isActiveAssetweather this asset is swithced on and consequently included in the fixture and participates in rendering
isCalculatedState
knownAssetManager@return true if the given id is registered in the internal asset DB
loadSessManagerreplace the current session by a new
session loaded from serialized state.
makeTypeHandler
playRenderEngineTODO: will probably be handled differently (see Cehteh)
pullProcNodetrigger data processing by "pulling" results from the node's output
pullStateAdaptertrigger data processing by "pulling" results from the node's output
processProcNode
pullProcNode
releaseBufferState
removeAssetManagerremove the given asset <i>together with all its dependants</i> from the internal DB
resetSessManagerreset all session config and
start with a pristine default session.
resolvePlacementcreate an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.
resolveQueryHandler
resolveQueryHandlerImpl
retrieveBuffersStateAdapterinvoked from within the pull() - call of a node to set up the data buffers.
@param requiredSource descriptor denoting the predecessors and the frames required from them
retrieveStateAdapter
rootCauseErrorIf this exception was caused by a chain of further exceptions,
return the first one registered in this throw sequence.
This works only, if every exceptions thrown as a consequence
of another exception is propperly constructed by passing
the original exception to the constructor
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
whatError