180 packetLossCallback_ = std::move(
cb);
190 using clock = std::chrono::steady_clock;
191 using time_point = clock::time_point;
199 void saveRtcpRRPacket(
uint8_t*
buf,
size_t len);
200 void saveRtcpREMBPacket(
uint8_t*
buf,
size_t len);
202 std::mutex dataBuffMutex_;
203 std::condition_variable cv_;
204 std::list<std::vector<uint8_t>> rtpDataBuff_;
205 std::list<std::vector<uint8_t>> rtcpDataBuff_;
207 std::unique_ptr<dhtnet::IceSocket> rtp_sock_;
208 std::unique_ptr<dhtnet::IceSocket> rtcp_sock_;
211 int rtcpHandle_ {-1};
212 dhtnet::IpAddr rtpDestAddr_;
213 dhtnet::IpAddr rtcpDestAddr_;
214 std::atomic_bool interrupted_ {
false};
217 std::atomic_bool readBlockingMode_ {
false};
218 std::atomic_bool noWrite_ {
false};
219 std::unique_ptr<SRTPProtoContext> srtpContext_;
220 std::function<
void(
void)> packetLossCallback_;
221 std::function<
void(
int,
int)> rtpDelayCallback_;
225 std::list<rtcpRRHeader> listRtcpRRHeader_;
226 std::list<rtcpREMBHeader> listRtcpREMBHeader_;
227 std::mutex rtcpInfo_mutex_;
228 std::condition_variable cvRtcpPacketReadyToRead_;
229 static constexpr unsigned MAX_LIST_SIZE {10};
231 mutable std::atomic_bool rtcpPacketLoss_ {
false};
235 std::list<double> histoLatency_;
237 time_point lastRR_time;
239 float lastSendTS_ {0.0f};
240 time_point lastReceiveTS_ {};
241 time_point arrival_TS {};