** Start Coding ** Renderengine sources generated, reformatted and made compilable.

This commit is contained in:
Fischlurch 2007-08-08 04:50:02 +02:00
parent 014106f2a8
commit ebb4da6cc7
123 changed files with 5409 additions and 1562 deletions

View file

@ -60,7 +60,7 @@ def srcSubtree(env,tree,isShared=False, **args):
SRCPATTERNS = ['*.c','*.Cpp','*.cc'] SRCPATTERNS = ['*.c','*.cpp','*.cc']
def scanSrcSubtree(root): def scanSrcSubtree(root):
""" scan the given subtree for source filesnames """ scan the given subtree for source filesnames

31
src/common/time.cpp Normal file
View file

@ -0,0 +1,31 @@
/*
Time - unified representation of a time point, including conversion functions
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "common/time.hpp"
namespace cinelerra
{
} // namespace cinelerra

42
src/common/time.hpp Normal file
View file

@ -0,0 +1,42 @@
/*
TIME.hpp - unified representation of a time point, including conversion functions
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef CINELERRA_TIME_H
#define CINELERRA_TIME_H
namespace cinelerra
{
/**
* denotes a temporal position (time point), based on timeline start.
*
* investigate posix.4 realtime timers, wrap these here
*/
class Time
{};
} // namespace cinelerra
#endif

View file

@ -21,11 +21,12 @@
*/ */
#include <iostream>
#include <stdio.h> using std::cout;
int main(int argc, char* argv[]) int main (int argc, char* argv[])
{ {
printf("hello cinelerra again\n"); cout << "hello cinelerra again\n";
return 0; return 0;
} }

View file

@ -0,0 +1,33 @@
/*
ControllerFacade - Facade and service access point for the Proc Layer Controller
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/controllerfacade.hpp"
namespace proc
{
/** */
} // namespace proc

View file

@ -0,0 +1,46 @@
/*
CONTROLLERFACADE.hpp - Facade and service access point for the Proc Layer Controller
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_CONTROLLERFACADE_H
#define PROC_CONTROLLERFACADE_H
namespace proc
{
/**
* Interface providing unified access to the Proc-Subsystem Controller.
* Especially, this Facade class exports the functions to get a render
* engine for carrying out actual renderings.
*/
class ControllerFacade
{
//////////
};
} // namespace proc
#endif

View file

@ -0,0 +1,38 @@
/*
AFrame - buffer holding a Audio samples for the render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/aframe.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,45 @@
/*
AFRAME.hpp - buffer holding a Audio samples for the render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_AFRAME_H
#define PROC_ENGINE_AFRAME_H
#include "proc/frame.hpp"
namespace proc
{
namespace engine
{
class AFrame : public proc::Frame
{};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,38 @@
/*
ARender - Representation of a Audio Render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/arender.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,49 @@
/*
ARENDER.hpp - Representation of a Audio Render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_ARENDER_H
#define PROC_ENGINE_ARENDER_H
#include "proc/stateproxy.hpp"
namespace proc
{
namespace engine
{
/**
* Representation of a Audio render process
*/
class ARender : public proc::StateProxy
{};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,36 @@
/*
CodecAdapter - Processing Node for (de)coding media data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/codecadapter.hpp"
namespace proc
{
namespace engine
{
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,53 @@
/*
CODECADAPTER.hpp - Processing Node for (de)coding media data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_CODECADAPTER_H
#define PROC_ENGINE_CODECADAPTER_H
#include "proc/engine/trafo.hpp"
namespace proc
{
namespace engine
{
/**
* Adapter for wiring an externally loaded
* codec into the render pipeline. The decoding
* process thus is integrated into the framework
* of the Renderengine, while the actual implementation
* can be delegated to an external library accessed
* through Cinelerra's datat backend.
*/
class CodecAdapter : public Trafo
{};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,37 @@
/*
ExitNode - special Processing Node providing "pullable" output
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/exitnode.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,49 @@
/*
EXITNODE.hpp - special Processing Node providing "pullable" output
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_EXITNODE_H
#define PROC_ENGINE_EXITNODE_H
#include "proc/engine/procnode.hpp"
namespace proc
{
namespace engine
{
/**
* The output end of each render pipeline.
* Pulling from such exit nodes actually ivokes the render process
*/
class ExitNode : public ProcNode
{};
} // namespace proc::engine
} // namespace proc
#endif

38
src/proc/engine/glbuf.cpp Normal file
View file

@ -0,0 +1,38 @@
/*
GLBuf - a buffer and render process holding a Video frame for OpenGL rendering
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/glbuf.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

45
src/proc/engine/glbuf.hpp Normal file
View file

@ -0,0 +1,45 @@
/*
GLBUF.hpp - a buffer and render process holding a Video frame for OpenGL rendering
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_GLBUF_H
#define PROC_ENGINE_GLBUF_H
#include "proc/frame.hpp"
namespace proc
{
namespace engine
{
class GLBuf : public proc::Frame
{};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,38 @@
/*
GLPipe - specialized connection element for handling OpenGL implementation details
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/glpipe.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,50 @@
/*
OPENGLPIPE.hpp - specialized connection element for handling OpenGL implementation details
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_OPENGLPIPE_H
#define PROC_ENGINE_OPENGLPIPE_H
#include "proc/engine/link.hpp"
namespace proc
{
namespace engine
{
/**
* specialized connection node used to handle the transfer of OpenGL data
* from a image bitmap into texture form.
*/
class GLPipe : public Link
{};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,37 @@
/*
GLRender - Representation of a OpenGL accellerated Video render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/glrender.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,48 @@
/*
GLRENDER.hpp - Representation of a OpenGL accellerated Video render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_GLRENDER_H
#define PROC_ENGINE_GLRENDER_H
#include "proc/stateproxy.hpp"
namespace proc
{
namespace engine
{
/**
* Representation of a OpenGL accelerated Video render process
*/
class GLRender : public StateProxy
{};
} // namespace proc::engine
} // namespace proc
#endif

38
src/proc/engine/hub.cpp Normal file
View file

@ -0,0 +1,38 @@
/*
Hub - special ProcNode used to build data distributing connections
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/hub.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

48
src/proc/engine/hub.hpp Normal file
View file

@ -0,0 +1,48 @@
/*
HUB.hpp - special ProcNode used to build data distributing connections
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_HUB_H
#define PROC_ENGINE_HUB_H
#include "proc/engine/procnode.hpp"
namespace proc
{
namespace engine
{
class Hub : public ProcNode
{};
///TODO: seems rather we don't need this one anymore??
//////// to be decided after the implementing the basic render engine....
} // namespace proc::engine
} // namespace proc
#endif

38
src/proc/engine/link.cpp Normal file
View file

@ -0,0 +1,38 @@
/*
Link - forwarding, adapting or connecting ProcNode
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/link.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

54
src/proc/engine/link.hpp Normal file
View file

@ -0,0 +1,54 @@
/*
PIPE.hpp - forwarding, adapting or connecting ProcNode
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_PIPE_H
#define PROC_ENGINE_PIPE_H
#include "proc/engine/procnode.hpp"
namespace proc
{
namespace engine
{
/**
* Abstraction of all sorts of connecting Elements with
* special functionality. For example the coneections enabling
* to mix OpenGL implemented Effects/Previews with normal CPU based
* processing in one render pipeline.
*/
class Link : public ProcNode
{
///////TODO: flatten hierarchy if we don't have common functionallity for all Link-Subclasses
///////TODO: can be decdiede when we know more how to handle OpenGL rendering
};
} // namespace proc::engine
} // namespace proc
#endif

38
src/proc/engine/mask.cpp Normal file
View file

@ -0,0 +1,38 @@
/*
Mask - Video ProcNode for masking regions of the image (automatable)
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/mask.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

46
src/proc/engine/mask.hpp Normal file
View file

@ -0,0 +1,46 @@
/*
MASK.hpp - Video ProcNode for masking regions of the image (automatable)
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_MASK_H
#define PROC_ENGINE_MASK_H
#include "proc/engine/trafo.hpp"
namespace proc
{
namespace engine
{
class Mask : public Trafo
{};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,38 @@
/*
PluginAdapter - Adapter for integrating various Effect processors in the render pipeline
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/pluginadapter.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,52 @@
/*
PLUGINADAPTER.hpp - Adapter for integrating various Effect processors in the render pipeline
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_PLUGINADAPTER_H
#define PROC_ENGINE_PLUGINADAPTER_H
#include "proc/engine/trafo.hpp"
namespace proc
{
namespace engine
{
/**
* Adapter used to integrate an effects processor in the render pipeline.
* Effects processors are typically defined in a separate library and
* will be loaded at runtime using Cinelerra's plugin interface.
*/
class PluginAdapter : public Trafo
{
/////////////
};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,40 @@
/*
Processor - a single render pipeline for one segment of the timeline
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/processor.hpp"
#include "proc/engine/exitnode.hpp"
#include "proc/stateproxy.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,58 @@
/*
PROCESSOR.hpp - a single render pipeline for one segment of the timeline
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_PROCESSOR_H
#define PROC_ENGINE_PROCESSOR_H
#include "common/time.hpp"
#include "proc/stateproxy.hpp"
namespace proc
{
namespace engine
{
class ExitNode;
class Processor
{
protected:
ExitNode * output;
/** begin of the timerange covered by this processor */
cinelerra::Time start;
/**end (exclusive) of the timerange */
cinelerra::Time end;
};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,37 @@
/*
ProcNode - Key abstraction of the Render Engine: a Processing Node
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/procnode.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,63 @@
/*
PROCNODE.hpp - Key abstraction of the Render Engine: a Processing Node
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_PROCNODE_H
#define PROC_ENGINE_PROCNODE_H
#include <vector>
#include "proc/mobject/parameter.hpp"
using std::vector;
namespace proc
{
namespace engine
{
/**
* Key abstraction of the Render Engine: A Data processing Node
*/
class ProcNode
{
protected:
typedef proc::mobject::Parameter<double> Param;
/** The predecessor in a processing pipeline.
* I.e. a source to get data to be processed
*/
ProcNode * datasrc;
vector<Param> params;
};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,38 @@
/*
Projector - video ProcNode for scaling and translating image data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/projector.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,50 @@
/*
PROJECTOR.hpp - video ProcNode for scaling and translating image data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_PROJECTOR_H
#define PROC_ENGINE_PROJECTOR_H
#include "proc/engine/trafo.hpp"
namespace proc
{
namespace engine
{
/**
* Special video processing node used to scale and translate image data.
*/
class Projector : public Trafo
{
////////////
};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,45 @@
/*
RenderEngine - a complete network of processing nodes usable for rendering
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/renderengine.hpp"
namespace proc
{
namespace engine
{
/**
* TODO: will probably be handled differently (see Cehteh)
*/
void
RenderEngine::play ()
{
}
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,58 @@
/*
RENDERENGINE.hpp - a complete network of processing nodes usable for rendering
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_RENDERENGINE_H
#define PROC_ENGINE_RENDERENGINE_H
#include <list>
#include "proc/engine/processor.hpp"
using std::list;
namespace proc
{
namespace engine
{
class RenderEngine : public Processor
{
public:
/**
* TODO: will probably be handled differently (see Cehteh)
*/
void play () ;
private:
list<Processor> renderSegments;
};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,38 @@
/*
Source - Representation of a Media source
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/source.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,53 @@
/*
SOURCE.hpp - Representation of a Media source
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_SOURCE_H
#define PROC_ENGINE_SOURCE_H
#include "proc/engine/procnode.hpp"
namespace proc
{
namespace engine
{
/**
* Source Node: represents a media source to pull data from.
* Source is special, because it has no predecessor nodes,
* but rather makes calls down to the data backend internally
* to get at the raw data.
*/
class Source : public ProcNode
{
/////////////////TODO
};
} // namespace proc::engine
} // namespace proc
#endif

37
src/proc/engine/trafo.cpp Normal file
View file

@ -0,0 +1,37 @@
/*
Trafo - transforming processing Node
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/trafo.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

55
src/proc/engine/trafo.hpp Normal file
View file

@ -0,0 +1,55 @@
/*
TRAFO.hpp - transforming processing Node
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_TRAFO_H
#define PROC_ENGINE_TRAFO_H
#include "proc/engine/procnode.hpp"
namespace proc
{
namespace engine
{
/**
* abstraction of the most important kind of Processing node,
* which really works on the media data and transforms input
* into ouput. Subclasses include the (Video) Projector
* for scaling/translating, all sorts of effects (Plugins),
* as well as the low level codecs used to decode the raw
* media at the source end of the render pipeline(s)
*/
class Trafo : public ProcNode
{
///////////
};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,38 @@
/*
VFrame - a buffer holding a Video frame for the render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/vframe.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,47 @@
/*
VFRAME.hpp - a buffer holding a Video frame for the render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_VFRAME_H
#define PROC_ENGINE_VFRAME_H
#include "proc/frame.hpp"
namespace proc
{
namespace engine
{
class VFrame : public proc::Frame
{
///////////////////////
};
} // namespace proc::engine
} // namespace proc
#endif

View file

@ -0,0 +1,37 @@
/*
VRender - Representation of a Video render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/engine/vrender.hpp"
namespace proc
{
namespace engine
{
/** */
} // namespace proc::engine
} // namespace proc

View file

@ -0,0 +1,51 @@
/*
VRENDER.hpp - Representation of a Video render process
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_ENGINE_VRENDER_H
#define PROC_ENGINE_VRENDER_H
#include "proc/stateproxy.hpp"
namespace proc
{
namespace engine
{
/**
* Representation of a Video render process.
* (Encapsulates the video buffers for the actual calculations)
*/
class VRender : public proc::StateProxy
{
/////////////
};
} // namespace proc::engine
} // namespace proc
#endif

33
src/proc/frame.cpp Normal file
View file

@ -0,0 +1,33 @@
/*
Frame - Key Abstraction: render process and buffer holding frame data.
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/frame.hpp"
namespace proc
{
/** */
} // namespace proc

46
src/proc/frame.hpp Normal file
View file

@ -0,0 +1,46 @@
/*
FRAME.hpp - Key Abstraction: render process and buffer holding frame data.
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_FRAME_H
#define PROC_FRAME_H
namespace proc
{
/**
* TODO: how to relate to Cehteh's Frame entity in the Backend?
* The latter is the fundamental Frame entity, wheras this Object
* rather represents a buffer set containing frame date.
*/
class Frame
{
/////////////////
};
} // namespace proc
#endif

View file

@ -0,0 +1,47 @@
/*
Buildable - marker interface denoting any MObject able to be treated by Tools
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/buildable.hpp"
#include "proc/mobject/builder/tool.hpp"
namespace proc
{
namespace mobject
{
/** typically the provided actual Tool class will
* contain overloaded fuctions for treating
* different Buildable subclasses specifically
*/
void
Buildable::apply (builder::Tool& provided_tool)
{
provided_tool.treat( *this); //// TODO: how to call??? (ref or pointer??)
}
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,55 @@
/*
BUILDABLE.hpp - marker interface denoting any (M)Object able to be treated by Tools
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDABLE_H
#define PROC_MOBJECT_BUILDABLE_H
namespace proc
{
namespace mobject
{
namespace builder{ class Tool; }
/**
* All Buidables support double-dispatch of given Tool operations.
* The actual operation is thus selected at runtime based both on the
* actual type of the Tool class /and/ the actual type of the Buildabele.
*/
class Buildable
{
public:
void apply (builder::Tool& provided_tool) ;
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,47 @@
/*
Assembler - building facility (implementation of the build process)
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/builder/assembler.hpp"
namespace proc
{
namespace mobject
{
namespace builder
{
proc::engine::RenderEngine &
Assembler::build ()
{
}
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,58 @@
/*
ASSEMBLER.hpp - building facility (implementation of the build process)
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDER_ASSEMBLER_H
#define PROC_MOBJECT_BUILDER_ASSEMBLER_H
#include "proc/engine/renderengine.hpp"
namespace proc
{
namespace mobject
{
namespace builder
{
/**
* This is the actual building facility:
* provided the correct tools and associations,
* it serves to build and connect the individual ProcNode objects
*/
class Assembler
{
public:
proc::engine::RenderEngine & build () ;
// TODO: allocation, GC???
};
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,49 @@
/*
ConManager - manages the creation of additional ProcNode connections for the Renderengine
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/builder/conmanager.hpp"
namespace proc
{
namespace mobject
{
namespace builder
{
/**
* TODO !!!!!!!!!!!!!!!!!!
*/
int
ConManager::getConnection ()
{
}
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,59 @@
/*
CONMANAGER.hpp - manages the creation of additional ProcNode connections for the Renderengine
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDER_CONMANAGER_H
#define PROC_MOBJECT_BUILDER_CONMANAGER_H
namespace proc
{
namespace mobject
{
namespace builder
{
/**
* 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.
*/
class ConManager
{
public:
/**
* TODO just a design sketch, work out signatures etc...
*/
int getConnection () ;
};
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,74 @@
/*
NodeCreaterTool - central Tool implementing the Renderengine building
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/builder/nodecreatertool.hpp"
#include "proc/mobject/buildable.hpp"
#include "proc/mobject/session/clip.hpp"
#include "proc/mobject/session/effect.hpp"
#include "proc/mobject/session/auto.hpp"
using proc::mobject::Buildable;
using proc::mobject::session::Clip;
using proc::mobject::session::Effect;
using proc::mobject::session::Auto;
namespace proc
{
namespace mobject
{
namespace builder
{
void
NodeCreatorTool::treat (Buildable& something)
{
}
void
NodeCreatorTool::treat (Clip& clip)
{
}
void
NodeCreatorTool::treat (Effect& effect)
{
}
void
NodeCreatorTool::treat (Auto<double>& automation)
{
}
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,82 @@
/*
NODECREATERTOOL.hpp - central Tool implementing the Renderengine building
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDER_NODECREATERTOOL_H
#define PROC_MOBJECT_BUILDER_NODECREATERTOOL_H
#include "proc/mobject/builder/tool.hpp"
#include "proc/mobject/buildable.hpp"
#include "proc/engine/processor.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
// Forward declarations
class Effect;
class Clip;
template<class VAL> class Auto;
}
namespace builder
{
// TODO: define Lifecycle...
/**
* 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.
*/
class NodeCreatorTool : public Tool
{
public:
virtual void treat (proc::mobject::session::Clip& clip) ;
virtual void treat (proc::mobject::session::Effect& effect) ;
virtual void treat (proc::mobject::session::Auto<double>& automation) ; //TODO: the automation-type-problem
virtual void treat (proc::mobject::Buildable& something) ;
protected:
/** holds the Processor (Render Engine Element)
* to be built by the current build step
*/
proc::engine::Processor* proc;
};
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,67 @@
/*
SegmentationTool - Tool for creating a partitioning of the current timeline
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/builder/segmentationtool.hpp"
#include "proc/mobject/buildable.hpp"
#include "proc/mobject/session/clip.hpp"
#include "proc/mobject/session/effect.hpp"
#include "proc/mobject/session/segment.hpp"
using proc::mobject::Buildable;
using proc::mobject::session::Clip;
using proc::mobject::session::Effect;
namespace proc
{
namespace mobject
{
namespace builder
{
void
SegmentationTool::treat (Buildable& something)
{
}
void
SegmentationTool::treat (Clip& clip)
{
}
void
SegmentationTool::treat (Effect& effect)
{
}
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,83 @@
/*
SEGMENTATIONTOOL.hpp - Tool for creating a partitioning of the current timeline
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDER_SEGMENTATIONTOOL_H
#define PROC_MOBJECT_BUILDER_SEGMENTATIONTOOL_H
#include <list>
#include "proc/mobject/buildable.hpp"
#include "proc/mobject/builder/tool.hpp"
#include "proc/mobject/session/segment.hpp"
using std::list;
namespace proc
{
namespace mobject
{
namespace session
{
// Forward declarations
class Clip;
class Effect;
}
namespace builder
{
/**
* Tool implementation for deriving a partitioning of the current
* timeline, such that each segement has a constant configuration.
* "Constant" means here, that any remaining changes over time
* can be represented by automation solely, without the need
* to change the node connections.
*/
class SegmentationTool : public Tool
{
public:
void treat (proc::mobject::session::Clip& clip) ;
void treat (proc::mobject::session::Effect& effect) ;
void treat (proc::mobject::Buildable& something) ;
protected:
typedef proc::mobject::session::Segment Segment;
/** Partitioning of the Timeline to be created by this tool. */
list<Segment*> segments;
// TODO handle alloc!!!!
};
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,44 @@
/*
Tool - Interface, any tool for processing MObjects
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/builder/tool.hpp"
namespace proc
{
namespace mobject
{
namespace builder
{
/** */
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,61 @@
/*
TOOL.hpp - Interface, any tool for processing MObjects
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDER_TOOL_H
#define PROC_MOBJECT_BUILDER_TOOL_H
#include "proc/mobject/buildable.hpp"
namespace proc
{
namespace mobject
{
namespace builder
{
/**
* Used according to the visitor pattern: each Tool contains
* the concrete implementation for one task to be done to the various MObject classes
*/
class Tool
{
protected:
typedef proc::mobject::Buildable Buildable;
public:
/** This operation is to be overloaded for specific MObject subclasses to be treated.
*/
virtual void treat (Buildable& mElement) = 0;
};
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,46 @@
/*
ToolFactory - supply of Tool implementations for the Builder
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/builder/toolfactory.hpp"
namespace proc
{
namespace mobject
{
namespace builder
{
Tool&
ToolFactory::configure ()
{
}
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,52 @@
/*
TOOLFACTORY.hpp - supply of Tool implementations for the Builder
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDER_TOOLFACTORY_H
#define PROC_MOBJECT_BUILDER_TOOLFACTORY_H
#include "proc/mobject/builder/tool.hpp"
namespace proc
{
namespace mobject
{
namespace builder
{
class ToolFactory
{
public:
Tool & configure () ;
};
} // namespace proc::mobject::builder
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,46 @@
/*
BuilderFacade - Facade and service access point for the Builder Subsystem
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/builderfacade.hpp"
namespace proc
{
namespace mobject
{
/**
* Main Operation of the Builder:
* create a render engine for a given part of the timeline
*/
proc::engine::RenderEngine &
BuilderFacade::buildEngine ()
{
//////////////////////TODO
}
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,59 @@
/*
BUILDERFACADE.hpp - Facade and service access point for the Builder Subsystem
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_BUILDERFACADE_H
#define PROC_MOBJECT_BUILDERFACADE_H
#include "proc/engine/renderengine.hpp"
namespace proc
{
namespace mobject
{
/**
* 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.
*/
class BuilderFacade
{
public:
/**
* Main Operation of the Builder:
* create a render engine for a given part of the timeline
*/
proc::engine::RenderEngine & buildEngine () ;
// TODO: allocation, GC??????
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,47 @@
/*
PathManager - Manager for deciding the actual render strategy
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/controller/pathmanager.hpp"
namespace proc
{
namespace mobject
{
namespace controller
{
proc::engine::Processor *
PathManager::buildProcessor ()
{
return 0;//////////////////TODO
}
} // namespace proc::mobject::controller
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,58 @@
/*
PATHMANAGER.hpp - Manager for deciding the actual render strategy
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_CONTROLLER_PATHMANAGER_H
#define PROC_MOBJECT_CONTROLLER_PATHMANAGER_H
#include "proc/engine/processor.hpp"
namespace proc
{
namespace mobject
{
namespace controller
{
/**
* While building a render engine, this Strategy class
* decides on the actual render strategy in accordance
* to the current controller settings (system state)
*/
class PathManager
{
public:
proc::engine::Processor* buildProcessor () ;
// TODO: allocation, GC??
};
} // namespace proc::mobject::controller
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,47 @@
/*
RenderState - renderengine state manager
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/controller/renderstate.hpp"
namespace proc
{
namespace mobject
{
namespace controller
{
StateProxy&
RenderState::getStateProxy ()
{
//////////////TODO
}
} // namespace proc::mobject::controller
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,59 @@
/*
RENDERSTATE.hpp - renderengine state manager
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_CONTROLLER_RENDERSTATE_H
#define PROC_MOBJECT_CONTROLLER_RENDERSTATE_H
#include "proc/stateproxy.hpp"
namespace proc
{
namespace mobject
{
namespace controller
{
/**
* Encapsulates the logic used to get a "current render process"
* in accordance to the currently applicable controller settings.
* The provided StateProxy serves to hold any mutalbe state used
* in the render process, so the rest of the render engine
* can be stateless.
*/
class RenderState
{
public:
StateProxy& getStateProxy () ;
};
} // namespace proc::mobject::controller
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,37 @@
/*
ExplicitPlacement - special Placement yielding an absolute location (Time,Track)-location for a MObject
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/explicitplacement.hpp"
namespace proc
{
namespace mobject
{
/** */
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,55 @@
/*
EXPLICITPLACEMENT.hpp - special Placement yielding an absolute location (Time,Track)-location for a MObject
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_EXPLICITPLACEMENT_H
#define PROC_MOBJECT_EXPLICITPLACEMENT_H
#include "proc/mobject/placement.hpp"
namespace proc
{
namespace mobject
{
namespace session{ class Track; }
// TODO: need Garbage Collector for this class!!!!!
class ExplicitPlacement : public Placement
{
protected:
Time time;
Track* track;
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,37 @@
/*
Interpolator - denotes a facility to get (continuously interpolated) parameter values
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/interpolator.hpp"
namespace proc
{
namespace mobject
{
/** */
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,50 @@
/*
INTERPOLATOR.hpp - denotes a facility to get (continuously interpolated) parameter values
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_INTERPOLATOR_H
#define PROC_MOBJECT_INTERPOLATOR_H
namespace proc
{
namespace mobject
{
/**
* Provides the implementation for getting the acutal value
* of a time varying or automated effect/plugin parameter
*/
template<class VAL>
class Interpolator
{
///////////////
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,37 @@
/*
MObject - Key Abstraction: A Media Object in the Session
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/mobject.hpp"
#include "proc/mobject/placement.hpp"
namespace proc
{
namespace mobject
{
/** */
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,67 @@
/*
MOBJECT.hpp - Key Abstraction: A Media Object in the Session
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_MOBJECT_H
#define PROC_MOBJECT_MOBJECT_H
#include <list>
#include "common/time.hpp"
#include "proc/mobject/buildable.hpp"
using std::list;
namespace proc
{
namespace mobject
{
class Placement;
/**
* MObject is the interface class for all "Media Objects".
* All the contents and elements that can be placed and
* manipulated and finally rendered within Cinelerra's EDL
* are MObjects.
*/
class MObject : public Buildable
{
protected:
typedef cinelerra::Time Time;
// TODO: how to represent time intervals best?
Time length;
list<Placement *> placement;
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,43 @@
/*
Parameter - representation of an automatable effect/plugin parameter
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/parameter.hpp"
#include "proc/mobject/paramprovider.hpp"
namespace proc
{
namespace mobject
{
template<class VAL>
VAL
Parameter<VAL>::getValue ()
{
////////////TODO
}
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,59 @@
/*
PARAMETER.hpp - representation of an automatable effect/plugin parameter
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_PARAMETER_H
#define PROC_MOBJECT_PARAMETER_H
namespace proc
{
namespace mobject
{
template<class VAL> class ParamProvider;
/**
* Descriptor and access object for a plugin parameter.
* Parameters may be provided with values from the session,
* and this values may be automated.
*/
template<class VAL>
class Parameter
{
public:
VAL getValue () ;
protected:
ParamProvider<VAL>* provider;
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,44 @@
/*
ParamProvider - interface denoting a source for actual Parameter values
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/paramprovider.hpp"
#include "proc/mobject/parameter.hpp"
#include "proc/mobject/interpolator.hpp"
namespace proc
{
namespace mobject
{
template<class VAL>
VAL
ParamProvider<VAL>::getValue ()
{
}
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,59 @@
/*
PARAMPROVIDER.hpp - interface denoting a source for actual Parameter values
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_PARAMPROVIDER_H
#define PROC_MOBJECT_PARAMPROVIDER_H
namespace proc
{
namespace mobject
{
template<class VAL> class Parameter;
template<class VAL> class Interpolator;
/**
* A facility to get the actual value of a plugin/effect parameter
*/
template<class VAL>
class ParamProvider
{
protected:
Parameter<VAL>* param;
Interpolator<VAL>* ipo;
public:
virtual VAL getValue () ;
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,47 @@
/*
Placement - Key Abstraction: a way to place and locate a Media Object
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/placement.hpp"
#include "proc/mobject/explicitplacement.hpp"
namespace proc
{
namespace mobject
{
/** create an actual (explicit) placement while trying to
* satisfy the network of adjacent objects and placements.
* TODO: need GC!!!!!!!!!!!
*/
ExplicitPlacement&
Placement::resolve ()
{
}
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,61 @@
/*
PLACEMENT.hpp - Key Abstraction: a way to place and locate a Media Object
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_PLACEMENT_H
#define PROC_MOBJECT_PLACEMENT_H
#include "proc/mobject/mobject.hpp"
#include "proc/mobject/session/track.hpp"
namespace proc
{
namespace mobject
{
class ExplicitPlacement;
class Placement
{
protected:
typedef cinelerra::Time Time;
typedef proc::mobject::session::Track Track;
MObject* subject;
public:
/** resolve the network of placement and
* provide the resulting (explicit) placement.
*/
ExplicitPlacement& resolve () ;
};
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,41 @@
/*
AbstractMO - abstract base class for all Media Objects
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/abstractmo.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,51 @@
/*
ABSTRACTMO.hpp - abstract base class for all Media Objects
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_ABSTRACTMO_H
#define PROC_MOBJECT_SESSION_ABSTRACTMO_H
#include "proc/mobject/mobject.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
class AbstractMO : public MObject
{
////////////// TODO: work out common services to provide!!!!
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,41 @@
/*
Allocation - directive to place a MObject in a specific way
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/allocation.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,66 @@
/*
ALLOCATION.hpp - directive to place a MObject in a specific way
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_ALLOCATION_H
#define PROC_MOBJECT_SESSION_ALLOCATION_H
#include <string>
#include "proc/mobject/placement.hpp"
using std::string;
namespace proc
{
namespace mobject
{
namespace session
{
/**
* a directive to place a MObject in a specific way
*/
class Allocation : public Placement
{
protected:
/** human readable representation of the condition
* characterizing this allocaton, e.g. "t >= 10"
*/
string repr;
public:
const string& getRepr () const { return repr; }
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,48 @@
/*
Auto - Media Object holding automation data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/auto.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
template<class VAL>
VAL
Auto<VAL>::getValue ()
{
return 0; //////////////TODO
}
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,58 @@
/*
AUTO.hpp - Media Object holding automation data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_AUTO_H
#define PROC_MOBJECT_SESSION_AUTO_H
#include "proc/mobject/session/meta.hpp"
#include "proc/mobject/paramprovider.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/**
* Automation data for some parameter
* (i.e. the parameter is a time varying function)
*/
template<class VAL>
class Auto : public Meta, public ParamProvider<VAL>
{
public:
virtual VAL getValue () ;
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,41 @@
/*
Clip - a Media Clip
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/clip.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,68 @@
/*
CLIP.hpp - a Media Clip
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_CLIP_H
#define PROC_MOBJECT_SESSION_CLIP_H
#include "proc/mobject/session/abstractmo.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/**
* A user visible/editable Clip is a reference to a contiguous
* sequence of media data loaded as Asset into the current Session.
* As such, it is a virtual (non destructive) cut or edit of the
* source material and can be placed into the EDL to be rendered
* into the ouput. The actual media type of a clip will be derived
* at runtime by resolving this reference to the underlying Asset.
*
* TODO: define how to denote Time positions /lengths. This is tricky,
* because it depends on the actual media type, and we wand to encapsulate
* all these details as much as possible.
*/
class Clip : public AbstractMO
{
protected:
/** startpos in source */
Time start;
//TODO: where to put the duration ???
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,43 @@
/*
EDL - the (high level) Edit Decision List within the current Session
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/edl.hpp"
#include "proc/mobject/session/track.hpp"
#include "proc/mobject/mobject.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,59 @@
/*
EDL.hpp - the (high level) Edit Decision List within the current Session
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_EDL_H
#define PROC_MOBJECT_SESSION_EDL_H
#include <list>
#include "proc/mobject/mobject.hpp"
#include "proc/mobject/session/track.hpp"
using std::list;
namespace proc
{
namespace mobject
{
namespace session
{
class EDL
{
protected:
list<Track *> tracks;
list<MObject *> clips;
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,41 @@
/*
Effect - EDL representation of a pluggable and automatable effect.
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/effect.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,58 @@
/*
EFFECT.hpp - EDL representation of a pluggable and automatable effect.
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_EFFECT_H
#define PROC_MOBJECT_SESSION_EFFECT_H
#include <string>
#include "proc/mobject/session/abstractmo.hpp"
using std::string;
namespace proc
{
namespace mobject
{
namespace session
{
class Effect : public AbstractMO
{
protected:
/** Identifier of the Plugin to be used */
string plugID;
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,41 @@
/*
${Name} - ???????????? needed any longer?
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/fixedplacement.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,53 @@
/*
FIXEDPLACEMENT.hpp - TODO: didn't we plan to rename ExplicitPlacement to DirectPlacement??
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_FIXEDPLACEMENT_H
#define PROC_MOBJECT_SESSION_FIXEDPLACEMENT_H
#include "proc/mobject/placement.hpp"
#include "proc/mobject/explicitplacement.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
// TODO: didn't we plan to rename ExplicitPlacement to DirectPlacement??
class DirectPlacement : public ExplicitPlacement
{
///////////
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,57 @@
/*
Fixture - the (low level) representation of the EDL with concrete placement data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/fixture.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
list<ExplicitPlacement*> &
Fixture::getPlaylistForRender ()
{
abort();/////////////////////TODO
}
/** TODO: a placeholder for the Operation needed for
* wiring the Automation providers in the Build process
*/
Auto<double>*
Fixture::getAutomation ()
{
return 0;/////////////////////TODO
}
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,66 @@
/*
FIXTURE.hpp - the (low level) representation of the EDL with concrete placement data
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_FIXTURE_H
#define PROC_MOBJECT_SESSION_FIXTURE_H
#include <list>
#include "proc/mobject/session/edl.hpp"
#include "proc/mobject/session/track.hpp"
#include "proc/mobject/explicitplacement.hpp"
#include "proc/mobject/session/auto.hpp"
using std::list;
namespace proc
{
namespace mobject
{
namespace session
{
class Fixture : public EDL
{
protected:
Track tracks;
list<ExplicitPlacement*> timeline;
public:
list<ExplicitPlacement*> & getPlaylistForRender () ;
Auto<double>* getAutomation () ; /////TODO: just a placeholder at the moment!!!
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,41 @@
/*
Label - a user visible Marker or Tag
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/label.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,56 @@
/*
LABEL.hpp - a user visible Marker or Tag
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_LABEL_H
#define PROC_MOBJECT_SESSION_LABEL_H
#include "proc/mobject/session/meta.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/**
* Any sort of User visible Marker or Tag, used
* to mark time positions and ranges, or specific
* locations to attach other MObjects to.
*/
class Label : public Meta
{
///////////TODO: timespan fields here or already in class Meta??
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,41 @@
/*
Meta - abstract base class of all MObjects representing meta data or processing instructions
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/meta.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/** */
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,57 @@
/*
META.hpp - abstract base class of all MObjects representing meta data or processing instructions
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_META_H
#define PROC_MOBJECT_SESSION_META_H
#include "proc/mobject/session/abstractmo.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
/**
* Meta-MObject doesn't represent real Media Content,
* but rather all sorts of Processing Instructions
* and other metadata, which can be placed and
* attached within the EDL/Session.
*/
class Meta : public AbstractMO
{
///////////
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

View file

@ -0,0 +1,40 @@
/*
RelativePlacement - Placement implemnetaion providing various ways of attaching a MObject to another one
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
#include "proc/mobject/session/relativeplacement.hpp"
#include "proc/mobject/mobject.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc

View file

@ -0,0 +1,73 @@
/*
RELATIVEPLACEMENT.hpp - Placement implemnetaion providing various ways of attaching a MObject to another one
Copyright (C) CinelerraCV
2007, 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
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef PROC_MOBJECT_SESSION_RELATIVEPLACEMENT_H
#define PROC_MOBJECT_SESSION_RELATIVEPLACEMENT_H
#include "proc/mobject/placement.hpp"
#include "common/time.hpp"
namespace proc
{
namespace mobject
{
namespace session
{
class RelativePlacement : public proc::mobject::Placement
{
public:
/**
* the possible kinds of RelativePlacements
*/
enum RelType
{ SAMETIME /** place subject at the same time as the anchor */
, ATTACH /** attach subject to anchor (e.g. an effect to a clip) */
};
protected:
MObject* anchor;
/** the kind of relation denoted by this Placement */
RelType relType;
/** Offset the actual position by this (time) value relative to the anchor point. */
cinelerra::Time offset;
//TODO: suitable representation?
};
} // namespace proc::mobject::session
} // namespace proc::mobject
} // namespace proc
#endif

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