From c5a69163789163970e136932c925263599918ba0 Mon Sep 17 00:00:00 2001 From: Leon <8544842+leon14631@user.noreply.gitee.com> Date: Wed, 8 Jun 2022 09:04:45 +0000 Subject: [PATCH] update webrtc/WebRtcTransport.cpp. --- webrtc/WebRtcTransport.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/webrtc/WebRtcTransport.cpp b/webrtc/WebRtcTransport.cpp index 42e97e92..fa9840c9 100644 --- a/webrtc/WebRtcTransport.cpp +++ b/webrtc/WebRtcTransport.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved. * * This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit). @@ -612,6 +612,10 @@ public: } int getLossRate() { + if (!_rtcp_context.getExpectedPacketsInterval()) //_rtcp_context.getExpectedPacketsInterval()取值总为零? + { + return 0; + } return _rtcp_context.geLostInterval() * 100 / _rtcp_context.getExpectedPacketsInterval(); } @@ -655,6 +659,21 @@ std::shared_ptr MediaTrack::getRtpChannel(uint32_t ssrc) const{ return it_chn->second; } +int WebRtcTransportImp::getLossRate(mediakit::TrackType type){ + for(auto it : _ssrc_to_track){ + auto ssrc = it.first; + auto track = it.second; + auto rtp_chn = track->getRtpChannel(ssrc); + if(rtp_chn){ + InfoL << "-----------接收丢包率,ssrc------------- :" << ssrc << ",loss rate(%):" << rtp_chn->getLossRate() ; + if (track->media && type==track->media->type){ + return rtp_chn->getLossRate(); + } + } + } + return -1; +} + void WebRtcTransportImp::onRtcp(const char *buf, size_t len) { _bytes_usage += len; auto rtcps = RtcpHeader::loadFromBytes((char *) buf, len);