49 LUMIERA_ERROR_DEFINE (CANT_PLAY,
"unable to build playback or render process for this configuration");
61 using lib::RecursiveLock_NoWait;
65 using std::placeholders::_1;
87 :
public Sync<RecursiveLock_NoWait>
89 typedef weak_ptr<PlayProcess> Entry;
90 typedef std::vector<Entry> ProcTable;
103 frontend.
activate (newProcess, bind (&ProcessTable::endProcess,
this, _1 ));
112 processes_.push_back (frontend);
120 return not and_all (processes_, isDead);
131 remove_if (processes_, isDead);
135 isDead (Entry
const& e)
144 PlayService::~PlayService()
146 if (pTable_->isActive())
148 UNIMPLEMENTED (
"block waiting for any ongoing play processes. Ensure the process table is empty -- OR -- hand it over to some kind of cleanup service");
150 ENSURE (!pTable_->isActive());
160 PlayService::PlayService()
184 return pTable_->establishProcess(
214 return this->
connect (ports, output);
224 UNIMPLEMENTED (
"build PlayProcess based on a set of pipes");
234 UNIMPLEMENTED (
"build PlayProcess for a Timeline");
244 UNIMPLEMENTED (
"build PlayProcess directly for a Viewer element");
254 UNIMPLEMENTED (
"build PlayProcess for a single Fork");
264 UNIMPLEMENTED (
"build virtual Timeline and PlayProcess to show a single Clip");
Facility for monitor object based locking.
A refcounting Handle to an MObject of type MO, used to constrain or explicitly specify the location w...
Primary service of the Player subsystem: Starting and controlling render/playback.
Controller perform(ModelPorts, Output)
Generic point-of-Service for starting playback.
Strategy to hold all the detail knowledge necessary to establish a running render CalculationStream...
Generic frame timing specification.
scoped guard to control the actual locking.
bool and_all(CON const &elements, FUN function, P1 &&bind1, ARGS &&...args)
Accept binding for arbitrary function arguments.
Steam-Layer implementation namespace root.
virtual Controller connect(ModelPorts, POutputManager)
Implementation: build a PlayProcess.
Public access point to the playback service provided by the »play-out subsystem«
Access point to singletons and other kinds of dependencies designated by type.
Playback/Render process within the Lumiera Player.
Interface to the Player subsystem of Lumiera (Steam-Layer).
static lib::Depend< Play > facade
get an implementation instance of this service
RenderConfigurator::ConnectFunction buildRenderConfiguration(POutputManager outputPossibilities, Timings playTimings)
Factory function to build a RenderConfigurator specifically tailored for a PlayProcess, about to be started.
Continuous playback process, which has been hooked up and started with a fixed set of output slots...
bool remove_if(SET &set, FUN test)
remove all elements fulfilling a given predicate from a (sorted) set.
Lumiera error handling (C++ interface).
A global service to handle all external output connections.
Handle & activate(IMP *impl, DEL whenDead)
Activation of the handle by the managing service.
Lumiera public interface.
static PlayProcess * initiate(ModelPorts dataGenerators, FeedBuilder)
Factory: Initialise and configure a new PlayProcess.
Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relati...
Perform operations "for each element" of a collection.
Organisational unit of an ongoing render- or playback process.
static const FrameRate PAL
predefined constant for PAL framerate
#define LUMIERA_ERROR_DEFINE(err, msg)
Definition and initialisation of an error constant.