Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
Command.h
1#pragma once
2
3#include "Utils.h"
4#include "Logger.h"
5#include "AIPExceptions.h"
6
7class Command {
8public:
28
30
31 Command(CommandType _type) { type = _type; }
32
33 size_t getSerializeSize() { return 1024 + sizeof(type); }
34
35 CommandType getType() { return type; }
36
37private:
39 template <class Archive>
40 void serialize(Archive &ar, const unsigned int /* file_version */) {
41 ar & type;
42 }
43
45};
46
47/*
48NoneCommand was introduced for getCommandType to work
49boost::serialization was adding some extra bytes for child class
50*/
51class NoneCommand : public Command {
52public:
54
55 static Command::CommandType getCommandType(void *buffer, size_t size) {
56 NoneCommand cmd;
57 Utils::deSerialize(cmd, buffer, size);
58
59 return cmd.getType();
60 }
61
62private:
64 template <class Archive>
65 void serialize(Archive &ar, const unsigned int version) {
66 ar &boost::serialization::base_object<Command>(*this);
67 }
68};
69
71public:
75
78 currentIndex = index;
79 }
80
82 return Command::getSerializeSize() + sizeof(currentIndex);
83 }
84
85 uint64_t getCurrentIndex() { return currentIndex; }
86
87private:
89 template <class Archive>
90 void serialize(Archive &ar, const unsigned int /* file_version */) {
91 ar &boost::serialization::base_object<Command>(*this);
92
93 ar & currentIndex;
94 }
95
96 uint64_t currentIndex;
97};
98
99class RelayCommand : public Command {
100public:
102 nextModuleId = "";
103 open = true;
104 }
105
106 RelayCommand(std::string &_nextModuleId, bool _open)
108 nextModuleId = _nextModuleId;
109 open = _open;
110 }
111
113 return Command::getSerializeSize() + sizeof(nextModuleId) +
114 nextModuleId.length() + sizeof(open) + 1024;
115 }
116
117 std::string nextModuleId;
118 bool open;
119
120private:
122 template <class Archive>
123 void serialize(Archive &ar, const unsigned int /* file_version */) {
124 ar &boost::serialization::base_object<Command>(*this);
125
126 ar & nextModuleId & open;
127 }
128};
129
130class StepCommand : public Command {
131public:
133
135
136private:
138 template <class Archive>
139 void serialize(Archive &ar, const unsigned int /* file_version */) {
140 ar &boost::serialization::base_object<Command>(*this);
141 }
142};
143
145public:
147
149 return Command::getSerializeSize() + sizeof(numOfFrames);
150 }
151
153
154private:
156 template <class Archive>
157 void serialize(Archive &ar, const unsigned int /* file_version */) {
158 ar &boost::serialization::base_object<Command>(*this);
159 ar & numOfFrames;
160 }
161};
162
164public:
166
168
169private:
171 template <class Archive>
172 void serialize(Archive &ar, const unsigned int /* file_version */) {
173 ar &boost::serialization::base_object<Command>(*this);
174 }
175};
176
178public:
180
182 return Command::getSerializeSize() + sizeof(width) + sizeof(height);
183 }
184 int width;
186
187private:
189 template <class Archive>
190 void serialize(Archive &ar, const unsigned int /* file_version */) {
191 ar &boost::serialization::base_object<Command>(*this);
192 ar & width;
193 ar & height;
194 }
195};
196
197class ExportMMQ : public Command {
198public:
200
202 return Command::getSerializeSize() + sizeof(startTime) + sizeof(endTime) +
203 sizeof(direction);
204 }
205
206 int64_t startTime = 0;
207 int64_t endTime = 0;
208 bool direction = true;
209
210private:
212 template <class Archive>
213 void serialize(Archive &ar, const unsigned int /* file_version */) {
214 ar &boost::serialization::base_object<Command>(*this);
215 ar & startTime;
216 ar & endTime;
217 ar & direction;
218 }
219};
220
221class Mp4SeekCommand : public Command {
222public:
224
225 Mp4SeekCommand(uint64_t _skipTS, bool _forceReopen = false)
227 seekStartTS = _skipTS;
228 forceReopen = _forceReopen;
229 }
230
232 return 128 + sizeof(Mp4SeekCommand) + sizeof(seekStartTS) +
234 }
235
236 uint64_t seekStartTS = 0;
237 bool forceReopen = false;
238
239private:
241 template <class Archive> void serialize(Archive &ar, const unsigned int) {
242 ar &boost::serialization::base_object<Command>(*this);
243 ar & seekStartTS;
244 ar & forceReopen;
245 }
246};
247
248class PlayPauseCommand : public Command {
249public:
251
252 PlayPauseCommand(float _speed, bool _direction)
254
255 if (_speed != 0 && _speed != 1) {
256 LOG_ERROR << "Fractional speed is not yet supported.";
257 throw AIPException(AIP_FATAL, "Fractional speed is not yet supported.");
258 }
259 speed = _speed;
260 direction = _direction;
261 }
262
264 return sizeof(PlayPauseCommand) + sizeof(speed) + sizeof(direction) +
266 }
267
268 // play speed of the module at any given fps
269 float speed = 1;
270 // fwd = 1, bwd = 0
271 bool direction = 1;
272
273private:
275 template <class Archive> void serialize(Archive &ar, const unsigned int) {
276 ar &boost::serialization::base_object<Command>(*this);
277 ar & speed;
278 ar & direction;
279 }
280};
281
283{
284public:
288
290 {
291 return Command::getSerializeSize() + sizeof(playbackFps) + sizeof(playbackSpeed) + sizeof(gop);
292 }
293
296 int gop;
297
298private:
300 template<class Archive>
301 void serialize(Archive& ar, const unsigned int /* file_version */)
302 {
303 ar& boost::serialization::base_object<Command>(*this);
304 ar& playbackFps;
305 ar& playbackSpeed;
306 }
307};
Definition Command.h:7
Command()
Definition Command.h:29
CommandType getType()
Definition Command.h:35
Command(CommandType _type)
Definition Command.h:31
size_t getSerializeSize()
Definition Command.h:33
friend class boost::serialization::access
Definition Command.h:38
void serialize(Archive &ar, const unsigned int)
Definition Command.h:40
CommandType
Definition Command.h:9
@ SendMMQTimestamps
Definition Command.h:24
@ ValvePassThrough
Definition Command.h:14
@ CreateWindow
Definition Command.h:21
@ Seek
Definition Command.h:16
@ FileReaderModule
Definition Command.h:11
@ MP4WriterLastTS
Definition Command.h:17
@ NVRCommandExportView
Definition Command.h:23
@ SendLastGTKGLRenderTS
Definition Command.h:25
@ Mp4ErrorHandle
Definition Command.h:18
@ DecoderPlaybackSpeed
Definition Command.h:26
@ Relay
Definition Command.h:12
@ PlayPause
Definition Command.h:19
@ Step
Definition Command.h:13
@ ExportMMQ
Definition Command.h:15
@ DeleteWindow
Definition Command.h:20
@ None
Definition Command.h:10
CommandType type
Definition Command.h:44
Definition Command.h:283
int playbackFps
Definition Command.h:294
size_t getSerializeSize()
Definition Command.h:289
int gop
Definition Command.h:296
void serialize(Archive &ar, const unsigned int)
Definition Command.h:301
float playbackSpeed
Definition Command.h:295
friend class boost::serialization::access
Definition Command.h:299
DecoderPlaybackSpeed()
Definition Command.h:285
Definition Command.h:163
void serialize(Archive &ar, const unsigned int)
Definition Command.h:172
size_t getSerializeSize()
Definition Command.h:167
EglRendererCloseWindow()
Definition Command.h:165
friend class boost::serialization::access
Definition Command.h:170
Definition Command.h:177
int width
Definition Command.h:184
int height
Definition Command.h:185
void serialize(Archive &ar, const unsigned int)
Definition Command.h:190
EglRendererCreateWindow()
Definition Command.h:179
size_t getSerializeSize()
Definition Command.h:181
friend class boost::serialization::access
Definition Command.h:188
Definition Command.h:197
int64_t startTime
Definition Command.h:206
ExportMMQ()
Definition Command.h:199
bool direction
Definition Command.h:208
int64_t endTime
Definition Command.h:207
void serialize(Archive &ar, const unsigned int)
Definition Command.h:213
size_t getSerializeSize()
Definition Command.h:201
friend class boost::serialization::access
Definition Command.h:211
Definition Command.h:70
FileReaderModuleCommand()
Definition Command.h:72
FileReaderModuleCommand(uint64_t index)
Definition Command.h:76
uint64_t getCurrentIndex()
Definition Command.h:85
void serialize(Archive &ar, const unsigned int)
Definition Command.h:90
size_t getSerializeSize()
Definition Command.h:81
friend class boost::serialization::access
Definition Command.h:88
uint64_t currentIndex
Definition Command.h:96
Definition FileReaderModule.h:63
Definition Command.h:221
Mp4SeekCommand(uint64_t _skipTS, bool _forceReopen=false)
Definition Command.h:225
size_t getSerializeSize()
Definition Command.h:231
bool forceReopen
Definition Command.h:237
Mp4SeekCommand()
Definition Command.h:223
void serialize(Archive &ar, const unsigned int)
Definition Command.h:241
uint64_t seekStartTS
Definition Command.h:236
friend class boost::serialization::access
Definition Command.h:240
Definition Command.h:51
NoneCommand()
Definition Command.h:53
void serialize(Archive &ar, const unsigned int version)
Definition Command.h:65
friend class boost::serialization::access
Definition Command.h:63
static Command::CommandType getCommandType(void *buffer, size_t size)
Definition Command.h:55
Definition Command.h:248
void serialize(Archive &ar, const unsigned int)
Definition Command.h:275
friend class boost::serialization::access
Definition Command.h:274
size_t getSerializeSize()
Definition Command.h:263
PlayPauseCommand()
Definition Command.h:250
PlayPauseCommand(float _speed, bool _direction)
Definition Command.h:252
float speed
Definition Command.h:269
bool direction
Definition Command.h:271
Definition Command.h:99
void serialize(Archive &ar, const unsigned int)
Definition Command.h:123
RelayCommand()
Definition Command.h:101
bool open
Definition Command.h:118
RelayCommand(std::string &_nextModuleId, bool _open)
Definition Command.h:106
friend class boost::serialization::access
Definition Command.h:121
std::string nextModuleId
Definition Command.h:117
size_t getSerializeSize()
Definition Command.h:112
Definition Command.h:130
size_t getSerializeSize()
Definition Command.h:134
StepCommand()
Definition Command.h:132
void serialize(Archive &ar, const unsigned int)
Definition Command.h:139
friend class boost::serialization::access
Definition Command.h:137
static void deSerialize(T &obj, void *buffer, size_t size)
Definition Utils.h:41
Definition Command.h:144
int numOfFrames
Definition Command.h:152
void serialize(Archive &ar, const unsigned int)
Definition Command.h:157
ValvePassThroughCommand()
Definition Command.h:146
size_t getSerializeSize()
Definition Command.h:148
friend class boost::serialization::access
Definition Command.h:155