From ce72947d0cb5fd378d6c20406623941b7962424c Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 13 Apr 2008 03:39:18 +0200 Subject: [PATCH] brought proc layer introductory pages up-to-date --- doc/devel/uml/fig128005.png | Bin 42604 -> 34040 bytes uml/lumiera/128005 | 15 +++++++++--- uml/lumiera/128005.diagram | 45 +++++++++++++++++++++++------------- uml/lumiera/128261 | 15 +++++++++++- uml/lumiera/129285 | 2 +- uml/lumiera/130053.diagram | 16 ++++++------- uml/lumiera/5.session | 25 ++++---------------- uml/lumiera/lumiera.prj | 2 +- wiki/draw/Proc.builder1.png | Bin 12065 -> 12692 bytes wiki/renderengine.html | 40 ++++++++++++++++++-------------- 10 files changed, 92 insertions(+), 68 deletions(-) diff --git a/doc/devel/uml/fig128005.png b/doc/devel/uml/fig128005.png index 7290793c8a6a17876c0d310300a50540f5f28411..e9bef762483a2bf308f117a2af21c3a3df5c28f0 100644 GIT binary patch literal 34040 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 diff --git a/uml/lumiera/128005 b/uml/lumiera/128005 index b6932706b..dc0adfe5f 100644 --- a/uml/lumiera/128005 +++ b/uml/lumiera/128005 @@ -1,6 +1,6 @@ format 40 "design" // design - revision 10 + revision 11 modified_by 5 "hiv" // class settings //class diagram settings @@ -54,7 +54,7 @@ Not a real code package, rather a container for design drafts, specifications, d end required_classes class_ref 128261 // Fixture - class_ref 128005 // Session + class_ref 128005 // SessionImpl end end @@ -65,7 +65,7 @@ Not a real code package, rather a container for design drafts, specifications, d class_ref 128261 // Fixture class_ref 128517 // MObject class_ref 134661 // ParamProvider - class_ref 128005 // Session + class_ref 128005 // SessionImpl end component 128389 "EDL" stereotype "entity" @@ -92,6 +92,9 @@ Not a real code package, rather a container for design drafts, specifications, d end component 128773 "Dispatcher" + provided_classes + class_ref 141957 // ProcDispatcher + end end component 128901 "Engine" @@ -140,6 +143,12 @@ Not a real code package, rather a container for design drafts, specifications, d component 130309 "AssetDB" stereotype "service" end + + component 131077 "client code" + required_classes + class_ref 141957 // ProcDispatcher + end + end end componentview 128133 "interfaces" diff --git a/uml/lumiera/128005.diagram b/uml/lumiera/128005.diagram index a16e8f676..26b59ec1a 100644 --- a/uml/lumiera/128005.diagram +++ b/uml/lumiera/128005.diagram @@ -1,7 +1,7 @@ format 40 fragment 128005 "UI Layer" - xyzwh 321 22 2000 829 100 + xyzwh 322 22 1994 828 100 end fragment 128133 "Processing Layer" xyzwh 64 156 2000 1089 655 @@ -21,59 +21,72 @@ packagecanvas 128645 xyzwh 94 551 2005 458 235 componentcanvas 128773 component_ref 128005 // Builder draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 121 419 2015 229 105 + xyzwh 122 419 2015 228 105 componentcanvas 128901 component_ref 128133 // Session draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 122 243 2011 323 156 + xyzwh 122 243 2011 322 155 componentcanvas 129029 component_ref 128261 // Controller draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 372 419 2011 189 105 + xyzwh 373 419 2011 188 105 componentcanvas 129157 component_ref 128389 // EDL draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 288 302 2016 153 79 + xyzwh 288 303 2016 152 78 componentcanvas 129285 component_ref 128517 // Fixture draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 124 319 2016 153 75 + xyzwh 125 319 2016 152 75 note 129541 "Structures edited by the User" xyzwh 43 269 2016 181 41 componentcanvas 129669 component_ref 128645 // AssetManagement draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 577 232 2010 217 201 + xyzwh 578 233 2010 216 200 componentcanvas 129797 component_ref 128773 // Dispatcher draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 406 31 2005 193 75 + xyzwh 357 133 2005 192 75 componentcanvas 129925 component_ref 128901 // Engine draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 118 602 2010 235 176 + xyzwh 118 601 2010 235 175 componentcanvas 130053 component_ref 129029 // Frame (Stream) Provider draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 121 876 2005 229 75 + xyzwh 122 875 2005 228 75 componentcanvas 130181 component_ref 129157 // Cache draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 391 876 2005 193 75 -note 131717 "Coordinates Playback and Rendering" + xyzwh 392 875 2005 192 75 +note 131717 "Coordinates Building and Rendering" xyzwh 483 494 2016 149 63 note 131845 "border of the low-level, performance-critical part of the system" xyzwh 666 450 2006 167 84 note 131973 "just works, never decides" xyzwh 317 668 2015 110 59 -note 132101 "codecs, stream I/O here" - xyzwh 376 592 2005 166 39 +note 132101 "codecs, effects, stream I/O here" + xyzwh 618 876 2005 200 36 componentcanvas 132229 component_ref 130181 // MediaFactory draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 593 354 2015 158 67 + xyzwh 593 355 2015 157 66 componentcanvas 132357 component_ref 130309 // AssetDB draw_component_as_icon default show_component_req_prov default show_component_rea default xyzwh 629 289 2020 155 63 +componentcanvas 132485 component_ref 131077 // client code + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 600 27 2005 156 63 +arrowjunctioncanvas 132997 class_ref 141957 // ProcDispatcher + xyz 473 83 2000 label_xy 441 100 +arrowjunctioncanvas 133253 class_ref 141957 // ProcDispatcher + xyz 475 71 2000 label_xy 863 37 simplerelationcanvas 131205 simplerelation_ref 128005 from ref 130053 z 2004 to ref 130181 simplerelationcanvas 131333 simplerelation_ref 128133 from ref 129925 z 2004 to ref 130053 +line 133125 ---O + from ref 129797 z 1999 to ref 132997 +line 133381 ---( geometry VHr + from ref 132485 z 1999 to point 480 56 + line 133509 z 1999 to ref 133253 line 130309 -_-_ from ref 129797 z 2004 to ref 128901 line 130821 -_-_ geometry HVr - from ref 129797 z 2004 to point 493 469 + from ref 129797 z 2004 to point 450 469 line 130949 z 2004 to ref 129029 line 131077 -_-_ from ref 129797 z 2004 to ref 129669 +preferred_whz 852 640 0.8 end diff --git a/uml/lumiera/128261 b/uml/lumiera/128261 index 6394cfca5..f016cf9c4 100644 --- a/uml/lumiera/128261 +++ b/uml/lumiera/128261 @@ -1,6 +1,6 @@ format 40 "MObject" // ProcessingLayer::MObject - revision 30 + revision 31 modified_by 5 "hiv" // class settings //class diagram settings @@ -1172,6 +1172,19 @@ ${inlines} b multiplicity "" parent class_ref 139909 // LocatingPin end end + + class 141957 "ProcDispatcher" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + end end package_ref 128901 // Builder diff --git a/uml/lumiera/129285 b/uml/lumiera/129285 index 1a005d8e9..28f619bb6 100644 --- a/uml/lumiera/129285 +++ b/uml/lumiera/129285 @@ -1,6 +1,6 @@ format 40 "ProcessingLayer" // ProcessingLayer - revision 13 + revision 14 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/lumiera/130053.diagram b/uml/lumiera/130053.diagram index da938cd73..b8ef0a19a 100644 --- a/uml/lumiera/130053.diagram +++ b/uml/lumiera/130053.diagram @@ -24,7 +24,7 @@ packagecanvas 129413 show_context_mode namespace xyzwh 41 428 1990 385 315 componentcanvas 129541 component_ref 128261 // Controller draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 88 546 2010 151 63 + xyzwh 87 546 2010 151 63 arrowjunctioncanvas 131973 class_ref 130565 // BuilderFacade xyz 316 456 2000 label_xy 230 507 arrowjunctioncanvas 132229 class_ref 130565 // BuilderFacade @@ -38,10 +38,10 @@ componentcanvas 132869 component_ref 129925 // CommonLib arrowjunctioncanvas 132997 class_ref 134917 // Time xyz 830 211 2000 label_xy 828 233 arrowjunctioncanvas 133253 class_ref 130309 // ControllerFacade - xyz 480 158 2000 label_xy 448 179 + xyz 481 157 2000 label_xy 449 178 componentcanvas 133509 component_ref 128133 // Session draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 694 526 2005 156 63 + xyzwh 694 526 2005 155 63 arrowjunctioncanvas 134533 class_ref 128133 // EDL xyz 591 603 2000 label_xy 590 624 arrowjunctioncanvas 134789 class_ref 128261 // Fixture @@ -53,30 +53,30 @@ arrowjunctioncanvas 135301 class_ref 134661 // ParamProvider componentcanvas 135685 component_ref 128005 // Builder draw_component_as_icon default show_component_req_prov default show_component_rea default xyzwh 136 954 2005 151 63 -arrowjunctioncanvas 135813 class_ref 128005 // Session +arrowjunctioncanvas 135813 class_ref 128005 // SessionImpl xyz 571 765 2000 label_xy 562 787 arrowjunctioncanvas 136197 class_ref 132741 // StateProxy xyz 535 978 2000 label_xy 517 999 -arrowjunctioncanvas 136453 class_ref 128005 // Session +arrowjunctioncanvas 136453 class_ref 128005 // SessionImpl xyz 526 801 2000 label_xy 517 823 packagecanvas 136709 package_ref 130309 // engine show_context_mode namespace xyzwh 16 1309 1994 561 265 componentcanvas 136837 component_ref 128901 // Engine draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 103 1402 2005 156 63 + xyzwh 103 1401 2005 156 63 arrowjunctioncanvas 136965 class_ref 132741 // StateProxy xyz 535 1224 2000 label_xy 517 1245 componentcanvas 137349 component_ref 130053 // ProcNode draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 377 1494 2000 123 63 + xyzwh 376 1494 2000 123 63 arrowjunctioncanvas 137477 class_ref 134533 // Parameter xyz 623 1379 2000 label_xy 607 1400 arrowjunctioncanvas 137733 class_ref 134661 // ParamProvider xyz 684 1368 2000 label_xy 658 1389 componentcanvas 138373 component_ref 129797 // ConManager draw_component_as_icon default show_component_req_prov default show_component_rea default - xyzwh 136 1070 2005 156 63 + xyzwh 135 1070 2005 156 63 arrowjunctioncanvas 138501 class_ref 134661 // ParamProvider xyz 586 1094 2000 label_xy 560 1115 componentcanvas 138757 component_ref 129285 // RenderPathManager diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 89c760008..fc9677d8c 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -1,31 +1,14 @@ window_sizes 1140 830 270 860 680 71 diagrams - classdiagram_ref 130309 // Asset Kinds - 860 633 100 4 158 0 - classdiagram_ref 128133 // Session structure - 860 633 100 4 349 0 - classdiagram_ref 128389 // Render Entities - 743 538 100 4 184 0 - classdiagram_ref 131205 // Struct-Asset Relations - 555 620 100 4 60 0 - classdiagram_ref 131461 // Rules access - 688 627 100 4 0 0 - componentdiagram_ref 131589 // components - 688 544 100 4 0 0 - active usecasediagram_ref 131717 // when to query - 624 495 100 4 0 0 - collaborationdiagram_ref 131845 // "default" object - 626 551 100 4 0 0 + active componentdiagram_ref 128005 // Overview + 702 640 80 4 2 0 end show_stereotypes selected package_ref 129 // lumiera open - - package_ref 128005 // design - - package_ref 129285 // ProcessingLayer - componentview_ref 128261 // Query System overview + componentview_ref 128133 // interfaces + classview_ref 128005 // Session 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 8eec4bb57..dcdd63301 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 40 "lumiera" - revision 43 + revision 44 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/draw/Proc.builder1.png b/wiki/draw/Proc.builder1.png index 84dfa904eaa598db4d89548342ab18d5b8a4b7a5..145f98e3fce821b6adde2b46bdc23386fe4f6227 100644 GIT binary patch literal 12692 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 La-xO8x}W|(AK-je literal 12065 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 E4`nwziU0rr diff --git a/wiki/renderengine.html b/wiki/renderengine.html index c60cbb53b..7e922bde6 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -564,8 +564,8 @@ For every Asset we generate a __Ident tuple__ and a long ID (hash) derived from
The Asset Manager provides an Interface to some internal Database holding all Assets in the current Session and System state. It may be a real Database at some point (and for the moment it's a Hashtable). Each [[Asset]] is registered automatically with the Asset Manager; it can be queried either by it's //identification tuple// or by it's unique ID.
-
-
Placing an MObject relatively to another object such that it should be handled as //attached // to the latter results in several implementation problems. The typical use case is that of an effect attached to a clip or processing pipe.
+
+
Placing an MObject relatively to another object such that it should be handled as //attached&nbsp;// to the latter results in several implementation problems. The typical use case is that of an effect attached to a clip or processing pipe.
 * this attachment is not a globally fixed relation, rather, it typically exists only for some limited time span (e.g. the duration of the basic clip the effect is attached to)
 * the order of attachment is important and the attached placement may create a fork in the signal flow, so we need a way for specifying reproducibly how the resulting wiring should be
 * when building, we access the information in reversed direction: we have the target object and need to query for all attachements
@@ -578,7 +578,7 @@ The first step towards an solution is to isolate the problem; obviously we //nee
 [img[how to implement Automation|uml/fig129669.png]]
 
-
+
Starting out from the concepts of Objects, Placement to Tracks, render Pipes and connection properties (&rarr; see [[here|TrackPipeEDL]]) within the EDL, we can identify the elementary operations occuring within the Builder. Overall, the Builder is organized as application of //visiting tools// to a collection of objects, so finally we have to consider some object kind appearing in the working function of the given builder tool, which holds at this moment some //context//. The job now is to organize this context such as to create a predictable build process from this //event driven// approach.
 
 !Builder working Situations
@@ -589,7 +589,7 @@ The first step towards an solution is to isolate the problem; obviously we //nee
 ##* effectively this is an application of effects
 ## at this point we have to process (and maybe generate on-the-fly) the [[source port of this clip|ClipSourcePort]]
 ##* the output of the source reading and preprocessing defined thus far is delivered as input to this port, which is done by a ~WiringRequest (see below)
-##* as every port, it is the entry point to a [[processing pipe|Pipe], thus the source port has a processing pattern, typically inserting the camera (transformation effect) at this point
+##* as every port, it is the entry point to a [[processing pipe|Pipe]], thus the source port has a processing pattern, typically inserting the camera (transformation effect) at this point
 ## followed by the application of effects
 ##* separately for every effect chain rooted (placed) directly onto the clip
 ##* and regarding the chaining order
@@ -1734,8 +1734,13 @@ 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
 
-
+
The Lumiera Processing Layer is comprised of various subsystems and can be separated into a low-level and a high-level part. At the low-level end is the [[Render Engine|OverviewRenderEngine]] which basically is a network of render nodes cooperating closely with the Backend Layer in order to carry out the actual playback and media transforming calculations. Whereas on the high-level side we find several different [[Media Objects|MObjects]] that can be placed into the [[EDL]], edited and manipulated. This is complemented by the [[Asset Management|Asset]], which is the "bookkeeping view" of all the different "things" within each [[Session|SessionOverview]].
+
+There is rather strong separation between these two levels, and &mdash; <br/>correspondingly you'll encounter the data held within the Processing Layer organized in two different views, the ''high-level-model'' and the ''low-level-model''
+* from users (and GUI) perspective, you'll see a [[Session|SessionOverview]] with a timeline-like structure, where various [[Media Objects|MObjects]] are arranged and [[placed|Placement]]. By looking closer, you'll find that there are data connections and all processing is organized around processing chains or [[pipes|Pipe]], which can be either global (in the Session) or local (in real or [[virtual|VirtualClip]] clips)
+* when dealing with the actual calculations in the Engine (&rarr; see OverviewRenderEngine), you won't find any Tracks, Media Objects or Pipes &mdash; rather you'll find a network of interconnected [[render nodes|ProcNode]] forming the low level model. Each structurally constant segment of the timeline corresponds to a separate node network providing an ExitNode corresponding to each of the global pipes; pulling frames from them means running the engine.
+* it is the job of the [[Builder]] create and wire up this render nodes network when provided with a given hig-level-model. So, actually the builder (together with the so called [[Fixture]]) form an isolation layer in the middle, separating the //editing part&nbsp;// from the //processing part.//
 [img[Block Diagram|uml/fig128005.png]]
 
@@ -2508,7 +2513,7 @@ Besides, they provide an important __inward interface__ for the [[ProcNode]]s, w
-
+
The Render Engine is the part of the application doing the actual video calculations. Its operations are guided by the Objects and Parameters edited by the user in [[the EDL|EDL]] and it retrieves the raw audio and video data from the [[Data backend|backend.html]]. Because the inner workings of the Render Engine are closely related to the structures used in the EDL, this design covers [[the aspect of objects placed into the EDL|MObjects]] as well.
 <<<
 ''Status'': started out as design draft in summer '07, Ichthyo is now in the middle of a implementing the foundations and main structures in C++
@@ -2526,8 +2531,9 @@ The system is ''open'' inasmuch every part mirrors the structure of correspondin
 
 !!see also
 &rarr; [[Overview]] of Subsystems and Components, and DesignGoals
-&rarr; [[An Introduction|WalkThrough]] discussing the key features
-&rarr; [[Overview Render Engine|OverviewRenderEngine]]
+&rarr; [[An Introduction|WalkThrough]] discussing the central points of this design
+&rarr; [[Overview Session (high level model)|SessionOverview]]
+&rarr; [[Overview Render Engine (low level model)|OverviewRenderEngine]]
 &rarr; BuildProcess and RenderProcess
 &rarr; [[Two Examples|Examples]] (Object diagrams) 
 &rarr; how [[Automation]] works
@@ -2835,7 +2841,7 @@ The Session object is a singleton &mdash; actually it is a »~PImpl«-Facade
 * a collection of ''global Pipes''
 * the ''Fixture'' with a possibility to [[(re)build it|PlanningBuildFixture]]
-
+
The [[Session]] (sometimes also called //Project//) contains all informations and objects to be edited by the User. It can be saved and loaded. The individual Objects within the Session, i.e. Clips, Media, Effects, are contained in one (or several) collections within the Session, which we call [[EDL (Edit Decision List)|EDL]]. Moreover, the sesion contains references to all the Media files used, and it contains various default or user defined configuration, all being represented as [[Asset]]. At any given time, there is //only one current session// opened within the application.
 
 !!!larger projects
@@ -2845,14 +2851,14 @@ For larger editing projects the simple structure of a session containing "t
 With all the structural complexities possible within such a session, we need an isolation layer to provide __one__ definitive state where all configuration has been made explicit. Thus the session manages one special object list, the [[Fixture]], which can be seen as all currently active objects placed onto a single timeline.
 
 !!!organisational devices
-The possibility of having multiple ~EDLs helps organizing larger projects. Each [[EDL]] is just a logical grouping; because all effective properties of any MObject within this EDL are defined by the ~MObject itself and the [[Placement]], by which the object is anchored to some time point, some track, can be connected to some pipe, or linked to another object. In a similar manner, Tracks are just another organisational aid for grouping objects, disabling them and defining common output pipes.
+The possibility of having multiple ~EDLs helps organizing larger projects. Each [[EDL]] is just a logical grouping; because all effective properties of any MObject within this EDL are defined by the ~MObject itself and the [[Placement]], by which the object is anchored to some time point, some track, can be connected to some pipe, or linked to another object. In a similar manner, [[Tracks|Track]] are just another organisational aid for grouping objects, disabling them and defining common output pipes.
 
 !!!global pipes
-Any session should contain a number of global [[(destination) pipes|Pipe]], typically video out and audio out. The goal is, to get any content producing or transforming object in some way connected to one of these outputs, either //by [[placing|Placement]] it directly// to some pipe, or by //placing it to a track// and having the track refer to some pipe. Besides the global destination pipes, we can use internal pipes to form busses or subgroups, either on a global (session) level, or by using the processing pipe within a [[virtual clip|VirtualClip]], which can be placed freely within the ~EDLs. Normally, pipes just gather and mix data, but of course any pipe can have an attached effect chain. (&rarr; see [[more on Tracks and Pipes within the EDL|TrackPipeEDL]])
+[>img[draw/Proc.builder1.png]] Any session should contain a number of global [[(destination) pipes|Pipe]], typically video out and audio out. The goal is, to get any content producing or transforming object in some way connected to one of these outputs, either //by [[placing|Placement]] it directly// to some pipe, or by //placing it to a track// and having the track refer to some pipe. Besides the global destination pipes, we can use internal pipes to form busses or subgroups, either on a global (session) level, or by using the processing pipe within a [[virtual clip|VirtualClip]], which can be placed freely within the EDL(s). Normally, pipes just gather and mix data, but of course any pipe can have an attached effect chain. (&rarr; see [[more on Tracks and Pipes within the EDL|TrackPipeEDL]])
 
 !!!default configuration
-[>img[draw/Proc.builder1.png]]While all these possibilities may seem daunting, there is a simple default configuration loaded into any pristine new session:
-It will contain a global video and audio out pipe, just one EDL with one track; this track will have a internal video and audio pipe (bus) configured with one fading device sending to the global output ports. So, by adding some clip with a simple absolute placement to this track and some time position, the clip gets connected and rendered, after [[(re)building|PlanningBuildFixture]] the [[Fixture]] and passing the result to the [[Builder]] &mdash; and using the resulting render nodes network (Render Engine).
+While all these possibilities may seem daunting, there is a simple default configuration loaded into any pristine new session:
+It will contain a global video and audio out pipe, just one EDL with a single track; this track will have a internal video and audio pipe (bus) configured with one fading device sending to the global output ports. So, by adding some clip with a simple absolute placement to this track and some time position, the clip gets connected and rendered, after [[(re)building|PlanningBuildFixture]] the [[Fixture]] and passing the result to the [[Builder]] &mdash; and using the resulting render nodes network (Render Engine).
 
@@ -4265,7 +4271,7 @@ generally speaking, visitors are preferable when the underlying element type hie To see an simple example of our "visiting tool", have a look at {{{tests/components/common/visitingtooltest.cpp}}}
-
+
The Intention of this text is to help you understanding the design and to show some notable details.
 
 !!!!Starting Point
@@ -4282,15 +4288,15 @@ Design is an experiment to find out how things are related. We can't //plan// a
 !!!!Concepts and Interfaces
 This design strives to build each level and subsystem around some central concepts, which are directly expressed as Interfaces. Commonly used Interfaces clamp the different layers.
 * MObject gives an uniform view on all the various entities to be arranged in the EDL.
-* all the arranging and relating of ~MObjects is abstracted as [[Placement]]. The contract of a Placement is that it always has a related Subject, that we can call some test methods on it (still to be defined), and, finally, that we can get an ExplicitPlacement from it.
-* albeit being a special form of a Placement, the ExplicitPlacement is treated as a separate concept. With respect to edit operations within the EDL, it can stand for any sort of Placement. On the other hand the Builder takes a list of ~ExplicitPlacements as input for building up the Render Engine(s). This corresponds to the fact that the render process needs to organize the things to be done on a simple two dimensional grid of (output channel / time). The (extended) contract of an ~ExplicitPlacement provides us with this information (track,time).
+* all the arranging and relating of ~MObjects is abstracted as [[Placement]]. The contract of a Placement is that it always has a related Subject, that we can change the //way of placement&nbsp;// by adding and removing [["locating pins"|LocatingPin]], call some test methods on it (still to be defined), and, finally, that we can get an ExplicitPlacement from it.
+* albeit being a special form of a Placement, the ExplicitPlacement is treated as a separate concept. With respect to edit operations within the EDL, it can stand for any sort of Placement. On the other hand the Builder takes a list of ~ExplicitPlacements as input for building up the Render Engine(s). This corresponds to the fact that the render process needs to organize the things to be done on a simple two dimensional grid of (output channel / time). The (extended) contract of an ~ExplicitPlacement provides us with this (output,time).
 * on the lower end of the builder, everything is organized around the Concept of a ProcNode, which enables us to //pull// one (freely addressable) Frame of calculated data. Further, the ProcNode has the ability to be wired with other nodes and [[Parameter Providers|ParamProvider]]
 * the various types of data to be processed are abstracted away under the notion of a [[Frame]]. Basically, a Frame is an Buffer containing an Array of raw data and it can be located by some generic scheme, including (at least) the absolute starting time (and probably some type or channel id).
 * All sorts of (target domain) [[Parameters]] are treated uniformly. There is a distinction between Parameters (which //could// be variable) and Configuration (which is considered to be fixed). In this context, Automation just appears as a special kind of ParamProvider.
 * and finally, the calculation //process// together with its current state is represented by a StateProxy. I call this a "proxy", because it should encapsulate and hide all tedious details of communication, be it even asynchronous communication with some Controller or Dispatcher running in another Thread. In order to maintain a view on the current state of the render process, it could eventually be necessary to register as an observer somewhere or to send notifications to other parts of the system.
 
 !!!!Handling Diversity
-An important goal of this approach is to be able to push down the treatment of variations and special cases. We don't need to know what kind of Placement links one MObject to another, because it is sufficient for us to get an ExplicitPlacement. The Render Engine doesn't need to know if it is pulling audio Frames or video Frames or GOPs or OpenGL textures. It simply relies on the Builder wiring together the correct node types. And the Builder in turn does so by using some overloaded function of an iterator or visitor. There is no need for the video [[ProcNodes|ProcNode]] to test for the colormodel on every screen line, because the Data Frame can be a Template parametrized by the colormodel. All of this reduces complexity and quite some misconceptions can be detected already by the compiler.
+An important goal of this approach is to be able to push down the treatment of variations and special cases. We don't need to know what kind of Placement links one MObject to another, because it is sufficient for us to get an ExplicitPlacement. The Render Engine doesn't need to know if it is pulling audio Frames or video Frames or GOPs or OpenGL textures. It simply relies on the Builder wiring together the correct node types. And the Builder in turn does so by using some overloaded function of an iterator or visitor. At many instances, instead of doing decisions in-code or using hard wired defaults, a system of [[configuration rules|ConfigRules]] is invoked to get a suitable default as a solution (and, as a plus, this provides points of customisation for advanced users). At engine level, there is no need for the video processing node to test for the colormodel on every screen line, because the Builder has already wired up the fitting implementation routine. All of this helps reducing complexity and quite some misconceptions can be detected already by the compiler.
 
 !!!!Explicit structural differences
 In case it's not already clear: we don't have "the" Render Engine, rather we construct a Render Engine for each structurally differing part of the timeline. (please relate this to the current Cinelerra code base, which constructs and builds up the render pipeline for each frame separately). No need to call back from within the pipeline to find out if a given plugin is enabled or to see if there are any automation keyframes. We don't need to pose any constraints on the structuring of the objects in the EDL, besides the requirement to get an ExplicitPlacement for each. We could even loosen the use of the common metaphor of placing media sequences on fixed tracks, if we want to get at a more advanced GUI at some point in the future.