From 0837cfe977af7b85278ef1fa66e6c3a83ce9610d Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Tue, 13 Nov 2007 01:10:43 +0100 Subject: [PATCH] put just a summary on the ProcLayer-Wiki startpage, and moved much of the current content to the DesignGoals page. Checked the various overview pages to be still up-to-date... --- doc/devel/uml/fig130309.png | Bin 41258 -> 40294 bytes wiki/renderengine.html | 53 ++++++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/doc/devel/uml/fig130309.png b/doc/devel/uml/fig130309.png index e2c7d63134853f977e19a4a8f9dd73e3ec21605e..a75f29b5a71707aa64710a00caa15103012a0651 100644 GIT binary patch literal 40294 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%0AFC=>X;!RVMCqgwr?1l4S=CW(l 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 -
-
As always, the main goal is //to cut down complexity// by the usual approach to separate into small manageable chunks.
+
+
This __proc-Layer__ and ~Render-Engine implementation started out as a design-draft by [[Ichthyo|mailto:Ichthyostega@web.de]] in summer 2007. The key idea of this design-draft is to use the [[Builder Pattern|http://en.wikipedia.org/wiki/Builder_pattern]] for the Render Engine, thus separating completely the //building// of the Render Pipeline from //running,// i.e. doing the actual Render. The Nodes in this Pipeline should process Video/Audio and do nothing else. No more decisions, tests and conditional operations when running the Pipeline. Move all of this out into the configuration of the pipeline, which is done by the Builder.
+
+!Why doesn't the current Cinelerra-2 Design succeed?
+The design of Cinelerra-2 basically follows a similar design, but __fails because of two reasons__
+# too much differentiation is put into the class hierarchy instead of configuring Instances differently.<br>This causes overly heavy use of virtual functions and -- in order to ameliorate this -- falling back to hard wired branching
+# far too much coupling and back-coupling to the internals of the EDL, forcing a overly rigid structure on the latter
+
+!Try to learn from this
+* build up an [[Node Abstraction|ProcNode]] powerful enough to express //all necessary Operations// without the need to recure on the actual object type
+* need to redesign the internals of the EDL in a far more open manner. See MObjects
+* strive at a StrongSeparation between EDL and Render Engine
+
+
+!Design Goals
+As always, the main goal is //to cut down complexity// by the usual approach to separate into small manageable chunks.
 
 To achieve this, here we try to separate ''Configuration'' from ''Processing''. Further, in Configuration we try to separate the ''high level view'' (users view when editing) from the ''low level view'' (the actual configuration effective for the calculations). Finally, we try to factor out and encapsulate ''State'' in order to make State explicit.
 
-The main tool used to implement this separation is the [[Builder Pattern|http://en.wikipedia.org/wiki/Builder_pattern]]. Here especially we move all decisions and parametrization into the BuildProcess. The Nodes in this Pipeline should process Video/Audio and do nothing else. No more decisions, tests and conditional operations when running the Pipeline. Move all of this out into the configuration of the pipeline, which is done by the Builder. Make the actual processing nodes Template classes, parametrized by the color model and number of components. Make all Nodes of equal footing with each other, able to be connected freely within the limitations of the necessary input and output. Make the OpenGL rendering into alternate implementation of some operations together with an alternate signal flow (usable only if the whole Pipeline can be built up to support this changed signal flow), thus factoring out all the complexities of managing the data flow between core and hardware accelerated rendering out of the implementation of the actual processing. Introduce separate control data connections for the automation data, separating the case of true multi-channel-effects from the case where one node just gets remote controlled by another node (or two nodes using the same automation data).
+The main tool used to implement this separation is the [[Builder Pattern|http://en.wikipedia.org/wiki/Builder_pattern]]. Here especially we move all decisions and parametrization into the BuildProcess. The Nodes in the render pipeline should process Video/Audio and do nothing else. No more decisions, tests and conditional operations when running the Pipeline. Move all of this out into the configuration of the pipeline, which is done by the Builder. Make the actual processing nodes Template classes, parametrized by the color model and number of components. Make all Nodes of equal footing with each other, able to be connected freely within the limitations of the necessary input and output. Make the OpenGL rendering into alternate implementation of some operations together with an alternate signal flow (usable only if the whole Pipeline can be built up to support this changed signal flow), thus factoring out all the complexities of managing the data flow between core and hardware accelerated rendering out of the implementation of the actual processing. Introduce separate control data connections for the automation data, separating the case of true multi-channel-effects from the case where one node just gets remote controlled by another node (or two nodes using the same automation data).
 
 Another pertinent theme is to make the basic building blocks simpler, while on the other hand gaining much more flexibility for combining these building blocks. For example we try to unfold any "internal-multi" effects into separate instances (e.g. the possibility of having an arbitrary number of single masks at any point of the pipeline instead of having one special masking facility encompassing multiple sub-masks. Similarly, we treat the Objects in the EDL in a more uniform manner and gain the possibility to [[place|Placement]] them in various ways.
 
@@ -1520,18 +1534,18 @@ 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 Cinelerra-3 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.
+
+
The Cinelerra-3 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]].
 [img[Block Diagram|uml/fig128005.png]]
 
-
+
Render Engine, [[Builder]] and [[Controller]] are closely related Subsystems. Actually, the [[Builder]] //creates// a newly configured Render Engine //for every// RenderProcess. Before doing so, it queries from the Session (or, to be more precise, from the [[Fixture]] within the current Session) all necessary Media Object Placement information. The [[Builder]] then derives from this information the actual assembly of [[Processing Nodes|ProcNode]] comprising the Render Engine. Thus:
  * the source of the build process is a sequence of absolute (explicit) [[Placements|Placement]] called the [[Playlist]]
  * the [[build process|BuildProcess]] is driven, configured and controlled by the [[Controller]] subsystem component. It encompasses the actual playback configuration and State of the System.
  * the resulting Render Engine is a list of [[Processors]], each configured to calculate a segment of the timeline with uniform properties. Each of these Processors in turn is a graph of interconnected ProcNode.s.
 
-see also: RenderEntities
+see also: RenderEntities, [[two Examples (Object diagrams)|Examples]] 
 
 [img[Overview: Components of the Renderengine|uml/fig128261.png]]
 
@@ -2419,21 +2433,18 @@ The link between ~MObject and Asset should be {{{const}}}, so the clip can't cha At first sight the link between asset and clip-MO is a simple logical relation between entities, but it is not strictly 1:1 because typical media are [[multichannel|MultichannelMedia]]. Even if the media is compound, there is //only one asset::Clip//, because in the logical view we have only one "clip-thing". On the other hand, in the Session/EDL, we have a compound clip ~MObject comprised of several elementary clip objects, each of which will refer to its own sub-media (channel) within the compound media (and don't forget, this structure can be tree-like) {{red{open question:}}} do the clip-MO's of the individual channels refer directly to asset::Media? does this mean the relation is different from the top level, where we have a relation to a asset::Clip??
-
-
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 [[this aspect|MObjects]] as well.
+
+
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 //first, draft, prototypical// implementation in C++
+<<<
 
-The key idea of Ichthyo's Design-draft is to use the [[Builder Pattern|http://en.wikipedia.org/wiki/Builder_pattern]] for the Render Engine, thus separating completely the //building// of the Render Pipeline from //running,// i.e. doing the actual Render. The Nodes in this Pipeline should process Video/Audio and do nothing else. No more decisions, tests and conditional operations when running the Pipeline. Move all of this out into the configuration of the pipeline, which is done by the Builder.
-([[more on the Design Goals|DesignGoals]])
+!Summary
+We have several kinds of "things" organized as [[assets|Asset]] in the AssetManager, like media, clips, effects, codecs, configuration templates. Within the context of the [[EDL]], we can use these as [["Media Objects"|MObjects]] &mdash; especially, we can [[place|Placement]] them in various kinds within the EDL and relative to one another. Basically, this is the [[editing work|EditingOperations]] done by the user.
 
-!Why doesn't the current Design succeed with this?
-The design of Cinelerra 2 basically follows this design, but __fails because of two reasons__
-# too much differentiation is put into the class hierarchy instead of configuring Instances differently.<br>This causes overly heavy use of virtual functions and -- in order to ameliorate this -- falling back to hard wired branching
-# far too much back-coupling to the internals of the [[EDL]], forcing a overly rigid structure on the latter
+Now, from any given configuration within the EDL, we create sort or a frozen- and tied-down snapshot, here called [["Fixture"|Fixture]], containing all currently active ~MObjects, broken down to elementary parts and made explicit if necessary. This Fixture acts as a isolation layer towards the Render Engine. We will hand it over to the  [[Builder]], which in turn will transform it into a network of connected [[render nodes|ProcNode]]. This network //is// the [[Render Engine|OverviewRenderEngine]].
 
-!Try to learn from this
-* build up an [[Node Abstraction|ProcNode]] powerful enough to express //all necessary Operations// without the need to recure on the actual object type
-* need to redesign the internals of the EDL in a far more open manner. See MObjects
-* strive at a StrongSeparation between EDL and Render Engine
+The system is ''open'' inasmuch every part mirrors the structure of corresponding parts in adjacent subsystems, and the transformation of any given structure from one subsystem (e.g. Asset) to another (e.g. Render Engine) is done with minimal "magic". So the whole system should be able to handle completely new structures mostly by adding new configurations and components, without much need of rewriting basic workings.
 
 !!see also
 &rarr; [[Overview]] of Subsystems and Components, and DesignGoals
@@ -2879,7 +2890,7 @@ function addKeyDownHandlers(e)
 
 
-
+
The Intention of this text is to help you understanding the design and to show some notable details.
 
 !!!!Starting Point
@@ -2910,7 +2921,7 @@ An important goal of this approach is to be able to push down the treatment of v
 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.
 
 !!!!Stateless Subsystems
-The &raquo;current setup&laquo; of the objects in the EDL is sort of a global state. Same holds true for the Controller, as the Engine can be at playback, it can run a background render or scrub single frames. But the whole complicated subsystem of the Builder and one given Render Engine configuration can be made ''stateless''. As a benefit of this we can run this subsystems multi-threaded without the need of any precautions (locking, synchronizing). Because all state information is just passed in as function parameters and lives in local variables on the stack, or is contained in the StateProxy which represents the given render //process// and is passed down as function parameter as well. (note: I use this term in the usual, slightly relaxed manner; of course there are some configuration values contained in instance variables of the objects carrying out the calculations, but this values are considered to be constant over the course of the object usage).
+The &raquo;current setup&laquo; of the objects in the EDL is sort of a global state. Same holds true for the Controller, as the Engine can be at playback, it can run a background render or scrub single frames. But the whole complicated subsystem of the Builder and one given Render Engine configuration can be made ''stateless''. As a benefit of this we can run this subsystems multi-threaded without the need of any precautions (locking, synchronizing). Because all state information is just passed in as function parameters and lives in local variables on the stack, or is contained in the StateProxy which represents the given render //process// and is passed down as function parameter as well. (note: I use the term "stateless" in the usual, slightly relaxed manner; of course there are some configuration values contained in instance variables of the objects carrying out the calculations, but this values are considered to be constant over the course of the object usage).