BufferProvider: now able to relocate OutputSlot into Vault Layer
The old implementation of `DiagnosticOutputSlot` is now disabled and will be re-written from scratch, and no longer tangled to `BufferProvider` - `OutputManager` remains in Steam-Layer for now - the `Timings` and `OutputSlot` are now a self-contained
This commit is contained in:
parent
4fa18cf1d2
commit
259d0a5728
28 changed files with 267 additions and 161 deletions
|
|
@ -37,8 +37,7 @@
|
|||
|
||||
|
||||
#include "lib/error.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "steam/engine/render-drive.hpp"
|
||||
//#include "include/dummy-player-facade.h"
|
||||
//#include "include/display-facade.h"
|
||||
|
|
@ -98,7 +97,7 @@ namespace engine{
|
|||
|
||||
|
||||
void
|
||||
sendToOutput (play::DataSink)
|
||||
sendToOutput (vault::out::DataSink)
|
||||
{
|
||||
UNIMPLEMENTED ("set up dispatcher to start calculating and feeding to the given output sink");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@
|
|||
#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/engine/job-ticket.hpp"
|
||||
#include "steam/engine/job-planning.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/iter-explorer.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
|
|
@ -47,8 +47,8 @@ namespace engine {
|
|||
using std::move;
|
||||
using std::make_pair;
|
||||
using mobject::ModelPort;
|
||||
using play::Timings;
|
||||
using play::DataSink;
|
||||
using vault::out::Timings;
|
||||
using vault::out::DataSink;
|
||||
using lib::time::TimeValue;
|
||||
using lib::time::TimeSpan;
|
||||
using lib::time::FrameCnt;
|
||||
|
|
@ -264,7 +264,7 @@ namespace engine {
|
|||
* wire in the DataSink...)
|
||||
*/
|
||||
auto
|
||||
feedTo (play::DataSink& sink)
|
||||
feedTo (DataSink& sink)
|
||||
{
|
||||
return terminatePipeline (
|
||||
SRC::transform(
|
||||
|
|
|
|||
|
|
@ -30,13 +30,14 @@
|
|||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "steam/engine/engine-service.hpp"
|
||||
//#include "include/dummy-player-facade.h"
|
||||
//#include "include/display-facade.h"
|
||||
//#include "steam/engine/calc-stream.hpp"
|
||||
//#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
//#include "steam/play/output-slot.hpp"
|
||||
//#include "vault/out/timings.hpp"
|
||||
//#include "vault/out/output-slot.hpp"
|
||||
//#include "vessel/instancehandle.hpp"
|
||||
//#include "lib/singleton-ref.hpp"
|
||||
//#include "lib/polymorphic-value.hpp"
|
||||
|
|
@ -52,7 +53,7 @@ namespace engine{
|
|||
// using vessel::Subsys;
|
||||
// using vessel::Display;
|
||||
// using vessel::DummyPlayer;
|
||||
using steam::play::Timings;
|
||||
using vault::out::Timings;
|
||||
|
||||
|
||||
|
||||
|
|
@ -101,6 +102,5 @@ namespace engine{
|
|||
|
||||
|
||||
|
||||
} // namespace engine
|
||||
} // namespace steam
|
||||
}}// namespace steam::engine
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -22,23 +22,20 @@
|
|||
#include "steam/engine/render-environment.hpp"
|
||||
#include "lib/itertools.hpp"
|
||||
|
||||
//#include <string>
|
||||
//#include <memory>
|
||||
#include <functional>
|
||||
|
||||
|
||||
using std::ref;
|
||||
using std::bind;
|
||||
using std::function;
|
||||
using std::placeholders::_1;
|
||||
using lib::iter_source::transform;
|
||||
using lib::append_all;
|
||||
using vault::out::DataSink;
|
||||
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
|
||||
// using std::string;
|
||||
// using vessel::Subsys;
|
||||
using std::ref;
|
||||
using std::bind;
|
||||
using std::function;
|
||||
using std::placeholders::_1;
|
||||
using lib::iter_source::transform;
|
||||
using lib::append_all;
|
||||
|
||||
|
||||
namespace { // hidden local details of the service implementation....
|
||||
|
|
@ -76,7 +73,7 @@ namespace engine{
|
|||
Quality serviceQuality)
|
||||
{ //////////////////////////////////////////////////TICKET #1301 : prepare proper Dispatcher here, including translation ModelPort -> portIDX
|
||||
RenderEnvironment& renderConfig = configureCalculation (mPort,nominalTimings,serviceQuality);
|
||||
function<CalcStream(play::DataSink)> triggerRenderStart = bind (activateCalculation, _1, ref(renderConfig));
|
||||
function<CalcStream(DataSink)> triggerRenderStart = bind (activateCalculation, _1, ref(renderConfig));
|
||||
|
||||
CalcStreams runningCalculations;
|
||||
append_all (transform (output.getOpenedSinks()
|
||||
|
|
@ -84,10 +81,10 @@ namespace engine{
|
|||
)
|
||||
,runningCalculations);
|
||||
return runningCalculations;
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////TICKET #874 : use a pipeline builder to write it as follows:
|
||||
// treat_all(output.getOpenedSinks())
|
||||
// .apply (activateCalculation, _1, renderConfig)
|
||||
// .buildVector();
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////TICKET #874 : use our pipeline builder (lib::IterSource) to write it as follows:
|
||||
// lib::explore(output.getOpenedSinks())
|
||||
// .transform ([this,&renderConfig](DataSink sink){ return activateCalculation(sink, renderConfig); })
|
||||
// .effuse();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -109,7 +106,7 @@ namespace engine{
|
|||
* to be re-configured and adjusted while running.
|
||||
*/
|
||||
CalcStream
|
||||
EngineService::activateCalculation (play::DataSink sink, RenderEnvironment& engineCallback)
|
||||
EngineService::activateCalculation (DataSink sink, RenderEnvironment& engineCallback)
|
||||
{
|
||||
CalcStream calcStream(engineCallback);
|
||||
calcStream.sendToOutput (sink); ////////////////////////////////////////////////////TICKET #1297 : need to re-think the association ModelPort ⟷ output sink
|
||||
|
|
|
|||
|
|
@ -49,10 +49,10 @@
|
|||
#include "lib/nocopy.hpp"
|
||||
//#include "include/dummy-player-facade.h"
|
||||
//#include "include/display-facade.h"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "steam/engine/calc-stream.hpp"
|
||||
#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
//#include "vessel/instancehandle.hpp"
|
||||
//#include "lib/singleton-ref.hpp"
|
||||
#include "lib/polymorphic-value.hpp"
|
||||
|
|
@ -71,9 +71,9 @@ namespace engine{
|
|||
// using vessel::DummyPlayer;
|
||||
// using std::function;
|
||||
using mobject::ModelPort;
|
||||
using steam::play::Timings;
|
||||
using vault::out::Timings;
|
||||
|
||||
using OutputConnection = steam::play::OutputSlot::Allocation;
|
||||
using OutputConnection = vault::out::OutputSlot::Allocation;
|
||||
|
||||
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ namespace engine{
|
|||
friend class EngineDiagnostics;
|
||||
|
||||
private:
|
||||
static CalcStream activateCalculation (play::DataSink, RenderEnvironment&);
|
||||
static CalcStream activateCalculation (vault::out::DataSink, RenderEnvironment&);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@
|
|||
#include "steam/common.hpp"
|
||||
#include "vault/gear/job.h"
|
||||
#include "steam/engine/job-ticket.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
#include "lib/itertools.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
|
|
@ -74,11 +74,11 @@ namespace engine {
|
|||
|
||||
namespace error = lumiera::error;
|
||||
|
||||
using play::DataSink;
|
||||
using play::Timings;
|
||||
using lib::time::Time;
|
||||
using lib::time::TimeVar;
|
||||
using lib::time::Duration;
|
||||
using vault::out::DataSink;
|
||||
using vault::out::Timings;
|
||||
using vault::gear::Job;
|
||||
|
||||
|
||||
|
|
@ -139,11 +139,11 @@ namespace engine {
|
|||
{
|
||||
switch (timings.playbackUrgency)
|
||||
{
|
||||
case play::ASAP:
|
||||
case play::NICE:
|
||||
case vault::out::ASAP:
|
||||
case vault::out::NICE:
|
||||
return Time::ANYTIME;
|
||||
|
||||
case play::TIMEBOUND:
|
||||
case vault::out::TIMEBOUND:
|
||||
return doCalcDeadline (timings);
|
||||
}
|
||||
NOTREACHED ("unexpected playbackUrgency");
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
#include "steam/common.hpp"
|
||||
#include "steam/engine/render-environment.hpp"
|
||||
#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "vault/gear/job.h"
|
||||
//#include "lib/nocopy.hpp"
|
||||
|
||||
|
|
@ -42,9 +42,10 @@ namespace steam {
|
|||
namespace engine {
|
||||
|
||||
// using std::function;
|
||||
using mobject::ModelPort;
|
||||
using vault::gear::JobParameter;
|
||||
using vault::gear::JobClosure;
|
||||
using mobject::ModelPort;
|
||||
using vault::out::Timings;
|
||||
// using lib::time::TimeSpan;
|
||||
// using lib::time::FSecs;
|
||||
// using lib::time::Time;
|
||||
|
|
@ -98,7 +99,7 @@ namespace engine {
|
|||
{ }
|
||||
|
||||
|
||||
play::Timings const&
|
||||
Timings const&
|
||||
getTimings() const
|
||||
{
|
||||
return engine_.effectiveTimings();
|
||||
|
|
|
|||
|
|
@ -31,13 +31,15 @@
|
|||
|
||||
#include "steam/common.hpp"
|
||||
#include "steam/engine/dispatcher.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
//#include "lib/nocopy.hpp"
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
|
||||
using vault::out::Timings;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -54,8 +56,8 @@ namespace engine{
|
|||
public:
|
||||
virtual ~RenderEnvironment() { } ///< this is an interface
|
||||
|
||||
virtual play::Timings& effectiveTimings() =0;
|
||||
virtual Dispatcher& getDispatcher() =0;
|
||||
virtual Timings& effectiveTimings() =0;
|
||||
virtual Dispatcher& getDispatcher() =0;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@
|
|||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "steam/mobject/model-port.hpp"
|
||||
|
||||
//#include <string>
|
||||
|
|
@ -42,6 +43,12 @@ namespace play {
|
|||
|
||||
//using std::string;
|
||||
//using std::vector;
|
||||
using vault::out::PlaybackUrgency;
|
||||
using vault::out::TIMEBOUND;
|
||||
using vault::out::NICE;
|
||||
using vault::out::ASAP;
|
||||
using vault::out::Timings;
|
||||
using vault::out::OutputSlot;
|
||||
using std::shared_ptr;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -36,8 +36,9 @@
|
|||
#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/play/play-process.hpp"
|
||||
#include "steam/engine/calc-stream.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "steam/play/output-manager.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
//#include "lib/iter-source.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
|
|
@ -52,6 +53,8 @@ namespace play {
|
|||
// using std::string;
|
||||
// using util::isnil;
|
||||
using std::function;
|
||||
using vault::out::Timings;
|
||||
using vault::out::OutputSlot;
|
||||
using steam::mobject::ModelPort;
|
||||
|
||||
// typedef steam::play::POutputManager POutputManager;
|
||||
|
|
|
|||
|
|
@ -18,15 +18,15 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifndef STEAM_PLAY_DIAGNOSTIC_OUTPUT_SLOT_H
|
||||
#define STEAM_PLAY_DIAGNOSTIC_OUTPUT_SLOT_H
|
||||
#ifndef VAULT_OUT_DIAGNOSTIC_OUTPUT_SLOT_H
|
||||
#define VAULT_OUT_DIAGNOSTIC_OUTPUT_SLOT_H
|
||||
|
||||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
#include "include/logging.h"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "steam/play/output-slot-connection.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/out/output-slot-connection.hpp"
|
||||
#include "vault/mem/buffhandle.hpp"
|
||||
#include "vault/mem/naive-buffer-setup.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
|
|
@ -45,8 +45,8 @@
|
|||
#include <memory>
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault {
|
||||
namespace out {
|
||||
namespace err = lumiera::error;
|
||||
|
||||
using lib::Symbol;
|
||||
|
|
@ -544,5 +544,5 @@ namespace play {
|
|||
|
||||
|
||||
|
||||
}} // namespace steam::play
|
||||
#endif
|
||||
}} // namespace vault::out
|
||||
#endif /*VAULT_OUT_DIAGNOSTIC_OUTPUT_SLOT_H*/
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
OUTPUT-SLOT-CONNECTION.hpp - implementation API for concrete output slots
|
||||
|
||||
Copyright (C)
|
||||
2011, Hermann Vosseler <Ichthyostega@web.de>
|
||||
2011,2026 Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
**Lumiera** is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
|
|
@ -26,13 +26,13 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifndef STEAM_PLAY_OUTPUT_SLOT_CONNECTION_H
|
||||
#define STEAM_PLAY_OUTPUT_SLOT_CONNECTION_H
|
||||
#ifndef VAULT_OUT_OUTPUT_SLOT_CONNECTION_H
|
||||
#define VAULT_OUT_OUTPUT_SLOT_CONNECTION_H
|
||||
|
||||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/mem/buffhandle.hpp"
|
||||
#include "lib/scoped-collection.hpp"
|
||||
#include "lib/iter-adapter-stl.hpp"
|
||||
|
|
@ -49,8 +49,8 @@
|
|||
//#include <memory>
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault {
|
||||
namespace out {
|
||||
|
||||
using vault::mem::BuffHandle;
|
||||
//using vault::mem::BufferProvider;
|
||||
|
|
@ -239,5 +239,5 @@ namespace play {
|
|||
|
||||
|
||||
|
||||
}} // namespace steam::play
|
||||
#endif
|
||||
}} // namespace vault::out
|
||||
#endif /*VAULT_OUT_OUTPUT_SLOT_CONNECTION_H*/
|
||||
|
|
@ -18,18 +18,18 @@
|
|||
|
||||
|
||||
#include "lib/error.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "steam/play/output-slot-connection.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/out/output-slot-connection.hpp"
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault {
|
||||
namespace out {
|
||||
namespace err = lumiera::error;
|
||||
|
||||
using std::vector;
|
||||
|
||||
namespace error = lumiera::error;
|
||||
|
||||
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ namespace play {
|
|||
OutputSlot::allocate()
|
||||
{
|
||||
if (not isFree())
|
||||
throw error::Logic ("Attempt to open/allocate an OutputSlot already in use.");
|
||||
throw err::Logic ("Attempt to open/allocate an OutputSlot already in use.");
|
||||
|
||||
state_.reset (this->buildState());
|
||||
return *state_;
|
||||
|
|
@ -111,4 +111,4 @@ namespace play {
|
|||
|
||||
|
||||
|
||||
}} // namespace steam::play
|
||||
}} // namespace vault::out
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
OUTPUT-SLOT.hpp - capability to transfer data to a physical output
|
||||
|
||||
Copyright (C)
|
||||
2011, Hermann Vosseler <Ichthyostega@web.de>
|
||||
2011,2026 Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
**Lumiera** is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
|
|
@ -53,23 +53,23 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifndef STEAM_PLAY_OUTPUT_SLOT_H
|
||||
#define STEAM_PLAY_OUTPUT_SLOT_H
|
||||
#ifndef VAULT_OUT_OUTPUT_SLOT_H
|
||||
#define VAULT_OUT_OUTPUT_SLOT_H
|
||||
|
||||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/handle.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
#include "vault/mem/buffer-provider.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/iter-source.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
|
||||
#include <memory>
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault {
|
||||
namespace out {
|
||||
|
||||
using vault::mem::BuffHandle;
|
||||
using vault::mem::BufferProvider;
|
||||
|
|
@ -83,7 +83,7 @@ namespace play {
|
|||
|
||||
class DataSink;
|
||||
|
||||
typedef FrameCnt FrameID;
|
||||
using FrameID = FrameCnt;
|
||||
|
||||
|
||||
|
||||
|
|
@ -180,5 +180,5 @@ namespace play {
|
|||
|
||||
|
||||
|
||||
}} // namespace steam::play
|
||||
#endif
|
||||
}} // namespace vault::out
|
||||
#endif /*VAULT_OUT_OUTPUT_SLOT_H*/
|
||||
|
|
@ -21,14 +21,14 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/time/formats.hpp"
|
||||
#include "lib/time/timequant.hpp"
|
||||
#include "lib/rational.hpp"
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault {
|
||||
namespace out {
|
||||
|
||||
using lib::time::PQuant;
|
||||
using lib::time::Time;
|
||||
|
|
@ -219,4 +219,4 @@ namespace play {
|
|||
|
||||
|
||||
|
||||
}} // namespace steam::play
|
||||
}} // namespace vault::out
|
||||
|
|
@ -25,13 +25,16 @@
|
|||
** actual timing specs dictate the constraints for real time frame
|
||||
** delivery to an external output connection.
|
||||
**
|
||||
** @todo WIP-WIP-WIP 8/2011
|
||||
** @see output-slot.hpp ////TODO
|
||||
** @todo WIP-WIP-WIP 3/2026 although this class is around for many years now,
|
||||
** its actual meaning is still not well defined; sometimes it appears as a specification,
|
||||
** while at places it also plays the role of a constraint.
|
||||
** @see dispatcher.hpp
|
||||
** @see output-slot.hpp
|
||||
*/
|
||||
|
||||
|
||||
#ifndef STEAM_PLAY_TIMINGS_H
|
||||
#define STEAM_PLAY_TIMINGS_H
|
||||
#ifndef VAULT_OUT_TIMINGS_H
|
||||
#define VAULT_OUT_TIMINGS_H
|
||||
|
||||
|
||||
#include "lib/error.hpp"
|
||||
|
|
@ -52,8 +55,8 @@ namespace time{
|
|||
typedef std::shared_ptr<const Quantiser> PQuant;
|
||||
}}
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault {
|
||||
namespace out {
|
||||
|
||||
using lib::time::FrameCnt;
|
||||
using lib::time::FrameRate;
|
||||
|
|
@ -192,10 +195,10 @@ namespace play {
|
|||
inline bool
|
||||
Timings::isTimebound() const
|
||||
{
|
||||
return play::TIMEBOUND == playbackUrgency;
|
||||
return out::TIMEBOUND == playbackUrgency;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}} // namespace steam::play
|
||||
#endif
|
||||
}} // namespace vault::out
|
||||
#endif /*VAULT_OUT_TIMINGS_H*/
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#include "test/run.hpp"
|
||||
#include "steam/engine/mock-dispatcher.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
|
|
@ -31,10 +31,10 @@ namespace steam {
|
|||
namespace engine{
|
||||
namespace test {
|
||||
|
||||
using vault::out::Timings;
|
||||
using lib::time::FrameRate;
|
||||
using lib::time::Offset;
|
||||
using lib::time::Time;
|
||||
using play::Timings;
|
||||
|
||||
using asset::Pipe;
|
||||
using PID = asset::ID<Pipe>;
|
||||
|
|
|
|||
|
|
@ -19,13 +19,14 @@
|
|||
#include "test/run.hpp"
|
||||
#include "lib/error.hpp"
|
||||
|
||||
#include "steam/asset/pipe.hpp"
|
||||
#include "steam/engine/calc-stream.hpp"
|
||||
#include "steam/engine/engine-service.hpp"
|
||||
#include "steam/engine/engine-diagnostics.hpp"
|
||||
#include "steam/play/output-slot.hpp"
|
||||
#include "steam/play/diagnostic-output-slot.hpp"
|
||||
#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/asset/pipe.hpp"
|
||||
#include "vault/out/diagnostic-output-slot.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
|
||||
//#include <ctime>
|
||||
|
|
@ -41,8 +42,9 @@ namespace test {
|
|||
using asset::Pipe;
|
||||
using asset::PPipe;
|
||||
using mobject::ModelPort;
|
||||
using steam::play::OutputSlot;
|
||||
using steam::play::DiagnosticOutputSlot;
|
||||
using vault::out::OutputSlot;
|
||||
using vault::out::DiagnosticOutputSlot;
|
||||
using vault::out::Timings;
|
||||
using lib::time::FrameRate;
|
||||
|
||||
typedef asset::ID<Pipe> PID;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#include "test/run.hpp"
|
||||
#include "steam/engine/mock-dispatcher.hpp"
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
#include "lib/format-cout.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
|
@ -34,10 +34,10 @@ namespace steam {
|
|||
namespace engine{
|
||||
namespace test {
|
||||
|
||||
using vault::out::Timings;
|
||||
using lib::time::FrameRate;
|
||||
using lib::time::Offset;
|
||||
using lib::time::Time;
|
||||
using play::Timings;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@
|
|||
#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/engine/dispatcher.hpp"
|
||||
#include "steam/engine/job-ticket.hpp"
|
||||
#include "vault/out/output-slot.hpp"
|
||||
#include "vault/gear/job.h"
|
||||
#include "vault/real-clock.hpp"
|
||||
#include "lib/allocator-handle.hpp"
|
||||
|
|
@ -78,6 +79,7 @@ namespace test {
|
|||
using util::isnil;
|
||||
using util::isSameObject;
|
||||
using fixture::Segmentation;
|
||||
using vault::out::DataSink;
|
||||
using vault::RealClock;
|
||||
using vault::gear::Job;
|
||||
using vault::gear::JobClosure;
|
||||
|
|
@ -403,7 +405,7 @@ namespace test {
|
|||
/**
|
||||
* Test support: verify the given Job is consistent with this Dispatcher.
|
||||
*/
|
||||
bool verify(Job const& job, ModelPort const& port, play::DataSink const& sink)
|
||||
bool verify(Job const& job, ModelPort const& port, vault::out::DataSink const& sink)
|
||||
{
|
||||
if (not dummySetup_.isSupported (port, sink)) return false;
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
#include "steam/mobject/model-port.hpp"
|
||||
#include "steam/fixture/model-port-registry.hpp"
|
||||
#include "steam/play/output-slot-connection.hpp"
|
||||
#include "vault/out/output-slot-connection.hpp"
|
||||
#include "steam/play/output-manager.hpp"
|
||||
#include "steam/asset/timeline.hpp"
|
||||
#include "steam/asset/pipe.hpp"
|
||||
|
|
@ -58,15 +58,19 @@ namespace play {
|
|||
namespace test {
|
||||
|
||||
using fixture::ModelPortRegistry;
|
||||
using vault::mem::BuffHandle;
|
||||
using vault::out::DataSink;
|
||||
using vault::out::FrameID;
|
||||
using lib::time::TimeValue;
|
||||
|
||||
|
||||
/**
|
||||
* @todo 5/2023 quick-n-dirty placeholder to be able to fabricate fake DataSink handles (`Handle<Connection>`)
|
||||
*/
|
||||
class UnimplementedConnection
|
||||
: public play::OutputSlot::Connection
|
||||
: public vault::out::OutputSlot::Connection
|
||||
{
|
||||
BuffHandle claimBufferFor(FrameID) override { UNIMPLEMENTED ("claimBufferFor(FrameID)"); }
|
||||
BuffHandle claimBufferFor (FrameID) override;
|
||||
bool isTimely (FrameID, TimeValue) override { return true; }
|
||||
void transfer (BuffHandle &) override { UNIMPLEMENTED ("transfer (BuffHandle const&)"); }
|
||||
void pushout (BuffHandle &) override { UNIMPLEMENTED ("pushout (BuffHandle const&)"); }
|
||||
|
|
@ -94,7 +98,7 @@ namespace test {
|
|||
using TID = asset::ID<Struct>;
|
||||
|
||||
using ModelPorts = lib::IterSource<mobject::ModelPort>::iterator;
|
||||
using DummyOutputLink = std::pair<mobject::ModelPort, play::DataSink>;
|
||||
using DummyOutputLink = std::pair<mobject::ModelPort, DataSink>;
|
||||
|
||||
|
||||
inline PID
|
||||
|
|
@ -162,8 +166,8 @@ namespace test {
|
|||
modelPorts_.push_back (ModelPort(pipeB));
|
||||
|
||||
// prepare corresponding placeholder DataSink (a fake active output connection)
|
||||
dataSinks_.emplace_back().activate(std::make_shared<UnimplementedConnection>());
|
||||
dataSinks_.emplace_back().activate(std::make_shared<UnimplementedConnection>());
|
||||
dataSinks_.emplace_back().activate (std::make_shared<UnimplementedConnection>());
|
||||
dataSinks_.emplace_back().activate (std::make_shared<UnimplementedConnection>());
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -182,7 +186,11 @@ namespace test {
|
|||
};
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}}} // namespace steam::play::test
|
||||
|
||||
inline vault::mem::BuffHandle UnimplementedConnection::claimBufferFor (FrameID)
|
||||
{
|
||||
UNIMPLEMENTED ("claimBufferFor(FrameID)");
|
||||
}
|
||||
|
||||
}}} // namespace steam::play::test
|
||||
#endif /*STEAM_PLAY_DUMMY_BUILDER_CONTEXT_H*/
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#include "test/run.hpp"
|
||||
|
||||
#include "steam/play/diagnostic-output-slot.hpp"
|
||||
#include "vault/out/diagnostic-output-slot.hpp"
|
||||
#include "vault/mem/buffhandle.hpp"
|
||||
#include "test/test-frame.hpp"
|
||||
|
||||
|
|
@ -27,8 +27,8 @@ using test::TestFrame;
|
|||
using test::testData;
|
||||
using vault::mem::BuffHandle;
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault{
|
||||
namespace out {
|
||||
namespace test {
|
||||
|
||||
|
||||
|
|
@ -133,4 +133,4 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
}}} // namespace steam::play::test
|
||||
}}} // namespace vault::out::test
|
||||
|
|
@ -18,16 +18,16 @@
|
|||
|
||||
#include "test/run.hpp"
|
||||
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
//#include "steam/engine/buffhandle.hpp"
|
||||
//#include "steam/engine/testframe.hpp"
|
||||
//#include "lib/time/control.hpp"
|
||||
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace play {
|
||||
namespace vault {
|
||||
namespace out {
|
||||
namespace test {
|
||||
|
||||
using lib::time::Time;
|
||||
|
|
@ -71,4 +71,4 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
}}} // namespace steam::play::test
|
||||
}}} // namespace vault::out::test
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
#include "test/run.hpp"
|
||||
#include "test/test-helper.hpp"
|
||||
|
||||
#include "steam/play/timings.hpp"
|
||||
#include "vault/out/timings.hpp"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
//#include "lib/time/timequant.hpp"
|
||||
//#include "lib/format-cout.hpp"
|
||||
|
|
@ -37,8 +37,8 @@ using util::isnil;
|
|||
//using std::function;
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
namespace vault {
|
||||
namespace out {
|
||||
namespace test {
|
||||
|
||||
using lib::time::FSecs;
|
||||
|
|
@ -47,13 +47,12 @@ namespace test {
|
|||
using lib::time::Duration;
|
||||
using lib::time::Offset;
|
||||
using lib::time::Time;
|
||||
using play::Timings;
|
||||
|
||||
namespace { // Test fixture...
|
||||
|
||||
/* == test parameters == */
|
||||
|
||||
const uint START_FRAME(10);
|
||||
uint const START_FRAME (10);
|
||||
|
||||
|
||||
|
||||
|
|
@ -125,4 +124,4 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
}}} // namespace steam::engine::test
|
||||
}}} // namespace vault::out::test
|
||||
|
|
@ -5055,7 +5055,7 @@ While actually data frames are //pulled,// on a conceptual level data is assumed
|
|||
As both of these specifications are given by [[Pipe]]-~IDs, the actual designation information may be reduced. Much can be infered from the circumstances, because any pipe includes a StreamType, and an output designation for an incompatible stream type is irrelevant. (e.g. and audio output when the pipe currently in question deals with video)
|
||||
</pre>
|
||||
</div>
|
||||
<div title="OutputManagement" modifier="Ichthyostega" created="201007090155" modified="201501051334" tags="Model Rendering Player spec img draft" changecount="5">
|
||||
<div title="OutputManagement" modifier="Ichthyostega" created="201007090155" modified="202603102010" tags="Model Rendering Player spec img draft" changecount="6">
|
||||
<pre>//writing down some thoughts//
|
||||
|
||||
* ruled out the system outputs as OutputDesignation.
|
||||
|
|
@ -5065,11 +5065,14 @@ As both of these specifications are given by [[Pipe]]-~IDs, the actual designati
|
|||
* this introduces the notion of a ModelPort: //a point in the (high level) model where output can be produced//
|
||||
* thus obviously we need an OutputManager element to track the association of OutputDesignation to OutputSlot
|
||||
|
||||
Do we get a single [[Fixture]] &mdash; guess yes
|
||||
There is always a single [[Fixture]] -- which is the seam where the high-level model view meshes up with the rendering graph.
|
||||
This Fixture is regenerated or amended, whenever anything in the high-level view has changed. Each change //causes an Event// -- and the Fixture is one of the //projections// of this event (using the terminology from the //Event Sourcing// architecture). The key elements within the Fixture are the [[Model Ports|ModelPort]], because such a port is the only ting that //can be rendered:// it constitutes an ExitNode.
|
||||
|
||||
From the implementation side, the only interesting exit nodes are the ones to be //actually pulled,// i.e. those immeditately corresponding to the final output.
|
||||
* __rendering__ happens immediately at the output of a GlobalPipe (i.e. at a [[Timeline]], which is top-level)
|
||||
|
||||
From the implementation side, the only interesting [[designations|OutputDesignation]] are the ones to be //actually pulled,// i.e. the Model Ports and Exit nodes immediately corresponding to the final output.
|
||||
* __rendering__ happens directly at the output of a GlobalPipe (i.e. at a [[Timeline]], which is top-level)
|
||||
* __playback__ always happens at a viewer element
|
||||
This assessment might seem incomplete at first sight, because most media handling applications employ an implicit second layer of conversions to accommodate outputs. Not so Lumiera: no mapping or translation or media adaptation operation is performed outside of the Engine, ever. Not even the viewers in the GUI have the ability to //implicitly scale video.// When video is required in a different size for playback, the model is re-built and the necessary conversions are made within the engine, resulting in another ModelPort, that precisely matches what is required at the external interface. (An attentive reader might have noticed that this implies using the GPU. And indeed, the goal is that the Render Engine is generic to such a degree that it can //coordinate and orchestrate// various rendering technologies. {{red{However, the initial round of integration will cut some corners in this respect.}}})
|
||||
|
||||
!Attaching and mapping of exit nodes
|
||||
Initially, [[Output designations|OutputDesignation]] are typically just local or relative references to another OutputDesignation; yet after some resolution steps, we'll arrive at an OutputDesignation //defined absolute.// Basically, these are equivalent to a [[Pipe]]-ID choosen as target for the connection and -- they become //real//&nbsp; by some object //claiming to root this pipe.// The applicability of this pattern is figured out dynamically while building the render network, resulting in a collection of [[model ports|ModelPort]] as part of the current [[Fixture]]. A RenderProcess can be started to pull from these -- and only from these -- active exit points of the model. Besides, when the timeline enclosing these model ports is [[connected to a viewer|ViewConnection]], an [[output network|OutputNetwork]] //is built to allow hooking exit points to the viewer component.// Both cases encompass a mapping of exit nodes to actual output channels. Usually, this mapping just relies on relative addressing of the output sinks, starting to allocate connections with the //first of each kind// (e.g. "connect to the first usable audio output destination").
|
||||
|
|
@ -5092,9 +5095,12 @@ Within the model routing is done mostly just by referring to an OutputDesignatio
|
|||
|
||||
The relation between the central OutputDirector and the peripheral OutputManager implementations is hierarchical. Because output slots are usually registered rather at some peripheral output manager implementation, a direct mapping from OutputDesignation (i.e. global pipe) to these slots is created foremost at that peripheral level. Resolving a global pipe into an output slot is the core concern of any OutputManager implementation. Thus, when there is a locally preconfigured mapping, like e.g. for a viewer's video master pipe to the output slot installed by the corresponding GUI viewer element, then this mapping will be picked up foremost to resolve the video master output.
|
||||
|
||||
For a viewer widget in the GUI this yields exactly the expeted behaviour, but in other cases, e.g. for sound output, we need more general, more globally scoped output slots. In these cases, when a local mapping is absent, the query for output resolution is passed on up to the OutputDirector, drawing on the collection of globally available output slots for that specific kind of media.
|
||||
For a viewer widget in the GUI this yields exactly the expected behaviour, but in other cases, e.g. for sound output, we need more general, more globally scoped output slots. In these cases, when a local mapping is absent, the query for output resolution is passed on up to the OutputDirector, drawing on the collection of globally available output slots for that specific kind of media.
|
||||
{{red{open question 11/11: is it possible to retrieve a slot from another peripheral node?}}}
|
||||
|
||||
!!!channels
|
||||
It might seem bewildering that the discussion of output management thus far has not mentioned the ''channels'' within each media stream. In fact, the handling scheme explained here does not rely on this concept, to avoid confusion and ambiguity. Rather, the output handling relies on the concept of a ''media feed'': this is any stream that is connected distinctively and delivered separately, with dedicated [[Timings]]. Such a media feed may -- or may not, depending on circumstances -- carry several media channels. The typical example is the audio connection of a soundcard, that accepts a //single feed// with left and right audio channel interleaved. However, in a different setup, it might be required to produce a dedicated, separate feed at the interface for some multichannel setup; in such a case, the Engine will have to calculate several distinct feeds, and the delivered data format is also different (it is not interleaved).
|
||||
|
||||
!!!output modes
|
||||
Most output connections and drivers embody some kind of //operation mode:// Display is characterised by resolution and colour depth, sound by number of channels and sampling rate, amongst others. There might be a mismatch with the output expectations represented by [[output designations|OutputDesignation]] within the model. Nontheless we limit those actual operation modes strictly to the OutputManager realm. They should not leak out into the model within the session.
|
||||
In practice, this decision might turn out to be rather rigid, but some additional mechanisms allow for more flexibility
|
||||
|
|
|
|||
|
|
@ -110829,8 +110829,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1773106587628" ID="ID_14774780" MODIFIED="1773167973444" TEXT="Erweiterte Anforderung: Call-unwind">
|
||||
<linktarget COLOR="#ff1543" DESTINATION="ID_14774780" ENDARROW="Default" ENDINCLINATION="-1473;112;" ID="Arrow_ID_116123183" SOURCE="ID_1318788103" STARTARROW="None" STARTINCLINATION="-1264;77;"/>
|
||||
<linktarget COLOR="#ff1543" DESTINATION="ID_14774780" ENDARROW="Default" ENDINCLINATION="-1473;112;" ID="Arrow_ID_1204522057" SOURCE="ID_495439947" STARTARROW="None" STARTINCLINATION="1721;172;"/>
|
||||
<linktarget COLOR="#ff1543" DESTINATION="ID_14774780" ENDARROW="Default" ENDINCLINATION="-1473;112;" ID="Arrow_ID_116123183" SOURCE="ID_1318788103" STARTARROW="None" STARTINCLINATION="-1264;77;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1773106807352" ID="ID_694860370" MODIFIED="1773107285964" TEXT="Anforderung (3/2026) im Output-Management entdeckt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -114899,19 +114899,32 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<linktarget COLOR="#744d8b" DESTINATION="ID_1595544111" ENDARROW="Default" ENDINCLINATION="628;31;" ID="Arrow_ID_378933605" SOURCE="ID_27406270" STARTARROW="None" STARTINCLINATION="221;-288;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1771195835031" ID="ID_465237496" MODIFIED="1771195857844" TEXT="BufferProvider ⟶ in Vault umziehen">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#4c4398" CREATED="1771195835031" FOLDED="true" ID="ID_465237496" MODIFIED="1773180355277" TEXT="BufferProvider ⟶ in Vault umziehen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1771196048101" ID="ID_1022260808" MODIFIED="1771512711373" TEXT="TypeHandler kann auch dort hin"/>
|
||||
<node CREATED="1771196057238" ID="ID_1561084245" MODIFIED="1771196061567" TEXT="LocalTag ebenfalls"/>
|
||||
<node CREATED="1771196092641" ID="ID_1744271206" MODIFIED="1771196101419" TEXT="selbst BufferMetadata wäre denkbar">
|
||||
<node COLOR="#435e98" CREATED="1771196048101" ID="ID_1022260808" MODIFIED="1773180328904" TEXT="TypeHandler kann auch dort hin"/>
|
||||
<node COLOR="#435e98" CREATED="1771196057238" ID="ID_1561084245" MODIFIED="1773180328904" TEXT="LocalTag ebenfalls"/>
|
||||
<node COLOR="#2b2153" CREATED="1771196092641" ID="ID_1744271206" MODIFIED="1773180321543" TEXT="selbst BufferMetadata wäre denkbar">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1771196102899" ID="ID_840400814" MODIFIED="1772209237864" TEXT="es hängt nur an dem Typ Buffer (opaque marker)">
|
||||
<linktarget COLOR="#3e92dd" DESTINATION="ID_840400814" ENDARROW="Default" ENDINCLINATION="-13;-19;" ID="Arrow_ID_625861293" SOURCE="ID_691064493" STARTARROW="None" STARTINCLINATION="-106;4;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1771196377439" ID="ID_505136785" MODIFIED="1772208992889" TEXT="die Idee gefält mir immer besser....">
|
||||
<node BACKGROUND_COLOR="#eccc8b" COLOR="#690f14" CREATED="1771196377439" ID="ID_505136785" MODIFIED="1773180264577" TEXT="die Idee gefält mir immer besser....">
|
||||
<linktarget COLOR="#2016a3" DESTINATION="ID_505136785" ENDARROW="Default" ENDINCLINATION="-51;243;" ID="Arrow_ID_407734805" SOURCE="ID_1008519841" STARTARROW="None" STARTINCLINATION="-315;21;"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
<node CREATED="1772213174695" ID="ID_862271536" MODIFIED="1772213186169" TEXT="dann sollte auch OutputSlot mit umziehen">
|
||||
<node CREATED="1772213338241" ID="ID_769676942" MODIFIED="1772213350387" TEXT="Vorsicht: hängt am asset::TimeGrid"/>
|
||||
<node COLOR="#5b280f" CREATED="1772213338241" ID="ID_769676942" MODIFIED="1773180205184" TEXT="Vorsicht: hängt am asset::TimeGrid">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node COLOR="#5c3f62" CREATED="1773180207141" ID="ID_63185070" MODIFIED="1773180238535">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das Konzept der Meta-Assets ist <i>unausgegoren....</i>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1772213187533" ID="ID_899353853" MODIFIED="1772213226834" TEXT="wohingegen der OutputManager in Steam bleiben muß">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -114925,13 +114938,13 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1772213416430" ID="ID_635296620" MODIFIED="1772213425228" TEXT="aber Vorsicht!">
|
||||
<node BACKGROUND_COLOR="#ede19d" COLOR="#5b01a5" CREATED="1772213416430" ID="ID_635296620" MODIFIED="1773180195880" TEXT="aber Vorsicht!">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1772213431584" ID="ID_419696826" MODIFIED="1772213447278" TEXT="die OutputSlot-Implementierung braucht ein TimeGrid">
|
||||
<node CREATED="1772213431584" FOLDED="true" ID="ID_419696826" MODIFIED="1773180307624" TEXT="die OutputSlot-Implementierung braucht ein TimeGrid">
|
||||
<node CREATED="1772213804758" ID="ID_796255111" MODIFIED="1772213812037" TEXT="und das ist ein Asset"/>
|
||||
<node CREATED="1772213813143" ID="ID_73389338" MODIFIED="1772213830590" TEXT="vmtl bekommen auch die Timings noch Bezüge zum Player"/>
|
||||
</node>
|
||||
<node CREATED="1772213449627" ID="ID_359458461" MODIFIED="1772213462180" TEXT="und BufferProvider testet man mit TestFrame">
|
||||
<node CREATED="1772213449627" FOLDED="true" ID="ID_359458461" MODIFIED="1773180308881" TEXT="und BufferProvider testet man mit TestFrame">
|
||||
<node CREATED="1772213557833" ID="ID_869716070" MODIFIED="1772213573373" TEXT="oft in Kombination mit test-rand-ontology"/>
|
||||
<node CREATED="1772213579026" ID="ID_1443102065" MODIFIED="1772213601057" TEXT="rein bezüglich der Abhängigkeiten könnten die in Vault umziehen"/>
|
||||
<node CREATED="1772213602389" ID="ID_448460336" MODIFIED="1772213610880" TEXT="aber inhaltlich erscheint das nicht korrekt">
|
||||
|
|
@ -114946,10 +114959,21 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1772213697113" ID="ID_230462051" MODIFIED="1772213735286" TEXT="auch werden externe Libraries sicher Bezüge zum Builder bekommen"/>
|
||||
<node CREATED="1773180093852" ID="ID_127088134" MODIFIED="1773180181058" TEXT="⟹ die gemeinsam genutzten Abstraktionen sind das Problem">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...es gibt nun also Abstraktionen, die zwar <i>inhaltlich</i> auf Ebene der Modellierung liegen (also in »Steam«), zugleich aber als Bindemittel dienen, um die Zusammenarbeit in der Applikation zu ermöglichen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1772229938158" ID="ID_1979660164" MODIFIED="1772240083747" TEXT="Diskussion">
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1772229938158" FOLDED="true" ID="ID_1979660164" MODIFIED="1773180303114" TEXT="Diskussion">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1772229966112" ID="ID_1673093502" MODIFIED="1772229992176" TEXT="schwierige Lage — keine klare Präferenz erkennbar">
|
||||
<node CREATED="1772229994560" ID="ID_343060971" MODIFIED="1772230061783" TEXT="meine Argumente drehen sich im Kreis">
|
||||
|
|
@ -114962,7 +114986,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1772230076911" ID="ID_306145803" MODIFIED="1772230101480" TEXT="dahinter steht: die Aufteilung in Layer ist (bisher) spekulativ">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1772230076911" ID="ID_306145803" MODIFIED="1773180052272" TEXT="dahinter steht: die Aufteilung in Layer ist (bisher) spekulativ">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1772230104747" ID="ID_84428623" MODIFIED="1772230569903" TEXT="die Struktur ist anfangs aus »Convey's Law« entstanden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -115144,8 +115168,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1772239825077" ID="ID_1386677390" MODIFIED="1772240094386" TEXT="dadurch sind nun die Konflikte aufgelöst">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1772239825077" ID="ID_1386677390" MODIFIED="1773180045004" TEXT="dadurch sind nun die Konflikte aufgelöst">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1772239839483" ID="ID_1661215444" MODIFIED="1772239864658" TEXT="sofern eine Definition oder ein Interface zyklisch wird ⟶ wandert in die Applikation"/>
|
||||
<node CREATED="1772239867646" ID="ID_746993760" MODIFIED="1772239889464" TEXT="die Test-Rand-Ontology kann in »Vault« verlegt werden"/>
|
||||
<node CREATED="1772239908767" ID="ID_286828282" MODIFIED="1772240004740">
|
||||
|
|
@ -115168,8 +115192,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
<node CREATED="1772240015637" ID="ID_1048399889" MODIFIED="1772240053070" TEXT="BufferProvider, OutputSlot und Output-Management ziehen in die »Vault«"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1772477958773" ID="ID_1191642200" MODIFIED="1772477969130" TEXT="Ausführung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1772477958773" ID="ID_1191642200" MODIFIED="1773180016532" TEXT="Ausführung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1772477970489" ID="ID_945262676" MODIFIED="1772672410752" TEXT="Vorbereitungen...">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1772477978051" ID="ID_1145781733" MODIFIED="1772477987770" TEXT="»Vessel« dokumentieren"/>
|
||||
|
|
@ -115700,24 +115724,25 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1772478162244" ID="ID_1203250191" MODIFIED="1772478221803" TEXT="Komponenten in Vault verschieben">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1772478162244" FOLDED="true" ID="ID_1203250191" MODIFIED="1773180297561" TEXT="Komponenten in Vault verschieben">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1772922668009" ID="ID_1174526532" MODIFIED="1772927710703" TEXT="Voraussetzung ⟶ Test-support">
|
||||
<node CREATED="1772478205914" ID="ID_231056050" MODIFIED="1772922697240" TEXT="TestFrame"/>
|
||||
<node CREATED="1772478191761" ID="ID_1873337000" MODIFIED="1772922653281" TEXT="Test-Rand-Ontology"/>
|
||||
<node COLOR="#435e98" CREATED="1772478205914" ID="ID_231056050" MODIFIED="1773179790131" TEXT="TestFrame"/>
|
||||
<node COLOR="#435e98" CREATED="1772478191761" ID="ID_1873337000" MODIFIED="1773179790130" TEXT="Test-Rand-Ontology"/>
|
||||
</node>
|
||||
<node CREATED="1772478171837" ID="ID_1324850294" MODIFIED="1772478177785" TEXT="BufferProvider">
|
||||
<node CREATED="1772932920497" ID="ID_1982018302" MODIFIED="1772932925167" TEXT="BuffHandle">
|
||||
<node COLOR="#338800" CREATED="1772478171837" ID="ID_1324850294" MODIFIED="1773179774396" TEXT="BufferProvider">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1772932920497" ID="ID_1982018302" MODIFIED="1773179785140" TEXT="BuffHandle">
|
||||
<node CREATED="1772933023078" ID="ID_1575332683" MODIFIED="1772933030857" TEXT="Buffer-Marker aus StreamType extrahieren">
|
||||
<node CREATED="1772933032509" ID="ID_557325529" MODIFIED="1772933040779" TEXT="wird bisher nur an zwei Stellen verwendet"/>
|
||||
<node CREATED="1772933042211" ID="ID_383255164" MODIFIED="1772933072597" TEXT="kann man durch einen Type-Alias (in Stream-Type) propagieren"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1772932926562" ID="ID_1211889546" MODIFIED="1772932930209" TEXT="TypeHandler"/>
|
||||
<node CREATED="1772932931437" ID="ID_1951270901" MODIFIED="1772932936101" TEXT="BufferMetadata"/>
|
||||
<node COLOR="#435e98" CREATED="1772932926562" ID="ID_1211889546" MODIFIED="1773179785140" TEXT="TypeHandler"/>
|
||||
<node COLOR="#435e98" CREATED="1772932931437" ID="ID_1951270901" MODIFIED="1773179785139" TEXT="BufferMetadata"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1772478179206" ID="ID_1477396819" MODIFIED="1772933010916" TEXT="OutputSlot">
|
||||
<icon BUILTIN="help"/>
|
||||
<node COLOR="#338800" CREATED="1772478179206" ID="ID_1477396819" MODIFIED="1773179772427" TEXT="OutputSlot">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1773021243177" ID="ID_819469629" MODIFIED="1773021647136" TEXT="das »Entkernen« des DiagnosticOutputSlot ermöglicht Umzug nach »Vault«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -115732,9 +115757,61 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</html></richcontent>
|
||||
<linktarget COLOR="#fe4769" DESTINATION="ID_819469629" ENDARROW="Default" ENDINCLINATION="542;21;" ID="Arrow_ID_254929972" SOURCE="ID_686997096" STARTARROW="None" STARTINCLINATION="407;28;"/>
|
||||
</node>
|
||||
<node CREATED="1773173863618" ID="ID_750786737" MODIFIED="1773173894058">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
⟹ auch die <font face="Monospaced" color="#764c4c">Timings</font> müssen dorthin umziehen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node CREATED="1773173898661" ID="ID_1819934861" MODIFIED="1773173911300" TEXT="hier liegt möglicherweise ein verdecktes Problem"/>
|
||||
<node CREATED="1773173912994" ID="ID_1547092580" MODIFIED="1773174098896" TEXT="...denn »Grid« wurde in der Vergangenheit wie ein Asset behandelt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Genauer, <font color="#8f6c6c" face="Monospaced">steam::asset::</font><font color="#7d2c2c" face="Monospaced"><b>TimeGrid</b></font>, und hier gibt es einen <b>Diamond-of-Death</b>. Was auch immer das bedeuten mag — der Sinn des Interfaces MetaAsset ist (noch) nicht so wirklich klar, und auch der Unterschied zwischen time::Grid und time::Quantiser vermischt sich bisweilen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1772478185740" ID="ID_1860322406" MODIFIED="1772933014495" TEXT="OutputManagement">
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1773179799052" ID="ID_1204405773" MODIFIED="1773180006884" TEXT="Test-Hilfsmittel">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1773179808922" ID="ID_486146997" MODIFIED="1773179816632" TEXT="DiagnosticBufferProvider"/>
|
||||
<node CREATED="1773179817759" ID="ID_88881624" MODIFIED="1773179823402" TEXT="DiagnosticOutputSlot"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1773179825677" ID="ID_1537673865" MODIFIED="1773179842831" TEXT="Linkage: müssen in der Applikation bleiben">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1773179846906" ID="ID_1928945020" MODIFIED="1773180003495" TEXT="denn sie werden auch außerhalb des Paktes / Namespaces verwendet">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Konkret müssen z.B. Tests aus /tests/steam/engine gegen den diagnostic-buffer-provider.cpp gelinkt sein; mit dem neuen Layout ist das leider nur möglich, wenn diagnostic-buffer-provider.cpp in liblumieravault.so liegt, aber nicht in libtest-vault.so
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1773179872468" ID="ID_1842088947" MODIFIED="1773179902874" TEXT="Tests sind jetzt in einzelnen Paketen isoliert">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1772478185740" ID="ID_1860322406" MODIFIED="1773173569658" TEXT="OutputManagement">
|
||||
<icon BUILTIN="help"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node COLOR="#5b280f" CREATED="1773173571592" ID="ID_1918504828" MODIFIED="1773173585956" TEXT="definitiv nicht!">
|
||||
<icon BUILTIN="closed"/>
|
||||
</node>
|
||||
<node CREATED="1773173587829" ID="ID_1151035771" MODIFIED="1773173601686" TEXT="das gehört auf die »Vessel«-Ebene">
|
||||
<node CREATED="1773173615026" ID="ID_962160432" MODIFIED="1773173630388" TEXT="es ist ein Framework welches Zusammenarbeit koordiniert"/>
|
||||
<node CREATED="1773173631711" ID="ID_861307307" MODIFIED="1773173648529" TEXT="möglicherweise müssen wir auch ModelPort auf diese Ebene ziehen"/>
|
||||
<node CREATED="1773173662155" ID="ID_1834508419" MODIFIED="1773173687730" TEXT="einzelne Bausteine könnten in Vault liegen, z.B. eine Slot-Registry"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -117330,8 +117407,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node CREATED="1771532730104" ID="ID_874519449" MODIFIED="1771532748289" TEXT="im bestehenden Code lief der Test (mit einer Dummy-Implementierung)"/>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1771532716678" ID="ID_459952316" MODIFIED="1773076794402" TEXT="dieser Test ist nun gebrochen">
|
||||
<linktarget COLOR="#fe1909" DESTINATION="ID_459952316" ENDARROW="Default" ENDINCLINATION="75;-1691;" ID="Arrow_ID_176448794" SOURCE="ID_158180438" STARTARROW="None" STARTINCLINATION="-554;79;"/>
|
||||
<linktarget COLOR="#f90134" DESTINATION="ID_459952316" ENDARROW="Default" ENDINCLINATION="-843;75;" ID="Arrow_ID_1183488081" SOURCE="ID_690666245" STARTARROW="None" STARTINCLINATION="345;27;"/>
|
||||
<linktarget COLOR="#b22cbe" DESTINATION="ID_459952316" ENDARROW="Default" ENDINCLINATION="-137;3;" ID="Arrow_ID_168875434" SOURCE="ID_1722330743" STARTARROW="Default" STARTINCLINATION="-9;-63;"/>
|
||||
<linktarget COLOR="#f90134" DESTINATION="ID_459952316" ENDARROW="Default" ENDINCLINATION="-843;75;" ID="Arrow_ID_1183488081" SOURCE="ID_690666245" STARTARROW="None" STARTINCLINATION="345;27;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue