Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
MultimediaQueueXform.h
1#pragma once
2
3#include "Module.h"
4
7{
8public:
10 {
11 // watermark can be passed in millisec or number of frames
12 lowerWaterMark = 10000;
13 upperWaterMark = 15000;
14 isMapDelayInTime = true;
15 }
16 MultimediaQueueXformProps(uint32_t queueLength = 10000, uint16_t tolerance = 5000, int _mmqFps = 24, bool _isDelayTime = true)
17 {
18 lowerWaterMark = queueLength;
19 upperWaterMark = queueLength + tolerance;
20 isMapDelayInTime = _isDelayTime;
21 mmqFps = _mmqFps;
22 }
23
24 uint32_t lowerWaterMark; // Length of multimedia queue in terms of time or number of frames
25 uint32_t upperWaterMark; //Length of the multimedia queue when the next module queue is full
27 int mmqFps;
28
30 {
31 return ModuleProps::getSerializeSize() + sizeof(lowerWaterMark) + sizeof(upperWaterMark) + sizeof(isMapDelayInTime) + sizeof(mmqFps);
32 }
33
38
39private:
41
42 template<class Archive>
43 void serialize(Archive &ar, const unsigned int version)
44 {
45 ar & boost::serialization::base_object<ModuleProps>(*this);
46 ar & lowerWaterMark;
47 ar & upperWaterMark;
49 ar & mmqFps;
50 }
51};
52
53class State;
54
56public:
58
60 }
61 bool init();
62 bool term();
63 void setState(uint64_t ts, uint64_t te);
64 bool handleCommand(Command::CommandType type, frame_sp& frame);
65 bool allowFrames(uint64_t& ts, uint64_t& te);
66 void addInputPin(framemetadata_sp& metadata, string& pinId);
69 bool handlePropsChange(frame_sp& frame);
70 boost::shared_ptr<State> mState;
72 boost::shared_ptr<FrameContainerQueue> getQue();
73 void extractFramesAndEnqueue(boost::shared_ptr<FrameContainerQueue>& FrameQueue);
74 void setMmqFps(int fps);
75 void setPlaybackSpeed(float playbackSpeed);
76 void stopExportFrames();
77protected:
78 bool process(frame_container& frames);
79 bool validateInputPins();
80 bool validateOutputPins();
82
83private:
84 void getQueueBoundaryTS(uint64_t& tOld, uint64_t& tNew);
85 std::string mOutputPinId;
86 bool pushToNextModule = true;
87 bool reset = false;
88 uint64_t startTimeSaved = 0;
89 uint64_t endTimeSaved = 0;
90 uint64_t queryStartTime = 0;
91 uint64_t queryEndTime = 0;
92 bool direction = true;
94 using sys_clock = std::chrono::system_clock;
95 sys_clock::time_point frame_begin;
96 std::chrono::nanoseconds myTargetFrameLen;
97 std::chrono::nanoseconds myNextWait;
100 bool initDone = false;
102 int initialFps = 0;
103 float speed = 1;
105};
CommandType
Definition Command.h:9
FrameType
Definition FrameMetadata.h:29
Definition Module.h:33
virtual size_t getSerializeSize()
Definition Module.h:101
Definition Module.h:151
Definition MultimediaQueueXform.h:7
bool readLoop
Definition MultimediaQueueXform.h:37
void serialize(Archive &ar, const unsigned int version)
Definition MultimediaQueueXform.h:43
MultimediaQueueXformProps(uint32_t queueLength=10000, uint16_t tolerance=5000, int _mmqFps=24, bool _isDelayTime=true)
Definition MultimediaQueueXform.h:16
bool isMapDelayInTime
Definition MultimediaQueueXform.h:26
uint32_t lowerWaterMark
Definition MultimediaQueueXform.h:24
MultimediaQueueXformProps()
Definition MultimediaQueueXform.h:9
int maxIndex
Definition MultimediaQueueXform.h:35
int mmqFps
Definition MultimediaQueueXform.h:27
friend class boost::serialization::access
Definition MultimediaQueueXform.h:40
int startIndex
Definition MultimediaQueueXform.h:34
string strFullFileNameWithPattern
Definition MultimediaQueueXform.h:36
size_t getSerializeSize()
Definition MultimediaQueueXform.h:29
uint32_t upperWaterMark
Definition MultimediaQueueXform.h:25
Definition MultimediaQueueXform.h:55
bool validateOutputPins()
Definition MultimediaQueueXform.cpp:531
uint64_t startTimeSaved
Definition MultimediaQueueXform.h:88
void setMmqFps(int fps)
Definition MultimediaQueueXform.cpp:1077
std::chrono::system_clock sys_clock
Definition MultimediaQueueXform.h:94
bool validateInputOutputPins()
Definition MultimediaQueueXform.cpp:536
boost::shared_ptr< State > mState
Definition MultimediaQueueXform.h:70
void stopExportFrames()
Definition MultimediaQueueXform.cpp:1144
boost::shared_ptr< FrameContainerQueue > getQue()
Definition MultimediaQueueXform.cpp:662
void extractFramesAndEnqueue(boost::shared_ptr< FrameContainerQueue > &FrameQueue)
Definition MultimediaQueueXform.cpp:632
bool initDone
Definition MultimediaQueueXform.h:100
uint64_t latestFrameExportedFromProcess
Definition MultimediaQueueXform.h:99
bool reset
Definition MultimediaQueueXform.h:87
void addInputPin(framemetadata_sp &metadata, string &pinId)
Definition MultimediaQueueXform.cpp:541
void getQueueBoundaryTS(uint64_t &tOld, uint64_t &tNew)
Definition MultimediaQueueXform.cpp:582
uint64_t queryStartTime
Definition MultimediaQueueXform.h:90
void setProps(MultimediaQueueXformProps _props)
Definition MultimediaQueueXform.cpp:1130
FrameMetadata::FrameType mFrameType
Definition MultimediaQueueXform.h:93
bool process(frame_container &frames)
Definition MultimediaQueueXform.cpp:889
MultimediaQueueXformProps getProps()
Definition MultimediaQueueXform.cpp:1124
float speed
Definition MultimediaQueueXform.h:103
sys_clock::time_point frame_begin
Definition MultimediaQueueXform.h:95
bool direction
Definition MultimediaQueueXform.h:92
void setPlaybackSpeed(float playbackSpeed)
Definition MultimediaQueueXform.cpp:1083
MultimediaQueueXform(MultimediaQueueXformProps _props)
Definition MultimediaQueueXform.cpp:521
uint64_t queryEndTime
Definition MultimediaQueueXform.h:91
uint64_t endTimeSaved
Definition MultimediaQueueXform.h:89
int framesToSkip
Definition MultimediaQueueXform.h:101
bool handleCommand(Command::CommandType type, frame_sp &frame)
Definition MultimediaQueueXform.cpp:667
bool validateInputPins()
Definition MultimediaQueueXform.cpp:526
std::string mOutputPinId
Definition MultimediaQueueXform.h:85
bool exportFrames
Definition MultimediaQueueXform.h:104
bool init()
Definition MultimediaQueueXform.cpp:548
MultimediaQueueXformProps mProps
Definition MultimediaQueueXform.h:71
bool allowFrames(uint64_t &ts, uint64_t &te)
Definition MultimediaQueueXform.cpp:877
int initialFps
Definition MultimediaQueueXform.h:102
void setState(uint64_t ts, uint64_t te)
Definition MultimediaQueueXform.cpp:591
bool term()
Definition MultimediaQueueXform.cpp:576
bool pushToNextModule
Definition MultimediaQueueXform.h:86
bool handlePropsChange(frame_sp &frame)
Definition MultimediaQueueXform.cpp:1105
std::chrono::nanoseconds myTargetFrameLen
Definition MultimediaQueueXform.h:96
uint64_t latestFrameExportedFromHandleCmd
Definition MultimediaQueueXform.h:98
std::chrono::nanoseconds myNextWait
Definition MultimediaQueueXform.h:97
virtual ~MultimediaQueueXform()
Definition MultimediaQueueXform.h:59
Definition GTKView.cpp:4