diff --git a/doc/devel/uml/class128821.html b/doc/devel/uml/class128821.html index 9468da4e5..26d9d7275 100644 --- a/doc/devel/uml/class128821.html +++ b/doc/devel/uml/class128821.html @@ -25,6 +25,8 @@
Relation <directional aggregation>

Declaration :

Relation descriptor (<directional aggregation>)

Declaration :

Relation <association>

Declaration :

-
Relation mapping (<aggregation>)

Declaration :

+
Relation mapping (<aggregation>)

Declaration :

+
Relation <aggregation>

Declaration :

+
Relation <association>

Declaration :

diff --git a/doc/devel/uml/class128901.html b/doc/devel/uml/class128901.html index ca133c971..554e5a32c 100644 --- a/doc/devel/uml/class128901.html +++ b/doc/devel/uml/class128901.html @@ -19,7 +19,8 @@

Declaration :

Artifact : clip

Attribut start
-

Declaration :

startpos in source

+

Declaration :

startpos in source

+
Relation source (<unidirectional association>)

Declaration :

the media source this clip referes to

All public operations : apply

diff --git a/doc/devel/uml/class129034.html b/doc/devel/uml/class129034.html new file mode 100644 index 000000000..c7fb6e38c --- /dev/null +++ b/doc/devel/uml/class129034.html @@ -0,0 +1,23 @@ + + + + + + +Class WriteBufferPool + + + + + +
Class WriteBufferPool
+

+ + + + +

Declaration :

+ +
Relation <association>

Declaration :

+ + diff --git a/doc/devel/uml/class129162.html b/doc/devel/uml/class129162.html new file mode 100644 index 000000000..00de87cc8 --- /dev/null +++ b/doc/devel/uml/class129162.html @@ -0,0 +1,25 @@ + + + + + + +Class WriteBuffer + + + + + +
Class WriteBuffer
+

+ + + + +

Declaration :

+ +
Relation <aggregation>

Declaration :

+
Relation frame (<association>)

Declaration :

+
Relation <association>

Declaration :

+ + diff --git a/doc/devel/uml/class135301.html b/doc/devel/uml/class135301.html new file mode 100644 index 000000000..178a99fd4 --- /dev/null +++ b/doc/devel/uml/class135301.html @@ -0,0 +1,20 @@ + + + + + + +Class Factory + + + + + +
Class Factory
+

+ + + + +

Declaration :

a template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only.

+ diff --git a/doc/devel/uml/class135429.html b/doc/devel/uml/class135429.html new file mode 100644 index 000000000..93f554a39 --- /dev/null +++ b/doc/devel/uml/class135429.html @@ -0,0 +1,28 @@ + + + + + + +Class Appconfig + + + + + +
Class Appconfig
+

+ + + + +

Declaration :

Singleton to hold inevitable global flags and constants and for performing erarly (static) global initialization tasks.

Artifact : appconfig

+ +
Attribut theApp_
+

Declaration :

holds the single instance and triggers initialization

+
Operation Appconfig

Declaration :

perform initialization on first access.
A call is placed in static initialization code
included in cinelerra.h

+
Operation instance

Declaration :

+
Operation get

Declaration :

access the configuation value for a given key.
@return empty string for unknown keys, else the corresponding configuration value

+

All public operations : get

+ + diff --git a/doc/devel/uml/class135557.html b/doc/devel/uml/class135557.html new file mode 100644 index 000000000..fdcef57fa --- /dev/null +++ b/doc/devel/uml/class135557.html @@ -0,0 +1,28 @@ + + + + + + +Class Error + + + + + +
Class Error
+

+ + + + +

Declaration :

Directly inherited by : Config External Invalid Logic State

+

Artifact : error

+ +
Operation what

Declaration :

+
Operation rootCause

Declaration :

If this exception was caused by a chain of further exceptions,
return the first one registered in this throw sequence.
This works only, if every exceptions thrown as a consequence
of another exception is propperly constructed by passing
the original exception to the constructor

+
Attribut cause
+

Declaration :

a copy of the first exception encountered in this exception chain

+

All public operations : rootCause , what , what

+ + diff --git a/doc/devel/uml/class135685.html b/doc/devel/uml/class135685.html new file mode 100644 index 000000000..8e6b26fbb --- /dev/null +++ b/doc/devel/uml/class135685.html @@ -0,0 +1,23 @@ + + + + + + +Class Logic + + + + + +
Class Logic
+

+ + + + +

Declaration :

Artifact : error

+
+

All public operations : rootCause , what , what

+ + diff --git a/doc/devel/uml/class135813.html b/doc/devel/uml/class135813.html new file mode 100644 index 000000000..1d628a8a0 --- /dev/null +++ b/doc/devel/uml/class135813.html @@ -0,0 +1,23 @@ + + + + + + +Class Config + + + + + +
Class Config
+

+ + + + +

Declaration :

Artifact : error

+
+

All public operations : rootCause , what , what

+ + diff --git a/doc/devel/uml/class135941.html b/doc/devel/uml/class135941.html new file mode 100644 index 000000000..b42424011 --- /dev/null +++ b/doc/devel/uml/class135941.html @@ -0,0 +1,23 @@ + + + + + + +Class State + + + + + +
Class State
+

+ + + + +

Declaration :

Artifact : error

+
+

All public operations : rootCause , what , what

+ + diff --git a/doc/devel/uml/class136069.html b/doc/devel/uml/class136069.html new file mode 100644 index 000000000..7abe96b20 --- /dev/null +++ b/doc/devel/uml/class136069.html @@ -0,0 +1,23 @@ + + + + + + +Class Invalid + + + + + +
Class Invalid
+

+ + + + +

Declaration :

Artifact : error

+
+

All public operations : rootCause , what , what

+ + diff --git a/doc/devel/uml/class136197.html b/doc/devel/uml/class136197.html new file mode 100644 index 000000000..954b2bea1 --- /dev/null +++ b/doc/devel/uml/class136197.html @@ -0,0 +1,23 @@ + + + + + + +Class External + + + + + +
Class External
+

+ + + + +

Declaration :

Artifact : error

+
+

All public operations : rootCause , what , what

+ + diff --git a/doc/devel/uml/class136325.html b/doc/devel/uml/class136325.html new file mode 100644 index 000000000..002984e29 --- /dev/null +++ b/doc/devel/uml/class136325.html @@ -0,0 +1,25 @@ + + + + + + +Class std::exception + + + + + +
Class std::exception
+

+ + + + +

Declaration :

Directly inherited by : Error

+
+ +
Operation what

Declaration :

the base class of all exceptions thrown by the standard library

+

All public operations : what

+ + diff --git a/doc/devel/uml/class136453.html b/doc/devel/uml/class136453.html new file mode 100644 index 000000000..525aaa684 --- /dev/null +++ b/doc/devel/uml/class136453.html @@ -0,0 +1,43 @@ + + + + + + +Class Asset + + + + + +
Class Asset
+

+ + + + +

Declaration :

Directly inherited by : Media Meta Proc Struct

+

Superinterface describing especially the bookeeping properties of Assets

Artifact : asset

+ +
Attribut id
+

Declaration :

Asset primary key.

+
Attribut name
+

Declaration :

element ID, comprehensible but sanitized. The tuple (category, name, org) is unique.

+
Relation category (<unidirectional association>)

Declaration :

primary tree like classification of the asset

+
Attribut org
+

Declaration :

origin 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".

+
Attribut version
+

Declaration :

version 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.

+
Attribut groups
+

Declaration :

additional classification, selections or departments this asset belongs to. Groups are optional, non-exclusive and may be overlapping.

+
Attribut shortDesc
+

Declaration :

user visible Name-ID. To be localized.

+
Attribut longDesc
+

Declaration :

user visible qualification of the thing, unit or concept represented by this asset. perferably "in one line". To be localized.

+
Operation getParents

Declaration :

List 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

+
Operation getDependant

Declaration :

All 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.

+
Operation isActive

Declaration :

weather this asset is swithced on and consequently included in the fixture and participates in rendering

+
Operation enable

Declaration :

change the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well

+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class136581.html b/doc/devel/uml/class136581.html new file mode 100644 index 000000000..b81f1f7ef --- /dev/null +++ b/doc/devel/uml/class136581.html @@ -0,0 +1,27 @@ + + + + + + +Class AssetManager + + + + + +
Class AssetManager
+

+ + + + +

Declaration :

Facade for the Asset subsystem

Artifact : assetmanager

+ +
Operation register

Declaration :

registers an asset object in the internal DB, providing its unique key

+
Operation getAsset

Declaration :

find and return corresponging object

+
Operation known

Declaration :

@return true if the given id is registered in the internal asset DB

+
Operation remove

Declaration :

remove the given asset <i>together with all its dependants</i> from the internal DB

+

All public operations : getAsset , known , register , remove

+ + diff --git a/doc/devel/uml/class136709.html b/doc/devel/uml/class136709.html new file mode 100644 index 000000000..c7f46adb3 --- /dev/null +++ b/doc/devel/uml/class136709.html @@ -0,0 +1,24 @@ + + + + + + +Class Media + + + + + +
Class Media
+

+ + + + +

Declaration :

Directly inherited by : Clip Preview

+

key abstraction: media-like assets

Artifact : media

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class136837.html b/doc/devel/uml/class136837.html new file mode 100644 index 000000000..32eeedace --- /dev/null +++ b/doc/devel/uml/class136837.html @@ -0,0 +1,24 @@ + + + + + + +Class Proc + + + + + +
Class Proc
+

+ + + + +

Declaration :

Directly inherited by : Codec Effect

+

key abstraction: data processing asset

Artifact : proc

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class136965.html b/doc/devel/uml/class136965.html new file mode 100644 index 000000000..d2f992c0a --- /dev/null +++ b/doc/devel/uml/class136965.html @@ -0,0 +1,24 @@ + + + + + + +Class Struct + + + + + +
Class Struct
+

+ + + + +

Declaration :

Directly inherited by : OutPort Track

+

key abstraction: structural asset

Artifact : struct

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class137093.html b/doc/devel/uml/class137093.html new file mode 100644 index 000000000..6fc18f4e0 --- /dev/null +++ b/doc/devel/uml/class137093.html @@ -0,0 +1,24 @@ + + + + + + +Class Meta + + + + + +
Class Meta
+

+ + + + +

Declaration :

Directly inherited by : Dataset

+

key abstraction: metadata and organisational asset

Artifact : meta

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class137221.html b/doc/devel/uml/class137221.html new file mode 100644 index 000000000..6bac4b8ca --- /dev/null +++ b/doc/devel/uml/class137221.html @@ -0,0 +1,20 @@ + + + + + + +Class Category + + + + + +
Class Category
+

+ + + + +

Declaration :

tree like classification of Assets

Artifact : category

+ diff --git a/doc/devel/uml/class137349.html b/doc/devel/uml/class137349.html new file mode 100644 index 000000000..2b1885473 --- /dev/null +++ b/doc/devel/uml/class137349.html @@ -0,0 +1,24 @@ + + + + + + +Class Clip + + + + + +
Class Clip
+

+ + + + +

Declaration :

bookkeeping (asset) view of a media clip.

Artifact : clip

+ +
Relation source (<unidirectional association>)

Declaration :

media source of this clip

+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class137477.html b/doc/devel/uml/class137477.html new file mode 100644 index 000000000..4e36b6db4 --- /dev/null +++ b/doc/devel/uml/class137477.html @@ -0,0 +1,23 @@ + + + + + + +Class Unknown + + + + + +
Class Unknown
+

+ + + + +

Declaration :

placeholder for unknown or unavailable media source

Artifact : unknown

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class137605.html b/doc/devel/uml/class137605.html new file mode 100644 index 000000000..e154ffd5f --- /dev/null +++ b/doc/devel/uml/class137605.html @@ -0,0 +1,24 @@ + + + + + + +Class Preview + + + + + +
Class Preview
+

+ + + + +

Declaration :

Directly inherited by : Unknown

+

alternative version of the media data, probably with lower resolution

Artifact : preview

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class137733.html b/doc/devel/uml/class137733.html new file mode 100644 index 000000000..9e9122764 --- /dev/null +++ b/doc/devel/uml/class137733.html @@ -0,0 +1,23 @@ + + + + + + +Class Effect + + + + + +
Class Effect
+

+ + + + +

Declaration :

Effect or media processing component

Artifact : effect

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class137861.html b/doc/devel/uml/class137861.html new file mode 100644 index 000000000..e492ab185 --- /dev/null +++ b/doc/devel/uml/class137861.html @@ -0,0 +1,23 @@ + + + + + + +Class Codec + + + + + +
Class Codec
+

+ + + + +

Declaration :

description of some media data decoder or encoder facility

Artifact : codec

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class137989.html b/doc/devel/uml/class137989.html new file mode 100644 index 000000000..5ee601cc6 --- /dev/null +++ b/doc/devel/uml/class137989.html @@ -0,0 +1,23 @@ + + + + + + +Class Track + + + + + +
Class Track
+

+ + + + +

Declaration :

structural asset holding the configuration of a track in the EDL

Artifact : track

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class138117.html b/doc/devel/uml/class138117.html new file mode 100644 index 000000000..6b36b4366 --- /dev/null +++ b/doc/devel/uml/class138117.html @@ -0,0 +1,23 @@ + + + + + + +Class OutPort + + + + + +
Class OutPort
+

+ + + + +

Declaration :

structural asset corresponding to some port generating media output

Artifact : outport

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/class138245.html b/doc/devel/uml/class138245.html new file mode 100644 index 000000000..cc00110c8 --- /dev/null +++ b/doc/devel/uml/class138245.html @@ -0,0 +1,23 @@ + + + + + + +Class Dataset + + + + + +
Class Dataset
+

+ + + + +

Declaration :

meta asset describing a collection of control data

Artifact : dataset

+
+

All public operations : enable , getDependant , getParents , isActive

+ + diff --git a/doc/devel/uml/classdiagrams.html b/doc/devel/uml/classdiagrams.html index 431aa442c..8c55bf4b0 100644 --- a/doc/devel/uml/classdiagrams.html +++ b/doc/devel/uml/classdiagrams.html @@ -16,11 +16,14 @@ + + +
Asset Kinds
Automation Entities
Builder Entities
Controller Entities
File MappingShows whats used to access Frames
HierarchyCinelerra Exception hierarchy
In Memory Database
Media-Asset Relations
Render Entities
Session structure
diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index 3f80fa110..cfbf35142 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -19,22 +19,34 @@ AbstractMO AFrame Allocationa directive to place a MObject in a specific way +AppconfigsingletonSingleton to hold inevitable global flags and constants and for performing erarly (static) global initialization tasks. ARenderRepresentation of a Audio render process AssemblerThis is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects +AssetinterfaceSuperinterface describing especially the bookeeping properties of Assets +AssetManagerboundaryFacade for the Asset subsystem 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 +Categorytree like classification of Assets +Clipbookkeeping (asset) view of a media clip. Clip +Codecdescription of some media data decoder or encoder facility CodecAdapter ConditionI provided a reworked Condition class in my cinelerra2 repository +Config ConManagerConnection Manager, used to build the connections between render engine nodes, if these nodes need to cooperate besides the normal "data pull" operation. Esp., the Connection Manager knows how to wire up the effect's parameters with the corresponding ParamProviders (autmation) in the Session Constraint ControllerFacadeboundaryProvides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings. +Datasetmeta asset describing a collection of control data DirectPlacement EDL +EffectEffect or media processing component Effect +Error ExitNodeThe output of the render pipeline. Pulling from such exit nodes actually ivokes the render process ExplicitPlacementinterface +External +Factorya template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only. File FileHandle FileHandleCache @@ -52,21 +64,28 @@ GLRenderRepresentation of a OpenGL accelerated Video render process Hub InterpolatorProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter +Invalid Label Link Lock Lock +Logic Mask +Mediakey abstraction: media-like assets +Metakey abstraction: metadata and organisational asset Meta MObjectinterface MutexI provided a reworked Mutex class in my cinelerra2 repository NodeCreatorToolThis Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render. +OutPortstructural asset corresponding to some port generating media output ParameterDescriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated. ParamProviderinterfaceA facility to get the actual value of a plugin/effect parameter PathManagerWhile building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state) Placementinterface PluginAdapterAdapter used to integrage an effects processor in the render pipeline Prefetch +Previewalternative version of the media data, probably with lower resolution +Prockey abstraction: data processing asset Processor ProcNodeinterfaceKey abstraction of the Render Engine: A Data processing Node ProjectorSpecial video processing node used to scale and translate image data. @@ -80,16 +99,23 @@ Session SmartPointerauxiliary SourceSource Node: represents a media source to pull data from. +State StateProxyinterface +std::exceptionauxiliary +Structkey abstraction: structural asset ThreadWe can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads Timedenotes a temporal position (time point), based on timeline start.

investigate posix.4 realtime timers, wrap these here ToolinterfaceUsed according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes ToolFactory +Trackstructural asset holding the configuration of a track in the EDL Track Trafo +Unknownplaceholder for unknown or unavailable media source VFrame VRenderRepresentation of a Video render process. (Encapsulates the video buffers for the actual calculations) Wish +WriteBuffer +WriteBufferPool diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index aee95f532..78eefaa82 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -20,22 +20,34 @@ AbstractMO
AFrame
Allocation
+Appconfig
ARender
Assembler
+Asset
+AssetManager
Auto
Buildable
BuilderFacade
+Category
+Clip
Clip
+Codec
CodecAdapter
Condition
+Config
ConManager
Constraint
ControllerFacade
+Dataset
DirectPlacement
EDL
+Effect
Effect
+Error
ExitNode
ExplicitPlacement
+External
+Factory
File
FileHandle
FileHandleCache
@@ -53,21 +65,28 @@ GLRender
Hub
Interpolator
+Invalid
Label
Link
Lock
Lock
+Logic
Mask
+Media
+Meta
Meta
MObject
Mutex
NodeCreatorTool
+OutPort
Parameter
ParamProvider
PathManager
Placement
PluginAdapter
Prefetch
+Preview
+Proc
Processor
ProcNode
Projector
@@ -81,16 +100,23 @@ Session
SmartPointer
Source
+State
StateProxy
+std::exception
+Struct
Thread
Time
Tool
ToolFactory
+Track
Track
Trafo
+Unknown
VFrame
VRender
Wish
+WriteBuffer
+WriteBufferPool
diff --git a/doc/devel/uml/fig128181.png b/doc/devel/uml/fig128181.png index fbd727164..cedf4dae2 100644 Binary files a/doc/devel/uml/fig128181.png and b/doc/devel/uml/fig128181.png differ diff --git a/doc/devel/uml/fig129285.png b/doc/devel/uml/fig129285.png index 2c6a4ba97..248d56153 100644 Binary files a/doc/devel/uml/fig129285.png and b/doc/devel/uml/fig129285.png differ diff --git a/doc/devel/uml/fig130181.png b/doc/devel/uml/fig130181.png new file mode 100644 index 000000000..692da89b9 Binary files /dev/null and b/doc/devel/uml/fig130181.png differ diff --git a/doc/devel/uml/fig130309.png b/doc/devel/uml/fig130309.png new file mode 100644 index 000000000..436fda8d2 Binary files /dev/null and b/doc/devel/uml/fig130309.png differ diff --git a/doc/devel/uml/fig130437.png b/doc/devel/uml/fig130437.png new file mode 100644 index 000000000..90aae3a8d Binary files /dev/null and b/doc/devel/uml/fig130437.png differ diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index 2450fdd12..fc5d82659 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -101,7 +101,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 : 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, arender, renderstate, label, glbuf, procnode, stateproxy, hub, buildable, abstractmo

+

executable associated with : link, parameter, renderengine, allocation, vframe, 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

Artifact main

Artifact source

@@ -117,12 +117,25 @@ Documentation

1.3.2.1 Deployment View gen

defines source files to be generated by BOUML

+ +
Artifact error
+

Cinelerra Exception Interface

+

Artifact source associated with : Error, Logic, Config, State, Invalid, External

+ +
Artifact appconfig
+

for global initialization and configuration

+

Artifact source associated with : Appconfig

Artifact time

unified representation of a time point, including conversion functions

Artifact source associated with : Time

- + +

1.3.2.2 Package error

+

+

Namespace for Exception Kinds

1.3.3 Package backend

Selection :

Transformation

3.1.1.1 Activity get frame

-

Pre Condition :

Post Condition :

+

Pre Condition :

Post Condition :

+
+

3.2 Component View Cache

@@ -906,13 +1010,29 @@ reuse exiting Engine

Selection :

Transformation

GUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft

5 Package CommonLib

+ +

5.1 Class View error

+
+ +

+

Hierarchy



+

Cinelerra Exception hierarchy

Class Error
+
Class Logic
+
Class Config
+
Class State
+
Class Invalid
+
Class External
+
+
-

5.1 Class View Service Components

+

5.2 Class View Service Components

Class Time
+
Class Factory
+
Class Appconfig
-

5.2 Class View Posix Threads Abstraction

+

5.3 Class View Posix Threads Abstraction

C++ wrapers for pthreads

Class Thread
@@ -920,7 +1040,7 @@ reuse exiting Engine

Selection :

Transformation
Class Mutex

-

5.3 Class View SmartPointers

+

5.4 Class View SmartPointers

diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index 0a78be5d0..cc286ecf2 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -17,8 +17,8 @@ - + @@ -28,10 +28,10 @@ - - + + diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index fb3771d6c..aba7859ea 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -26,23 +26,32 @@ + + + + + + + + + - + - - + + diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index ee9c7dde3..13b6639cd 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -32,8 +32,8 @@ - + diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index d3fce2569..2db26987f 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -19,31 +19,39 @@ + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + @@ -52,6 +60,7 @@ + diff --git a/doc/devel/uml/index_68.html b/doc/devel/uml/index_68.html index 015d073f6..d35b2ba3d 100644 --- a/doc/devel/uml/index_68.html +++ b/doc/devel/uml/index_68.html @@ -17,14 +17,16 @@
NameKindDescription
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
allocationartifact
Allocationclassa directive to place a MObject in a specific way
anchorrelation
Appconfigoperationperform initialization on first access.
A call is placed in static initialization code
included in cinelerra.h; thus it will happen
ubiquitous very early.
appconfigartifactfor global initialization and configuration
AppconfigclassSingleton to hold inevitable global flags and constants and for performing erarly (static) global initialization tasks.
applyoperation
Architecturecomponent viewThe various Components comprising the Cinelerra3 Video editing Application
ARenderclassRepresentation of a Audio render process
arenderartifactRepresentation of a Audio Render process
AssemblerclassThis is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects
assemblerartifactbuilding facility (implementation of the build process)
AssetclassSuperinterface describing especially the bookeeping properties of Assets
assetartifactSuperinterface: bookeeping view of "things" present in the session
assetpackagesourcecode package

Asset Management
Asset Kindsclass diagram
AssetManagementcomponent
AssetManagerclassFacade for the Asset subsystem
assetmanagerartifactFacade for the Asset subsystem
AssetManagerpackage
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
audio1class instance
autoartifactMedia Object holding automation data
AutoclassAutomation data for some parameter (i.e. a time varying function)
Automation Entitiesclass diagram
buildableartifactmarker interface denoting any MObject able to be treated by Tools
buildEngineoperationMain Operation of the Builder: create a render engine for a given part of the timeline
Buildercomponent
Builderpackage
builderpackagesourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem
Builderpackage
Builder Entitiesclass diagram
Builder Workingsclass view
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
NameKindDescription
Cachecomponent
Cachecomponent view
categoryrelationprimary tree like classification of the asset
Categoryclasstree like classification of Assets
categoryartifacttree like classification of Assets
causeattributea copy of the first exception encountered in this exception chain
checked_inrelationchecked_in objects are subject of cache aging and must be not in use
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
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
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.
clipartifacta Media Clip
clipartifactbookkeeping (asset) view of a media clip.
Clipclass
clipsrelation
Codecclassdescription of some media data decoder or encoder facility
codecartifactdescription of some media data decoder or encoder facility
CodecAdapterclass
codecadapterartifactProcessing Node for (de)coding media data
codegenpackageThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.
CommonLibpackage
complete Render Engineactivity object
ConditionclassI provided a reworked Condition class in my cinelerra2 repository
Configclass
configureoperation
configure Renderactivity
configure Toolsopaque activity action
+ + - + diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index 9d52d03bb..caf706b98 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -18,14 +18,17 @@
NameKindDescription
Datasetclassmeta asset describing a collection of control data
datasetartifactmeta asset describing a collection of control data
datasrcrelationThe predecessor in a processing pipeline, i.e. a source to get data to be processed
define segmentopaque activity action
descriptorrelationtype of this frame
descriptorrelation
designpackage
designpackageAll things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions.
determine Render Paramsopaque activity action
determine Render Paramsexpansion region
determine Render Paramsopaque activity action
devnullclass instance
DirectPlacementclass
Dispatchercomponent
- + + + + @@ -33,12 +36,17 @@ + + + + +
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.
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
endattributeend of the timerange (excl)
Enginecomponent
enginepackagesourcecode package

The Core Render Engine
Engine Example2object diagramExample2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.
Engine Partsdeployment view
Engine Workingsclass view
errorpackageNamespace for Exception Kinds
errorclass view
Errorclass
errorartifactCinelerra Exception Interface
establish partitioningexpansion region
EXE Deploymentdeployment viewdefines and lists how the Cinelerra executable has to be created
ExitNodeclassThe output of the render pipeline. Pulling from such exit nodes actually ivokes the render process
exitnodeartifactspecial Processing Node providing "pullable" output
explicitplacementartifactspecial Placement yielding an absolute location (Time,Track)-location for a MObject
ExplicitPlacementclass
Externalclass
diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index a2c4b9eea..e83866113 100644 --- a/doc/devel/uml/index_70.html +++ b/doc/devel/uml/index_70.html @@ -17,6 +17,7 @@ + @@ -31,15 +32,16 @@ - + + diff --git a/doc/devel/uml/index_71.html b/doc/devel/uml/index_71.html index 62a9306fc..be8d16dcd 100644 --- a/doc/devel/uml/index_71.html +++ b/doc/devel/uml/index_71.html @@ -28,11 +28,15 @@ + + + + @@ -44,6 +48,7 @@ +
NameKindDescription
Factoryclassa template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only.
Fileclass
filerelation
File Mappingclass diagramShows whats used to access Frames
fixedplacementartifact
Fixtureactivity object
fixtureartifactthe (low level) representation of the EDL with concrete placement data
fixturerelation
Fixtureclass
Fixturecomponent
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
FrameclassTODO: how to relate to Cehteh's Frame entity in the Backend?
The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date
framerelationmaybe weak reference
frameartifactKey Abstraction: render process and buffer holding frame data.
framerelation
Frame (Stream) Providercomponent
FrameDescriptorclassA FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes
FrameReferenceclass
gendeployment viewdefines source files to be generated by BOUML
gendeployment viewdefines source files to be generated by BOUML
gendeployment viewdefines source files to be generated by BOUML
getoperationaccess the configuation value for a given key.
@return empty string for unknown keys, else the corresponding configuration value
get frameactivity
get_reproperation
getAssetoperationfind and return corresponging object
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.
getFrameoperationmode = READ, WRITE, ...
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
getPlaylistForRenderoperation
getStateProxyoperation
getValueoperation
glpipeartifactspecialized connection element for handling OpenGL implementation details
GLRenderclassRepresentation of a OpenGL accelerated Video render process
glrenderartifactRepresentation of a OpenGL accellerated Video render process
groupsattributeadditional classification, selections or departments this asset belongs to. Groups are optional, non-exclusive and may be overlapping.
GUIpackageGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft
guipackagesourcecode package

User Interface classes go here
diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html index 3b76fe797..7273d52e0 100644 --- a/doc/devel/uml/index_72.html +++ b/doc/devel/uml/index_72.html @@ -20,6 +20,7 @@ handlerelationweak pointer handlesrelation handles_availableattributeinitialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used.
Else this number is decremented for each new filehandle used and incremented for any one explicitly freed. +Hierarchyclass diagramCinelerra Exception hierarchy Hubclass hubartifactspecial ProcNode used to build data distributing connections HUEclass instance diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index a97f05ce5..f6ab37369 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -17,15 +17,19 @@ + - + + + +
NameKindDescription
idattributeAsset primary key.
In Memory Databaseclass diagram
inFixtureactivity action pin
inputclass instance
inputclass instance
inputclass instance
inputclass instance
instanceoperation
interfacescomponent view
interpolatorartifactdenotes a facility to get (continuously interpolated) parameter values
InterpolatorclassProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter
Invalidclass
iporelation
isActiveoperationweather this asset is swithced on and consequently included in the fixture and participates in rendering
diff --git a/doc/devel/uml/index_75.html b/doc/devel/uml/index_75.html new file mode 100644 index 000000000..0785cbeb9 --- /dev/null +++ b/doc/devel/uml/index_75.html @@ -0,0 +1,23 @@ + + + + + + +K + + + + + +
K
+

+ + + + + + +
NameKindDescription
knownoperation@return true if the given id is registered in the internal asset DB
+ + diff --git a/doc/devel/uml/index_76.html b/doc/devel/uml/index_76.html index 680ae56c6..ddbe5c66d 100644 --- a/doc/devel/uml/index_76.html +++ b/doc/devel/uml/index_76.html @@ -25,6 +25,8 @@ linkartifactforwarding, adapting or connecting ProcNode Lockclass Lockclass +Logicclass +longDescattributeuser visible qualification of the thing, unit or concept represented by this asset. perferably "in one line". To be localized. diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index 6c4e61932..1219f0f58 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -22,8 +22,13 @@ mappingsrelationweak pointers Maskclass maskartifactVideo ProcNode for masking regions of the image (automatable) +Mediaclasskey abstraction: media-like assets +mediaartifactkey abstraction: media-like assets +Media-Asset Relationsclass diagram merge activity nodemerge activity node +Metaclasskey 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 diff --git a/doc/devel/uml/index_78.html b/doc/devel/uml/index_78.html index 4cc3eff75..876afc08d 100644 --- a/doc/devel/uml/index_78.html +++ b/doc/devel/uml/index_78.html @@ -17,6 +17,7 @@ +
NameKindDescription
nameattributeelement ID, comprehensible but sanitized. The tuple (category, name, org) is unique.
nodecreatertoolartifactcentral Tool implementing the Renderengine building
NodeCreatorToolclassThis Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render.
diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index edbb2994f..2a52fbc5c 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -18,9 +18,12 @@ - + + + + diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 639db95d5..2a0a4cf37 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -36,8 +36,12 @@ + + + + diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index 59b762e4c..84c63934b 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -18,10 +18,12 @@
NameKindDescription
offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation?
ouputclass instance
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
OutPortclassstructural asset corresponding to some port generating media output
outportartifactstructural asset corresponding to some port generating media output
outputrelation
Overviewcomponent diagramThis drawing shows the top level compoents and relations
Overview Render Enginedeployment diagram
pnodenode
Posix Threads Abstractionclass viewC++ wrapers for pthreads
Prefetchclass
Previewclassalternative version of the media data, probably with lower resolution
previewartifactalternative version of the media data, probably with lower resolution
Procclasskey abstraction: data processing asset
procpackagesourcecode package

All classes belonging to the (middle) processing layer
procnode
procartifactkey abstraction: media-like assets
procattributeholds the Processor (Render Engine Element) to be built by the current build step
proc-componentscomponent diagram
ProcessingLayerpackage
+ - + + @@ -34,6 +36,7 @@ +
NameKindDescription
refPointclass instance
registeroperationregisters an asset object in the internal DB, providing its unique key
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
RenderEngineclass
renderstateartifactrenderengine state manager
reprattributehuman readable representation of the condition characterizing this allocaton, e.g. "t >= 10"
resolveoperationcreate an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.
rootCauseoperationIf this exception was caused by a chain of further exceptions,
return the first one registered in this throw sequence.
This works only, if every exceptions thrown as a consequence
of another exception is propperly constructed by passing
the original exception to the constructor
diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index b930aa453..dc307832f 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -30,14 +30,17 @@ Service Componentsclass view Sessioncomponent sessionartifactholds the complete session to be edited by the user -sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem Sessionclass view +sessionpackagesourcecode package

Everything concerning the EDL and Session, within the MObject Subsystem Sessionclass Session structureclass diagram setup Build Paramsopaque activity action setup StateProxyopaque activity action +shortDescattributeuser visible Name-ID. To be localized. SmartPointerclass SmartPointersclass view +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 @@ -45,8 +48,12 @@ startattributebegin of the timerange covered by this processor startattribute Statenode +Stateclass StateProxyclass stateproxyartifactKey Interface representing a render process and encapsulating state +std::exceptionclass +Structclasskey abstraction: structural asset +structartifactkey abstraction: structural asset subjectrelation diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index 26fad698a..044cdcb55 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -18,6 +18,7 @@ + @@ -29,19 +30,21 @@ + + - - - - + + + +
NameKindDescription
the render configuration flowactivity diagram
theApp_attributeholds the single instance and triggers initialization
ThreadclassWe can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads
timeattribute
timeartifactunified representation of a time point, including conversion functions
toolartifactInterface, any tool for processing MObjects
ToolFactoryclass
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
Trackclass
tracksrelation
tracksrelation
Trafoclass
trafoartifacttransforming processing Node
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperationThis operation is to be overloaded for the specific MObject subclasses to be treated.
diff --git a/doc/devel/uml/index_85.html b/doc/devel/uml/index_85.html index 38f4965d4..b5f26dfb9 100644 --- a/doc/devel/uml/index_85.html +++ b/doc/devel/uml/index_85.html @@ -17,6 +17,8 @@ + +
NameKindDescription
Unknownclassplaceholder for unknown or unavailable media source
unknownartifactplaceholder for unknown or unavailable media source
useFileoperationAnnounces that the application intends to use this file with mode (READ|WRITE|READWRITE)
useTemporaryStorageoperationProvides a pool for interminate frames
diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index 092c278b0..1ca19fe37 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -17,25 +17,26 @@ + - - - - + - - + + + - + + - + +
NameKindDescription
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
vid_aclass instance
vid_Aclass instance
vid_Aclass instance
vid1class instance
vid_Aclass instance
vid_aclass instance
videoclass instance
videoclass instance
vid_Aclass instance
vid_Aclass instance
vid_aclass instance
videoclass instance
videoclass instance
video1class instance
videoclass instance
videoclass 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/index_87.html b/doc/devel/uml/index_87.html index 00c555b01..4af6e38d9 100644 --- a/doc/devel/uml/index_87.html +++ b/doc/devel/uml/index_87.html @@ -17,7 +17,12 @@ + + + + +
NameKindDescription
whatoperation
whatoperationthe base class of all exceptions thrown by the standard library
Wishclass
write_bufferrelation
WriteBufferclass
WriteBufferPoolclass
diff --git a/doc/devel/uml/navig.html b/doc/devel/uml/navig.html index 90304f3d6..2bdbe6770 100644 --- a/doc/devel/uml/navig.html +++ b/doc/devel/uml/navig.html @@ -9,9 +9,9 @@


-

-Top- -Classes- -Public Operations- -Packages- -Activities- -Class Diagrams- -Object Diagrams- -Activity Diagrams- -Collaboration Diagrams- -Component Diagrams- -Deployment Diagrams-

+

-Top- -Classes- -Public Operations- -Public properties- -Packages- -Activities- -Class Diagrams- -Object Diagrams- -Activity Diagrams- -Collaboration Diagrams- -Component Diagrams- -Deployment Diagrams-

-

< A B C D E F G H I L M N O P R S T U V W

+

< A B C D E F G H I K L M N O P R S T U V W

diff --git a/doc/devel/uml/packages.html b/doc/devel/uml/packages.html index 438978748..80440f99d 100644 --- a/doc/devel/uml/packages.html +++ b/doc/devel/uml/packages.html @@ -20,17 +20,18 @@ AssetManager backendsrcsourcecode package

Data backend classes here... BackendLayer -buildersrcsourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem Builder +buildersrcsourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem cinelerra3 codegenThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton. commonsrcsourcecode package

Common library and helper classes CommonLib -Controller controllersrcsourcecode package

The Processing and Render Controller,
located within the MObject Subsystem +Controller design designAll things concering the big picture.
Not a real code package, rather a container for design drafts, specifications, decisions. enginesrcsourcecode package

The Core Render Engine +errorNamespace for Exception Kinds GUIGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft guisrcsourcecode package

User Interface classes go here mobjectsrcsourcecode package

MObject Subsystem
including the Session (EDL), Builder and Processing Controller diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index fea74ca91..45b6f8e10 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -22,20 +22,30 @@ buildEngineBuilderFacadeMain Operation of the Builder: create a render engine for a given part of the timeline buildProcessorPathManager configureToolFactory +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 +getAssetAssetManagerfind and return corresponging object 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. getFrameFilemode = READ, WRITE, ... +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 getPlaylistForRenderFixture getStateProxyRenderState getValueAuto getValueParameter getValueParamProvider +isActiveAssetweather this asset is swithced on and consequently included in the fixture and participates in rendering +knownAssetManager@return true if the given id is registered in the internal asset DB playRenderEngineTODO: will probably be handled differently (see Cehteh) +registerAssetManagerregisters an asset object in the internal DB, providing its unique key +removeAssetManagerremove the given asset <i>together with all its dependants</i> from the internal DB resolvePlacementcreate an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements. -treatNodeCreatorTool -treatNodeCreatorTool +rootCauseErrorIf this exception was caused by a chain of further exceptions,
return the first one registered in this throw sequence.
This works only, if every exceptions thrown as a consequence
of another exception is propperly constructed by passing
the original exception to the constructor treatNodeCreatorTool +treatNodeCreatorTool +treatNodeCreatorTool treatNodeCreatorTool treatSegmentationTool treatSegmentationTool @@ -43,6 +53,8 @@ treatToolThis operation is to be overloaded for the specific MObject subclasses to be treated. useFileFileProviderAnnounces that the application intends to use this file with mode (READ|WRITE|READWRITE) useTemporaryStorageFileProviderProvides a pool for interminate frames +whatError +whatstd::exceptionthe base class of all exceptions thrown by the standard library diff --git a/doc/devel/uml/public_properties.html b/doc/devel/uml/public_properties.html new file mode 100644 index 000000000..5c6c3f844 --- /dev/null +++ b/doc/devel/uml/public_properties.html @@ -0,0 +1,27 @@ + + + + + + +Public Properties Index + + + + + +
Public Properties Index
+

+ + + + + + + + + + +
PropertyClassDescription
categoryAssetprimary tree like classification of the asset
idAssetAsset primary key.
nameAssetelement ID, comprehensible but sanitized. The tuple (category, name, org) is unique.
orgAssetorigin 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".
versionAssetversion 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.
+ + diff --git a/src/common/factory.hpp b/src/common/factory.hpp index bb2a28fee..691ba25db 100644 --- a/src/common/factory.hpp +++ b/src/common/factory.hpp @@ -30,100 +30,116 @@ namespace cinelerra { - - namespace factory{ class VanillaAllocator; }//////////////////////////////////TODO - - /** - * Configurable template for creating Factory classes. - * These encapsulate the creating of new objects, indeed - * delegating the memory allocation to the backend layer. - * The clients get just a smart-pointer or similar handle - * to the created object, which will manage the ownership. - * - * The provided default implementation uses just std::auto_ptr, - * but delegates the allocation to cinelerra's backend-layer. - * - */ - template - < - class T, // the product to be created - template class SMP = std::auto_ptr,// smart-pointer actually returned - class ALO = factory::VanillaAllocator // Allocator facility to be used //////////////TODO - > - class Factory : protected ALO - { - public: - /** Object creating facility. - * Intended to be over/written/ with a variant taking - * the appropriate number of parameters and using the - * (privately inherited) functions of the allocator. - * Note: non-virtual. - */ - SMP operator() (){ return SMP (new T ); }; - - typedef SMP ptype; - - private: - void operator= (const Factory&); // copy prohibited - }; - - - - /* -- some example and default instantiiations -- */ - namespace factory { /** - * Example Allocator using just the normal C++ memory management. - * The intended use is for a Factory instance to iherit from this class. - * Specialized Allocators typically overload operator new and delete. + * Wrapping any object created by the Factory into some smart ptr class. + * The Factory class inherits this functionallity, so it can be exchanged + * independently from the actual object creation behaviour. For example, + * an Factory implementing some elaborate subclass creation scheme could + * be intantiated to either procuce auto-ptrs or shared-ptrs. */ - class VanillaAllocator {}; + template + < class T, // the product to be created + class SMP =std::auto_ptr // smart-pointer actually returned + > + class Wrapper + { + protected: + SMP wrap (T* product) { return SMP (product); } + + public: + typedef SMP PType; + }; + /** - * Example Allocator using plain C memory management. + * Basic Factory Template, for definig flexible Factory classes. + * These encapsulate the logic for creating of new objects, maybe + * delegating the memory allocation to the backend layer. Usually, + * the clients get just a smart-pointer or similar handle to the + * created object, which will manage the ownership. + * + * The provided default implementation uses just std::auto_ptr. */ - class MallocAllocator + template + < class T, // the product to be created + class WR = Wrapper // used for fabricating the wrapper + > + class Factory : public WR { - void* operator new (size_t siz) { return malloc (siz); }; - void operator delete (void* p) { if (p) free (p); }; + public: + /** Object creating facility. + * Intended to be over/written/ with a variant taking + * the appropriate number of parameters and maybe + * using some special custom allocator. + * Note: non-virtual. + */ + typename WR::PType operator() () { return wrap (new T ); } + }; + + + + /* -- some example and default instantiiations -- */ + using std::tr1::shared_ptr; - /** a frequently used instantiation of the Factory, - * using the refcounting shared_ptr from Boost - * and for allocation just our default Allocator + /** + * a frequently used instantiation of the Wrapper, + * utilizing the refcounting shared_ptr from Boost. */ template - class RefcountPtr : public Factory + class Wrapper > { - /** let the smart-Ptr use the custom operator delete, - * which may be defined in our Allocator baseclass. - */ - static void destroy (T* victim) { delete victim; }; - + protected: + shared_ptr wrap (T* product) { return shared_ptr (product); } + public: - shared_ptr operator() () { return shared_ptr (new T, &destroy ); } + typedef shared_ptr PType; }; - - - /** another convienience instantiiation: auto_ptr-Factory, - * actually creating a subclass of the returned type + + + /** + * Shortcut: commonly used (partial) instantiation of the Factory, + * generating refcounting shared_ptr wrapped Objects. Built upon + * the corresponding special intstantiation of the Wrapper template. */ - template - class SubclassPtr : public Factory + template + class RefcountPtr : public Factory > > { - typedef std::auto_ptr aP; - public: - aP operator() (){ return aP (new TImpl ); }; + typedef shared_ptr PType; + }; + + + /** + * another convienience instantiiation: auto_ptr-to-Impl-Factory. + * Creating an implementation subclass and wraps into auto_ptr. + * @warning the TImpl object will typically be destoyed by the + * smart ptr using an T*, so ~T() needs to be virtual. + */ + template + < class T, // Interface class + class TImpl // Implementation class to be created + > + class PImplPtr : public Factory > + { + public: + typedef std::auto_ptr PType; + + PType operator() (){ return wrap (static_cast (new TImpl)); }; }; } // namespace factory + /// @note Factory can be usable as-is (wraps into std::auto_ptr) + using factory::Factory; + + } // namespace cinelerra #endif diff --git a/src/proc/asset.cpp b/src/proc/asset.cpp new file mode 100644 index 000000000..8d51ae61a --- /dev/null +++ b/src/proc/asset.cpp @@ -0,0 +1,69 @@ +/* + Asset} - Superinterface: bookeeping view of "things" present in the session + + 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/asset.hpp" +#include "proc/asset/category.hpp" + +namespace proc_interface + { + + + + /** + * List 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 + */ + vector + Asset::getParents () + { + } + + + /** + * All 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. + */ + vector + Asset::getDependant () + { + } + + + /** + * weather this asset is swithced on and consequently included in the fixture and participates in rendering + */ + bool + Asset::isActive () + { + } + + + /** + * change the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well + */ + void + Asset::enable () throw(cinelerra::error::State) + { + } + + + +} // namespace proc_interface diff --git a/src/proc/asset.hpp b/src/proc/asset.hpp new file mode 100644 index 000000000..e81e8e466 --- /dev/null +++ b/src/proc/asset.hpp @@ -0,0 +1,125 @@ +/* + ASSET.hpp - Superinterface: bookeeping view of "things" present in the session + + 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 PROC_INTERFACE_ASSET_H +#define PROC_INTERFACE_ASSET_H + +#include +#include +#include +#include "common/error.hpp" + +using std::string; +using std::vector; +using std::set; + + +namespace asset { class Category; } + + +namespace proc_interface + { + + typedef void* PAsset; //////TODO + + /** + * Superinterface describing especially the bookeeping properties of Assets + */ + class Asset + { + public: + /** Asset primary key. */ + const long id; + + /** element ID, comprehensible but sanitized. + * The tuple (category, name, org) is unique. + */ + const string name; + + /**primary tree like classification of the asset */ + const asset::Category* category; + + /** origin 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". + */ + const string org; + + /** version 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. + */ + const unsigned int version; + + + protected: + /** additional classification, selections or departments this asset belongs to. + * Groups are optional, non-exclusive and may be overlapping. + */ + set groups; + + /** user visible Name-ID. To be localized. */ + const string shortDesc; + + /** user visible qualification of the thing, unit or concept represented by this asset. + * perferably "in one line". To be localized. */ + const string longDesc; + + + public: + /** List 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 + */ + vector getParents () ; + + /** All 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. + */ + vector getDependant () ; + + /** weather this asset is swithced on and consequently + * included in the fixture and participates in rendering + */ + bool isActive () ; + + /** change the enabled status of this asset. + * Note the corresponding #isActive predicate may + * depend on the enablement status of parent assets as well + */ + void enable () throw(cinelerra::error::State); + }; + +} // namespace proc_interface + + + +namespace asset + { + using proc_interface::Asset; +} + +#endif diff --git a/src/proc/asset/category.cpp b/src/proc/asset/category.cpp new file mode 100644 index 000000000..edd1b85af --- /dev/null +++ b/src/proc/asset/category.cpp @@ -0,0 +1,31 @@ +/* + Category - tree like classification of Assets + + 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/asset/category.hpp" + +namespace asset + { + + + +} // namespace asset diff --git a/src/proc/asset/category.hpp b/src/proc/asset/category.hpp new file mode 100644 index 000000000..cbf7e0d9f --- /dev/null +++ b/src/proc/asset/category.hpp @@ -0,0 +1,40 @@ +/* + CATEGORY.hpp - tree like classification of Assets + + 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 ASSET_CATEGORY_H +#define ASSET_CATEGORY_H + + + +namespace asset + { + /** + * tree like classification of Assets + */ + class Category + {}; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/clip.cpp b/src/proc/asset/clip.cpp new file mode 100644 index 000000000..b01ba5155 --- /dev/null +++ b/src/proc/asset/clip.cpp @@ -0,0 +1,33 @@ +/* + Clip(Asset) - bookkeeping (asset) view of a media clip. + + 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/asset/clip.hpp" + +namespace asset + { + + /** */ + + + +} // namespace asset diff --git a/src/proc/asset/clip.hpp b/src/proc/asset/clip.hpp new file mode 100644 index 000000000..fea774b49 --- /dev/null +++ b/src/proc/asset/clip.hpp @@ -0,0 +1,47 @@ +/* + CLIP.hpp - bookkeeping (asset) view of a media clip. + + 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 ASSET_CLIP_H +#define ASSET_CLIP_H + +#include "proc/asset/media.hpp" + + + +namespace asset + { + /** + * bookkeeping (Asset) view of a media clip. + */ + class Clip : public Media + { + protected: + /**media source of this clip */ + const Media* source; + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/codec.cpp b/src/proc/asset/codec.cpp new file mode 100644 index 000000000..d7fdac062 --- /dev/null +++ b/src/proc/asset/codec.cpp @@ -0,0 +1,31 @@ +/* + Codec(Asset) - description of some media data decoder or encoder facility + + 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/asset/codec.hpp" + +namespace asset + { + + + +} // namespace asset diff --git a/src/proc/asset/codec.hpp b/src/proc/asset/codec.hpp new file mode 100644 index 000000000..8da2ff3bd --- /dev/null +++ b/src/proc/asset/codec.hpp @@ -0,0 +1,45 @@ +/* + CODEC.hpp - description of some media data decoder or encoder facility + + 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 ASSET_CODEC_H +#define ASSET_CODEC_H + +#include "proc/asset/proc.hpp" + + + +namespace asset + { + + /** + * description of some media data decoder or encoder facility + */ + class Codec : public Proc + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/dataset.cpp b/src/proc/asset/dataset.cpp new file mode 100644 index 000000000..50e8e08ae --- /dev/null +++ b/src/proc/asset/dataset.cpp @@ -0,0 +1,31 @@ +/* + Dataset - meta asset describing a collection of control data + + 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/asset/dataset.hpp" + +namespace asset + { + + + +} // namespace asset diff --git a/src/proc/asset/dataset.hpp b/src/proc/asset/dataset.hpp new file mode 100644 index 000000000..1d85c39e0 --- /dev/null +++ b/src/proc/asset/dataset.hpp @@ -0,0 +1,42 @@ +/* + DATASET.hpp - meta asset describing a collection of control data + + 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 ASSET_DATASET_H +#define ASSET_DATASET_H + +#include "proc/asset/meta.hpp" + + + +namespace asset + { + + + /** + * meta asset describing a collection of control data + */ + class Dataset : public Meta + {}; + +} // namespace asset +#endif diff --git a/src/proc/asset/effect.cpp b/src/proc/asset/effect.cpp new file mode 100644 index 000000000..283bef53a --- /dev/null +++ b/src/proc/asset/effect.cpp @@ -0,0 +1,31 @@ +/* + Effect(Asset) - Effect or media processing component + + 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/asset/effect.hpp" + +namespace asset + { + + + +} // namespace asset diff --git a/src/proc/asset/effect.hpp b/src/proc/asset/effect.hpp new file mode 100644 index 000000000..78ac66837 --- /dev/null +++ b/src/proc/asset/effect.hpp @@ -0,0 +1,45 @@ +/* + EFFECT.hpp - Effect or media processing component + + 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 ASSET_EFFECT_H +#define ASSET_EFFECT_H + +#include "proc/asset/proc.hpp" + + + +namespace asset + { + + /** + * Effect or media processing component + */ + class Effect : public Proc + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/media.cpp b/src/proc/asset/media.cpp new file mode 100644 index 000000000..a50360e04 --- /dev/null +++ b/src/proc/asset/media.cpp @@ -0,0 +1,33 @@ +/* + Media(Asset) - key abstraction: media-like assets + + 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/asset/media.hpp" + +namespace asset + { + + /** */ + + + +} // namespace asset diff --git a/src/proc/asset/media.hpp b/src/proc/asset/media.hpp new file mode 100644 index 000000000..ac0683704 --- /dev/null +++ b/src/proc/asset/media.hpp @@ -0,0 +1,46 @@ +/* + MEDIA.hpp - key abstraction: media-like assets + + 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 ASSET_MEDIA_H +#define ASSET_MEDIA_H + +#include "proc/asset.hpp" + + + +namespace asset + { + + + /** + * key abstraction: media-like assets + */ + class Media : public proc_interface::Asset + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/meta.cpp b/src/proc/asset/meta.cpp new file mode 100644 index 000000000..fb0ff7c05 --- /dev/null +++ b/src/proc/asset/meta.cpp @@ -0,0 +1,33 @@ +/* + Meta(Asset) - key abstraction: metadata and organisational asset + + 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/asset/meta.hpp" + +namespace asset + { + + /** */ + + + +} // namespace asset diff --git a/src/proc/asset/meta.hpp b/src/proc/asset/meta.hpp new file mode 100644 index 000000000..4cbd3f9c1 --- /dev/null +++ b/src/proc/asset/meta.hpp @@ -0,0 +1,46 @@ +/* + META.hpp - key abstraction: metadata and organisational asset + + 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 ASSET_META_H +#define ASSET_META_H + +#include "proc/asset.hpp" + + + +namespace asset + { + + + /** + * key abstraction: metadata and organisational asset + */ + class Meta : public proc_interface::Asset + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/outport.cpp b/src/proc/asset/outport.cpp new file mode 100644 index 000000000..50e993ec9 --- /dev/null +++ b/src/proc/asset/outport.cpp @@ -0,0 +1,31 @@ +/* + OutPort - structural asset corresponding to some port generating media output + + 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/asset/outport.hpp" + +namespace asset + { + + + +} // namespace asset diff --git a/src/proc/asset/outport.hpp b/src/proc/asset/outport.hpp new file mode 100644 index 000000000..e589a9f05 --- /dev/null +++ b/src/proc/asset/outport.hpp @@ -0,0 +1,46 @@ +/* + OUTPORT.hpp - structural asset corresponding to some port generating media output + + 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 ASSET_OUTPORT_H +#define ASSET_OUTPORT_H + +#include "proc/asset/struct.hpp" + + + +namespace asset + { + + + /** + * structural asset corresponding to some port generating media output + */ + class OutPort : public Struct + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/preview.cpp b/src/proc/asset/preview.cpp new file mode 100644 index 000000000..85dc98596 --- /dev/null +++ b/src/proc/asset/preview.cpp @@ -0,0 +1,31 @@ +/* + Preview(Asset) - alternative version of the media data, probably with lower resolution + + 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/asset/preview.hpp" + +namespace asset + { + + + +} // namespace asset diff --git a/src/proc/asset/preview.hpp b/src/proc/asset/preview.hpp new file mode 100644 index 000000000..cec3f6284 --- /dev/null +++ b/src/proc/asset/preview.hpp @@ -0,0 +1,45 @@ +/* + PREVIEW.hpp - alternative version of the media data, probably with lower resolution + + 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 ASSET_PREVIEW_H +#define ASSET_PREVIEW_H + +#include "proc/asset/media.hpp" + + + +namespace asset + { + + /** + * alternative version of the media data, probably with lower resolution + */ + class Preview : public Media + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/proc.cpp b/src/proc/asset/proc.cpp new file mode 100644 index 000000000..b82ea49d7 --- /dev/null +++ b/src/proc/asset/proc.cpp @@ -0,0 +1,33 @@ +/* + Proc(Asset) - key abstraction: media-like assets + + 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/asset/proc.hpp" + +namespace asset + { + + /** */ + + + +} // namespace asset diff --git a/src/proc/asset/proc.hpp b/src/proc/asset/proc.hpp new file mode 100644 index 000000000..003635b4f --- /dev/null +++ b/src/proc/asset/proc.hpp @@ -0,0 +1,46 @@ +/* + PROC.hpp - key abstraction: media-like assets + + 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 ASSET_PROC_H +#define ASSET_PROC_H + +#include "proc/asset.hpp" + + + +namespace asset + { + + + /** + * key abstraction: data processing asset + */ + class Proc : public Asset + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/struct.cpp b/src/proc/asset/struct.cpp new file mode 100644 index 000000000..18769f497 --- /dev/null +++ b/src/proc/asset/struct.cpp @@ -0,0 +1,31 @@ +/* + Struct(Asset) - key abstraction: structural asset + + 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/asset/struct.hpp" + +namespace asset + { + + + +} // namespace asset diff --git a/src/proc/asset/struct.hpp b/src/proc/asset/struct.hpp new file mode 100644 index 000000000..787c172dc --- /dev/null +++ b/src/proc/asset/struct.hpp @@ -0,0 +1,46 @@ +/* + STRUCT.hpp - key abstraction: structural asset + + 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 ASSET_STRUCT_H +#define ASSET_STRUCT_H + +#include "proc/asset.hpp" + + + +namespace asset + { + + + /** + * key abstraction: structural asset + */ + class Struct : public Asset + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/track.cpp b/src/proc/asset/track.cpp new file mode 100644 index 000000000..1f9a4f03a --- /dev/null +++ b/src/proc/asset/track.cpp @@ -0,0 +1,33 @@ +/* + Track - structural asset holding the configuration of a track in the EDL + + 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/asset/track.hpp" + +namespace asset + { + + /** */ + + + +} // namespace asset diff --git a/src/proc/asset/track.hpp b/src/proc/asset/track.hpp new file mode 100644 index 000000000..baece5d4e --- /dev/null +++ b/src/proc/asset/track.hpp @@ -0,0 +1,46 @@ +/* + TRACK.hpp - structural asset holding the configuration of a track in the EDL + + 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 ASSET_TRACK_H +#define ASSET_TRACK_H + +#include "proc/asset/struct.hpp" + + + +namespace asset + { + + + /** + * Structural Asset holding the configuration of a track in the EDL + */ + class Track : public Struct + { + + }; + + + +} // namespace asset +#endif diff --git a/src/proc/asset/unknown.cpp b/src/proc/asset/unknown.cpp new file mode 100644 index 000000000..8e4e558cd --- /dev/null +++ b/src/proc/asset/unknown.cpp @@ -0,0 +1,33 @@ +/* + Unknown - placeholder for unknown or unavailable media source + + 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/asset/unknown.hpp" + +namespace asset + { + + /** */ + + + +} // namespace asset diff --git a/src/proc/asset/unknown.hpp b/src/proc/asset/unknown.hpp new file mode 100644 index 000000000..c75cbcab5 --- /dev/null +++ b/src/proc/asset/unknown.hpp @@ -0,0 +1,47 @@ +/* + UNKNOWN.hpp - placeholder for unknown or unavailable media source + + 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 ASSET_UNKNOWN_H +#define ASSET_UNKNOWN_H + +#include "proc/asset/preview.hpp" + + + +namespace asset + { + + + /** + * Placeholder Asset for unknown or unavailable media source. + */ + class Unknown : public Preview + { + + }; + + + + +} // namespace asset +#endif diff --git a/src/proc/assetmanager.cpp b/src/proc/assetmanager.cpp new file mode 100644 index 000000000..14fc7afff --- /dev/null +++ b/src/proc/assetmanager.cpp @@ -0,0 +1,70 @@ +/* + AssetManager - Facade for the Asset subsystem + + 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/assetmanager.hpp" + +namespace proc_interface + { + + + + /** + * registers an asset object in the internal DB, providing its unique key + */ + long + AssetManager::reg (string& name, string& category, string& org, uint version) + //throw(cinelerra::error::Invalid) + { + } + + + /** + * find and return corresponging object + */ + template ////TODO: does this work???? + KIND + AssetManager::getAsset (long id) ////throw(cinelerra::Invalid) + { + } + + + /** + * @return true if the given id is registered in the internal asset DB + */ + bool + AssetManager::known (long id) + { + } + + + /** + * remove the given asset together with all its dependants from the internal DB + */ + void + AssetManager::remove (long id) /////throw(cinelerra::Invalid, cinelerra::State) + { + } + + + +} // namespace proc_interface diff --git a/src/proc/assetmanager.hpp b/src/proc/assetmanager.hpp new file mode 100644 index 000000000..b85113bbb --- /dev/null +++ b/src/proc/assetmanager.hpp @@ -0,0 +1,67 @@ +/* + ASSETMANAGER.hpp - Facade for the Asset subsystem + + 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 PROC_INTERFACE_ASSETMANAGER_H +#define PROC_INTERFACE_ASSETMANAGER_H + +#include + +#include "common/error.hpp" + + +using std::string; + + +namespace proc_interface + { + + /** + * Facade for the Asset subsystem + */ + class AssetManager + { + int bla; + public: + /** registers an asset object in the internal DB, providing its unique key + */ + static long reg (string& name, string& category, string& org, uint version) + ; + // throw(cinelerra::error::Invalid); + + /** find and return corresponging object */ + template +// void* /////////////////TODO + KIND + getAsset (long id) ;///throw(cinelerra::error::Invalid); + + /** @return true if the given id is registered in the internal asset DB */ + bool known (long id) ; + + /**remove the given asset from the internal DB. + * together with all its dependants + */ + void remove (long id) ;///throw(cinelerra::error::Invalid, cinelerra::error::State); + }; + +} // namespace proc_interface +#endif diff --git a/src/tool/try.cpp b/src/tool/try.cpp index b948ada31..7d3a0783f 100644 --- a/src/tool/try.cpp +++ b/src/tool/try.cpp @@ -4,25 +4,22 @@ */ // 8/07 - how to control NOBUG?? +// execute with NOBUG_LOG='ttt:TRACE' bin/try #include -#define NOBUG_LOG_LIMIT LOG_ERR #include -NOBUG_DECLARE_FLAG(ttt); - -NOBUG_DEFINE_FLAG(ttt); +//NOBUG_CPP_DEFINE_FLAG(ttt); +NOBUG_CPP_DEFINE_FLAG_LIMIT(ttt, LOG_WARNING); int main (int argc, char* argv[]) { NOBUG_INIT; - NOBUG_INIT_FLAG_LIMIT(ttt, LOG_WARNING); - TRACE(ttt,"trace"); INFO(ttt,"info"); NOTICE(ttt,"notice"); diff --git a/tests/50components.tests b/tests/50components.tests index afab5f280..11afe390f 100644 --- a/tests/50components.tests +++ b/tests/50components.tests @@ -1,4 +1,4 @@ -TESTING "Component Test Suite: ALL" ./test-components +TESTING "Component Test Suite: common and basic components" ./test-components --group=common @@ -71,6 +71,34 @@ out: dtor ~TargetObj(5) successfull END +TEST "Factory_special_test" Factory_special_test 5 < Testgroup=ALL diff --git a/tests/51asset.tests b/tests/51asset.tests new file mode 100644 index 000000000..37b7dac4f --- /dev/null +++ b/tests/51asset.tests @@ -0,0 +1,14 @@ +TESTING "Component Test Suite: Asset Manager" ./test-components --group=asset + + + +PLANNED "CreateAsset_test" CreateAsset_test < + + 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 "common/testtargetobj.hpp" +#include "common/factory.hpp" + +#include "common/test/run.hpp" +#include "common/util.hpp" +#include "nobugcfg.h" + +#include +#include +#include + +using boost::lexical_cast; +using boost::format; +using util::isnil; +using std::string; +using std::cout; + + +namespace cinelerra + { + namespace test + { + + /** + * Example Allocator using plain C memory management. + */ + class MallocAllocator + { + public: + void* operator new (size_t siz) { return malloc (siz); }; + void operator delete (void* p) { if (p) free (p); }; + }; + + + /** + * Simple subclass used for custom alloc and as Interface class + */ + class TargetO : public TestTargetObj + { + long additional_member; + + public: + TargetO (uint cnt) : TestTargetObj(cnt) {} + virtual ~TargetO () {}; + + /** Example Base/Interface function */ + virtual void funky() + { + cout << string(*this) << "\n"; + } + }; + + + /** + * Subclass of the Interface class TargetO, could be an implementation class. + */ + class ImplObj : public TargetO + { + public: + ImplObj () : TargetO(12) {} + + /** Example Implementation function */ + virtual void funky() + { + cout << ".....ImplObj::funky() called\n"; + TargetO::funky(); + } + }; + + + /** + * Another special Subclass, using custom allocation. + */ + class MallocO : public TestTargetObj, public MallocAllocator + { + public: + MallocO () : TestTargetObj (7) {} + }; + + + + class Factory2; + + /** + * Special Subclass prohibiting public use of ctor + */ + class ParanoidObj : public TestTargetObj + { + private: + ParanoidObj (uint cnt) : TestTargetObj(cnt) {} + ~ParanoidObj () {} + + friend class Factory2; + }; + + + + + /* ===== several specialized Factories ====== */ + + using std::tr1::shared_ptr; + + /** + * Factory creating refcounting TargetO pointers + * and using placement Allocation. + */ + class Factory1 : public Factory + { + public: + typedef shared_ptr PType; + + /** specialized Factory method + * doing placement new and invoking + * a special constructor. */ + PType operator() (uint param) { return wrap (new(alloc()) TargetO(param) ); } + + protected: + PType wrap (TargetO* tO) { return PType (tO, &destroy); } ///< note: providing custom deleter func + + static void destroy (TargetO* victim) { victim->~TargetO(); } ///< call dtor but don't delete mem + static void* alloc () { return buff; } ///< returning raw mem for new object + static char buff[]; ///< we place our (single) instance here + }; + char Factory1::buff[sizeof(TargetO)]; + + + + /** + * Factory usable if object can be constructed only by friends + */ + class Factory2 : public Factory + { + public: + typedef shared_ptr PType; + + /** allowed to call ctor because + * it's a friend of ParanoidObj. + * Note passing custom deleter. + */ + PType operator() (uint param) { return PType (new ParanoidObj(param), &destroy); } + + protected: + /** custom deleter func is allowed to call + * ~ParanoidObj() because of friendship + */ + static void destroy (ParanoidObj* victim) { delete victim; } + + }; + + + + /* === Factory instances ==============*/ + + typedef Factory FactoryM; + typedef factory::PImplPtr FactoryP; + + static Factory1 placement_fac; + static Factory2 paranoid_fac; + static FactoryM malloc_fac; + static FactoryP pimpl_fac; + + + + + + + /******************************************************************* + * testing the more advanced Factory variants and possibilities. + * We use several customized Factory subclasses supporting custom + * allocation, placement allocation, private construcors and + * the PIpmpl design pattern. All creating smart pointers. + */ + class Factory_special_test : public Test + { + virtual void run(Arg arg) + { + uint num= isnil(arg)? 1 : lexical_cast(arg[1]); + + checkPlacement (num); + checkPrivate (num); + checkMalloc (); + checkPImpl () ; + } + + + /** @test using direct object placement instead of heap allocation. + * Factory1 will place every new object into the same static buffer + * and return a refcounting pointer + */ + void checkPlacement (uint cnt) + { + cout << "checkPlacement--------\n"; + + typedef Factory1::PType P; + format msg ("created %d shared_ptrs to Object placed in static buffer.\n"); + void* raw (0); + P pX; + ASSERT (0 == pX.use_count()); + + { + P p1 (placement_fac (cnt)); + P p2 (p1); + P pX = p2; + + cout << msg % p2.use_count() + << string (*pX) << "\n"; + + raw = p1.get(); // remember raw mem address + } + + ASSERT (0 == pX.use_count()); + + { + P p1 (placement_fac (cnt+1)); + P p2 (p1); + P p3 (p1); + P pX = p2; + + cout << msg % p2.use_count(); + + ASSERT (raw == p1.get(), "explicit object placement at fixed buffer doesn't work."); + } + + ASSERT (0 == pX.use_count()); + } + + + + + /** @test simple factory creating std::auto_ptr wrapped instances + * of an object with only private ctor and dtor. + */ + void checkPrivate (uint cnt) + { + cout << "checkPrivate--------\n"; + + typedef Factory2::PType P; + format msg ("created %d shared_ptrs to paranoid Object.\n"); + P pX; + + ASSERT (0 == pX.use_count()); + { + P p1 (paranoid_fac (cnt)); + P p2 (p1); + P pX = p2; + + cout << msg % p2.use_count() + << string (*pX) << "\n"; + } + ASSERT (0 == pX.use_count()); + } + + + + + /** @test simple factory creating std::auto_ptr wrapped instances, + * but of a class using a custom allocation scheme (here implemented + * by direct C-style malloc calls) + */ + void checkMalloc (void) + { + cout << "checkMalloc--------\n"; + + typedef FactoryM::PType P; + + P p1 (malloc_fac ()); + P p2 = p1; + cout << ("created auto_ptr to malloc-ed Object.\n") + << string (*p2) << "\n"; + + ASSERT (!p1.get()); + } + + + + + /** @test using direct object placement instead of heap allocation. + * Factory1 will place every new object into the same static buffer + * and return a refcounting pointer + */ + void checkPImpl (void) + { + cout << "checkPImpl--------\n"; + + typedef FactoryP::PType P; + + P p1 (pimpl_fac ()); + P p2 = p1; + cout << ("created auto_ptr to Interface Object.\n"); + p2->funky(); // call a Interface function + + ASSERT (!p1.get()); + } + }; + + + /** Register this test class... */ + LAUNCHER (Factory_special_test, "unit common"); + + + + } // namespace test + +} // namespace cinelerra diff --git a/tests/components/common/factorytest.cpp b/tests/components/common/factorytest.cpp index b3038faf4..a57475ffd 100644 --- a/tests/components/common/factorytest.cpp +++ b/tests/components/common/factorytest.cpp @@ -21,18 +21,16 @@ * *****************************************************/ +#include "common/testtargetobj.hpp" + #include "common/test/run.hpp" #include "common/factory.hpp" #include "common/util.hpp" -#include #include -#include #include -using boost::algorithm::join; using boost::lexical_cast; -using boost::format; using util::isnil; using std::string; using std::cout; @@ -45,69 +43,31 @@ namespace cinelerra class ObjFactory; + /** * Target object to be created by the Test-Factory. * Allocates a variable amount of additional heap memory - * and prints diagnostic messages. + * and prints diagnostic messages. Note we provide a + * static member TargetObj::create for the client + * code to generate smart ptr wrapped instances. */ - class TargetObj + class TargetObj : public TestTargetObj { - uint cnt_; - string* heapData_; - string* heapArray_; - - - TargetObj(uint num) - : cnt_ (num), - heapData_ (new string(num,'*')), - heapArray_ (new string[num]) - { - for (uint i=0; i(i); - cout << format("ctor TargetObj(%i) successfull\n") % cnt_; - } - - - ~TargetObj() throw() - { - delete heapData_; - delete[] heapArray_; - cout << format("dtor ~TargetObj(%i) successfull\n") % cnt_; - } - - friend class ObjFactory; - - public: - static ObjFactory create; + TargetObj (uint cnt) : TestTargetObj(cnt) {} - operator string () const - { - string array_contents = "{"; - for (uint i=0; i { - static void destroy (TargetObj* victim) { delete victim; }; public: /** specialized Factory method for creating TargetObj instances. * Here, we invoke a special constructor, but basically we could @@ -115,14 +75,15 @@ namespace cinelerra * registering objects etc. Further, we could have used a * custom allocator or a special deleter function. */ - ptype operator() (uint param){ return ptype (new TargetObj (param), &destroy); }; + PType operator() (uint param) { return wrap (new TargetObj(param) ); } + }; - + /** shorthand for the created smart-pointer class, * here it's a (refcounting) boost::shared_ptr */ - typedef ObjFactory::ptype pTarget; + typedef ObjFactory::PType pTarget; ObjFactory TargetObj::create; diff --git a/tests/components/common/testtargetobj.hpp b/tests/components/common/testtargetobj.hpp new file mode 100644 index 000000000..20667cf92 --- /dev/null +++ b/tests/components/common/testtargetobj.hpp @@ -0,0 +1,111 @@ +/* + TESTTARGETOBJ.hpp - a test (stub) target object for testing the factories + + 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 CINELERRA_TEST_TESTTARGETOBJ_H +#define CINELERRA_TEST_TESTTARGETOBJ_H + + +#include "common/test/run.hpp" +#include "common/factory.hpp" +//#include "common/util.hpp" + +#include +#include +#include +#include + +using boost::algorithm::join; +using boost::lexical_cast; +using boost::format; +using std::string; +using std::cout; + + +namespace cinelerra + { + namespace test + { + /** + * Target object to be created by the Test-Factory. + * Allocates a variable amount of additional heap memory + * and prints diagnostic messages. + */ + class TestTargetObj + { + uint cnt_; + string* heapData_; + string* heapArray_; + + public: + TestTargetObj(uint num); + ~TestTargetObj() throw(); + + operator string () const; + }; + + + + inline + TestTargetObj::TestTargetObj(uint num) + : cnt_ (num), + heapData_ (new string(num,'*')), + heapArray_ (new string[num]) + { + for (uint i=0; i(i); + cout << format("ctor TargetObj(%i) successfull\n") % cnt_; + } + + + inline + TestTargetObj::~TestTargetObj() throw() + { + delete heapData_; + delete[] heapArray_; + cout << format("dtor ~TargetObj(%i) successfull\n") % cnt_; + } + + + + inline + TestTargetObj::operator string () const + { + string array_contents = "{"; + for (uint i=0; i + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace asset + { + namespace test + { + + + + + /*********************************************************************** + * @test creating new Assets and registering them with the AssetManager. + * @see proc_interface::AssetManager#reg + */ + class CreateAsset_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (CreateAsset_test, "unit asset"); + + + + } // namespace test + +} // namespace asset diff --git a/tests/components/proc/asset/deleteassettest.cpp b/tests/components/proc/asset/deleteassettest.cpp new file mode 100644 index 000000000..f7d8d5e9b --- /dev/null +++ b/tests/components/proc/asset/deleteassettest.cpp @@ -0,0 +1,67 @@ +/* + DeleteAsset(Test) - deleting and Asset with all dependencies + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace asset + { + namespace test + { + + + + + /******************************************************************* + * @test deleting an Asset includes removing all dependant Assets + * and all MObjects relying on these. Especially this means + * breaking all links between the involved Objects, so the + * shared-ptrs can do the actual cleanup. + * @see asset::Asset#unlink + * @see mobject::MObject#unlink + */ + class DeleteAsset_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (DeleteAsset_test, "function asset"); + + + + } // namespace test + +} // namespace asset diff --git a/tests/components/proc/asset/dependantassetstest.cpp b/tests/components/proc/asset/dependantassetstest.cpp new file mode 100644 index 000000000..648f2defd --- /dev/null +++ b/tests/components/proc/asset/dependantassetstest.cpp @@ -0,0 +1,65 @@ +/* + DependantAssets(Test) - unittest for the object creating factory + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace asset + { + namespace test + { + + + + + /******************************************************************* + * @test the handling of Assets dependant on other Assets and the + * enabling/disabling of Assets. + * @see asset::Asset + * @see asset::Clip + */ + class DependantAssets_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (DependantAssets_test, "unit function asset"); + + + + } // namespace test + +} // namespace asset diff --git a/tests/components/proc/asset/testclipasset.hpp b/tests/components/proc/asset/testclipasset.hpp new file mode 100644 index 000000000..3a06d1ba8 --- /dev/null +++ b/tests/components/proc/asset/testclipasset.hpp @@ -0,0 +1,58 @@ +/* + TESTCLIPASSET.hpp - test Media-Asset (clip) for checking Assets and MObjects + + 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 ASSET_TESTCLIPASSET_H +#define ASSET_TESTCLIPASSET_H + + +#include "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace asset + { + /** + * An asset::Media instance Test Clip for checking + * various Asset operations and for creating + * dependent Clip-MObjects. + * + */ + class TestClipAsset + { + public: + }; + + + + + +} // namespace asset +#endif diff --git a/tests/components/proc/engine/sourcenodetest.cpp b/tests/components/proc/engine/sourcenodetest.cpp new file mode 100644 index 000000000..e7fab2279 --- /dev/null +++ b/tests/components/proc/engine/sourcenodetest.cpp @@ -0,0 +1,62 @@ +/* + SourceNode(Test) - unit test of the source readering render node + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace engine + { + namespace test + { + + + + + /******************************************************************* + * @test the source reading render node. + */ + class SourceNode_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (SourceNode_test, "unit engine"); + + + + } // namespace test + +} // namespace engine diff --git a/tests/components/proc/mobject/builder/buildsegmenttest.cpp b/tests/components/proc/mobject/builder/buildsegmenttest.cpp new file mode 100644 index 000000000..800cb4558 --- /dev/null +++ b/tests/components/proc/mobject/builder/buildsegmenttest.cpp @@ -0,0 +1,67 @@ +/* + BuildSegment(Test) - building the render-tree for a segment of the EDL + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace mobject + { + namespace builder + { + namespace test + { + + + + + /******************************************************************* + * @test the builder core functionality: create a render pipeline + * for a given segment of the EDL. + */ + class BuildSegment_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (BuildSegment_test, "function builder"); + + + + } // namespace test + + } // namespace builder + +} // namespace mobject diff --git a/tests/components/proc/mobject/controller/rendersegmenttest.cpp b/tests/components/proc/mobject/controller/rendersegmenttest.cpp new file mode 100644 index 000000000..5ef4064f1 --- /dev/null +++ b/tests/components/proc/mobject/controller/rendersegmenttest.cpp @@ -0,0 +1,73 @@ +/* + RenderSegment(Test) - Proc-Layer Integrationtest + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace mobject + { + namespace controller + { + namespace test + { + + + + + /******************************************************************* + * @test create a render process from a given segment of the EDL. + * Basically this includes cooperation of all parts of the + * Cinelerra Proc Layer. For a prepared test-EDL we invoke the + * controller to create a render process. This includes building + * the render pipeline. Finally, we analyze all the created + * Structures. + * @note this test doesn't cover the actual rendering. + * @see proc_interface::ControllerFacade + */ + class RenderSegment_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (RenderSegment_test, "function operate"); + + + + } // namespace test + + } // namespace controller + +} // namespace mobject diff --git a/tests/components/proc/mobject/session/addcliptest.cpp b/tests/components/proc/mobject/session/addcliptest.cpp new file mode 100644 index 000000000..f6cc5def1 --- /dev/null +++ b/tests/components/proc/mobject/session/addcliptest.cpp @@ -0,0 +1,68 @@ +/* + AddClip(Test) - adding an Clip-MObject to the EDL/Session + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace mobject + { + namespace session + { + namespace test + { + + + + + /******************************************************************* + * @test adding an test clip to the EDL/Session. + * @see mobject::session::Clip + * @see mobject::session::EDL + */ + class AddClip_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (AddClip_test, "unit session"); + + + + } // namespace test + + } // namespace session + +} // namespace mobject diff --git a/tests/components/proc/mobject/session/deletecliptest.cpp b/tests/components/proc/mobject/session/deletecliptest.cpp new file mode 100644 index 000000000..4a5c01567 --- /dev/null +++ b/tests/components/proc/mobject/session/deletecliptest.cpp @@ -0,0 +1,68 @@ +/* + DeleteClip(Test) - removing an Clip-MObject from the Session + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace mobject + { + namespace session + { + namespace test + { + + + + + /******************************************************************* + * @test removing a test clip from the EDL. + * @see mobject::session::Clip + * @see mobject::session::EDL + */ + class DeleteClip_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (DeleteClip_test, "function session"); + + + + } // namespace test + + } // namespace session + +} // namespace mobject diff --git a/tests/components/proc/mobject/session/rebuildfixturetest.cpp b/tests/components/proc/mobject/session/rebuildfixturetest.cpp new file mode 100644 index 000000000..01ad76b34 --- /dev/null +++ b/tests/components/proc/mobject/session/rebuildfixturetest.cpp @@ -0,0 +1,69 @@ +/* + RebuildFixture(Test) - (re)building the explicit placements + + 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 "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace mobject + { + namespace session + { + namespace test + { + + + + + /******************************************************************* + * @test (re)building the ExplicitPlacement objects from the objects + * placed into the Session/EDL. + * @see mobject::session::Fixture + * @see mobject::ExplicitPlacement + */ + class RebuildFixture_test : public Test + { + virtual void run(Arg arg) + { + } + }; + + + /** Register this test class... */ + LAUNCHER (RebuildFixture_test, "unit session"); + + + + } // namespace test + + } // namespace session + +} // namespace mobject diff --git a/tests/components/proc/mobject/session/testclip.hpp b/tests/components/proc/mobject/session/testclip.hpp new file mode 100644 index 000000000..ec9ec8715 --- /dev/null +++ b/tests/components/proc/mobject/session/testclip.hpp @@ -0,0 +1,60 @@ +/* + TESTCLIP.hpp - test clip (stub) for checking EDL/Session functionality + + 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_TESTCLIP_H +#define MOBJECT_SESSION_TESTCLIP_H + + +#include "common/test/run.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace mobject + { + namespace session + { + /** + * Sample or Test Clip for checking + * various EDL, session and builder operations. + * + */ + class TestClip + { + public: + }; + + + + + } // namespace session + +} // namespace mobject +#endif diff --git a/tests/components/proc/mobject/session/testsession1.hpp b/tests/components/proc/mobject/session/testsession1.hpp new file mode 100644 index 000000000..5426047be --- /dev/null +++ b/tests/components/proc/mobject/session/testsession1.hpp @@ -0,0 +1,63 @@ +/* + TESTSESSION1.hpp - complete session configuration use for various tests + + 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_TESTCLIP_H +#define MOBJECT_SESSION_TESTCLIP_H + + +#include "proc/mobject/session/session.hpp" +#include "common/error.hpp" +//#include "common/factory.hpp" +//#include "common/util.hpp" + +//#include +#include + +//using boost::format; +using std::string; +using std::cout; + + +namespace mobject + { + namespace session + { + typedef std::auto_ptr PSession; /////TODO + + /** + * Create a Test Session configuration usable for various Tests. + * This Session holds two Clips and corresponds to "Example1" + * in the UML design. + */ + PSession Testsession1 () + { + UNIMPLEMENTED ("Test-Session 1"); + }; + + + + + } // namespace session + +} // namespace mobject +#endif diff --git a/uml/cinelerra3/128133 b/uml/cinelerra3/128133 index 3c6c34c2d..b457bbab8 100644 --- a/uml/cinelerra3/128133 +++ b/uml/cinelerra3/128133 @@ -1,6 +1,6 @@ -format 38 -"AssetManager" // AssetManager - revision 1 +format 40 +"AssetManager" // ProcessingLayer::AssetManager + revision 4 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default //sequence diagram settings - show_full_operations_definition default write_horizontally default drawing_language default draw_all_relations default shadow default + show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default //collaboration diagram settings show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default //object diagram settings @@ -26,4 +26,564 @@ format 38 package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default show_infonote default drawing_language default + classview 128901 "Assets" + //class diagram settings + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + //collaboration diagram settings + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + //object diagram settings + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + //sequence diagram settings + show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow 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 + //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 + + classdiagram 130309 "Asset Kinds" + draw_all_relations no hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + size A4 + end + + classdiagram 130437 "Media-Asset Relations" + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + size A4 + end + + class 136453 "Asset" + abstract visibility public stereotype "interface" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "${comment}${@}${visibility}interface ${name}${extends} { +${members}} +" + idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { +${members}}; +" + explicit_switch_type "" + + comment "Superinterface describing especially the bookeeping properties of Assets" + attribute 130437 "id" + const_attribute public explicit_type "long" + init_value "AssetManager::register (name, category, org, version)" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "Asset primary key." + end + + attribute 130565 "name" + const_attribute public explicit_type "string" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "element ID, comprehensible but sanitized. The tuple (category, name, org) is unique." + end + + classrelation 140421 // category () + relation 138629 ---> + a role_name "category" multiplicity "1" const_relation public + comment "primary tree like classification of the asset" + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 140421 // category () + b multiplicity "*" parent class_ref 137221 // Category + association_type class_ref 137221 // Category + end + + attribute 130821 "org" + const_attribute public explicit_type "string" + init_value "cin3" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "origin 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\"." + end + + attribute 130949 "version" + const_attribute public explicit_type "uint" + init_value "1" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "version 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." + end + + attribute 131077 "groups" + protected explicit_type "set" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "additional classification, selections or departments this asset belongs to. Groups are optional, non-exclusive and may be overlapping." + end + + attribute 131205 "shortDesc" + const_attribute protected explicit_type "string" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "user visible Name-ID. To be localized." + end + + attribute 131333 "longDesc" + const_attribute protected explicit_type "string" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "user visible qualification of the thing, unit or concept represented by this asset. perferably \"in one line\". To be localized." + end + + operation 132101 "getParents" + public explicit_return_type "vector" + 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 "List 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" + end + + operation 132229 "getDependant" + public explicit_return_type "vector" + 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 "All 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." + end + + operation 132869 "isActive" + public explicit_return_type "bool" + 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 "weather this asset is swithced on and consequently included in the fixture and participates in rendering" + end + + operation 132997 "enable" + public explicit_return_type "void" + nparams 1 + param in name "bool" explicit_type "" + nexceptions 1 + exception class_ref 135941 // State + 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 "change the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well" + end + end + + class 136581 "AssetManager" + visibility public stereotype "boundary" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { +${members}}; +" + explicit_switch_type "" + + comment "Facade for the Asset subsystem" + operation 132357 "register" + class_operation public explicit_return_type "long" + nparams 4 + param inout name "name" explicit_type "string" + param inout name "category" explicit_type "string" + param inout name "org" explicit_type "string" + param inout name "uint" explicit_type "version" + nexceptions 1 + explicit_exception "Invalid" + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0} & ${p0}, ${t1} & ${p1}, ${t2} & ${p2}, ${t3}& ${p3}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0} & ${p0}, ${t1} & ${p1}, ${t2} & ${p2}, ${t3}& ${p3}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + comment "registers an asset object in the internal DB, providing its unique key" + end + + operation 132485 "getAsset" + public explicit_return_type "KIND" + nparams 1 + param in name "id" explicit_type "long" + nexceptions 1 + exception class_ref 136069 // Invalid + cpp_decl " ${comment}template +${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0} & ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}template +${inline}${type} +${class}::${name} ${(}${t0} & ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + comment "find and return corresponging object" + end + + operation 132613 "known" + public explicit_return_type "bool" + nparams 1 + param in name "id" explicit_type "long" + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0} ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0} ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + comment "@return true if the given id is registered in the internal asset DB" + end + + operation 132741 "remove" + public explicit_return_type "void" + nparams 1 + param in name "id" explicit_type "long" + nexceptions 2 + exception class_ref 136069 // Invalid + exception class_ref 135941 // State + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0} ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0} ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + comment "remove the given asset together with all its dependants from the internal DB" + end + end + + class 136709 "Media" + visibility public + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "key abstraction: media-like assets" + classrelation 139909 // + relation 138117 -_-|> + a public + cpp default "${type}" + classrelation_ref 139909 // + b multiplicity "" parent class_ref 136453 // Asset + end + end + + class 136837 "Proc" + visibility public + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "key abstraction: data processing asset" + classrelation 140037 // + relation 138245 -_-|> + a public + cpp default "${type}" + classrelation_ref 140037 // + b multiplicity "" parent class_ref 136453 // Asset + end + end + + class 136965 "Struct" + visibility public + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "key abstraction: structural asset" + classrelation 140165 // + relation 138373 -_-|> + a public + cpp default "${type}" + classrelation_ref 140165 // + b multiplicity "" parent class_ref 136453 // Asset + end + end + + class 137093 "Meta" + visibility public + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "key abstraction: metadata and organisational asset" + classrelation 140293 // + relation 138501 -_-|> + a public + cpp default "${type}" + classrelation_ref 140293 // + b multiplicity "" parent class_ref 136453 // Asset + end + end + + class 137221 "Category" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "tree like classification of Assets" + end + + class 137349 "Clip" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "bookkeeping (asset) view of a media clip." + classrelation 140549 // + relation 138757 ---|> + a public + cpp default "${type}" + classrelation_ref 140549 // + b multiplicity "" parent class_ref 136709 // Media + end + + classrelation 141957 // source () + relation 140165 ---> + a role_name "source" multiplicity "1" const_relation protected + comment "media source of this clip" + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 141957 // source () + b multiplicity "*" parent class_ref 136709 // Media + association_type class_ref 136709 // Media + end + end + + class 137477 "Unknown" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "placeholder for unknown or unavailable media source" + classrelation 140933 // + relation 139141 ---|> + a public + cpp default "${type}" + classrelation_ref 140933 // + b multiplicity "" parent class_ref 137605 // Preview + end + end + + class 137605 "Preview" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "alternative version of the media data, probably with lower resolution" + classrelation 140805 // + relation 139013 ---|> + a public + cpp default "${type}" + classrelation_ref 140805 // + b multiplicity "" parent class_ref 136709 // Media + end + end + + class 137733 "Effect" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "Effect or media processing component" + classrelation 141061 // + relation 139269 ---|> + a public + cpp default "${type}" + classrelation_ref 141061 // + b multiplicity "" parent class_ref 136837 // Proc + end + end + + class 137861 "Codec" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "description of some media data decoder or encoder facility" + classrelation 141189 // + relation 139397 ---|> + a public + cpp default "${type}" + classrelation_ref 141189 // + b multiplicity "" parent class_ref 136837 // Proc + end + end + + class 137989 "Track" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "structural asset holding the configuration of a track in the EDL" + classrelation 141317 // + relation 139525 ---|> + a public + cpp default "${type}" + classrelation_ref 141317 // + b multiplicity "" parent class_ref 136965 // Struct + end + end + + class 138117 "OutPort" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "structural asset corresponding to some port generating media output" + classrelation 141445 // + relation 139653 ---|> + a public + cpp default "${type}" + classrelation_ref 141445 // + b multiplicity "" parent class_ref 136965 // Struct + end + end + + class 138245 "Dataset" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "meta asset describing a collection of control data" + classrelation 141573 // + relation 139781 ---|> + a public + cpp default "${type}" + classrelation_ref 141573 // + b multiplicity "" parent class_ref 137093 // Meta + end + end + end end diff --git a/uml/cinelerra3/128261 b/uml/cinelerra3/128261 index c3e6e1c4e..e6d8a8100 100644 --- a/uml/cinelerra3/128261 +++ b/uml/cinelerra3/128261 @@ -1,6 +1,6 @@ format 40 "MObject" // ProcessingLayer::MObject - revision 16 + revision 17 modified_by 5 "hiv" // class settings //class diagram settings @@ -414,6 +414,17 @@ ${inlines} idl_decl "" comment "startpos in source" end + + classrelation 141829 // source () + relation 140037 ---> + a role_name "source" multiplicity "1" const_relation protected + comment "the media source this clip referes to" + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 141829 // source () + b multiplicity "*" parent class_ref 137349 // Clip + association_type class_ref 128901 // Clip + end end class 129029 "Effect" diff --git a/uml/cinelerra3/128389 b/uml/cinelerra3/128389 index 44e647971..6581cb200 100644 --- a/uml/cinelerra3/128389 +++ b/uml/cinelerra3/128389 @@ -1,6 +1,6 @@ format 40 "RenderEngine" // ProcessingLayer::RenderEngine - revision 10 + revision 11 modified_by 5 "hiv" // class settings //class diagram settings @@ -559,6 +559,14 @@ ${inlines} classrelation_ref 136069 // b multiplicity "" parent class_ref 131717 // ProcNode end + + classrelation 141701 // + relation 139909 -_-> + a default + cpp default "Generated" + classrelation_ref 141701 // + b multiplicity "" parent class_ref 136709 // Media + end end end end diff --git a/uml/cinelerra3/129669 b/uml/cinelerra3/129669 index 6ab555985..b2c2e0372 100644 --- a/uml/cinelerra3/129669 +++ b/uml/cinelerra3/129669 @@ -1,6 +1,6 @@ format 40 "proc" // design::codegen::proc - revision 6 + revision 7 modified_by 5 "hiv" // class settings //class diagram settings @@ -38,6 +38,84 @@ All classes belonging to the (middle) processing layer" 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 136197 "assetmanager" + 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 136581 // AssetManager + end + comment "Facade for the Asset subsystem" + end + + artifact 136069 "asset" + 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 136453 // Asset + end + comment "Superinterface: bookeeping view of \"things\" present in the session" + end + artifact 130949 "stateproxy" stereotype "source" cpp_h "/* diff --git a/uml/cinelerra3/130053 b/uml/cinelerra3/130053 index 0bf8553f3..b9cf1d9ad 100644 --- a/uml/cinelerra3/130053 +++ b/uml/cinelerra3/130053 @@ -1,6 +1,6 @@ format 40 "asset" // design::codegen::proc::asset - revision 2 + revision 4 modified_by 5 "hiv" // class settings //class diagram settings @@ -38,5 +38,511 @@ Asset Management" 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 137733 "dataset" + 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 138245 // Dataset + end + comment "meta asset describing a collection of control data" + end + + artifact 135941 "category" + 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 137221 // Category + end + comment "tree like classification of Assets" + end + + artifact 136453 "media" + 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 136709 // Media + end + comment "key abstraction: media-like assets" + end + + artifact 136581 "proc" + 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 136837 // Proc + end + comment "key abstraction: media-like assets" + end + + artifact 136709 "struct" + 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 136965 // Struct + end + comment "key abstraction: structural asset" + end + + artifact 136837 "meta" + 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 137093 // Meta + end + comment "key abstraction: metadata and organisational asset" + end + + artifact 136325 "clip" + 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 137349 // Clip + end + comment "bookkeeping (asset) view of a media clip." + end + + artifact 136965 "preview" + 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 137605 // Preview + end + comment "alternative version of the media data, probably with lower resolution" + end + + artifact 137093 "unknown" + 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 137477 // Unknown + end + comment "placeholder for unknown or unavailable media source" + end + + artifact 137221 "effect" + 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 137733 // Effect + end + comment "Effect or media processing component" + end + + artifact 137349 "codec" + 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 137861 // Codec + end + comment "description of some media data decoder or encoder facility" + end + + artifact 137605 "outport" + 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 138117 // OutPort + end + comment "structural asset corresponding to some port generating media output" + end + + artifact 137477 "track" + 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 137989 // Track + end + comment "structural asset holding the configuration of a track in the EDL" + end end end diff --git a/uml/cinelerra3/130181 b/uml/cinelerra3/130181 index c20af94e1..0bb6e6de6 100644 --- a/uml/cinelerra3/130181 +++ b/uml/cinelerra3/130181 @@ -1,6 +1,6 @@ format 40 "mobject" // design::codegen::proc::mobject - revision 6 + revision 7 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/cinelerra3/130309.diagram b/uml/cinelerra3/130309.diagram new file mode 100644 index 000000000..d1300390d --- /dev/null +++ b/uml/cinelerra3/130309.diagram @@ -0,0 +1,133 @@ +format 40 + +classcanvas 128005 class_ref 136453 // Asset + 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 96 16 2000 + end +classcanvas 128133 class_ref 136581 // AssetManager + 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 class drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 289 26 2000 + end +packagecanvas 128517 + package_ref 128133 // AssetManager + xyzwh 217 182 1994 575 534 +classcanvas 128645 class_ref 136709 // Media + 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 273 347 2005 + end +classcanvas 128773 class_ref 136837 // Proc + 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 428 347 2005 + end +classcanvas 128901 class_ref 136965 // Struct + 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 603 347 2005 + end +classcanvas 129029 class_ref 137093 // 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 + xyz 723 347 2005 + end +classcanvas 130821 class_ref 137221 // Category + 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 277 233 2004 + end +classcanvas 131077 class_ref 137349 // Clip + 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 236 445 2000 + end +classcanvas 131333 class_ref 137477 // Unknown + 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 303 529 2000 + end +classcanvas 131461 class_ref 137605 // Preview + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 308 445 2005 + end +classcanvas 131973 class_ref 137733 // 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 402 445 2000 + end +classcanvas 132101 class_ref 137861 // Codec + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 463 445 2000 + end +classcanvas 132485 class_ref 137989 // Track + 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 563 445 2000 + end +classcanvas 132613 class_ref 138117 // OutPort + 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 626 445 2000 + end +classcanvas 132997 class_ref 138245 // Dataset + 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 719 445 2000 + end +relationcanvas 129157 relation_ref 138117 // + geometry VHV + from ref 128645 z 1999 to point 293 315 + line 129797 z 1999 to point 138 315 + line 129925 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129285 relation_ref 138245 // + geometry VHV + from ref 128773 z 1999 to point 448 315 + line 130053 z 1999 to point 138 315 + line 130181 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129413 relation_ref 138373 // + geometry VHV + from ref 128901 z 1999 to point 623 315 + line 130309 z 1999 to point 138 315 + line 130437 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129541 relation_ref 138501 // + geometry VHV + from ref 129029 z 1999 to point 743 315 + line 130565 z 1999 to point 138 315 + line 130693 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 130949 relation_ref 138629 // + from ref 128005 z 1999 to ref 130821 + role_a_pos 223 229 3000 no_role_b + multiplicity_a_pos 260 250 3000 multiplicity_b_pos 194 194 3000 +relationcanvas 131205 relation_ref 138757 // + from ref 131077 z 1999 to ref 128645 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 131717 relation_ref 139013 // + from ref 131461 z 2004 to ref 128645 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 131845 relation_ref 139141 // + from ref 131333 z 1999 to ref 131461 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 132229 relation_ref 139269 // + from ref 131973 z 1999 to ref 128773 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 132357 relation_ref 139397 // + from ref 132101 z 1999 to ref 128773 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 132741 relation_ref 139525 // + from ref 132485 z 1999 to ref 128901 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 132869 relation_ref 139653 // + from ref 132613 z 1999 to ref 128901 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 133125 relation_ref 139781 // + from ref 132997 z 1999 to ref 129029 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +line 128261 -_-_ geometry HV + from ref 128005 z 1999 to point 330 150 + line 128389 z 1999 to ref 128133 +end diff --git a/uml/cinelerra3/130437.diagram b/uml/cinelerra3/130437.diagram new file mode 100644 index 000000000..c10d368c7 --- /dev/null +++ b/uml/cinelerra3/130437.diagram @@ -0,0 +1,147 @@ +format 40 + +classcanvas 128005 class_ref 137349 // Clip + 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 469 148 2000 + end +classcanvas 128133 class_ref 136709 // Media + 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 545 50 2005 + end +classcanvas 128261 class_ref 137477 // Unknown + 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 536 232 2000 + end +classcanvas 128389 class_ref 137605 // Preview + 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 541 148 2005 + end +classcanvas 128901 class_ref 128901 // Clip + 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 96 206 2000 + end +classcanvas 129029 class_ref 128517 // MObject + 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 79 46 2000 + end +classcanvas 129157 class_ref 128773 // AbstractMO + 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 81 142 2000 + end +classcanvas 130309 class_ref 131717 // ProcNode + 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 271 279 2000 + end +classcanvas 130821 class_ref 133765 // Source + 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 396 407 2000 + end +classcanvas 131077 class_ref 135045 // CodecAdapter + 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 320 477 2000 + end +classcanvas 131205 class_ref 131845 // Trafo + 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 317 407 2000 + end +classcanvas 134277 class_ref 133381 // AFrame + 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 530 480 2000 + end +classcanvas 134405 class_ref 133509 // VFrame + 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 584 480 2000 + end +classcanvas 134661 class_ref 133253 // Frame + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 571 355 2000 + end +packagecanvas 135685 + package_ref 128261 // MObject + xyzwh 24 10 1994 185 313 +packagecanvas 135813 + package_ref 128133 // AssetManager + xyzwh 454 10 1994 198 292 +note 136837 "the Builder implements each Clip by a source node and maybe some codec" + xyzwh 53 376 2000 219 61 +relationcanvas 128517 relation_ref 139141 // + from ref 128261 z 1999 to ref 128389 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 128645 relation_ref 138757 // + from ref 128005 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 128773 relation_ref 139013 // + from ref 128389 z 2004 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129541 relation_ref 129413 // + from ref 128901 z 1999 to ref 129157 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129669 relation_ref 129285 // + geometry VHr + from ref 129157 z 1999 to point 116 161 + line 129797 z 1999 to ref 129029 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 132357 relation_ref 132229 // + geometry VHV + from ref 131205 z 1999 to point 337 373 + line 132485 z 1999 to point 308 373 + line 132613 z 1999 to ref 130309 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 132741 relation_ref 135429 // + from ref 130309 z 1999 to point 241 279 + line 132869 z 1999 to point 241 309 + line 132997 z 1999 to ref 130309 + role_a_pos 223 287 3000 no_role_b + no_multiplicity_a multiplicity_b_pos 254 306 3000 +relationcanvas 133125 relation_ref 136965 // + from ref 131077 z 1999 to ref 131205 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 133893 relation_ref 134661 // + geometry VHV + from ref 130821 z 1999 to point 418 373 + line 134021 z 1999 to point 308 373 + line 134149 z 1999 to ref 130309 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 134789 relation_ref 133893 // + geometry VHV + from ref 134277 z 1999 to point 554 447 + line 134917 z 1999 to point 608 447 + line 135045 z 1999 to ref 134661 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 135301 relation_ref 134021 // + geometry VHV + from ref 134405 z 1999 to point 608 447 + line 135429 z 1999 to point 608 447 + line 135557 z 1999 to ref 134661 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 135941 relation_ref 139909 // + from ref 130821 z 1999 to point 433 383 + line 136069 z 1999 to point 433 68 + line 136197 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 136325 relation_ref 140037 // + from ref 128901 z 1999 to point 224 231 + line 136709 z 1999 to point 370 166 + line 136581 z 1999 to ref 128005 + role_a_pos 382 147 3000 no_role_b + multiplicity_a_pos 452 177 3000 multiplicity_b_pos 150 242 3000 +relationcanvas 136965 relation_ref 140165 // + geometry VH + from ref 128005 z 1999 to point 489 69 + line 137093 z 1999 to ref 128133 + role_a_pos 491 49 3000 no_role_b + multiplicity_a_pos 524 72 3000 multiplicity_b_pos 477 123 3000 +line 136453 -_-_ + from ref 136325 z 1998 to ref 128901 +end diff --git a/uml/cinelerra3/5.session b/uml/cinelerra3/5.session index 431e0a5d0..b106f468a 100644 --- a/uml/cinelerra3/5.session +++ b/uml/cinelerra3/5.session @@ -1,17 +1,20 @@ -window_sizes 1104 756 270 824 557 120 +window_sizes 1140 783 270 860 584 120 diagrams - active classdiagram_ref 130181 // Hierarchy - 762 514 100 4 0 0 + active classdiagram_ref 130309 // Asset Kinds + 860 584 100 4 0 0 end show_stereotypes -selected artifact_ref 135813 // error +selected +package_ref 129 // cinelerra3 open - deploymentview_ref 128261 // gen - deploymentview_ref 128773 // gen - package_ref 129797 // gui - - package_ref 129285 // ProcessingLayer +package_ref 128005 // design + class_ref 136453 // Asset + class_ref 136581 // AssetManager + class_ref 136709 // Media + class_ref 137349 // Clip + classview_ref 128005 // Session + classview_ref 128133 // Engine Workings class_ref 135685 // Logic class_ref 135813 // Config class_ref 135941 // State diff --git a/uml/cinelerra3/cinelerra3.prj b/uml/cinelerra3/cinelerra3.prj index 7c1c4f1f6..9608f43c3 100644 --- a/uml/cinelerra3/cinelerra3.prj +++ b/uml/cinelerra3/cinelerra3.prj @@ -1,6 +1,6 @@ format 40 "cinelerra3" - revision 26 + revision 27 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 5c2362e25..224f4c324 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -514,12 +514,39 @@ ColorPalette SiteUrl
-
-
Asset management is a subsystem on its own. Assets are "things" that can be loaded into a session, like Media, Clips, Effects, Transitions. It is the "bookkeeping view", while the EDL is the "manipulation and process view".
+
+
Asset management is a subsystem on its own. Assets are "things" that can be loaded into a session, like Media, Clips, Effects, Transitions. It is the "bookkeeping view", while the EDL is the "manipulation and process view". Some Assets can be //loaded// and a collection of Assets is saved with eatch Session. Besides, there is a collection of basic Assets allways available by default.
 
-The Assets are important reference points holding the information needed to access external resources. For example, an Clip asset can reference a Media asset, which in turn holds the external filename from which to get the media stream. Or, an Effect asset can hold a plugin-ID.
+The Assets are important reference points holding the information needed to access external resources. For example, an Clip asset can reference a Media asset, which in turn holds the external filename from which to get the media stream. For Effects, the situatin is similar. Assets thus serve two quite distinct purposes. One is to load, list, group serarch and browse them, and to provide an entry point to create new or get at existing MObjects in the EDL, while the other purpose is to provide attribute and property informations to the inner parts of the engine, while at the same time isolating and decoupling them from environmental details. 
 
-!still to be worked out..
+We can distinguish several different Kinds of Assets, each one with specific properties. While all these Kinds of Assets implement the basic Asset interface, they themselfs are the __key abstractions__ of the asset management view. Mostly, their interfaces will be used directly, because they are quite different in behaviour. Thus it is common to see asset related operations being templated on the Asset Kind. 
+[img[Asset Classess|uml/fig130309.png]]
+
+!Media Asset
+Some piece of Media Data accessible at some external Location an able to be processed by Cinelerra. A Media File on Harddisk can be considered as the most basic form of Media Asset, with some important derived Flavours, like a Placeholder for a currently unavailable Source, or Media available in different Resolutions or Formats.
+* __outward interface operations__ include querying properties, creating an Clip MObject, controlling processing policy (low res proxy placeholders, interlacing and other generic pre- and postprocessing)
+* __inward interface operations__ include querying filename, codec, offset and any other informations necessary for creating a source render node, getting additional processing policy decisions (handling of interlacing, aspect ratio).
+&rarr; MediaAsset
+
+!Processing Asset
+Some software component able to work on media data in the Cinelerra Render engine Framework. This includes all sorts of loadable effects, as well as some of the standard, internal facilities (Mask, Projector). Note that Processing Assets typically provide some attachment Point or means of communication with GUI facilities.
+* __outward interface operations__ include...
+* __inward interface operations__ include...
+&rarr; ProcAsset {{red{to be defined}}}
+
+!Structural Asset
+Some of the building blocks providing the framework for the objects placed into the current Session. Notable examples are Input/Output channels (Ports), Viewer attachment points, Tracks, etc.
+* __outward interface operations__ include...
+* __inward interface operations__ include...
+&rarr; StructAsset {{red{to be defined}}}
+
+!Meta Asset
+Some additional, virtual facilities created in the course of the editing process. Examples are Automation data sets, Lables and reference points, Meta Clips (nested sub-~EDLs)
+* __outward interface operations__ include...
+* __inward interface operations__ include...
+&rarr; MetaAsset {{red{to be defined}}}
+
+!!!!still to be worked out..
 is how to implement the relationship between [[MObject]]s and Assets. Do we use direct pointers, or do we prefer an ID + central registry approach? And how to handle the removal of an Asset (&rarr; see also [[analysis of mem management|ManagementAssetRelation]])
 
@@ -1292,8 +1319,16 @@ This Design strives to achieve a StrongSeparation between the low-level Structur [[Admin]] <<fullscreen>>
-
-
Problem is: when removing an Asset, all corresponding MObjects need to disappear. This means, besides the obvious Ref-Link (MObject refering to an asset) we need backlinks or a sort of registry. And still worse: we need to remove the affetcted MObject from the object network in the EDL and rebuild the Fixture...
+
+
Problem is: when removing an Asset, all corresponding MObjects need to disappear. This means, besides the obvious ~Ref-Link (MObject refering to an asset) we need backlinks or a sort of registry. And still worse: we need to remove the affetcted MObject from the object network in the EDL and rebuild the Fixture...
+
+As a //first shot// Ichthyo considers the following approach:
+* all references between MObjects and Assets are implemented as refcounting boost::shared_ptr
+* MObjects and Assets implement an {{{unlink()}}} function releasing the internal links to other entities.
+* Instead of a delete, we call this unlink() function and let the shared_ptr handle the actual deletion.
+* we don't use a registry, rather we model the real dependencies by individual dependency links. So a MediaAsset gets links to all Clips created from this Asset and by traversing this tree, we can handle the deletion
+* after the deletion, the Fixture needs to be rebuilt.
+* but any render processes still can have pointers to the Asset to be removed, and the shared_ptr will ensure, that the refered objects stay alive as long as needed.
 
 {{red{to be considered in more detail later}}}
 
@@ -1305,6 +1340,10 @@ This Design strives to achieve a StrongSeparation between the low-level Structur <style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;">loading <b>Cinelerra Renderengine</b> devel doku<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
+
+
The Interface asset::Media is a //key abstraction// It ties together several concepts and enables to deal with them on the interfaces in a uniform manner. Besides, as every Asset kind it belongs rather to the bookkeeping view: it holds the specific properties and parametrisation of the media source it stands for. Regarding the __inward interface__ &mdash; as used from within the [[EDL]] or the [[Render Nodes|ProcNode]], it is irrelevant if a given asset::Media object stands for a complete media source, just a clip taken from this source or if a placeholder version of the real media source is used instead.
+[img[Asset Classess|uml/fig130437.png]]
+
Of course: Cinelerra currently leaks memory and crashes regularilly. For the newly written code, besides retaining the same performance level, a main goal is to use methods and techniques known to support the writing of quality code. So, besides the MultithreadConsiderations, a solid strategy for managing the ownership of allocated memory blocks is necessary right from start.