#ifndef ZLMEDIAKIT_SRT_NACK_CONTEXT_H #define ZLMEDIAKIT_SRT_NACK_CONTEXT_H #include "Common.hpp" #include "PacketQueue.hpp" #include namespace SRT { class NackContext { public: NackContext() = default; ~NackContext() = default; void update(TimePoint now, std::list &lostlist); void getLostList(TimePoint now, uint32_t rtt, uint32_t rtt_variance, std::list &lostlist); void drop(uint32_t seq); private: void mergeItem(TimePoint now, PacketQueue::LostPair &item); private: class NackItem { public: bool _is_nack = false; TimePoint _ts; // send nak time }; std::map _nack_map; }; } // namespace SRT #endif // ZLMEDIAKIT_SRT_NACK_CONTEXT_H