safesight-edge/plugins/alarm/frame_ring_buffer.h
2025-12-26 16:58:18 +08:00

31 lines
592 B
C++

#pragma once
#include <chrono>
#include <deque>
#include <memory>
#include <mutex>
#include <vector>
#include "frame/frame.h"
namespace rk3588 {
class FrameRingBuffer {
public:
explicit FrameRingBuffer(int pre_event_sec = 5, int fps_hint = 25);
void Push(std::shared_ptr<Frame> frame);
std::vector<std::shared_ptr<Frame>> GetPreEventFrames() const;
void Clear();
size_t Size() const;
private:
mutable std::mutex mutex_;
std::deque<std::shared_ptr<Frame>> buffer_;
size_t max_frames_;
int pre_event_sec_;
int fps_hint_;
};
} // namespace rk3588