WIP adjust fixture, segments and segmentation

This commit is contained in:
Fischlurch 2008-11-05 05:03:03 +01:00
parent 9269db45cc
commit 3ef03bc3c0
8 changed files with 124 additions and 35 deletions

View file

@ -71,9 +71,9 @@ liblumiprocengine_la_SOURCES = \
$(liblumiprocengine_la_srcdir)/nodefactory.cpp \
$(liblumiprocengine_la_srcdir)/nodewiring.cpp \
$(liblumiprocengine_la_srcdir)/pluginadapter.cpp \
$(liblumiprocengine_la_srcdir)/rendergraph.cpp \
$(liblumiprocengine_la_srcdir)/procnode.cpp \
$(liblumiprocengine_la_srcdir)/projector.cpp \
$(liblumiprocengine_la_srcdir)/rendergraph.cpp \
$(liblumiprocengine_la_srcdir)/renderengine.cpp \
$(liblumiprocengine_la_srcdir)/source.cpp \
$(liblumiprocengine_la_srcdir)/stateproxy.cpp \
@ -161,6 +161,7 @@ liblumiprocmobjectsession_la_SOURCES = \
$(liblumiprocmobjectsession_la_srcdir)/meta.cpp \
$(liblumiprocmobjectsession_la_srcdir)/relativelocation.cpp \
$(liblumiprocmobjectsession_la_srcdir)/segment.cpp \
$(liblumiprocmobjectsession_la_srcdir)/segmentation.cpp \
$(liblumiprocmobjectsession_la_srcdir)/simpleclip.cpp \
$(liblumiprocmobjectsession_la_srcdir)/plug.cpp \
$(liblumiprocmobjectsession_la_srcdir)/session-impl.cpp \
@ -229,6 +230,7 @@ noinst_HEADERS += \
$(liblumiproc_la_srcdir)/mobject/session/simpleclip.hpp \
$(liblumiproc_la_srcdir)/mobject/session/mobjectfactory.hpp \
$(liblumiproc_la_srcdir)/mobject/session/segment.hpp \
$(liblumiproc_la_srcdir)/mobject/session/segmentation.hpp \
$(liblumiproc_la_srcdir)/mobject/session/track.hpp \
$(liblumiproc_la_srcdir)/mobject/session/wish.hpp \
$(liblumiproc_la_srcdir)/mobject/session/clip.hpp \

View file

@ -27,7 +27,7 @@
#include "proc/mobject/builder/applicablebuildertargettypes.hpp"
#include "proc/mobject/session/segment.hpp"
#include "proc/mobject/session/segmentation.hpp"
#include "proc/mobject/session/fixture.hpp" //////TODO really on the header??
@ -42,7 +42,7 @@ namespace mobject {
/**
* Tool implementation for deriving a partitioning of the current
* timeline, such that each segement has a constant configuration.
* timeline, such that each Segment 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.
@ -61,12 +61,11 @@ namespace mobject {
//////////////////////////////////////////////////////////TODO make it respond to the util::isnil test!
protected:
private:
typedef mobject::session::Segment Segment;
/** Partitioning of the Timeline to be created by this tool. */
list<Segment*> segments;
// TODO handle alloc!!!!
session::Segmentation& segments_;
};

View file

@ -24,14 +24,12 @@
#include "proc/mobject/session/fixture.hpp"
#include "include/logging.h"
namespace mobject
{
namespace session
{
namespace mobject {
namespace session {
list<ExplicitPlacement*> &
list<ExplicitPlacement> &
Fixture::getPlaylistForRender ()
{
UNIMPLEMENTED ("get Playlist For Render");

View file

@ -25,9 +25,10 @@
#define MOBJECT_SESSION_FIXTURE_H
#include <list>
#include <tr1/memory>
#include <boost/scoped_ptr.hpp>
#include "proc/mobject/session/edl.hpp"
#include "proc/mobject/session/segmentation.hpp"
#include "proc/mobject/session/track.hpp"
#include "proc/mobject/explicitplacement.hpp"
#include "proc/mobject/session/auto.hpp"
@ -46,11 +47,13 @@ namespace mobject {
class Fixture : public EDL
{
protected:
list<ExplicitPlacement*> timeline;
list<ExplicitPlacement> content_;
boost::scoped_ptr<Segmentation> partitioning_;
/////////////TODO: who creates this?
public:
list<ExplicitPlacement*> & getPlaylistForRender () ;
list<ExplicitPlacement> & getPlaylistForRender () ;
Auto<double>* getAutomation () ; ///< @todo: just a placeholder at the moment!!!
private:

View file

@ -1,5 +1,5 @@
/*
Segment - Segment of the Timeline.
Segment - Segment of the timeline for rendering.
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
@ -23,17 +23,10 @@
#include "proc/mobject/session/segment.hpp"
#include "proc/mobject/explicitplacement.hpp"
// Used at the moment (7/07) for partitioning the timeline/fixture into segments
// to be rendered by a specialized render node network for each, without the need
// to change any connections within a given segment.
// Note this concept may be superfluos alltogether; is a draft and the real
// use still needs to be worked out...
namespace mobject
{
namespace session
{
namespace mobject {
namespace session {
/** */

View file

@ -1,5 +1,5 @@
/*
SEGMENT.hpp - Segment of the Timeline.
SEGMENT.hpp - Segment of the timeline for rendering.
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
@ -33,18 +33,15 @@
using std::list;
namespace mobject
{
namespace session
{
namespace mobject {
namespace session {
/**
* Used at the moment (7/07) for partitioning the timeline/fixture into segments
* to be rendered by a specialized render node network for each, without the need
* to change any connections within a given segment.
* Note this concept may be superfluos alltogether; is a draft and the real
* use still needs to be worked out...
* For the purpose of building and rendering, the fixture (for each timeline)
* is partitioned such that each segment is <i>structurally constant</i>.
* For each segment there is a RenderGraph (unit of the render engine) which
* is able to render all ExitNodes for this segment.
*/
class Segment
{
@ -57,8 +54,9 @@ namespace mobject
Time length;
/** relevant MObjects comprising this segment. */
list<ExplicitPlacement *> elements;
list<ExplicitPlacement> elements;
// TODO: actually necessary??
// TODO: ownership??
};

View file

@ -0,0 +1,36 @@
/*
Segementation - Partitioning of a timeline for organising the render graph.
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
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/segmentation.hpp"
namespace mobject {
namespace session {
/** */
} // namespace mobject::session
} // namespace mobject

View file

@ -0,0 +1,60 @@
/*
SEGMENTATION.hpp - Partitioning of a timeline for organising the render graph.
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef MOBJECT_SESSION_SEGMENTATION_H
#define MOBJECT_SESSION_SEGMENTATION_H
#include "proc/mobject/session/segment.hpp"
#include <list>
using std::list;
namespace mobject {
namespace session {
/**
* For the purpose of building and rendering, the fixture (for each timeline)
* is partitioned such that each segment is <i>structurally constant</i>.
* The Segmentation defines and maintains this partitioning. Further,
* it is the general entry point for accessing the correct part of the engine
* responsible for a given timeline time point.
* @see SegmentationTool actually calculating the Segmentation
*/
class Segmentation
{
/** segments of the engine in ordered sequence. */
list<Segement> segments_;
};
} // namespace mobject::session
} // namespace mobject
#endif