Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
Module.h
1#pragma once
2#include "stdafx.h"
3#include <boost/shared_ptr.hpp>
4#include <boost/serialization/base_object.hpp>
5#include <boost/archive/binary_iarchive.hpp>
6#include <boost/archive/binary_oarchive.hpp>
7#include <boost/iostreams/device/array.hpp>
8#include <boost/iostreams/stream.hpp>
9#include "Frame.h"
10#include <boost/function.hpp>
11#include "BoundBuffer.h"
12#include "FrameFactory.h"
13#include "CommonDefs.h"
14#include "FrameMetadata.h"
15#include "RawImageMetadata.h"
16#include "RawImagePlanarMetadata.h"
17#include "FrameMetadataFactory.h"
18#include "QuePushStrategy.h"
19#include "FIndexStrategy.h"
20#include "Command.h"
21#include "BufferMaker.h"
22#include "APCallback.h"
23
24#define DUMMY_CTRL_EOP_PIN "dummy_ctrl_eop_pin"
25
26using namespace std;
27
30class PaceMaker;
31
33{
34public:
53
67
81
95
96 size_t getQLen()
97 {
98 return qlen;
99 }
100
101 virtual size_t getSerializeSize()
102 {
103 // 1024 is for boost serialize
104 return 1024 + sizeof(fps) + sizeof(qlen) + sizeof(logHealth) +
105 sizeof(logHealthFrequency) + sizeof(maxConcurrentFrames) +
106 sizeof(skipN) + sizeof(skipD) + sizeof(quePushStrategyType) +
108 }
109
110 float fps; // can be updated during runtime with setProps
111 size_t qlen; // run time changing doesn't effect this
112 bool logHealth; // can be updated during runtime with setProps
113 int logHealthFrequency; // 1000 by default - logs the health stats frequency
114
115 // used for VimbaSource where we want to create the max frames and keep
116 // recycling it for the VimbaDrive we announce frames after init - 100/200 see
117 // VimbaSource.cpp on how it is used
119
120 // 0/1 - skipN == 0 - don't skip any - process all
121 // 1/1 - skipN == skipD - skip all - don't process any
122 // 1/2 skips every alternate frame
123 // 1/3 skips 1 out of every 3 frames
124 // 2/3 skips 2 out of every 3 frames
125 // 5/6 skips 5 out of every 6 frames
126 // skipD >= skipN
127 int skipN = 0;
128 int skipD = 1;
129 // have one more enum and then in module.cpp dont call run if the enum is pull
130 // type.
134 bool enableHealthCallBack; // ToEnable HealthCallback we need to set ModuleProps as true, Will get Callbacks only if ControlModule is there
135 int healthUpdateIntervalInSec; // Health Callback Interval Defined in Sec, if Value is
136 // set to 5, then it means after every 5 sec Control Module will receive health callback
137private:
138 friend class Module;
139
141 template <class Archive>
142 void serialize(Archive &ar, const unsigned int /* file_version */)
143 {
147 }
148};
149
151{
152
153public:
168 Module(Kind nature, string name, ModuleProps _props);
169 virtual ~Module();
170 Kind getNature() { return myNature; }
171 string getName() { return myName; }
172 string getId() { return myId; }
173 double getPipelineFps();
174 uint64_t getTickCounter();
175
176 string addOutputPin(framemetadata_sp &metadata); // throw exception
177 vector<string> getAllOutputPinsByType(int type);
178 void addOutputPin(framemetadata_sp &metadata, string &pinId);
179 bool setNext(boost::shared_ptr<Module> next, vector<string> &pinIdArr,
180 bool open = true);
181 virtual bool setNext(boost::shared_ptr<Module> next, bool open = true,
182 bool sieve = true); // take all the output pins
183 bool addFeedback(boost::shared_ptr<Module> next, vector<string> &pinIdArr,
184 bool open = true);
185 bool addFeedback(boost::shared_ptr<Module> next,
186 bool open = true); // take all the output pins
187 boost_deque<boost::shared_ptr<Module>> getConnectedModules();
188
189 bool relay(boost::shared_ptr<Module> next, bool open, bool priority = false);
190
191 virtual bool init();
192 void operator()(); // to support boost::thread
193 virtual bool run();
194 bool play(float speed, bool direction = true);
195 bool play(bool play);
196 bool queueStep();
197 virtual bool step();
198 virtual bool stop();
199 virtual bool term();
200 virtual bool isFull();
201 bool isNextModuleQueFull();
202
203 void adaptQueue(boost::shared_ptr<FrameContainerQueueAdapter> queAdapter);
204
205 void register_consumer(boost::function<void(Module *, unsigned short)>, bool bFatal = false);
206 boost::shared_ptr<PaceMaker> getPacer() { return pacer; }
207 static frame_sp getFrameByType(frame_container &frames, int frameType);
208 virtual void flushQue();
209 bool getPlayDirection() { return mDirection; }
210 virtual void flushQueRecursive();
211 virtual void addControlModule(boost::shared_ptr<Module> cModule);
212 void registerHealthCallback(APHealthCallback callback);
213 void executeErrorCallback(const APErrorObject &error);
214 void registerErrorCallback(APErrorCallback callback);
215
217
218protected:
219 virtual boost_deque<frame_sp> getFrames(frame_container &frames);
220 virtual bool process(frame_container &frames) { return false; }
221 virtual bool processEOS(string &pinId) { return true; } // EOS is propagated in stepNonSource for every encountered EOSFrame - pinId is first stream in the map
222 virtual bool processSOS(frame_sp &frame) { return true; } // SOS is Start of Stream
223 virtual bool shouldTriggerSOS();
224 virtual bool produce() { return false; }
225 bool stepNonSource(frame_container &frames);
226 bool preProcessNonSource(frame_container &frames);
227 bool preProcessControl(frame_container &frames);
228 bool isRunning() { return mRunning; }
229
230 void setProps(ModuleProps &props);
231 void fillProps(ModuleProps &props);
232 template <class T>
233 void addPropsToQueue(T &props, bool priority = false)
234 {
235 auto size = props.getSerializeSize();
236 auto frame = makeCommandFrame(size, mPropsChangeMetadata);
237
238 // serialize
239 serialize<T>(props, frame);
240 // add to que
241 frame_container frames;
242 frames.insert(make_pair("props_change", frame));
243 if (!priority)
244 {
245 Module::push(frames);
246 }
247 else
248 {
249 Module::push_back(frames);
250 }
251 }
252 virtual bool handlePropsChange(frame_sp &frame);
253 virtual bool handleCommand(Command::CommandType type, frame_sp &frame);
254 template <class T>
255 bool handlePropsChange(frame_sp &frame, T &props)
256 {
257 // deserialize
258 deSerialize<T>(props, frame);
259
260 // set props
261 Module::setProps(props);
262
263 return true;
264 }
265
266 template <class T>
268 {
269 queueCommand(cmd, true);
270 }
271
272 template <class T>
273 bool queueCommand(T &cmd, bool priority = false)
274 {
275 auto size = cmd.getSerializeSize();
276 auto frame = makeCommandFrame(size, mCommandMetadata);
277
278 Utils::serialize(cmd, frame->data(), size);
279
280 // add to que
281 frame_container frames;
282 frames.insert(make_pair("command", frame));
283 if (priority)
284 {
285 Module::push_back(frames);
286 }
287 else
288 {
289 Module::push(frames);
290 }
291 return true;
292 }
293
294 template <class T>
295 void getCommand(T &cmd, frame_sp &frame)
296 {
297 Utils::deSerialize(cmd, frame->data(), frame->size());
298 }
299
300 bool queuePlayPauseCommand(PlayPauseCommand ppCmd, bool priority = false);
301 frame_sp makeCommandFrame(size_t size, framemetadata_sp &metadata);
302 frame_sp makeFrame(size_t size, string &pinId);
303 frame_sp makeFrame(size_t size); // use only if 1 output pin is there
304 frame_sp makeFrame();
305 frame_sp makeFrame(frame_sp &bigFrame, size_t &newSize, string &pinId);
306 frame_sp getEOSFrame();
307 frame_sp getEmptyFrame();
308
309 void setMetadata(std::string &pinId, framemetadata_sp &metadata);
310
311 virtual bool send(frame_container &frames, bool forceBlockingPush = false);
312 virtual void sendEOS();
313 virtual void sendEOS(frame_sp &frame);
314 virtual void sendMp4ErrorFrame(frame_sp &frame);
315 virtual void sendEoPFrame();
316
317 boost::function<void()> onStepFail;
318 // various behaviours for stepFail:
319 void ignore(int times); // do nothing
320 void stop_onStepfail();
321 void emit_event(unsigned short eventID); // regular events
322 void
323 emit_fatal(unsigned short eventID); // fatal events need a permanent handler
324
325 friend class PipeLine;
326
327 boost::function<void(Module *, unsigned short)> event_consumer;
328 boost::function<void(Module *, unsigned short)> fatal_event_consumer;
329
333
334 virtual bool validateInputPins(); // invoked with setInputPin
335 virtual bool validateOutputPins(); // invoked with addOutputPin
337 {
339 } // invoked during Module::init before anything else
340
341 size_t getNumberOfOutputPins(bool implicit = true)
342 {
343 auto pinCount = mOutputPinIdFrameFactoryMap.size();
344 // override the implicit behaviour
345 if (!implicit)
346 {
347 pinCount += mInputPinIdMetadataMap.size();
348 }
349 return pinCount;
350 }
352 framemetadata_sp getFirstInputMetadata();
353 framemetadata_sp getFirstOutputMetadata();
354 framemetadata_sp getOutputMetadata(string outPinID);
355 metadata_by_pin &getInputMetadata() { return mInputPinIdMetadataMap; }
356 framefactory_by_pin &getOutputFrameFactory()
357 {
359 }
360 framemetadata_sp getInputMetadataByType(int type);
361 int getNumberOfInputsByType(int type);
362 int getNumberOfOutputsByType(int type);
363 framemetadata_sp getOutputMetadataByType(int type);
364 bool isMetadataEmpty(framemetadata_sp &metadata);
365 bool isFrameEmpty(frame_sp &frame);
366 string getInputPinIdByType(int type);
367 string getOutputPinIdByType(int type);
368
369 bool setNext(boost::shared_ptr<Module> next, bool open, bool isFeedback,
370 bool sieve); // take all the output pins
371 bool setNext(boost::shared_ptr<Module> next, vector<string> &pinIdArr,
372 bool open, bool isFeedback, bool sieve);
373 void addInputPin(framemetadata_sp &metadata, string &pinId, bool isFeedback);
374 virtual void
375 addInputPin(framemetadata_sp &metadata,
376 string &pinId); // throws exception if validation fails
377 boost::shared_ptr<FrameContainerQueue> getQue() { return mQue; }
378
379 bool getPlayState() { return mPlay; }
380
381 // only for unit test
382 Connections getConnections() { return mConnections; }
383
384 // following is useful for testing to know whats in queue
385 frame_container try_pop();
386 frame_container pop();
387
388 bool processSourceQue();
389 bool handlePausePlay(bool play);
390 virtual bool handlePausePlay(float speed = 1, bool direction = true);
391 virtual void notifyPlay(bool play) {}
392
393 // makes buffers from frameFactory
395 {
396 public:
397 FFBufferMaker(Module &module);
398 virtual void *make(size_t dataSize);
399 frame_sp getFrame()
400 {
401 return frameIMade;
402 }
403
404 private:
406 frame_sp frameIMade;
407 };
408
410 boost::shared_ptr<Module> controlModule = nullptr;
411
412private:
413 void setSieveDisabledFlag(bool sieve);
414 frame_sp makeFrame(size_t size, framefactory_sp &framefactory);
415 bool push(frame_container frameContainer); // exchanges the buffer
416 bool push_back(frame_container frameContainer);
417 bool try_push(frame_container frameContainer); // tries to exchange the buffer
418
419 bool addEoPFrame(frame_container &frames);
420 bool handleStop();
421
422 template <class T>
423 void serialize(T &props, frame_sp &frame)
424 {
425 boost::iostreams::basic_array_sink<char> device_sink((char *)frame->data(), frame->size());
426 boost::iostreams::stream<boost::iostreams::basic_array_sink<char>> s_sink(device_sink);
427
428 boost::archive::binary_oarchive oa(s_sink);
429 oa << props;
430 }
431
432 template <class T>
433 void deSerialize(T &props, frame_sp &frame)
434 {
435 boost::iostreams::basic_array_source<char> device((char *)frame->data(), frame->size());
436 boost::iostreams::stream<boost::iostreams::basic_array_source<char>> s(device);
437 boost::archive::binary_iarchive ia(s);
438
439 ia >> props;
440 }
441
442 bool shouldForceStep();
443 bool shouldSkip();
444
445 bool isFeedbackEnabled(std::string &moduleId); // get pins and call
446
447 bool mPlay;
449 float mSpeed;
453 string myName;
454 string myId;
455 boost::thread myThread;
456 boost::shared_ptr<FrameContainerQueue> mQue;
458 uint32_t mStopCount;
459 uint32_t mForwardPins;
461 boost::shared_ptr<FrameFactory> mpFrameFactory;
462 boost::shared_ptr<FrameFactory> mpCommandFactory;
463 boost::shared_ptr<PaceMaker> pacer;
464 APErrorCallback mErrorCallback;
465
466 Connections mConnections; // For each module, all the required pins
467 map<string, boost::shared_ptr<Module>> mModules;
468 map<string, bool> mRelay;
469
470 std::map<std::string, bool> mInputPinsDirection;
471 metadata_by_pin mInputPinIdMetadataMap;
472 framefactory_by_pin mOutputPinIdFrameFactoryMap;
473 std::shared_ptr<FIndexStrategy> mFIndexStrategy;
474
475 class Profiler;
476 boost::shared_ptr<Profiler> mProfiler;
477 boost::shared_ptr<ModuleProps> mProps;
478 boost::shared_ptr<QuePushStrategy> mQuePushStrategy;
479
480 framemetadata_sp mCommandMetadata;
481 framemetadata_sp mPropsChangeMetadata;
482 APHealthCallback mHealthCallback;
483};
Definition APErrorObject.h:4
Definition BufferMaker.h:2
CommandType
Definition Command.h:9
FIndexStrategyType
Definition FIndexStrategy.h:9
@ AUTO_INCREMENT
Definition FIndexStrategy.h:10
Definition FrameContainerQueue.h:29
Definition FrameContainerQueue.h:7
Definition Module.h:33
FIndexStrategy::FIndexStrategyType fIndexStrategyType
Definition Module.h:133
size_t qlen
Definition Module.h:111
ModuleProps(FrameFetchStrategy _frameFetchStrategy)
Definition Module.h:82
int skipN
Definition Module.h:127
ModuleProps(float _fps, size_t _qlen, bool _logHealth)
Definition Module.h:68
ModuleProps()
Definition Module.h:40
float fps
Definition Module.h:110
FrameFetchStrategy frameFetchStrategy
Definition Module.h:131
int logHealthFrequency
Definition Module.h:113
bool enableHealthCallBack
Definition Module.h:134
FrameFetchStrategy
Definition Module.h:36
@ PUSH
Definition Module.h:37
@ PULL
Definition Module.h:38
size_t getQLen()
Definition Module.h:96
virtual size_t getSerializeSize()
Definition Module.h:101
int healthUpdateIntervalInSec
Definition Module.h:135
ModuleProps(float _fps)
Definition Module.h:54
friend class boost::serialization::access
Definition Module.h:140
void serialize(Archive &ar, const unsigned int)
Definition Module.h:142
size_t maxConcurrentFrames
Definition Module.h:118
bool logHealth
Definition Module.h:112
int skipD
Definition Module.h:128
QuePushStrategy::QuePushStrategyType quePushStrategyType
Definition Module.h:132
Definition Module.h:395
FFBufferMaker(Module &module)
Definition Module.cpp:20
frame_sp getFrame()
Definition Module.h:399
virtual void * make(size_t dataSize)
Definition Module.cpp:21
frame_sp frameIMade
Definition Module.h:406
Module & myModule
Definition Module.h:405
Definition Module.cpp:33
Definition Module.h:151
boost::function< void()> onStepFail
Definition Module.h:317
framefactory_by_pin & getOutputFrameFactory()
Definition Module.h:356
APHealthCallback mHealthCallback
Definition Module.h:482
virtual void flushQue()
Definition Module.cpp:1203
boost_deque< boost::shared_ptr< Module > > getConnectedModules()
Definition Module.cpp:555
uint32_t mForwardPins
Definition Module.h:459
virtual void notifyPlay(bool play)
Definition Module.h:391
virtual bool processSOS(frame_sp &frame)
Definition Module.h:222
int getNumberOfOutputsByType(int type)
Definition Module.cpp:961
bool getPlayDirection()
Definition Module.h:209
void ignore(int times)
Definition Module.cpp:1661
void deSerialize(T &props, frame_sp &frame)
Definition Module.h:433
virtual bool produce()
Definition Module.h:224
bool addEoPFrame(frame_container &frames)
Definition Module.cpp:1568
enum ModuleState module_state
Definition Module.h:330
bool preProcessNonSource(frame_container &frames)
Definition Module.cpp:1452
virtual bool step()
Definition Module.cpp:1266
bool isFrameEmpty(frame_sp &frame)
Definition Module.cpp:971
frame_container pop()
Definition Module.cpp:644
virtual bool send(frame_container &frames, bool forceBlockingPush=false)
Definition Module.cpp:678
boost::function< void(Module *, unsigned short)> event_consumer
Definition Module.h:327
bool processSourceQue()
Definition Module.cpp:1209
frame_sp makeFrame()
Definition Module.cpp:989
uint32_t mForceStepCount
Definition Module.h:450
virtual bool shouldTriggerSOS()
Definition Module.cpp:1094
string getInputPinIdByType(int type)
Definition Module.cpp:864
bool push_back(frame_container frameContainer)
Definition Module.cpp:630
string getName()
Definition Module.h:171
void register_consumer(boost::function< void(Module *, unsigned short)>, bool bFatal=false)
Definition Module.cpp:1708
boost::shared_ptr< FrameFactory > mpCommandFactory
Definition Module.h:462
boost::shared_ptr< PaceMaker > pacer
Definition Module.h:463
virtual bool init()
Definition Module.cpp:570
bool isMetadataEmpty(framemetadata_sp &metadata)
Definition Module.cpp:966
bool queueStep()
Definition Module.cpp:1151
boost::shared_ptr< FrameContainerQueue > mQue
Definition Module.h:456
virtual void sendEoPFrame()
Definition Module.cpp:1636
double getPipelineFps()
Definition Module.cpp:197
bool stepNonSource(frame_container &frames)
Definition Module.cpp:1545
void setSieveDisabledFlag(bool sieve)
Definition Module.cpp:259
virtual void sendMp4ErrorFrame(frame_sp &frame)
Definition Module.cpp:1381
frame_sp getEOSFrame()
Definition Module.cpp:1031
boost::shared_ptr< PaceMaker > getPacer()
Definition Module.h:206
void setMetadata(std::string &pinId, framemetadata_sp &metadata)
Definition Module.cpp:1025
int getNumberOfInputsByType(int type)
Definition Module.cpp:956
size_t getNumberOfInputPins()
Definition Module.h:351
bool try_push(frame_container frameContainer)
Definition Module.cpp:636
ModuleState getModuleState()
Definition Module.h:332
virtual bool validateInputOutputPins()
Definition Module.h:336
virtual bool process(frame_container &frames)
Definition Module.h:220
Connections mConnections
Definition Module.h:466
bool mRunning
Definition Module.h:457
virtual void flushQueRecursive()
Definition Module.cpp:1192
bool getPlayState()
Definition Module.h:379
Kind
Definition Module.h:155
@ TRANSFORM
Definition Module.h:157
@ SINK
Definition Module.h:158
@ SOURCE
Definition Module.h:156
@ CONTROL
Definition Module.h:159
void emit_fatal(unsigned short eventID)
Definition Module.cpp:1689
bool queuePriorityCommand(T &cmd)
Definition Module.h:267
bool mIsSieveDisabledForAny
Definition Module.h:460
vector< string > getAllOutputPinsByType(int type)
Definition Module.cpp:848
map< string, boost::shared_ptr< Module > > mModules
Definition Module.h:467
bool isRunning()
Definition Module.h:228
void addInputPin(framemetadata_sp &metadata, string &pinId, bool isFeedback)
Definition Module.cpp:468
bool preProcessControl(frame_container &frames)
Definition Module.cpp:1398
boost::thread myThread
Definition Module.h:455
boost::shared_ptr< Module > controlModule
Definition Module.h:410
void registerErrorCallback(APErrorCallback callback)
Definition Module.cpp:1176
bool mDirection
Definition Module.h:448
bool handleStop()
Definition Module.cpp:1602
virtual bool validateInputPins()
Definition Module.cpp:518
string addOutputPin(framemetadata_sp &metadata)
Definition Module.cpp:228
std::map< std::string, bool > mInputPinsDirection
Definition Module.h:470
virtual bool stop()
Definition Module.cpp:1644
void adaptQueue(boost::shared_ptr< FrameContainerQueueAdapter > queAdapter)
Definition Module.cpp:1654
virtual bool run()
Definition Module.cpp:1042
virtual bool isFull()
Definition Module.cpp:646
virtual ~Module()
Definition Module.cpp:181
Kind myNature
Definition Module.h:452
float mSpeed
Definition Module.h:449
framemetadata_sp getFirstOutputMetadata()
Definition Module.cpp:549
bool queueCommand(T &cmd, bool priority=false)
Definition Module.h:273
virtual void sendEOS()
Definition Module.cpp:1347
void registerHealthCallback(APHealthCallback callback)
Definition Module.cpp:1341
string getOutputPinIdByType(int type)
Definition Module.cpp:869
virtual boost_deque< frame_sp > getFrames(frame_container &frames)
Definition Module.cpp:808
boost::shared_ptr< ModuleProps > mProps
Definition Module.h:477
frame_sp makeCommandFrame(size_t size, framemetadata_sp &metadata)
Definition Module.cpp:1008
bool isFeedbackEnabled(std::string &moduleId)
Definition Module.cpp:501
virtual bool processEOS(string &pinId)
Definition Module.h:221
void setModuleState(enum ModuleState es)
Definition Module.h:331
bool relay(boost::shared_ptr< Module > next, bool open, bool priority=false)
Definition Module.cpp:1157
FFBufferMaker createFFBufferMaker()
void serialize(T &props, frame_sp &frame)
Definition Module.h:423
framemetadata_sp getOutputMetadata(string outPinID)
Definition Module.cpp:944
bool push(frame_container frameContainer)
Definition Module.cpp:624
frame_sp getEmptyFrame()
Definition Module.cpp:1033
void emit_event(unsigned short eventID)
Definition Module.cpp:1680
static frame_sp getFrameByType(frame_container &frames, int frameType)
Definition Module.cpp:973
bool setNext(boost::shared_ptr< Module > next, vector< string > &pinIdArr, bool open=true)
Definition Module.cpp:451
boost::function< void(Module *, unsigned short)> fatal_event_consumer
Definition Module.h:328
map< string, bool > mRelay
Definition Module.h:468
framefactory_by_pin mOutputPinIdFrameFactoryMap
Definition Module.h:472
void stop_onStepfail()
Definition Module.cpp:1673
size_t getNumberOfOutputPins(bool implicit=true)
Definition Module.h:341
framemetadata_sp mPropsChangeMetadata
Definition Module.h:481
Kind getNature()
Definition Module.h:170
bool addFeedback(boost::shared_ptr< Module > next, vector< string > &pinIdArr, bool open=true)
Definition Module.cpp:457
void executeErrorCallback(const APErrorObject &error)
Definition Module.cpp:1181
Module(Kind nature, string name, ModuleProps _props)
Definition Module.cpp:144
frame_container try_pop()
Definition Module.cpp:642
bool isNextModuleQueFull()
Definition Module.cpp:662
string myName
Definition Module.h:453
string getId()
Definition Module.h:172
ModuleState
Definition Module.h:162
@ Running
Definition Module.h:164
@ EndOfStreamSocketError
Definition Module.h:166
@ EndOfStreamNormal
Definition Module.h:165
@ Initialized
Definition Module.h:163
bool shouldForceStep()
Definition Module.cpp:1747
virtual void addControlModule(boost::shared_ptr< Module > cModule)
Definition Module.cpp:1171
virtual bool term()
Definition Module.cpp:186
string myId
Definition Module.h:454
bool mPlay
Definition Module.h:447
uint64_t getTickCounter()
Definition Module.cpp:199
framemetadata_sp mCommandMetadata
Definition Module.h:480
virtual bool validateOutputPins()
Definition Module.cpp:531
int mSkipIndex
Definition Module.h:451
bool handlePausePlay(bool play)
Definition Module.cpp:1258
boost::shared_ptr< FrameContainerQueue > getQue()
Definition Module.h:377
framemetadata_sp getInputMetadataByType(int type)
Definition Module.cpp:935
metadata_by_pin mInputPinIdMetadataMap
Definition Module.h:471
metadata_by_pin & getInputMetadata()
Definition Module.h:355
boost::shared_ptr< QuePushStrategy > mQuePushStrategy
Definition Module.h:478
bool queuePlayPauseCommand(PlayPauseCommand ppCmd, bool priority=false)
Definition Module.cpp:1105
framemetadata_sp getFirstInputMetadata()
Definition Module.cpp:544
bool play(float speed, bool direction=true)
Definition Module.cpp:1139
bool handlePropsChange(frame_sp &frame, T &props)
Definition Module.h:255
void setProps(ModuleProps &props)
Definition Module.cpp:201
void operator()()
Definition Module.cpp:1035
APErrorCallback mErrorCallback
Definition Module.h:464
void fillProps(ModuleProps &props)
Definition Module.cpp:221
boost::shared_ptr< Profiler > mProfiler
Definition Module.h:476
uint32_t mStopCount
Definition Module.h:458
Connections getConnections()
Definition Module.h:382
void addPropsToQueue(T &props, bool priority=false)
Definition Module.h:233
boost::shared_ptr< FrameFactory > mpFrameFactory
Definition Module.h:461
void getCommand(T &cmd, frame_sp &frame)
Definition Module.h:295
bool shouldSkip()
Definition Module.cpp:1758
virtual bool handleCommand(Command::CommandType type, frame_sp &frame)
Definition Module.cpp:1720
std::shared_ptr< FIndexStrategy > mFIndexStrategy
Definition Module.h:473
virtual bool handlePropsChange(frame_sp &frame)
Definition Module.cpp:1715
ModuleProps getProps()
Definition Module.cpp:219
framemetadata_sp getOutputMetadataByType(int type)
Definition Module.cpp:940
Definition PaceMaker.h:5
Definition PipeLine.h:10
Definition Command.h:248
QuePushStrategyType
Definition QuePushStrategy.h:12
@ BLOCKING
Definition QuePushStrategy.h:13
static void serialize(T &obj, void *buffer, size_t size)
Definition Utils.h:31
static void deSerialize(T &obj, void *buffer, size_t size)
Definition Utils.h:41