Invocation: Reassessment of existing code

...which seems to be basically fine thus far
...beyond some renaming and rearranging

''it turns out that the final, crucial links,
necessary to tie all together, are yet to be developed''
This commit is contained in:
Fischlurch 2024-05-05 15:12:23 +02:00
parent a11ee34fc8
commit bb3d565436
11 changed files with 659 additions and 40 deletions

View file

@ -55,8 +55,8 @@
#define ENGINE_NODEINVOCATION_H
#include "steam/state.hpp"
#include "steam/engine/proc-node.hpp"
#include "steam/engine/state-closure.hpp"
#include "steam/engine/channel-descriptor.hpp"
#include "steam/engine/bufftable-obsolete.hpp"

View file

@ -57,8 +57,8 @@
#define ENGINE_NODEOPERATION_H
#include "steam/state.hpp"
#include "steam/engine/proc-node.hpp"
#include "steam/engine/state-closure.hpp"
#include "steam/engine/channel-descriptor.hpp"
#include "steam/engine/bufftable-obsolete.hpp"
#include "steam/engine/nodeinvocation.hpp"
@ -282,8 +282,8 @@ namespace config {
///////////////////////////: but BufferProvider selection is going to be solved differently anyway, see Ticket #249
template<class CONF>
struct SelectBuffProvider { typedef AllocBufferFromParent Type; };
template<uint STEAM_ign, uint INPLA_ign>
struct SelectBuffProvider< Config<CACHING, STEAM_ign, INPLA_ign>> { typedef AllocBufferFromCache Type; };
template<uint PROC_ign, uint INPLA_ign>
struct SelectBuffProvider< Config<CACHING, PROC_ign, INPLA_ign>> { typedef AllocBufferFromCache Type; };
template<class Config>

View file

@ -37,14 +37,14 @@
** @see operationpoint.hpp
*/
#ifndef ENGINE_PROCNODE_H
#define ENGINE_PROCNODE_H
#ifndef ENGINE_PROC_NODE_H
#define ENGINE_PROC_NODE_H
#include "lib/error.hpp"
#include "steam/common.hpp"
#include "steam/state.hpp"
#include "steam/asset/proc.hpp"
#include "steam/mobject/parameter.hpp"
#include "steam/engine/state-closure.hpp"
#include "steam/engine/channel-descriptor.hpp"
#include "lib/frameid.hpp"
#include "lib/ref-array.hpp"
@ -185,4 +185,4 @@ namespace engine {
}} // namespace steam::engine
#endif
#endif /*ENGINE_PROC_NODE_H*/

View file

@ -36,7 +36,7 @@
#define ENGINE_RENDER_INVOCATION_H
//#include "steam/state.hpp"
//#include "steam/engine/state-closure.hpp"
#include "steam/engine/proc-node.hpp"
#include "steam/engine/buffhandle.hpp"
//#include "steam/engine/bufftable-obsolete.hpp"

View file

@ -27,8 +27,8 @@
#include "steam/engine/rendergraph.hpp"
#include "steam/engine/state-closure.hpp"
#include "lib/frameid.hpp"
#include "steam/state.hpp"
namespace lumiera {

View file

@ -30,7 +30,7 @@
#define STEAM_ENGINE_RENDERGRAPH_H
#include "steam/common.hpp"
#include "steam/state.hpp"
#include "steam/engine/state-closure.hpp"
#include "lib/time/timevalue.hpp"

View file

@ -1,5 +1,5 @@
/*
STATE.hpp - Key Interface representing a render process and encapsulating state
STATE-CLOSURE.hpp - Key Interface representing a render process and encapsulating state
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
@ -21,13 +21,13 @@
*/
/** @file state.hpp
/** @file state-closure.hpp
** Access point to an ongoing render's processing state.
*/
#ifndef STEAM_INTERFACE_STATE_H
#define STEAM_INTERFACE_STATE_H
#ifndef STEAM_ENGINE_STATE_CLOSURE_H
#define STEAM_ENGINE_STATE_CLOSURE_H
#include "lib/error.hpp"
@ -125,4 +125,4 @@ namespace proc_interface {
} // namespace proc_interface
#endif
#endif /*STEAM_ENGINE_STATE_CLOSURE_H*/

View file

@ -37,7 +37,7 @@
#define ENGINE_STATEPROXY_H
#include "steam/state.hpp"
#include "steam/engine/state-closure.hpp"
namespace steam {

View file

@ -33,7 +33,7 @@
#ifndef MOBJECT_BUILDER_RENDERSTATE_H
#define MOBJECT_BUILDER_RENDERSTATE_H
#include "steam/state.hpp"
#include "steam/engine/state-closure.hpp"

View file

@ -5104,7 +5104,7 @@ Thus the mapping is a copyable value object, using an associative array. It may
First and foremost, mapping can be seen as a //functional abstraction.// As it's used at implementation level, encapsulation of detail types in't the primary concern, so it's a candidate for generic programming: For each of those use cases outlined above, a distinct mapping type is created by instantiating the {{{OutputMapping&lt;DEF&gt;}}} template with a specifically tailored definition context ({{{DEF}}}), which takes on the role of a strategy. Individual instances of this concrete mapping type may be default created and copied freely. This instantiation process includes picking up the concrete result type and building a functor object for resolving on the fly. Thus, in the way typical for generic programming, the more involved special details are moved out of sight, while being still in scope for the purpose of inlining. But there //is// a concern better to be encapsulated and concealed at the usage site, namely accessing the rules system. Thus mapping leads itself to the frequently used implementation pattern where there is a generic frontend as header, calling into opaque functions embedded within a separate compilation unit.
</pre>
</div>
<div title="OutputSlot" modifier="Ichthyostega" created="201106162339" modified="201202042235" tags="def Concepts Player spec img">
<div title="OutputSlot" modifier="Ichthyostega" created="201106162339" modified="202404290107" tags="def Concepts Player spec img" changecount="3">
<pre>Within the Lumiera player and output subsystem, actually sending data to an external output requires to allocate an ''output slot''
This is the central metaphor for the organisation of actual (system level) outputs; using this concept allows to separate and abstract the data calculation and the organisation of playback and rendering from the specifics of the actual output sink. Actual output possibilities (video in GUI window, video fullscreen, sound, Jack, rendering to file) can be added and removed dynamically from various components (Vault, Stage), all using the same resolution and mapping mechanisms (&amp;rarr; OutputManagement)
@ -5117,12 +5117,12 @@ In order to be usable as //output sink,// an output slot needs to be //allocated
Once allocated, the output slot returns a set of concrete ''sink handles'' (one for each physical channel expecting data). The calculating process feeds its results into those handles. Size and other characteristics of the data frames are assumed to be suitable, which typically won't be verified at that level anymore (but the sink handle provides a hook for assertions). Besides that, the allocation of an output slot reveals detailed ''timing expectations''. The client is required to comply to these [[timings|Timings]] when ''emitting'' data -- he's even required to provide a //current time specification,// alongside with the data. Based on this information, the output slot has the ability to handle timing failures gracefully; the concrete output slot implementation is expected to provide some kind of de-click or de-flicker facility, which kicks in automatically when a timing failure is detected.
!!!usage and implementation
Clients retrieve just a reference to an output slot by asking a suitable OutputManager for an output possibility supporting a specific format. Usually, they just &quot;claim&quot; this slot by invoking {{{allocate()}}}, which behind the scenes causes building of the actual output connections and mechanisms. For each such connection -- corresponding to a single channel within the media format handled by this ~OutputSlot -- the client gets a smart-handle {{{DataSink}}}. The concrete ~OutputSlot implementation performs operations quite specific to the kind of output and external interface in question. All tese specific handling is embodied within the concrete connection implementation used by the concrete ~OutputSlot
Clients retrieve a reference to an output slot by asking a suitable OutputManager for an output possibility supporting a specific format. Usually, they just &quot;claim&quot; this slot by invoking {{{allocate()}}}, which behind the scenes causes building of the actual output connections and mechanisms. For each such connection -- corresponding to a single channel within the media format handled by this ~OutputSlot -- the client gets a smart-handle {{{DataSink}}}. The concrete ~OutputSlot implementation performs operations quite specific to the kind of output and external interface in question -- thereby calling directly into a specific connection implementation.
!!!timing expectations
Besides the sink handles, allocation of an output slot defines some timing constraints, which are binding for the client. These [[Timings]] are detailed and explicit, including a grid of deadlines for each frame to deliver, plus a fixed //latency.// Within this context, &amp;raquo;latency&amp;laquo; means the requirement to be ahead of the nominal time by a certain amount, to compensate for the processing time necessary to propagate the media to the physical output pin. The output slot implementation itself is bound by external constraints to deliver data at a fixed framerate and aligned to an externally defined timing grid, plus the data needs to be handed over ahead of these time points by an time amount given by the latency. Depending on the data exchange model, there is an additional time window limiting the buffer management.
Besides the sink handles, allocation of an output slot defines some timing constraints, to which the client must comply. These [[Timings]] are detailed and explicit, including a grid of deadlines for each frame to deliver, plus a fixed //latency.// Within this context, &amp;raquo;latency&amp;laquo; means the requirement to be ahead of the nominal time by a certain amount, to compensate for the processing time necessary to propagate the media to the physical output pin. The output slot implementation itself is bound by external constraints to deliver data at a fixed framerate and aligned to an externally defined timing grid, plus the data needs to be handed over ahead of these time points by an time amount given by the latency. Depending on the data exchange model, there is an additional time window limiting the buffer management.
The assumption is for the client to have elaborate timing capabilities at his disposal. More specifically, the client is assumed to be a job running within the engine scheduler and thus can be configured to run //after// another job has finished, and to run within certain time limits. Thus the client is able to provide a //current nominal time// -- which is suitably close to the actual wall clock time. The output slot implementation can be written such as to work out from this time specification if the call is timely or overdue -- and react accordingly.
The assumption is for the client to have elaborate timing capabilities at his disposal. More specifically, the client is assumed to be a job running within the engine scheduler and thus can be configured to run //after// another job has finished, and to run within certain time limits. Thus the client is able to provide a //current nominal time// -- which is suitably close to the actual wall clock time. This enables the output slot implementation to work out from this time specification if the call is timely or overdue -- and react accordingly.
!!!output modes
some concrete output connections and drivers embody a specific operation mode (e.g. sample rate or number of channels). The decision and setup of these operational configuration is initiated together with the [[resolution|OutputMapping]] of an OutputDesignation within the OutputManager, finally leading to an output slot (reference), which can be assumed to be suitably configured, before the client allocates this slot for active use. Moreover, an individual output sink (corresponding to a single channel) may just remain unused -- until there is an {{{emit()}}} call and successful data handover, this channel will just feature silence or remain black. (More flexible system, e.g. Jack, allow to generate an arbitrary number of output pins -- Lumiera will support this by allowing to set up additional output slots and attach this information to the current session &amp;rarr; SessionConfigurationAttachment)
@ -8135,8 +8135,11 @@ Shutdown is initiated by sending a message to the dispatcher loop. This causes t
<div title="SplashScreen" modifier="just me" created="200706220430">
<pre>{{red{killme}}}</pre>
</div>
<div title="StateAdapter" modifier="Ichthyostega" created="200806261912" modified="201109151535" tags="Rendering impl def">
<pre>A small (in terms of storage) and specifically configured StateProxy object which is created on the stack {{red{Really on the stack? 9/11}}} for each individual {{{pull()}}} call. It is part of the invocation state of such a call and participates in the buffer management. Thus, in a calldown sequence of {{{pull()}}} calls we get a corresponding sequence of &quot;parent&quot; states. At each level, the &amp;rarr; WiringDescriptor of the respective node defines a Strategy how the call is passed on.</pre>
<div title="StateAdapter" modifier="Ichthyostega" created="200806261912" modified="202405062148" tags="Rendering impl def" changecount="2">
<pre>A small (in terms of storage) and specifically configured StateProxy object which is created on the stack {{red{Really on the stack? 9/11}}} for each individual {{{pull()}}} call. It is part of the invocation state of such a call and participates in the buffer management. Thus, in a calldown sequence of {{{pull()}}} calls we get a corresponding sequence of &quot;parent&quot; states. At each level, the &amp;rarr; WiringDescriptor of the respective node defines a Strategy how the call is passed on.
{{red{WIP 4/2024: the interface will be called {{{StateClosure}}} -- not sure to what degree there will be different implementations ...
right now about to work towards a first integration of render node invocation}}}</pre>
</div>
<div title="StateProxy" modifier="Ichthyostega" created="200706220352" modified="201107082334" tags="def">
<pre>An Object representing a //Render Process// and containing associated state information.
@ -11029,12 +11032,12 @@ These Viewer (or Monitor) elements play an enabling role for any output generati
When the GUI is outfitted, based on the current Session or HighLevelModel, it is expected to retrieve the viewer assets and for each of them, after installing the necessary widgetes, registers an OutputSlot with the global OutputManager.</pre>
</div>
<div title="ViewerPlayActivation" modifier="Ichthyostega" created="201007110305" modified="202303300119" tags="Model Player spec draft" changecount="2">
<div title="ViewerPlayActivation" modifier="Ichthyostega" created="201007110305" modified="202404290058" tags="Model Player spec draft" changecount="3">
<pre>for showing output, three entities are involved
* the [[Timeline]] holds the relevant part of the model, which gets rendered for playback
* by connecting to a viewer component (&amp;rarr; ViewConnection), an actual output target is established
* the playback process itself is coordinated by a PlayController, which in turn creates a PlayProcess
{{red{4/24 maybe better call this {{{ModelPlayActivation}}} ?}}}
!the viewer connection
A viewer element gets connected to a given timeline either by directly attaching it, or by //allocating an available free viewer.// Anyway, as a model element, the viewer is just like another set of global pipes chained up after the global pipes present in the timeline. Connecting a timeline to a viewer creates a ViewConnection, which is a special [[binding|BindingMO]]. The number and kind of pipes provided is a configurable property of the viewer element &amp;mdash; more specifically: the viewer's SwitchBoard. Thus, connecting a viewer activates the same internal logic employed when connecting a sequence into a timeline or meta-clip: a default channel association is established, which can be overridden persistently (&amp;rarr; OutputMapping). Each of the viewer's pipes in turn gets connected to a system output through an OutputSlot registered with the OutputManager &amp;mdash; again an output mapping step.

View file

@ -72000,7 +72000,34 @@
<node CREATED="1698869828965" ID="ID_762567944" MODIFIED="1698869841001" TEXT="Fehler und Abschlu&#xdf;"/>
</node>
</node>
<node CREATED="1512923672275" ID="ID_1369059082" MODIFIED="1557498707237" TEXT="Wiring"/>
<node CREATED="1512923672275" ID="ID_1369059082" MODIFIED="1714353145954" TEXT="Wiring / Instance / Lifecycle">
<node CREATED="1714353219059" ID="ID_393919124" MODIFIED="1714353228149" TEXT="Etablieren eines Play-Vorgangs">
<node CREATED="1714353242601" ID="ID_936569711" MODIFIED="1714353276504" TEXT="im Model: ViewConnection">
<node CREATED="1714353282044" ID="ID_1106415311" MODIFIED="1714353304173" TEXT="ist f&#xfc;r jeden Play/Rendervorgang notwendig"/>
<node CREATED="1714353305545" ID="ID_282836151" MODIFIED="1714353318986" TEXT="ist ein Deskriptor (kann mehrfach verwendet werden)"/>
<node CREATED="1714353320423" ID="ID_1345631035" MODIFIED="1714353344711" TEXT="verbleibt im Model; ist editierbar / l&#xf6;schbar"/>
<node CREATED="1714353381137" ID="ID_1374028753" MODIFIED="1714353389890" TEXT="hat eine auf Eigenschaften beruhende Identit&#xe4;t"/>
</node>
<node CREATED="1714353402660" ID="ID_1678317909" MODIFIED="1714353408719" TEXT="ViewerPlayActivation">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714352218154" ID="ID_951893185" MODIFIED="1714353767138" TEXT="Name? sollte vielleicht ModelViewActivation hei&#xdf;en?">
<linktarget COLOR="#a94d55" DESTINATION="ID_951893185" ENDARROW="Default" ENDINCLINATION="925;51;" ID="Arrow_ID_1328659333" SOURCE="ID_562966685" STARTARROW="None" STARTINCLINATION="-8;-157;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714353727498" ID="ID_702598996" MODIFIED="1714353746344" TEXT="stellt den Zustands-Anker dar">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1714353754021" ID="ID_256473306" MODIFIED="1714353760998" TEXT="Allokation / ownership">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714353789393" ID="ID_128046675" MODIFIED="1714353802711" TEXT="Play-Stop &#x27f6; discard">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714353809686" ID="ID_703566091" MODIFIED="1714353857770" TEXT="verkn&#xfc;pft Play-Process und ModelPort(s)">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node CREATED="1512923682530" ID="ID_1204903801" MODIFIED="1557498707237" TEXT="Planning">
<node CREATED="1512925214070" ID="ID_491842947" MODIFIED="1557498707237" TEXT="1.Entwurf">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1512925217693" ID="ID_704714253" MODIFIED="1681837087287" TEXT="war seit 2012 steckengeblieben...">
@ -78325,9 +78352,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684984505425" ID="ID_92268538" MODIFIED="1684984529415" TEXT="Job-Erzeugung festlegen">
<linktarget COLOR="#4d3a6e" DESTINATION="ID_92268538" ENDARROW="Default" ENDINCLINATION="184;0;" ID="Arrow_ID_1841184971" SOURCE="ID_1332543018" STARTARROW="None" STARTINCLINATION="146;7;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684984549427" HGAP="40" ID="ID_206055852" MODIFIED="1684984923938" TEXT="zu repr&#xe4;sentierende Daten" VSHIFT="20">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684984549427" HGAP="40" ID="ID_206055852" MODIFIED="1714580830099" TEXT="zu repr&#xe4;sentierende Daten" VSHIFT="20">
<linktarget COLOR="#3e5caa" DESTINATION="ID_206055852" ENDARROW="Default" ENDINCLINATION="-901;1952;" ID="Arrow_ID_1954815494" SOURCE="ID_1478713442" STARTARROW="None" STARTINCLINATION="-330;-93;"/>
<icon BUILTIN="info"/>
<node CREATED="1685050891692" ID="ID_726774749" MODIFIED="1685050895237" TEXT="FrameCoord">
<node COLOR="#5b280f" CREATED="1685050891692" HGAP="16" ID="ID_726774749" MODIFIED="1714778559141" TEXT="FrameCoord" VSHIFT="30">
<icon BUILTIN="button_cancel"/>
<node CREATED="1685052033040" MODIFIED="1685052033040" TEXT="TimeVar absoluteNominalTime;"/>
<node CREATED="1685052033041" MODIFIED="1685052033041" TEXT="FrameCnt absoluteFrameNumber;"/>
<node COLOR="#5b280f" CREATED="1685052033041" ID="ID_414066208" MODIFIED="1686841366213" TEXT="TimeVar absoluteRealDeadline;">
@ -78335,10 +78364,53 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1685052033041" ID="ID_784744470" MODIFIED="1686841193971" TEXT="size_t modelPortIDX"/>
<node COLOR="#5b280f" CREATED="1714776117476" ID="ID_1760360578" MODIFIED="1714776306337" TEXT="FrameCoord waren eine Sackgasse &#x2014; sie haben keine Dom&#xe4;ne">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Das war ein <i>theoretisches Konstrukt, </i>das auf den ersten Blick (auf einer abstrakten Ebene) unglaublich plausibel erscheint; tats&#228;chlich gibt es aber nirgends eine Dom&#228;ne, in der eine solche Entit&#228;t oder Daten-Gruppierung eine Rolle spielt. Aufgrund dieser Einsicht wurde das Konzept im Sommer 2023 aufgegeben.
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#312a53" DESTINATION="ID_1819824079" ENDARROW="Default" ENDINCLINATION="82;-191;" ID="Arrow_ID_571432877" STARTARROW="None" STARTINCLINATION="385;17;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1685050895873" ID="ID_1305413793" MODIFIED="1686789885547" TEXT="JobTicket &#xd83e;&#xdc32; JobFunctor"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685050903817" ID="ID_947140645" MODIFIED="1685058047977" TEXT="konkrete Output-Sink">
<linktarget COLOR="#a95a75" DESTINATION="ID_947140645" ENDARROW="Default" ENDINCLINATION="188;21;" ID="Arrow_ID_686370160" SOURCE="ID_1575034395" STARTARROW="None" STARTINCLINATION="747;-40;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685050903817" ID="ID_1951219397" MODIFIED="1714778577842">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
bestimmende Freiheitsgrade
</p>
<p>
f&#252;r die Job-Invocation
</p>
</body>
</html></richcontent>
<linktarget COLOR="#3e6184" DESTINATION="ID_1951219397" ENDARROW="Default" ENDINCLINATION="-729;116;" ID="Arrow_ID_1252149896" SOURCE="ID_1316148159" STARTARROW="None" STARTINCLINATION="427;24;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714777535544" ID="ID_1292334278" MODIFIED="1714777603974" TEXT="nominell-zeitliche Koordinate">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#5b280f" CREATED="1714777550981" ID="ID_1915217600" MODIFIED="1714777557912" TEXT="traditionell w&#xe4;re das die Frame-Nummer">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1714777558727" ID="ID_501449860" MODIFIED="1714777571297" TEXT="in Lumiera verwenden wir eine direkte Zeitangabe"/>
<node CREATED="1714777572206" ID="ID_1167720006" MODIFIED="1714777585120" TEXT="auf dieser Basis kann die Quelle angesteuert werden"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714776494868" ID="ID_1882197279" MODIFIED="1714777606898" TEXT="konkrete top-level ProcNode">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#5b280f" CREATED="1714776533583" ID="ID_633478457" MODIFIED="1714776551777" TEXT="k&#xf6;nnte man auch &#xbb;ExitNode&#xab; nennen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1714776553019" ID="ID_257364327" MODIFIED="1714776576021" TEXT="dieser Begriff ist inzwischen eine Ebene hochgerutscht"/>
<node CREATED="1714776576678" ID="ID_1580135490" MODIFIED="1714776594435" TEXT="und au&#xdf;erdem brauche ich keine Polymorphie f&#xfc;r ProcNodes mehr"/>
</node>
<node CREATED="1714777496229" ID="ID_1368446585" MODIFIED="1714777517993" TEXT="das &#xbb;pull&#xab; dieser Node generiert die Daten"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685050903817" ID="ID_947140645" MODIFIED="1714778184561" TEXT="konkrete Data-Sink">
<linktarget COLOR="#a95a75" DESTINATION="ID_947140645" ENDARROW="Default" ENDINCLINATION="-637;77;" ID="Arrow_ID_686370160" SOURCE="ID_1575034395" STARTARROW="None" STARTINCLINATION="747;-40;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685058050639" ID="ID_143173446" MODIFIED="1685058108822" TEXT="Sink ist ein Handle (ref-counting)">
<richcontent TYPE="NOTE"><html>
@ -78350,7 +78422,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685062340977" ID="ID_1162744930" MODIFIED="1685062405034" TEXT="diese Info geh&#xf6;rt in den JobFunktor">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685062340977" ID="ID_1162744930" MODIFIED="1714776491235" TEXT="diese Info braucht der JobFunktor">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -78363,6 +78435,30 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714777926334" ID="ID_579939758" MODIFIED="1714777939981" TEXT="Thema: Zuordnung zu einem Proze&#xdf;">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714778001228" ID="ID_1999491710" MODIFIED="1714778020068" TEXT="wir brauchen einen Cache-Key">
<icon BUILTIN="yes"/>
<node CREATED="1714778021562" ID="ID_540563860" MODIFIED="1714778064872" TEXT="dieser ergibt sich systematisch aus den 3 Freiheitsgraden"/>
<node CREATED="1714778069039" ID="ID_532019059" MODIFIED="1714778139405" TEXT="er mu&#xdf; zuverl&#xe4;ssig die Reproduzierbarkeit garantieren"/>
<node CREATED="1714778153744" ID="ID_1381105402" MODIFIED="1714778205449" TEXT="&#x27f9; ProcNode und DataSink m&#xfc;ssen eine strukturgebundene ID bereitstellen"/>
</node>
<node CREATED="1714778370779" ID="ID_1230152552" MODIFIED="1714778391629">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
was dar&#252;berhinaus<i>&#160;ben&#246;tigt</i>&#160;wird, ist noch nicht wirklich klar
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1714778249779" ID="ID_1451023167" MODIFIED="1714778423544" TEXT="man m&#xf6;chte m&#xf6;glicherweise einem high-Level-Prozess zuordnen k&#xf6;nnen"/>
<node CREATED="1714778268233" ID="ID_1508104468" MODIFIED="1714778284885" TEXT="wahrscheinlich ist auch ein konkreter Erstellungs-Timestamp relevant"/>
<node CREATED="1714778342428" ID="ID_1161701047" MODIFIED="1714778356681" TEXT="k&#xf6;nnte aber auch eine Historien-Referenz + eine Serien-Nummer sein"/>
<node CREATED="1714778463639" ID="ID_301336645" MODIFIED="1714778486128" TEXT="&#x27f9; daf&#xfc;r ist eine 64-bit InvocationInstanceID vorgesehen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684984896696" FOLDED="true" HGAP="36" ID="ID_727075583" MODIFIED="1687228182161" VSHIFT="3">
<richcontent TYPE="NODE"><html>
<head/>
@ -78628,6 +78724,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<linktarget COLOR="#312a53" DESTINATION="ID_1819824079" ENDARROW="Default" ENDINCLINATION="82;-191;" ID="Arrow_ID_571432877" SOURCE="ID_1760360578" STARTARROW="None" STARTINCLINATION="385;17;"/>
<icon BUILTIN="yes"/>
<node CREATED="1687047218784" ID="ID_965148273" MODIFIED="1687047467443" TEXT="sie werden eigentlich nie wirklich zusammen gebraucht">
<arrowlink COLOR="#9f154b" DESTINATION="ID_354859977" ENDARROW="Default" ENDINCLINATION="867;47;" ID="Arrow_ID_715252746" STARTARROW="None" STARTINCLINATION="-226;-425;"/>
@ -78972,10 +79069,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1685802581055" ID="ID_1626475025" MODIFIED="1685802602595" TEXT="Umbau der Job-Struktur noch nicht gleich">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802605380" ID="ID_1316148159" MODIFIED="1685802617500" TEXT="aber schon mal die ben&#xf6;tigten Daten analysieren">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802605380" ID="ID_1316148159" MODIFIED="1714778588891" TEXT="aber schon mal die ben&#xf6;tigten Daten analysieren">
<arrowlink COLOR="#3e6184" DESTINATION="ID_1951219397" ENDARROW="Default" ENDINCLINATION="-729;116;" ID="Arrow_ID_1252149896" STARTARROW="None" STARTINCLINATION="427;24;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802625130" ID="ID_148642807" MODIFIED="1688601316599" TEXT="Kernproblem: welche Daten f&#xfc;r den Einzelfall">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802625130" ID="ID_148642807" MODIFIED="1714778871356" TEXT="Feststellung: Daten f&#xfc;r den Einzelfall">
<arrowlink COLOR="#fe3665" DESTINATION="ID_1442656492" ENDARROW="Default" ENDINCLINATION="-1161;156;" ID="Arrow_ID_1073485120" STARTARROW="None" STARTINCLINATION="-478;30;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802655901" ID="ID_554344836" MODIFIED="1685802665981" TEXT="nomineller Zeitpunkt">
@ -79739,7 +79837,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685055837068" ID="ID_1575034395" MODIFIED="1685058047977" TEXT="hier mu&#xdf; ggfs. eine Sub-Adressierung eingerichtet werden">
<arrowlink COLOR="#a95a75" DESTINATION="ID_947140645" ENDARROW="Default" ENDINCLINATION="188;21;" ID="Arrow_ID_686370160" STARTARROW="None" STARTINCLINATION="747;-40;"/>
<arrowlink COLOR="#a95a75" DESTINATION="ID_947140645" ENDARROW="Default" ENDINCLINATION="-637;77;" ID="Arrow_ID_686370160" STARTARROW="None" STARTINCLINATION="747;-40;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685056049002" HGAP="40" ID="ID_1330403717" LINK="https://issues.lumiera.org/ticket/1297" MODIFIED="1685056111380" TEXT="#1297 uniform handling of channels and output slots" VSHIFT="10">
<icon BUILTIN="flag-yellow"/>
@ -79773,7 +79871,201 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685057532500" ID="ID_1172676625" MODIFIED="1685057709903" TEXT="&#x27f9; brauche ein Matching auf passende Ports">
<arrowlink COLOR="#fb1160" DESTINATION="ID_106757636" ENDARROW="Default" ENDINCLINATION="-78;630;" ID="Arrow_ID_1247503914" STARTARROW="None" STARTINCLINATION="1533;-30;"/>
<arrowlink COLOR="#a9276b" DESTINATION="ID_1837848811" ENDARROW="Default" ENDINCLINATION="26;-72;" ID="Arrow_ID_1346798150" STARTARROW="None" STARTINCLINATION="-562;35;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714329419212" HGAP="28" ID="ID_739040055" MODIFIED="1714912937726" TEXT="auf welcher Ebene erfolgt das 1:N-Mapping?" VSHIFT="15">
<linktarget COLOR="#aa3f74" DESTINATION="ID_739040055" ENDARROW="Default" ENDINCLINATION="-1316;83;" ID="Arrow_ID_238210700" SOURCE="ID_910049756" STARTARROW="None" STARTINCLINATION="1219;30;"/>
<icon BUILTIN="help"/>
<node CREATED="1714329453840" ID="ID_154403175" MODIFIED="1714329486612" TEXT="klar ist: 1 Feed &#x2259; N CalcStreams">
<icon BUILTIN="info"/>
</node>
<node CREATED="1714353932150" ID="ID_1328536906" MODIFIED="1714353940729" TEXT="Untersuchung M&#xf6;glichkeiten">
<node CREATED="1714329496397" ID="ID_931750250" MODIFIED="1714354436211" TEXT="L&#xf6;sung-1: Model-Port">
<node CREATED="1714329527623" ID="ID_853584511" MODIFIED="1714329540249" TEXT="bereits Model-Ports werden entsprechend ausdifferenziert"/>
<node CREATED="1714329540917" ID="ID_868190666" MODIFIED="1714329629957" TEXT="und zwar dann, wenn durch eine konkrete ViewerPlayActivation erzeugt">
<node CREATED="1714352218154" ID="ID_562966685" MODIFIED="1714353767138" TEXT="Name?">
<arrowlink COLOR="#a94d55" DESTINATION="ID_951893185" ENDARROW="Default" ENDINCLINATION="925;51;" ID="Arrow_ID_1328659333" STARTARROW="None" STARTINCLINATION="-8;-157;"/>
</node>
</node>
<node CREATED="1714329641752" ID="ID_797767323" MODIFIED="1714329704188" TEXT="zun&#xe4;chst gibt es eine abstrakte, gemeinsame OutputDesignation auf Timeline-Ebene"/>
<node CREATED="1714329726789" ID="ID_636102500" MODIFIED="1714346879273" TEXT="je nach Medien/StreamType und Umst&#xe4;nden wird diese differenziert"/>
<node CREATED="1714329739771" ID="ID_896571065" MODIFIED="1714346902747" TEXT="dadurch entstehen weitere, abgeleitete und spezialisierte Model Ports"/>
<node CREATED="1714329751433" ID="ID_1142014838" MODIFIED="1714329765011" TEXT="eine Exit-Node entspricht stets einem solchen differenzierten Port"/>
<node CREATED="1714329765682" ID="ID_1392883876" MODIFIED="1714329781409" TEXT="Konsequenz &#x27f9; nicht f&#xfc;r jeden ModelPort gibt es eine ExitNode">
<node CREATED="1714329785696" ID="ID_1220478618" MODIFIED="1714329796807" TEXT="(a) weil sie nur on-demand erstellt wird"/>
<node CREATED="1714329797243" ID="ID_1333517012" MODIFIED="1714329807430" TEXT="(b) weil es vielleicht gar nicht m&#xf6;glich ist"/>
</node>
</node>
<node CREATED="1714329824456" ID="ID_1264812650" MODIFIED="1714329836212" TEXT="L&#xf6;sung-2 : ModelPort vs Fixture">
<node CREATED="1714329840494" ID="ID_1418005949" MODIFIED="1714329867507" TEXT="auf Ebene des high-Level-Model gibt es nur generische OutputDesignations"/>
<node CREATED="1714329868242" ID="ID_184056317" MODIFIED="1714329884644" TEXT="diese werden an geeigneter Stelle in eine Liste zusammengef&#xfc;hrt"/>
<node CREATED="1714329885352" ID="ID_933373531" MODIFIED="1714329909292" TEXT="der Build-Proze&#xdf; dagegen liefert explizit ausformulierte ModelPorts"/>
<node CREATED="1714329911460" ID="ID_1543278624" MODIFIED="1714329928581" TEXT="jeder von diesen ist konkret renderbar und es gibt daf&#xfc;r eine ExitNode (in jedem Segment)"/>
</node>
<node CREATED="1714329941216" ID="ID_495533677" MODIFIED="1714329948398" TEXT="L&#xf6;sung-3 : ExitNode">
<node CREATED="1714329992920" ID="ID_821922749" MODIFIED="1714330011208" TEXT="bereits im ModelPort werden Auspr&#xe4;gungen / Gruppierungen gebildet"/>
<node CREATED="1714329951759" ID="ID_817187343" MODIFIED="1714347338681" TEXT="die konkrete ExitNode kennt N Zug&#xe4;nge"/>
<node CREATED="1714330041980" ID="ID_1122150847" MODIFIED="1714330053999" TEXT="diese sind w&#xe4;hlbar auf Basis der Auspr&#xe4;gungen"/>
<node CREATED="1714330060448" ID="ID_1552204339" MODIFIED="1714330076586" TEXT="nur valide Auspr&#xe4;gnungen sind w&#xe4;hlbar"/>
<node CREATED="1714330079916" ID="ID_434179872" MODIFIED="1714330098760" TEXT="der einzelne Job bekommt noch eine weitere Steuer-ID mit"/>
</node>
<node CREATED="1714330100891" ID="ID_1388128478" MODIFIED="1714330110678" TEXT="L&#xf6;sung-4 : Segment-ExitNode">
<node CREATED="1714330111954" ID="ID_1798184156" MODIFIED="1714330124276" TEXT="jedes Segment hat eine einzige &#xfc;bergreifende ExitNode"/>
<node CREATED="1714330125030" ID="ID_469128236" MODIFIED="1714330147641" TEXT="diese hat einen strukurierten Zugang zu ModelPorts mit Auspr&#xe4;gung"/>
<node CREATED="1714330151856" ID="ID_1110390770" MODIFIED="1714330167782" TEXT="hinter jedem solchen Zugang h&#xe4;ngt eine ProcNode + Ausf&#xfc;hrungsbestimmungen"/>
<node CREATED="1714330169098" ID="ID_278339685" MODIFIED="1714330181695" TEXT="der einzelne Job bekommt noch eine weitere Steuer-ID mit"/>
</node>
</node>
<node CREATED="1714353955554" ID="ID_1548040244" MODIFIED="1714353957647" TEXT="Diskussion">
<node CREATED="1714353992894" ID="ID_259183643" MODIFIED="1714354022552" TEXT="Enscheidung &#x27fa; Struktur der Job-Closure">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1714354040607" ID="ID_788990049" MODIFIED="1714354054114" TEXT="der JobFunktor und die dazugeh&#xf6;rige Closure m&#xfc;ssen irgendwo gespeichert sein"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714354054950" ID="ID_8030468" MODIFIED="1714354118365" TEXT="on-demand Erzeugung des JobTickets noch nicht ganz klar">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1714354141623" ID="ID_608723813" MODIFIED="1714354152036" TEXT="Job-Ticket verweist direkt auf ExitNode und JobFunctor"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1714354178118" ID="ID_413554113" MODIFIED="1714354195521" TEXT="Zahl der Segmente ist gro&#xdf; &#x27f9; gef&#xe4;hrlicher Hebel">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1714354198227" ID="ID_1689588096" MODIFIED="1714354235994" TEXT="wir k&#xf6;nnen uns nicht zig Allokationen pro Sement und pro ModelPort leisten"/>
</node>
</node>
<node CREATED="1714579936584" ID="ID_1287670173" MODIFIED="1714775428319" TEXT="es ist wenig Platz da f&#xfc;r zus&#xe4;tzliche Qualifikatoren">
<node CREATED="1714579952265" ID="ID_1462189299" MODIFIED="1714580336780" TEXT="vom Architektur-Standpunkt w&#xe4;ren diese sicher w&#xfc;nschenswert">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...also sowas wie L&#246;sung-4, mit einem strukturierten Term; leider kostet ein solcher Term zwangsl&#228;ufig viel Platz (weil er offen sein mu&#223;) und l&#228;uft damit stets auf eine Heap-Allokation hinaus; da m&#252;ssen wir sehr vorsichtig sein, bedingt durch den Hebel aufgrund der gro&#223;en Zahl an Segmenten
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1714580571895" ID="ID_832191476" MODIFIED="1714580591635" TEXT="Tats&#xe4;chlich k&#xf6;nnen wir uns nur eine Info pro Freiheitsgrad leisten">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1714580592801" ID="ID_1478713442" MODIFIED="1714580830099" TEXT="Freiheitsgrade...">
<arrowlink COLOR="#3e5caa" DESTINATION="ID_206055852" ENDARROW="Default" ENDINCLINATION="-901;1952;" ID="Arrow_ID_1954815494" STARTARROW="None" STARTINCLINATION="-330;-93;"/>
<icon BUILTIN="info"/>
<node CREATED="1714580615114" ID="ID_1400673889" MODIFIED="1714580620205" TEXT="nominelle Zeit">
<node CREATED="1714580868121" HGAP="31" ID="ID_1305751151" MODIFIED="1714580906874" TEXT="die einzige pro Frame bewegliche Gr&#xf6;&#xdf;e" VSHIFT="3">
<edge COLOR="#1a35c0"/>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1714580621289" ID="ID_1076202575" MODIFIED="1714580697456" TEXT="CalcStream">
<node CREATED="1714580868121" HGAP="31" ID="ID_1736081926" MODIFIED="1714580994924" TEXT="&#x27f6; Invocation / Instance-ID" VSHIFT="3">
<edge COLOR="#1a35c0"/>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1714580640342" ID="ID_530469103" MODIFIED="1714580652945" TEXT="JobFunktor">
<node CREATED="1714580868121" HGAP="31" ID="ID_788877656" MODIFIED="1714581024486" TEXT="ist generisch f&#xfc;r eine bestimmte Art Job (IO, Render, Meta, ...)" VSHIFT="3">
<edge COLOR="#1a35c0"/>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1714580702223" ID="ID_428701316" MODIFIED="1714580704906" TEXT="ExitNode">
<node CREATED="1714580868121" HGAP="31" ID="ID_970590530" MODIFIED="1714581062090" TEXT="damit ist das Segment ausgew&#xe4;hlt" VSHIFT="3">
<edge COLOR="#1a35c0"/>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1714580705443" ID="ID_74707015" MODIFIED="1714580728670" TEXT="DataSink">
<node CREATED="1714580868121" HGAP="31" ID="ID_1257787598" MODIFIED="1714581121697" TEXT="bindet an einen Feed" VSHIFT="3">
<edge COLOR="#1a35c0"/>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
</node>
<node CREATED="1714581244537" ID="ID_1987838291" MODIFIED="1714581558881" TEXT="tats&#xe4;chlich ist die InvocationInstanceID redundant">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...allerdings nur unter der Annahme, da&#223; die DataSink jeweils komplett unique ist (was tats&#228;chlich nicht zu erwarten ist); wenn man allerdings im API von DataSink noch etwas unterbringt, um auf eine Stream-Type-ID zuzugreifen, dann w&#228;re CalcStram bzw. InvocationInstanceID tats&#228;chlich redundant und k&#246;nnte aus den anderen Angaben errechnet werden.
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1714581651294" ID="ID_1318663500" MODIFIED="1714581669752" TEXT="&#x27f9; es ist sogar noch etwas &#xbb;Luft&#xab;">
<node CREATED="1714581688960" ID="ID_554965848" MODIFIED="1714581707552" TEXT="oder man kommt mit einem Feed-Token (statt mit zwei) aus"/>
<node CREATED="1714581716021" ID="ID_11143774" MODIFIED="1714581727069" TEXT="demnach w&#xe4;re doch sogar L&#xf6;sung-4 denkbar"/>
<node CREATED="1714581727658" ID="ID_250863682" MODIFIED="1714581742377" TEXT="kombiniert mit L&#xf6;sung-1 und L&#xf6;sung-2">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node CREATED="1714779208086" ID="ID_1978993204" MODIFIED="1714779268159" TEXT="L&#xf6;sung-1 entspricht am Besten dem &#xfc;bergeordneten Konzept">
<node CREATED="1714779285545" ID="ID_1813971140" MODIFIED="1714779307938" TEXT="&#x27f9; zeigt auf, da&#xdf; auch im high-Level-Model noch eine weitere Strukturierung notwendig ist"/>
<node CREATED="1714779372950" ID="ID_272094837" MODIFIED="1714779454073" TEXT="Relation zwischen Auspr&#xe4;gungen des &#xbb;konzeptionell gleichen&#xab; Ausgabekanals"/>
</node>
<node CREATED="1714779721668" ID="ID_1336128105" MODIFIED="1714779733276" TEXT="f&#xfc;r L&#xf6;sung-4 sprechen praktische Gr&#xfc;nde">
<node CREATED="1714779735813" ID="ID_13794811" MODIFIED="1714779811899" TEXT="Polymorphismus nicht notwendig (da Aufgaben disjunkt)">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...will sagen, eine &#187;ExitNode&#171; mu&#223; nicht eine besondere Art von Node sein, denn der Zwek von Nodes und der/den ExitNodes &#252;berschneidet sich &#252;berhaupt nicht
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1714779813301" ID="ID_1649955148" MODIFIED="1714779831820" TEXT="auch ExitNodes m&#xfc;ssen irgendwo alloziert werden"/>
<node CREATED="1714779832600" ID="ID_619705135" MODIFIED="1714779852506" TEXT="f&#xfc;r mehrere ExitNodes br&#xe4;uchte man dann wieder einen Index oder Zugangs-Deskriptor"/>
<node CREATED="1714779867911" ID="ID_531634281" MODIFIED="1714779887525" TEXT="daher kann ExitNode genau dieser Zugangs-Deskriptor sein"/>
<node CREATED="1714779888401" ID="ID_193604067" MODIFIED="1714779897595" TEXT="und ist mithin direkt am Segment angebunden"/>
<node CREATED="1714779971374" ID="ID_881165967" MODIFIED="1714779986055" TEXT="die Liste der ModelPorts wandert dann in die ExitNode"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714268830367" HGAP="31" ID="ID_1837848811" MODIFIED="1714328850202" TEXT="Verh&#xe4;ltnis von ModelPort &#x27f7; ExitNode &#x27f7; CalcStream &#x27f7; Feed" VSHIFT="15">
<linktarget COLOR="#ae506a" DESTINATION="ID_1837848811" ENDARROW="Default" ENDINCLINATION="-736;34;" ID="Arrow_ID_1857939913" SOURCE="ID_419173079" STARTARROW="None" STARTINCLINATION="-150;-171;"/>
<linktarget COLOR="#a9276b" DESTINATION="ID_1837848811" ENDARROW="Default" ENDINCLINATION="26;-72;" ID="Arrow_ID_1346798150" SOURCE="ID_1172676625" STARTARROW="None" STARTINCLINATION="-562;35;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1714328873346" ID="ID_460977758" MODIFIED="1714328884461" TEXT="ModelPort und Feed entsprechen sich">
<icon BUILTIN="info"/>
<node CREATED="1714328886449" ID="ID_990676620" MODIFIED="1714328902514" TEXT="Model Port &#x2261; etwas das man rendern kann"/>
<node CREATED="1714328905358" ID="ID_335535508" MODIFIED="1714328937398" TEXT="Feed &#x2261; das administrative Handle eines solchen Rendervorganges"/>
<node CREATED="1714328953521" ID="ID_378538252" MODIFIED="1714328984246">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
CalcStream &#8801; eine aktiv laufende Folge von Berechnungen f&#252;r <b>einen</b>&#160; Ausgabekanal
</p>
</body>
</html></richcontent>
<node CREATED="1714329007283" ID="ID_1710787321" MODIFIED="1714329013657" TEXT="hat ein RenderDrive"/>
<node CREATED="1714329014208" ID="ID_1766738306" MODIFIED="1714329023547" TEXT="dies erzeugt eine Folge von Frame-Jobs"/>
<node CREATED="1714329024327" ID="ID_1073111908" MODIFIED="1714329037883" TEXT="ein Frame-Job liefert einen Datenframe"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714269278696" ID="ID_697852023" MODIFIED="1714780242820" TEXT="Verschaltung und Verwendung von Exit-Nodes">
<arrowlink COLOR="#853dac" DESTINATION="ID_750168325" ENDARROW="Default" ENDINCLINATION="11;-193;" ID="Arrow_ID_1075271478" STARTARROW="None" STARTINCLINATION="436;26;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#5b280f" CREATED="1714325475892" ID="ID_724282020" MODIFIED="1714780435908" TEXT="Exit-Node korrespondiert zu genau einem Model-Port">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1714269498746" ID="ID_647052989" MODIFIED="1714780457449" TEXT="Exit-Node bietet f&#xfc;r jeden ModelPort die notwndigen Zug&#xe4;nge"/>
<node CREATED="1714269532645" HGAP="44" ID="ID_1528088168" MODIFIED="1714780473463" TEXT="ein solcher Zugang bindet eine top-Level-Node an" VSHIFT="-19">
<node CREATED="1714780484649" ID="ID_873502486" MODIFIED="1714780491876" TEXT="dies ist aber eine ganz normale ProcNode"/>
<node CREATED="1714780492416" ID="ID_278692277" MODIFIED="1714780516377" TEXT="der Builder sorgt daf&#xfc;r, da&#xdf; deren Output zur DataSink des ModelPort / Feed pa&#xdf;t"/>
<node CREATED="1714780572621" ID="ID_791102026" LINK="#ID_931750250" MODIFIED="1714780670968">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
f&#252;r jeden Feed gibt es einen ModelPort (ggfs. eine Auspr&#228;gung)
</p>
<p>
und eine top-Level-Node in jedem Segment
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
</node>
@ -79834,8 +80126,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685999849385" ID="ID_1436753704" MODIFIED="1685999865729" TEXT="Anbindung Segment &#x27fc; Node-Graph">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685999881980" ID="ID_1237481687" MODIFIED="1685999917839" TEXT="Koppel-Facade: &#xbb;NodeGraphAttachment&#xab;">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#5b280f" CREATED="1685999881980" ID="ID_1237481687" MODIFIED="1714780926031" TEXT="Koppel-Facade: &#xbb;NodeGraphAttachment&#xab;">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686184053235" ID="ID_1172335387" MODIFIED="1686184459579" TEXT="Achtung: Gefahr von &#xbb;dangling references&#xab;">
<richcontent TYPE="NOTE"><html>
<head/>
@ -79900,6 +80192,21 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686263854024" ID="ID_1705328706" MODIFIED="1686263879705" TEXT="mu&#xdf; f&#xfc;r ExitNode passenden JobFunctor bereitstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1714780930702" ID="ID_1855012323" LINK="#ID_1548040244" MODIFIED="1714780961977" TEXT="weitere Analyse zeigt: das f&#xe4;llt mit der Rolle der ExitNode(s) zusammen"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1714780979127" ID="ID_759160681" MODIFIED="1714781008862" TEXT="Beschlu&#xdf;: die Entit&#xe4;t &#xbb;ExitNode&#xab; wandert eine Ebene hoch im Design">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714781014484" ID="ID_784858734" MODIFIED="1714869590437" TEXT="Umbau: ExitNode &#xfc;bernimmt bisherite Rolle des NodeGraphAttachment">
<linktarget COLOR="#d55e87" DESTINATION="ID_784858734" ENDARROW="Default" ENDINCLINATION="-704;27;" ID="Arrow_ID_1275017209" SOURCE="ID_760280600" STARTARROW="None" STARTINCLINATION="-466;33;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714781047574" ID="ID_811413379" MODIFIED="1714781095403" TEXT="Festzulegen: konkrete Ansteuerung des ModelPort">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714781065341" ID="ID_1131396679" MODIFIED="1714781088654" TEXT="zu Kl&#xe4;ren: welche Services braucht nun konkret das JobTicket?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1685999923288" ID="ID_43857242" MODIFIED="1685999987298" TEXT="grunds&#xe4;tzlich">
<icon BUILTIN="yes"/>
@ -80006,12 +80313,19 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713716178243" ID="ID_963083918" MODIFIED="1713716198671" TEXT="StateAdapter &#x27fc; StateClosure">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713716178243" ID="ID_963083918" MODIFIED="1714908421288" TEXT="StateAdapter &#x27fc; StateClosure">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_963083918" ENDARROW="Default" ENDINCLINATION="423;38;" ID="Arrow_ID_674451029" SOURCE="ID_535326092" STARTARROW="None" STARTINCLINATION="1145;-57;"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714909003260" ID="ID_1583145480" MODIFIED="1714909025469" TEXT="WiringCoinfig &#x27fc; Connectivity">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713716200831" ID="ID_1149448314" MODIFIED="1713716213811" TEXT="BuffTable &#x27fc; FeedManifold">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714911437407" ID="ID_913968477" MODIFIED="1714911478718" TEXT="nrI | nrO &#x27fc; fanI | fanO">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1713716868553" ID="ID_1136069824" MODIFIED="1713716878875" TEXT="ist aber alles sehr gut, was da in dem Text steht"/>
<node CREATED="1713716882999" ID="ID_73961827" MODIFIED="1713716940376" TEXT="(gut ist auch, da&#xdf; fast nix &#xfc;ber die Implementierung geschrieben wurde)">
@ -80185,7 +80499,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1713743677951" ID="ID_1878090601" MODIFIED="1713743711574" TEXT="es gibt keinerlei brauchbare Testabdeckung (genau wegen diesem Problem)">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#583453" CREATED="1713743739274" ID="ID_1675331897" MODIFIED="1713744114670" TEXT="ich bin damals ein St&#xfc;ck weit dem Template-Metaprogramming verfallen">
<node COLOR="#583453" CREATED="1713743739274" ID="ID_1675331897" MODIFIED="1713743739274" TEXT="ich bin damals ein St&#xfc;ck weit dem Template-Metaprogramming verfallen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -80211,9 +80525,146 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1713819850506" ID="ID_1750491613" MODIFIED="1713819862771" TEXT="zu kl&#xe4;ren">
<icon BUILTIN="yes"/>
<node CREATED="1714869165291" ID="ID_1091914211" MODIFIED="1714869167863" TEXT="ExitNodes">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714869174881" ID="ID_760280600" MODIFIED="1714869590436" TEXT="werden eine Ebene h&#xf6;her geschoben">
<arrowlink COLOR="#d55e87" DESTINATION="ID_784858734" ENDARROW="Default" ENDINCLINATION="-704;27;" ID="Arrow_ID_1275017209" STARTARROW="None" STARTINCLINATION="-466;33;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1714869190687" ID="ID_105945568" MODIFIED="1714869218082" TEXT="statt dessen nur eine konfigurierte top-Level-Node">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
favour composition over inheritance
</p>
</body>
</html></richcontent>
</node>
</node>
<node CREATED="1714870436580" ID="ID_429441528" MODIFIED="1714870447138" TEXT="DataSink vs OutputBuffer">
<node CREATED="1714870584943" ID="ID_227448109" MODIFIED="1714870642457" TEXT="seinerzeit nicht bis dahin durchgedrungen">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="flag-pink"/>
</node>
<node CREATED="1714870669482" ID="ID_1877886821" MODIFIED="1714870815999" TEXT="das sind Konzepte auf verschiedenen Ebenen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<ul>
<li>
DataSink ist verwoben mit dem Buffer-Protokoll; dieses mu&#223; von der Node-Invocation im Job selber durchgespielt werden
</li>
<li>
der pull()-Call passiert als ein Teilschritt in demselben; hier werden OutputBuffer vorrausgesetzt
</li>
</ul>
</body>
</html>
</richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1714870821093" ID="ID_1386001047" MODIFIED="1714870851226" TEXT="OutputBuffer k&#xf6;nnen auf verschiedene Weise zur Verf&#xfc;gung stehen">
<node CREATED="1714870852482" ID="ID_718633316" MODIFIED="1714870873555" TEXT="eigens neu alloziert"/>
<node CREATED="1714870882693" ID="ID_100322536" MODIFIED="1714870896124" TEXT="im Rahmen eines Belegungs-Schemas"/>
<node CREATED="1714870897619" ID="ID_1856124620" MODIFIED="1714870915868" TEXT="extern eingebunden">
<node CREATED="1714871833271" ID="ID_999553665" MODIFIED="1714871837441" TEXT="DataSink"/>
<node CREATED="1714871837918" ID="ID_585862150" MODIFIED="1714871839753" TEXT="Cache"/>
</node>
</node>
<node CREATED="1714872052697" ID="ID_1334568846" MODIFIED="1714872067440" TEXT="Node greift &#xfc;ber die State-Abstraktion darauf zu"/>
</node>
<node CREATED="1714908860345" ID="ID_1143590616" MODIFIED="1714908890326">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Rolle der <font face="Monospaced" color="#53352d">chanNo</font>&#160;im bestehenden Invocation-Code
</p>
</body>
</html>
</richcontent>
<node CREATED="1714912639208" ID="ID_910049756" MODIFIED="1714912937725" TEXT="die Unbestimmtheit hier h&#xe4;ngt mit der Sub/Kanal-Adressierung zusammen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...welche ihrerseits ein komplexes, widerspr&#252;chliches und auf lange Sicht unbestimmtes Thema ist
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#c65566" DESTINATION="ID_258322349" ENDARROW="Default" ENDINCLINATION="38;-195;" ID="Arrow_ID_1387680951" STARTARROW="None" STARTINCLINATION="225;9;"/>
<arrowlink COLOR="#aa3f74" DESTINATION="ID_739040055" ENDARROW="Default" ENDINCLINATION="-1316;83;" ID="Arrow_ID_238210700" STARTARROW="None" STARTINCLINATION="1219;30;"/>
</node>
<node CREATED="1714913499629" ID="ID_1170027604" MODIFIED="1714913540560" TEXT="Nodes mit mehreren Ausg&#xe4;ngen sind unbestreitbar eine M&#xf6;glichkeit">
<node CREATED="1714913631281" ID="ID_1220650888" MODIFIED="1714914012803" TEXT="Ableitung oder Generierung mit Freiheitsgraden">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Medien-Erzeugung (Sound, Bild) kann durchaus mehrere, gleichberechtigte Aspekte oder Dimensionen erzeugen, und es kann sehr wohl sein, da&#223; man einen Teil davon oder alle auch weiterverarbeitet. Beispielsweise kann eine Sound-Synthese verschiedene und miteinander verwobene Abstrahlungen nachbilden, beispielsweise in Anlehnung an ein Blasinstrument, das eine Abstrahlung am Mund hat, eine Abstrahlung des K&#246;rpers und eine Abstrahlung vom Trichter. Und man m&#246;chte diese jeweils eigens in einen virtuellen Raum einbinden k&#246;nnen. Oder eine Bild-Analyse, die ein interpoliertes Bildelement, sowie einen Bewegungsvektor desselben ausgibt
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1714913655894" ID="ID_777905676" MODIFIED="1714914285982" TEXT="komplexe Verarbeitung auf mehreren Ebenen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
In diese Kategorie fallen alle Verarbeitungsschritte, die sich <i>nicht</i>&#160; auf komplett isolierte Primitiv-Operationen auf Einzelkan&#228;len faktorisieren lassen. Beispiel w&#228;re ein Resonanz- oder Reflexionsvorgang in einem Schallfeld, oder eine &#220;berblende- oder Overlay-Operation mit mehreren Masken-Ebenen, die neben dem Basis-Farbwert sowohl Transparenz alsauch Luminanz umfa&#223;t (also das Problem, das pre-multiplied Alpha nicht wirklich l&#246;sen kann).
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1714914301470" ID="ID_927742999" MODIFIED="1714914436555" TEXT="de-Multiplexing in Kan&#xe4;le oder Einzelframes">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Alle &#187;de-Coder&#171; fallen tats&#228;chlich in diese Kategorie, im Besonderen beim Extrahieren von Einzelkan&#228;len zur getrennten Weiterverarbeitung, aber auch beim decodieren von komprimierten Str&#246;men in Roh-Datenframes &#252;ber eine Zeitspanne hinweg
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1714914443874" ID="ID_936224279" MODIFIED="1714914512352">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
die eigentliche Frage ist: <b>wie &#252;bersetzt sich das in Topologie</b>?
</p>
</body>
</html>
</richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
diese Frage mu&#223; wohl eigens gestellt werden &#8212; und das wird leider meistens vers&#228;umt
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1714870490954" ID="ID_433835630" MODIFIED="1714870505595" TEXT="Aufr&#xe4;umen">
<node CREATED="1714870511447" ID="ID_698798351" MODIFIED="1714870529856" TEXT="NodeGraphAttachment in ExitNode umwandeln"/>
<node CREATED="1714870530945" ID="ID_1030439043" MODIFIED="1714870546389" TEXT="bisherige skizzierte Rolle er ExitNode zur&#xfc;ckbauen"/>
<node CREATED="1714872094981" ID="ID_1665864694" MODIFIED="1714872109269" TEXT="Reste der BuffTable aus dem 1.Entwurf"/>
<node CREATED="1714872110793" ID="ID_535326092" MODIFIED="1714908421288" TEXT="Name &quot;State&quot; : schl&#xfc;ssigeres Benennungs-Schema">
<arrowlink DESTINATION="ID_963083918" ENDARROW="Default" ENDINCLINATION="423;38;" ID="Arrow_ID_674451029" STARTARROW="None" STARTINCLINATION="1145;-57;"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713819879109" ID="ID_943908122" MODIFIED="1713819899886" TEXT="Entwurf und Aufbau">
<arrowlink COLOR="#c80a37" DESTINATION="ID_845562088" ENDARROW="Default" ENDINCLINATION="-130;10;" ID="Arrow_ID_66382855" STARTARROW="None" STARTINCLINATION="42;-31;"/>
<linktarget COLOR="#fde0ca" DESTINATION="ID_943908122" ENDARROW="Default" ENDINCLINATION="-1682;204;" ID="Arrow_ID_1115019309" SOURCE="ID_1278689110" STARTARROW="None" STARTINCLINATION="-1643;116;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1713820093819" ID="ID_1401449333" MODIFIED="1713823888370" TEXT="Zugangsweg">
<icon BUILTIN="forward"/>
@ -80226,12 +80677,140 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823596151" ID="ID_252499492" MODIFIED="1713823821817" TEXT="Node-Grundstruktur">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714182997931" ID="ID_1800457140" MODIFIED="1714183006724" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1714183028139" ID="ID_196869837" MODIFIED="1714183035818" TEXT="Node kennt N Vorl&#xe4;ufer">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714268733821" ID="ID_419173079" MODIFIED="1714328850202" TEXT="welche Rolle spielen diese Vorl&#xe4;ufer?">
<arrowlink COLOR="#ae506a" DESTINATION="ID_1837848811" ENDARROW="Default" ENDINCLINATION="-736;34;" ID="Arrow_ID_1857939913" STARTARROW="None" STARTINCLINATION="-150;-171;"/>
<icon BUILTIN="help"/>
<node CREATED="1714269028476" ID="ID_946403672" MODIFIED="1714269062943" TEXT="Invokation holt sich Daten von ihnen"/>
<node CREATED="1714269063606" ID="ID_264024933" MODIFIED="1714269137231" TEXT="hier gibt es ggfs Einschr&#xe4;nkungen und Aktivierungen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<ul>
<li>
Daten k&#246;nnen aus dem Cache kommen, oder frisch aus einer Quelle
</li>
<li>
per Parametrisierung k&#246;nnen manche Verbindungen deaktiviert sein
</li>
</ul>
</body>
</html>
</richcontent>
</node>
<node CREATED="1714269170695" ID="ID_1617973869" MODIFIED="1714269186785" TEXT="Unterschied zwischen Nodes und ExitNodes">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1714269188908" HGAP="23" ID="ID_497981804" MODIFIED="1714953312547" TEXT="zu kl&#xe4;ren" VSHIFT="15">
<arrowlink COLOR="#90498f" DESTINATION="ID_750168325" ENDARROW="Default" ENDINCLINATION="-738;-46;" ID="Arrow_ID_170319452" STARTARROW="None" STARTINCLINATION="-825;174;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1714781210896" ID="ID_834557076" MODIFIED="1714781402212" TEXT="Antwort: gar keinen &#x2014; komplett verschiedene Belange">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
<i>jede ProcNode kann gleicherma&#223;en gePULLt werden.</i>
</p>
<p>
Insofern braucht es im NodeGraph selber hier keinerlei spezielle Funktionalit&#228;t, sondern jeweils nur eine top-level-Node, deren Output zur DataSink f&#252;r den pull-Vorgang pa&#223;t. All die Services, die wir von einer ExitNode erwarten, finden auf einem Level h&#246;her statt, n&#228;mlich in der Job-Planung; dort brauchen wir diverse ID-Aufl&#246;sungen und Informationsdienste
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1714781508831" ID="ID_946234551" MODIFIED="1714781530298" TEXT="ein pull() des Vorl&#xe4;ufers liefert Daten in N Eingabe-Buffern ab"/>
<node CREATED="1714781558466" ID="ID_1606524959" MODIFIED="1714781578598" TEXT="die Relation dieser Buffer-Slots bleibt unbestimmt">
<icon BUILTIN="yes"/>
<node CREATED="1714781580919" ID="ID_33377375" MODIFIED="1714781585153" TEXT="wichtige Einsicht"/>
<node CREATED="1714781586510" ID="ID_1272345161" MODIFIED="1714781606271" TEXT="eine Node kann N Eingaben haben"/>
<node CREATED="1714781606925" ID="ID_983347190" MODIFIED="1714781812780" TEXT="wof&#xfc;r auch immer &#x2014; das wird nicht festgelegt">
<node CREATED="1714781642751" ID="ID_1940384033" MODIFIED="1714781651977" TEXT="k&#xf6;nnten verschiedene Side-Chains sein"/>
<node CREATED="1714781653423" ID="ID_928925562" MODIFIED="1714781662967" TEXT="oder Einzelkan&#xe4;le, die geMultiplext werden"/>
<node CREATED="1714868799517" ID="ID_1781616016" MODIFIED="1714868811432" TEXT="oder eine Folge von decodierten Roh-Frames"/>
<node CREATED="1714781669702" ID="ID_227212725" MODIFIED="1714781708057" TEXT="oder (planare) Kan&#xe4;le zur gleichzeitigen Verarbeitung"/>
<node CREATED="1714781789891" ID="ID_362653209" MODIFIED="1714781801801" TEXT="oder verschiedene Texture-Tiles"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714912786638" ID="ID_258322349" MODIFIED="1714912843046" TEXT="gibt es Mehrfach-Verbindungen?">
<linktarget COLOR="#c65566" DESTINATION="ID_258322349" ENDARROW="Default" ENDINCLINATION="38;-195;" ID="Arrow_ID_1387680951" SOURCE="ID_910049756" STARTARROW="None" STARTINCLINATION="225;9;"/>
<icon BUILTIN="help"/>
<node CREATED="1714914539911" ID="ID_1680014607" MODIFIED="1714914587397" TEXT="&#xdc;bersetzen von Mehrfach-Ausg&#xe4;ngen in konkrete Node-Topologie"/>
<node CREATED="1714914601183" ID="ID_1715004462" MODIFIED="1714914609858" TEXT="es gibt mehrere M&#xf6;glichkeiten">
<node CREATED="1714914614508" ID="ID_1988721720" MODIFIED="1714914643792" TEXT="man verdrahtet einen DAG und aktiviert/deaktiviert einzelne Verbindungen"/>
<node CREATED="1714914653360" ID="ID_564871375" MODIFIED="1714914722389" TEXT="man repliziert den Prozessor und selektiert jeweils nur eine Ausgabe">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...was nat&#252;rlich KISS ist; in einem zweiten Schritt repariert man diese Verschwendung durch ein mehr- oder weniger trickreiches Caching
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1714954232786" ID="ID_270340884" MODIFIED="1714955059503" TEXT="alle Outputs fallen grunds&#xe4;tzlich in einen Buffer; ein Nachfolger selektiert aus diesen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
bei dieser Variante ist der entscheidende Aspekt, da&#223; diese Adaptierung automatisch in der Verschaltung realisiert wird; ebenso sorgt die Verschaltung daf&#252;r, ggfs den Cache mit anzusteuern
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#55567b" DESTINATION="ID_1605763598" ENDARROW="Default" ENDINCLINATION="122;4;" ID="Arrow_ID_610262787" STARTARROW="Default" STARTINCLINATION="112;4;"/>
</node>
<node CREATED="1714954261920" ID="ID_1173414210" MODIFIED="1714954800194" TEXT="der Nachfolger mu&#xdf; stets alle Outputs entgegennehmen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...sie werden <i>en bloc </i>in seine Liste der Inputs &#252;bernommen; erst in einem internen Adaptions-Schritt (FeedManifold) wird ggfs daraus ausgew&#228;hlt
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1714954801243" ID="ID_1605763598" MODIFIED="1714955495179" TEXT="wenn es mehrere Outputs gibt, mu&#xdf; zwingend eine Routing-Node nachgeschaltet werden">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
in dieser Variante wird die spezielle Adaptierung als separate Node explizit gemacht; somit werden Mehrfach-Verbindungen explizit zugelassen, und f&#252;r ein solches Verbindungs-B&#252;ndel ist nur ein einziger Pull-Aufruf notwendig, wobei die Routing-Node dann sofort alle Outputs auf einmal bekommt &#8212; allerdings hat die Routing-Node stets nur <i>einen </i>Vorl&#228;ufer
</p>
</body>
</html></richcontent>
<linktarget COLOR="#55567b" DESTINATION="ID_1605763598" ENDARROW="Default" ENDINCLINATION="122;4;" ID="Arrow_ID_610262787" SOURCE="ID_270340884" STARTARROW="Default" STARTINCLINATION="112;4;"/>
</node>
</node>
<node CREATED="1714955621585" ID="ID_1431510635" MODIFIED="1714955652952" TEXT="diese Analyse zeigt: hierf&#xfc;r ist stets irgendwo eine Spezialbehandlung notwendig">
<node CREATED="1714955711147" ID="ID_467104305" MODIFIED="1714955727685" TEXT="und zwar im Zusammenhang mit der Pull/Aufruf-Steuerung"/>
<node CREATED="1714955841766" ID="ID_790467122" MODIFIED="1714955867147" TEXT="es kann nicht vollst&#xe4;ndig auf ein einfacheres Muster zur&#xfc;ckgef&#xfc;hrt werden"/>
<node CREATED="1714955904265" ID="ID_1418095631" MODIFIED="1714955937657" TEXT="&#x27f9; daher erscheint es sinnvoll, dies in der Infrastruktur zu handhaben (TurnoutSystem)"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823635758" ID="ID_899523613" MODIFIED="1713823821818" TEXT="Gundelemente des Aufrufs">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823642113" ID="ID_1687015571" MODIFIED="1713823821818" TEXT="TurnoutSystem als Zentral-Element">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714997707508" ID="ID_665814613" MODIFIED="1714997710914" TEXT="Analyse">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714997721273" ID="ID_495097190" MODIFIED="1714997734831" TEXT="Zweck: was soll gesteuert werden?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714997738104" ID="ID_992197022" MODIFIED="1714997781578" TEXT="Ansatz: wie wirkt das TurnoutSystem?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823682795" ID="ID_868323088" MODIFIED="1713823821819" TEXT="Kl&#xe4;ren der Probleme mit den Prototypen">
<icon BUILTIN="flag-yellow"/>
@ -80249,6 +80828,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1714181482947" ID="ID_845562088" MODIFIED="1714181555132" TEXT="Ticket #905 als Anker verwenden">
<linktarget COLOR="#c80a37" DESTINATION="ID_845562088" ENDARROW="Default" ENDINCLINATION="-130;10;" ID="Arrow_ID_66382855" SOURCE="ID_943908122" STARTARROW="None" STARTINCLINATION="42;-31;"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1714181927456" ID="ID_7655935" MODIFIED="1714181946722" TEXT="Tracking-Ticket #1364 &#xbb;Render Node Network&#xab;">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1713823918124" ID="ID_1749289662" MODIFIED="1713823922851" TEXT="Testbarkeit">
<node CREATED="1713823928074" ID="ID_1359856614" MODIFIED="1713823939046" TEXT="Node mu&#xdf; direkt konstruierbar sein"/>
<node CREATED="1713823944920" ID="ID_1929417005" MODIFIED="1713823954451" TEXT="Node mu&#xdf; Verschaltungs-API bieten"/>
@ -80513,7 +81099,33 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1683762860166" ID="ID_1202392530" MODIFIED="1683762863249" TEXT="Konzepte"/>
<node CREATED="1683762860166" ID="ID_1202392530" MODIFIED="1683762863249" TEXT="Konzepte">
<node CREATED="1714261510123" ID="ID_1955700140" MODIFIED="1714261512894" TEXT="Connection">
<node CREATED="1714261513554" ID="ID_1927102337" MODIFIED="1714261515950" TEXT="Stream">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1714269206776" ID="ID_750168325" MODIFIED="1714953312547" TEXT="inwiefern ist eine ExitNode eine spezielle Node?">
<linktarget COLOR="#90498f" DESTINATION="ID_750168325" ENDARROW="Default" ENDINCLINATION="-738;-46;" ID="Arrow_ID_170319452" SOURCE="ID_497981804" STARTARROW="None" STARTINCLINATION="-825;174;"/>
<linktarget COLOR="#853dac" DESTINATION="ID_750168325" ENDARROW="Default" ENDINCLINATION="11;-193;" ID="Arrow_ID_1075271478" SOURCE="ID_697852023" STARTARROW="None" STARTINCLINATION="436;26;"/>
<icon BUILTIN="help"/>
<node CREATED="1714780261258" ID="ID_641526316" MODIFIED="1714780287711" TEXT="die ExitNode(s) liefern den Ankn&#xfc;pfungspunkt"/>
<node CREATED="1714780288611" ID="ID_1768584022" MODIFIED="1714780303677" TEXT="dagegen das Rendern ist auf jeder Node gleicherma&#xdf;en m&#xf6;glich"/>
<node CREATED="1714780306368" ID="ID_678672496" MODIFIED="1714780320931" TEXT="es mu&#xdf; lediglich daf&#xfc;r gesorgt sein, da&#xdf; Input und Output zusammenpassen"/>
<node CREATED="1714780247049" ID="ID_532963980" MODIFIED="1714780330595">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
<u>Fazit</u>: gar nicht
</p>
</body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1714780344248" ID="ID_1458999093" LINK="#ID_13794811" MODIFIED="1714780397961" TEXT="Refactoring: ExitNode wird zum Zugangs-Deskriptor f&#xfc;r ein Segment"/>
</node>
</node>
</node>
<node CREATED="1714261516778" ID="ID_1575846856" MODIFIED="1714261522566" TEXT="Control"/>
</node>
</node>
</node>
<node CREATED="1680563454868" ID="ID_1187556686" MODIFIED="1680563459014" TEXT="Backbone"/>
<node CREATED="1680563460649" ID="ID_127710483" MODIFIED="1680563474067" TEXT="MemManagement"/>
@ -127219,6 +127831,10 @@ unsigned int ThreadIdAsInt = *static_cast&lt;unsigned int*&gt;(static_cast&lt;vo
<arrowlink COLOR="#fde0ca" DESTINATION="ID_1023195884" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_1892586048" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714181432070" ID="ID_1278689110" LINK="https://issues.lumiera.org/ticket/905" MODIFIED="1714181911349" TEXT="#905 build node invocation setup">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_943908122" ENDARROW="Default" ENDINCLINATION="-1682;204;" ID="Arrow_ID_1115019309" STARTARROW="None" STARTINCLINATION="-1643;116;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680196129567" ID="ID_988036389" LINK="https://issues.lumiera.org/ticket/1288" MODIFIED="1680392639594" TEXT="#1288 simple video display widget">
<icon BUILTIN="flag-yellow"/>