My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
FrameBuffer.h
Go to the documentation of this file.
1 #ifndef GCP_UTIL_FRAMEBUFFER_H
2 #define GCP_UTIL_FRAMEBUFFER_H
3 
11 #include <vector>
12 #include <map>
13 
14 #include "gcp/util/common/Mutex.h"
15 
16 namespace gcp {
17  namespace util {
18 
19  class DataFrameManager;
20 
21  class FrameBuffer {
22  public:
23 
27  FrameBuffer(unsigned nFrame);
28 
32  virtual ~FrameBuffer();
33 
40  DataFrameManager* getFrame(unsigned int id, bool create);
41 
47 
56 
60  unsigned int getNframesInQueue();
61 
62  protected:
63 
67  struct FrameBufferSlot {
68  unsigned int id_;
69  DataFrameManager* frame_;
70  struct FrameBufferSlot* next_;
71  };
72 
76  std::vector<struct FrameBufferSlot> slots_;
77 
81  unsigned long nSlot_;
82 
83  private:
84 
88  Mutex guard_;
89 
93  std::map<unsigned int, struct FrameBufferSlot*> frameMap_;
94 
98  struct FrameBufferSlot* nextFreeSlot_;
99 
104  struct FrameBufferSlot* nextSendSlot_;
105 
109  struct FrameBufferSlot* lastSentSlot_;
110 
114  unsigned long nUsed_;
115 
119  struct FrameBufferSlot* findSlot(unsigned int id);
120 
124  struct FrameBufferSlot* getNextSlot();
125 
129  void clearSlot(FrameBufferSlot* slot);
130 
131  }; // End class FrameBuffer
132 
133  } // End namespace util
134 } // End namespace gcp
135 
136 
137 #endif // End #ifndef GCP_UTIL_FRAMEBUFFER_H
Definition: FrameBuffer.h:67
virtual ~FrameBuffer()
Definition: FrameBuffer.cc:51
std::vector< struct FrameBufferSlot > slots_
Definition: FrameBuffer.h:76
DataFrameManager * getNextFrame()
Definition: FrameBuffer.cc:145
unsigned long nSlot_
Definition: FrameBuffer.h:81
FrameBuffer(unsigned nFrame)
Definition: FrameBuffer.cc:12
Definition: Mutex.h:16
DataFrameManager * getFrame(unsigned int id, bool create)
Definition: FrameBuffer.cc:173
DataFrameManager * dispatchNextFrame()
Definition: FrameBuffer.cc:57
unsigned int getNframesInQueue()
Definition: FrameBuffer.cc:268
Definition: DataFrameManager.h:23
Definition: FrameBuffer.h:21