1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #ifndef FRAMEBUFFER_H
- #define FRAMEBUFFER_H
- #include <list>
- #include <vector>
- #include <mutex>
- #include <libuvc/libuvc.h>
- template<typename T>
- class FrameBuffer {
- public:
- FrameBuffer(size_t capacity) : m_Capacity(capacity) {}
- void addFrame(const T& frame)
- {
- std::lock_guard<std::mutex> lock(m_Mutex);
- }
- T getOldestFrame()
- {
- std::lock_guard<std::mutex> lock(m_Mutex);
- if (m_BufferVector.empty()) {
- return nullptr;
- }
- return m_BufferVector.front();
- }
- T getNewestFrame()
- {
- std::lock_guard<std::mutex> lock(m_Mutex);
- if (m_BufferVector.empty()) {
- return nullptr;
- }
- return m_BufferVector.back();
- }
- void releaseOldestFrame()
- {
- std::lock_guard<std::mutex> lock(m_Mutex);
- if (!m_BufferVector.empty()) {
- m_BufferVector.erase(m_BufferVector.begin());
- }
- }
- void releaseNewestFrame() {
- std::lock_guard<std::mutex> lock(m_Mutex);
- if (!m_BufferVector.empty()) {
- m_BufferVector.pop_back();
- }
- }
- private:
- size_t m_Capacity;
- std::vector<T> m_BufferVector;
- std::mutex m_Mutex;
- };
- #endif // FRAMEBUFFER_H
|