WIP implement some Placement implementation

This commit is contained in:
Fischlurch 2007-10-22 05:15:08 +02:00
parent dee1bab28b
commit c58fd16edb
19 changed files with 473 additions and 45 deletions

BIN
doc/devel/uml/fig131333.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

View file

@ -112,7 +112,7 @@ Documentation</title>
<a name="refartifact128005"></a>
<table><tr><td><div class="element">Artifact <b>Cinelerra3</b></div></td></tr></table>
<p>Depends on <a href="index.html#refpackage129413"><b>common</b></a></p><p>Depends on <a href="index.html#refpackage129797"><b>gui</b></a></p><p>Depends on <a href="index.html#refpackage129669"><b>proc</b></a></p><p>Depends on <a href="index.html#refpackage129541"><b>backend</b></a></p><p>the main executable to be built<br /></p>
<p><i>executable</i> associated with : <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a>, <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a>, <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a>, <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>processor</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>tool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a></p>
<p><i>executable</i> associated with : <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>processor</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>tool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a>, <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a>, <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a>, <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a></p>
<a name="refartifact128133"></a>
<table><tr><td><div class="element">Artifact <b>main</b></div></td></tr></table>
<p>Artifact <i>source</i></p>
@ -801,6 +801,23 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
<table><tr><td><div class="element">Class <b><a href="class130949.html#refclass130949"><b>RenderState</b></a></b></div></td></tr></table>
</div>
</div>
<a name="refuse case view128261"></a>
<h3 class ="view">2.2.4 Use Case View config examples</h3>
<div class="sub">
<a name="refobject diagram131333"></a>
<p align="center"><img src="fig131333.png" alt="" /></p>
<p align="center"><b>multichannel clip</b></p><p><br /></p><p><br /></p>
<a name="refclass instance134661"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class137349.html#refclass137349"><b>Clip</b></a></p><a name="refclass instance134789"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class138501.html#refclass138501"><b>CompoundMedia</b></a></p><a name="refclass instance134917"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class136709.html#refclass136709"><b>Media</b></a></p><a name="refclass instance135045"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class136709.html#refclass136709"><b>Media</b></a></p><a name="refclass instance135173"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class136709.html#refclass136709"><b>Media</b></a></p><a name="refclass instance135301"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class138629.html#refclass138629"><b>CompoundClip</b></a></p><a name="refclass instance135429"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class138885.html#refclass138885"><b>SimpleClip</b></a></p><a name="refclass instance135557"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class138885.html#refclass138885"><b>SimpleClip</b></a></p><a name="refclass instance135685"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class138885.html#refclass138885"><b>SimpleClip</b></a></p><a name="refclass instance135813"></a>
<table><tr><td><div class="element">Class instance <b></div></td></tr></table><p>type :<a href="class128645.html#refclass128645"><b>Placement</b></a></p></div>
</div>
<a name="refpackage128389"></a>
<h2 class ="package">2.3 Package RenderEngine</h2>

View file

@ -29,24 +29,34 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation129290" target = "projectFrame"><b>checked_out</b></a></td><td>relation</td><td>this list keeps all mappings which are in use, and thus prevents them from Cache aging</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128005" target = "projectFrame"><b>Cinelerra3</b></a></td><td>artifact</td><td>the main executable to be built</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>cinelerra3</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135557" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135685" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135813" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135301" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135173" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135045" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134917" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134789" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134661" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135429" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129797" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130053" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130181" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130309" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130437" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130565" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130693" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132229" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132357" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132485" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130693" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130565" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133509" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130437" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130309" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130181" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130053" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129797" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129285" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128005" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128133" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133509" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128005" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129285" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133765" target = "projectFrame"><b>clear</b></a></td><td>operation</td><td>clear current session contents <br />without resetting overall session config.<br />Afterwards, the session will contain only one <br />empty EDL, while all Assets are retained.<br /></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class137349.html#refclass137349" target = "projectFrame"><b>Clip</b></a></td><td>class</td><td>bookkeeping (asset) view of a media clip.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact136325" target = "projectFrame"><b>clip</b></a></td><td>artifact</td><td>bookkeeping (asset) view of a media clip.</td></tr>
@ -69,6 +79,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact138245" target = "projectFrame"><b>compoundmedia</b></a></td><td>artifact</td><td>a special clip as a compound of several elementary media tracks,<br />e.g. the individual media streams found in one media file</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128266.html#refclass128266" target = "projectFrame"><b>Condition</b></a></td><td>class</td><td>I provided a reworked Condition class in my cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135813.html#refclass135813" target = "projectFrame"><b>Config</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refuse case view128261" target = "projectFrame"><b>config examples</b></a></td><td>use case view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128773" target = "projectFrame"><b>configure</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity128133" target = "projectFrame"><b>configure Render</b></a></td><td>activity</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action128645" target = "projectFrame"><b>configure Tools</b></a></td><td>opaque activity action</td><td></td></tr>
@ -78,8 +89,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refopaque activity action129029" target = "projectFrame"><b>connect</b></a></td><td>opaque activity action</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130181.html#refclass130181" target = "projectFrame"><b>Constraint</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128261" target = "projectFrame"><b>Controller</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>controller</b></a></td><td>package</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Controller</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>controller</b></a></td><td>package</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128645" target = "projectFrame"><b>Controller Entities</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128389" target = "projectFrame"><b>Controller Workings</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130309.html#refclass130309" target = "projectFrame"><b>ControllerFacade</b></a></td><td>class</td><td>Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings.</td></tr>

View file

@ -39,6 +39,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130181" target = "projectFrame"><b>mobject</b></a></td><td>package</td><td>sourcecode package<br /><br />MObject Subsystem<br />including the Session (EDL), Builder and Processing Controller</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128261" target = "projectFrame"><b>MObject</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram131333" target = "projectFrame"><b>multichannel clip</b></a></td><td>object diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td>class</td><td>I provided a reworked Mutex class in my cinelerra2 repository</td></tr>
</table>
</body>

View file

@ -21,8 +21,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134149" target = "projectFrame"><b>save</b></a></td><td>operation</td><td>create a complete, serialized representation<br />of the current session config and contents.<br />@todo how to serialize, prameters, return value?</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129205.html#refclass129205" target = "projectFrame"><b>Scheduler</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact135045" target = "projectFrame"><b>segment</b></a></td><td>artifact</td><td>Segment of the Timeline.<br />Used at the moment (7/07) for partitioning the timeline/fixture into segments<br />to be rendered by a specialized render node network for each, without the need<br />to change any connections within a given segment. <br />Note this concept may be superfluos alltogether; is a draft and the real<br />use still needs to be worked out...</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135173.html#refclass135173" target = "projectFrame"><b>Segment</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity object128005" target = "projectFrame"><b>segment Tool</b></a></td><td>activity object</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135173.html#refclass135173" target = "projectFrame"><b>Segment</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134277.html#refclass134277" target = "projectFrame"><b>SegmentationTool</b></a></td><td>class</td><td>Tool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. "Constant" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact131333" target = "projectFrame"><b>segmentationtool</b></a></td><td>artifact</td><td>Tool for creating a partitioning of the current timeline</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity object128389" target = "projectFrame"><b>segments</b></a></td><td>activity object</td><td></td></tr>
@ -31,8 +31,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128645" target = "projectFrame"><b>Service Components</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128133" target = "projectFrame"><b>Session</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact138757" target = "projectFrame"><b>session</b></a></td><td>artifact</td><td>Interface: the session edited by the user</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128005" target = "projectFrame"><b>Session</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130437" target = "projectFrame"><b>session</b></a></td><td>package</td><td>sourcecode package<br /><br />Everything concerning the EDL and Session, within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128005" target = "projectFrame"><b>Session</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class139653.html#refclass139653" target = "projectFrame"><b>Session</b></a></td><td>class</td><td>Primary Interface for all editing tasks.<br />The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128133" target = "projectFrame"><b>Session structure</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128517" target = "projectFrame"><b>sessionimpl</b></a></td><td>artifact</td><td>holds the complete session data to be edited by the user</td></tr>

View file

@ -20,6 +20,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram128901" target = "projectFrame"><b>EDL Example2</b></a></td><td></td><td>More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram129029" target = "projectFrame"><b>Engine Example1</b></a></td><td></td><td>Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram129157" target = "projectFrame"><b>Engine Example2</b></a></td><td></td><td>Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram131333" target = "projectFrame"><b>multichannel clip</b></a></td><td></td><td></td></tr>
</table>
</body>
</html>

View file

@ -40,10 +40,10 @@ namespace cinelerra
*/
class Time
{
int dummy;
long dummy;
public:
Time(int dum=0) : dummy(dum) {}
operator int () { return dummy; }
Time(long dum=0) : dummy(dum) {}
operator long () { return dummy; }
};
} // namespace cinelerra

View file

@ -73,7 +73,12 @@ namespace mobject
class ExplicitPlacement;
/**
* A refcounting Handle to an MObject of type MO,
* used to constrain or explicitly specify the
* location where the MObject is supposed to
* be within the Session/EDL
*/
template<class MO>
class Placement : protected shared_ptr<MO>
{

View file

@ -29,6 +29,22 @@ namespace mobject
{
/** */
void
FixedLocation::intersect (LocatingSolution& solution) const
{
REQUIRE (!solution.is_definite() && !solution.is_overconstrained());
TODO ("either set position or make overconstrained");
if (solution.minTime <= this.time_)
solution.minTime = this.time_;
else
solution.impo = true;
if (solution.maxTime >= this.time_)
solution.maxTime = this.time_;
else
solution.impo = true;
}

View file

@ -37,9 +37,15 @@ namespace mobject
* The most common case of positioning a MObject
* in the EDL: directly specifying a constant position.
*/
class FixedLocation : public LocatingPing
class FixedLocation : public LocatingPin
{
///////////
Time time_;
Track track_;
protected:
FixedLocation (Time ti, Track tra) : time_(ti), track_(tra) {};
virtual void intersect (LocatingSolution&) const;
};

View file

@ -21,15 +21,144 @@
* *****************************************************/
#include "proc/mobject/session/locatingpin.hpp"
#include "proc/mobject/placement.hpp"
#include "proc/mobject/session/locatingpin.hpp"
#include "proc/mobject/session/fixedlocation.hpp"
#include "proc/mobject/session/relativelocation.hpp"
namespace mobject
{
namespace session
{
/** */
/** it's OK to copy a LocainngPin,
* causing duplication of any chained lPins
*/
LocatingPin::LocatingPin (const LocatingPin& other)
: next_(other.next_)
{ }
LocatingPin&
LocatingPin::operator= (const LocatingPin& other)
{
if (this!=other)
this.next_.reset (other.next_);
return *this;
}
LocatingPin&
LocatingPin::addChain (LocatingPin newLp)
{
REQUIRE (newLp);
REQUIRE (!newLp->next_, "can insert only single LocatingPins");
if (next_ && newLp->getPrioLevel() > next_->getPrioLevel())
return next_->addChain (newLp);
else
{
scoped_ptr<LocatingPin> tmp_next (newLp);
tmp_next->next_.reset(this.next_);
this.next_.swap(tmp_next);
return *newLp;
}
}
/** implementing the core Placement functionality.
* By combining all the chained locating pins, try
* to get at a definite position (for this chain and
* consequently for the MObject handled by the enclosing
* Placement object).
* @todo this could/should be replaced by a full-blown
* constraint solver at some point in the future
*/
const FixedLocation
LocatingPin::resolve () const
{
LocatingSolution solution;
resolve (solution);
return FixedLocation (solution.getTime(), solution.getTrack());
}
void
LocatingPin::resolve (LocatingSolution& solution) const
{
if (solution.is_definite() || solution.is_impossible())
return;
this.intersect (solution);
if (this.next_ &&
!(solution.is_definite() || solution.is_impossible())
)
next_->resolve(solution);
}
void
LocatingPin::intersect (LocatingSolution& solution) const
{
REQUIRE (!solution.is_definite() && !solution.is_impossible());
// base class Implementation is NOP...
}
/** get some time value which could stand in for this
* solution. This doesn't imply this value is a solution,
* It's just a value we can use. At the moment (10/07),
* LocatingSolution is implemented as interval, and
* we return the lower bound here.
*/
LocatingPin::Time
LocatingPin::LocatingSolution::getTime()
{
return minTime;
}
LocatingPin::Track
LocatingPin::LocatingSolution::getTrack()
{
UNIMPLEMENTED ("get effective Track number of Solution");
}
bool
LocatingPin::LocatingSolution::is_definite() ///< found a solution?
{
return (minTime == maxTime && minTrack == maxTrack);
}
bool
LocatingPin::LocatingSolution::is_impossible()
{
if (minTime > maxTime) impo = true;
TODO ("track???");
return impo;
}
/* === Factory functions for adding LocatingPins === */
FixedLocation&
LocatingPin::operator() (Time, Track)
{
return static_cast<FixedLocation&>
(this.addChain (*new FixedLocation (Time, Track)));
}
RelativeLocation&
LocatingPin::operator() (PMO refObj, Time offset=0)
{
return static_cast<RelativeLocation&>
(this.addChain (*new RelativeLocation (Time, Track)));
}

View file

@ -21,6 +21,23 @@
*/
/** @file locatingpin.hpp
** Implementing the Placement mechanics. The various specifications how
** some MObject is to be placed (logically) within the EDL are given by small
** LocatingPin objects forming a chain. For resolving the actual position, at the
** moment (10/07) we use a preliminary implementation to support the most common
** Placement types (fixed and relative). It is comprised of the nested LocatingSolution
** and the functions FixedLocation#resolve(LocatingSolution&) and
** RelativeLocation#resolve(LocatingSolution&) etc. If this is to be extended,
** we'll need a real spacial discrete constraint solver (and it probably should be
** a library implementation, because the problem is everything but trivial).
**
*/
#ifndef MOBJECT_SESSION_LOCATINGPIN_H
#define MOBJECT_SESSION_LOCATINGPIN_H
@ -42,22 +59,78 @@ namespace mobject
class RelativeLocation;
struct LocatingPin
/**
* Positioning specification, possibliy chained
* to further specifications. The base class LocatingPin
* is a "no-op" specification which doesn't constrain the
* possible locations and thus can be embedded into pristine
* Placement by default. The Functor operators provide a
* way to add concrete positioning specifications, thereby
* defining the position of the MObject to be placed.
*/
class LocatingPin
{
protected:
typedef cinelerra::Time Time;
typedef session::Track* Track;
typedef cinelerra::Time Time;
typedef session::Track* Track;
/** next additional Pin, if any */
scoped_ptr<LocatingPin> next;
public:
scoped_ptr<LocatingPin> next_;
/* Factory functions for adding LocationPins */
/** order to consider when resolving. 0=highest */
virtual int getPrioLevel () const { return 0; }
LocatingPin& addChain (LocatingPin);
void resolve (LocatingSolution&) const;
virtual void intersect (LocatingSolution&) const;
public:
const FixedLocation resolve () const;
/* Factory functions for adding LocatingPins */
FixedLocation& operator() (Time, Track);
RelativeLocation& operator() (PMO refObj, Time offset=0);
LocatingPin (const LocatingPin&);
LocatingPin& operator= (const LocatingPin&);
virtual ~LocatingPin() {};
protected:
LocatingPin () {};
/**
* @internal helper for the (preliminary)
* position resolve() implementation.
* @todo we can't sensibly reason about tracks,
* because at the moment (10/07) we lack a track implementation...
*/
struct LocatingSolution
{
Time minTime;
Time maxTime;
Track minTrack;
Track maxTrack;
bool impo;
LocatingSolution ()
: minTime(-1e15), // TODO: better implementation of "unspecified..."
maxTime(+1e15),
minTrack(0), // TODO
maxTrack(0),
impo(false)
{ }
Time getTime();
Track getTrack();
bool is_definite();
bool is_impossible();
};
};
} // namespace mobject::session

View file

@ -1,5 +1,5 @@
/*
RelativePlacement - Placement implemnetaion providing various ways of attaching a MObject to another one
RelativeLocation - Placement implementation attaching MObjects relative to another one
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
@ -21,7 +21,7 @@
* *****************************************************/
#include "proc/mobject/session/relativeplacement.hpp"
#include "proc/mobject/session/relativelocation.hpp"
#include "proc/mobject/mobject.hpp"
namespace mobject
@ -29,7 +29,15 @@ namespace mobject
namespace session
{
void
RelativeLocation::intersect (LocatingSolution& solution) const
{
REQUIRE (!solution.is_definite() && !solution.is_overconstrained());
TODO ("either set position or make overconstrained");
}
} // namespace mobject::session
} // namespace mobject

View file

@ -49,14 +49,17 @@ namespace mobject
};
protected:
MObject* anchor;
Placement anchor; ////////////TODO: ooooops, this is a nasty design problem!!!
/** the kind of relation denoted by this Placement */
RelType relType;
/** Offset the actual position by this (time) value relative to the anchor point. */
cinelerra::Time offset;
Time offset;
//TODO: suitable representation?
virtual void intersect (LocatingSolution&) const;
};

View file

@ -1,6 +1,6 @@
format 40
"MObject" // ProcessingLayer::MObject
revision 26
revision 27
modified_by 5 "hiv"
// class settings
//class diagram settings
@ -1107,4 +1107,99 @@ ${inlines}
package_ref 128901 // Builder
package_ref 129029 // Controller
usecaseview 128261 "config examples"
//use case diagram settings
package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
//sequence diagram settings
show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default
//collaboration diagram settings
show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default
//object diagram settings
write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
objectdiagram 131333 "multichannel clip"
write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
size A4
end
classinstance 134661 ""
type class_ref 137349 // Clip
attributes
end
relations
end
end
classinstance 134789 ""
type class_ref 138501 // CompoundMedia
attributes
end
relations
end
end
classinstance 134917 ""
type class_ref 136709 // Media
attributes
end
relations
end
end
classinstance 135045 ""
type class_ref 136709 // Media
attributes
end
relations
end
end
classinstance 135173 ""
type class_ref 136709 // Media
attributes
end
relations
end
end
classinstance 135301 ""
type class_ref 138629 // CompoundClip
attributes
end
relations
end
end
classinstance 135429 ""
type class_ref 138885 // SimpleClip
attributes
end
relations
end
end
classinstance 135557 ""
type class_ref 138885 // SimpleClip
attributes
end
relations
end
end
classinstance 135685 ""
type class_ref 138885 // SimpleClip
attributes
end
relations
end
end
classinstance 135813 ""
type class_ref 128645 // Placement
attributes
end
relations
end
end
end
end

View file

@ -1,6 +1,6 @@
format 40
"ProcessingLayer" // ProcessingLayer
revision 5
revision 6
modified_by 5 "hiv"
// class settings
//class diagram settings

View file

@ -0,0 +1,62 @@
format 40
classinstancecanvas 128005 classinstance_ref 134661 //
xyz 233 116 2000
end
classinstancecanvas 128133 classinstance_ref 134789 //
xyz 297 53 2000
end
classinstancecanvas 128261 classinstance_ref 134917 //
xyz 335 112 2000
end
classinstancecanvas 128389 classinstance_ref 135045 //
xyz 335 144 2000
end
classinstancecanvas 128517 classinstance_ref 135173 //
xyz 335 177 2000
end
fragment 128773 ""
xyzwh 311 90 1994 83 139
end
classinstancecanvas 129157 classinstance_ref 135301 //
xyz 65 116 2000
end
classinstancecanvas 129285 classinstance_ref 135429 //
xyz 95 176 2000
end
classinstancecanvas 129413 classinstance_ref 135557 //
xyz 95 208 2000
end
classinstancecanvas 129541 classinstance_ref 135685 //
xyz 95 241 2000
end
fragment 129669 ""
xyzwh 70 153 1994 93 136
end
classinstancecanvas 129925 classinstance_ref 135813 //
xyz 75 33 2000
end
fragment 130181 "EDL"
xyzwh 12 12 2000 167 305
end
fragment 130437 "asset management"
xyzwh 221 12 2005 184 236
end
objectlinkcanvas 128645 norel
from ref 128133 z 1999 to ref 128261
no_role_a no_role_b
objectlinkcanvas 128901 norel
geometry VH
from ref 128005 z 1999 to point 256 64
line 129029 z 1999 to ref 128133
no_role_a no_role_b
objectlinkcanvas 129797 norel
from ref 129157 z 1999 to ref 129285
no_role_a no_role_b
objectlinkcanvas 130053 norel
from ref 129925 z 1999 to ref 129157
no_role_a no_role_b
objectlinkcanvas 130309 norel
from ref 129157 z 1999 to ref 128005
no_role_a no_role_b
end

View file

@ -1,6 +1,6 @@
format 40
"cinelerra3"
revision 35
revision 36
modified_by 5 "hiv"
cpp_root_dir "../../src/"

View file

@ -1459,7 +1459,7 @@ For the case in question this seems to be the ''resource allocation is construct
And, last but not least, doing all actual allocations is the job of the backend. Exceptions being long-lived objects, like the Session or the EDL, which are created once and don't bear the danger of causing memory pressure. Besides that, the ProcLayer code shouldn't issue &quot;new&quot; and &quot;delete&quot;, rather it should use some central [[Factories]] for all allocation and freeing, so we can redirect these calls down to the backend, which may use pooling or special placement allocators or the like. The rationale is, for modern hardware/architectures, care has to be taken with heap allocations, esp. with many small objects and irregular usage patterns.
</pre>
</div>
<div title="MultichannelMedia" modifier="Ichthyostega" modified="200710090015" created="200709200255" tags="design" changecount="5">
<div title="MultichannelMedia" modifier="Ichthyostega" modified="200710212326" created="200709200255" tags="design" changecount="6">
<pre>Based on practical experiences, Ichthyo tends to consider Multichannel Media as the base case, while counting media files providing just one single media stream as exotic corner cases. This may seem counter intuitive at first sight; you should think of it as an attempt to avoid right from start some of the common shortcomings found in many video editors, especially
* having to deal with keeping a &quot;link&quot; between audio and video clips
* silly limitations on the supported audio setups (e.g. &quot;sound is mono, stereo or Dolby-5.1&quot;)
@ -1467,6 +1467,7 @@ And, last but not least, doing all actual allocations is the job of the backend.
* inability to edit stereoscopic (3D) video in a natural fashion
!Compound Media
[&gt;img[Outline of the Build Process|uml/fig131333.png]]
Basically, each [[media asset|MediaAsset]] is considered to be a compound of several elementary media (tracks), possibly of various different media kinds. Adding support for placeholders (''proxy clips'') at some point in future will add still more complexity (because then there will be even dependencies between some of these elementary media). To handle, edit and render compound media, we need to impose some structural limitations. But anyhow, we try to configure as much as possible already at the &quot;asset level&quot; and make the rest of the proc layer behave just according to the configuration given with each asset.
So, when creating a clip out of such a compound media asset, the clip has to be a compound of elementary clips mirroring the given media asset's structure. Besides, it should be possible to //detach// and //attach// elementary clips from a compound clip. On the other hand, the [[Fixture]] created from the current state of the [[EDL]] is explicit to a great extent. So, in the Fixture we deal only with elementary clips placed to absolute positions, and thus the builder will see only simple non-compound clips and translate them into the corresponding source reading nodes.
@ -2398,7 +2399,7 @@ config.macros.rssFeedUpdate = {
//}}}
</pre>
</div>
<div title="RelationClipAsset" modifier="Ichthyostega" modified="200710191558" created="200710191541" tags="design decision" changecount="3">
<div title="RelationClipAsset" modifier="Ichthyostega" modified="200710212327" created="200710191541" tags="design decision" changecount="7">
<pre>What is the Role of the asset::Clip and how exactly are Assets and (Clip)-MObjects related?
First of all: ~MObjects are the dynamic/editing/manipulation view, while Assets are the static/bookkeeping/searching/information view of the same entities. Thus, the asset::Clip contains the general configuration, the ref to the media and descriptive properties, while all parameters being &quot;manipulated&quot; belong to the session::Clip (MObject). Besides that, the practical purpose of asset::Clip is that you can save and remember some selection as a Clip (Asset), maybe even attach some informations or markup to it, and later be able to (re)create a editable representation in the Session (the GUI could implement this by allowing to drag from the asset::Clip GUI representation to the timeline window)
@ -2413,9 +2414,9 @@ When the Asset or the corresponding asset::Media is deleted, the dependant clip-
In either case, we have to solve the ''problem of clip asset proliferation''
!!multiplicity and const-ness
The link between ~MObject and Asset should be {{{const}}} in both directions (to enforce the separation of concerns). So the Asset can't //edit// the clip and the clip can't change the media parameters.
The relation logical relation, 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 &quot;clip-thing&quot;. 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)
The link between ~MObject and Asset should be {{{const}}}, so the clip can't change the media parameters. Because of separation of concerns, it would be desirable that the Asset can't //edit// the clip either (meaning {{{const}}} in the opposite direction as well). But unfortunately the asset::Clip is in power to delete the clip-MO and, moreover, handles out a smart ptr ([[Placement]]) referring to the clip-MO, which can (and should) be used to place the clip-MO within the EDL and to manipulate it consequently...
[&gt;img[Outline of the Build Process|uml/fig131333.png]]
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 &quot;clip-thing&quot;. 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??</pre>
</div>
<div title="RenderEngine" modifier="Ichthyostega" modified="200708050630" created="200706190056" tags="overview" changecount="40">