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>
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"
21#include "BufferMaker.h"
22#include "APCallback.h"
24#define DUMMY_CTRL_EOP_PIN "dummy_ctrl_eop_pin"
141 template <
class Archive>
178 void addOutputPin(framemetadata_sp &metadata,
string &pinId);
179 bool setNext(boost::shared_ptr<Module> next, vector<string> &pinIdArr,
181 virtual bool setNext(boost::shared_ptr<Module> next,
bool open =
true,
183 bool addFeedback(boost::shared_ptr<Module> next, vector<string> &pinIdArr,
189 bool relay(boost::shared_ptr<Module> next,
bool open,
bool priority =
false);
194 bool play(
float speed,
bool direction =
true);
203 void adaptQueue(boost::shared_ptr<FrameContainerQueueAdapter> queAdapter);
207 static frame_sp
getFrameByType(frame_container &frames,
int frameType);
219 virtual boost_deque<frame_sp>
getFrames(frame_container &frames);
220 virtual bool process(frame_container &frames) {
return false; }
235 auto size = props.getSerializeSize();
241 frame_container frames;
242 frames.insert(make_pair(
"props_change", frame));
275 auto size = cmd.getSerializeSize();
281 frame_container frames;
282 frames.insert(make_pair(
"command", frame));
302 frame_sp
makeFrame(
size_t size,
string &pinId);
305 frame_sp
makeFrame(frame_sp &bigFrame,
size_t &newSize,
string &pinId);
309 void setMetadata(std::string &pinId, framemetadata_sp &metadata);
311 virtual bool send(frame_container &frames,
bool forceBlockingPush =
false);
313 virtual void sendEOS(frame_sp &frame);
369 bool setNext(boost::shared_ptr<Module> next,
bool open,
bool isFeedback,
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);
377 boost::shared_ptr<FrameContainerQueue>
getQue() {
return mQue; }
386 frame_container
pop();
398 virtual void *
make(
size_t dataSize);
414 frame_sp
makeFrame(
size_t size, framefactory_sp &framefactory);
415 bool push(frame_container frameContainer);
416 bool push_back(frame_container frameContainer);
417 bool try_push(frame_container frameContainer);
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);
428 boost::archive::binary_oarchive oa(s_sink);
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);
456 boost::shared_ptr<FrameContainerQueue>
mQue;
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
FIndexStrategy::FIndexStrategyType fIndexStrategyType
Definition Module.h:133
size_t qlen
Definition Module.h:111
ModuleProps(FrameFetchStrategy _frameFetchStrategy)
Definition Module.h:82
friend class Module
Definition Module.h:138
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
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
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
friend class PipeLine
Definition Module.h:325
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
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