Merge commit 'cin3-ct/master'

This commit is contained in:
Michael Ploujnikov 2007-06-27 10:12:51 -04:00
commit 7bfac7d853
7 changed files with 456 additions and 18 deletions

View file

@ -1,7 +1,7 @@
format 38
"design" // design
revision 6
modified_by 5 "hiv"
revision 7
modified_by 61 "ct"
// class settings
//class diagram settings
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

View file

@ -12,7 +12,7 @@ fragment 128261 "Backend Layer"
end
packagecanvas 128389
package_ref 128133 // AssetManager
xyzwh 561 201 2005 252 214
xyzwh 561 201 2005 265 214
packagecanvas 128517
package_ref 128261 // MObject
xyzwh 94 201 2006 458 335
@ -27,13 +27,13 @@ componentcanvas 128901 component_ref 128133 // Session
xyzwh 122 243 2011 323 156
componentcanvas 129029 component_ref 128261 // Controller
draw_component_as_icon default show_component_req_prov default show_component_rea default
xyzwh 372 419 2011 175 105
xyzwh 372 419 2011 189 105
componentcanvas 129157 component_ref 128389 // EDL
draw_component_as_icon default show_component_req_prov default show_component_rea default
xyzwh 288 302 2016 143 79
xyzwh 288 302 2016 153 79
componentcanvas 129285 component_ref 128517 // Fixture
draw_component_as_icon default show_component_req_prov default show_component_rea default
xyzwh 124 319 2016 143 69
xyzwh 124 319 2016 153 75
note 129541 "Structures edited by the User"
xyzwh 43 269 2016 181 41
componentcanvas 129669 component_ref 128645 // AssetManagement
@ -41,16 +41,16 @@ componentcanvas 129669 component_ref 128645 // AssetManagement
xyzwh 577 241 2010 208 159
componentcanvas 129797 component_ref 128773 // Dispatcher
draw_component_as_icon default show_component_req_prov default show_component_rea default
xyzwh 406 31 2005 179 69
xyzwh 406 31 2005 193 75
componentcanvas 129925 component_ref 128901 // Engine
draw_component_as_icon default show_component_req_prov default show_component_rea default
xyzwh 118 602 2010 235 176
componentcanvas 130053 component_ref 129029 // Frame (Stream) Provider
draw_component_as_icon default show_component_req_prov default show_component_rea default
xyzwh 121 876 2005 229 69
xyzwh 121 876 2005 229 75
componentcanvas 130181 component_ref 129157 // Cache
draw_component_as_icon default show_component_req_prov default show_component_rea default
xyzwh 391 876 2005 179 69
xyzwh 391 876 2005 193 75
note 131717 "Coordinates Playback and Rendering"
xyzwh 483 494 2016 149 63
note 131845 "border of the low-level, performance-critical part of the system"
@ -58,7 +58,7 @@ note 131845 "border of the low-level, performance-critical part of the system"
note 131973 "just works, never decides"
xyzwh 317 668 2015 110 59
note 132101 "codecs, stream I/O here"
xyzwh 647 904 2005 166 39
xyzwh 376 592 2005 166 39
simplerelationcanvas 131205 simplerelation_ref 128005
from ref 130053 z 2004 to ref 130181
simplerelationcanvas 131333 simplerelation_ref 128133

View file

@ -0,0 +1,82 @@
format 38
classcanvas 128053 class_ref 128181 // File
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 62 215 2000
end
classcanvas 128181 class_ref 128309 // FileHandleCache
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 282 91 2000
end
classcanvas 128309 class_ref 128437 // FileMapCache
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 445 395 2000
end
classcanvas 128565 class_ref 128565 // FileMap
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 298 2000
end
classcanvas 128693 class_ref 128693 // FileHandle
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 308 188 2000
end
classcanvas 128821 class_ref 128821 // Frame
draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default
xyz 297 390 2000
end
classcanvas 128949 class_ref 128949 // FrameDescriptor
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 45 505 2000
end
classcanvas 129077 class_ref 129077 // Prefetch
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 689 242 2000
end
classcanvas 129205 class_ref 129205 // Scheduler
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 638 78 2000
end
classcanvas 129461 class_ref 129333 // FileProvider
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 61 105 2005
end
fragment 129589 "public interfaces"
xyzwh 23 26 1995 177 567
end
fragment 129717 "implementation details"
xyzwh 227 26 1995 605 567
end
classcanvas 131553 class_ref 128225 // FrameReference
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 49 348 2000
end
relationcanvas 128353 relation_ref 128225 // <directional aggregation>
from ref 128053 z 1999 to ref 128693
role_a_pos 157 209 3000 no_role_b
multiplicity_a_pos 277 225 3000 no_multiplicity_b
relationcanvas 128481 relation_ref 128353 // <directional aggregation>
from ref 128821 z 1999 to ref 128949
role_a_pos 167 474 3000 no_role_b
no_multiplicity_a no_multiplicity_b
relationcanvas 128609 relation_ref 128481 // <directional aggregation>
from ref 128053 z 1999 to ref 128565
role_a_pos 390 288 3000 no_role_b
multiplicity_a_pos 451 325 3000 no_multiplicity_b
relationcanvas 129121 relation_ref 128609 // <aggregation by value>
from ref 128181 z 1999 stereotype "<<list>>" xyz 323 170 3000 to ref 128693
role_a_pos 356 161 3000 no_role_b
multiplicity_a_pos 336 161 3000 no_multiplicity_b
relationcanvas 129889 relation_ref 128865 // <unidirectional association>
from ref 128821 z 1999 to ref 128565
role_a_pos 398 303 3000 no_role_b
multiplicity_a_pos 448 340 3000 no_multiplicity_b
relationcanvas 131425 relation_ref 129121 // <directional aggregation by value>
from ref 128309 z 1999 stereotype "<<list>>" xyz 470 369 3000 to ref 128565
no_role_a no_role_b
no_multiplicity_a no_multiplicity_b
relationcanvas 131681 relation_ref 129249 // <aggregation>
from ref 131553 z 1999 to point 235 393
line 132065 z 1999 to ref 128821
role_a_pos 182 388 3000 no_role_b
multiplicity_a_pos 269 377 3000 no_multiplicity_b
end

View file

@ -0,0 +1,3 @@
format 38
end

View file

@ -1,7 +1,7 @@
format 38
"BackendLayer" // BackendLayer
revision 1
modified_by 5 "hiv"
revision 4
modified_by 97 "ct"
// class settings
//class diagram settings
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
@ -26,8 +26,6 @@ format 38
package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
show_infonote default drawing_language default
package_ref 128517 // CommonLib
classview 128517 "Backend Components"
//class diagram settings
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
@ -82,5 +80,358 @@ ${members}};
end
end
classdiagram 128181 "File Mapping"
draw_all_relations no 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
size A4
end
classdiagram 128309 "In Memory Database"
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
size A4
end
class 128181 "File"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 128437 // descriptor (descriptor)
relation 128437 o--> name "descriptor"
a role_name "descriptor" multiplicity "" protected
comment "type of this frame"
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128437 // descriptor (descriptor)
b multiplicity "" parent class_ref 128693 // FileHandle
end
operation 128181 "getFrame"
public return_type class_ref 128821 // Frame
nparams 2
param in name "" type class_ref 128949 // FrameDescriptor
param in name "frame_address" explicit_type ""
cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
${body}}
"
end
classrelation 128225 // handle (<directional aggregation>)
relation 128225 o-->
a role_name "handle" multiplicity "0..1" protected
comment "weak pointer"
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128225 // handle (<directional aggregation>)
b multiplicity "" parent class_ref 128693 // FileHandle
end
classrelation 128609 // mappings (<directional aggregation>)
relation 128481 o-->
a role_name "mappings" multiplicity "*" protected
comment "weak pointers"
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128609 // mappings (<directional aggregation>)
b multiplicity "" parent class_ref 128565 // FileMap
association_explicit_type "index"
end
end
class 128309 "FileHandleCache"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 128737 // handles (<aggregation by value>)
relation 128609 *---
stereotype "list"
a role_name "handles" multiplicity "*" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
classrelation_ref 128737 // handles (<aggregation by value>)
b role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
classrelation_ref 128865 // <aggregation by value>
end
attribute 128225 "handles_available"
private explicit_type "int"
init_value "100"
cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
java_decl ""
idl_decl ""
comment "initialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used.
Else this number is decremented for each new filehandle used and incremented for any one explicitly freed."
end
end
class 128437 "FileMapCache"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
attribute 128481 "checked_out"
protected explicit_type "list"
cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
java_decl ""
idl_decl ""
end
classrelation 129505 // <association>
relation_ref 128993 // <association>
end
attribute 128609 "checked_in"
protected explicit_type "list"
cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
java_decl ""
idl_decl ""
end
classrelation 129633 // <directional aggregation by value>
relation 129121 *-->
stereotype "list"
a role_name "" multiplicity "" protected
comment "FileMap objects are moved (spliced) between the checked_in and checked_out lists depending if they are in use or subject of cache aging"
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
classrelation_ref 129633 // <directional aggregation by value>
b multiplicity "" parent class_ref 128565 // FileMap
end
end
class 128565 "FileMap"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
associated_diagram classdiagram_ref 128181 // File Mapping
end
class 128693 "FileHandle"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 128865 // <aggregation by value>
relation_ref 128609 // <aggregation by value>
end
end
class 128821 "Frame"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
comment "Frames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool."
classrelation 128181 // <directional aggregation>
relation 128181 o-->
a role_name "" multiplicity "*" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type} *> ${name}${value};
"
classrelation_ref 128181 // <directional aggregation>
b multiplicity "" parent class_ref 128949 // FrameDescriptor
association_type class_ref 128949 // FrameDescriptor
end
classrelation 128309 // <directional aggregation>
relation 128309 o-->
a role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128309 // <directional aggregation>
b multiplicity "" parent class_ref 128949 // FrameDescriptor
end
classrelation 128693 // <aggregation>
relation 128565 o---
a role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128693 // <aggregation>
b role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128821 // <aggregation>
end
classrelation 128949 // <directional aggregation>
relation 128693 o-->
a role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128949 // <directional aggregation>
b multiplicity "" parent class_ref 128949 // FrameDescriptor
end
classrelation 129077 // <directional aggregation>
relation 128821 o-->
a role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 129077 // <directional aggregation>
b multiplicity "" parent class_ref 128949 // FrameDescriptor
end
classrelation 128481 // descriptor (<directional aggregation>)
relation 128353 o-->
a role_name "descriptor" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 128481 // descriptor (<directional aggregation>)
b multiplicity "" parent class_ref 128949 // FrameDescriptor
end
classrelation 129249 // mapping (<unidirectional association>)
relation 128865 --->
a role_name "mapping" multiplicity "1" private
comment "Frames are a continous sequence in a mapping"
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 129249 // mapping (<unidirectional association>)
b multiplicity "" parent class_ref 128565 // FileMap
end
classrelation 129377 // <association>
relation 128993 ----
a role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 129377 // <association>
b role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 129505 // <association>
end
classrelation 129889 // <aggregation>
relation_ref 129249 // <aggregation>
end
end
class 128949 "FrameDescriptor"
visibility package stereotype "interface"
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl "${comment}${@}${visibility}interface ${name}${extends} {
${members}}
"
idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
${members}};
"
explicit_switch_type ""
comment "A FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes"
classrelation 128821 // <aggregation>
relation_ref 128565 // <aggregation>
end
end
class 129077 "Prefetch"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
end
class 129205 "Scheduler"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
end
sequencediagram 128437 "QueryFrame"
show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default
size A4
end
class 129333 "FileProvider"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
comment "This is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames."
end
class 128225 "FrameReference"
visibility package
cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
java_decl ""
idl_decl ""
explicit_switch_type ""
classrelation 129761 // frame (<aggregation>)
relation 129249 o---
a role_name "frame" multiplicity "0..1" protected
comment "maybe weak reference"
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 129761 // frame (<aggregation>)
b role_name "" multiplicity "" protected
cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
classrelation_ref 129889 // <aggregation>
end
end
end
end

View file

@ -1,7 +1,7 @@
format 38
"cinelerra3"
revision 11
modified_by 5 "hiv"
revision 12
modified_by 77 "ct"
cpp_root_dir "../../src/"
@ -46,6 +46,8 @@ format 38
package_ref 129285 // ProcessingLayer
package_ref 128773 // GUI
package_ref 128517 // CommonLib
add_operation_profile
end

View file

@ -3484,14 +3484,14 @@ function addKeyDownHandlers(e)
</pre>
</div>
<div title="WalkThrough" modifier="Ichthyostega" modified="200706220359" created="200706210625" tags="overview" changecount="28">
<div title="WalkThrough" modifier="CehTeh" modified="200706270305" created="200706210625" tags="overview" changecount="29">
<pre>The Intention of this text is to help you understanding the design and to show some notable details.
!!!!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]].&lt;br&gt; 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 [[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)
* the __engine level__ uses solely [[Render Pipeline Nodes (ProcNode)|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
* within the Engine the Render Nodes are containing the ''inner loop'', whose contents are to be executed hundered thousends to million times per frame. Every dispensable concern, which is not strictly neccessary to get the job done, is worth the effort of facturing out here.