184 using clock = std::chrono::steady_clock;
185 using time_point = clock::time_point;
193 void saveRtcpRRPacket(
uint8_t*
buf,
size_t len);
194 void saveRtcpREMBPacket(
uint8_t*
buf,
size_t len);
196 std::mutex dataBuffMutex_;
197 std::condition_variable cv_;
198 std::list<std::vector<uint8_t>> rtpDataBuff_;
199 std::list<std::vector<uint8_t>> rtcpDataBuff_;
201 std::unique_ptr<dhtnet::IceSocket> rtp_sock_;
202 std::unique_ptr<dhtnet::IceSocket> rtcp_sock_;
205 int rtcpHandle_ {-1};
206 dhtnet::IpAddr rtpDestAddr_;
207 dhtnet::IpAddr rtcpDestAddr_;
208 std::atomic_bool interrupted_ {
false};
211 std::atomic_bool readBlockingMode_ {
false};
212 std::atomic_bool noWrite_ {
false};
213 std::unique_ptr<SRTPProtoContext> srtpContext_;
214 std::function<
void(
void)> packetLossCallback_;
215 std::function<
void(
int,
int)> rtpDelayCallback_;
219 std::list<rtcpRRHeader> listRtcpRRHeader_;
220 std::list<rtcpREMBHeader> listRtcpREMBHeader_;
221 std::mutex rtcpInfo_mutex_;
222 std::condition_variable cvRtcpPacketReadyToRead_;
223 static constexpr unsigned MAX_LIST_SIZE {10};
225 mutable std::atomic_bool rtcpPacketLoss_ {
false};
229 std::list<double> histoLatency_;
231 time_point lastRR_time;
233 float lastSendTS_ {0.0f};
234 time_point lastReceiveTS_ {};
235 time_point arrival_TS {};