#pragma once #include #include #include #include #include #include "media/encoded_video_meta.h" namespace rk3588 { class PacketRingBuffer { public: explicit PacketRingBuffer(int window_sec = 20, int fps_hint = 25); void Push(std::shared_ptr meta); std::vector> GetPacketsInRange(int64_t start_pts_ms, int64_t end_pts_ms) const; int64_t LatestPtsMs() const; size_t Size() const; void Clear(); private: struct Entry { int64_t pts_ms = 0; std::shared_ptr meta; }; mutable std::mutex mu_; std::deque buf_; size_t max_packets_ = 0; int64_t last_pts_ms_ = 0; }; } // namespace rk3588