runMACS
 All Data Structures Files Functions Variables Enumerations Enumerator Macros
Extractor.h
Go to the documentation of this file.
1 #ifndef EXTRACTOR_H
2 #define EXTRACTOR_H
3 
4 #include <zmq.hpp>
5 
6 #include <thread>
7 #include <string>
8 #include <list>
9 
10 #include <utils.h>
11 
17 class Extractor {
18 public:
19  Extractor(zmq::context_t & _ctx, const PubSubEndpoint & _source, double _wantedFPS=0);
20  virtual ~Extractor() = 0;
21  void startServing();
22  void stopServing();
23  virtual std::string type() = 0;
24  virtual std::string identifier() = 0;
25  virtual std::list<std::string> parameters() = 0;
26 protected:
27  zmq::context_t & ctx;
29  volatile bool keepGoing;
30 private:
31  void extract();
32  virtual void extractSetup();
33  virtual void extractImpl(unsigned int width,
34  unsigned int height,
35  unsigned int bytesPerPixel,
36  uint64_t highResTime,
37  uint64_t wallTime,
38  zmq::message_t * sourceImage) = 0;
39  virtual void extractTeardown();
40  std::thread extractorThread;
41  uint64_t nextFrameTime = 0;
42  uint64_t wantedFrameTime;
43 };
44 
45 #endif /* EXTRACTOR_H */
46 
virtual std::list< std::string > parameters()=0
virtual std::string identifier()=0
Base class for an image extractor.
Definition: Extractor.h:17
PubSubEndpoint source
Definition: Extractor.h:28
virtual std::string type()=0
zmq::context_t & ctx
Definition: Extractor.h:27
virtual ~Extractor()=0
Definition: Extractor.cpp:16
Extractor(zmq::context_t &_ctx, const PubSubEndpoint &_source, double _wantedFPS=0)
Definition: Extractor.cpp:7
void stopServing()
Definition: Extractor.cpp:25
void startServing()
Definition: Extractor.cpp:20
volatile bool keepGoing
Definition: Extractor.h:29