From 82e9519e731304a670a1854de430d7a3b24e1dc1 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 27 Sep 2007 04:45:06 +0200 Subject: [PATCH] WIP specify some details of the session interface and the relation of session and EDL --- doc/devel/uml/class128005.html | 9 ++- doc/devel/uml/class138501.html | 2 +- doc/devel/uml/class138629.html | 2 +- doc/devel/uml/class138757.html | 2 +- doc/devel/uml/class138885.html | 2 +- doc/devel/uml/class139013.html | 2 +- doc/devel/uml/class139141.html | 2 +- doc/devel/uml/class139269.html | 2 +- doc/devel/uml/class139525.html | 2 +- doc/devel/uml/class139653.html | 26 +++++++ doc/devel/uml/classes.html | 11 +-- doc/devel/uml/classes_list.html | 3 +- doc/devel/uml/fig128133.png | Bin 56590 -> 58926 bytes doc/devel/uml/index.html | 49 +++++++++--- doc/devel/uml/index_60.html | 2 +- doc/devel/uml/index_65.html | 4 +- doc/devel/uml/index_66.html | 3 +- doc/devel/uml/index_67.html | 25 +++--- doc/devel/uml/index_69.html | 4 +- doc/devel/uml/index_70.html | 4 +- doc/devel/uml/index_71.html | 1 + doc/devel/uml/index_73.html | 2 +- doc/devel/uml/index_77.html | 3 +- doc/devel/uml/index_79.html | 2 +- doc/devel/uml/index_80.html | 3 +- doc/devel/uml/index_82.html | 2 +- doc/devel/uml/index_83.html | 11 ++- doc/devel/uml/index_84.html | 8 +- doc/devel/uml/index_86.html | 12 +-- doc/devel/uml/public_operations.html | 2 + src/common/time.hpp | 12 ++- src/common/util.hpp | 2 +- src/proc/asset/media.hpp | 3 +- src/proc/mobject/mobject.hpp | 5 ++ src/proc/mobject/placement.hpp | 38 ++++++++++ src/proc/mobject/session/session.cpp | 19 ++++- src/proc/mobject/session/session.hpp | 29 ++++++- src/proc/mobject/session/sessionimpl.cpp | 40 ++++++++++ src/proc/mobject/session/sessionimpl.hpp | 65 ++++++++++++++++ .../proc/mobject/session/addcliptest.cpp | 4 +- .../proc/mobject/session/testclip.hpp | 3 +- uml/cinelerra3/128133.diagram | 20 +++-- uml/cinelerra3/128261 | 71 ++++++++++++++++-- uml/cinelerra3/130181 | 41 +++++++++- uml/cinelerra3/130437 | 8 +- uml/cinelerra3/5.session | 6 +- uml/cinelerra3/cinelerra3.prj | 2 +- wiki/renderengine.html | 17 +++-- 48 files changed, 485 insertions(+), 102 deletions(-) create mode 100644 doc/devel/uml/class139653.html create mode 100644 src/proc/mobject/session/sessionimpl.cpp create mode 100644 src/proc/mobject/session/sessionimpl.hpp diff --git a/doc/devel/uml/class128005.html b/doc/devel/uml/class128005.html index 9ee1b55a0..fabe77cf9 100644 --- a/doc/devel/uml/class128005.html +++ b/doc/devel/uml/class128005.html @@ -4,21 +4,22 @@ -Class Session +Class SessionImpl -
Class Session
+
Class SessionImpl

-

Declaration :

Artifact : session, Component(s) : Session

+

Declaration :

Implementation class for the Session interface

Artifact : sessionimpl, Component(s) : Session

-
Relation edls (<directional aggregation>)

Declaration :

  • Uml : # edls : EDL, multiplicity : 1..*
  • C++ : protected: EDL * edls
+
Relation edls (<directional aggregation by value>)

Declaration :

  • Uml : # edls : EDL, multiplicity : 1..*
  • C++ : protected: <EDL> edls
Relation fixture (<unidirectional association>)

Declaration :

  • Uml : # fixture : Fixture, multiplicity : 1
  • C++ : protected: Fixture * fixture
+

All public operations : currEDL , getFixture

diff --git a/doc/devel/uml/class138501.html b/doc/devel/uml/class138501.html index 03c3ffaa4..fd0b56e89 100644 --- a/doc/devel/uml/class138501.html +++ b/doc/devel/uml/class138501.html @@ -16,7 +16,7 @@ -

Declaration :

compound of several elementary media tracks,
e.g. the individual media streams found in one media file

+

Declaration :

  • C++ : class CompoundMedia : public Media

compound of several elementary media tracks,
e.g. the individual media streams found in one media file

Artifact : compoundmedia

Relation tracks (<directional aggregation>)

Declaration :

  • Uml : # tracks : Media, multiplicity : 1..*
  • C++ : protected: vector<Media *> tracks

elementary media assets comprising this compound

All public operations : createClip , enable , getDependant , getParents , howtoProc , isActive

diff --git a/doc/devel/uml/class138629.html b/doc/devel/uml/class138629.html index e8d6b1276..9bc8209f7 100644 --- a/doc/devel/uml/class138629.html +++ b/doc/devel/uml/class138629.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class CompoundClip : public Clip

Diagram : Session structure

+

Declaration :

  • C++ : class CompoundClip : public Clip

Clip MObject which is actually a compound of several elementary clips,
e.g. the several streams found within multichannels media.

Artifact : compoundclip, Diagram : Session structure

Relation components (<directional aggregation>)

Declaration :

  • Uml : # components : Clip, multiplicity : 1..*
  • C++ : protected: Clip* components

All public operations : apply

diff --git a/doc/devel/uml/class138757.html b/doc/devel/uml/class138757.html index 532214425..d4594382d 100644 --- a/doc/devel/uml/class138757.html +++ b/doc/devel/uml/class138757.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class ProcPatt : public Struct
+

Declaration :

  • C++ : class ProcPatt : public Struct

special type of structural Asset representing information how to build some part of the render engine's processing nodes network.

Artifact : procpatt

Relation instructions (<directional aggregation by value>)

Declaration :

All public operations : enable , getDependant , getParents , isActive

diff --git a/doc/devel/uml/class138885.html b/doc/devel/uml/class138885.html index 598ee1c5b..987c50371 100644 --- a/doc/devel/uml/class138885.html +++ b/doc/devel/uml/class138885.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class SimpleClip : public Clip
+

Declaration :

  • C++ : class SimpleClip : public Clip

Elementary clip consisting of only one media stream

Artifact : simpleclip

All public operations : apply

diff --git a/doc/devel/uml/class139013.html b/doc/devel/uml/class139013.html index 911e23339..9c8b83182 100644 --- a/doc/devel/uml/class139013.html +++ b/doc/devel/uml/class139013.html @@ -17,5 +17,5 @@

Declaration :

  • C++ : class BuildInstruct

Directly inherited by : DoAttach DoRecurse

- +

(Interface) building instructions to be executed by the Builder on the render node network under construction.

Artifact : buildinstruct

diff --git a/doc/devel/uml/class139141.html b/doc/devel/uml/class139141.html index 1a1d63db8..e1b79bcb6 100644 --- a/doc/devel/uml/class139141.html +++ b/doc/devel/uml/class139141.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Artifact : buildinstruct

Relation nodes (<directional aggregation>)

Declaration :

  • Uml : + nodes : Proc, multiplicity : 1..*
  • C++ : public: const Proc* nodes
Attribut point
diff --git a/doc/devel/uml/class139269.html b/doc/devel/uml/class139269.html index 3e1dd987b..4ec293ab8 100644 --- a/doc/devel/uml/class139269.html +++ b/doc/devel/uml/class139269.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Artifact : buildinstruct

Relation subPattern (<unidirectional association>)

Declaration :

  • Uml : # subPattern : ProcPatt, multiplicity : 1
  • C++ : protected: const ProcPatt* subPattern
diff --git a/doc/devel/uml/class139525.html b/doc/devel/uml/class139525.html index e5acd9bec..603d8d16b 100644 --- a/doc/devel/uml/class139525.html +++ b/doc/devel/uml/class139525.html @@ -16,5 +16,5 @@ -

Declaration :

  • C++ : class MediaAccessFacade

provides functions for querying (opening) a media file, detecting the channels or streams found within this file, etc. Delegating to the actual backend functions

Component(s) : Media Access

+

Declaration :

  • C++ : class MediaAccessFacade

provides functions for querying (opening) a media file, detecting the channels or streams found within this file, etc. Delegating to the actual backend functions

Artifact : mediaaccessfacade, Component(s) : Media Access

diff --git a/doc/devel/uml/class139653.html b/doc/devel/uml/class139653.html new file mode 100644 index 000000000..d23ad4ec8 --- /dev/null +++ b/doc/devel/uml/class139653.html @@ -0,0 +1,26 @@ + + + + + + +Class Session + + + + + +
Class Session
+

+ + + + +

Declaration :

  • C++ : class Session

Directly inherited by : SessionImpl

+

Primary Interface for all editing tasks.
The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.

Artifact : session

+ +
Operation currEDL

Declaration :

  • Uml : + currEDL() : EDL
  • C++ : public: EDL currEDL ()

The EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands.

+
Operation getFixture

Declaration :

  • Uml : + getFixture() : Fixture&
  • C++ : public: Fixture& getFixture ()

While the session can be comprised of several EDLs,
there is only one Fixture, which represents the actual
configuration of all Objects to be rendered

+

All public operations : currEDL , getFixture

+ + diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index a34ff3876..f3008a1a0 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -27,13 +27,13 @@ AutoAutomation data for some parameter (i.e. a time varying function) Buildableinterface BuilderFacadeboundaryProvides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade -BuildInstruct +BuildInstruct(Interface) building instructions to be executed by the Builder on the render node network under construction. Categorytree like classification of Assets Clipbookkeeping (asset) view of a media clip. Clip Codecdescription of some media data decoder or encoder facility CodecAdapter -CompoundClip +CompoundClipClip MObject which is actually a compound of several elementary clips,
e.g. the several streams found within multichannels media. CompoundMediacompound of several elementary media tracks,
e.g. the individual media streams found in one media file ConditionI provided a reworked Condition class in my cinelerra2 repository Config @@ -96,7 +96,7 @@ Prockey abstraction: data processing asset Processor ProcNodeinterfaceKey abstraction of the Render Engine: A Data processing Node -ProcPatt +ProcPattspecial type of structural Asset representing information how to build some part of the render engine's processing nodes network. ProjectorSpecial video processing node used to scale and translate image data. RelativePlacement RelTypeenumthe possible kinds of RelativePlacements @@ -105,8 +105,9 @@ Scheduler Segment SegmentationToolTool 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. -Session -SimpleClip +SessionPrimary Interface for all editing tasks.
The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered. +SessionImplImplementation class for the Session interface +SimpleClipElementary clip consisting of only one media stream SmartPointerauxiliary SourceSource Node: represents a media source to pull data from. State diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index b394be64d..a97c2af5b 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -106,7 +106,8 @@ Scheduler
Segment
SegmentationTool
-Session
+Session
+SessionImpl
SimpleClip
SmartPointer
Source
diff --git a/doc/devel/uml/fig128133.png b/doc/devel/uml/fig128133.png index 1b1f3347e6dbee4efc05749f87e7946ffb41a85b..68a34623f63b00be7bc271533b1b0141171a545e 100644 GIT binary patch literal 58926 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 z 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 G{Qm&({Nb_y literal 56590 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 diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index 6e665f205..fdd9b2654 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -33,10 +33,10 @@ Documentation
Component Builder

provided classes : StateProxy

-

required classes : Fixture, Session

+

required classes : Fixture, SessionImpl

Component Session
-

provided classes : EDL, Fixture, MObject, ParamProvider, Session

+

provided classes : EDL, Fixture, MObject, ParamProvider, SessionImpl

Component EDL
@@ -112,7 +112,7 @@ Documentation
Artifact Cinelerra3

Depends on common

Depends on gui

Depends on proc

Depends on backend

the main executable to be built

-

executable associated with : arender, renderstate, label, glbuf, procnode, stateproxy, hub, buildable, abstractmo, nodecreatertool, projector, interpolator, edl, fixture, glpipe, vrender, exitnode, pathmanager, track, paramprovider, mask, main, conmanager, clip, meta, fixedplacement, relativeplacement, mobject, source, frame, placement, session, builderfacade, toolfactory, controllerfacade, processor, pluginadapter, effect, tool, segmentationtool, aframe, assembler, trafo, explicitplacement, auto, glrender, link, parameter, renderengine, allocation, vframe

+

executable associated with : main, conmanager, clip, meta, fixedplacement, relativeplacement, vrender, mobject, source, frame, placement, sessionimpl, builderfacade, controllerfacade, processor, pluginadapter, effect, tool, segmentationtool, aframe, assembler, trafo, explicitplacement, auto, glrender, link, parameter, renderengine, allocation, vframe, toolfactory, arender, renderstate, label, glbuf, procnode, stateproxy, hub, buildable, abstractmo, nodecreatertool, projector, interpolator, edl, fixture, glpipe, exitnode, pathmanager, track, paramprovider, mask

Artifact main

Artifact source

@@ -150,11 +150,17 @@ Documentation

1.3.3 Package backend

    -
  • C++ namespace : data
  • +
  • C++ namespace : backend_interface

sourcecode package

Data backend classes here...

1.3.3.1 Deployment View gen

+
+ +
Artifact mediaaccessfacade
+

functions for querying media file and channels.

+

Artifact source associated with : MediaAccessFacade

+

1.3.4 Package proc

@@ -225,6 +231,10 @@ Documentation
Artifact clip

bookkeeping (asset) view of a media clip.

Artifact source associated with : Clip

+ +
Artifact compoundmedia
+

a special clip as a compound of several elementary media tracks,
e.g. the individual media streams found in one media file

+

Artifact source associated with : CompoundMedia

Artifact preview

alternative version of the media data, probably with lower resolution

@@ -249,6 +259,14 @@ Documentation
Artifact track

structural asset holding the configuration of a track in the EDL

Artifact source associated with : Track

+ +
Artifact procpatt
+

template for building some render processing network

+

Artifact source associated with : ProcPatt

+ +
Artifact buildinstruct
+

Instructions for building some configuration of render nodes.

+

Artifact source associated with : BuildInstruct, DoRecurse, DoAttach

Artifact db

registry holding known Asset instances.

@@ -265,6 +283,10 @@ Documentation

1.3.4.3.1 Deployment View gen

defines source files to be generated by BOUML

+ +
Artifact session
+

Interface: the session edited by the user

+

Artifact source associated with : Session

Artifact mobject

Key Abstraction: A Media Object in the Session

@@ -309,9 +331,9 @@ Documentation

defines source files to be generated by BOUML

-
Artifact session
-

holds the complete session to be edited by the user

-

Artifact source associated with : Session

+
Artifact sessionimpl
+

holds the complete session data to be edited by the user

+

Artifact source associated with : SessionImpl

Artifact edl

the (high level) Edit Decision List within the current Session

@@ -336,6 +358,14 @@ Documentation
Artifact clip

a Media Clip

Artifact source associated with : Clip

+ +
Artifact simpleclip
+

Elementary clip (single media stream only)

+

Artifact source associated with : SimpleClip

+ +
Artifact compoundclip
+

compound of several clips (multichannel)

+

Artifact source associated with : CompoundClip

Artifact effect

EDL representation of a pluggable and automatable effect.

@@ -568,7 +598,6 @@ Documentation
Class ProcPatt
Class Dataset
Class DB
-
Class DoAttach
Class DoRecurse
@@ -583,7 +612,8 @@ Documentation

Session structure



-
Class Session
+
Class Session
+
Class EDL
Class Fixture
Class Segment
@@ -593,6 +623,7 @@ Documentation
Class Clip
+
Class Effect
Class Meta
diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index 4909e634c..0a78be5d0 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -28,8 +28,8 @@ <flow>transition <flow>transition <flow>transition -<flow>transition <flow>transition +<flow>transition <flow>transition <flow>transition <flow>transition diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index 7fc8a769c..28aa29de6 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -49,11 +49,11 @@ Assetsclass view ATTACHattributeattach subject to anchor (e.g. an effect to a clip) au1class instance -aud_aclass instance aud_Aclass instance +aud_aclass instance audioclass instance -audio1class instance audio1class instance +audio1class instance audio1class instance autoartifactMedia Object holding automation data AutoclassAutomation data for some parameter (i.e. a time varying function) diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index 2f6812bb3..5ed3d76c4 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -41,7 +41,8 @@ BuilderFacadeclassProvides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade builderfacadeartifactFacade and service access point for the Builder Subsystem building the Engineactivity -BuildInstructclass +BuildInstructclass(Interface) building instructions to be executed by the Builder on the render node network under construction. +buildinstructartifactInstructions for building some configuration of render nodes. buildProcessoroperation diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index d9c7fd522..b81c28c53 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -27,12 +27,11 @@ checked_outrelationthis list keeps all mappings which are in use, and thus prevents them from Cache aging Cinelerra3artifactthe main executable to be built cinelerra3package -class instanceclass instance -class instanceclass instance -class instanceclass instance class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance +class instanceclass instance class instanceclass instance class instanceclass instance class instanceclass instance @@ -40,14 +39,15 @@ class instanceclass instance class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance Clipclassbookkeeping (asset) view of a media clip. -clipartifactbookkeeping (asset) view of a media clip. clipartifacta Media Clip +clipartifactbookkeeping (asset) view of a media clip. Clipclass clipsrelation Codecclassdescription of some media data decoder or encoder facility @@ -60,8 +60,10 @@ CommonLibpackage complete Render Engineactivity object componentsrelation -CompoundClipclass +compoundclipartifactcompound of several clips (multichannel) +CompoundClipclassClip MObject which is actually a compound of several elementary clips,
e.g. the several streams found within multichannels media. CompoundMediaclasscompound of several elementary media tracks,
e.g. the individual media streams found in one media file +compoundmediaartifacta special clip as a compound of several elementary media tracks,
e.g. the individual media streams found in one media file ConditionclassI provided a reworked Condition class in my cinelerra2 repository Configclass configureoperation @@ -73,8 +75,8 @@ connectopaque activity action Constraintclass Controllercomponent -controllerpackagesourcecode package

The Processing and Render Controller,
located within the MObject Subsystem Controllerpackage +controllerpackagesourcecode package

The Processing and Render Controller,
located within the MObject Subsystem Controller Entitiesclass diagram Controller Workingsclass view ControllerFacadeclassProvides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings. @@ -82,6 +84,7 @@ ControllerFacadecomponent create ProcNodeopaque activity action createClipoperationcreate a (possibly compound) Clip refering to this media, ready to be added to the EDL. +currEDLoperationThe EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands. currFramerelation diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index 0c7bddcba..20380e20a 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -18,14 +18,14 @@ - + - + diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index 14b9fb500..242d89493 100644 --- a/doc/devel/uml/index_70.html +++ b/doc/devel/uml/index_70.html @@ -32,9 +32,9 @@ - - + + diff --git a/doc/devel/uml/index_71.html b/doc/devel/uml/index_71.html index 84b5e66ce..23b81058d 100644 --- a/doc/devel/uml/index_71.html +++ b/doc/devel/uml/index_71.html @@ -35,6 +35,7 @@ + diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index 6bb5ea25f..496421c53 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -20,9 +20,9 @@ - + diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index dac7b6a5a..997d703b9 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -26,13 +26,14 @@ + - + diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index 4902abfdc..b34c12000 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -19,8 +19,8 @@ - + diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 2380ad9ce..d7038cb97 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -52,7 +52,8 @@ - + + diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index 5eb845aba..db5b9dc39 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -22,8 +22,8 @@ - + diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 15423df50..c3a049c32 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -29,19 +29,22 @@ - + - + + + - + + - + diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index b86c2c7b0..686d34aef 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -32,18 +32,18 @@ - + - - - + + + diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index 1a10d10b0..ce992fef4 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -20,23 +20,23 @@ - + + - - + - + + - - +
NameKindDescription
edlartifactthe (high level) Edit Decision List within the current Session
EDLclass
EDLcomponent
EDLclass
EDL Example1object diagramA simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks
EDL Example2object diagramMore 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
edlsrelation
EffectclassEffect or media processing component
effectartifactEffect or media processing component
effectartifactEDL representation of a pluggable and automatable effect.
effectartifactEffect or media processing component
Effectclass
elementsrelationrelevant MObjects comprising this segment. TODO: actually necessary??
enableoperationchange the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well
fixedplacementartifact
Fixtureactivity object
fixtureartifactthe (low level) representation of the EDL with concrete placement data
fixturerelation
Fixtureclass
Fixturecomponent
Fixtureclass
fixturerelation
fork activity nodefork activity node
FrameclassFrames 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.
Framenode
getAutomationoperation
getConnectionoperationTODO
getDependantoperationAll the other assets requiring this asset to be functional. For example, all the clips depending on a given media file. May be empty. The dependency relation is transitive.
getFixtureoperationWhile the session can be comprised of several EDLs,
there is only one Fixture, which represents the actual
configuration of all Objects to be rendered
getFrameoperationmode = READ, WRITE, ...
getIDoperation
getParentsoperationList of entities this asset depends on or requires to be functional. May be empty. The head of this list can be considered the primary prerequisite
idattributeAsset primary key.
In Memory Databaseclass diagram
inFixtureactivity action pin
inputclass instance
inputclass instance
inputclass instance
inputclass instance
instanceoperation
instructionsrelation
Interfaceclass view
mediaartifactkey abstraction: media-like assets
Media Accesscomponent
Media-Asset Relationsclass diagram
mediaaccessfacadeartifactfunctions for querying media file and channels.
MediaAccessFacadeclassprovides functions for querying (opening) a media file, detecting the channels or streams found within this file, etc. Delegating to the actual backend functions
MediaFactorycomponent
MediaFactoryclassspecialized Asset Factory for configuring (new) media asset instances based on existing media files on disk; can create placeholder assets as well
merge activity nodemerge activity node
Metaclasskey abstraction: metadata and organisational asset
metaartifactkey abstraction: metadata and organisational asset
metaartifactabstract base class of all MObjects representing meta data or processing instructions
metaartifactkey abstraction: metadata and organisational asset
Metaclass
mobjectartifactKey Abstraction: A Media Object in the Session
mobjectpackagesourcecode package

MObject Subsystem
including the Session (EDL), Builder and Processing Controller
NameKindDescription
offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation?
orgattributeorigin or authorship id. Can be a project abbreviation, a package id or just the authors nickname or UID. This allows for the compnent name to be more generic (e.g. "blur"). Default for all assets provided by the core cinelerra-3 codebase is "cin3".
ouputclass instance
ouputclass instance
ouputclass instance
ouputclass instance
OutPortclassstructural asset corresponding to some port generating media output
outportartifactstructural asset corresponding to some port generating media output
ProcNodecomponent
ProcNodeclassKey abstraction of the Render Engine: A Data processing Node
procnodeartifactKey abstraction of the Render Engine: a Processing Node
ProcPattclass
ProcPattclassspecial type of structural Asset representing information how to build some part of the render engine's processing nodes network.
procpattartifacttemplate for building some render processing network
ProjectorclassSpecial video processing node used to scale and translate image data.
projectorartifactvideo ProcNode for scaling and translating image data
providerrelation
registryrelation@internal Table or DB holding all registered asset instances.
relativeplacementartifactPlacement implemnetaion providing various ways of attaching a MObject to another one
RelativePlacementclass
RelTypeclassthe possible kinds of RelativePlacements
relTypeattributethe kind of relation denoted by this Placement
RelTypeclassthe possible kinds of RelativePlacements
removeoperationremove the given asset <i>together with all its dependants</i> from the internal DB
Render Entitiesclass diagram
Render Requestactivity parameter
segmentsrelationthe partitioning of the Timeline to be created by this tool.
Service Componentsclass view
Sessioncomponent
sessionartifactholds the complete session to be edited by the user
sessionartifactInterface: the session edited by the user
sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem
Sessionclass view
Sessionclass
SessionclassPrimary Interface for all editing tasks.
The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.
Session structureclass diagram
sessionimplartifactholds the complete session data to be edited by the user
SessionImplclassImplementation class for the Session interface
setup Build Paramsopaque activity action
setup StateProxyopaque activity action
shortDescattributeuser visible Name-ID. To be localized.
SimpleClipclass
simpleclipartifactElementary clip (single media stream only)
SimpleClipclassElementary clip consisting of only one media stream
SmartPointerclass
SmartPointersclass view
sourcerelationthe media source this clip referes to
sourcerelationmedia source of this clip
sourcerelationthe media source this clip referes to
SourceclassSource Node: represents a media source to pull data from.
sourceartifactRepresentation of a Media source
Source Overviewdeployment diagram
toolfactoryartifactsupply of Tool implementations for the Builder
Trackclassstructural asset holding the configuration of a track in the EDL
trackattribute
trackartifactstructural asset holding the configuration of a track in the EDL
trackartifactdescriptor for one track in the Session
trackartifactstructural asset holding the configuration of a track in the EDL
Trackclass
tracksrelationelementary media assets comprising this compound
tracksrelation
tracksrelation
Trafoclass
trafoartifacttransforming processing Node
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
versionattributeversion number of the thing or concept represented by this asset. Of each unique tuple (name, category, org) there will be only one version in the whole system. Version 0 is reserved for internal purposes. Versions are considered to be ordered, and any higher version is supposed to be fully backwards compatible to all previous versions.
VFrameclass
vframeartifacta buffer and render process holding a Video frame
vid1class instance
vid1class instance
vid1class instance
vid_Aclass instance
vid_Aclass instance
vid_aclass instance
vid_Aclass instance
vid_aclass instance
vid_Aclass instance
videoclass instance
videoclass instance
videoclass instance
videoclass instance
videoclass instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
video1class instance
VRenderclassRepresentation of a Video render process. (Encapsulates the video buffers for the actual calculations)
vrenderartifactRepresentation of a Video render process
diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index 728368c81..ed11e213b 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -23,6 +23,7 @@ buildProcessorPathManager configureToolFactory createClipMediacreate a (possibly compound) Clip refering to this media, ready to be added to the EDL. +currEDLSessionThe EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands. enableAssetchange the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well getAppconfigaccess the configuation value for a given key.
@return empty string for unknown keys, else the corresponding configuration value get_reprAllocation @@ -30,6 +31,7 @@ getAutomationFixture getConnectionConManagerTODO getDependantAssetAll the other assets requiring this asset to be functional. For example, all the clips depending on a given media file. May be empty. The dependency relation is transitive. +getFixtureSessionWhile the session can be comprised of several EDLs,
there is only one Fixture, which represents the actual
configuration of all Objects to be rendered getFrameFilemode = READ, WRITE, ... getIDAssetManager getParentsAssetList of entities this asset depends on or requires to be functional. May be empty. The head of this list can be considered the primary prerequisite diff --git a/src/common/time.hpp b/src/common/time.hpp index 3b8db7cfb..e434d27ed 100644 --- a/src/common/time.hpp +++ b/src/common/time.hpp @@ -33,10 +33,18 @@ namespace cinelerra /** * denotes a temporal position (time point), based on timeline start. * - * investigate posix.4 realtime timers, wrap these here + * @todo currently (9/07) this is a dummy implementation to find out + * what interface the Proc layer needs. Cehteh has already written + * elaborate timehandling functions in the backend and the goal + * is for class Time to be just a thin wrapper! */ class Time - {}; + { + int dummy; + public: + Time(int dum=0) : dummy(dum) {} + operator int () { return dummy; } + }; } // namespace cinelerra #endif diff --git a/src/common/util.hpp b/src/common/util.hpp index 0b8d03e56..3d74d4ed8 100644 --- a/src/common/util.hpp +++ b/src/common/util.hpp @@ -98,7 +98,7 @@ namespace util inline bool contains (SEQ& cont, typename SEQ::value_type& val) { - SEQ::iterator end = cont.end(); + typename SEQ::iterator end = cont.end(); return end != std::find(cont.begin(),end, val); } diff --git a/src/proc/asset/media.hpp b/src/proc/asset/media.hpp index d5593c514..8349e1d69 100644 --- a/src/proc/asset/media.hpp +++ b/src/proc/asset/media.hpp @@ -40,7 +40,7 @@ -class mobject::session::Clip; +namespace mobject { namespace session { class Clip; }} namespace asset { @@ -48,6 +48,7 @@ namespace asset class Clip; class Media; class MediaFactory; + class ProcPatt; template<> diff --git a/src/proc/mobject/mobject.hpp b/src/proc/mobject/mobject.hpp index 02a3345bc..a91dbe179 100644 --- a/src/proc/mobject/mobject.hpp +++ b/src/proc/mobject/mobject.hpp @@ -25,12 +25,14 @@ #define MOBJECT_MOBJECT_H #include +#include #include "cinelerra.h" #include "proc/mobject/buildable.hpp" using std::list; +using std::tr1::shared_ptr; namespace mobject @@ -56,6 +58,9 @@ namespace mobject list placement; }; + + + typedef shared_ptr PMO; diff --git a/src/proc/mobject/placement.hpp b/src/proc/mobject/placement.hpp index c486c9573..726379ffb 100644 --- a/src/proc/mobject/placement.hpp +++ b/src/proc/mobject/placement.hpp @@ -24,6 +24,8 @@ #ifndef MOBJECT_PLACEMENT_H #define MOBJECT_PLACEMENT_H +#include "common/time.hpp" +#include "common/factory.hpp" #include "proc/mobject/mobject.hpp" #include "proc/mobject/session/track.hpp" @@ -32,7 +34,9 @@ namespace mobject { + class Placement; class ExplicitPlacement; + class PlacementFactory; class Placement @@ -45,10 +49,44 @@ namespace mobject public: + /** + * styles of placement. + */ + enum Style + { + FIXED, + RELATIVE + }; + + static PlacementFactory create; + /** resolve the network of placement and * provide the resulting (explicit) placement. */ ExplicitPlacement& resolve () ; + + protected: + Placement (); + friend class PlacementFactory; + }; + + + typedef shared_ptr PPla; + + + + + /** + * Factory specialized for creating Media Asset objects. + */ + class PlacementFactory : public cinelerra::Factory + { + public: + typedef shared_ptr PType; + typedef cinelerra::Time Time; + + PType operator() (Placement::Style, Time, PMO subject); + }; diff --git a/src/proc/mobject/session/session.cpp b/src/proc/mobject/session/session.cpp index 1bb585d3e..e926c72ad 100644 --- a/src/proc/mobject/session/session.cpp +++ b/src/proc/mobject/session/session.cpp @@ -25,12 +25,29 @@ #include "proc/mobject/session/edl.hpp" #include "proc/mobject/session/fixture.hpp" + +using cinelerra::Singleton; + namespace mobject { namespace session { - /** */ + /** @return the system-wide current session. + * Implemented as singleton. + */ + Singleton Session::getCurrent; + + + + /** create a new empty session with default values. + */ + Session::Session () + : edl(), + fixture() + { + + } diff --git a/src/proc/mobject/session/session.hpp b/src/proc/mobject/session/session.hpp index e63730eb0..f17ea1b00 100644 --- a/src/proc/mobject/session/session.hpp +++ b/src/proc/mobject/session/session.hpp @@ -24,6 +24,11 @@ #ifndef MOBJECT_SESSION_SESSION_H #define MOBJECT_SESSION_SESSION_H +#include "common/singleton.hpp" +#include "proc/mobject/placement.hpp" + +#include + namespace mobject @@ -41,12 +46,30 @@ namespace mobject * perspective, it is a collection of Media Objects * (--> MObject) placed (--> Placement) onto virtual * Tracks. + * + * Opening a Session has effectively global consequences, + * because the Session defines the available Assets, and some + * kinds of Assets define default behaviour. Thus, access to + * the Session is similar to a Singleton instance. + * */ - class Session + class Session : private boost::noncopyable { protected: - EDL& edl; - Fixture& fixture; + vector edls; + Fixture fixture; + + Session (); + friend class cinelerra::singleton::StaticCreate; //TODO use PImpl or just covariance?? + + public: + static cinelerra::Singleton getCurrent; + + void add (PPla placement); + + + EDL& currEDL () { return edl; } + Fixture& getFixture () { return fixture; } }; diff --git a/src/proc/mobject/session/sessionimpl.cpp b/src/proc/mobject/session/sessionimpl.cpp new file mode 100644 index 000000000..d8a946002 --- /dev/null +++ b/src/proc/mobject/session/sessionimpl.cpp @@ -0,0 +1,40 @@ +/* + SessionImpl - holds the complete session data to be edited by the user + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/sessionimpl.hpp" +#include "proc/mobject/session/edl.hpp" +#include "proc/mobject/session/fixture.hpp" + +namespace mobject + { + + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/sessionimpl.hpp b/src/proc/mobject/session/sessionimpl.hpp new file mode 100644 index 000000000..5f4aedb1c --- /dev/null +++ b/src/proc/mobject/session/sessionimpl.hpp @@ -0,0 +1,65 @@ +/* + SESSIONIMPL.hpp - holds the complete session data to be edited by the user + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_SESSIONIMPL_H +#define MOBJECT_SESSION_SESSIONIMPL_H + +#include "proc/mobject/session/session.hpp" +#include "proc/mobject/session/edl.hpp" +#include "proc/mobject/session/fixture.hpp" + +#include + +using std::vector; + + + +namespace mobject + { + namespace session + { + + + /** + * Implementation class for the Session interface + */ + class SessionImpl : public mobject::Session + { + protected: + vector edls; + Fixture fixture; + + SessionImpl (); + friend class cinelerra::singleton::StaticCreate; + + void add (PPla placement); + + EDL& currEDL () { return edl; } + Fixture& getFixture () { return fixture; } + + }; + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/tests/components/proc/mobject/session/addcliptest.cpp b/tests/components/proc/mobject/session/addcliptest.cpp index 610e37445..6d2d0c7f0 100644 --- a/tests/components/proc/mobject/session/addcliptest.cpp +++ b/tests/components/proc/mobject/session/addcliptest.cpp @@ -24,12 +24,14 @@ #include "common/test/run.hpp" #include "proc/mobject/session/session.hpp" #include "proc/mobject/session/testclip.hpp" +#include "proc/mobject/placement.hpp" #include "common/util.hpp" //#include #include //using boost::format; +using cinelerra::Time; using util::contains; using std::string; using std::cout; @@ -56,7 +58,7 @@ namespace mobject { Session& sess = Session::getCurrent(); PMO clip = TestClip::create(); - PPla pla = Placement::create(FIXED, Time(1), clip); + PPla pla = Placement::create(Placement::FIXED, Time(1), clip); sess.add (pla); ASSERT (contains (sess.getEDL(), pla)); diff --git a/tests/components/proc/mobject/session/testclip.hpp b/tests/components/proc/mobject/session/testclip.hpp index f9edae2a5..3128a623d 100644 --- a/tests/components/proc/mobject/session/testclip.hpp +++ b/tests/components/proc/mobject/session/testclip.hpp @@ -26,12 +26,13 @@ #include "common/test/run.hpp" -//#include "common/factory.hpp" +#include "common/factory.hpp" //#include "common/util.hpp" //#include #include +using std::tr1::shared_ptr; //using boost::format; using std::string; using std::cout; diff --git a/uml/cinelerra3/128133.diagram b/uml/cinelerra3/128133.diagram index 037598822..e37cd05e9 100644 --- a/uml/cinelerra3/128133.diagram +++ b/uml/cinelerra3/128133.diagram @@ -1,8 +1,8 @@ format 40 -classcanvas 128005 class_ref 128005 // Session +classcanvas 128005 class_ref 128005 // SessionImpl 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 30 608 2000 + xyz 19 606 2000 end classcanvas 128133 class_ref 128133 // EDL 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 @@ -38,7 +38,7 @@ classcanvas 131461 class_ref 128901 // Clip end classcanvas 131717 class_ref 129029 // Effect 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 336 361 2000 + xyz 332 361 2000 end classcanvas 131973 class_ref 129157 // Meta 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 @@ -92,10 +92,14 @@ classcanvas 138629 class_ref 135173 // Segment end classcanvas 139013 class_ref 138629 // CompoundClip 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 266 466 2000 + xyz 272 466 2000 end -relationcanvas 128389 relation_ref 128005 // - from ref 128005 z 1999 stereotype "<>" xyz 139 626 3000 to ref 128133 +classcanvas 139269 class_ref 139653 // Session + 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 23 458 2000 + end +relationcanvas 128389 relation_ref 128005 // + from ref 128005 z 1999 to ref 128133 role_a_pos 201 603 3000 no_role_b multiplicity_a_pos 205 636 3000 no_multiplicity_b relationcanvas 128517 relation_ref 128133 // @@ -210,4 +214,8 @@ relationcanvas 139141 relation_ref 140805 // from ref 139013 z 1999 to ref 131461 no_role_a no_role_b no_multiplicity_a no_multiplicity_b +relationcanvas 139525 relation_ref 142725 // + from ref 128005 z 1999 stereotype "<>" xyz 57 558 3000 to ref 139269 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b end diff --git a/uml/cinelerra3/128261 b/uml/cinelerra3/128261 index 5addfc8e9..528bee399 100644 --- a/uml/cinelerra3/128261 +++ b/uml/cinelerra3/128261 @@ -1,6 +1,6 @@ format 40 "MObject" // ProcessingLayer::MObject - revision 20 + revision 21 modified_by 5 "hiv" // class settings //class diagram settings @@ -48,7 +48,55 @@ format 40 size A4 end - class 128005 "Session" + class 139653 "Session" + abstract visibility public + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "Primary Interface for all editing tasks. +The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered." + operation 133509 "currEDL" + public return_type class_ref 128133 // EDL + nparams 0 + 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} +} + +" + + + comment "The EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands." + end + + operation 133637 "getFixture" + public explicit_return_type "Fixture&" + nparams 0 + 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} +} + +" + + + comment "While the session can be comprised of several EDLs, +there is only one Fixture, which represents the actual +configuration of all Objects to be rendered" + end + end + + class 128005 "SessionImpl" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -59,13 +107,13 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 128005 // edls () - relation 128005 o--> - stereotype "list" + comment "Implementation class for the Session interface" + classrelation 128005 // edls () + relation 128005 *--> a role_name "edls" multiplicity "1..*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; " - classrelation_ref 128005 // edls () + classrelation_ref 128005 // edls () b multiplicity "" parent class_ref 128133 // EDL end @@ -77,6 +125,15 @@ ${inlines} classrelation_ref 128261 // fixture () b multiplicity "" parent class_ref 128261 // Fixture end + + classrelation 144645 // + relation 142725 -_-|> + stereotype "PImpl" + a public + cpp default "${type}" + classrelation_ref 144645 // + b multiplicity "" parent class_ref 139653 // Session + end end class 128133 "EDL" diff --git a/uml/cinelerra3/130181 b/uml/cinelerra3/130181 index 0bb6e6de6..2204811cd 100644 --- a/uml/cinelerra3/130181 +++ b/uml/cinelerra3/130181 @@ -1,6 +1,6 @@ format 40 "mobject" // design::codegen::proc::mobject - revision 7 + revision 8 modified_by 5 "hiv" // class settings //class diagram settings @@ -39,6 +39,45 @@ including the Session (EDL), Builder and Processing Controller" package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default draw_component_as_icon default show_component_req_prov default show_component_rea default comment "defines source files to be generated by BOUML" + artifact 138757 "session" + stereotype "source" + cpp_h "/* + ${NAME}.hpp - ${description} +@{CopyrightClaim}@{GPLHeader} +*/ + + +#ifndef ${NAMESPACE}_${NAME}_H +#define ${NAMESPACE}_${NAME}_H + +${includes} +${declarations} + + +${namespace_start} + +${definition} +${namespace_end} +#endif +" + cpp_src "/* + ${Name} - ${description} +@{CopyrightClaim}@{GPLHeader} +* *****************************************************/ + + +${includes} +${namespace_start} + + +${members} +${namespace_end}" + associated_classes + class_ref 139653 // Session + end + comment "Interface: the session edited by the user" + end + artifact 128261 "mobject" stereotype "source" cpp_h "/* diff --git a/uml/cinelerra3/130437 b/uml/cinelerra3/130437 index 734633b1d..e5790e68f 100644 --- a/uml/cinelerra3/130437 +++ b/uml/cinelerra3/130437 @@ -1,6 +1,6 @@ format 40 "session" // design::codegen::proc::mobject::session - revision 7 + revision 8 modified_by 5 "hiv" // class settings //class diagram settings @@ -38,7 +38,7 @@ Everything concerning the EDL and Session, within the MObject Subsystem" package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default draw_component_as_icon default show_component_req_prov default show_component_rea default comment "defines source files to be generated by BOUML" - artifact 128517 "session" + artifact 128517 "sessionimpl" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} @@ -72,9 +72,9 @@ ${namespace_start} ${members} ${namespace_end}" associated_classes - class_ref 128005 // Session + class_ref 128005 // SessionImpl end - comment "holds the complete session to be edited by the user" + comment "holds the complete session data to be edited by the user" end artifact 128645 "edl" diff --git a/uml/cinelerra3/5.session b/uml/cinelerra3/5.session index e2727d655..dd61f6409 100644 --- a/uml/cinelerra3/5.session +++ b/uml/cinelerra3/5.session @@ -3,7 +3,7 @@ diagrams classdiagram_ref 130309 // Asset Kinds 860 633 100 4 0 0 active classdiagram_ref 128133 // Session structure - 860 633 100 4 341 0 + 860 633 100 4 581 0 classdiagram_ref 130437 // Media-Asset Relations 860 633 100 4 0 0 classdiagram_ref 128389 // Render Entities @@ -11,10 +11,10 @@ diagrams end show_stereotypes selected -package_ref 129 // cinelerra3 + package_ref 129 // cinelerra3 open -package_ref 128005 // design + package_ref 128005 // design classview_ref 128901 // Assets classview_ref 128005 // Session classview_ref 129029 // Interface diff --git a/uml/cinelerra3/cinelerra3.prj b/uml/cinelerra3/cinelerra3.prj index cd49f3161..26a25ad00 100644 --- a/uml/cinelerra3/cinelerra3.prj +++ b/uml/cinelerra3/cinelerra3.prj @@ -1,6 +1,6 @@ format 40 "cinelerra3" - revision 29 + revision 30 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 9ddac1a24..90d649411 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -755,12 +755,18 @@ The main tool used to implement this separation is the [[Builder Pattern|http:// Another pertinent theme is to make the basic building blocks simpler, while on the other hand gaining much more flexibility for combining these building blocks. For example we try to unfold any "internal-multi" effects into separate instances (e.g. the possibility of having an arbitrary number of single masks at any point of the pipeline instead of having one special masking facility encompassing multiple sub-masks. Similarly, we treat the Objects in the EDL in a more uniform manner and gain the possibility to [[place|Placement]] them in various ways.
-
+
''EDL'' is a short-hand for __E__dit __D__ecision __L__ist. The use of this term can be confusing; for the usual meaning see the definition in [[Wikipedia|http://en.wikipedia.org/wiki/Edit_decision_list]]
 
 Cinelerra uses this term in a related manner but with a somewhat shifted focus (and we just stick to this usage here): In Cinelerra the EDL is comprised of the whole set of clips and other media objects parametrized and placed onto the tracks by the user. It is the result of the user's //editing efforts.//
 
-In this usage, the EDL is almost synonymous to the ''Session'', just the latter emphasizes more the state aspect, as it can be thought as a current state of the EDL contained in a file or data structure together with additional Option values and settings for the GUI. The Session is what you save and load, while the EDL rather denotes a structure of Objects placed in time.
+In this usage, the EDL in most cases will be almost synonymous to the ''Session'', just the latter emphasizes more the state aspect, as it can be thought as the current EDL contents contained in a file or data structure together with additional Option values and settings for the GUI. The Session is what you save and load, while the EDL rather denotes a structured collection of Objects placed in time.
+
+!!!larger projects
+For larger editing projects the simple structure of a session containing "the" timeline is not sufficient. Rather, we have several timelines, e.g. one for each scene. Or we could have several layered or nested timelines (compositional work, multimedia productions). To support these cases without making the default case more complicated, Cinelerra-3 introduces a //focus// for selecting the //current EDL,// which will receive all editing operations.
+
+!!!the definitive state
+With all the structural complexities possible within such a session, we need an isolation layer to provide __one__ definitive state where all configuration has been made explicit. Thus the session manages one special object list, the [[Fixture]], which can be seen as all currently active object placed onto a single timeline.
 
@@ -881,13 +887,14 @@ Some further details * and, as the created smart-pointer is a template parameter, such a custom Functor can create all sorts of Proxies, wrappers and the like
-
+
a specially configured EDL
  * all MObjects have their position, length and configuration set up ready for rendering.
- * all MObjects are associated with a ExplicitPlacement
+ * compound objects (e.g. multichannel clips) have been resolved to single non-compound basic objects.
+ * every MObject is associated with an ExplicitPlacement, which declares a fixed position (Time, Track)
  * this ~ExplicitPlacements are contained in a ordered List called the Timeline
 
-//My intention is to create this Fixture out of the editing operations done by the user//
+As the builder and thus render engine //only consults the fixture,// while all editing operations finally propagate to the fixture as well, we get an isolation layer between the high level part of the Proc layer (editing, object manipulation) and the render engine