Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

38 linhas
889B

  1. #ifndef ZLMEDIAKIT_SRT_PACKET_SEND_QUEUE_H
  2. #define ZLMEDIAKIT_SRT_PACKET_SEND_QUEUE_H
  3. #include "Packet.hpp"
  4. #include <algorithm>
  5. #include <list>
  6. #include <memory>
  7. #include <set>
  8. #include <tuple>
  9. #include <utility>
  10. namespace SRT {
  11. class PacketSendQueue {
  12. public:
  13. using Ptr = std::shared_ptr<PacketSendQueue>;
  14. using LostPair = std::pair<uint32_t, uint32_t>;
  15. PacketSendQueue(uint32_t max_size, uint32_t latency,uint32_t flag = 0xbf);
  16. ~PacketSendQueue() = default;
  17. bool drop(uint32_t num);
  18. bool inputPacket(DataPacket::Ptr pkt);
  19. std::list<DataPacket::Ptr> findPacketBySeq(uint32_t start, uint32_t end);
  20. private:
  21. uint32_t timeLatency();
  22. bool TLPKTDrop();
  23. private:
  24. uint32_t _srt_flag;
  25. uint32_t _pkt_cap;
  26. uint32_t _pkt_latency;
  27. std::list<DataPacket::Ptr> _pkt_cache;
  28. };
  29. } // namespace SRT
  30. #endif // ZLMEDIAKIT_SRT_PACKET_SEND_QUEUE_H