Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
FileReaderModule.h
1#pragma once
2#include <string>
3#include <unordered_map>
4#include "Module.h"
5#include <boost/serialization/vector.hpp>
6
7using namespace std;
8
10
12{
13public:
14 FileReaderModuleProps(const std::string& _strFullFileNameWithPattern, int _startIndex = 0, int _maxIndex = -1): ModuleProps()
15 {
16 strFullFileNameWithPattern = _strFullFileNameWithPattern;
17 startIndex = _startIndex;
18 maxIndex = _maxIndex;
19 readLoop = true;
20 }
21
23 {
25 startIndex = 0;
26 maxIndex = -1;
27 readLoop = true;
28 }
29
31 {
32 size_t len = 0;
33 auto noOfFiles = files.size();
34 for (auto i = 0; i < noOfFiles; i++)
35 {
36 len += files[i].length();
37 }
38
39 return ModuleProps::getSerializeSize() + sizeof(startIndex) + sizeof(maxIndex) + strFullFileNameWithPattern.length() + sizeof(string) + sizeof(readLoop) + sizeof(files) + len;
40 }
41
46 std::vector<std::string> files;
47
48private:
50
51 template<class Archive>
52 void serialize(Archive &ar, const unsigned int version)
53 {
54 ar & boost::serialization::base_object<ModuleProps>(*this);
55 ar & startIndex;
57 ar & readLoop;
58 ar & files;
59 }
60};
61
62
63class FileReaderModule: public Module {
64public:
66 virtual ~FileReaderModule();
67 bool init();
68 bool term();
69
70 bool jump(uint64_t index);
71
74
75protected:
76 bool produce();
77 bool validateOutputPins();
78 void notifyPlay(bool play);
79 bool handleCommand(Command::CommandType type, frame_sp& frame);
80 bool handlePropsChange(frame_sp& frame);
81private:
82 string mPinId;
83 boost::shared_ptr<FileSequenceDriver> mDriver;
85 frame_container mFrames;
86 bool mCache;
87};
CommandType
Definition Command.h:9
Definition FileReaderModule.h:12
string strFullFileNameWithPattern
Definition FileReaderModule.h:44
bool readLoop
Definition FileReaderModule.h:45
size_t getSerializeSize()
Definition FileReaderModule.h:30
std::vector< std::string > files
Definition FileReaderModule.h:46
int startIndex
Definition FileReaderModule.h:42
FileReaderModuleProps()
Definition FileReaderModule.h:22
void serialize(Archive &ar, const unsigned int version)
Definition FileReaderModule.h:52
friend class boost::serialization::access
Definition FileReaderModule.h:49
FileReaderModuleProps(const std::string &_strFullFileNameWithPattern, int _startIndex=0, int _maxIndex=-1)
Definition FileReaderModule.h:14
int maxIndex
Definition FileReaderModule.h:43
Definition FileReaderModule.h:63
virtual ~FileReaderModule()
Definition FileReaderModule.cpp:14
void notifyPlay(bool play)
Definition FileReaderModule.cpp:97
bool handleCommand(Command::CommandType type, frame_sp &frame)
Definition FileReaderModule.cpp:109
FileReaderModuleProps getProps()
Definition FileReaderModule.cpp:129
bool handlePropsChange(frame_sp &frame)
Definition FileReaderModule.cpp:135
bool term()
Definition FileReaderModule.cpp:45
frame_container mFrames
Definition FileReaderModule.h:85
string mPinId
Definition FileReaderModule.h:82
bool jump(uint64_t index)
Definition FileReaderModule.cpp:102
boost::shared_ptr< FileSequenceDriver > mDriver
Definition FileReaderModule.h:83
FileReaderModuleProps mProps
Definition FileReaderModule.h:84
bool init()
Definition FileReaderModule.cpp:28
bool mCache
Definition FileReaderModule.h:86
FileReaderModule(FileReaderModuleProps _props)
Definition FileReaderModule.cpp:8
void setProps(FileReaderModuleProps &props)
Definition FileReaderModule.cpp:124
bool produce()
Definition FileReaderModule.cpp:51
bool validateOutputPins()
Definition FileReaderModule.cpp:16
Definition FileSequenceDriver.h:10
Definition Module.h:33
virtual size_t getSerializeSize()
Definition Module.h:101
Definition Module.h:151
bool play(float speed, bool direction=true)
Definition Module.cpp:1139