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 std::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 bool isModuleRunning() { return mRunning; } // Public method to check if module is running
203
204 void adaptQueue(boost::shared_ptr<FrameContainerQueueAdapter> queAdapter);
205
206 void register_consumer(boost::function<void(Module *, unsigned short)>, bool bFatal = false);
207 boost::shared_ptr<PaceMaker> getPacer() { return pacer; }
208 static frame_sp getFrameByType(frame_container &frames, int frameType);
209 virtual void flushQue();
210 bool getPlayDirection() { return mDirection; }
211 virtual void flushQueRecursive();
212 virtual void addControlModule(boost::shared_ptr<Module> cModule);
213 void registerHealthCallback(APHealthCallback callback);
214 void executeErrorCallback(const APErrorObject &error);
215 void registerErrorCallback(APErrorCallback callback);
216
218
219protected:
220 virtual boost_deque<frame_sp> getFrames(frame_container &frames);
221 virtual bool process(frame_container &frames) { return false; }
222 virtual bool processEOS(string &pinId) { return true; } // EOS is propagated in stepNonSource for every encountered EOSFrame - pinId is first stream in the map
223 virtual bool processSOS(frame_sp &frame) { return true; } // SOS is Start of Stream
224 virtual bool shouldTriggerSOS();
225 virtual bool produce() { return false; }
226 bool stepNonSource(frame_container &frames);
227 bool preProcessNonSource(frame_container &frames);
228 bool preProcessControl(frame_container &frames);
229 bool isRunning() { return mRunning; }
230
231 void setProps(ModuleProps &props);
232 void fillProps(ModuleProps &props);
233 // Check if the module is ready for queue-based property changes
234 bool canQueueProps() const { return mpCommandFactory != nullptr; }
235 template <class T>
236 void addPropsToQueue(T &props, bool priority = false)
237 {
238 auto size = props.getSerializeSize();
239 auto frame = makeCommandFrame(size, mPropsChangeMetadata);
240
241 // serialize
242 serialize<T>(props, frame);
243 // add to que
244 frame_container frames;
245 frames.insert(make_pair("props_change", frame));
246 if (!priority)
247 {
248 Module::push(frames);
249 }
250 else
251 {
252 Module::push_back(frames);
253 }
254 }
255 virtual bool handlePropsChange(frame_sp &frame);
256 virtual bool handleCommand(Command::CommandType type, frame_sp &frame);
257 template <class T>
258 bool handlePropsChange(frame_sp &frame, T &props)
259 {
260 // deserialize
261 deSerialize<T>(props, frame);
262
263 // set props
264 Module::setProps(props);
265
266 return true;
267 }
268
269 template <class T>
271 {
272 queueCommand(cmd, true);
273 }
274
275 template <class T>
276 bool queueCommand(T &cmd, bool priority = false)
277 {
278 auto size = cmd.getSerializeSize();
279 auto frame = makeCommandFrame(size, mCommandMetadata);
280
281 Utils::serialize(cmd, frame->data(), size);
282
283 // add to que
284 frame_container frames;
285 frames.insert(make_pair("command", frame));
286 if (priority)
287 {
288 Module::push_back(frames);
289 }
290 else
291 {
292 Module::push(frames);
293 }
294 return true;
295 }
296
297 template <class T>
298 void getCommand(T &cmd, frame_sp &frame)
299 {
300 Utils::deSerialize(cmd, frame->data(), frame->size());
301 }
302
303 bool queuePlayPauseCommand(PlayPauseCommand ppCmd, bool priority = false);
304 frame_sp makeCommandFrame(size_t size, framemetadata_sp &metadata);
305 frame_sp makeFrame(size_t size, string &pinId);
306 frame_sp makeFrame(size_t size); // use only if 1 output pin is there
307 frame_sp makeFrame();
308 frame_sp makeFrame(frame_sp &bigFrame, size_t &newSize, string &pinId);
309 frame_sp getEOSFrame();
310 frame_sp getEmptyFrame();
311
312 void setMetadata(std::string &pinId, framemetadata_sp &metadata);
313
314 virtual bool send(frame_container &frames, bool forceBlockingPush = false);
315 virtual void sendEOS();
316 virtual void sendEOS(frame_sp &frame);
317 virtual void sendMp4ErrorFrame(frame_sp &frame);
318 virtual void sendEoPFrame();
319
320 boost::function<void()> onStepFail;
321 // various behaviours for stepFail:
322 void ignore(int times); // do nothing
323 void stop_onStepfail();
324 void emit_event(unsigned short eventID); // regular events
325 void
326 emit_fatal(unsigned short eventID); // fatal events need a permanent handler
327
328 friend class PipeLine;
329
330 boost::function<void(Module *, unsigned short)> event_consumer;
331 boost::function<void(Module *, unsigned short)> fatal_event_consumer;
332
336
337 virtual bool validateInputPins(); // invoked with setInputPin
338 virtual bool validateOutputPins(); // invoked with addOutputPin
340 {
342 } // invoked during Module::init before anything else
343
344 size_t getNumberOfOutputPins(bool implicit = true)
345 {
346 auto pinCount = mOutputPinIdFrameFactoryMap.size();
347 // override the implicit behaviour
348 if (!implicit)
349 {
350 pinCount += mInputPinIdMetadataMap.size();
351 }
352 return pinCount;
353 }
355 framemetadata_sp getFirstInputMetadata();
356 framemetadata_sp getFirstOutputMetadata();
357 framemetadata_sp getOutputMetadata(string outPinID);
358 metadata_by_pin &getInputMetadata() { return mInputPinIdMetadataMap; }
359 framefactory_by_pin &getOutputFrameFactory()
360 {
362 }
363 framemetadata_sp getInputMetadataByType(int type);
364 int getNumberOfInputsByType(int type);
365 int getNumberOfOutputsByType(int type);
366 framemetadata_sp getOutputMetadataByType(int type);
367 bool isMetadataEmpty(framemetadata_sp &metadata);
368 bool isFrameEmpty(frame_sp &frame);
369 string getInputPinIdByType(int type);
370 string getOutputPinIdByType(int type);
371
372 bool setNext(boost::shared_ptr<Module> next, bool open, bool isFeedback,
373 bool sieve); // take all the output pins
374 bool setNext(boost::shared_ptr<Module> next, vector<string> &pinIdArr,
375 bool open, bool isFeedback, bool sieve);
376 void addInputPin(framemetadata_sp &metadata, string &pinId, bool isFeedback);
377 virtual void
378 addInputPin(framemetadata_sp &metadata,
379 string &pinId); // throws exception if validation fails
380 boost::shared_ptr<FrameContainerQueue> getQue() { return mQue; }
381
382 bool getPlayState() { return mPlay; }
383
384 // only for unit test
385 Connections getConnections() { return mConnections; }
386
387 // following is useful for testing to know whats in queue
388 frame_container try_pop();
389 frame_container pop();
390
391 bool processSourceQue();
392 bool handlePausePlay(bool play);
393 virtual bool handlePausePlay(float speed = 1, bool direction = true);
394 virtual void notifyPlay(bool play) {}
395
396 // makes buffers from frameFactory
398 {
399 public:
400 FFBufferMaker(Module &module);
401 virtual void *make(size_t dataSize);
402 frame_sp getFrame()
403 {
404 return frameIMade;
405 }
406
407 private:
409 frame_sp frameIMade;
410 };
411
413 boost::shared_ptr<Module> controlModule = nullptr;
414
415private:
416 void setSieveDisabledFlag(bool sieve);
417 frame_sp makeFrame(size_t size, framefactory_sp &framefactory);
418 bool push(frame_container frameContainer); // exchanges the buffer
419 bool push_back(frame_container frameContainer);
420 bool try_push(frame_container frameContainer); // tries to exchange the buffer
421
422 bool addEoPFrame(frame_container &frames);
423 bool handleStop();
424
425 template <class T>
426 void serialize(T &props, frame_sp &frame)
427 {
428 boost::iostreams::basic_array_sink<char> device_sink((char *)frame->data(), frame->size());
429 boost::iostreams::stream<boost::iostreams::basic_array_sink<char>> s_sink(device_sink);
430
431 boost::archive::binary_oarchive oa(s_sink);
432 oa << props;
433 }
434
435 template <class T>
436 void deSerialize(T &props, frame_sp &frame)
437 {
438 boost::iostreams::basic_array_source<char> device((char *)frame->data(), frame->size());
439 boost::iostreams::stream<boost::iostreams::basic_array_source<char>> s(device);
440 boost::archive::binary_iarchive ia(s);
441
442 ia >> props;
443 }
444
445 bool shouldForceStep();
446 bool shouldSkip();
447
448 bool isFeedbackEnabled(std::string &moduleId); // get pins and call
449
450 bool mPlay;
452 float mSpeed;
456 string myName;
457 string myId;
458 std::thread myThread;
459 boost::shared_ptr<FrameContainerQueue> mQue;
461 uint32_t mStopCount;
462 uint32_t mForwardPins;
464 boost::shared_ptr<FrameFactory> mpFrameFactory;
465 boost::shared_ptr<FrameFactory> mpCommandFactory;
466 boost::shared_ptr<PaceMaker> pacer;
467 APErrorCallback mErrorCallback;
468
469 Connections mConnections; // For each module, all the required pins
470 map<string, boost::shared_ptr<Module>> mModules;
471 map<string, bool> mRelay;
472
473 std::map<std::string, bool> mInputPinsDirection;
474 metadata_by_pin mInputPinIdMetadataMap;
475 framefactory_by_pin mOutputPinIdFrameFactoryMap;
476 std::shared_ptr<FIndexStrategy> mFIndexStrategy;
477
478 class Profiler;
479 boost::shared_ptr<Profiler> mProfiler;
480 boost::shared_ptr<ModuleProps> mProps;
481 boost::shared_ptr<QuePushStrategy> mQuePushStrategy;
482
483 framemetadata_sp mCommandMetadata;
484 framemetadata_sp mPropsChangeMetadata;
485 APHealthCallback mHealthCallback;
486};
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:398
FFBufferMaker(Module &module)
Definition Module.cpp:21
frame_sp getFrame()
Definition Module.h:402
virtual void * make(size_t dataSize)
Definition Module.cpp:22
frame_sp frameIMade
Definition Module.h:409
Module & myModule
Definition Module.h:408
Definition Module.cpp:34
Definition Module.h:151
boost::function< void()> onStepFail
Definition Module.h:320
framefactory_by_pin & getOutputFrameFactory()
Definition Module.h:359
APHealthCallback mHealthCallback
Definition Module.h:485
virtual void flushQue()
Definition Module.cpp:1204
boost_deque< boost::shared_ptr< Module > > getConnectedModules()
Definition Module.cpp:556
uint32_t mForwardPins
Definition Module.h:462
virtual void notifyPlay(bool play)
Definition Module.h:394
virtual bool processSOS(frame_sp &frame)
Definition Module.h:223
int getNumberOfOutputsByType(int type)
Definition Module.cpp:962
bool getPlayDirection()
Definition Module.h:210
void ignore(int times)
Definition Module.cpp:1662
void deSerialize(T &props, frame_sp &frame)
Definition Module.h:436
virtual bool produce()
Definition Module.h:225
bool addEoPFrame(frame_container &frames)
Definition Module.cpp:1569
enum ModuleState module_state
Definition Module.h:333
bool preProcessNonSource(frame_container &frames)
Definition Module.cpp:1453
bool isModuleRunning()
Definition Module.h:202
virtual bool step()
Definition Module.cpp:1267
bool isFrameEmpty(frame_sp &frame)
Definition Module.cpp:972
frame_container pop()
Definition Module.cpp:645
virtual bool send(frame_container &frames, bool forceBlockingPush=false)
Definition Module.cpp:679
boost::function< void(Module *, unsigned short)> event_consumer
Definition Module.h:330
bool processSourceQue()
Definition Module.cpp:1210
frame_sp makeFrame()
Definition Module.cpp:990
uint32_t mForceStepCount
Definition Module.h:453
virtual bool shouldTriggerSOS()
Definition Module.cpp:1095
string getInputPinIdByType(int type)
Definition Module.cpp:865
bool push_back(frame_container frameContainer)
Definition Module.cpp:631
string getName()
Definition Module.h:171
void register_consumer(boost::function< void(Module *, unsigned short)>, bool bFatal=false)
Definition Module.cpp:1709
boost::shared_ptr< FrameFactory > mpCommandFactory
Definition Module.h:465
boost::shared_ptr< PaceMaker > pacer
Definition Module.h:466
virtual bool init()
Definition Module.cpp:571
bool isMetadataEmpty(framemetadata_sp &metadata)
Definition Module.cpp:967
bool queueStep()
Definition Module.cpp:1152
boost::shared_ptr< FrameContainerQueue > mQue
Definition Module.h:459
virtual void sendEoPFrame()
Definition Module.cpp:1637
double getPipelineFps()
Definition Module.cpp:198
bool stepNonSource(frame_container &frames)
Definition Module.cpp:1546
void setSieveDisabledFlag(bool sieve)
Definition Module.cpp:260
virtual void sendMp4ErrorFrame(frame_sp &frame)
Definition Module.cpp:1382
frame_sp getEOSFrame()
Definition Module.cpp:1032
boost::shared_ptr< PaceMaker > getPacer()
Definition Module.h:207
void setMetadata(std::string &pinId, framemetadata_sp &metadata)
Definition Module.cpp:1026
int getNumberOfInputsByType(int type)
Definition Module.cpp:957
size_t getNumberOfInputPins()
Definition Module.h:354
bool try_push(frame_container frameContainer)
Definition Module.cpp:637
ModuleState getModuleState()
Definition Module.h:335
virtual bool validateInputOutputPins()
Definition Module.h:339
virtual bool process(frame_container &frames)
Definition Module.h:221
Connections mConnections
Definition Module.h:469
bool mRunning
Definition Module.h:460
virtual void flushQueRecursive()
Definition Module.cpp:1193
bool getPlayState()
Definition Module.h:382
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:1690
bool queuePriorityCommand(T &cmd)
Definition Module.h:270
bool canQueueProps() const
Definition Module.h:234
bool mIsSieveDisabledForAny
Definition Module.h:463
vector< string > getAllOutputPinsByType(int type)
Definition Module.cpp:849
map< string, boost::shared_ptr< Module > > mModules
Definition Module.h:470
bool isRunning()
Definition Module.h:229
void addInputPin(framemetadata_sp &metadata, string &pinId, bool isFeedback)
Definition Module.cpp:469
bool preProcessControl(frame_container &frames)
Definition Module.cpp:1399
boost::shared_ptr< Module > controlModule
Definition Module.h:413
void registerErrorCallback(APErrorCallback callback)
Definition Module.cpp:1177
bool mDirection
Definition Module.h:451
bool handleStop()
Definition Module.cpp:1603
virtual bool validateInputPins()
Definition Module.cpp:519
string addOutputPin(framemetadata_sp &metadata)
Definition Module.cpp:229
std::map< std::string, bool > mInputPinsDirection
Definition Module.h:473
virtual bool stop()
Definition Module.cpp:1645
void adaptQueue(boost::shared_ptr< FrameContainerQueueAdapter > queAdapter)
Definition Module.cpp:1655
virtual bool run()
Definition Module.cpp:1043
virtual bool isFull()
Definition Module.cpp:647
virtual ~Module()
Definition Module.cpp:182
Kind myNature
Definition Module.h:455
float mSpeed
Definition Module.h:452
framemetadata_sp getFirstOutputMetadata()
Definition Module.cpp:550
bool queueCommand(T &cmd, bool priority=false)
Definition Module.h:276
virtual void sendEOS()
Definition Module.cpp:1348
void registerHealthCallback(APHealthCallback callback)
Definition Module.cpp:1342
string getOutputPinIdByType(int type)
Definition Module.cpp:870
virtual boost_deque< frame_sp > getFrames(frame_container &frames)
Definition Module.cpp:809
boost::shared_ptr< ModuleProps > mProps
Definition Module.h:480
frame_sp makeCommandFrame(size_t size, framemetadata_sp &metadata)
Definition Module.cpp:1009
bool isFeedbackEnabled(std::string &moduleId)
Definition Module.cpp:502
virtual bool processEOS(string &pinId)
Definition Module.h:222
void setModuleState(enum ModuleState es)
Definition Module.h:334
bool relay(boost::shared_ptr< Module > next, bool open, bool priority=false)
Definition Module.cpp:1158
FFBufferMaker createFFBufferMaker()
void serialize(T &props, frame_sp &frame)
Definition Module.h:426
framemetadata_sp getOutputMetadata(string outPinID)
Definition Module.cpp:945
bool push(frame_container frameContainer)
Definition Module.cpp:625
frame_sp getEmptyFrame()
Definition Module.cpp:1034
void emit_event(unsigned short eventID)
Definition Module.cpp:1681
static frame_sp getFrameByType(frame_container &frames, int frameType)
Definition Module.cpp:974
bool setNext(boost::shared_ptr< Module > next, vector< string > &pinIdArr, bool open=true)
Definition Module.cpp:452
boost::function< void(Module *, unsigned short)> fatal_event_consumer
Definition Module.h:331
map< string, bool > mRelay
Definition Module.h:471
framefactory_by_pin mOutputPinIdFrameFactoryMap
Definition Module.h:475
void stop_onStepfail()
Definition Module.cpp:1674
size_t getNumberOfOutputPins(bool implicit=true)
Definition Module.h:344
framemetadata_sp mPropsChangeMetadata
Definition Module.h:484
Kind getNature()
Definition Module.h:170
bool addFeedback(boost::shared_ptr< Module > next, vector< string > &pinIdArr, bool open=true)
Definition Module.cpp:458
void executeErrorCallback(const APErrorObject &error)
Definition Module.cpp:1182
Module(Kind nature, string name, ModuleProps _props)
Definition Module.cpp:145
frame_container try_pop()
Definition Module.cpp:643
bool isNextModuleQueFull()
Definition Module.cpp:663
string myName
Definition Module.h:456
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:1748
virtual void addControlModule(boost::shared_ptr< Module > cModule)
Definition Module.cpp:1172
virtual bool term()
Definition Module.cpp:187
string myId
Definition Module.h:457
bool mPlay
Definition Module.h:450
uint64_t getTickCounter()
Definition Module.cpp:200
framemetadata_sp mCommandMetadata
Definition Module.h:483
virtual bool validateOutputPins()
Definition Module.cpp:532
int mSkipIndex
Definition Module.h:454
bool handlePausePlay(bool play)
Definition Module.cpp:1259
boost::shared_ptr< FrameContainerQueue > getQue()
Definition Module.h:380
framemetadata_sp getInputMetadataByType(int type)
Definition Module.cpp:936
metadata_by_pin mInputPinIdMetadataMap
Definition Module.h:474
metadata_by_pin & getInputMetadata()
Definition Module.h:358
boost::shared_ptr< QuePushStrategy > mQuePushStrategy
Definition Module.h:481
bool queuePlayPauseCommand(PlayPauseCommand ppCmd, bool priority=false)
Definition Module.cpp:1106
framemetadata_sp getFirstInputMetadata()
Definition Module.cpp:545
bool play(float speed, bool direction=true)
Definition Module.cpp:1140
bool handlePropsChange(frame_sp &frame, T &props)
Definition Module.h:258
void setProps(ModuleProps &props)
Definition Module.cpp:202
std::thread myThread
Definition Module.h:458
void operator()()
Definition Module.cpp:1036
APErrorCallback mErrorCallback
Definition Module.h:467
void fillProps(ModuleProps &props)
Definition Module.cpp:222
boost::shared_ptr< Profiler > mProfiler
Definition Module.h:479
uint32_t mStopCount
Definition Module.h:461
Connections getConnections()
Definition Module.h:385
void addPropsToQueue(T &props, bool priority=false)
Definition Module.h:236
boost::shared_ptr< FrameFactory > mpFrameFactory
Definition Module.h:464
void getCommand(T &cmd, frame_sp &frame)
Definition Module.h:298
bool shouldSkip()
Definition Module.cpp:1759
virtual bool handleCommand(Command::CommandType type, frame_sp &frame)
Definition Module.cpp:1721
std::shared_ptr< FIndexStrategy > mFIndexStrategy
Definition Module.h:476
virtual bool handlePropsChange(frame_sp &frame)
Definition Module.cpp:1716
ModuleProps getProps()
Definition Module.cpp:220
framemetadata_sp getOutputMetadataByType(int type)
Definition Module.cpp:941
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