fix spelling 'Explicit' (as poited out by Plouj)
|
|
@ -19,7 +19,7 @@
|
|||
<p>Declaration :</p><ul><li>C++ : class Fixture : public <a href="class128133.html#refclass128133"><b>EDL</b></a> </li></ul><div class="sub">
|
||||
<a name="refrelation129541"></a>
|
||||
<table><tr><td><div class="element">Relation <b>tracks (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # tracks : <a href="class128389.html#refclass128389"><b>Track</b></a>, multiplicity : 1..*</li><li>C++ : protected: <a href="class128389.html#refclass128389"><b>Track</b></a> tracks</li></ul><a name="refrelation131717"></a>
|
||||
<table><tr><td><div class="element">Relation <b>timeline (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # timeline : <a href="class129797.html#refclass129797"><b>ExplicitePlacement</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class129797.html#refclass129797"><b>ExplicitePlacement</b></a> timeline</li></ul><a name="refoperation128645"></a>
|
||||
<table><tr><td><div class="element">Relation <b>timeline (<directional aggregation by value>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # timeline : <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a>, multiplicity : *</li><li>C++ : protected: <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a> timeline</li></ul><a name="refoperation128645"></a>
|
||||
<table><tr><td><div class="element">Operation <b>getPlaylistForRender</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + getPlaylistForRender() : </li><li>C++ : public: getPlaylistForRender()</li></ul><a name="refoperation129157"></a>
|
||||
<table><tr><td><div class="element">Operation <b>getAutomation</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + getAutomation() : </li><li>C++ : public: getAutomation()</li></ul></div>
|
||||
<p>All public operations : <a href="class128261.html#refoperation129157"><b>getAutomation</b></a> , <a href="class128261.html#refoperation128645"><b>getPlaylistForRender</b></a> </p>
|
||||
|
|
|
|||
|
|
@ -16,11 +16,11 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass128645"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Placement </li><li>Java : public interface Placement </li></ul><p>Directly inherited by : <a href="class129541.html#refclass129541"><b>Allocation</b></a> <a href="class129285.html#refclass129285"><b>DirectPlacement</b></a> <a href="class129797.html#refclass129797"><b>ExplicitePlacement</b></a> <a href="class129413.html#refclass129413"><b>RelativePlacement</b></a> </p>
|
||||
<p>Declaration :</p><ul><li>C++ : class Placement </li><li>Java : public interface Placement </li></ul><p>Directly inherited by : <a href="class129541.html#refclass129541"><b>Allocation</b></a> <a href="class129285.html#refclass129285"><b>DirectPlacement</b></a> <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a> <a href="class129413.html#refclass129413"><b>RelativePlacement</b></a> </p>
|
||||
<div class="sub">
|
||||
<a name="refrelation129157"></a>
|
||||
<table><tr><td><div class="element">Relation <b>subject (<association>)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : # subject : <a href="class128517.html#refclass128517"><b>MObject</b></a>, multiplicity : 1</li><li>C++ : protected: <a href="class128517.html#refclass128517"><b>MObject</b></a> * subject</li></ul><a name="refoperation128005"></a>
|
||||
<table><tr><td><div class="element">Operation <b>resolve</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + resolve() : <a href="class129797.html#refclass129797"><b>ExplicitePlacement</b></a></li><li>C++ : public: <a href="class129797.html#refclass129797"><b>ExplicitePlacement</b></a> resolve()</li></ul><p>create an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.<br /></p></div>
|
||||
<table><tr><td><div class="element">Operation <b>resolve</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + resolve() : <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a></li><li>C++ : public: <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a> resolve()</li></ul><p>create an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.<br /></p></div>
|
||||
<p>All public operations : <a href="class128645.html#refoperation128005"><b>resolve</b></a> </p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass129285"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class DirectPlacement : public <a href="class128645.html#refclass128645"><b>Placement</b></a>, public <a href="class129797.html#refclass129797"><b>ExplicitePlacement</b></a> </li></ul><div class="sub">
|
||||
<p>Declaration :</p><ul><li>C++ : class DirectPlacement : public <a href="class128645.html#refclass128645"><b>Placement</b></a>, public <a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a> </li></ul><div class="sub">
|
||||
</div>
|
||||
<p>All public operations : <a href="class128645.html#refoperation128005"><b>resolve</b></a> </p>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -4,19 +4,19 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class ExplicitePlacement</title>
|
||||
<title>Class ExplicitPlacement</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class ExplicitePlacement</div>
|
||||
<div class = "title">Class ExplicitPlacement</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass129797"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class ExplicitePlacement : public <a href="class128645.html#refclass128645"><b>Placement</b></a> </li><li>Java : public interface ExplicitePlacement </li></ul><p>Directly inherited by : <a href="class129285.html#refclass129285"><b>DirectPlacement</b></a> </p>
|
||||
<p>Declaration :</p><ul><li>C++ : class ExplicitPlacement : public <a href="class128645.html#refclass128645"><b>Placement</b></a> </li><li>Java : public interface ExplicitPlacement </li></ul><p>Directly inherited by : <a href="class129285.html#refclass129285"><b>DirectPlacement</b></a> </p>
|
||||
<div class="sub">
|
||||
<a name="refattribute128261"></a>
|
||||
<table><tr><td><div class="element">Attribut <b>time</b></div></td></tr></table>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass134149"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class Tool </li><li>Java : public interface Tool </li></ul><p>Directly inherited by : <a href="class134405.html#refclass134405"><b>NodeCratorTool</b></a> <a href="class134277.html#refclass134277"><b>SegmentationTool</b></a> </p>
|
||||
<p>Declaration :</p><ul><li>C++ : class Tool </li><li>Java : public interface Tool </li></ul><p>Directly inherited by : <a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a> <a href="class134277.html#refclass134277"><b>SegmentationTool</b></a> </p>
|
||||
<div class="sub">
|
||||
<a name="refoperation129797"></a>
|
||||
<table><tr><td><div class="element">Operation <b>treat</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + treat(inout mElement : <a href="class134021.html#refclass134021"><b>Buildable</b></a>) : </li><li>C++ : public: treat()</li></ul></div>
|
||||
|
|
|
|||
|
|
@ -4,19 +4,19 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Class NodeCratorTool</title>
|
||||
<title>Class NodeCreatorTool</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<div class = "title">Class NodeCratorTool</div>
|
||||
<div class = "title">Class NodeCreatorTool</div>
|
||||
<p></p>
|
||||
|
||||
<!-- ============================================================= -->
|
||||
|
||||
<a name="refclass134405"></a>
|
||||
<p>Declaration :</p><ul><li>C++ : class NodeCratorTool : public <a href="class134149.html#refclass134149"><b>Tool</b></a> </li></ul><div class="sub">
|
||||
<p>Declaration :</p><ul><li>C++ : class NodeCreatorTool : public <a href="class134149.html#refclass134149"><b>Tool</b></a> </li></ul><div class="sub">
|
||||
<a name="refoperation130309"></a>
|
||||
<table><tr><td><div class="element">Operation <b>treat</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + treat(inout something : <a href="class134021.html#refclass134021"><b>Buildable</b></a>) : </li><li>C++ : public: treat()</li></ul><a name="refoperation130437"></a>
|
||||
<table><tr><td><div class="element">Operation <b>treat</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + treat(inout clip : <a href="class128901.html#refclass128901"><b>Clip</b></a>) : </li><li>C++ : public: treat()</li></ul><a name="refoperation130565"></a>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class128133.html#refclass128133" target = "projectFrame"><b>EDL</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129029.html#refclass129029" target = "projectFrame"><b>Effect</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131589.html#refclass131589" target = "projectFrame"><b>ExitNode</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitePlacement</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitPlacement</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128261.html#refclass128261" target = "projectFrame"><b>Fixture</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class133253.html#refclass133253" target = "projectFrame"><b>Frame</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131205.html#refclass131205" target = "projectFrame"><b>FrameProvider</b></a></td><td>boundary</td><td>Note: just a Placeholder for my design. Cehteh will ceratinly know much better how to organize this</td></tr>
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class132357.html#refclass132357" target = "projectFrame"><b>Mask</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>interface</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCratorTool</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class132613.html#refclass132613" target = "projectFrame"><b>OpenGLPipe</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134533.html#refclass134533" target = "projectFrame"><b>Parameter</b></a></td><td></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a></td><td>interface</td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
<a href="class128133.html#refclass128133" target = "projectFrame"><b>EDL</b></a><br />
|
||||
<a href="class129029.html#refclass129029" target = "projectFrame"><b>Effect</b></a><br />
|
||||
<a href="class131589.html#refclass131589" target = "projectFrame"><b>ExitNode</b></a><br />
|
||||
<a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitePlacement</b></a><br />
|
||||
<a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitPlacement</b></a><br />
|
||||
<a href="class128261.html#refclass128261" target = "projectFrame"><b>Fixture</b></a><br />
|
||||
<a href="class133253.html#refclass133253" target = "projectFrame"><b>Frame</b></a><br />
|
||||
<a href="class131205.html#refclass131205" target = "projectFrame"><b>FrameProvider</b></a><br />
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
<a href="class132357.html#refclass132357" target = "projectFrame"><b>Mask</b></a><br />
|
||||
<a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a><br />
|
||||
<a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a><br />
|
||||
<a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCratorTool</b></a><br />
|
||||
<a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a><br />
|
||||
<a href="class132613.html#refclass132613" target = "projectFrame"><b>OpenGLPipe</b></a><br />
|
||||
<a href="class134533.html#refclass134533" target = "projectFrame"><b>Parameter</b></a><br />
|
||||
<a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a><br />
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
|
@ -119,7 +119,7 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Class <b><a href="class129413.html#refclass129413"><b>RelativePlacement</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class129541.html#refclass129541"><b>Allocation</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class129669.html#refclass129669"><b>Label</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class129797.html#refclass129797"><b>ExplicitePlacement</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class129797.html#refclass129797"><b>ExplicitPlacement</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class129925.html#refclass129925"><b>Auto</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130053.html#refclass130053"><b>Wish</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class130181.html#refclass130181"><b>Constraint</b></a></b></div></td></tr></table>
|
||||
|
|
@ -216,7 +216,7 @@ Documentation</title>
|
|||
<table><tr><td><div class="element">Class <b><a href="class134021.html#refclass134021"><b>Buildable</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class134149.html#refclass134149"><b>Tool</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class134405.html#refclass134405"><b>NodeCratorTool</b></a></b></div></td></tr></table>
|
||||
<table><tr><td><div class="element">Class <b><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></b></div></td></tr></table>
|
||||
</div>
|
||||
</div>
|
||||
<a name="refpackage129029"></a>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128133" target = "projectFrame"><b>Engine Workings</b></a></td><td>class view</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="index.html#refexpansion region128133" target = "projectFrame"><b>establish partitioning</b></a></td><td>expansion region</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131589.html#refclass131589" target = "projectFrame"><b>ExitNode</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitePlacement</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class129797.html#refclass129797" target = "projectFrame"><b>ExplicitPlacement</b></a></td><td>class</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
<table>
|
||||
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCratorTool</b></a></td><td>class</td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a></td><td>class</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
<tr bgcolor=#f0f0f0><td><a href="class131333.html#refoperation129413"><b>play</b></a></td><td><a href="class131333.html#refclass131333"><b>RenderEngine</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class131205.html#refoperation129285"><b>prepareStream</b></a></td><td><a href="class131205.html#refclass131205"><b>FrameProvider</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class128645.html#refoperation128005"><b>resolve</b></a></td><td><a href="class128645.html#refclass128645"><b>Placement</b></a></td><td>create an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.</td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130565"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCratorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130693"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCratorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130437"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCratorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130309"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCratorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130565"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130693"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130437"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refoperation130309"><b>treat</b></a></td><td><a href="class134405.html#refclass134405"><b>NodeCreatorTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation129925"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130053"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refoperation130181"><b>treat</b></a></td><td><a href="class134277.html#refclass134277"><b>SegmentationTool</b></a></td><td></td></tr>
|
||||
|
|
|
|||
|
|
@ -60,13 +60,13 @@ classcanvas 134405 class_ref 129669 // Label
|
|||
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 439 483 2000
|
||||
end
|
||||
classcanvas 135429 class_ref 129797 // ExplicitePlacement
|
||||
classcanvas 135429 class_ref 129797 // ExplicitPlacement
|
||||
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 657 233 2004
|
||||
xyz 660 233 2004
|
||||
end
|
||||
classcanvas 135813 class_ref 129797 // ExplicitePlacement
|
||||
classcanvas 135813 class_ref 129797 // ExplicitPlacement
|
||||
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 463 807 2000
|
||||
xyz 466 807 2000
|
||||
end
|
||||
classcanvas 136581 class_ref 129925 // Auto
|
||||
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
|
||||
|
|
@ -170,9 +170,9 @@ relationcanvas 135685 relation_ref 130949 // <generalisation>
|
|||
no_role_a no_role_b
|
||||
no_multiplicity_a no_multiplicity_b
|
||||
relationcanvas 135941 relation_ref 131077 // <directional aggregation by value>
|
||||
from ref 128261 z 1999 stereotype "<<list>>" xyz 371 890 3000 to ref 135813
|
||||
role_a_pos 416 844 3000 no_role_b
|
||||
multiplicity_a_pos 448 877 3000 no_multiplicity_b
|
||||
from ref 128261 z 1999 stereotype "<<list>>" xyz 372 889 3000 to ref 135813
|
||||
role_a_pos 419 843 3000 no_role_b
|
||||
multiplicity_a_pos 451 876 3000 no_multiplicity_b
|
||||
relationcanvas 136069 relation_ref 131205 // <unidirectional association>
|
||||
from ref 135813 z 1999 to point 433 897
|
||||
line 136197 z 1999 to ref 129925
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
format 38
|
||||
"MObject" // ProcessingLayer::MObject
|
||||
revision 10
|
||||
revision 12
|
||||
modified_by 5 "hiv"
|
||||
// class settings
|
||||
//class diagram settings
|
||||
|
|
@ -156,7 +156,7 @@ ${inlines}
|
|||
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
|
||||
"
|
||||
classrelation_ref 131717 // timeline (<directional aggregation by value>)
|
||||
b multiplicity "" parent class_ref 129797 // ExplicitePlacement
|
||||
b multiplicity "" parent class_ref 129797 // ExplicitPlacement
|
||||
end
|
||||
|
||||
operation 128645 "getPlaylistForRender"
|
||||
|
|
@ -250,7 +250,7 @@ ${members}};
|
|||
end
|
||||
|
||||
operation 128005 "resolve"
|
||||
public return_type class_ref 129797 // ExplicitePlacement
|
||||
public return_type class_ref 129797 // ExplicitPlacement
|
||||
nparams 0
|
||||
cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
|
||||
"
|
||||
|
|
@ -390,7 +390,7 @@ ${inlines}
|
|||
a public
|
||||
cpp default "${type}"
|
||||
classrelation_ref 131461 // <realization>
|
||||
b multiplicity "" parent class_ref 129797 // ExplicitePlacement
|
||||
b multiplicity "" parent class_ref 129797 // ExplicitPlacement
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -521,7 +521,7 @@ ${inlines}
|
|||
end
|
||||
end
|
||||
|
||||
class 129797 "ExplicitePlacement"
|
||||
class 129797 "ExplicitPlacement"
|
||||
abstract visibility public stereotype "interface"
|
||||
cpp_decl "${comment}${template}class ${name}${inherit} {
|
||||
${members}};
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@ format 38
|
|||
classinstance 128005 class_ref 128261 // Fixture
|
||||
xyz 65 271 2000 name ""
|
||||
end
|
||||
classinstance 128133 class_ref 129797 // ExplicitePlacement
|
||||
xyz 217 249 2000 name ""
|
||||
classinstance 128133 class_ref 129797 // ExplicitPlacement
|
||||
xyz 221 249 2000 name ""
|
||||
values
|
||||
attribute_ref 128261 // time
|
||||
"2"
|
||||
attribute_ref 128389 // track
|
||||
"video1"
|
||||
end
|
||||
classinstance 128389 class_ref 129797 // ExplicitePlacement
|
||||
xyz 332 249 2000 name ""
|
||||
classinstance 128389 class_ref 129797 // ExplicitPlacement
|
||||
xyz 335 249 2000 name ""
|
||||
values
|
||||
attribute_ref 128261 // time
|
||||
"2"
|
||||
|
|
@ -60,7 +60,7 @@ objectlinkcanvas 129157 norel
|
|||
no_role_a no_role_b
|
||||
objectlinkcanvas 130565 norel
|
||||
geometry HVr
|
||||
from ref 128133 z 1999 to point 268 167
|
||||
from ref 128133 z 1999 to point 269 167
|
||||
line 81 z 1999 to ref 129029
|
||||
no_role_a no_role_b
|
||||
objectlinkcanvas 130693 norel
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ end
|
|||
classinstance 128133 class_ref 128389 // Track
|
||||
xyz 71 275 2000 name "audio1"
|
||||
end
|
||||
classinstance 128389 class_ref 129797 // ExplicitePlacement
|
||||
xyz 218 423 2000 name ""
|
||||
classinstance 128389 class_ref 129797 // ExplicitPlacement
|
||||
xyz 222 423 2000 name ""
|
||||
values
|
||||
attribute_ref 128261 // time
|
||||
"2"
|
||||
|
|
@ -87,8 +87,8 @@ classinstance 132997 class_ref 129029 // Effect
|
|||
attribute_ref 128901 // plugID
|
||||
"\"Hue\""
|
||||
end
|
||||
classinstance 133125 class_ref 129797 // ExplicitePlacement
|
||||
xyz 342 423 2000 name ""
|
||||
classinstance 133125 class_ref 129797 // ExplicitPlacement
|
||||
xyz 345 423 2000 name ""
|
||||
values
|
||||
attribute_ref 128261 // time
|
||||
"5"
|
||||
|
|
@ -101,7 +101,7 @@ textcanvas 136197 "Video Clip anchored at a Label, with an attached HUE effect s
|
|||
xyzwh 524 565 2000 175 87
|
||||
objectlinkcanvas 129413 norel
|
||||
geometry HVr
|
||||
from ref 128389 z 1999 to point 269 341
|
||||
from ref 128389 z 1999 to point 270 341
|
||||
line 129541 z 1999 to ref 128645
|
||||
no_role_a no_role_b
|
||||
objectlinkcanvas 129797 norel
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ open
|
|||
|
||||
package_ref 128645 // codegen
|
||||
|
||||
package_ref 129157 // BackendLayer
|
||||
|
||||
package_ref 128261 // MObject
|
||||
|
||||
package_ref 128773 // GUI
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
format 38
|
||||
"cinelerra3"
|
||||
revision 10
|
||||
revision 11
|
||||
modified_by 5 "hiv"
|
||||
cpp_root_dir "../../src/"
|
||||
|
||||
|
|
|
|||
|
|
@ -756,7 +756,7 @@ config.macros.timeline.handler = function(place,macroName,params,wikifier,paramS
|
|||
<pre>All decisions on //how // the RenderProcess has to be carried out are concentrated in this rather complicated Builder Subsystem. The benefit of this approach is, besides decoupling of subsystems, to keep the actuall performance-intensive video processing code as simple and transparent as possible. The price, in terms of increased complexity &mdash; to pay in the Builder &mdash; can be handled by making the Build Process generic to a large degree. Using a Design By Contract approach we can decompose the various decisions into small decision modules without having to trace the actual workings of the Build Process as a whole.
|
||||
|
||||
[>img[Outline of the Build Process|uml/fig129413.png]]
|
||||
The building itself will be broken down into several small tool application steps. Each of this steps has to be mapped on the MObjects found in the [[Timeline]]. Remember: the idea is that this so called "[[Fixture]]" contains only [[ExplicitePlacement]]s which in turn link to MObjects like Clips, Effects and Automation. So it is sufficient to traverse this list and map the build tools on the elements. Each of this build tools has its own state, which serves to build up the resulting Render Engine. So far I see two steps to be necessary:
|
||||
The building itself will be broken down into several small tool application steps. Each of this steps has to be mapped on the MObjects found in the [[Timeline]]. Remember: the idea is that this so called "[[Fixture]]" contains only [[ExplicitPlacement]]s which in turn link to MObjects like Clips, Effects and Automation. So it is sufficient to traverse this list and map the build tools on the elements. Each of this build tools has its own state, which serves to build up the resulting Render Engine. So far I see two steps to be necessary:
|
||||
* find the "Segments", i.e. the locations where the overall configuration changes
|
||||
* for each segment: generate a ProcNode for each found MObject and wire them accordingly
|
||||
Note, //we have still to work out how exactly building, rendering and playback work// together with the backend-design. But the build process as such doesnt't overly depend on this decisions, it is easy to reconfigure this process. For example, it would be possible as well to build for each frame separately (as Cinelerra2 does), or to build one segment covering the whole timeline (and handle everything via [[Automation]]
|
||||
|
|
@ -788,7 +788,7 @@ This programming technique is often refered to as //double dispatch// or //visit
|
|||
|
||||
[img[Entities cooperating in the Builder|uml/fig129285.png]]</pre>
|
||||
</div>
|
||||
<div title="ColorPalette" modifier="Ichthyostega" modified="200706190041" created="200706190033" changecount="9">
|
||||
<div title="ColorPalette" modifier="Ichthyostega" modified="200706260455" created="200706190033" changecount="11">
|
||||
<pre>Background: #fefefd
|
||||
Foreground: #000
|
||||
PrimaryPale: #8fb
|
||||
|
|
@ -816,7 +816,7 @@ Error: #f88</pre>
|
|||
<div title="DesignGoals" modifier="Ichthyostega" modified="200706220452" created="200706210557" tags="design" changecount="5">
|
||||
<pre>As allways, the main goal is //to cut down complexity// by the usual aproach to separate into small manageable chunks.
|
||||
|
||||
To achieve this, here we try to separate ''Configuration'' from ''Processing''. Further, on Configuration we try to separathe the ''high level view'' (users view when editing) from the ''low level view'' (the actual configuration effective for the calculations). And finally, we try to factor out and encapsulate ''State'' in order to make State explicite.
|
||||
To achieve this, here we try to separate ''Configuration'' from ''Processing''. Further, on Configuration we try to separathe the ''high level view'' (users view when editing) from the ''low level view'' (the actual configuration effective for the calculations). And 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).
|
||||
|
||||
|
|
@ -832,7 +832,7 @@ In this usage, the EDL is almost synonymous to the ''Session'', just the latter
|
|||
</pre>
|
||||
</div>
|
||||
<div title="Example1" modifier="Ichthyostega" modified="200706220253" created="200706220239" tags="example" changecount="3">
|
||||
<pre>The &raquo;Timeline&laquo; is a sequence of ~MObjects -- here clips -- together with an ExplicitePlacement, locating each clip at a given time and track. (Note: I simplified the time format and wrote frame numbers to make it more clear)
|
||||
<pre>The &raquo;Timeline&laquo; is a sequence of ~MObjects -- here clips -- together with an ExplicitPlacement, locating each clip at a given time and track. (Note: I simplified the time format and wrote frame numbers to make it more clear)
|
||||
[img[Example1: Objects in the EDL/Fixture|uml/fig128773.png]]
|
||||
|
||||
----
|
||||
|
|
@ -841,9 +841,9 @@ After beeing processed by the Builder, we get the following Render Engine config
|
|||
</pre>
|
||||
</div>
|
||||
<div title="Example2" modifier="Ichthyostega" created="200706220251" tags="example" changecount="1">
|
||||
<pre>This Example showes the //high level// EDL as well. This needs to be transformed into a Fixture by some facility still to be designed. Basically, each [[Placement]] needs to be queried for this to get the corresponding ExplicitePlacement. The difficult part is to handle possible Placement constraints, e.g. one clip can't be placed at a timespan covered by another clip on the same track. In the current Cinelerra2, all of this is done directly by the GUI actions.
|
||||
<pre>This Example showes the //high level// EDL as well. This needs to be transformed into a Fixture by some facility still to be designed. Basically, each [[Placement]] needs to be queried for this to get the corresponding ExplicitPlacement. The difficult part is to handle possible Placement constraints, e.g. one clip can't be placed at a timespan covered by another clip on the same track. In the current Cinelerra2, all of this is done directly by the GUI actions.
|
||||
|
||||
The &raquo;Timeline&laquo; is a sequence of ~MObjects -- note: using the same Object instances -- but now with the calculated ExplicitePlacement, locating the clip at a given time and track. The effect is located absolutely in time as well, but because it is the same Instance, it has the pointer to the ~RelativePlacement, wich basically attaches the effect to the clip. This structure may look complicated, but is easy to process if we go "backward" and just rely on the information contained in the ExplicitePlacement.
|
||||
The &raquo;Timeline&laquo; is a sequence of ~MObjects -- note: using the same Object instances -- but now with the calculated ExplicitPlacement, locating the clip at a given time and track. The effect is located absolutely in time as well, but because it is the same Instance, it has the pointer to the ~RelativePlacement, wich basically attaches the effect to the clip. This structure may look complicated, but is easy to process if we go "backward" and just rely on the information contained in the ExplicitPlacement.
|
||||
[img[Example2: Clip with Effect and generated Fixture for this EDL|uml/fig128901.png]]
|
||||
|
||||
----
|
||||
|
|
@ -855,7 +855,7 @@ It has to be segmented at least at every point with changes in the configuration
|
|||
<div title="Examples" modifier="Ichthyostega" modified="200706220253" created="200706220233" tags="example" changecount="2">
|
||||
<pre>= MObject assembly =
|
||||
To make the intended use of the classes more clear, consider the following two example Object graphs:
|
||||
* a video clip and a audio clip placed (explicitely) on two tracks &rarr;[[Example1]]
|
||||
* a video clip and a audio clip placed (explicitly) on two tracks &rarr;[[Example1]]
|
||||
* a video clip placed relatively, with an attached HUE effect &rarr;[[Example2]]
|
||||
</pre>
|
||||
</div>
|
||||
|
|
@ -863,15 +863,15 @@ To make the intended use of the classes more clear, consider the following two e
|
|||
<pre>a special ProcNode which is used to pull the finished output of one Render Pipeline (Tree or Graph). This term is already used in the Cinelerra2 codebase. I am unsure at the moment if it is a distinct subclass or rahter a specially configured ProcNode (a general design rule tells us to err in favour of the latter if in doubt).
|
||||
</pre>
|
||||
</div>
|
||||
<div title="ExplicitePlacement" modifier="Ichthyostega" created="200706220304" tags="def" changecount="1">
|
||||
<pre>A special kind (subclass) of [[Placement]]. As such it is allways linked to a //Subject//, i.e. a MObject. In addition to the properties of a (unspecific) Placement, the ExplicitePlacement specifies a absoloute time and track position for locating the Subject
|
||||
<div title="ExplicitPlacement" modifier="Ichthyostega" created="200706220304" tags="def" changecount="1">
|
||||
<pre>A special kind (subclass) of [[Placement]]. As such it is allways linked to a //Subject//, i.e. a MObject. In addition to the properties of a (unspecific) Placement, the ExplicitPlacement specifies a absoloute time and track position for locating the Subject
|
||||
</pre>
|
||||
</div>
|
||||
<div title="Fixture" modifier="Ichthyostega" modified="200706220325" created="200706220324" tags="def" changecount="2">
|
||||
<pre>a specially configured EDL
|
||||
* all MObjects have their position, length and configuration set up ready for rendering.
|
||||
* all MObjects are associated with a ExplicitePlacement
|
||||
* this ~ExplicitePlacements are contained in a ordered List called the Timeline
|
||||
* all MObjects are associated with a ExplicitPlacement
|
||||
* this ~ExplicitPlacements are contained in a ordered List called the Timeline
|
||||
|
||||
//My intention is to create this Fixture out of the editing operations done by the user//
|
||||
</pre>
|
||||
|
|
@ -1343,7 +1343,7 @@ see also: RenderEntities
|
|||
[img[Overview: Components of the Renderengine|uml/fig128261.png]]
|
||||
</pre>
|
||||
</div>
|
||||
<div title="PageTemplate" modifier="CehTeh" modified="200706110330" created="200701131624" tags="MPTWTheme" server.type="file" server.host="file:///home/ct/.homepage/home.html" server.page.revision="200706110330">
|
||||
<div title="PageTemplate" modifier="Ichthyostega" modified="200706260500" created="200701131624" tags="MPTWTheme excludeMissing" server.type="file" server.host="file:///home/ct/.homepage/home.html" server.page.revision="200706110330" changecount="1">
|
||||
<pre><!--{{{-->
|
||||
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
|
||||
<div class='headerShadow'>
|
||||
|
|
@ -1891,7 +1891,7 @@ DAMAGE.
|
|||
***/</pre>
|
||||
</div>
|
||||
<div title="Placement" modifier="Ichthyostega" modified="200706220307" created="200706220306" tags="def" changecount="2">
|
||||
<pre>A Placement represents a //relation:// it is always linked to a //Subject// (this beeing a [[Media Object|MObject]]) and has the meaning to //place// this Subject in some manner, either relatively to other Media Objects, or by some Constraint or simply absolute at (time,track). The latter case is especially important and represented by a special [[Sub-Interface|ExplicitePlacement]]
|
||||
<pre>A Placement represents a //relation:// it is always linked to a //Subject// (this beeing a [[Media Object|MObject]]) and has the meaning to //place// this Subject in some manner, either relatively to other Media Objects, or by some Constraint or simply absolute at (time,track). The latter case is especially important and represented by a special [[Sub-Interface|ExplicitPlacement]]
|
||||
</pre>
|
||||
</div>
|
||||
<div title="Playlist" modifier="Ichthyostega" modified="200706250727" created="200706220456" tags="def" changecount="3">
|
||||
|
|
@ -2183,9 +2183,6 @@ The design of Cinelerra 2 basically follows this design, but __fails because of
|
|||
<div title="SideBarOptions" modifier="CehTeh" created="200706200048" changecount="1">
|
||||
<pre><<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">></pre>
|
||||
</div>
|
||||
<div title="SidebarOptions" modifier="just me" created="200706220430" changecount="1">
|
||||
<pre>{{red{killme}}}</pre>
|
||||
</div>
|
||||
<div title="SiteSubtitle" modifier="Ichthyostega" created="200706190044" changecount="1">
|
||||
<pre>some aspects of Cinelerra-3 design</pre>
|
||||
</div>
|
||||
|
|
@ -2273,7 +2270,7 @@ Instead, we should try to just connect the various subsystems via Interfaces and
|
|||
* to shield the rendering code of all complexities of Thread communication and synchronization, we use the StateProxy
|
||||
</pre>
|
||||
</div>
|
||||
<div title="StyleSheet" modifier="Ichthyostega" modified="200706210541" created="200701131624" tags="MPTWTheme" server.type="file" server.host="file:///home/ct/.homepage/home.html" server.page.revision="200706090017" changecount="5">
|
||||
<div title="StyleSheet" modifier="Ichthyostega" modified="200706260459" created="200701131624" tags="MPTWTheme excludeMissing" server.type="file" server.host="file:///home/ct/.homepage/home.html" server.page.revision="200706090017" changecount="6">
|
||||
<pre>/*{{{*/
|
||||
/* a contrasting background so I can see where one tiddler ends and the other begins */
|
||||
body {
|
||||
|
|
@ -3483,7 +3480,7 @@ function addKeyDownHandlers(e)
|
|||
<pre>http://tiddlywiki.com/</pre>
|
||||
</div>
|
||||
<div title="Timeline" modifier="Ichthyostega" created="200706250721" tags="def" changecount="1">
|
||||
<pre>Timeline is the name of a specific facility located in the [[Fixture]] (EDL): It is a ordered list of ExplicitePlacement.s of MObjects. By traversing the Playlist you get at all elements actually to be rendered; the [[Builder]] uses this Timeline-list to construct actual Render Engine configurations to carry out the calculations.
|
||||
<pre>Timeline is the name of a specific facility located in the [[Fixture]] (EDL): It is a ordered list of ExplicitPlacement.s of MObjects. By traversing the Playlist you get at all elements actually to be rendered; the [[Builder]] uses this Timeline-list to construct actual Render Engine configurations to carry out the calculations.
|
||||
|
||||
</pre>
|
||||
</div>
|
||||
|
|
@ -3493,7 +3490,7 @@ function addKeyDownHandlers(e)
|
|||
!!!!Starting Point
|
||||
Design is an experiment to find out how things are related, we can't //plan// a Design top down, rather we have to start at some point with some hypothesis and look how it works out. The point of origin for Ichthyo's design is the observation that the Render Engine needs some Separation of Concerns to get the complexity down. And especially, this design ''uses three different Levels'' or Layers within the Render Engine and EDL.
|
||||
* the __high level__ within the EDL uses uniformely treated MObjects which are assembled/glued together by a network of [[Placements|Placement]].<br> It is supposed that the GUI will present this and //only this view //to the user, giving him the ability wo work with this objects
|
||||
* the __builder level__ works on a stripped-down subset of this ~MObject network: it uses the //same Object instances// but only assembled by [[Explicite Placements|ExplicitePlacement]] which locate the objects //on a simple (track, time) grid.// Its the job of the builder to create out of this simplified Network the Configuration of [[Render Nodes|ProcNode]] needed to do the actual rendering
|
||||
* the __builder level__ works on a stripped-down subset of this ~MObject network: it uses the //same Object instances// but only assembled by [[Explicit Placements|ExplicitPlacement]] which locate the objects //on a simple (track, time) grid.// Its the job of the builder to create out of this simplified Network the Configuration of [[Render Nodes|ProcNode]] needed to do the actual rendering
|
||||
* the __engine level__ uses solely [[Render Pipeline Nodes|ProcNode]], i.e. a Graph of interconnected processing nodes. The important constraint here is that //any decisions are ruled out//. The core Render Engine with all its nodes is lacking the ability to do any tests and checks and has no possibility to branch or reconfigure anything. (this is an especially important lession I draw from studying the current Cinelerra source code)
|
||||
|
||||
!!!!Performance Considerations
|
||||
|
|
@ -3504,18 +3501,18 @@ 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 direcly 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 ExplicitePlacement from it.
|
||||
* albeit beeing a special form of a Placement, the ExplicitePlacement is treated as a separate concept. With respect to edit operations within the EDL, it can stand it for any sort of Placement. On the other hand the Builder takes a list of ~ExplicitePlacements 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 ~ExplicitePlacement 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 call some test methods on it (still to be defined), and, finally, that we can get an ExplicitPlacement from it.
|
||||
* albeit beeing 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 it 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).
|
||||
* on the lower end of the builder, everything is organized around the Concept of a ProcNode, which enables us to //pull// one (freely addressible) 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 uniformely. There is an distinction between Parameters (which //could// be variable) and Configuration (which is considered to be fixed). In this context, Automation just apeares 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 asychronous 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 aproach is to be able to push down the treatment of variations and special cases. We don't need to know what kind of Placement linkes one MObject to another, because it is sufficient for us to get an ExplicitePlacement. 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 alredy by the compiler.
|
||||
An important goal of this aproach is to be able to push down the treatment of variations and special cases. We don't need to know what kind of Placement linkes 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 alredy by the compiler.
|
||||
|
||||
!!!!Explicite 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. So we don't need to pose any constraints on the structuring of the objects in the EDL, besides the requirement to get an ExplicitePlacement for each. We could even loosen the use of the common mataphor of placing media sequences on fixed tracks, if we want to get at a more advanced GUI at some point in the future.
|
||||
!!!!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. So 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 mataphor 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 benifit of this we can run this subsystems multithreaded 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 carying out the calculations, but this values are considered to be constant over the course of the object usage).
|
||||
|
|
|
|||