From 12949265081359e545ee51b2a9498a82c3f38846 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Mon, 20 Dec 2010 07:37:41 +0100 Subject: [PATCH] Time Quantisation: theoretical analysis and initial design draft --- doc/devel/uml/fig142725.png | Bin 0 -> 14152 bytes uml/lumiera/128517 | 394 ++++++++++++++++++++++++++++++++++-- uml/lumiera/131077 | 2 +- uml/lumiera/132485 | 2 +- uml/lumiera/142725.diagram | 142 +++++++++++++ uml/lumiera/5.session | 19 +- uml/lumiera/lumiera.prj | 2 +- wiki/renderengine.html | 90 +++++++- 8 files changed, 615 insertions(+), 36 deletions(-) create mode 100644 doc/devel/uml/fig142725.png create mode 100644 uml/lumiera/142725.diagram diff --git a/doc/devel/uml/fig142725.png b/doc/devel/uml/fig142725.png new file mode 100644 index 0000000000000000000000000000000000000000..e69ceab0e28613de3f80e6fd2e6fcd910b196690 GIT binary patch literal 14152 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 literal 0 HcmV?d00001 diff --git a/uml/lumiera/128517 b/uml/lumiera/128517 index 1adaeed67..eef0810c5 100644 --- a/uml/lumiera/128517 +++ b/uml/lumiera/128517 @@ -1,6 +1,6 @@ format 58 "CommonLib" // CommonLib - revision 20 + revision 22 modified_by 5 "hiv" // class settings //class diagram settings @@ -811,6 +811,380 @@ ${items}}; end end + classview 135685 "Time Handling" + //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_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties 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 show_stereotype_properties 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 show_stereotype_properties 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 show_stereotype_properties default + //state diagram settings + package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default + show_activities default region_horizontally default drawing_language default show_stereotype_properties default + //class settings + //activity diagram settings + 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 show_stereotype_properties default + classdiagram 142725 "Time flavours" + draw_all_relations no hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + size A4 + end + + class 134917 "Time" + visibility public + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + comment "denotes a temporal position (time point) in continuous time. +This implies a time origin (point of reference), which is kept implicit and depends on the context. +" + classrelation 206085 // + relation 195205 ---|> + a public + cpp default "${type}" + classrelation_ref 206085 // + b parent class_ref 168709 // TimeValue + end + end + + class 168581 "TimeSpan" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 206341 // + relation 195461 ---|> + a public + cpp default "${type}" + classrelation_ref 206341 // + b parent class_ref 168837 // Duration + end + + classrelation 206469 // start () + relation 195589 ---> + a role_name "start" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 206469 // start () + b parent class_ref 134917 // Time + end + end + + class 168709 "TimeValue" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 168837 "Duration" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 206213 // + relation 195333 ---|> + a public + cpp default "${type}" + classrelation_ref 206213 // + b parent class_ref 168709 // TimeValue + end + end + + class 168965 "QuTime" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 206853 // + relation 195973 ---> + stereotype "refers_to" + a role_name "" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 206853 // + b multiplicity "*" parent class_ref 169093 // Quantiser + end + + classrelation 208133 // + relation 197253 ---|> + a public + cpp default "${type}" + classrelation_ref 208133 // + b parent class_ref 134917 // Time + end + + classrelation 208901 // + relation 198021 ---> + stereotype "yield" + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 208901 // + b parent class_ref 170629 // TCode + end + end + + class 169093 "Quantiser" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 206981 // + relation 196101 ---> + stereotype "use" + a role_name "" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 206981 // + b parent class_ref 169221 // TimeGrid + end + + classrelation 209029 // + relation 198149 o--> + stereotype "provide" + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 209029 // + b parent class_ref 170757 // Format + end + end + + class 169221 "TimeGrid" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + attribute 134277 "origin" + protected type class_ref 134917 // Time + multiplicity "1" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + php_decl "" + python_decl "" + idl_decl "" + end + + attribute 134405 "scale" + protected type class_ref 168837 // Duration + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + php_decl "" + python_decl "" + idl_decl "" + end + end + + class 170373 "TimeVar" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 208261 // + relation 197381 ---|> + a public + cpp default "${type}" + classrelation_ref 208261 // + b parent class_ref 168709 // TimeValue + end + + classrelation 208389 // val () + relation 197509 ---> + a role_name "val" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 208389 // val () + b multiplicity "*" parent class_ref 134917 // Time + end + end + + class 170501 "QuTimeSpan" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 208517 // + relation 197637 ---|> + a public + cpp default "${type}" + classrelation_ref 208517 // + b parent class_ref 168581 // TimeSpan + end + end + + class 170629 "TCode" + visibility package + nformals 1 + formal name "F" type "class" explicit_default_value "" + explicit_extends "" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 208645 // + relation 197765 -_-> + a default + cpp default "#include in source" + classrelation_ref 208645 // + b parent class_ref 170629 // TCode + end + + classrelation 208773 // + relation 197893 -_-> + a default + cpp default "#include in source" + classrelation_ref 208773 // + b parent class_ref 170757 // Format + end + end + + class 170757 "Format" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 170885 "FrameNr" + visibility package + nactuals 1 + actual class class_ref 170629 // TCode + rank 0 explicit_value "" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 209157 // + relation 198277 ---|> + a public + cpp default "${type}" + classrelation_ref 209157 // + b parent class_ref 170629 // TCode + end + end + + class 171013 "CompoundGrid" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 209285 // + relation 198405 ---|> + a public + cpp default "${type}" + classrelation_ref 209285 // + b parent class_ref 169221 // TimeGrid + end + end + end + package_ref 131077 // ConfigQuery package_ref 132485 // Containers @@ -1161,24 +1535,6 @@ ${inlines} end end - class 134917 "Time" - visibility public - cpp_decl "${comment}${template}class ${name}${inherit} - { -${members} }; -${inlines} -" - java_decl "" - php_decl "" - python_2_2 python_decl "" - idl_decl "" - explicit_switch_type "" - - comment "denotes a temporal position (time point), based on timeline start. - -investigate posix.4 realtime timers, wrap these here" - end - class 135301 "Factory" visibility public nformals 1 diff --git a/uml/lumiera/131077 b/uml/lumiera/131077 index a6ef47693..3b38a2e50 100644 --- a/uml/lumiera/131077 +++ b/uml/lumiera/131077 @@ -1,6 +1,6 @@ format 58 "ConfigQuery" // CommonLib::ConfigQuery - revision 18 + revision 19 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/lumiera/132485 b/uml/lumiera/132485 index 099d2b342..d1bbeacbe 100644 --- a/uml/lumiera/132485 +++ b/uml/lumiera/132485 @@ -1,6 +1,6 @@ format 58 "Containers" // CommonLib::Containers - revision 1 + revision 2 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/lumiera/142725.diagram b/uml/lumiera/142725.diagram new file mode 100644 index 000000000..c38a9266c --- /dev/null +++ b/uml/lumiera/142725.diagram @@ -0,0 +1,142 @@ +format 58 + +classcanvas 128005 class_ref 134917 // Time + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 249 118 2000 +end +classcanvas 128133 class_ref 168581 // TimeSpan + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 38 218 2000 +end +classcanvas 128261 class_ref 168709 // TimeValue + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 36 24 2000 +end +classcanvas 128389 class_ref 168837 // Duration + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 42 118 2000 +end +classcanvas 129669 class_ref 168965 // QuTime + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 245 324 2000 +end +classcanvas 130181 class_ref 169093 // Quantiser + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 393 324 2000 +end +classcanvas 130565 class_ref 169221 // TimeGrid + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 508 324 2000 +end +classcanvas 130949 class_ref 170373 // TimeVar + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 114 118 2000 +end +classcanvas 131589 class_ref 170501 // QuTimeSpan + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 103 324 2000 +end +classcanvas 131973 class_ref 170629 // TCode + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 248 413 2000 +end +classcanvas 132101 class_ref 170757 // Format + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 393 397 2000 +end +classcanvas 132997 class_ref 170885 // FrameNr + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 238 496 2000 +end +classcanvas 133253 class_ref 171013 // CompoundGrid + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 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 show_stereotype_properties default + xyz 480 439 2000 +end +relationcanvas 128517 relation_ref 195205 // + geometry VHV unfixed + from ref 128005 z 1999 to point 269 88 + line 128645 z 1999 to point 66 88 + line 128773 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 128901 relation_ref 195333 // + from ref 128389 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 129285 relation_ref 195461 // + from ref 128133 z 1999 to ref 128389 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 129413 relation_ref 195589 // + from ref 128133 z 1999 to ref 128005 + role_a_pos 111 214 3000 no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130437 relation_ref 195973 // + from ref 129669 z 1999 stereotype "<>" xyz 309 330 3000 to ref 130181 + no_role_a no_role_b + multiplicity_a_pos 376 349 3000 multiplicity_b_pos 305 349 3000 +end +relationcanvas 130693 relation_ref 196101 // + decenter_end 353 + from ref 130181 z 1999 stereotype "<>" xyz 457 333 3000 to ref 130565 + no_role_a no_role_b + multiplicity_a_pos 491 352 3000 no_multiplicity_b +end +relationcanvas 130821 relation_ref 197253 // + from ref 129669 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 131077 relation_ref 197381 // + geometry VHV + from ref 130949 z 1999 to point 138 88 + line 131205 z 1999 to point 66 88 + line 131333 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 131461 relation_ref 197509 // + from ref 130949 z 1999 to ref 128005 + role_a_pos 175 124 3000 no_role_b + multiplicity_a_pos 230 140 3000 multiplicity_b_pos 176 143 3000 +end +relationcanvas 131717 relation_ref 197637 // + from ref 131589 z 1999 to point 65 290 + line 131845 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 132485 relation_ref 197893 // + from ref 131973 z 1999 to point 290 413 + line 132869 z 1999 to ref 132101 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 132613 relation_ref 198021 // + from ref 129669 z 1999 stereotype "<>" xyz 275 378 3000 to ref 131973 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 132741 relation_ref 198149 // + decenter_end 595 + from ref 130181 z 1999 stereotype "<>" xyz 360 377 3000 to ref 132101 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 133125 relation_ref 198277 // + decenter_begin 581 + from ref 132997 z 1999 to ref 131973 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 133381 relation_ref 198405 // + decenter_begin 658 + from ref 133253 z 1999 to ref 130565 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 5e7b8f6a0..a3d4a7eab 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -4,10 +4,8 @@ diagrams 631 352 100 4 0 0 objectdiagram_ref 138885 // ModelAssetRelations 730 488 100 4 0 0 - classdiagram_ref 128133 // Session structure - 835 697 100 4 300 0 - active activitydiagram_ref 129413 // build flow - 627 621 100 4 0 0 + active classdiagram_ref 142725 // Time flavours + 595 629 100 4 0 0 end show_stereotypes selected @@ -36,15 +34,10 @@ open expansionregion_ref 128133 // establish partitioning usecaseview_ref 128261 // config examples classview_ref 128133 // Engine Workings - class_ref 164485 // Request - class_ref 164613 // Provision - class_ref 166021 // ActiveProvision - class_ref 164741 // Binding - class_ref 166277 // Index - class_ref 145285 // MediaKind - - package_ref 131077 // ConfigQuery - class_ref 152965 // Handle + classdiagram_ref 142725 // Time flavours + class_ref 134917 // Time + class_ref 169221 // TimeGrid + classview_ref 128645 // Service Components classview_ref 128266 // SmartPointers end end diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index ae9d839be..d6e97d779 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 58 "lumiera" - revision 65 + revision 66 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 5837913f4..06edfffaf 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -2081,7 +2081,7 @@ Besides routing to a global pipe, wiring plugs can also connect to the source po Finally, this example shows an ''automation'' data set controlling some parameter of an effect contained in one of the global pipes. From the effect's POV, the automation is simply a ParamProvider, i.e a function yielding a scalar value over time. The automation data set may be implemented as a bézier curve, or by a mathematical function (e.g. sine or fractal pseudo random) or by some captured and interpolated data values. Interestingly, in this example the automation data set has been placed relatively to the meta clip (albeit on another track), thus it will follow and adjust when the latter is moved. -
+
This wiki page is the entry point to detail notes covering some technical decisions, details and problems encountered in the course of the implementation of the Lumiera Renderengine, the Builder and the related parts.
 
 * [[Packages, Interfaces and Namespaces|InterfaceNamespaces]]
@@ -2110,6 +2110,10 @@ Finally, this example shows an ''automation'' data set controlling some paramete
 * shaping the GUI/~Proc-Interface, based on MObjectRef and the [[Command frontend|CommandHandling]]
 * defining PlacementScope in order to allow for [[discovering session contents|Query]]
 * working out a [[Wiring concept|Wiring]] and the foundations of OutputManagement
+* shaping the foundations of the [[player subsystem|Player]]
+* detail considerations regarding [[time and time quantisation|TimeQuant]]
+* designing how to [[build|BuildFixture]] the [[Fixture]] (...{{red{WIP}}}...)
+
 
@@ -3970,6 +3974,33 @@ We need a way of addressing existing [[pipes|Pipe]]. Besides, as the Pipes and T <<tasksum end>>
+
+
With //play process//&nbsp; we denote an ongoing effort to calculate a stream of frames for playback or rendering.
+The play process is an conceptual entity linking together several activities in the [[Backend]] and the RenderEngine. Creating a play process is the central service provided by the [[player subsystem|Player]]: it maintains a registration entry for the process to keep track of associated entities, resources allocated and calls dispatched as a consequence, and it wires and exposes a PlayController to serve as an interface and information hub.
+
+''Note'': the player is in no way engaged in any of the actual calculation and management tasks necessary to make this stream of calculations happen. The play process code contained within the player subsystem is largely comprised of organisational concerns and not especially performance critical.
+* the [[Backend]] is responsible for scheduling and dispatching the calculations
+* the RenderEngine has the ability to cary out individual frame calculations
+* the OutputSlot exposed by the [[output manager|OutputManagement]] is responsible for accepting timed frame delivery
+
+
+
Within Lumiera, &raquo;Player&laquo; denotes the [[Subsystem]] responsible for organising and tracking //ongoing playback and render processes.// &rarr; [[PlayProcess]]
+The player subsystem does not perform or even manage any render operations, nor does it handle the outputs directly.
+Yet it adresses some central concerns:
+
+;uniformity
+:all playback and render processes are on equal footing, handled in a similar way.
+;integration
+:the player cares for the necessary integration with the other subsystems
+:it consults the OutputManagement, retrieves the necessary informations from the [[Session]] and coordinates [[Backend]] calls.
+;time quantisation
+:the player translates continuous time values into discrete frame counts.
+:to perform this [[quantisation|TimeQuant]], the help of the session for building a TimeGrid for each output channel is required.
+
+!{{red{WIP 12/10}}} under construction
+The player subsystem is currently about to be designed and built up; some time ago, __Joel Holdsworth__ and __Ichthyo__ did a design study with a PlayerDummy, which is currently hooked up with the TransportControl in the Lumiera GUI.
+
+
__Joelholdsworth__ and __Ichthyo__ created this player mockup in 1/2009 to find out about the implementation details regarding integration and colaboration between the layers. There is no working render engine yet, thus we use a ~DummyImageGenerator for creating faked yuv frames to display. Within the GUI, there is a ~PlaybackController hooked up with the transport controls on the timeline pane.
 # first everything was contained within ~PlaybackController, which spawns a thread for periodically creating those dummy frames
@@ -6495,6 +6526,63 @@ Thus no server and no network connection is needed. Simply open the file in your
  * see [[Homepage|http://tiddlywiki.com]], [[Wiki-Markup|http://tiddlywiki.org/wiki/TiddlyWiki_Markup]]
 
+
+
The term &raquo;Time&laquo; spans a variety of vastly different entities. Within a NLE we get to deal with various //flavours of time values.//
+;continuous time
+:without any additional assumptions, ''points in time'' can be specified with arbitrary precision.
+:the time values are just numbers; the point of reference and the meaning is implicit.
+:within Lumiera, time is encoded as integral number of //micro ticks,// practically continuous
+;duration
+:a range of time, a ''distance'' on the time axis, measured with the same arbitrary precision as time points.
+:distances and durations can be determined by //subtracting// two time points, consequently they are //signed numbers.//
+:a duration always abstracts from the time //when// this duration or distance happens, the relation to any time scale remains implicit
+;offset
+:offsetting a time or a duration is an operation (not an entity): it means changing the denoted time point or duration.
+:the //target// of an offset operation is a time or duration, while it's //argument// is a distance (synonymous to duration).
+:Time values are //immutable,// like numbers. Only a ''time variable'' can be changed. Durations to the contrary can be mutable or  const.
+;time span
+:contrary to a mere duration, a ''time interval'' or time span is actually //anchored// at a specific point in time.
+:it can be seen as a //special kind of duration,// which explicitly states the information //when// this time span takes place.
+
+;internal time
+:While the basic continuous time values don't imply any provision regarding the time scale and origin to be used, actually, within the implementation of the application, the meaning of time values is uniform and free of contradictions. Thus effectively there is an ''implementation time scale'' -- but its scope of validity is //strictly limited to the implementation level of a single application instance.// It is never exposed and never persisted. It might not be reproducible over multiple instantiations of the application. The implementation reserves the right to recalibrate this internal scale. Later, when Lumiera gains the capability to run within a network of render nodes, these instance connections will include a negotiation about the internal time scale, which remains completely opaque to the outer world. This explains, why {{{lumiera::Time}}} instances lack the ability to show their time value beyond debugging purposes. This is to avoid confusion and to stress their opaque nature.
+;wall clock and system time
+:The core property of any external real world time is that it is //running// -- we have to synchronise to an external time source.
+:This implies the presence of a //running synchronisation process,// with the authority to adjust the time base;
+:contrast this to the internal time, which is static and unconnected -- 
+;quantised time
+:The ''act of quantisation'' transforms a continuous property into a ''discrete'' structure. Prominent examples can be found in the domain of micro physics and with digital information processing. In a broader sense, any measurement or //quantification// also encompasses a quantisation. Regarding time and time measurement, quantisation means alignment to a predefined ''time grid''. Quantisation necessarily is an //irreversible process// -- possible additional informations get discarded.
+:Note that quantisation introduces an ''time origin'' and a ''reference scale''
+;frame count
+:within the context of film and media editing, the specification of a ''frame number'' is an especially important instance of quantisation.
+:all the properties of quantisation apply indeed to this special case: it is a time measurement or specification, where the values are aligned to a grid, and there is a reference time point where the counting starts (origin) and a reference scale (frames per second). Handling of quantised time values in Lumiera is defined such as to ensure the presence of all those bits of information. Without such precautions, operating with bare frame numbers leads itself to all kinds of confusions, mismatches, quantisation errors and unnecessary limitations of functionality.
+;timecode
+:Quantisation also is the foundation of all kinds of formalised time specifications
+:actually even a frame count is some kind of (informal) timecode -- other timecodes employ a standardised format.
+://every// presentation of time values and every persistent storage and exchange of such values is based on time codes.
+:but quantisation and time code aren't identical: a given quantised time value typically can be cast into multiple timecode formats.
+
+!Patterns for handling quantised time
+When it comes to actually handling quantised time values, several patterns are conceivable for dealing with the quantisation operation and representing quantised data. As guideline for judging these patterns, the general properties of time quantisation, as detailed above, should be taken into account. Quantising a time value means both //discarding information,// while at the same time //adding information// pertaining the assumptions of the context.
+
+__casual handling__: this is rather an frequently encountered ''anti pattern''. When reading such code, most striking is the sense of general unawareness of the problem, which is then "discovered" on a per case base, which leads to numerous repetitions of the same basic undertakings, but done with individual treatment of each instance (not so much copy-n-paste). Typical code smells:
+* the rounding, modulo and subtract-base operations pertinent with scale handling are seemingly inserted as bugfix
+* local code path forks to circumvent or compensate for otherwise hard wired calculations based on specific ways to invoke a function
+* playing strikingly clever tricks or employing heuristics to "figure out" the missing scale information from accessible context after the fact
+* advertising support for some of the conceivable cases as special feature, or adding it as plugin or extension module with limited scope
+* linking parts of the necessary additional information to completely unrelated other structures, thus causing code tangling and scattering
+* result or behaviour of calculations depends on the way things are set up in a seemingly contingent way, forcing users to stick to very specific procedures and ordered steps.
+[>img[Time and Time Quantisation in Lumiera|uml/fig142725.png]]
+__static typing__: an analysis of the cases to be expected establishes common patterns and some base cases, which are then represented by distinct types with well established conversions. This can be combined with generic programming for the common parts. Close to the data input, a factory establishes these statically typed values.
+
+__tagged values__: quantised values are explicitly created out of continuous values by a quantiser entity. These quantised data values contain a copy of the original data, adjusted to be exactly aligned with respect to the underlying time grid. In addition, they carry a tag or ID to denote the respective scale, grid or timecode system. This tag can be used later on to assess compatibility or to recast values into another timecode system.
+
+__delayed quantisation__: with this approach, the information loss is delayed as long as possible. Quantised time values are rather treated as promise for quantisation, while the actual time data remains unaltered. Additionally, they carry a tag, or even a direct link to the responsible quantiser instance. Effectively, these are specialised time values, instances of a sub-concept, able to stand-in for general time values, but exposing additional accessors to get a quantised value.
+
+!!!discussion
+For Lumiera, the static typing approach is of limited value -- it excels when values belonging to different scales are actually treated differently. There are such cases, but rather on the data handling level, e.g. sound samples are always handled block wise. But regarding time values, the unifying aspect is more important, which leads to prefering a dynamic (run time typed) approach, while //erasing// the special differences most of the time. Yet the dynamic and open nature of the Lumiera high-level model favours the delayed quantisation pattern; the same values may require different quantisation depending on the larger model context an object is encountered in. This solution might be to general and heavy weight at times though. Thus, for important special cases, the accessors should return tagged values, preferably even with differing static type. Time codes can be integrated this way, but most notably the ''frame numbers'' used for addressing throughout the backend, can be implemented as such specifically typed tagged values; the tag here denotes the quantiser and thus the underlying grid -- it should be implemented as hash-ID for smooth integration with code written in plain C.
+
+
Timeline is the top level element within the [[Session (Project)|Session]]. It is visible within a //timeline view// in the GUI and represents the effective (resulting) arrangement of media objects, to be rendered for output or viewed in a Monitor (viewer window). A timeline is comprised of:
 * a time axis in abolute time ({{red{WIP 1/10}}}: not clear if this is an entity or just a conceptual definition)