1 #ifndef _RAPID_PIPO_HOST_H_ 2 #define _RAPID_PIPO_HOST_H_ 6 #include "PiPoCollection.h" 9 #define EXTERNAL_JSONCPP_PATH "json.h" 10 #include EXTERNAL_JSONCPP_PATH 13 #define MIN_PIPO_SAMPLERATE (1.0 / 31536000000.0) 14 #define MAX_PIPO_SAMPLERATE (96000000000.0) 16 #define PIPO_OUT_RING_SIZE 2 52 std::string graphName;
55 PiPoStreamAttributes inputStreamAttrs;
56 PiPoStreamAttributes outputStreamAttrs;
65 virtual bool setGraph(std::string name);
66 virtual void clearGraph();
69 virtual void onNewFrameOut(
double time, std::vector<PiPoValue> &frame);
70 virtual std::vector<PiPoValue> getLastFrameOut();
75 virtual int frames(
double time,
double weight, PiPoValue *values,
unsigned int size,
80 virtual bool setAttr(
const std::string &attrName,
double value);
81 virtual bool setAttr(
const std::string &attrName,
const std::vector<double> &values);
82 virtual bool setAttr(
const std::string &attrName,
const std::string &value);
93 virtual std::vector<std::string> getAttrNames();
95 virtual double getDoubleAttr(
const std::string &attrName);
96 virtual std::vector<double> getDoubleArrayAttr(
const std::string &attrName);
97 virtual std::string getEnumAttr(
const std::string &attrName);
100 virtual std::string getJSON();
102 virtual void writeJSON(
const std::string &filepath);
104 virtual bool putJSON(
const std::string &jsonMessage);
106 virtual bool readJSON(
const std::string &filepath);
153 Json::Value toJSON();
154 bool fromJSON(Json::Value &jv);
157 int propagateInputStreamAttributes();
170 std::atomic<int> writeIndex, readIndex;
171 std::vector<std::vector<PiPoValue>> ringBuffer;
177 PiPo((PiPo::Parent *)host) {
192 this->host->setOutputAttributes(hasTimeTags, rate, offset, width, height,
193 labels, hasVarSize, domain, maxFrames);
196 ringBuffer[i].resize(width * height);
202 int frames(
double time,
double weight,
float *values,
203 unsigned int size,
unsigned int num) {
206 for (
int i = 0; i < num; ++i) {
208 for (
int j = 0; j < size; ++j) {
209 ringBuffer[writeIndex][j] = values[i * size + j];
213 writeIndex = 1 - writeIndex;
214 readIndex = 1 - writeIndex;
239 std::vector<PiPoValue> f;
241 if (readIndex > -1) {
242 f = ringBuffer[readIndex];
~PiPoOut()
Definition: rapidPiPoHost.h:184
#define PIPO_OUT_RING_SIZE
Definition: rapidPiPoHost.h:16
Definition: rapidPiPoHost.h:18
bool hasTimeTags
Definition: rapidPiPoHost.h:30
virtual void onNewFrameOut(double time, std::vector< PiPoValue > &frame)
Definition: rapidPiPoHost.cpp:157
int streamAttributes(bool hasTimeTags, double rate, double offset, unsigned int width, unsigned int height, const char **labels, bool hasVarSize, double domain, unsigned int maxFrames)
Definition: rapidPiPoHost.h:186
std::vector< PiPoValue > getLastFrame()
Definition: rapidPiPoHost.h:238
Definition: rapidPiPoHost.h:47
double rate
Definition: rapidPiPoHost.h:31
double domain
Definition: rapidPiPoHost.h:37
unsigned int maxFrames
Definition: rapidPiPoHost.h:38
double offset
Definition: rapidPiPoHost.h:32
pipoStreamAttributes()
Definition: rapidPiPoHost.h:19
bool hasVarSize
Definition: rapidPiPoHost.h:36
int frames(double time, double weight, float *values, unsigned int size, unsigned int num)
Definition: rapidPiPoHost.h:202
#define MIN_PIPO_SAMPLERATE
Definition: rapidPiPoHost.h:13
unsigned int height
Definition: rapidPiPoHost.h:34
PiPoOut(PiPoHost *host)
Definition: rapidPiPoHost.h:176
std::vector< std::string > labels
Definition: rapidPiPoHost.h:35
Definition: rapidPiPoHost.h:167
unsigned int width
Definition: rapidPiPoHost.h:33