merge Lumiera renaming

WIP doesn't pass the compiler (not due to the merge)
This commit is contained in:
Fischlurch 2008-03-10 08:38:59 +01:00
commit c4128c9816
404 changed files with 1823 additions and 1824 deletions

View file

@ -29,8 +29,8 @@ doudou=Sylvain Joyeux <doudou@melix.net>
rafael2k=Rafael Diniz <rafael@riseup.net>
nicolasm=Nicolas Maufrais <e.conti@gmx.net>
Involved in Design Studies / Prototypes for Cinelerra-3
=======================================================
Involved in Lumiera development
===============================
cehteh=Christian Thaeter <ct@pipapo.org>
ichthyo=Hermann Vosseler <Ichthyostega@web.de>
plouj=Michael Ploujnikov <ploujj@gmail.com>

View file

@ -1 +1 @@
The root dir for the cinelerra3 project
The root dir for the Lumiera project

View file

@ -1,5 +1,5 @@
Running / Installing Cinelerra-3 Prototype
==========================================
Running / Installing Lumiera Prototype
======================================
** to be written **

11
LICENSE
View file

@ -1,17 +1,10 @@
The Cinelerra source code is (C) by the original authors (see AUTHORS)
The Lumiera source code is (C) by the original authors (see AUTHORS)
=======================================================================
Cinelerra is free software -- you may use and redistribute it under the
Lumiera is free software -- you may use and redistribute it under the
Terms and conditions of the GNU GENERAL PUBLIC LICENSE (GPL);
either version 2 of the License, or (at your option) any later version.
=======================================================================
For a copy of the GPL Version 2 see the file "COPYING"
In addition to the GPL's warranty stipulation, Cinelerra is distributed WITHOUT
GUARANTEED SUPPORT; without even the guarantee of ADDITIONAL LABOR. Support
that is not guaranteed includes technical support, compiler troubleshooting,
debugging, version matching, updating, among other additional labor which
may or may not be required to meet a user's requirements.

View file

@ -1,4 +1,4 @@
# Copyright (C) CinelerraCV
# Copyright (C) Lumiera.org
# 2007, Christian Thaeter <ct@pipapo.org>
#
# This program is free software; you can redistribute it and/or

29
README
View file

@ -1,8 +1,8 @@
======================================
Cinelerra -- the video NLE for Linux
======================================
====================================
Lumiera -- the video NLE for Linux
====================================
Cinelerra is a nonlinear video editing and compositing tool.
Lumiera is a nonlinear video editing and compositing tool.
It understands some of the common multimedia formats
(quicktime, avi, ogg) and audio/video compression
codecs (divx, xvid, mpeg1/2/4, ...)
@ -12,23 +12,30 @@ Cinelerra -- the video NLE for Linux
and RGB-float colormodels and the ability to mix media
with differing sizes and framerates.
For more information about Lumiera visit http://lumiera.org/
For more information about Cinelerra visit http://cinelerra.org/
------------------------------
"Cinelerra-3" prototype code
------------------------------
----------------------------
"Lumiera" prototype code
----------------------------
**This source tree doesn't contain a working video editing application**
Rather, it contains some design studies and prototype code for improving
some aspects of the Cinelerra Application. This work may eventually
evolve into a new major release of Cinelerra.
**This source tree doesn't yet contain a working video editing application**
Rather, it contains the initial framework and core modules of the lower and
middle layer of the envisioned new Application "Lumiera".
As of 7/2007, we start here with some backend and render engine modules
together with some unit tests. You should find a wiki with detailed
design considerations and developer documentation and a UML model
(usable with BOUML 2.29) in the sibling directories.
As of 2/2008 the project has been separated completely from his ancestor "Cinelerra"
The Community, which is largely identical to the Cinelerra-CV community, choose the
new project name "Lumiera". The basic project infrastructure is up and running,
and work on the new codebase is going on continuosely. We can show nothing but
a running test suite for now.
Build Requirements
------------------

View file

@ -1,10 +1,10 @@
# -*- python -*-
##
## SConstruct - SCons based build-sytem for Cinelerra
## SConstruct - SCons based build-sytem for Lumiera
##
# Copyright (C) CinelerraCV
# 2007, Hermann Vosseler <Ichthyostega@web.de>
# Copyright (C) Lumiera.org
# 2008, Hermann Vosseler <Ichthyostega@web.de>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
@ -61,7 +61,7 @@ def setupBasicEnvironment():
, SRCDIR=SRCDIR
, BINDIR=BINDIR
, CPPPATH=["#"+SRCDIR] # used to find includes, "#" means always absolute to build-root
, CPPDEFINES=['-DCINELERRA_VERSION='+VERSION ] # note: it's a list to append further defines
, CPPDEFINES=['-DLUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines
, CCFLAGS='-Wall ' # -fdiagnostics-show-option
)
@ -134,7 +134,7 @@ def defineCmdlineOptions():
def prepareOptionsHelp(opts,env):
prelude = """
USAGE: scons [-c] [OPTS] [key=val [key=val...]] [TARGETS]
Build and optionally install Cinelerra.
Build and optionally install Lumiera.
Without specifying any target, just the (re)build target will run.
Add -c to the commandline to clean up anything a given target would produce
@ -234,21 +234,21 @@ def defineBuildTargets(env, artifacts):
We use a custom function to declare a whole tree of srcfiles.
"""
cinobj = ( srcSubtree(env,'$SRCDIR/backend')
lumobj = ( srcSubtree(env,'$SRCDIR/backend')
+ srcSubtree(env,'$SRCDIR/proc')
+ srcSubtree(env,'$SRCDIR/common')
+ srcSubtree(env,'$SRCDIR/lib')
)
plugobj = srcSubtree(env,'$SRCDIR/plugin', isShared=True)
core = env.StaticLibrary('$BINDIR/core.la', cinobj)
#core = cinobj # use this for linking directly
core = env.StaticLibrary('$BINDIR/core.la', lumobj)
#core = lumobj # use this for linking directly
# use PCH to speed up building
precomp = env.PrecompiledHeader('$SRCDIR/pre')
env.Depends(cinobj, precomp)
env.Depends(lumobj, precomp)
artifacts['cinelerra'] = env.Program('$BINDIR/cinelerra', ['$SRCDIR/main.cpp']+ core )
artifacts['plugins'] = env.SharedLibrary('$BINDIR/cinelerra-plugin', plugobj)
artifacts['lumiera'] = env.Program('$BINDIR/lumiera', ['$SRCDIR/main.cpp']+ core )
artifacts['plugins'] = env.SharedLibrary('$BINDIR/lumiera-plugin', plugobj)
# call subdir SConscript(s) for independent components
SConscript(dirs=[SRCDIR+'/tool'], exports='env artifacts')
@ -264,7 +264,7 @@ def definePostBuildTargets(env, artifacts):
il = env.Alias('install-lib', '$DESTDIR/lib')
env.Alias('install', [ib, il])
build = env.Alias('build', '$BINDIR')
build = env.Alias('build', artifacts['lumiera']+artifacts['plugins'])
allbu = env.Alias('allbuild', build+artifacts['testsuite'])
env.Default('build')
# additional files to be cleaned when cleaning 'build'
@ -286,11 +286,11 @@ def definePostBuildTargets(env, artifacts):
def defineInstallTargets(env, artifacts):
""" define some artifacts to be installed into target locations.
"""
env.Install(dir = '$DESTDIR/bin', source=artifacts['cinelerra'])
env.Install(dir = '$DESTDIR/bin', source=artifacts['lumiera'])
env.Install(dir = '$DESTDIR/lib', source=artifacts['plugins'])
env.Install(dir = '$DESTDIR/bin', source=artifacts['tools'])
env.Install(dir = '$DESTDIR/share/doc/cinelerra$VERSION/devel', source=artifacts['doxydoc'])
env.Install(dir = '$DESTDIR/share/doc/lumiera$VERSION/devel', source=artifacts['doxydoc'])
#####################################################################
@ -310,7 +310,7 @@ artifacts = {}
# the various things we build.
# Each entry actually is a SCons-Node list.
# Passing these entries to other builders defines dependencies.
# 'cinelerra' : the App
# 'lumiera' : the App
# 'plugins' : plugin shared lib
# 'tools' : small tool applications (e.g mpegtoc)
# 'src,tar' : source tree as tarball (without doc)

View file

@ -3,8 +3,8 @@
## Buildhelper.py - helpers, custom builders, for SConstruct
##
# Copyright (C) CinelerraCV
# 2007, Hermann Vosseler <Ichthyostega@web.de>
# Copyright (C) Lumiera.org
# 2008, Hermann Vosseler <Ichthyostega@web.de>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
@ -123,8 +123,8 @@ def Tarball(env,location,dirs,suffix=''):
"""
targetID = '../extern-tar%s' % suffix
versionID = env['VERSION']
defaultName = 'cinelerra%s_%s' % (suffix, versionID)
nameprefix = 'cinelerra-%s/' % (versionID)
defaultName = 'lumiera%s_%s' % (suffix, versionID)
nameprefix = 'lumiera-%s/' % (versionID)
location = env.subst(location)
dirs = env.subst(dirs)
return env.Command(targetID,None, createTarball,

View file

@ -1 +1 @@
cinelerra executable(s) and libraries will be built here
Lumiera executable(s) and libraries will be built here

View file

@ -1,12 +1,12 @@
AC_INIT(cinelerra, 3.0pre)
AC_INIT(lumiera, 0.1pre)
AC_CONFIG_SRCDIR(src/lib/plugin.c)
AC_CONFIG_AUX_DIR(scripts)
AM_INIT_AUTOMAKE
AC_PREREQ(2.59)
AC_COPYRIGHT([
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -3,7 +3,7 @@
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = Cinelerra3
PROJECT_NAME = Lumiera
PROJECT_NUMBER = 3.0+alpha
OUTPUT_DIRECTORY =
CREATE_SUBDIRS = YES
@ -153,9 +153,10 @@ VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX = cinelerra:: \
cinelerra_ \
CINELERRA_
IGNORE_PREFIX = lumiera:: \
lumiera_ \
lumi_ \
LUMIERA_
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------

View file

@ -16,5 +16,5 @@
<!-- ============================================================= -->
<a name="refclass128138"></a>
<p>Declaration :</p><ul><li>C++ : class Thread </li></ul><p>We can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads <br /></p></body>
<p>Declaration :</p><ul><li>C++ : class Thread </li></ul><p>We can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads <br /></p></body>
</html>

View file

@ -16,7 +16,7 @@
<!-- ============================================================= -->
<a name="refclass128266"></a>
<p>Declaration :</p><ul><li>C++ : class Condition </li></ul><p>I provided a reworked Condition class in my cinelerra2 repository<br /></p><div class="sub">
<p>Declaration :</p><ul><li>C++ : class Condition </li></ul><p>I provided a reworked Condition class in my Cinelerra2 repository<br /></p><div class="sub">
<table><tr><td><div class="element">Class <b><a href="class128522.html#refclass128522"><b>Lock</b></a></b></div></td></tr></table>
</div>
</body>

View file

@ -16,7 +16,7 @@
<!-- ============================================================= -->
<a name="refclass128394"></a>
<p>Declaration :</p><ul><li>C++ : class Mutex </li></ul><p>I provided a reworked Mutex class in my cinelerra2 repository<br /></p><div class="sub">
<p>Declaration :</p><ul><li>C++ : class Mutex </li></ul><p>I provided a reworked Mutex class in my Cinelerra2 repository<br /></p><div class="sub">
<table><tr><td><div class="element">Class <b><a href="class128650.html#refclass128650"><b>Lock</b></a></b></div></td></tr></table>
</div>
</body>

View file

@ -20,7 +20,7 @@
<a name="refattribute130181"></a>
<table><tr><td><div class="element">Attribut <b>theApp_</b></div></td></tr></table>
<p>Declaration :</p><ul><li>Uml : static, - theApp_ : <a href="class135429.html#refclass135429"><b>Appconfig</b></a></li><li>C++ : private: static <a href="class135429.html#refclass135429"><b>Appconfig</b></a> theApp_</li></ul><p>holds the single instance and triggers initialization<br /></p><a name="refoperation131333"></a>
<table><tr><td><div class="element">Operation <b>Appconfig</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - Appconfig() : </li><li>C++ : private: Appconfig () </li></ul><p>perform initialization on first access. <br />A call is placed in static initialization code<br />included in cinelerra.h<br /></p><a name="refoperation131461"></a>
<table><tr><td><div class="element">Operation <b>Appconfig</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - Appconfig() : </li><li>C++ : private: Appconfig () </li></ul><p>perform initialization on first access. <br />A call is placed in static initialization code<br />included in lumiera.h<br /></p><a name="refoperation131461"></a>
<table><tr><td><div class="element">Operation <b>instance</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : static, - instance() : Appconfig*</li><li>C++ : private: static Appconfig* instance () </li></ul><a name="refoperation131589"></a>
<table><tr><td><div class="element">Operation <b>get</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : static, + get(inout key : string) : string</li><li>C++ : public: static string get (string &amp; key) </li></ul><p>access the configuation value for a given key.<br />@return empty string for unknown keys, else the corresponding configuration value<br /></p></div>
<p>All public operations : <a href="class135429.html#refoperation131589"><b>get</b></a> </p>

View file

@ -25,7 +25,7 @@
<p>Declaration :</p><ul><li>Uml : + name : string</li><li>C++ : public: const string name</li></ul><p>element ID, comprehensible but sanitized. The tuple (category, name, org) is unique.<br /></p><a name="refrelation140421"></a>
<table><tr><td><div class="element">Relation <b>category (&lt;unidirectional association&gt;)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : + category : <a href="class137221.html#refclass137221"><b>Category</b></a>, multiplicity : 1</li><li>C++ : public: const <a href="class137221.html#refclass137221"><b>Category</b></a>* category</li></ul><p>primary tree like classification of the asset<br /></p><a name="refattribute130821"></a>
<table><tr><td><div class="element">Attribut <b>org</b></div></td></tr></table>
<p>Declaration :</p><ul><li>Uml : + org : string</li><li>C++ : public: const string org</li></ul><p>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".<br /></p><a name="refattribute130949"></a>
<p>Declaration :</p><ul><li>Uml : + org : string</li><li>C++ : public: const string org</li></ul><p>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 Lumiera codebase is "lumi".<br /></p><a name="refattribute130949"></a>
<table><tr><td><div class="element">Attribut <b>version</b></div></td></tr></table>
<p>Declaration :</p><ul><li>Uml : + version : uint</li><li>C++ : public: const unsigned int version</li></ul><p>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.<br /></p><a name="refattribute131077"></a>
<table><tr><td><div class="element">Attribut <b>groups</b></div></td></tr></table>

View file

@ -21,7 +21,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram129285" target = "projectFrame"><b>Builder Entities</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128645" target = "projectFrame"><b>Controller Entities</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128181" target = "projectFrame"><b>File Mapping</b></a></td><td></td><td>Shows whats used to access Frames</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130181" target = "projectFrame"><b>Hierarchy</b></a></td><td></td><td>Cinelerra Exception hierarchy</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130181" target = "projectFrame"><b>Hierarchy</b></a></td><td></td><td>Lumiera Exception hierarchy</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128309" target = "projectFrame"><b>In Memory Database</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130949" target = "projectFrame"><b>interface components</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130437" target = "projectFrame"><b>Media-Asset Relations</b></a></td><td></td><td></td></tr>

View file

@ -37,7 +37,7 @@
<tr bgcolor=#f0f0f0><td><a href="class135045.html#refclass135045" target = "projectFrame"><b>CodecAdapter</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class138629.html#refclass138629" target = "projectFrame"><b>CompoundClip</b></a></td><td></td><td>Clip MObject which is actually a compound of several elementary clips,<br />e.g. the several streams found within multichannels media.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class138501.html#refclass138501" target = "projectFrame"><b>CompoundMedia</b></a></td><td></td><td>compound of several elementary media tracks,<br />e.g. the individual media streams found in one media file</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128266.html#refclass128266" target = "projectFrame"><b>Condition</b></a></td><td></td><td>I provided a reworked Condition class in my cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128266.html#refclass128266" target = "projectFrame"><b>Condition</b></a></td><td></td><td>I provided a reworked Condition class in my Cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135813.html#refclass135813" target = "projectFrame"><b>Config</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130821.html#refclass130821" target = "projectFrame"><b>ConManager</b></a></td><td></td><td>Connection 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</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130181.html#refclass130181" target = "projectFrame"><b>Constraint</b></a></td><td></td><td></td></tr>
@ -86,7 +86,7 @@
<tr bgcolor=#f0f0f0><td><a href="class137093.html#refclass137093" target = "projectFrame"><b>Meta</b></a></td><td></td><td>key abstraction: metadata and organisational asset</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129157.html#refclass129157" target = "projectFrame"><b>Meta</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>interface</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td></td><td>I provided a reworked Mutex class in my cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td></td><td>I provided a reworked Mutex class in my Cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134405.html#refclass134405" target = "projectFrame"><b>NodeCreatorTool</b></a></td><td></td><td>This 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.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134533.html#refclass134533" target = "projectFrame"><b>Parameter</b></a></td><td></td><td>Descriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134661.html#refclass134661" target = "projectFrame"><b>ParamProvider</b></a></td><td>interface</td><td>A facility to get the actual value of a plugin/effect parameter</td></tr>
@ -119,7 +119,7 @@
<tr bgcolor=#f0f0f0><td><a href="class132741.html#refclass132741" target = "projectFrame"><b>StateProxy</b></a></td><td>interface</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136325.html#refclass136325" target = "projectFrame"><b>std::exception</b></a></td><td>auxiliary</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136965.html#refclass136965" target = "projectFrame"><b>Struct</b></a></td><td></td><td>key abstraction: structural asset</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128138.html#refclass128138" target = "projectFrame"><b>Thread</b></a></td><td></td><td>We can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads </td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128138.html#refclass128138" target = "projectFrame"><b>Thread</b></a></td><td></td><td>We can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads </td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134917.html#refclass134917" target = "projectFrame"><b>Time</b></a></td><td></td><td>denotes a temporal position (time point), based on timeline start.<br /><br />investigate posix.4 realtime timers, wrap these here</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class140037.html#refclass140037" target = "projectFrame"><b>Tool</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130693.html#refclass130693" target = "projectFrame"><b>ToolFactory</b></a></td><td></td><td></td></tr>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>/mnt/Lager/heim/devel/cin3/doc/devel/uml/index-withframe</title>
<title>/mnt/Lager/heim/devel/lumi/doc/devel/uml/index-withframe</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<FRAMESET cols="20%,80%">

View file

@ -4,14 +4,14 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>cinelerra3
<title>lumiera
Documentation</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">
<div class = "title">cinelerra3<br />Documentation</div>
<div class = "title">lumiera<br />Documentation</div>
<p></p>
<!-- ============================================================= -->
@ -22,7 +22,7 @@ Documentation</title>
<p>All things concering the big picture.<br />Not a real code package, rather a container for design drafts, specifications, decisions.<br /></p><div class="sub">
<a name="refcomponent view128005"></a>
<h2 class ="view">1.1 Component View Architecture</h2>
<p>The various Components comprising the Cinelerra3 Video editing Application<br /></p>
<p>The various Components comprising the Lumiera Video editing Application<br /></p>
<div class="sub">
<a name="refcomponent diagram128005"></a>
<p align="center"><img src="fig128005.png" alt="" /></p>
@ -104,15 +104,15 @@ Documentation</title>
<p>This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.<br /></p><div class="sub">
<a name="refdeployment view128133"></a>
<h3 class ="view">1.3.1 Deployment View EXE Deployment</h3>
<p>defines and lists how the Cinelerra executable has to be created<br /></p>
<p>defines and lists how the Lumiera executable has to be created<br /></p>
<div class="sub">
<a name="refdeployment diagram129797"></a>
<p align="center"><img src="fig129797.png" alt="" /></p>
<p align="center"><b>Source Overview</b></p><p><br /></p><p><br /></p>
<a name="refartifact128005"></a>
<table><tr><td><div class="element">Artifact <b>Cinelerra3</b></div></td></tr></table>
<table><tr><td><div class="element">Artifact <b>Lumiera</b></div></td></tr></table>
<p>Depends on <a href="index.html#refpackage129413"><b>common</b></a></p><p>Depends on <a href="index.html#refpackage129797"><b>gui</b></a></p><p>Depends on <a href="index.html#refpackage129669"><b>proc</b></a></p><p>Depends on <a href="index.html#refpackage129541"><b>backend</b></a></p><p>the main executable to be built<br /></p>
<p><i>executable</i> associated with : <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a>, <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>processor</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>buildertool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a>, <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a>, <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a></p>
<p><i>executable</i> associated with : <a href="index.html#refartifact132229"><b>exitnode</b></a>, <a href="index.html#refartifact131717"><b>pathmanager</b></a>, <a href="index.html#refartifact128901"><b>track</b></a>, <a href="index.html#refartifact134533"><b>paramprovider</b></a>, <a href="index.html#refartifact132997"><b>mask</b></a>, <a href="index.html#refartifact128133"><b>main</b></a>, <a href="index.html#refartifact130693"><b>conmanager</b></a>, <a href="index.html#refartifact129413"><b>clip</b></a>, <a href="index.html#refartifact129669"><b>meta</b></a>, <a href="index.html#refartifact129797"><b>fixedlocation</b></a>, <a href="index.html#refartifact129925"><b>relativelocation</b></a>, <a href="index.html#refartifact128261"><b>mobject</b></a>, <a href="index.html#refartifact134277"><b>source</b></a>, <a href="index.html#refartifact133765"><b>frame</b></a>, <a href="index.html#refartifact129029"><b>placement</b></a>, <a href="index.html#refartifact128517"><b>sessionimpl</b></a>, <a href="index.html#refartifact130437"><b>builderfacade</b></a>, <a href="index.html#refartifact131589"><b>controllerfacade</b></a>, <a href="index.html#refartifact132101"><b>processor</b></a>, <a href="index.html#refartifact133125"><b>pluginadapter</b></a>, <a href="index.html#refartifact129541"><b>effect</b></a>, <a href="index.html#refartifact131205"><b>buildertool</b></a>, <a href="index.html#refartifact131333"><b>segmentationtool</b></a>, <a href="index.html#refartifact133893"><b>aframe</b></a>, <a href="index.html#refartifact130821"><b>assembler</b></a>, <a href="index.html#refartifact132485"><b>trafo</b></a>, <a href="index.html#refartifact129157"><b>explicitplacement</b></a>, <a href="index.html#refartifact130309"><b>auto</b></a>, <a href="index.html#refartifact133637"><b>glrender</b></a>, <a href="index.html#refartifact132613"><b>link</b></a>, <a href="index.html#refartifact134405"><b>parameter</b></a>, <a href="index.html#refartifact131973"><b>renderengine</b></a>, <a href="index.html#refartifact130053"><b>allocation</b></a>, <a href="index.html#refartifact134021"><b>vframe</b></a>, <a href="index.html#refartifact130565"><b>toolfactory</b></a>, <a href="index.html#refartifact133381"><b>arender</b></a>, <a href="index.html#refartifact131845"><b>renderstate</b></a>, <a href="index.html#refartifact130181"><b>label</b></a>, <a href="index.html#refartifact134149"><b>glbuf</b></a>, <a href="index.html#refartifact132357"><b>procnode</b></a>, <a href="index.html#refartifact130949"><b>stateproxy</b></a>, <a href="index.html#refartifact132741"><b>hub</b></a>, <a href="index.html#refartifact131077"><b>buildable</b></a>, <a href="index.html#refartifact129285"><b>abstractmo</b></a>, <a href="index.html#refartifact131461"><b>nodecreatertool</b></a>, <a href="index.html#refartifact132869"><b>projector</b></a>, <a href="index.html#refartifact134661"><b>interpolator</b></a>, <a href="index.html#refartifact128645"><b>edl</b></a>, <a href="index.html#refartifact128773"><b>fixture</b></a>, <a href="index.html#refartifact133253"><b>glpipe</b></a>, <a href="index.html#refartifact133509"><b>vrender</b></a></p>
<a name="refartifact128133"></a>
<table><tr><td><div class="element">Artifact <b>main</b></div></td></tr></table>
<p>Artifact <i>source</i></p>
@ -120,7 +120,7 @@ Documentation</title>
<a name="refpackage129413"></a>
<h3 class ="package">1.3.2 Package common</h3>
<p></p><ul>
<li>C++ namespace : cinelerra</li>
<li>C++ namespace : lumiera</li>
</ul>
<p>sourcecode package<br /><br />Common library and helper classes<br /></p><p>Diagram : <a href="index.html#refdeployment diagram129797"><b>Source Overview</b></a></p>
<div class="sub">
@ -134,7 +134,7 @@ Documentation</title>
<p>Artifact <i>source</i> associated with : <a href="class140165.html#refclass140165"><b>Visitable</b></a>, <a href="class140037.html#refclass140037"><b>Tool</b></a>, <a href="class140293.html#refclass140293"><b>Applicable</b></a></p>
<a name="refartifact135813"></a>
<table><tr><td><div class="element">Artifact <b>error</b></div></td></tr></table>
<p>Cinelerra Exception Interface<br /></p>
<p>Lumiera Exception Interface<br /></p>
<p>Artifact <i>source</i> associated with : <a href="class135557.html#refclass135557"><b>Error</b></a>, <a href="class135685.html#refclass135685"><b>Logic</b></a>, <a href="class135813.html#refclass135813"><b>Config</b></a>, <a href="class135941.html#refclass135941"><b>State</b></a>, <a href="class136069.html#refclass136069"><b>Invalid</b></a>, <a href="class136197.html#refclass136197"><b>External</b></a></p>
<a name="refartifact135173"></a>
<table><tr><td><div class="element">Artifact <b>appconfig</b></div></td></tr></table>
@ -148,12 +148,12 @@ Documentation</title>
<a name="refpackage130821"></a>
<h4 class ="package">1.3.2.2 Package error</h4>
<p></p><ul>
<li>C++ namespace : cinelerra::error</li>
<li>C++ namespace : lumiera::error</li>
</ul>
<p>Namespace for Exception Kinds<br /></p><a name="refpackage130949"></a>
<h4 class ="package">1.3.2.3 Package visitor</h4>
<p></p><ul>
<li>C++ namespace : cinelerra::visitor</li>
<li>C++ namespace : lumiera::visitor</li>
</ul>
<p>sub-namespace for visitor library implementation<br /></p></div>
<a name="refpackage129541"></a>
@ -1143,7 +1143,7 @@ reuse exiting Engine</pre></li></ul><p>Selection :</p><ul></ul><p>Transformation
<a name="refclass diagram130181"></a>
<p align="center"><img src="fig130181.png" alt="" /></p>
<p align="center"><b>Hierarchy</b></p><p><br /></p><p><br /></p>
<p>Cinelerra Exception hierarchy<br /></p><table><tr><td><div class="element">Class <b><a href="class135557.html#refclass135557"><b>Error</b></a></b></div></td></tr></table>
<p>Lumiera Exception hierarchy<br /></p><table><tr><td><div class="element">Class <b><a href="class135557.html#refclass135557"><b>Error</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class135685.html#refclass135685"><b>Logic</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class135813.html#refclass135813"><b>Config</b></a></b></div></td></tr></table>
<table><tr><td><div class="element">Class <b><a href="class135941.html#refclass135941"><b>State</b></a></b></div></td></tr></table>

View file

@ -17,8 +17,8 @@
<table>
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129797" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129541" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129669" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130309" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131205" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
@ -28,8 +28,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131461" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130693" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition129029" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131717" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130181" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131717" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition131077" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130949" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reftransition130053" target = "projectFrame"><b>&lt;flow&gt;</b></a></td><td>transition</td><td></td></tr>

View file

@ -28,13 +28,13 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact130053" target = "projectFrame"><b>allocation</b></a></td><td>artifact</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129541.html#refclass129541" target = "projectFrame"><b>Allocation</b></a></td><td>class</td><td>a directive to place a MObject in a specific way</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation130565" target = "projectFrame"><b>anchor</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation131333" target = "projectFrame"><b>Appconfig</b></a></td><td>operation</td><td>perform initialization on first access. <br />A call is placed in static initialization code<br />included in cinelerra.h; thus it will happen<br />ubiquitous very early.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation131333" target = "projectFrame"><b>Appconfig</b></a></td><td>operation</td><td>perform initialization on first access. <br />A call is placed in static initialization code<br />included in lumiera.h; thus it will happen<br />ubiquitous very early.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact135173" target = "projectFrame"><b>appconfig</b></a></td><td>artifact</td><td>for global initialization and configuration </td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135429.html#refclass135429" target = "projectFrame"><b>Appconfig</b></a></td><td>class</td><td>Singleton to hold inevitable global flags and constants and for performing erarly (static) global initialization tasks.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class140293.html#refclass140293" target = "projectFrame"><b>Applicable</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129669" target = "projectFrame"><b>apply</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134789" target = "projectFrame"><b>apply</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent view128005" target = "projectFrame"><b>Architecture</b></a></td><td>component view</td><td>The various Components comprising the Cinelerra3 Video editing Application</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent view128005" target = "projectFrame"><b>Architecture</b></a></td><td>component view</td><td>The various Components comprising the Lumiera Video editing Application</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class132869.html#refclass132869" target = "projectFrame"><b>ARender</b></a></td><td>class</td><td>Representation of a Audio render process</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133381" target = "projectFrame"><b>arender</b></a></td><td>artifact</td><td>Representation of a Audio Render process</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class131077.html#refclass131077" target = "projectFrame"><b>Assembler</b></a></td><td>class</td><td>This is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects</td></tr>
@ -54,9 +54,9 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128773" target = "projectFrame"><b>aud_A</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131845" target = "projectFrame"><b>aud_a</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131205" target = "projectFrame"><b>audio</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128901" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130821" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128389" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128901" target = "projectFrame"><b>audio1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact130309" target = "projectFrame"><b>auto</b></a></td><td>artifact</td><td>Media Object holding automation data</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129925.html#refclass129925" target = "projectFrame"><b>Auto</b></a></td><td>class</td><td>Automation data for some parameter (i.e. a time varying function)</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram129669" target = "projectFrame"><b>Automation Entities</b></a></td><td>class diagram</td><td></td></tr>

View file

@ -34,8 +34,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact131077" target = "projectFrame"><b>buildable</b></a></td><td>artifact</td><td>marker interface denoting any MObject able to be treated by Tools</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128517" target = "projectFrame"><b>buildEngine</b></a></td><td>operation</td><td>Main Operation of the Builder: create a render engine for a given part of the timeline</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128005" target = "projectFrame"><b>Builder</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>package</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128901" target = "projectFrame"><b>Builder</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>package</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram129285" target = "projectFrame"><b>Builder Entities</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128261" target = "projectFrame"><b>Builder Workings</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130565.html#refclass130565" target = "projectFrame"><b>BuilderFacade</b></a></td><td>class</td><td>Provides 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</td></tr>

View file

@ -23,39 +23,37 @@
<tr bgcolor=#f0f0f0><td><a href="class137221.html#refclass137221" target = "projectFrame"><b>Category</b></a></td><td>class</td><td>tree like classification of Assets</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact135941" target = "projectFrame"><b>category</b></a></td><td>artifact</td><td>tree like classification of Assets</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130309" target = "projectFrame"><b>cause</b></a></td><td>attribute</td><td>a copy of the first exception encountered in this exception chain</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation145413" target = "projectFrame"><b>chain</b></a></td><td>relation</td><td>Chain of additional Placements further constraining the position of this MObject</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134277" target = "projectFrame"><b>chain</b></a></td><td>operation</td><td>create and add another Placement for this media object, thus increasingly constraining the (possible) position of this object.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation145413" target = "projectFrame"><b>chain</b></a></td><td>relation</td><td>Chain of additional Placements further constraining the position of this MObject</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation129633" target = "projectFrame"><b>checked_in</b></a></td><td>relation</td><td>checked_in objects are subject of cache aging and must be not in use</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation129290" target = "projectFrame"><b>checked_out</b></a></td><td>relation</td><td>this list keeps all mappings which are in use, and thus prevents them from Cache aging</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128005" target = "projectFrame"><b>Cinelerra3</b></a></td><td>artifact</td><td>the main executable to be built</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>cinelerra3</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134789" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134917" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135045" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135173" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135301" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135429" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134789" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135557" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135685" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135813" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134661" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130693" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135301" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135045" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135429" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135685" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135173" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance135813" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132229" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129797" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128133" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128005" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130565" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132357" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130437" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132485" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130309" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130181" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130053" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129797" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129541" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131589" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132229" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132357" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132485" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133509" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128261" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128005" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128133" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129029" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130693" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129285" target = "projectFrame"><b>class instance</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133765" target = "projectFrame"><b>clear</b></a></td><td>operation</td><td>clear current session contents <br />without resetting overall session config.<br />Afterwards, the session will contain only one <br />empty EDL, while all Assets are retained.<br /></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class137349.html#refclass137349" target = "projectFrame"><b>Clip</b></a></td><td>class</td><td>bookkeeping (asset) view of a media clip.</td></tr>
@ -77,7 +75,7 @@
<tr bgcolor=#f0f0f0><td><a href="class138629.html#refclass138629" target = "projectFrame"><b>CompoundClip</b></a></td><td>class</td><td>Clip MObject which is actually a compound of several elementary clips,<br />e.g. the several streams found within multichannels media.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class138501.html#refclass138501" target = "projectFrame"><b>CompoundMedia</b></a></td><td>class</td><td>compound of several elementary media tracks,<br />e.g. the individual media streams found in one media file</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact138245" target = "projectFrame"><b>compoundmedia</b></a></td><td>artifact</td><td>a special clip as a compound of several elementary media tracks,<br />e.g. the individual media streams found in one media file</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128266.html#refclass128266" target = "projectFrame"><b>Condition</b></a></td><td>class</td><td>I provided a reworked Condition class in my cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128266.html#refclass128266" target = "projectFrame"><b>Condition</b></a></td><td>class</td><td>I provided a reworked Condition class in my Cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135813.html#refclass135813" target = "projectFrame"><b>Config</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refuse case view128261" target = "projectFrame"><b>config examples</b></a></td><td>use case view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation128773" target = "projectFrame"><b>configure</b></a></td><td>operation</td><td></td></tr>
@ -90,8 +88,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139397" target = "projectFrame"><b>constraint</b></a></td><td>artifact</td><td>LocatingPin representing an directive by the user that<br />must not be violated</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130181.html#refclass130181" target = "projectFrame"><b>Constraint</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128261" target = "projectFrame"><b>Controller</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Controller</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>controller</b></a></td><td>package</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Controller</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128645" target = "projectFrame"><b>Controller Entities</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128389" target = "projectFrame"><b>Controller Workings</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class130309.html#refclass130309" target = "projectFrame"><b>ControllerFacade</b></a></td><td>class</td><td>Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings.</td></tr>

View file

@ -24,8 +24,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram128901" target = "projectFrame"><b>EDL Example2</b></a></td><td>object diagram</td><td>More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128005" target = "projectFrame"><b>edls</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class137733.html#refclass137733" target = "projectFrame"><b>Effect</b></a></td><td>class</td><td>Effect or media processing component</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129541" target = "projectFrame"><b>effect</b></a></td><td>artifact</td><td>EDL representation of a pluggable and automatable effect.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact137221" target = "projectFrame"><b>effect</b></a></td><td>artifact</td><td>Effect or media processing component</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129541" target = "projectFrame"><b>effect</b></a></td><td>artifact</td><td>EDL representation of a pluggable and automatable effect.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129029.html#refclass129029" target = "projectFrame"><b>Effect</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation138885" target = "projectFrame"><b>elements</b></a></td><td>relation</td><td>relevant MObjects comprising this segment. TODO: actually necessary??</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132997" target = "projectFrame"><b>enable</b></a></td><td>operation</td><td>change the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well</td></tr>
@ -39,9 +39,9 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130821" target = "projectFrame"><b>error</b></a></td><td>package</td><td>Namespace for Exception Kinds</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128773" target = "projectFrame"><b>error</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135557.html#refclass135557" target = "projectFrame"><b>Error</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact135813" target = "projectFrame"><b>error</b></a></td><td>artifact</td><td>Cinelerra Exception Interface</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact135813" target = "projectFrame"><b>error</b></a></td><td>artifact</td><td>Lumiera Exception Interface</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refexpansion region128133" target = "projectFrame"><b>establish partitioning</b></a></td><td>expansion region</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refdeployment view128133" target = "projectFrame"><b>EXE Deployment</b></a></td><td>deployment view</td><td>defines and lists how the Cinelerra executable has to be created</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refdeployment view128133" target = "projectFrame"><b>EXE Deployment</b></a></td><td>deployment view</td><td>defines and lists how the Lumiera executable has to be created</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class131589.html#refclass131589" target = "projectFrame"><b>ExitNode</b></a></td><td>class</td><td>The output of the render pipeline. Pulling from such exit nodes actually ivokes the render process</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132229" target = "projectFrame"><b>exitnode</b></a></td><td>artifact</td><td>special Processing Node providing "pullable" output</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129157" target = "projectFrame"><b>explicitplacement</b></a></td><td>artifact</td><td>special Placement yielding an absolute location (Time,Track)-location for a MObject</td></tr>

View file

@ -33,8 +33,8 @@
<tr bgcolor=#f0f0f0><td><a href="class129285.html#refclass129285" target = "projectFrame"><b>FixedLocation</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity object128005" target = "projectFrame"><b>Fixture</b></a></td><td>activity object</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128773" target = "projectFrame"><b>fixture</b></a></td><td>artifact</td><td>the (low level) representation of the EDL with concrete placement data</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128517" target = "projectFrame"><b>Fixture</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128261.html#refclass128261" target = "projectFrame"><b>Fixture</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent128517" target = "projectFrame"><b>Fixture</b></a></td><td>component</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#reffork activity node129029" target = "projectFrame"><b>fork activity node</b></a></td><td>fork activity node</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128821.html#refclass128821" target = "projectFrame"><b>Frame</b></a></td><td>class</td><td>Frames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refnode128645" target = "projectFrame"><b>Frame</b></a></td><td>node</td><td></td></tr>

View file

@ -51,8 +51,8 @@
<tr bgcolor=#f0f0f0><td><a href="class133125.html#refclass133125" target = "projectFrame"><b>GLRender</b></a></td><td>class</td><td>Representation of a OpenGL accelerated Video render process</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact133637" target = "projectFrame"><b>glrender</b></a></td><td>artifact</td><td>Representation of a OpenGL accellerated Video render process</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute131077" target = "projectFrame"><b>groups</b></a></td><td>attribute</td><td>additional classification, selections or departments this asset belongs to. Groups are optional, non-exclusive and may be overlapping.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128773" target = "projectFrame"><b>GUI</b></a></td><td>package</td><td>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</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129797" target = "projectFrame"><b>gui</b></a></td><td>package</td><td>sourcecode package<br /><br />User Interface classes go here</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128773" target = "projectFrame"><b>GUI</b></a></td><td>package</td><td>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</td></tr>
</table>
</body>
</html>

View file

@ -20,7 +20,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128225" target = "projectFrame"><b>handle</b></a></td><td>relation</td><td>weak pointer</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128737" target = "projectFrame"><b>handles</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128225" target = "projectFrame"><b>handles_available</b></a></td><td>attribute</td><td>initialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used.<br />Else this number is decremented for each new filehandle used and incremented for any one explicitly freed.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130181" target = "projectFrame"><b>Hierarchy</b></a></td><td>class diagram</td><td>Cinelerra Exception hierarchy</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram130181" target = "projectFrame"><b>Hierarchy</b></a></td><td>class diagram</td><td>Lumiera Exception hierarchy</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation133381" target = "projectFrame"><b>howtoProc</b></a></td><td>operation</td><td>@return descriptor how to build a render pipeline corresponding to this media</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class132101.html#refclass132101" target = "projectFrame"><b>Hub</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact132741" target = "projectFrame"><b>hub</b></a></td><td>artifact</td><td>special ProcNode used to build data distributing connections</td></tr>

View file

@ -20,9 +20,9 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130437" target = "projectFrame"><b>id</b></a></td><td>attribute</td><td>Asset primary key.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128309" target = "projectFrame"><b>In Memory Database</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity action pin128133" target = "projectFrame"><b>inFixture</b></a></td><td>activity action pin</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131461" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132869" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134149" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132869" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131461" target = "projectFrame"><b>input</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation131461" target = "projectFrame"><b>instance</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation143621" target = "projectFrame"><b>instructions</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view129029" target = "projectFrame"><b>Interface</b></a></td><td>class view</td><td></td></tr>

View file

@ -31,6 +31,8 @@
<tr bgcolor=#f0f0f0><td><a href="class128650.html#refclass128650" target = "projectFrame"><b>Lock</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class135685.html#refclass135685" target = "projectFrame"><b>Logic</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute131333" target = "projectFrame"><b>longDesc</b></a></td><td>attribute</td><td>user visible qualification of the thing, unit or concept represented by this asset. perferably "in one line". To be localized.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact128005" target = "projectFrame"><b>Lumiera</b></a></td><td>artifact</td><td>the main executable to be built</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>lumiera</b></a></td><td>package</td><td></td></tr>
</table>
</body>
</html>

View file

@ -40,7 +40,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128261" target = "projectFrame"><b>MObject</b></a></td><td>package</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128517.html#refclass128517" target = "projectFrame"><b>MObject</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refobject diagram131333" target = "projectFrame"><b>multichannel clip</b></a></td><td>object diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td>class</td><td>I provided a reworked Mutex class in my cinelerra2 repository</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128394.html#refclass128394" target = "projectFrame"><b>Mutex</b></a></td><td>class</td><td>I provided a reworked Mutex class in my Cinelerra2 repository</td></tr>
</table>
</body>
</html>

View file

@ -18,10 +18,10 @@
<table>
<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute129029" target = "projectFrame"><b>offset</b></a></td><td>attribute</td><td>Offset the actual position by this (time) value relative to the anchor point. TODO: Representation?</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130821" target = "projectFrame"><b>org</b></a></td><td>attribute</td><td>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".</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133125" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134405" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130821" target = "projectFrame"><b>org</b></a></td><td>attribute</td><td>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 Lumiera codebase is "lumi".</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131333" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134405" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133125" target = "projectFrame"><b>ouput</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation147973" target = "projectFrame"><b>outPort</b></a></td><td>relation</td><td>the Port this MObject wants to be conected to</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation132613" target = "projectFrame"><b>output</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refcomponent diagram128005" target = "projectFrame"><b>Overview</b></a></td><td>component diagram</td><td>This drawing shows the top level compoents and relations</td></tr>

View file

@ -22,8 +22,8 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation142085" target = "projectFrame"><b>registry</b></a></td><td>relation</td><td>@internal Table or DB holding all registered asset instances.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact129925" target = "projectFrame"><b>relativelocation</b></a></td><td>artifact</td><td>Placement implemnetaion providing various ways of attaching a MObject to another one</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class129413.html#refclass129413" target = "projectFrame"><b>RelativeLocation</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class133893.html#refclass133893" target = "projectFrame"><b>RelType</b></a></td><td>class</td><td>the possible kinds of RelativePlacements</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128133" target = "projectFrame"><b>relType</b></a></td><td>attribute</td><td>the kind of relation denoted by this Placement</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class133893.html#refclass133893" target = "projectFrame"><b>RelType</b></a></td><td>class</td><td>the possible kinds of RelativePlacements</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation132741" target = "projectFrame"><b>remove</b></a></td><td>operation</td><td>remove the given asset &lt;i&gt;together with all its dependants&lt;/i&gt; from the internal DB</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128389" target = "projectFrame"><b>Render Entities</b></a></td><td>class diagram</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refactivity parameter128005" target = "projectFrame"><b>Render Request</b></a></td><td>activity parameter</td><td></td></tr>

View file

@ -46,8 +46,8 @@
<tr bgcolor=#f0f0f0><td><a href="class138885.html#refclass138885" target = "projectFrame"><b>SimpleClip</b></a></td><td>class</td><td>Elementary clip consisting of only one media stream</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128906.html#refclass128906" target = "projectFrame"><b>SmartPointer</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128266" target = "projectFrame"><b>SmartPointers</b></a></td><td>class view</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation141957" target = "projectFrame"><b>source</b></a></td><td>relation</td><td>media source of this clip</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation142469" target = "projectFrame"><b>source</b></a></td><td>relation</td><td>the media source this clip referes to</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation141957" target = "projectFrame"><b>source</b></a></td><td>relation</td><td>media source of this clip</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class133765.html#refclass133765" target = "projectFrame"><b>Source</b></a></td><td>class</td><td>Source Node: represents a media source to pull data from.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134277" target = "projectFrame"><b>source</b></a></td><td>artifact</td><td>Representation of a Media source</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refdeployment diagram129797" target = "projectFrame"><b>Source Overview</b></a></td><td>deployment diagram</td><td></td></tr>

View file

@ -21,7 +21,7 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130181" target = "projectFrame"><b>theApp_</b></a></td><td>attribute</td><td>holds the single instance and triggers initialization</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation128261" target = "projectFrame"><b>theFixture</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation131717" target = "projectFrame"><b>theTimeline</b></a></td><td>relation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128138.html#refclass128138" target = "projectFrame"><b>Thread</b></a></td><td>class</td><td>We can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads </td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128138.html#refclass128138" target = "projectFrame"><b>Thread</b></a></td><td>class</td><td>We can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads </td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute128261" target = "projectFrame"><b>time</b></a></td><td>attribute</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134789" target = "projectFrame"><b>time</b></a></td><td>artifact</td><td>unified representation of a time point, including conversion functions</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class134917.html#refclass134917" target = "projectFrame"><b>Time</b></a></td><td>class</td><td>denotes a temporal position (time point), based on timeline start.<br /><br />investigate posix.4 realtime timers, wrap these here</td></tr>
@ -43,12 +43,12 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation134405" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129797" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td>This operation is to be overloaded for the specific MObject subclasses to be treated.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130309" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130693" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130565" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130437" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130693" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130053" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129925" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation130181" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refoperation129925" target = "projectFrame"><b>treat</b></a></td><td>operation</td><td></td></tr>
</table>
</body>
</html>

View file

@ -20,23 +20,23 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refattribute130949" target = "projectFrame"><b>version</b></a></td><td>attribute</td><td>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.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class133509.html#refclass133509" target = "projectFrame"><b>VFrame</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact134021" target = "projectFrame"><b>vframe</b></a></td><td>artifact</td><td>a buffer and render process holding a Video frame</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133381" target = "projectFrame"><b>vid1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131973" target = "projectFrame"><b>vid1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129925" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133381" target = "projectFrame"><b>vid1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131717" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129413" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134021" target = "projectFrame"><b>vid_a</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129413" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129925" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128645" target = "projectFrame"><b>vid_A</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131077" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134533" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance131077" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133765" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132741" target = "projectFrame"><b>video</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130949" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134277" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128517" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133637" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance129157" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance134277" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance132997" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance128517" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance130949" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refclass instance133637" target = "projectFrame"><b>video1</b></a></td><td>class instance</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class140165.html#refclass140165" target = "projectFrame"><b>Visitable</b></a></td><td>class</td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130949" target = "projectFrame"><b>visitor</b></a></td><td>package</td><td>sub-namespace for visitor library implementation</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refartifact139141" target = "projectFrame"><b>visitor</b></a></td><td>artifact</td><td>Acyclic Visitor library</td></tr>

View file

@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>/mnt/Lager/heim/devel/cin3/doc/devel/uml/navig</title>
<title>/mnt/Lager/heim/devel/lumi/doc/devel/uml/navig</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body bgcolor="#ffffff">

View file

@ -22,18 +22,18 @@
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129157" target = "projectFrame"><b>BackendLayer</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130565" target = "projectFrame"><b>builder</b></a></td><td>src</td><td>sourcecode package<br /><br />The Builder creating the Render Engine,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128901" target = "projectFrame"><b>Builder</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>cinelerra3</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128645" target = "projectFrame"><b>codegen</b></a></td><td></td><td>This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129413" target = "projectFrame"><b>common</b></a></td><td>src</td><td>sourcecode package<br /><br />Common library and helper classes</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128517" target = "projectFrame"><b>CommonLib</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>controller</b></a></td><td>src</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129029" target = "projectFrame"><b>Controller</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130693" target = "projectFrame"><b>controller</b></a></td><td>src</td><td>sourcecode package<br /><br />The Processing and Render Controller,<br />located within the MObject Subsystem</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128138" target = "projectFrame"><b>design</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128005" target = "projectFrame"><b>design</b></a></td><td></td><td>All things concering the big picture.<br />Not a real code package, rather a container for design drafts, specifications, decisions.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130309" target = "projectFrame"><b>engine</b></a></td><td>src</td><td>sourcecode package<br /><br />The Core Render Engine</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130821" target = "projectFrame"><b>error</b></a></td><td></td><td>Namespace for Exception Kinds</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128773" target = "projectFrame"><b>GUI</b></a></td><td></td><td>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</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129797" target = "projectFrame"><b>gui</b></a></td><td>src</td><td>sourcecode package<br /><br />User Interface classes go here</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128773" target = "projectFrame"><b>GUI</b></a></td><td></td><td>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</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>lumiera</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage130181" target = "projectFrame"><b>mobject</b></a></td><td>src</td><td>sourcecode package<br /><br />MObject Subsystem<br />including the Session (EDL), Builder and Processing Controller</td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage128261" target = "projectFrame"><b>MObject</b></a></td><td></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129669" target = "projectFrame"><b>proc</b></a></td><td>src</td><td>sourcecode package<br /><br />All classes belonging to the (middle) processing layer</td></tr>

View file

@ -22,7 +22,7 @@
<tr bgcolor=#f0f0f0><td><a href="class136453.html#refattribute130437"><b>id</b></a></td><td><a href="class136453.html#refclass136453"><b>Asset</b></a></td><td>Asset primary key.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136453.html#refattribute130565"><b>name</b></a></td><td><a href="class136453.html#refclass136453"><b>Asset</b></a></td><td>element ID, comprehensible but sanitized. The tuple (category, name, org) is unique.</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class139141.html#refrelation144133"><b>nodes</b></a></td><td><a href="class139141.html#refclass139141"><b>DoAttach</b></a></td><td></td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136453.html#refattribute130821"><b>org</b></a></td><td><a href="class136453.html#refclass136453"><b>Asset</b></a></td><td>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".</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136453.html#refattribute130821"><b>org</b></a></td><td><a href="class136453.html#refclass136453"><b>Asset</b></a></td><td>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 Lumiera codebase is "lumi".</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class139141.html#refattribute131461"><b>point</b></a></td><td><a href="class139141.html#refclass139141"><b>DoAttach</b></a></td><td>identifying the point where the nodes should be attached</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class128389.html#refrelation147205"><b>subTracks</b></a></td><td><a href="class128389.html#refclass128389"><b>Track</b></a></td><td>Child tracks in a tree structure</td></tr>
<tr bgcolor=#f0f0f0><td><a href="class136453.html#refattribute130949"><b>version</b></a></td><td><a href="class136453.html#refclass136453"><b>Asset</b></a></td><td>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.</td></tr>

View file

@ -1 +1 @@
cinelerra2 sources, added per case when needed
Cinelerra2 sources, added per case when needed

View file

@ -1,8 +1,8 @@
/*
MediaAccessFacade - functions for querying media file and channels.
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -26,13 +26,13 @@
#include "common/util.hpp"
using util::isnil;
using cinelerra::error::Invalid;
using lumiera::error::Invalid;
namespace backend_interface
{
/** storage for the SingletonFactory
* (actually a cinelerra::test::MockInjector) */
* (actually a lumiera::test::MockInjector) */
Singleton<MediaAccessFacade> MediaAccessFacade::instance;

View file

@ -1,8 +1,8 @@
/*
MEDIAACCESSFACADE.hpp - functions for querying media file and channels.
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -59,7 +59,7 @@ namespace backend_interface
* information from this file, NULL if the
* file is not acessible.
*/
virtual FileHandle queryFile (const char* name) throw(cinelerra::error::Invalid);
virtual FileHandle queryFile (const char* name) throw(lumiera::error::Invalid);
/** request for information about the n-th channel
* of the file refered by FileHandle.

View file

@ -1,8 +1,8 @@
/*
Appconfig - for global initialization and configuration
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -34,7 +34,7 @@
using util::isnil;
namespace cinelerra
namespace lumiera
{
/** This internal pointer to the single instance is deliberately
@ -45,14 +45,14 @@ namespace cinelerra
* to beeing dependant on inclusion order of headers. */
// scoped_ptr<Appconfig> Appconfig::theApp_;
#ifndef CINELERRA_VERSION
#define CINELERRA_VERSION 3++devel
#ifndef LUMIERA_VERSION
#define LUMIERA_VERSION 3++devel
#endif
/** perform initialization on first access.
* A call is placed in static initialization code
* included in cinelerra.h; thus it will happen
* included in lumiera.h; thus it will happen
* probably very early.
*/
Appconfig::Appconfig()
@ -65,9 +65,9 @@ namespace cinelerra
INFO(config, "Basic application configuration triggered.");
// install our own handler for undeclared exceptions
std::set_unexpected (cinelerra::error::cinelerra_unexpectedException);
std::set_unexpected (lumiera::error::lumiera_unexpectedException);
(*configParam_)["version"] = STRINGIFY (CINELERRA_VERSION);
(*configParam_)["version"] = STRINGIFY (LUMIERA_VERSION);
}
@ -89,10 +89,10 @@ namespace cinelerra
catch (...)
{
ERROR(config, "error while accessing configuration parameter \"%s\".", key.c_str());
throw cinelerra::error::Fatal ();
throw lumiera::error::Fatal ();
} }
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
APPCONFIG.hpp - for global initialization and configuration
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
@ -34,8 +34,8 @@
*/
#ifndef CINELERRA_APPCONFIG_H
#define CINELERRA_APPCONFIG_H
#ifndef LUMIERA_APPCONFIG_H
#define LUMIERA_APPCONFIG_H
#include <map>
#include <string>
@ -45,7 +45,7 @@
namespace cinelerra
namespace lumiera
{
using std::string;
using boost::scoped_ptr;
@ -104,5 +104,5 @@ namespace cinelerra
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
Cmdline - abstraction of the usual commandline, a sequence of strings
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
CMDLINE.hpp - abstraction of the usual commandline, a sequence of strings
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
ConfigRules - interface for rule based configuration
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -28,13 +28,13 @@
namespace cinelerra
namespace lumiera
{
namespace query
{
CINELERRA_ERROR_DEFINE (CAPABILITY_QUERY, "unresolvable capability query");
LUMIERA_ERROR_DEFINE (CAPABILITY_QUERY, "unresolvable capability query");
@ -51,4 +51,4 @@ namespace cinelerra
SingletonSub<ConfigRules> ConfigRules::instance (typeinfo);
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
CONFIGRULES.hpp - interface for rule based configuration
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -36,15 +36,15 @@
**
** @note this is rather a scrapbook and in flux... don't take this code too literal!
**
** @see cinelerra::Query
** @see lumiera::Query
** @see mobject::session::DefsManager
** @see asset::StructFactory
**
*/
#ifndef CINELERRA_CONFIGRULES_H
#define CINELERRA_CONFIGRULES_H
#ifndef LUMIERA_CONFIGRULES_H
#define LUMIERA_CONFIGRULES_H
#include "common/query.hpp"
#include "common/typelistutil.hpp"
@ -61,7 +61,7 @@
namespace cinelerra
namespace lumiera
{
using std::string;
using std::tr1::shared_ptr;
@ -132,8 +132,8 @@ namespace cinelerra
* type TY fulfilling the given Query. To start with,
* we use a mock implementation.
* (this code works and is already used 2/2008)
* @see cinelerra::query::LookupPreconfigured
* @see cinelerra::query::MockTable
* @see lumiera::query::LookupPreconfigured
* @see lumiera::query::MockTable
*/
template<class TY>
class QueryHandler
@ -187,7 +187,7 @@ namespace cinelerra
CINELERRA_ERROR_DECLARE (CAPABILITY_QUERY); ///< unresolvable capability query.
LUMIERA_ERROR_DECLARE (CAPABILITY_QUERY); ///< unresolvable capability query.
} // namespace query
@ -201,12 +201,12 @@ namespace cinelerra
* the list of all concrete types participating in the
* rule based config query system
*/
typedef cinelerra::typelist::Types < mobject::session::Track
, asset::Track
, asset::Pipe
, const asset::ProcPatt
> ::List
InterfaceTypes;
typedef lumiera::typelist::Types < mobject::session::Track
, asset::Track
, asset::Pipe
, const asset::ProcPatt
> ::List
InterfaceTypes;
/**
* user-visible Interface to the ConfigRules subsystem.
@ -222,5 +222,5 @@ namespace cinelerra
};
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
Error - Cinelerra Exception Interface
Error - Lumiera Exception Interface
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -33,7 +33,7 @@ using util::isnil;
using std::exception;
namespace cinelerra
namespace lumiera
{
namespace error
@ -46,23 +46,23 @@ namespace cinelerra
*/
inline const string default_usermsg (Error* exception_obj) throw()
{
return string("Sorry, Cinelerra encountered an internal error. (")
return string("Sorry, Lumiera encountered an internal error. (")
+ typeid(*exception_obj).name() + ")";
}
/* constants to be used as error IDs */
CINELERRA_ERROR_DEFINE (LOGIC , "internal logic broken");
CINELERRA_ERROR_DEFINE (FATAL , "floundered");
CINELERRA_ERROR_DEFINE (CONFIG , "misconfiguration");
CINELERRA_ERROR_DEFINE (STATE , "unforseen state");
CINELERRA_ERROR_DEFINE (INVALID , "invalid input or parameters");
CINELERRA_ERROR_DEFINE (EXTERNAL , "failure in external service");
CINELERRA_ERROR_DEFINE (ASSERTION, "assertion failure");
LUMIERA_ERROR_DEFINE (LOGIC , "internal logic broken");
LUMIERA_ERROR_DEFINE (FATAL , "floundered");
LUMIERA_ERROR_DEFINE (CONFIG , "misconfiguration");
LUMIERA_ERROR_DEFINE (STATE , "unforseen state");
LUMIERA_ERROR_DEFINE (INVALID , "invalid input or parameters");
LUMIERA_ERROR_DEFINE (EXTERNAL , "failure in external service");
LUMIERA_ERROR_DEFINE (ASSERTION, "assertion failure");
} // namespace error
CINELERRA_ERROR_DEFINE (EXCEPTION, "generic cinelerra exception");
LUMIERA_ERROR_DEFINE (EXCEPTION, "generic Lumiera exception");
@ -75,7 +75,7 @@ namespace cinelerra
desc_ (description),
cause_ ("")
{
cinelerra_error_set (this->id_);
lumiera_error_set (this->id_);
}
@ -87,7 +87,7 @@ namespace cinelerra
desc_ (description),
cause_ (extractCauseMsg(cause))
{
cinelerra_error_set (this->id_);
lumiera_error_set (this->id_);
}
@ -103,7 +103,7 @@ namespace cinelerra
/** Description of the problem, including the internal char constant
* in accordance to cinelerra's error identification scheme.
* in accordance to Lumiera's error identification scheme.
* If a root cause can be obtained, this will be included in the
* generated output as well.
*/
@ -167,15 +167,15 @@ namespace cinelerra
namespace error
{
void cinelerra_unexpectedException () throw()
void lumiera_unexpectedException () throw()
{
const char* is_halted
= "### Cinelerra halted due to an unexpected Error ###";
= "### Lumiera halted due to an unexpected Error ###";
std::cerr << "\n" << is_halted << "\n\n";
ERROR (NOBUG_ON, "%s", is_halted);
if (const char * errorstate = cinelerra_error ())
if (const char * errorstate = lumiera_error ())
ERROR (NOBUG_ON, "last registered error was....\n%s", errorstate);
std::terminate();
@ -183,13 +183,12 @@ namespace cinelerra
void assertion_terminate (const string& location)
{
Fatal exception (location, CINELERRA_ERROR_ASSERTION);
exception.setUsermsg("Program terminated because of violating "
"an internal consistency check.");
throw exception;
throw Fatal (location, LUMIERA_ERROR_ASSERTION)
.setUsermsg("Program terminated because of violating "
"an internal consistency check.");
}
} // namespace error
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
ERROR.hpp - Cinelerra Exception Interface
ERROR.hpp - Lumiera Exception Interface
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -21,26 +21,26 @@
*/
#ifndef CINELERRA_ERROR_HPP_
#define CINELERRA_ERROR_HPP_
#ifndef LUMIERA_ERROR_HPP_
#define LUMIERA_ERROR_HPP_
#include <string>
#include "nobugcfg.h"
#include "lib/error.h"
namespace cinelerra
namespace lumiera
{
using std::string;
/** error-ID for unspecified exceptions */
CINELERRA_ERROR_DECLARE(EXCEPTION);
LUMIERA_ERROR_DECLARE(EXCEPTION);
/**
* Interface and Baseclass of all Exceptions thrown
* from within cinelerra (C++) code. Common operations
* from within Lumiera (C++) code. Common operations
* for getting an diagnostic message and for obtaining
* the root cause, i.e. the first exception encountered
* in a chain of exceptions.
@ -48,9 +48,9 @@ namespace cinelerra
class Error : public std::exception
{
public:
Error (string description="", const char* id=CINELERRA_ERROR_EXCEPTION) throw();
Error (string description="", const char* id=LUMIERA_ERROR_EXCEPTION) throw();
Error (std::exception& cause,
string description="", const char* id=CINELERRA_ERROR_EXCEPTION) throw();
string description="", const char* id=LUMIERA_ERROR_EXCEPTION) throw();
Error (const Error&) throw();
virtual ~Error () throw() {};
@ -58,7 +58,7 @@ namespace cinelerra
/** yield a diagnostic message characterizing the problem */
virtual const char* what () const throw();
/** the internal cinelerra-error-ID (was set as C-errorstate in ctor) */
/** the internal Lumiera-error-ID (was set as C-errorstate in ctor) */
const char* getID () const throw() { return this->id_; }
/** extract the message to be displayed for the user */
@ -80,7 +80,7 @@ namespace cinelerra
private:
const char* id_; ///< an CINELERRA_ERROR id, which is set as errorstate on construction
const char* id_; ///< an LUMIERA_ERROR id, which is set as errorstate on construction
string msg_; ///< friendly message intended for users (to be localized)
string desc_; ///< detailed description of the error situation for the developers
mutable string what_; ///< buffer for generating the detailed description on demand
@ -105,68 +105,68 @@ namespace cinelerra
* can be considered a severe design flaw; we can just
* add some diagnostics prior to halting.
*/
void cinelerra_unexpectedException () throw();
void lumiera_unexpectedException () throw();
/** throw an error::Fatal indicating "assertion failure" */
void assertion_terminate (const string& location);
/* constants to be used as error IDs */
CINELERRA_ERROR_DECLARE (LOGIC ); ///< contradiction to internal logic assumptions detected
CINELERRA_ERROR_DECLARE (FATAL ); ///< unable to cope with, internal logic floundered
CINELERRA_ERROR_DECLARE (CONFIG ); ///< execution aborted due to misconfiguration
CINELERRA_ERROR_DECLARE (STATE ); ///< unforeseen internal state
CINELERRA_ERROR_DECLARE (INVALID ); ///< invalid input or parameters encountered
CINELERRA_ERROR_DECLARE (EXTERNAL ); ///< failure in external service the application relies on
CINELERRA_ERROR_DECLARE (ASSERTION); ///< assertion failure
LUMIERA_ERROR_DECLARE (LOGIC ); ///< contradiction to internal logic assumptions detected
LUMIERA_ERROR_DECLARE (FATAL ); ///< unable to cope with, internal logic floundered
LUMIERA_ERROR_DECLARE (CONFIG ); ///< execution aborted due to misconfiguration
LUMIERA_ERROR_DECLARE (STATE ); ///< unforeseen internal state
LUMIERA_ERROR_DECLARE (INVALID ); ///< invalid input or parameters encountered
LUMIERA_ERROR_DECLARE (EXTERNAL ); ///< failure in external service the application relies on
LUMIERA_ERROR_DECLARE (ASSERTION); ///< assertion failure
/** Macro for creating derived exception classes properly
* integrated into cinelerra's exception hierarchy. Using
* this macro ensures that the new class will get the full
* integrated into Lumiera's exception hierarchy. Using
* this macro asures that the new class will get the full
* set of constructors and behaviour common to all exception
* classes, so it should be used when creating an derived
* exception type for more then stricly local purposes
*/
#define CINELERRA_EXCEPTION_DECLARE(CLASS, PARENT, _ID_) \
class CLASS : public PARENT \
{ \
public: \
CLASS (std::string description="", \
const char* id=_ID_) throw() \
: PARENT (description, id) {} \
\
CLASS (std::exception& cause, \
std::string description="", \
const char* id=_ID_) throw() \
: PARENT (cause, description, id) {} \
#define LUMIERA_EXCEPTION_DECLARE(CLASS, PARENT, _ID_) \
class CLASS : public PARENT \
{ \
public: \
CLASS (std::string description="", \
const char* id=_ID_) throw() \
: PARENT (description, id) {} \
\
CLASS (std::exception& cause, \
std::string description="", \
const char* id=_ID_) throw() \
: PARENT (cause, description, id) {} \
};
//---------------------------CLASS-----PARENT--ID----------------------
CINELERRA_EXCEPTION_DECLARE (Logic, Error, CINELERRA_ERROR_LOGIC);
CINELERRA_EXCEPTION_DECLARE (Fatal, Logic, CINELERRA_ERROR_FATAL);
CINELERRA_EXCEPTION_DECLARE (Config, Error, CINELERRA_ERROR_CONFIG);
CINELERRA_EXCEPTION_DECLARE (State, Error, CINELERRA_ERROR_STATE);
CINELERRA_EXCEPTION_DECLARE (Invalid, Error, CINELERRA_ERROR_INVALID);
CINELERRA_EXCEPTION_DECLARE (External, Error, CINELERRA_ERROR_EXTERNAL);
//-------------------------CLASS-----PARENT--ID----------------------
LUMIERA_EXCEPTION_DECLARE (Logic, Error, LUMIERA_ERROR_LOGIC);
LUMIERA_EXCEPTION_DECLARE (Fatal, Logic, LUMIERA_ERROR_FATAL);
LUMIERA_EXCEPTION_DECLARE (Config, Error, LUMIERA_ERROR_CONFIG);
LUMIERA_EXCEPTION_DECLARE (State, Error, LUMIERA_ERROR_STATE);
LUMIERA_EXCEPTION_DECLARE (Invalid, Error, LUMIERA_ERROR_INVALID);
LUMIERA_EXCEPTION_DECLARE (External, Error, LUMIERA_ERROR_EXTERNAL);
} // namespace error
} // namespace cinelerra
} // namespace lumiera
/******************************************************
* if NoBug is used, redefine some macros
* to rather throw Cinelerra Errors instead of aborting
* to rather throw Lumiera Errors instead of aborting
*/
#ifdef NOBUG_ABORT
#undef NOBUG_ABORT
#define CIN_NOBUG_LOCATION \
#define LUMIERA_NOBUG_LOCATION \
std::string (NOBUG_BASENAME(__FILE__)) +":"+ NOBUG_STRINGIZE(__LINE__) + ", function " + __func__
#define NOBUG_ABORT \
cinelerra::error::assertion_terminate (CIN_NOBUG_LOCATION);
lumiera::error::assertion_terminate (LUMIERA_NOBUG_LOCATION);
#endif
#endif // CINELERRA_ERROR_HPP_
#endif // LUMIERA_ERROR_HPP_

View file

@ -1,8 +1,8 @@
/*
FACTORY.hpp - template for object/smart-pointer factories
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -21,14 +21,14 @@
*/
#ifndef CINELERRA_FACTORY_H
#define CINELERRA_FACTORY_H
#ifndef LUMIERA_FACTORY_H
#define LUMIERA_FACTORY_H
#include <tr1/memory>
namespace cinelerra
namespace lumiera
{
namespace factory
{
@ -141,5 +141,5 @@ namespace cinelerra
using factory::Factory;
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
MULTITHREAD.hpp - generic interface for multithreading primitives
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
@ -23,21 +23,21 @@
#ifndef CINELERRA_MULTITHREAD_H
#define CINELERRA_MULTITHREAD_H
#ifndef LUMIERA_MULTITHREAD_H
#define LUMIERA_MULTITHREAD_H
#include "nobugcfg.h"
namespace cinelerra
namespace lumiera
{
/**
* Interface/Policy for managing parallelism issues.
* Basically everything is forwarded to the corresponding backend functions,
* because managing threads and locking belongs to the cinelerra backend layer.
* because managing threads and locking belongs to the Lumiera backend layer.
*
* @todo actually implement this policy using the cinelerra databackend.
* @todo actually implement this policy using the Lumiera databackend.
*/
struct Thread
{
@ -52,5 +52,5 @@ namespace cinelerra
};
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
Query - interface for capability queries
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -39,7 +39,7 @@ using boost::algorithm::is_alpha;
using util::contains;
namespace cinelerra
namespace lumiera
{
namespace query
@ -92,4 +92,4 @@ namespace cinelerra
/** */
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
QUERY.hpp - interface for capability queries
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -21,8 +21,8 @@
*/
#ifndef CINELERRA_QUERY_H
#define CINELERRA_QUERY_H
#ifndef LUMIERA_QUERY_H
#define LUMIERA_QUERY_H
#include <string>
@ -31,7 +31,7 @@
#include <boost/format.hpp>
namespace cinelerra
namespace lumiera
{
using std::string;
using boost::format;
@ -75,5 +75,5 @@ namespace cinelerra
} // namespace query
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
MockConfigRules - mock implementation of the config rules system
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -33,7 +33,7 @@
namespace cinelerra
namespace lumiera
{
namespace query
@ -149,4 +149,4 @@ namespace cinelerra
/** */
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
MOCKCONFIGRULES.hpp - mock implementation of the config rules system
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -29,14 +29,14 @@
** -- later on, when we use a real Prolog interpreter, it still may be useful for
** testing and debugging.
**
** @see cinelerra::Query
** @see cinelerra::ConfigRules
** @see lumiera::Query
** @see lumiera::ConfigRules
**
*/
#ifndef CINELERRA_MOCKCONFIGRULES_H
#define CINELERRA_MOCKCONFIGRULES_H
#ifndef LUMIERA_MOCKCONFIGRULES_H
#define LUMIERA_MOCKCONFIGRULES_H
#include "common/configrules.hpp"
#include "common/util.hpp"
@ -48,7 +48,7 @@
namespace cinelerra
namespace lumiera
{
//using std::string;
@ -77,7 +77,7 @@ namespace cinelerra
* the actual table holding preconfigured answers
* packaged as boost::any objects.
*/
class MockTable : public cinelerra::ConfigRules
class MockTable : public lumiera::ConfigRules
{
typedef std::map<string,any> Tab;
typedef boost::scoped_ptr<Tab> PTab;
@ -134,7 +134,7 @@ namespace cinelerra
{
protected:
MockConfigRules (); ///< to be used only by the singleton factory
friend class cinelerra::singleton::StaticCreate<MockConfigRules>;
friend class lumiera::singleton::StaticCreate<MockConfigRules>;
virtual ~MockConfigRules() {}
@ -148,5 +148,5 @@ namespace cinelerra
} // namespace query
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
SINGLETON.hpp - configuration header for singleton factory
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -30,7 +30,7 @@
** e.g. sometimes we want to include a hook for injecting Test Mock instances.
**
** You'll find the default Policies in singletonfactory.hpp and the default
** definition of type cinelerra::singleton in singletonpreconfigure.hpp
** definition of type lumiera::singleton in singletonpreconfigure.hpp
**
** @see SingletonFactory
** @see singleton::StaticCreate
@ -40,8 +40,8 @@
*/
#ifndef CINELERRA_SINGLETON_H
#define CINELERRA_SINGLETON_H
#ifndef LUMIERA_SINGLETON_H
#define LUMIERA_SINGLETON_H
#include "common/singletonpolicies.hpp"

View file

@ -1,8 +1,8 @@
/*
SINGLETONFACTORY.hpp - template for implementing the singleton pattern
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -31,8 +31,8 @@ This code is heavily inspired by
#ifndef CINELERRA_SINGLETONFACTORY_H
#define CINELERRA_SINGLETONFACTORY_H
#ifndef LUMIERA_SINGLETONFACTORY_H
#define LUMIERA_SINGLETONFACTORY_H
#include "common/singletonpolicies.hpp" ///< several Policies usable together with SingletonFactory
@ -42,7 +42,7 @@ This code is heavily inspired by
namespace cinelerra
namespace lumiera
{
/**
@ -135,5 +135,5 @@ namespace cinelerra
///// It seems this would either cost us much of the flexibility or get complicated
///// to a point where we could as well implement our own Depenency Injection Manager.
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
SINGLETONPOLICIES.hpp - how to manage creation, lifecycle and multithreading
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -31,8 +31,8 @@ This code is heavily inspired by
#ifndef CINELERRA_SINGLETONPOLICIES_H
#define CINELERRA_SINGLETONPOLICIES_H
#ifndef LUMIERA_SINGLETONPOLICIES_H
#define LUMIERA_SINGLETONPOLICIES_H
#include "common/multithread.hpp"
#include "common/error.hpp"
@ -40,11 +40,11 @@ This code is heavily inspired by
#include <vector>
namespace cinelerra
namespace lumiera
{
namespace singleton
{
/* == several Policies usable in conjunction with cinelerra::Singleton == */
/* === several Policies usable in conjunction with lumiera::Singleton === */
/**
* Policy placing the Singleton instance into a statically allocated buffer
@ -133,13 +133,13 @@ namespace cinelerra
/**
* Policy for handling multithreaded access to the singleton instance
* @todo actually implement this policy using the cinelerra databackend.
* @todo actually implement this policy using the Lumiera databackend.
*/
template<class S>
struct Multithreaded
{
typedef volatile S VolatileType;
typedef cinelerra::Thread::Lock<S> Lock;
typedef lumiera::Thread::Lock<S> Lock;
};
@ -156,5 +156,5 @@ namespace cinelerra
} // namespace singleton
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
SINGLETONPRECONFIGURE - declare the configuration of some Singleton types in advance
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -31,7 +31,7 @@
** One reason why one wants special Singleton behaviour is testing: Without
** altering the executable, for running some tests we need to inject a Test Mock
** in place of some service object, so we can verify the behaviour of the code
** <i>using</i> this service. For this, we mix cinelerra::test::MockInjector
** <i>using</i> this service. For this, we mix lumiera::test::MockInjector
** into the actual Singleton type.
**
** @note we declare the specialisations into the target namespace
@ -41,13 +41,13 @@
*/
#ifndef CINELERRA_SINGLETONPRECONFIGURE_H
#define CINELERRA_SINGLETONPRECONFIGURE_H
#ifndef LUMIERA_SINGLETONPRECONFIGURE_H
#define LUMIERA_SINGLETONPRECONFIGURE_H
#include "common/test/mockinjector.hpp"
namespace cinelerra
namespace lumiera
{
/**
* Default Singleton configuration
@ -67,15 +67,15 @@ namespace cinelerra
namespace test
{
class TestSingletonO;
using cinelerra::Singleton;
using lumiera::Singleton;
} // namespace test
} // namespace cinelerra
} // namespace lumiera
namespace backend_interface
{
class MediaAccessFacade;
using cinelerra::Singleton;
using lumiera::Singleton;
} // namespace backend_interface
@ -87,7 +87,7 @@ namespace backend_interface
/* Specialisation Definitions */
/* ************************** */
namespace cinelerra
namespace lumiera
{
using test::MockInjector;
@ -104,7 +104,7 @@ namespace cinelerra
: public MockInjector<backend_interface::MediaAccessFacade>
{ };
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
SINGLETONSUBCLASS.hpp - variant of the singleton (factory) creating a subclass
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -35,8 +35,8 @@
*/
#ifndef CINELERRA_SINGLETONSUBCLASS_H
#define CINELERRA_SINGLETONSUBCLASS_H
#ifndef LUMIERA_SINGLETONSUBCLASS_H
#define LUMIERA_SINGLETONSUBCLASS_H
#include "common/singleton.hpp"
@ -45,7 +45,7 @@
#include <typeinfo>
namespace cinelerra
namespace lumiera
{
using boost::scoped_ptr;
@ -53,7 +53,7 @@ namespace cinelerra
namespace singleton
{
/**
* Helper template to use the general policy classes of the cinelerra::Singleton,
* Helper template to use the general policy classes of the lumiera::Singleton,
* but change the way they are parametrized on-the-fly.
*/
template<template<class> class POL, class I>
@ -174,6 +174,6 @@ namespace cinelerra
};
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
MOCKINJECTOR.hpp - replacement singleton factory for injecting Test-Mock objects
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -22,8 +22,8 @@
#ifndef CINELERRA_TEST_MOCKINJECTOR_H
#define CINELERRA_TEST_MOCKINJECTOR_H
#ifndef LUMIERA_TEST_MOCKINJECTOR_H
#define LUMIERA_TEST_MOCKINJECTOR_H
#include "common/singletonfactory.hpp"
@ -31,7 +31,7 @@
#include <boost/scoped_ptr.hpp>
namespace cinelerra
namespace lumiera
{
namespace test
{
@ -90,5 +90,5 @@ namespace cinelerra
} // namespace test
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
RUN.hpp - helper class for grouping, registering and invoking testcases
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or

View file

@ -1,8 +1,8 @@
/*
Suite - helper class for running collections of tests
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -133,7 +133,7 @@ namespace test
TRACE(test, "Test-Suite( groupID=%s )\n", groupID.c_str () );
if (!testcases.getGroup(groupID))
throw cinelerra::error::Invalid ();
throw lumiera::error::Invalid ();
//throw "empty testsuite"; /////////// TODO Errorhandling!
}
@ -155,7 +155,7 @@ namespace test
{
PTestMap tests = testcases.getGroup(groupID_);
if (!tests)
throw cinelerra::error::Invalid (); ///////// TODO: pass error description
throw lumiera::error::Invalid (); ///////// TODO: pass error description
if (0 < cmdline.size())
{
@ -209,7 +209,7 @@ namespace test
}
catch (...)
{
std::cout << "PLANNED ============= " << cinelerra_error() << "\n";
std::cout << "PLANNED ============= " << lumiera_error() << "\n";
}
std::cout << "END\n";
}

View file

@ -1,8 +1,8 @@
/*
SUITE.hpp - helper class for running collections of tests
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
Suite - helper class for running collections of tests
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
TESTOPTION.hpp - handle cmdline for invoking Testsuite
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
Time - unified representation of a time point, including conversion functions
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -25,7 +25,7 @@
#include <limits>
namespace cinelerra
namespace lumiera
{
// TODO: dummy values; should be adjusted when switching to the real time implementation provided by the backend
@ -34,4 +34,4 @@ namespace cinelerra
const Time Time::MIN = -std::numeric_limits<long>::max();
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
TIME.hpp - unified representation of a time point, including conversion functions
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -21,13 +21,13 @@
*/
#ifndef CINELERRA_TIME_H
#define CINELERRA_TIME_H
#ifndef LUMIERA_TIME_H
#define LUMIERA_TIME_H
#include <boost/operators.hpp>
namespace cinelerra
namespace lumiera
{
@ -56,5 +56,5 @@ namespace cinelerra
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
TYPELIST.hpp - typelist meta programming facilities
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -47,19 +47,19 @@ This code is heavily inspired by
**
** Interface for using this facility is the template Types(.....) for up to 20 Type parameters
**
** @see cinelerra::visitor::Applicable usage example
** @see lumiera::visitor::Applicable usage example
** @see typelisttest.cpp
**
*/
#ifndef CINELERRA_TYPELIST_H
#define CINELERRA_TYPELIST_H
#ifndef LUMIERA_TYPELIST_H
#define LUMIERA_TYPELIST_H
namespace cinelerra
namespace lumiera
{
namespace typelist
{
@ -116,5 +116,5 @@ namespace cinelerra
} // namespace typelist
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
TYPELISTUTIL.hpp - metaprogramming utilities for lists-of-types
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -39,22 +39,22 @@ This code is heavily inspired by
/** @file typelistutil.hpp
** Helpers for working with cinelerra::typelist::Types (i.e. lists-of-types).
** Helpers for working with lumiera::typelist::Types (i.e. lists-of-types).
**
** @see cinelerra::query::ConfigRules usage example
** @see lumiera::query::ConfigRules usage example
** @see typelist.hpp
**
*/
#ifndef CINELERRA_TYPELISTUTIL_H
#define CINELERRA_TYPELISTUTIL_H
#ifndef LUMIERA_TYPELISTUTIL_H
#define LUMIERA_TYPELISTUTIL_H
#include "common/typelist.hpp"
namespace cinelerra
namespace lumiera
{
namespace typelist
{
@ -143,5 +143,5 @@ namespace cinelerra
} // namespace typelist
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
util.cpp - helper functions implementation
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
UTIL.hpp - collection of small helper functions used "everywhere"
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
Vistitable,Tool,Applicable - Acyclic Visitor library
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -23,7 +23,7 @@
#include "common/visitor.hpp"
namespace cinelerra
namespace lumiera
{
namespace visitor
{
@ -32,4 +32,4 @@ namespace cinelerra
} // namespace visitor
} // namespace cinelerra
} // namespace lumiera

View file

@ -1,8 +1,8 @@
/*
VISITOR.hpp - Generic Visitor library implementation
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -37,7 +37,7 @@ Credits for many further implementation ideas go to
/** @file visitor.hpp
** A library implementation of the <b>Visitor Pattern</b> taylored specifically
** to cinelerra's needs within the Proc Layer. Visitor enables <b>double dispatch</b>
** to Lumiera's needs within the Proc Layer. Visitor enables <b>double dispatch</b>
** calls, based both on the concrete type of some target object and the concrete type of
** a tool object being applied to this target. The code carrying out this tool application
** (and thus triggering the double dispatch) need not know any of these concret types and is
@ -73,8 +73,8 @@ Credits for many further implementation ideas go to
#ifndef CINELERRA_VISITOR_H
#define CINELERRA_VISITOR_H
#ifndef LUMIERA_VISITOR_H
#define LUMIERA_VISITOR_H
#include "common/visitorpolicies.hpp"
#include "common/visitordispatcher.hpp"
@ -82,7 +82,7 @@ Credits for many further implementation ideas go to
#include "common/typelist.hpp"
namespace cinelerra
namespace lumiera
{
namespace visitor
{
@ -229,5 +229,5 @@ namespace cinelerra
} // namespace visitor
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
VISITORDISPATCHER.hpp - visitor implementation details
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -22,8 +22,8 @@
#ifndef CINELERRA_VISITORDISPATCHER_H
#define CINELERRA_VISITORDISPATCHER_H
#ifndef LUMIERA_VISITORDISPATCHER_H
#define LUMIERA_VISITORDISPATCHER_H
#include "common/error.hpp"
#include "common/util.hpp"
@ -33,7 +33,7 @@
#include <vector>
namespace cinelerra
namespace lumiera
{
namespace visitor
{
@ -211,5 +211,5 @@ namespace cinelerra
} // namespace visitor
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,8 +1,8 @@
/*
VISITOR.hpp - Acyclic Visitor library
Copyright (C) CinelerraCV
2007, Hermann Vosseler <Ichthyostega@web.de>
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -22,20 +22,20 @@
/** @file visitorpolicies.hpp
** Policies usable for configuring the cinelerra::visitor::Tool for different kinds of error handling.
** Policies usable for configuring the lumiera::visitor::Tool for different kinds of error handling.
** @see buildertool.hpp for another flavor (calling and catch-all-function)
**
*/
#ifndef CINELERRA_VISITORPOLICIES_H
#define CINELERRA_VISITORPOLICIES_H
#ifndef LUMIERA_VISITORPOLICIES_H
#define LUMIERA_VISITORPOLICIES_H
#include "common/error.hpp"
namespace cinelerra
namespace lumiera
{
namespace visitor
{
@ -65,7 +65,7 @@ namespace cinelerra
RET
onUnknown (TAR&)
{
throw cinelerra::error::Config("unable to decide what tool operation to call");
throw lumiera::error::Config("unable to decide what tool operation to call");
}
};
@ -73,5 +73,5 @@ namespace cinelerra
} // namespace visitor
} // namespace cinelerra
} // namespace lumiera
#endif

View file

@ -1,2 +1,2 @@
cinelerra support library
Lumiera support library
This dir contains the code for some tools and library code which will be used in many places

View file

@ -1,4 +1,4 @@
# Copyright (C) CinelerraCV
# Copyright (C) Lumiera.org
# 2007, Christian Thaeter <ct@pipapo.org>
#
# This program is free software; you can redistribute it and/or
@ -15,31 +15,31 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
libcin3_a_srcdir = $(top_srcdir)/src/lib
noinst_LIBRARIES += libcin3.a
liblumi_a_srcdir = $(top_srcdir)/src/lib
noinst_LIBRARIES += liblumi.a
libcin3_a_CFLAGS = $(CFLAGS) -std=gnu99 -Wall -Werror
libcin3_a_CPPFLAGS = -I$(top_srcdir)/src/
liblumi_a_CFLAGS = $(CFLAGS) -std=gnu99 -Wall -Werror
liblumi_a_CPPFLAGS = -I$(top_srcdir)/src/
libcin3_a_SOURCES = \
$(libcin3_a_srcdir)/plugin.c \
$(libcin3_a_srcdir)/error.c \
$(libcin3_a_srcdir)/time.c \
$(libcin3_a_srcdir)/framerate.c \
$(libcin3_a_srcdir)/mutex.c \
$(libcin3_a_srcdir)/rwlock.c \
$(libcin3_a_srcdir)/condition.c \
$(libcin3_a_srcdir)/references.c
liblumi_a_SOURCES = \
$(liblumi_a_srcdir)/plugin.c \
$(liblumi_a_srcdir)/error.c \
$(liblumi_a_srcdir)/time.c \
$(liblumi_a_srcdir)/framerate.c \
$(liblumi_a_srcdir)/mutex.c \
$(liblumi_a_srcdir)/rwlock.c \
$(liblumi_a_srcdir)/condition.c \
$(liblumi_a_srcdir)/references.c
noinst_HEADERS += \
$(libcin3_a_srcdir)/plugin.h \
$(libcin3_a_srcdir)/error.h \
$(libcin3_a_srcdir)/time.h \
$(libcin3_a_srcdir)/framerate.h \
$(libcin3_a_srcdir)/locking.h \
$(libcin3_a_srcdir)/mutex.h \
$(libcin3_a_srcdir)/rwlock.h \
$(libcin3_a_srcdir)/condition.h \
$(libcin3_a_srcdir)/references.h
$(liblumi_a_srcdir)/plugin.h \
$(liblumi_a_srcdir)/error.h \
$(liblumi_a_srcdir)/time.h \
$(liblumi_a_srcdir)/framerate.h \
$(liblumi_a_srcdir)/locking.h \
$(liblumi_a_srcdir)/mutex.h \
$(liblumi_a_srcdir)/rwlock.h \
$(liblumi_a_srcdir)/condition.h \
$(liblumi_a_srcdir)/references.h

View file

@ -1,8 +1,8 @@
/*
condition.c - condition variable
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -30,8 +30,8 @@
* @param self is a pointer to the condition variable to be initialized
* @return self as given
*/
CinelerraCondition
cinelerra_condition_init (CinelerraCondition self)
LumieraCondition
lumiera_condition_init (LumieraCondition self)
{
if (self)
{
@ -47,15 +47,15 @@ cinelerra_condition_init (CinelerraCondition self)
* @param self is a pointer to the condition variable to be destroyed
* @return self as given
*/
CinelerraCondition
cinelerra_condition_destroy (CinelerraCondition self)
LumieraCondition
lumiera_condition_destroy (LumieraCondition self)
{
if (self)
{
if (pthread_mutex_destroy (&self->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
else if (pthread_cond_destroy (&self->cond))
CINELERRA_DIE;
LUMIERA_DIE;
}
return self;
}

View file

@ -1,8 +1,8 @@
/*
condition.h - condition variables
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -19,8 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_CONDITION_H
#define CINELERRA_CONDITION_H
#ifndef LUMIERA_CONDITION_H
#define LUMIERA_CONDITION_H
#include "lib/locking.h"
@ -33,21 +33,21 @@
* Condition variables.
*
*/
struct cinelerra_condition_struct
struct lumiera_condition_struct
{
pthread_cond_t cond;
pthread_mutex_t mutex;
};
typedef struct cinelerra_condition_struct cinelerra_condition;
typedef cinelerra_condition* CinelerraCondition;
typedef struct lumiera_condition_struct lumiera_condition;
typedef lumiera_condition* LumieraCondition;
CinelerraCondition
cinelerra_condition_init (CinelerraCondition self);
LumieraCondition
lumiera_condition_init (LumieraCondition self);
CinelerraCondition
cinelerra_condition_destroy (CinelerraCondition self);
LumieraCondition
lumiera_condition_destroy (LumieraCondition self);
/**
@ -55,14 +55,14 @@ cinelerra_condition_destroy (CinelerraCondition self);
* @param self condition variable to be signaled, must be given, all errors are fatal
*/
static inline void
cinelerra_condition_signal (CinelerraCondition self)
lumiera_condition_signal (LumieraCondition self)
{
REQUIRE (self);
if (pthread_mutex_lock (&self->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
pthread_cond_signal (&self->cond);
if (pthread_mutex_unlock (&self->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
}
/**
@ -70,14 +70,14 @@ cinelerra_condition_signal (CinelerraCondition self)
* @param self condition variable to be signaled, must be given, all errors are fatal
*/
static inline void
cinelerra_condition_broadcast (CinelerraCondition self)
lumiera_condition_broadcast (LumieraCondition self)
{
REQUIRE (self);
if (pthread_mutex_lock (&self->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
pthread_cond_broadcast (&self->cond);
if (pthread_mutex_unlock (&self->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
}
@ -87,44 +87,44 @@ cinelerra_condition_broadcast (CinelerraCondition self)
/**
* conditionacquirer used to manage the state of a condition variable.
*/
struct cinelerra_conditionacquirer_struct
struct lumiera_conditionacquirer_struct
{
CinelerraCondition cond;
enum cinelerra_lockstate state;
LumieraCondition cond;
enum lumiera_lockstate state;
};
typedef struct cinelerra_conditionacquirer_struct cinelerra_conditionacquirer;
typedef struct cinelerra_conditionacquirer_struct* CinelerraConditionacquirer;
typedef struct lumiera_conditionacquirer_struct lumiera_conditionacquirer;
typedef struct lumiera_conditionacquirer_struct* LumieraConditionacquirer;
/* helper function for nobug */
static inline void
cinelerra_conditionacquirer_ensureunlocked (CinelerraConditionacquirer self)
lumiera_conditionacquirer_ensureunlocked (LumieraConditionacquirer self)
{
ENSURE (self->state == CINELERRA_UNLOCKED, "forgot to unlock the condition mutex");
ENSURE (self->state == LUMIERA_UNLOCKED, "forgot to unlock the condition mutex");
}
/* override with a macro to use the cleanup checker */
#define cinelerra_conditionacquirer \
cinelerra_conditionacquirer NOBUG_CLEANUP(cinelerra_conditionacquirer_ensureunlocked)
#define lumiera_conditionacquirer \
lumiera_conditionacquirer NOBUG_CLEANUP(lumiera_conditionacquirer_ensureunlocked)
/**
* initialize a conditionacquirer state
* @param self conditionacquirer to be initialized, must be an automatic variable
* @param cond associated condition variable
* @param state initial state of the mutex, either CINELERRA_LOCKED or CINELERRA_UNLOCKED
* @param state initial state of the mutex, either LUMIERA_LOCKED or LUMIERA_UNLOCKED
* @return self as given
* errors are fatal
*/
static inline CinelerraConditionacquirer
cinelerra_conditionacquirer_init (CinelerraConditionacquirer self, CinelerraCondition cond, enum cinelerra_lockstate state)
static inline LumieraConditionacquirer
lumiera_conditionacquirer_init (LumieraConditionacquirer self, LumieraCondition cond, enum lumiera_lockstate state)
{
REQUIRE (self);
REQUIRE (cond);
self->cond = cond;
self->state = state;
if (state == CINELERRA_LOCKED)
if (state == LUMIERA_LOCKED)
if (pthread_mutex_lock (&cond->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
return self;
}
@ -135,15 +135,15 @@ cinelerra_conditionacquirer_init (CinelerraConditionacquirer self, CinelerraCond
* @param self conditionacquirer associated with a condition variable
*/
static inline void
cinelerra_conditionacquirer_lock (CinelerraConditionacquirer self)
lumiera_conditionacquirer_lock (LumieraConditionacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_UNLOCKED, "mutex already locked");
REQUIRE (self->state == LUMIERA_UNLOCKED, "mutex already locked");
if (pthread_mutex_lock (&self->cond->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
self->state = CINELERRA_LOCKED;
self->state = LUMIERA_LOCKED;
}
@ -153,10 +153,10 @@ cinelerra_conditionacquirer_lock (CinelerraConditionacquirer self)
* @param self conditionacquirer associated with a condition variable
*/
static inline void
cinelerra_conditionacquirer_wait (CinelerraConditionacquirer self)
lumiera_conditionacquirer_wait (LumieraConditionacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_LOCKED, "mutex must be locked");
REQUIRE (self->state == LUMIERA_LOCKED, "mutex must be locked");
pthread_cond_wait (&self->cond->cond, &self->cond->mutex);
}
@ -167,13 +167,13 @@ cinelerra_conditionacquirer_wait (CinelerraConditionacquirer self)
* @param self conditionacquirer associated with a condition variable
*/
static inline int
cinelerra_conditionacquirer_unlock (CinelerraConditionacquirer self)
lumiera_conditionacquirer_unlock (LumieraConditionacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_LOCKED, "mutex was not locked");
REQUIRE (self->state == LUMIERA_LOCKED, "mutex was not locked");
if (pthread_mutex_unlock (&self->cond->mutex))
CINELERRA_DIE;
self->state = CINELERRA_UNLOCKED;
LUMIERA_DIE;
self->state = LUMIERA_UNLOCKED;
}
@ -182,10 +182,10 @@ cinelerra_conditionacquirer_unlock (CinelerraConditionacquirer self)
* @param self conditionacquirer associated with the condition variable to be signaled
*/
static inline void
cinelerra_conditionacquirer_signal (CinelerraConditionacquirer self)
lumiera_conditionacquirer_signal (LumieraConditionacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_LOCKED, "mutex was not locked");
REQUIRE (self->state == LUMIERA_LOCKED, "mutex was not locked");
pthread_cond_signal (&self->cond->cond);
}
@ -195,10 +195,10 @@ cinelerra_conditionacquirer_signal (CinelerraConditionacquirer self)
* @param self conditionacquirer associated with the condition variable to be signaled
*/
static inline int
cinelerra_conditionacquirer_broadcast (CinelerraConditionacquirer self)
lumiera_conditionacquirer_broadcast (LumieraConditionacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_LOCKED, "mutex was not locked");
REQUIRE (self->state == LUMIERA_LOCKED, "mutex was not locked");
pthread_cond_broadcast (&self->cond->cond);
}

View file

@ -1,8 +1,8 @@
/*
error.c - Cinelerra Error handling
error.c - Lumiera Error handling
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -24,41 +24,41 @@
#include "lib/error.h"
/**
* @file C Error handling in Cinelerra.
* @file C Error handling in Lumiera.
*/
/*
predefined errors
*/
CINELERRA_ERROR_DEFINE (ERRNO, "errno");
LUMIERA_ERROR_DEFINE (ERRNO, "errno");
/* Thread local storage */
static pthread_key_t cinelerra_error_tls;
static pthread_once_t cinelerra_error_initialized = PTHREAD_ONCE_INIT;
static pthread_key_t lumiera_error_tls;
static pthread_once_t lumiera_error_initialized = PTHREAD_ONCE_INIT;
static void
cinelerra_error_tls_init (void)
lumiera_error_tls_init (void)
{
pthread_key_create (&cinelerra_error_tls, NULL);
pthread_key_create (&lumiera_error_tls, NULL);
}
/**
* Set error state for the current thread.
* If the error state of the current thread was cleared, then set it, else preserve the old state.
* @param nerr name of the error with 'CINELERRA_ERROR_' prefix (example: CINELERRA_ERROR_NO_MEMORY)
* @param nerr name of the error with 'LUMIERA_ERROR_' prefix (example: LUMIERA_ERROR_NO_MEMORY)
* @return old state, that is NULL for success, when the state was cleared and a pointer to a pending
* error when the error state was already set
*/
const char*
cinelerra_error_set (const char * nerr)
lumiera_error_set (const char * nerr)
{
pthread_once (&cinelerra_error_initialized, cinelerra_error_tls_init);
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
const char* err = pthread_getspecific (cinelerra_error_tls);
const char* err = pthread_getspecific (lumiera_error_tls);
if (!err)
pthread_setspecific (cinelerra_error_tls, nerr);
pthread_setspecific (lumiera_error_tls, nerr);
return err;
}
@ -71,12 +71,12 @@ cinelerra_error_set (const char * nerr)
* @return pointer to any pending error of this thread, NULL if no error is pending
*/
const char*
cinelerra_error ()
lumiera_error ()
{
pthread_once (&cinelerra_error_initialized, cinelerra_error_tls_init);
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
const char* err = pthread_getspecific (cinelerra_error_tls);
const char* err = pthread_getspecific (lumiera_error_tls);
if (err)
pthread_setspecific (cinelerra_error_tls, NULL);
pthread_setspecific (lumiera_error_tls, NULL);
return err;
}

View file

@ -1,8 +1,8 @@
/*
error.h - Cinelerra Error handling
error.h - Lumiera Error handling
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -18,8 +18,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_ERROR_H
#define CINELERRA_ERROR_H
#ifndef LUMIERA_ERROR_H
#define LUMIERA_ERROR_H
#ifdef __cplusplus
extern "C" {
@ -31,7 +31,7 @@ extern "C" {
#include <stdlib.h>
/**
* @file C Error handling in Cinelerra, header.
* @file C Error handling in Lumiera, header.
*/
@ -39,46 +39,46 @@ extern "C" {
* Abort unconditionally with a 'Fatal Error!' message.
* This macro is used whenever the program end up in a invalid state from which no runtime recovery is possible
*/
#define CINELERRA_DIE do { NOBUG_ERROR(NOBUG_ON, "Fatal Error!"); abort(); } while(0)
#define LUMIERA_DIE do { NOBUG_ERROR(NOBUG_ON, "Fatal Error!"); abort(); } while(0)
/**
* Forward declare an error constant.
* This macro eases the error declaration in header files
* @param err name of the error without the 'CINELERRA_ERROR_' prefix (example: NO_MEMORY)
* @param err name of the error without the 'LUMIERA_ERROR_' prefix (example: NO_MEMORY)
*/
#define CINELERRA_ERROR_DECLARE(err) \
extern const char* CINELERRA_ERROR_##err
#define LUMIERA_ERROR_DECLARE(err) \
extern const char* LUMIERA_ERROR_##err
/**
* Definition and initialization of an error constant.
* This macro eases the error definition in implementation files
* @param err name of the error without the 'CINELERRA_ERROR_' prefix (example: NO_MEMORY)
* @param err name of the error without the 'LUMIERA_ERROR_' prefix (example: NO_MEMORY)
* @param msg message describing the error in plain english (example: "memory allocation failed")
*/
#define CINELERRA_ERROR_DEFINE(err, msg) \
const char* CINELERRA_ERROR_##err = "CINELERRA_ERROR_" #err ":" msg
#define LUMIERA_ERROR_DEFINE(err, msg) \
const char* LUMIERA_ERROR_##err = "LUMIERA_ERROR_" #err ":" msg
/** Helper macro to raise an error for the current thread.
* This macro eases setting an error. It adds NoBug logging support to the low level error handling.
* @param flag NoBug flag describing the subsystem where the error was raised
* @param err name of the error without the 'CINELERRA_ERROR_' prefix (example: NO_MEMORY)
* @param err name of the error without the 'LUMIERA_ERROR_' prefix (example: NO_MEMORY)
*/
#define CINELERRA_ERROR_SET(flag, err) \
(({ERROR (flag, "%s", strchr(CINELERRA_ERROR_##err, ':')+1);}), \
cinelerra_error_set(CINELERRA_ERROR_##err))
#define LUMIERA_ERROR_SET(flag, err) \
(({ERROR (flag, "%s", strchr(LUMIERA_ERROR_##err, ':')+1);}), \
lumiera_error_set(LUMIERA_ERROR_##err))
const char*
cinelerra_error_set (const char * err);
lumiera_error_set (const char * err);
const char*
cinelerra_error ();
lumiera_error ();
/*
predefined errors
*/
CINELERRA_ERROR_DECLARE (ERRNO);
LUMIERA_ERROR_DECLARE (ERRNO);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* CINELERRA_ERROR_H */
#endif /* LUMIERA_ERROR_H */

View file

@ -1,8 +1,8 @@
/*
framerate.c - framerate calculations
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -26,5 +26,5 @@
*/
CINELERRA_ERROR_DEFINE(FRAMERATE_ILLEGAL_TIME, "invalid time given");
CINELERRA_ERROR_DEFINE(FRAMERATE_ILLEGAL_FRAME, "invalid frame given");
LUMIERA_ERROR_DEFINE(FRAMERATE_ILLEGAL_TIME, "invalid time given");
LUMIERA_ERROR_DEFINE(FRAMERATE_ILLEGAL_FRAME, "invalid frame given");

View file

@ -1,8 +1,8 @@
/*
framerate.h - framerate calculations
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -19,8 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_FRAMERATE_H
#define CINELERRA_FRAMERATE_H
#ifndef LUMIERA_FRAMERATE_H
#define LUMIERA_FRAMERATE_H
#include <limits.h>
@ -36,37 +36,37 @@
* framerates are defined as a rational number
* for example NTSC with 30000/1001fps
*/
struct cinelerra_framerate_struct
struct lumiera_framerate_struct
{
unsigned n; //numerator
unsigned d; //denominator
};
typedef struct cinelerra_framerate_struct cinelerra_framerate;
typedef cinelerra_framerate* CinelerraFramerate;
typedef struct lumiera_framerate_struct lumiera_framerate;
typedef lumiera_framerate* LumieraFramerate;
typedef signed long cinelerra_framepos;
typedef signed long lumiera_framepos;
CINELERRA_ERROR_DECLARE(FRAMERATE_ILLEGAL_TIME);
CINELERRA_ERROR_DECLARE(FRAMERATE_ILLEGAL_FRAME);
LUMIERA_ERROR_DECLARE(FRAMERATE_ILLEGAL_TIME);
LUMIERA_ERROR_DECLARE(FRAMERATE_ILLEGAL_FRAME);
#define CINELERRA_FRAMEPOS_ERROR LONG_MIN
#define LUMIERA_FRAMEPOS_ERROR LONG_MIN
/**
* Get the frame number of a given time at a given frame rate.
* frame indexing starts with 1
* @param framerate is a pointer to the framerate used, defined as rational number. Must be given.
* @param time is a pointer to a cinelerra_time which shall be converted.
* @return frame at the given time or CINELERRA_FRAMEPOS_ERROR on error.
* @param time is a pointer to a lumiera_time which shall be converted.
* @return frame at the given time or LUMIERA_FRAMEPOS_ERROR on error.
*/
static inline cinelerra_framepos
cinelerra_framerate_frame_get_time (const CinelerraFramerate framerate, CinelerraTime time)
static inline lumiera_framepos
lumiera_framerate_frame_get_time (const LumieraFramerate framerate, LumieraTime time)
{
REQUIRE (framerate);
if (!time || time->tv_sec == (time_t)-1)
{
cinelerra_error_set(CINELERRA_ERROR_FRAMERATE_ILLEGAL_TIME);
return CINELERRA_FRAMEPOS_ERROR;
lumiera_error_set(LUMIERA_ERROR_FRAMERATE_ILLEGAL_TIME);
return LUMIERA_FRAMEPOS_ERROR;
}
/* we add a magic microsecond for rounding, because of integer truncation frames may be calculated at most 1us earlier,
@ -79,21 +79,21 @@ cinelerra_framerate_frame_get_time (const CinelerraFramerate framerate, Cinelerr
* Get the start time for a frame.
* frame indexing starts with 1
* @param framerate is a pointer to the framerate used, defined as rational number. Must be given.
* @param time is a pointer to a cinelerra_time which shall take the result.
* @param time is a pointer to a lumiera_time which shall take the result.
* @param frame frame number to be converted to time. This frame number must be greater than 0.
* @return the pointer given in time or NULL on error (or when it was given as time).
*/
static inline CinelerraTime
cinelerra_framerate_time_get_time_frame (const CinelerraFramerate framerate,
CinelerraTime time,
cinelerra_framepos frame)
static inline LumieraTime
lumiera_framerate_time_get_time_frame (const LumieraFramerate framerate,
LumieraTime time,
lumiera_framepos frame)
{
REQUIRE (framerate);
if (time)
{
if (frame < 1)
{
cinelerra_error_set(CINELERRA_ERROR_FRAMERATE_ILLEGAL_FRAME);
lumiera_error_set(LUMIERA_ERROR_FRAMERATE_ILLEGAL_FRAME);
return NULL;
}

View file

@ -3,8 +3,8 @@
Copyright (C)
2003, 2005 Christian Thaeter <chth@gmx.net>
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as

View file

@ -1,8 +1,8 @@
/*
locking.h - shared declarations for all locking primitives
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -19,8 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_LOCKING_H
#define CINELERRA_LOCKING_H
#ifndef LUMIERA_LOCKING_H
#define LUMIERA_LOCKING_H
#include <pthread.h>
#include <errno.h>
@ -37,12 +37,12 @@
*
*
*/
enum cinelerra_lockstate
enum lumiera_lockstate
{
CINELERRA_UNLOCKED,
CINELERRA_LOCKED,
CINELERRA_RDLOCKED,
CINELERRA_WRLOCKED
LUMIERA_UNLOCKED,
LUMIERA_LOCKED,
LUMIERA_RDLOCKED,
LUMIERA_WRLOCKED
};
#endif

View file

@ -1,8 +1,8 @@
/*
mutex.c - mutex
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -31,8 +31,8 @@
* @param self is a pointer to the mutex to be initialized
* @return self as given
*/
CinelerraMutex
cinelerra_mutex_init (CinelerraMutex self)
LumieraMutex
lumiera_mutex_init (LumieraMutex self)
{
if (self)
{
@ -46,13 +46,13 @@ cinelerra_mutex_init (CinelerraMutex self)
* @param self is a pointer to the mutex to be destroyed
* @return self as given
*/
CinelerraMutex
cinelerra_mutex_destroy (CinelerraMutex self)
LumieraMutex
lumiera_mutex_destroy (LumieraMutex self)
{
if (self)
{
if (pthread_mutex_destroy (&self->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
}
return self;
}

View file

@ -1,8 +1,8 @@
/*
mutex.h - mutal exclusion locking
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -19,8 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_MUTEX_H
#define CINELERRA_MUTEX_H
#ifndef LUMIERA_MUTEX_H
#define LUMIERA_MUTEX_H
#include "lib/locking.h"
@ -33,58 +33,58 @@
* Mutex.
*
*/
struct cinelerra_mutex_struct
struct lumiera_mutex_struct
{
pthread_mutex_t mutex;
};
typedef struct cinelerra_mutex_struct cinelerra_mutex;
typedef cinelerra_mutex* CinelerraMutex;
typedef struct lumiera_mutex_struct lumiera_mutex;
typedef lumiera_mutex* LumieraMutex;
CinelerraMutex
cinelerra_mutex_init (CinelerraMutex self);
LumieraMutex
lumiera_mutex_init (LumieraMutex self);
CinelerraMutex
cinelerra_mutex_destroy (CinelerraMutex self);
LumieraMutex
lumiera_mutex_destroy (LumieraMutex self);
/**
* mutexacquirer used to manage the state of a mutex variable.
*/
struct cinelerra_mutexacquirer_struct
struct lumiera_mutexacquirer_struct
{
CinelerraMutex mutex;
enum cinelerra_lockstate state;
LumieraMutex mutex;
enum lumiera_lockstate state;
};
typedef struct cinelerra_mutexacquirer_struct cinelerra_mutexacquirer;
typedef struct cinelerra_mutexacquirer_struct* CinelerraMutexacquirer;
typedef struct lumiera_mutexacquirer_struct lumiera_mutexacquirer;
typedef struct lumiera_mutexacquirer_struct* LumieraMutexacquirer;
/* helper function for nobug */
static inline void
cinelerra_mutexacquirer_ensureunlocked (CinelerraMutexacquirer self)
lumiera_mutexacquirer_ensureunlocked (LumieraMutexacquirer self)
{
ENSURE (self->state == CINELERRA_UNLOCKED, "forgot to unlock mutex");
ENSURE (self->state == LUMIERA_UNLOCKED, "forgot to unlock mutex");
}
/* override with a macro to use the cleanup checker */
#define cinelerra_mutexacquirer \
cinelerra_mutexacquirer NOBUG_CLEANUP(cinelerra_mutexacquirer_ensureunlocked)
#define lumiera_mutexacquirer \
lumiera_mutexacquirer NOBUG_CLEANUP(lumiera_mutexacquirer_ensureunlocked)
/**
* initialize a mutexacquirer state without mutex.
* @param self mutexacquirer to be initialized, must be an automatic variable
* @return self as given
* This initialization is used when cinelerra_mutexacquirer_try_mutex shall be used later
* This initialization is used when lumiera_mutexacquirer_try_mutex shall be used later
*/
static inline CinelerraMutexacquirer
cinelerra_mutexacquirer_init (CinelerraMutexacquirer self)
static inline LumieraMutexacquirer
lumiera_mutexacquirer_init (LumieraMutexacquirer self)
{
REQUIRE (self);
self->mutex = NULL;
self->state = CINELERRA_UNLOCKED;
self->state = LUMIERA_UNLOCKED;
return self;
}
@ -93,20 +93,20 @@ cinelerra_mutexacquirer_init (CinelerraMutexacquirer self)
* initialize a mutexacquirer state
* @param self mutexacquirer to be initialized, must be an automatic variable
* @param mutex associated mutex
* @param state initial state of the mutex, either CINELERRA_LOCKED or CINELERRA_UNLOCKED
* @param state initial state of the mutex, either LUMIERA_LOCKED or LUMIERA_UNLOCKED
* @return self as given
* errors are fatal
*/
static inline CinelerraMutexacquirer
cinelerra_mutexacquirer_init_mutex (CinelerraMutexacquirer self, CinelerraMutex mutex, enum cinelerra_lockstate state)
static inline LumieraMutexacquirer
lumiera_mutexacquirer_init_mutex (LumieraMutexacquirer self, LumieraMutex mutex, enum lumiera_lockstate state)
{
REQUIRE (self);
REQUIRE (mutex);
self->mutex = mutex;
self->state = state;
if (state == CINELERRA_LOCKED)
if (state == LUMIERA_LOCKED)
if (pthread_mutex_lock (&mutex->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
return self;
}
@ -118,25 +118,25 @@ cinelerra_mutexacquirer_init_mutex (CinelerraMutexacquirer self, CinelerraMutex
* @param self mutexacquirer associated with a mutex variable
*/
static inline void
cinelerra_mutexacquirer_lock (CinelerraMutexacquirer self)
lumiera_mutexacquirer_lock (LumieraMutexacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_UNLOCKED, "mutex already locked");
REQUIRE (self->state == LUMIERA_UNLOCKED, "mutex already locked");
if (pthread_mutex_lock (&self->mutex->mutex))
CINELERRA_DIE;
LUMIERA_DIE;
self->state = CINELERRA_LOCKED;
self->state = LUMIERA_LOCKED;
}
/**
* get the state of a lock.
* @param self mutexacquirer associated with a mutex variable
* @return CINELERRA_LOCKED when the mutex is locked by this thead
* @return LUMIERA_LOCKED when the mutex is locked by this thead
*/
static inline enum cinelerra_lockstate
cinelerra_mutexacquirer_state (CinelerraMutexacquirer self)
static inline enum lumiera_lockstate
lumiera_mutexacquirer_state (LumieraMutexacquirer self)
{
REQUIRE (self);
return self->state;
@ -148,23 +148,23 @@ cinelerra_mutexacquirer_state (CinelerraMutexacquirer self)
* must not already be locked
* @param self mutexacquirer associated with a mutex variable
* @param mutex pointer to a mutex which should be tried
* @return CINELERRA_LOCKED when the mutex got locked
* @return LUMIERA_LOCKED when the mutex got locked
*/
static inline enum cinelerra_lockstate
cinelerra_mutexacquirer_try_mutex (CinelerraMutexacquirer self, CinelerraMutex mutex)
static inline enum lumiera_lockstate
lumiera_mutexacquirer_try_mutex (LumieraMutexacquirer self, LumieraMutex mutex)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_UNLOCKED, "mutex already locked");
REQUIRE (self->state == LUMIERA_UNLOCKED, "mutex already locked");
self->mutex=mutex;
switch (pthread_mutex_trylock (&self->mutex->mutex))
{
case 0:
return self->state = CINELERRA_LOCKED;
return self->state = LUMIERA_LOCKED;
case EBUSY:
return CINELERRA_UNLOCKED;
return LUMIERA_UNLOCKED;
default:
CINELERRA_DIE;
LUMIERA_DIE;
}
}
@ -175,13 +175,13 @@ cinelerra_mutexacquirer_try_mutex (CinelerraMutexacquirer self, CinelerraMutex m
* @param self mutexacquirer associated with a mutex variable
*/
static inline void
cinelerra_mutexacquirer_unlock (CinelerraMutexacquirer self)
lumiera_mutexacquirer_unlock (LumieraMutexacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_LOCKED, "mutex was not locked");
REQUIRE (self->state == LUMIERA_LOCKED, "mutex was not locked");
if (pthread_mutex_unlock (&self->mutex->mutex))
CINELERRA_DIE;
self->state = CINELERRA_UNLOCKED;
LUMIERA_DIE;
self->state = LUMIERA_UNLOCKED;
}
#endif

View file

@ -1,8 +1,8 @@
/*
plugin.c - Cinelerra Plugin loader
plugin.c - Lumiera Plugin loader
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -34,48 +34,48 @@
/* TODO should be set by the build system to the actual plugin path */
#define CINELERRA_PLUGIN_PATH "~/.cinelerra3/plugins:/usr/local/lib/cinelerra3/plugins:.libs"
#define LUMIERA_PLUGIN_PATH "~/.lumiera/plugins:/usr/local/lib/lumiera/plugins:.libs"
NOBUG_DEFINE_FLAG (cinelerra_plugin);
NOBUG_DEFINE_FLAG (lumiera_plugin);
/* errors */
CINELERRA_ERROR_DEFINE(PLUGIN_DLOPEN, "Could not open plugin");
CINELERRA_ERROR_DEFINE(PLUGIN_HOOK, "Hook function failed");
CINELERRA_ERROR_DEFINE(PLUGIN_NFILE, "No such plugin");
CINELERRA_ERROR_DEFINE(PLUGIN_NIFACE, "No such interface");
CINELERRA_ERROR_DEFINE(PLUGIN_REVISION, "Interface revision too old");
LUMIERA_ERROR_DEFINE(PLUGIN_DLOPEN, "Could not open plugin");
LUMIERA_ERROR_DEFINE(PLUGIN_HOOK, "Hook function failed");
LUMIERA_ERROR_DEFINE(PLUGIN_NFILE, "No such plugin");
LUMIERA_ERROR_DEFINE(PLUGIN_NIFACE, "No such interface");
LUMIERA_ERROR_DEFINE(PLUGIN_REVISION, "Interface revision too old");
/*
supported (planned) plugin types and their file extensions
*/
enum cinelerra_plugin_type
enum lumiera_plugin_type
{
CINELERRA_PLUGIN_NULL,
CINELERRA_PLUGIN_DYNLIB,
CINELERRA_PLUGIN_CSOURCE
LUMIERA_PLUGIN_NULL,
LUMIERA_PLUGIN_DYNLIB,
LUMIERA_PLUGIN_CSOURCE
};
static const struct
{
const char* const ext;
enum cinelerra_plugin_type type;
} cinelerra_plugin_extensions [] =
enum lumiera_plugin_type type;
} lumiera_plugin_extensions [] =
{
{"so", CINELERRA_PLUGIN_DYNLIB},
{"o", CINELERRA_PLUGIN_DYNLIB},
{"c", CINELERRA_PLUGIN_CSOURCE},
{"so", LUMIERA_PLUGIN_DYNLIB},
{"o", LUMIERA_PLUGIN_DYNLIB},
{"c", LUMIERA_PLUGIN_CSOURCE},
/* extend here */
{NULL, CINELERRA_PLUGIN_NULL}
{NULL, LUMIERA_PLUGIN_NULL}
};
struct cinelerra_plugin
struct lumiera_plugin
{
/* short name as queried ("effects/audio/normalize") used for sorting/finding */
const char* name;
/* long names as looked up ("/usr/local/lib/cinelerra3/plugins/effects/audio/normalize.so") */
/* long names as looked up ("/usr/local/lib/lumiera/plugins/effects/audio/normalize.so") */
const char* pathname;
/* use count for all interfaces of this plugin */
@ -85,7 +85,7 @@ struct cinelerra_plugin
time_t last;
/* kind of plugin */
enum cinelerra_plugin_type type;
enum lumiera_plugin_type type;
/* dlopen handle */
void* handle;
@ -93,19 +93,19 @@ struct cinelerra_plugin
/* global plugin registry */
void* cinelerra_plugin_registry = NULL;
void* lumiera_plugin_registry = NULL;
/* plugin operations are protected by one big mutex */
pthread_mutex_t cinelerra_plugin_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t lumiera_plugin_mutex = PTHREAD_MUTEX_INITIALIZER;
/**
* the compare function for the registry tree.
* Compares the names of two struct cinelerra_plugin.
* Compares the names of two struct lumiera_plugin.
* @return 0 if a and b are equal, just like strcmp. */
static int
cinelerra_plugin_name_cmp (const void* a, const void* b)
lumiera_plugin_name_cmp (const void* a, const void* b)
{
return strcmp (((struct cinelerra_plugin*) a)->name, ((struct cinelerra_plugin*) b)->name);
return strcmp (((struct lumiera_plugin*) a)->name, ((struct lumiera_plugin*) b)->name);
}
/**
@ -113,21 +113,21 @@ cinelerra_plugin_name_cmp (const void* a, const void* b)
* always succeeds or aborts
*/
void
cinelerra_init_plugin (void)
lumiera_init_plugin (void)
{
NOBUG_INIT_FLAG (cinelerra_plugin);
NOBUG_INIT_FLAG (lumiera_plugin);
}
/**
* Find and set pathname for the plugin.
* Searches through given path for given plugin, trying to find the file's location in the filesystem.
* If found, self->pathname will be set to the found plugin file.
* @param self The cinelerra_plugin to open look for.
* @param self The lumiera_plugin to open look for.
* @param path The path to search trough (paths seperated by ":")
* @return 0 on success. -1 on error, or if plugin not found in path.
*/
int
cinelerra_plugin_lookup (struct cinelerra_plugin* self, const char* path)
lumiera_plugin_lookup (struct lumiera_plugin* self, const char* path)
{
if (!path)
return -1;
@ -146,22 +146,22 @@ cinelerra_plugin_lookup (struct cinelerra_plugin* self, const char* path)
for (char* tok = strtok_r (tpath, ":", &tmp); tok; tok = strtok_r (NULL, ":", &tmp))
{
/*for each extension*/
for (int i = 0; cinelerra_plugin_extensions[i].ext; ++i)
for (int i = 0; lumiera_plugin_extensions[i].ext; ++i)
{
/* path/name.extension */
int r = snprintf(pathname, 1024, "%s/%s.%s", tok, self->name, cinelerra_plugin_extensions[i].ext);
int r = snprintf(pathname, 1024, "%s/%s.%s", tok, self->name, lumiera_plugin_extensions[i].ext);
if (r >= 1024)
return -1; /*TODO error handling, name too long*/
TRACE (cinelerra_plugin, "trying %s", pathname);
TRACE (lumiera_plugin, "trying %s", pathname);
if (!access(pathname, R_OK))
{
/* got it */
TRACE (cinelerra_plugin, "found %s", pathname);
TRACE (lumiera_plugin, "found %s", pathname);
self->pathname = strdup (pathname);
if (!self->pathname) CINELERRA_DIE;
self->type = cinelerra_plugin_extensions[i].type;
if (!self->pathname) LUMIERA_DIE;
self->type = lumiera_plugin_extensions[i].type;
return 0;
}
}
@ -181,44 +181,44 @@ cinelerra_plugin_lookup (struct cinelerra_plugin* self, const char* path)
* @return handle to the interface or NULL in case of a error. The application shall cast this handle to
* the actual interface type.
*/
struct cinelerra_interface*
cinelerra_interface_open (const char* name, const char* interface, size_t min_revision)
struct lumiera_interface*
lumiera_interface_open (const char* name, const char* interface, size_t min_revision)
{
//REQUIRE (min_revision > sizeof(struct cinelerra_interface), "try to use an empty interface eh?");
//REQUIRE (min_revision > sizeof(struct lumiera_interface), "try to use an empty interface eh?");
REQUIRE (interface, "interface name must be given");
pthread_mutex_lock (&cinelerra_plugin_mutex);
pthread_mutex_lock (&lumiera_plugin_mutex);
struct cinelerra_plugin plugin;
struct cinelerra_plugin** found;
struct lumiera_plugin plugin;
struct lumiera_plugin** found;
plugin.name = name; /* for searching */
found = tsearch (&plugin, &cinelerra_plugin_registry, cinelerra_plugin_name_cmp);
if (!found) CINELERRA_DIE;
found = tsearch (&plugin, &lumiera_plugin_registry, lumiera_plugin_name_cmp);
if (!found) LUMIERA_DIE;
if (*found == &plugin)
{
NOTICE (cinelerra_plugin, "new plugin");
NOTICE (lumiera_plugin, "new plugin");
/* now really create new item */
*found = malloc (sizeof (struct cinelerra_plugin));
if (!*found) CINELERRA_DIE;
*found = malloc (sizeof (struct lumiera_plugin));
if (!*found) LUMIERA_DIE;
if (name) /* NULL is main app, no lookup needed */
{
/*lookup for $CINELERRA_PLUGIN_PATH*/
/*lookup for $LUMIERA_PLUGIN_PATH*/
(*found)->name = strdup (name);
if (!(*found)->name) CINELERRA_DIE;
if (!(*found)->name) LUMIERA_DIE;
if (!!cinelerra_plugin_lookup (*found, getenv("CINELERRA_PLUGIN_PATH"))
#ifdef CINELERRA_PLUGIN_PATH
/* else lookup for -DCINELERRA_PLUGIN_PATH */
&& !!cinelerra_plugin_lookup (*found, CINELERRA_PLUGIN_PATH)
if (!!lumiera_plugin_lookup (*found, getenv("LUMIERA_PLUGIN_PATH"))
#ifdef LUMIERA_PLUGIN_PATH
/* else lookup for -DLUMIERA_PLUGIN_PATH */
&& !!lumiera_plugin_lookup (*found, LUMIERA_PLUGIN_PATH)
#endif
)
{
CINELERRA_ERROR_SET (cinelerra_plugin, PLUGIN_NFILE);
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_NFILE);
goto elookup;
}
}
@ -233,46 +233,46 @@ cinelerra_interface_open (const char* name, const char* interface, size_t min_re
PLANNED("if .so like then dlopen; else if .c like tcc compile");
TODO("factor dlopen and dlsym out");
TRACE(cinelerra_plugin, "trying to open %s", (*found)->pathname);
TRACE(lumiera_plugin, "trying to open %s", (*found)->pathname);
(*found)->handle = dlopen ((*found)->pathname, RTLD_LAZY|RTLD_LOCAL);
if (!(*found)->handle)
{
ERROR (cinelerra_plugin, "dlopen failed: %s", dlerror());
CINELERRA_ERROR_SET (cinelerra_plugin, PLUGIN_DLOPEN);
ERROR (lumiera_plugin, "dlopen failed: %s", dlerror());
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_DLOPEN);
goto edlopen;
}
/* if the plugin defines a 'cinelerra_plugin_init' function, we call it, must return 0 on success */
int (*init)(void) = dlsym((*found)->handle, "cinelerra_plugin_init");
/* if the plugin defines a 'lumiera_plugin_init' function, we call it, must return 0 on success */
int (*init)(void) = dlsym((*found)->handle, "lumiera_plugin_init");
if (init && init())
{
//ERROR (cinelerra_plugin, "cinelerra_plugin_init failed: %s: %s", name, interface);
CINELERRA_ERROR_SET (cinelerra_plugin, PLUGIN_HOOK);
//ERROR (lumiera_plugin, "lumiera_plugin_init failed: %s: %s", name, interface);
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_HOOK);
goto einit;
}
}
/* we have the plugin, now get the interface descriptor */
struct cinelerra_interface* ret;
struct lumiera_interface* ret;
dlerror();
ret = dlsym ((*found)->handle, interface);
const char *dlerr = dlerror();
TRACE(cinelerra_plugin, "%s", dlerr);
TODO ("need some way to tell 'interface not provided by plugin', maybe cinelerra_plugin_error()?");
TRACE(lumiera_plugin, "%s", dlerr);
TODO ("need some way to tell 'interface not provided by plugin', maybe lumiera_plugin_error()?");
if (dlerr)
{
//ERROR (cinelerra_plugin, "plugin %s doesnt provide interface %s", name, interface);
CINELERRA_ERROR_SET (cinelerra_plugin, PLUGIN_NIFACE);
//ERROR (lumiera_plugin, "plugin %s doesnt provide interface %s", name, interface);
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_NIFACE);
goto edlsym;
}
/* is the interface older than required? */
if (ret->size < min_revision)
{
ERROR (cinelerra_plugin, "plugin %s provides older interface %s revision than required", name, interface);
CINELERRA_ERROR_SET (cinelerra_plugin, PLUGIN_REVISION);
ERROR (lumiera_plugin, "plugin %s provides older interface %s revision than required", name, interface);
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_REVISION);
goto erevision;
}
@ -281,8 +281,8 @@ cinelerra_interface_open (const char* name, const char* interface, size_t min_re
/* if the interface provides a 'open' function, call it now, must return 0 on success */
if (ret->open && ret->open())
{
ERROR (cinelerra_plugin, "open hook indicated an error");
CINELERRA_ERROR_SET (cinelerra_plugin, PLUGIN_HOOK);
ERROR (lumiera_plugin, "open hook indicated an error");
LUMIERA_ERROR_SET (lumiera_plugin, PLUGIN_HOOK);
goto eopen;
}
@ -290,7 +290,7 @@ cinelerra_interface_open (const char* name, const char* interface, size_t min_re
(*found)->last = time (NULL);
ret->use_count++;
pthread_mutex_unlock (&cinelerra_plugin_mutex);
pthread_mutex_unlock (&lumiera_plugin_mutex);
return ret;
/* Error cleanup */
@ -304,8 +304,8 @@ cinelerra_interface_open (const char* name, const char* interface, size_t min_re
free ((char*)(*found)->name);
free (*found);
*found = &plugin;
tdelete (&plugin, &cinelerra_plugin_registry, cinelerra_plugin_name_cmp);
pthread_mutex_unlock (&cinelerra_plugin_mutex);
tdelete (&plugin, &lumiera_plugin_registry, lumiera_plugin_name_cmp);
pthread_mutex_unlock (&lumiera_plugin_mutex);
return NULL;
}
@ -315,17 +315,17 @@ cinelerra_interface_open (const char* name, const char* interface, size_t min_re
* @param ptr interface to be closed
*/
void
cinelerra_interface_close (void* ptr)
lumiera_interface_close (void* ptr)
{
TRACE (cinelerra_plugin, "%p", ptr);
TRACE (lumiera_plugin, "%p", ptr);
if(!ptr)
return;
struct cinelerra_interface* self = (struct cinelerra_interface*) ptr;
struct lumiera_interface* self = (struct lumiera_interface*) ptr;
pthread_mutex_lock (&cinelerra_plugin_mutex);
pthread_mutex_lock (&lumiera_plugin_mutex);
struct cinelerra_plugin* plugin = self->plugin;
struct lumiera_plugin* plugin = self->plugin;
plugin->use_count--;
self->use_count--;
@ -339,16 +339,16 @@ cinelerra_interface_close (void* ptr)
{
TODO ("we dont want to close here, instead store time of recent use and make a expire run, already planned in my head");
/* if the plugin defines a 'cinelerra_plugin_destroy' function, we call it */
int (*destroy)(void) = dlsym(plugin->handle, "cinelerra_plugin_destroy");
/* if the plugin defines a 'lumiera_plugin_destroy' function, we call it */
int (*destroy)(void) = dlsym(plugin->handle, "lumiera_plugin_destroy");
if (destroy)
destroy();
/* and now cleanup */
tdelete (plugin, &cinelerra_plugin_registry, cinelerra_plugin_name_cmp);
tdelete (plugin, &lumiera_plugin_registry, lumiera_plugin_name_cmp);
free ((char*)plugin->name);
dlclose(plugin->handle);
free (plugin);
}
pthread_mutex_unlock (&cinelerra_plugin_mutex);
pthread_mutex_unlock (&lumiera_plugin_mutex);
}

View file

@ -1,8 +1,8 @@
/*
plugin.h - Plugin loader
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -18,8 +18,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_PLUGIN_H
#define CINELERRA_PLUGIN_H
#ifndef LUMIERA_PLUGIN_H
#define LUMIERA_PLUGIN_H
#ifdef __cplusplus
extern "C" {
@ -37,55 +37,55 @@ extern "C" {
*/
NOBUG_DECLARE_FLAG (cinelerra_plugin);
NOBUG_DECLARE_FLAG (lumiera_plugin);
/* tool macros*/
#define CINELERRA_INTERFACE_TYPE(name, version) struct cinelerra_interface_##name##_##version
#define CINELERRA_INTERFACE_CAST(name, version) (CINELERRA_INTERFACE_TYPE(name, version)*)
#define LUMIERA_INTERFACE_TYPE(name, version) struct lumiera_interface_##name##_##version
#define LUMIERA_INTERFACE_CAST(name, version) (LUMIERA_INTERFACE_TYPE(name, version)*)
/* Interface definition */
#define CINELERRA_INTERFACE(name, version, ...) \
CINELERRA_INTERFACE_TYPE(name, version) \
#define LUMIERA_INTERFACE(name, version, ...) \
LUMIERA_INTERFACE_TYPE(name, version) \
{ \
struct cinelerra_interface interface_header_; \
struct lumiera_interface interface_header_; \
__VA_ARGS__ \
}
#define CINELERRA_INTERFACE_PROTO(ret, name, params) ret (*name) params;
#define LUMIERA_INTERFACE_PROTO(ret, name, params) ret (*name) params;
/* Interface instantiation */
#define CINELERRA_INTERFACE_IMPLEMENT(iname, version, name, open, close, ...) \
CINELERRA_INTERFACE_TYPE(iname, version) name##_##version = \
{ \
{ \
version, \
sizeof(CINELERRA_INTERFACE_TYPE(iname, version)), \
NULL, \
0, \
open, \
close \
}, \
__VA_ARGS__ \
#define LUMIERA_INTERFACE_IMPLEMENT(iname, version, name, open, close, ...) \
LUMIERA_INTERFACE_TYPE(iname, version) name##_##version = \
{ \
{ \
version, \
sizeof(LUMIERA_INTERFACE_TYPE(iname, version)), \
NULL, \
0, \
open, \
close \
}, \
__VA_ARGS__ \
}
/* internally used */
struct cinelerra_plugin;
struct lumiera_plugin;
/**
* This is the header for any interface exported by plugins.
* Real interfaces append their functions at the end. There are few standard functions on each Interface
* Every function is required to be implemnted.
*/
struct cinelerra_interface
struct lumiera_interface
{
/// interface version number
unsigned version;
/// size of the full structure is used to determine the revision (adding a new function increments the size)
size_t size;
/// back reference to plugin
struct cinelerra_plugin* plugin;
struct lumiera_plugin* plugin;
/// incremented for each user of this interface and decremented when closed
unsigned use_count;
@ -96,15 +96,15 @@ struct cinelerra_interface
};
void
cinelerra_init_plugin (void);
lumiera_init_plugin (void);
struct cinelerra_interface*
cinelerra_interface_open (const char* plugin, const char* name, size_t min_revision);
struct lumiera_interface*
lumiera_interface_open (const char* plugin, const char* name, size_t min_revision);
void
cinelerra_interface_close (void* self);
lumiera_interface_close (void* self);
/**
* Tries to unload a plugin.
@ -113,24 +113,24 @@ cinelerra_interface_close (void* self);
* @return 0 on success, else the number if users which keeping the plugin loaded
*/
int
cinelerra_plugin_unload (const char* plugin);
lumiera_plugin_unload (const char* plugin);
/**
* Tries to unload plugins which are not in use.
* Calls cinelerra_plugin_unload() for each Plugin which is not used for more than age seconds.
* Calls lumiera_plugin_unload() for each Plugin which is not used for more than age seconds.
* This function might be infrequently called by the scheduler to remove things which are not needed.
* @param age timeout in seconds when to unload plugins
*/
void
cinelerra_plugin_expire (time_t age);
lumiera_plugin_expire (time_t age);
CINELERRA_ERROR_DECLARE(PLUGIN_DLOPEN);
CINELERRA_ERROR_DECLARE(PLUGIN_HOOK);
CINELERRA_ERROR_DECLARE(PLUGIN_NFILE);
CINELERRA_ERROR_DECLARE(PLUGIN_NIFACE);
CINELERRA_ERROR_DECLARE(PLUGIN_REVISION);
LUMIERA_ERROR_DECLARE(PLUGIN_DLOPEN);
LUMIERA_ERROR_DECLARE(PLUGIN_HOOK);
LUMIERA_ERROR_DECLARE(PLUGIN_NFILE);
LUMIERA_ERROR_DECLARE(PLUGIN_NIFACE);
LUMIERA_ERROR_DECLARE(PLUGIN_REVISION);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* CINELERRA_PLUGIN_H */
#endif /* LUMIERA_PLUGIN_H */

View file

@ -1,8 +1,8 @@
/*
references.c - strong and weak references
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -40,17 +40,17 @@
* @param dtor destructor function which will be called on obj when the last strong reference gets deleted
* @return self as given
*/
CinelerraReference
cinelerra_reference_strong_init_once (CinelerraReference self, void* obj, void (*dtor)(void*))
LumieraReference
lumiera_reference_strong_init_once (LumieraReference self, void* obj, void (*dtor)(void*))
{
CinelerraReftarget target = malloc (sizeof(cinelerra_reftarget));
if (!target) CINELERRA_DIE;
LumieraReftarget target = malloc (sizeof(lumiera_reftarget));
if (!target) LUMIERA_DIE;
target->object = obj;
target->dtor = dtor;
target->strong_cnt = 1;
target->weak_cnt = 0;
cinelerra_mutex_init (&target->lock);
lumiera_mutex_init (&target->lock);
self->object = obj;
self->target = target;
@ -66,16 +66,16 @@ cinelerra_reference_strong_init_once (CinelerraReference self, void* obj, void (
* @return self as given
* destroying a reference is not thread safe as far as 2 threads try to concurrently destroy it!
*/
CinelerraReference
cinelerra_reference_destroy (CinelerraReference self)
LumieraReference
lumiera_reference_destroy (LumieraReference self)
{
CinelerraReftarget target = self->target;
LumieraReftarget target = self->target;
/* defensive, lets detect errors if anything still tries to use this reference */
self->target = NULL;
cinelerra_mutexacquirer lock;
cinelerra_mutexacquirer_init_mutex (&lock, &target->lock, CINELERRA_LOCKED);
lumiera_mutexacquirer lock;
lumiera_mutexacquirer_init_mutex (&lock, &target->lock, LUMIERA_LOCKED);
if (self->object)
{
@ -89,8 +89,8 @@ cinelerra_reference_destroy (CinelerraReference self)
if (!target->weak_cnt)
{
/* no weak refs either, destroy it */
cinelerra_mutexacquirer_unlock (&lock);
cinelerra_mutex_destroy (&target->lock);
lumiera_mutexacquirer_unlock (&lock);
lumiera_mutex_destroy (&target->lock);
free (target);
return self;
}
@ -102,13 +102,13 @@ cinelerra_reference_destroy (CinelerraReference self)
if (!--target->weak_cnt && !target->strong_cnt)
{
/* was last weak reference, and no strong refs left */
cinelerra_mutexacquirer_unlock (&lock);
cinelerra_mutex_destroy (&target->lock);
lumiera_mutexacquirer_unlock (&lock);
lumiera_mutex_destroy (&target->lock);
free (target);
return self;
}
}
cinelerra_mutexacquirer_unlock (&lock);
lumiera_mutexacquirer_unlock (&lock);
return self;
}
@ -118,11 +118,11 @@ cinelerra_reference_destroy (CinelerraReference self)
* @return self as strong reference (always for strong references) or NULL if source is an invalidated weak reference,
* in the later case the reference is constructed as weak reference barely to allow it be destroyed
*/
CinelerraReference
cinelerra_reference_strong_init (CinelerraReference self, CinelerraReference source)
LumieraReference
lumiera_reference_strong_init (LumieraReference self, LumieraReference source)
{
cinelerra_mutexacquirer lock;
cinelerra_mutexacquirer_init_mutex (&lock, &source->target->lock, CINELERRA_LOCKED);
lumiera_mutexacquirer lock;
lumiera_mutexacquirer_init_mutex (&lock, &source->target->lock, LUMIERA_LOCKED);
self->object = source->target->object;
self->target = source->target;
@ -136,7 +136,7 @@ cinelerra_reference_strong_init (CinelerraReference self, CinelerraReference sou
++self->target->weak_cnt;
self = NULL;
}
cinelerra_mutexacquirer_unlock (&lock);
lumiera_mutexacquirer_unlock (&lock);
return self;
}
@ -145,11 +145,11 @@ cinelerra_reference_strong_init (CinelerraReference self, CinelerraReference sou
* @param source reference to copy
* @return self (always for strong references) or NULL if self is an invalidated weak reference
*/
CinelerraReference
cinelerra_reference_weak_init (CinelerraReference self, CinelerraReference source)
LumieraReference
lumiera_reference_weak_init (LumieraReference self, LumieraReference source)
{
cinelerra_mutexacquirer lock;
cinelerra_mutexacquirer_init_mutex (&lock, &source->target->lock, CINELERRA_LOCKED);
lumiera_mutexacquirer lock;
lumiera_mutexacquirer_init_mutex (&lock, &source->target->lock, LUMIERA_LOCKED);
self->object = NULL;
self->target = source->target;
@ -159,7 +159,7 @@ cinelerra_reference_weak_init (CinelerraReference self, CinelerraReference sourc
/* already invalidated */
self = NULL;
cinelerra_mutexacquirer_unlock (&lock);
lumiera_mutexacquirer_unlock (&lock);
return self;
}
@ -169,14 +169,14 @@ cinelerra_reference_weak_init (CinelerraReference self, CinelerraReference sourc
* do nothing if the referene is already weak
* @return self or NULL if the final strong reference got removed,
*/
CinelerraReference
cinelerra_reference_weaken (restrict CinelerraReference self)
LumieraReference
lumiera_reference_weaken (restrict LumieraReference self)
{
/* is this a strong reference? */
if (self->object)
{
cinelerra_mutexacquirer lock;
cinelerra_mutexacquirer_init_mutex (&lock, &self->target->lock, CINELERRA_LOCKED);
lumiera_mutexacquirer lock;
lumiera_mutexacquirer_init_mutex (&lock, &self->target->lock, LUMIERA_LOCKED);
self->object = NULL;
++self->target->weak_cnt;
@ -187,7 +187,7 @@ cinelerra_reference_weaken (restrict CinelerraReference self)
self->target->object = NULL;
self = NULL;
}
cinelerra_mutexacquirer_unlock (&lock);
lumiera_mutexacquirer_unlock (&lock);
}
return self;
}
@ -198,14 +198,14 @@ cinelerra_reference_weaken (restrict CinelerraReference self)
* only references of object which are not already destroyed can be strengthened
* @return self when successful, NULL when the object was already destroyed, 'self' stays a dead weak reference in that case
*/
CinelerraReference
cinelerra_reference_strengthen (CinelerraReference self)
LumieraReference
lumiera_reference_strengthen (LumieraReference self)
{
/* is this a weak reference? */
if (!self->object)
{
cinelerra_mutexacquirer lock;
cinelerra_mutexacquirer_init_mutex (&lock, &self->target->lock, CINELERRA_LOCKED);
lumiera_mutexacquirer lock;
lumiera_mutexacquirer_init_mutex (&lock, &self->target->lock, LUMIERA_LOCKED);
if (self->target->object)
{
@ -215,7 +215,7 @@ cinelerra_reference_strengthen (CinelerraReference self)
}
else
self = NULL;
cinelerra_mutexacquirer_unlock (&lock);
lumiera_mutexacquirer_unlock (&lock);
}
return self;
}

View file

@ -1,8 +1,8 @@
/*
references.h - strong and weak references
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -19,8 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_REFERENCES_H
#define CINELERRA_REFERENCES_H
#ifndef LUMIERA_REFERENCES_H
#define LUMIERA_REFERENCES_H
#include <nobug.h>
@ -29,77 +29,77 @@
*/
typedef struct cinelerra_reference_struct cinelerra_reference;
typedef cinelerra_reference* CinelerraReference;
typedef struct lumiera_reference_struct lumiera_reference;
typedef lumiera_reference* LumieraReference;
#include "lib/error.h"
#include "lib/mutex.h"
/* Implementation detail */
struct cinelerra_reftarget_struct
struct lumiera_reftarget_struct
{
void* object;
void (*dtor)(void*);
unsigned strong_cnt; /*when strong becomes 0 obj is destroyed, if weak is 0 destroy target too*/
unsigned weak_cnt; /*when weak becomes 0 and !obj and lock strong is 0, destroy target */
cinelerra_mutex lock;
lumiera_mutex lock;
};
typedef struct cinelerra_reftarget_struct cinelerra_reftarget;
typedef cinelerra_reftarget* CinelerraReftarget;
typedef struct lumiera_reftarget_struct lumiera_reftarget;
typedef lumiera_reftarget* LumieraReftarget;
/**
* A reference pointing to some other object
*/
struct cinelerra_reference_struct
struct lumiera_reference_struct
{
void* object; /*set for strong, NULL for weak*/
CinelerraReftarget target;
LumieraReftarget target;
};
#define cinelerra_reference \
cinelerra_reference NOBUG_CLEANUP(cinelerra_reference_ensuredestroyed)
#define lumiera_reference \
lumiera_reference NOBUG_CLEANUP(lumiera_reference_ensuredestroyed)
/* helper function for nobug */
static inline void
cinelerra_reference_ensuredestroyed (CinelerraReference self)
lumiera_reference_ensuredestroyed (LumieraReference self)
{
ENSURE (!self->target, "forgot to destroy reference");
}
CinelerraReference
cinelerra_reference_strong_init_once (CinelerraReference self, void* obj, void (*dtor)(void*));
LumieraReference
lumiera_reference_strong_init_once (LumieraReference self, void* obj, void (*dtor)(void*));
CinelerraReference
cinelerra_reference_destroy (CinelerraReference self);
LumieraReference
lumiera_reference_destroy (LumieraReference self);
/**
* Get object from a strong reference.
* @return pointer to object, NULL if applied to a weak reference
*/
static inline void*
cinelerra_reference_get (CinelerraReference self)
lumiera_reference_get (LumieraReference self)
{
ENSURE (self->target, "illegal reference (not initialized or already destroyed?)");
return self->object;
}
CinelerraReference
cinelerra_reference_strong_init (CinelerraReference self, CinelerraReference source);
LumieraReference
lumiera_reference_strong_init (LumieraReference self, LumieraReference source);
CinelerraReference
cinelerra_reference_weak_init (CinelerraReference self, CinelerraReference source);
LumieraReference
lumiera_reference_weak_init (LumieraReference self, LumieraReference source);
CinelerraReference
cinelerra_reference_weaken (restrict CinelerraReference self);
LumieraReference
lumiera_reference_weaken (restrict LumieraReference self);
CinelerraReference
cinelerra_reference_strengthen (CinelerraReference self);
LumieraReference
lumiera_reference_strengthen (LumieraReference self);
#endif

View file

@ -1,8 +1,8 @@
/*
rwlock.c - read/write locks
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -23,8 +23,8 @@
#include <errno.h>
#include "lib/rwlock.h"
CINELERRA_ERROR_DEFINE(RWLOCK_AGAIN, "maximum number of readlocks exceed");
CINELERRA_ERROR_DEFINE(RWLOCK_DEADLOCK, "deadlock detected");
LUMIERA_ERROR_DEFINE(RWLOCK_AGAIN, "maximum number of readlocks exceed");
LUMIERA_ERROR_DEFINE(RWLOCK_DEADLOCK, "deadlock detected");
/**
* @file Read/write locks.
@ -36,8 +36,8 @@ CINELERRA_ERROR_DEFINE(RWLOCK_DEADLOCK, "deadlock detected");
* @param self is a pointer to the rwlock to be initialized
* @return self as given
*/
CinelerraRWLock
cinelerra_rwlock_init (CinelerraRWLock self)
LumieraRWLock
lumiera_rwlock_init (LumieraRWLock self)
{
if (self)
{
@ -51,13 +51,13 @@ cinelerra_rwlock_init (CinelerraRWLock self)
* @param self is a pointer to the rwlock to be initialized
* @return self on success or NULL at error
*/
CinelerraRWLock
cinelerra_rwlock_destroy (CinelerraRWLock self)
LumieraRWLock
lumiera_rwlock_destroy (LumieraRWLock self)
{
if (self)
{
if (pthread_rwlock_destroy (&self->rwlock))
CINELERRA_DIE;
LUMIERA_DIE;
}
return self;
}
@ -69,44 +69,44 @@ cinelerra_rwlock_destroy (CinelerraRWLock self)
* initialize a rwlockacquirer state
* @param self rwlockacquirer to be initialized, must be an automatic variable
* @param rwlock associated rwlock
* @param state initial state of the mutex, either CINELERRA_RDLOCKED, CINELERRA_WRLOCKED or CINELERRA_UNLOCKED
* @param state initial state of the mutex, either LUMIERA_RDLOCKED, LUMIERA_WRLOCKED or LUMIERA_UNLOCKED
* @return self as given or NULL on error
*/
CinelerraRWLockacquirer
cinelerra_rwlockacquirer_init (CinelerraRWLockacquirer self, CinelerraRWLock rwlock, enum cinelerra_lockstate state)
LumieraRWLockacquirer
lumiera_rwlockacquirer_init (LumieraRWLockacquirer self, LumieraRWLock rwlock, enum lumiera_lockstate state)
{
REQUIRE (self);
REQUIRE (rwlock);
REQUIRE (state != CINELERRA_LOCKED, "illegal state for rwlock");
REQUIRE (state != LUMIERA_LOCKED, "illegal state for rwlock");
self->rwlock = rwlock;
self->state = state;
switch (state)
{
case CINELERRA_RDLOCKED:
case LUMIERA_RDLOCKED:
switch (pthread_rwlock_rdlock (&rwlock->rwlock))
{
case 0:
break;
case EAGAIN:
cinelerra_error_set (CINELERRA_ERROR_RWLOCK_AGAIN);
lumiera_error_set (LUMIERA_ERROR_RWLOCK_AGAIN);
return NULL;
case EDEADLK:
cinelerra_error_set (CINELERRA_ERROR_RWLOCK_DEADLOCK);
lumiera_error_set (LUMIERA_ERROR_RWLOCK_DEADLOCK);
return NULL;
default:
CINELERRA_DIE;
LUMIERA_DIE;
}
case CINELERRA_WRLOCKED:
case LUMIERA_WRLOCKED:
switch (pthread_rwlock_wrlock (&rwlock->rwlock))
{
case 0:
break;
case EDEADLK:
cinelerra_error_set (CINELERRA_ERROR_RWLOCK_DEADLOCK);
lumiera_error_set (LUMIERA_ERROR_RWLOCK_DEADLOCK);
return NULL;
default:
CINELERRA_DIE;
LUMIERA_DIE;
}
default:
break;
@ -121,27 +121,27 @@ cinelerra_rwlockacquirer_init (CinelerraRWLockacquirer self, CinelerraRWLock rwl
* @param self rwlockacquirer associated with a rwlock
* @return self as given or NULL on error
*/
CinelerraRWLockacquirer
cinelerra_rwlockacquirer_rdlock (CinelerraRWLockacquirer self)
LumieraRWLockacquirer
lumiera_rwlockacquirer_rdlock (LumieraRWLockacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_UNLOCKED, "rwlock already locked");
REQUIRE (self->state == LUMIERA_UNLOCKED, "rwlock already locked");
switch (pthread_rwlock_rdlock (&self->rwlock->rwlock))
{
case 0:
break;
case EAGAIN:
cinelerra_error_set (CINELERRA_ERROR_RWLOCK_AGAIN);
lumiera_error_set (LUMIERA_ERROR_RWLOCK_AGAIN);
return NULL;
case EDEADLK:
cinelerra_error_set (CINELERRA_ERROR_RWLOCK_DEADLOCK);
lumiera_error_set (LUMIERA_ERROR_RWLOCK_DEADLOCK);
return NULL;
default:
CINELERRA_DIE;
LUMIERA_DIE;
}
self->state = CINELERRA_RDLOCKED;
self->state = LUMIERA_RDLOCKED;
return self;
}
@ -152,24 +152,24 @@ cinelerra_rwlockacquirer_rdlock (CinelerraRWLockacquirer self)
* @param self rwlockacquirer associated with a rwlock
* @return self as given or NULL on error
*/
CinelerraRWLockacquirer
cinelerra_rwlockacquirer_wrlock (CinelerraRWLockacquirer self)
LumieraRWLockacquirer
lumiera_rwlockacquirer_wrlock (LumieraRWLockacquirer self)
{
REQUIRE (self);
REQUIRE (self->state == CINELERRA_UNLOCKED, "rwlock already locked");
REQUIRE (self->state == LUMIERA_UNLOCKED, "rwlock already locked");
switch (pthread_rwlock_wrlock (&self->rwlock->rwlock))
{
case 0:
break;
case EDEADLK:
cinelerra_error_set (CINELERRA_ERROR_RWLOCK_DEADLOCK);
lumiera_error_set (LUMIERA_ERROR_RWLOCK_DEADLOCK);
return NULL;
default:
CINELERRA_DIE;
LUMIERA_DIE;
}
self->state = CINELERRA_WRLOCKED;
self->state = LUMIERA_WRLOCKED;
return self;
}

View file

@ -1,8 +1,8 @@
/*
rwlock.h - read/write locks
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -19,8 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_RWLOCK_H
#define CINELERRA_RWLOCK_H
#ifndef LUMIERA_RWLOCK_H
#define LUMIERA_RWLOCK_H
#ifndef _GNU_SOURCE
#error "This header must be included with _GNU_SOURCE or _POSIX_C_SOURCE >= 200112L defined"
@ -31,8 +31,8 @@
#include "lib/locking.h"
CINELERRA_ERROR_DECLARE(RWLOCK_AGAIN);
CINELERRA_ERROR_DECLARE(RWLOCK_DEADLOCK);
LUMIERA_ERROR_DECLARE(RWLOCK_AGAIN);
LUMIERA_ERROR_DECLARE(RWLOCK_DEADLOCK);
/**
* @file Read/write locks, header.
@ -43,20 +43,20 @@ CINELERRA_ERROR_DECLARE(RWLOCK_DEADLOCK);
* RWLock.
*
*/
struct cinelerra_rwlock_struct
struct lumiera_rwlock_struct
{
pthread_rwlock_t rwlock;
};
typedef struct cinelerra_rwlock_struct cinelerra_rwlock;
typedef cinelerra_rwlock* CinelerraRWLock;
typedef struct lumiera_rwlock_struct lumiera_rwlock;
typedef lumiera_rwlock* LumieraRWLock;
CinelerraRWLock
cinelerra_rwlock_init (CinelerraRWLock self);
LumieraRWLock
lumiera_rwlock_init (LumieraRWLock self);
CinelerraRWLock
cinelerra_rwlock_destroy (CinelerraRWLock self);
LumieraRWLock
lumiera_rwlock_destroy (LumieraRWLock self);
@ -64,35 +64,35 @@ cinelerra_rwlock_destroy (CinelerraRWLock self);
/**
* rwlockacquirer used to manage the state of a rwlock variable.
*/
struct cinelerra_rwlockacquirer_struct
struct lumiera_rwlockacquirer_struct
{
CinelerraRWLock rwlock;
enum cinelerra_lockstate state;
LumieraRWLock rwlock;
enum lumiera_lockstate state;
};
typedef struct cinelerra_rwlockacquirer_struct cinelerra_rwlockacquirer;
typedef struct cinelerra_rwlockacquirer_struct* CinelerraRWLockacquirer;
typedef struct lumiera_rwlockacquirer_struct lumiera_rwlockacquirer;
typedef struct lumiera_rwlockacquirer_struct* LumieraRWLockacquirer;
/* helper function for nobug */
static inline void
cinelerra_rwlockacquirer_ensureunlocked (CinelerraRWLockacquirer self)
lumiera_rwlockacquirer_ensureunlocked (LumieraRWLockacquirer self)
{
ENSURE (self->state == CINELERRA_UNLOCKED, "forgot to unlock the rwlock mutex");
ENSURE (self->state == LUMIERA_UNLOCKED, "forgot to unlock the rwlock mutex");
}
/* override with a macro to use the cleanup checker */
#define cinelerra_rwlockacquirer \
cinelerra_rwlockacquirer NOBUG_CLEANUP(cinelerra_rwlockacquirer_ensureunlocked)
#define lumiera_rwlockacquirer \
lumiera_rwlockacquirer NOBUG_CLEANUP(lumiera_rwlockacquirer_ensureunlocked)
CinelerraRWLockacquirer
cinelerra_rwlockacquirer_init (CinelerraRWLockacquirer self, CinelerraRWLock rwlock, enum cinelerra_lockstate state);
LumieraRWLockacquirer
lumiera_rwlockacquirer_init (LumieraRWLockacquirer self, LumieraRWLock rwlock, enum lumiera_lockstate state);
CinelerraRWLockacquirer
cinelerra_rwlockacquirer_rdlock (CinelerraRWLockacquirer self);
LumieraRWLockacquirer
lumiera_rwlockacquirer_rdlock (LumieraRWLockacquirer self);
CinelerraRWLockacquirer
cinelerra_rwlockacquirer_wrlock (CinelerraRWLockacquirer self);
LumieraRWLockacquirer
lumiera_rwlockacquirer_wrlock (LumieraRWLockacquirer self);
/**
@ -101,13 +101,13 @@ cinelerra_rwlockacquirer_wrlock (CinelerraRWLockacquirer self);
* @param self rwlockacquirer associated with a rwlock variable
*/
static inline void
cinelerra_rwlockacquirer_unlock (CinelerraRWLockacquirer self)
lumiera_rwlockacquirer_unlock (LumieraRWLockacquirer self)
{
REQUIRE (self);
REQUIRE (self->state != CINELERRA_UNLOCKED, "rwlock was not locked");
REQUIRE (self->state != LUMIERA_UNLOCKED, "rwlock was not locked");
if (pthread_rwlock_unlock (&self->rwlock->rwlock))
CINELERRA_DIE;
self->state = CINELERRA_UNLOCKED;
LUMIERA_DIE;
self->state = LUMIERA_UNLOCKED;
}

View file

@ -1,8 +1,8 @@
/*
time.h - Time and frame calculations
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -21,6 +21,6 @@
#include "lib/error.h"
CINELERRA_ERROR_DEFINE(TIME_OVERFLOW, "Time overflow");
CINELERRA_ERROR_DEFINE(TIME_UNDERFLOW, "Time underflow");
CINELERRA_ERROR_DEFINE(TIME_NEGATIVE, "Time negative");
LUMIERA_ERROR_DEFINE(TIME_OVERFLOW, "Time overflow");
LUMIERA_ERROR_DEFINE(TIME_UNDERFLOW, "Time underflow");
LUMIERA_ERROR_DEFINE(TIME_NEGATIVE, "Time negative");

View file

@ -1,8 +1,8 @@
/*
time.h - Time calculations
Copyright (C) CinelerraCV
2007, Christian Thaeter <ct@pipapo.org>
Copyright (C) Lumiera.org
2008, Christian Thaeter <ct@pipapo.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@ -19,8 +19,8 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_TIME_H
#define CINELERRA_TIME_H
#ifndef LUMIERA_TIME_H
#define LUMIERA_TIME_H
#include <sys/time.h>
#include <time.h>
@ -35,31 +35,31 @@
timehandling is a delicate business, be careful of precision errors accumulating
cinelerra_time is starting from zero, never becomes negative.
lumiera_time is starting from zero, never becomes negative.
TODO explain how to use time
*/
/* over or underflow (tried to make a movie which has negative length? or more than some hundreds days?) */
CINELERRA_ERROR_DECLARE(TIME_OVERFLOW);
CINELERRA_ERROR_DECLARE(TIME_UNDERFLOW);
CINELERRA_ERROR_DECLARE(TIME_NEGATIVE);
LUMIERA_ERROR_DECLARE(TIME_OVERFLOW);
LUMIERA_ERROR_DECLARE(TIME_UNDERFLOW);
LUMIERA_ERROR_DECLARE(TIME_NEGATIVE);
/*
Note: we measure time starting from zero,
time never becomes negative
(I didnt checked if the time types are signed)
*/
typedef struct timeval cinelerra_time;
typedef cinelerra_time* CinelerraTime;
typedef struct timeval lumiera_time;
typedef lumiera_time* LumieraTime;
/**
* normalize time after operations.
* used internally
*/
static inline void
cinelerra_time_normalize (CinelerraTime time)
lumiera_time_normalize (LumieraTime time)
{
REQUIRE (time);
if (time->tv_usec >= 1000000)
@ -75,8 +75,8 @@ cinelerra_time_normalize (CinelerraTime time)
* @param time Time to clear
* @return time as given
*/
static inline CinelerraTime
cinelerra_time_clear (CinelerraTime time)
static inline LumieraTime
lumiera_time_clear (LumieraTime time)
{
if(time)
{
@ -91,14 +91,14 @@ cinelerra_time_clear (CinelerraTime time)
* @param time Time to put current time into.
* @return time as given
*/
static inline CinelerraTime
cinelerra_time_current (CinelerraTime time)
static inline LumieraTime
lumiera_time_current (LumieraTime time)
{
if (time)
{
/* gettime should never ever fail in a correct program */
if (gettimeofday (time, NULL))
CINELERRA_DIE;
LUMIERA_DIE;
}
return time;
}
@ -110,8 +110,8 @@ cinelerra_time_current (CinelerraTime time)
* @return time as given upon success, NULL if double time given was negative or given time didn't point
* anywhere
*/
static inline CinelerraTime
cinelerra_time_set_double (CinelerraTime time, double fp)
static inline LumieraTime
lumiera_time_set_double (LumieraTime time, double fp)
{
if (time)
{
@ -125,7 +125,7 @@ cinelerra_time_set_double (CinelerraTime time, double fp)
{
time->tv_sec = (time_t)-1;
time->tv_usec = (suseconds_t)-1;
cinelerra_error_set(CINELERRA_ERROR_TIME_NEGATIVE);
lumiera_error_set(LUMIERA_ERROR_TIME_NEGATIVE);
}
}
return NULL;
@ -138,14 +138,14 @@ cinelerra_time_set_double (CinelerraTime time, double fp)
* @param usec Microseconds to set
* @param Time as given
*/
static inline CinelerraTime
cinelerra_time_init (CinelerraTime time, time_t sec, suseconds_t usec)
static inline LumieraTime
lumiera_time_init (LumieraTime time, time_t sec, suseconds_t usec)
{
if (time)
{
time->tv_sec = sec;
time->tv_usec = usec;
cinelerra_time_normalize (time);
lumiera_time_normalize (time);
}
return time;
}
@ -156,7 +156,7 @@ cinelerra_time_init (CinelerraTime time, time_t sec, suseconds_t usec)
* @return Seconds elapsed, -1 on error
*/
static inline time_t
cinelerra_time_sec (CinelerraTime time)
lumiera_time_sec (LumieraTime time)
{
if (time)
return time->tv_sec;
@ -170,7 +170,7 @@ cinelerra_time_sec (CinelerraTime time)
* @return Microseconds elapsed, -1 on error
*/
static inline suseconds_t
cinelerra_time_usec (CinelerraTime time)
lumiera_time_usec (LumieraTime time)
{
if (time)
return time->tv_usec;
@ -184,7 +184,7 @@ cinelerra_time_usec (CinelerraTime time)
* @return Floating point representation of time. NAN on error.
*/
static inline double
cinelerra_time_double_get (CinelerraTime time)
lumiera_time_double_get (LumieraTime time)
{
if (time)
{
@ -204,8 +204,8 @@ cinelerra_time_double_get (CinelerraTime time)
* @param src Time-source to copy from
* @return dest as given
*/
static inline CinelerraTime
cinelerra_time_copy (CinelerraTime dest, const CinelerraTime src)
static inline LumieraTime
lumiera_time_copy (LumieraTime dest, const LumieraTime src)
{
if (dest && src)
{
@ -221,8 +221,8 @@ cinelerra_time_copy (CinelerraTime dest, const CinelerraTime src)
* @param src Time to add to dest
* @return dest as given, or NULL on overflow.
*/
static inline CinelerraTime
cinelerra_time_add (CinelerraTime dest, const CinelerraTime src)
static inline LumieraTime
lumiera_time_add (LumieraTime dest, const LumieraTime src)
{
if (dest && src)
{
@ -231,11 +231,11 @@ cinelerra_time_add (CinelerraTime dest, const CinelerraTime src)
dest->tv_sec += src->tv_sec;
dest->tv_usec += src->tv_usec;
cinelerra_time_normalize (dest);
lumiera_time_normalize (dest);
if (dest->tv_sec < t)
{
cinelerra_error_set (CINELERRA_ERROR_TIME_OVERFLOW);
lumiera_error_set (LUMIERA_ERROR_TIME_OVERFLOW);
return NULL;
}
}
@ -248,8 +248,8 @@ cinelerra_time_add (CinelerraTime dest, const CinelerraTime src)
* @param src Time to subtract from dest
* @return dest as given, or NULL on underflow.
*/
static inline CinelerraTime
cinelerra_time_sub (CinelerraTime dest, const CinelerraTime src)
static inline LumieraTime
lumiera_time_sub (LumieraTime dest, const LumieraTime src)
{
if (dest && src)
{
@ -264,11 +264,11 @@ cinelerra_time_sub (CinelerraTime dest, const CinelerraTime src)
dest->tv_usec += 1000000 - src->tv_usec;
}
cinelerra_time_normalize (dest);
lumiera_time_normalize (dest);
if (dest->tv_sec > t)
{
cinelerra_error_set (CINELERRA_ERROR_TIME_UNDERFLOW);
lumiera_error_set (LUMIERA_ERROR_TIME_UNDERFLOW);
return NULL;
}
}

Some files were not shown because too many files have changed in this diff Show more