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