10#include "dawn/porting/config.hxx"
11#include "dawn/prog/common.hxx"
121 int trigger(uint8_t cmd)
override;
126 virtual ~SBindState() =
default;
138 CProgProcess *owner =
nullptr;
139 SProgStatsIOBind cfg = {};
140 CIOCommon *src =
nullptr;
141 CIOCommon *output =
nullptr;
142 io_ddata_t *ioData =
nullptr;
143 io_ddata_t *outputData =
nullptr;
144 SBindState *state =
nullptr;
145 bool initsample =
false;
151 std::vector<SProcessBind> binds;
161 static int ioNotifierCb(
void *priv, io_ddata_t *data);
170 int configureDesc(
const CDescObject &desc);
179 int allocObject(
const SProgStatsIOBind *alloc);
187 int bindPrepare(SProcessBind *bind);
197 const SObjectCfg::SObjectCfgItem *item,
214 bool &initsample) = 0;
255 return binds[0].output;
286 DAWNASSERT(bind !=
nullptr,
"nullptr pointer");
287 DAWNASSERT(data !=
nullptr,
"nullptr pointer");
292 bind->output, data, bind->ioData, bind->outputData, bind->initsample, bind->state);
Descriptor wrapper for individual object configuration.
Base class for all I/O objects.
Base class for all PROG (processing) objects.
Base class for callback-driven sample processing Program objects.
CProgProcess(CDescObject &desc)
Construct a a Program from descriptor.
int trigger(uint8_t cmd)
Execute a trigger command.
bool hasThread() const
Check if a background thread is active.
CIOCommon * getOutputIO() const
Get the output IO for the first bind.
int init()
One-time initialize Program after bindings are resolved.
CIOCommon * getSourceIO() const
Get the source IO for the first bind.
virtual void handle(CIOCommon *output, io_ddata_t *data, io_ddata_t *ioData, io_ddata_t *outputData, bool &initsample)=0
Process incoming sample.
int configure()
Configure Program from descriptor.
int deinit()
Deinitialize Program.
virtual void handleWithState(CIOCommon *output, io_ddata_t *data, io_ddata_t *ioData, io_ddata_t *outputData, bool &initsample, void *state)
Process incoming sample with optional per-binding state.
virtual int configureExtraCfgItem(const CDescObject &desc, const SObjectCfg::SObjectCfgItem *item, size_t &offset)
Parse program-specific config item (optional extension hook).
~CProgProcess()
Destruct the a Program.
virtual int bindStateAlloc(CIOCommon *src, CIOCommon *output, io_ddata_t *ioData, io_ddata_t *outputData, SBindState **state)
Allocate optional per-binding derived state.
void handleCmn(SProcessBind *bind, io_ddata_t *data)
Common callback wrapper.
int doStart()
Start the Program.
int doStop()
Stop the Program.
@ PROG_STATS_CFG_FIRST
First config ID.
@ PROG_STATS_CFG_IOBIND
I/O binding configuration.
@ PROG_STATS_CFG_LAST
Last config ID.
Out-of-tree user-extension hooks for Dawn.
Configuration structure for process I/O binding.
SObjectId::UObjectId output
Output I/O object ID.
SObjectId::UObjectId objid
Source I/O object ID.
Heap-allocated dynamic I/O data buffer.
32-bit encoded object identifier (union with bit field).