From d8a1c70e2d9dece3e4b91dc87d9f842f9bf62400 Mon Sep 17 00:00:00 2001 From: mtdxc Date: Tue, 4 Nov 2025 18:39:52 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"sr=E5=8F=91=E9=80=81=E9=99=90?= =?UTF-8?q?=E9=A2=91"=20(#4533=20#4521)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 21d1ea96760851dea16a9d80cbbe8e7c39a1ba8b. 之前代码改多了,会导致空指针错误,现进行还原 --- src/Rtcp/RtcpContext.cpp | 7 +------ src/Rtcp/RtcpContext.h | 1 - webrtc/WebRtcTransport.cpp | 11 +++++++---- webrtc/WebRtcTransport.h | 1 + 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Rtcp/RtcpContext.cpp b/src/Rtcp/RtcpContext.cpp index 49ce33df..64db7acf 100644 --- a/src/Rtcp/RtcpContext.cpp +++ b/src/Rtcp/RtcpContext.cpp @@ -107,11 +107,6 @@ uint32_t RtcpContextForSend::getRtt(uint32_t ssrc) const { } Buffer::Ptr RtcpContextForSend::createRtcpSR(uint32_t rtcp_ssrc) { - uint64_t now = getCurrentMillisecond(); - if (now - _last_sr_tsp < 5000) { - return nullptr; - } - _last_sr_tsp = now; auto rtcp = RtcpSR::create(0); rtcp->setNtpStamp(_last_ntp_stamp_ms); rtcp->rtpts = htonl(_last_rtp_stamp); @@ -122,7 +117,7 @@ Buffer::Ptr RtcpContextForSend::createRtcpSR(uint32_t rtcp_ssrc) { // 记录上次发送的sender report信息,用于后续统计rtt [AUTO-TRANSLATED:1d22d2c8] // Record the last sent sender report information for subsequent RTT statistics auto last_sr_lsr = ((ntohl(rtcp->ntpmsw) & 0xFFFF) << 16) | ((ntohl(rtcp->ntplsw) >> 16) & 0xFFFF); - _sender_report_ntp[last_sr_lsr] = now; + _sender_report_ntp[last_sr_lsr] = getCurrentMillisecond(); if (_sender_report_ntp.size() >= 5) { // 删除最早的sr rtcp [AUTO-TRANSLATED:2457e08d] // Delete the earliest sr rtcp diff --git a/src/Rtcp/RtcpContext.h b/src/Rtcp/RtcpContext.h index 9d305386..20d7ffe0 100644 --- a/src/Rtcp/RtcpContext.h +++ b/src/Rtcp/RtcpContext.h @@ -154,7 +154,6 @@ public: uint32_t getRtt(uint32_t ssrc) const; private: - uint64_t _last_sr_tsp = 0; std::map _rtt; std::map _sender_report_ntp; diff --git a/webrtc/WebRtcTransport.cpp b/webrtc/WebRtcTransport.cpp index 4f11d300..3ac2cd44 100644 --- a/webrtc/WebRtcTransport.cpp +++ b/webrtc/WebRtcTransport.cpp @@ -1497,10 +1497,13 @@ void WebRtcTransportImp::onSendRtp(const RtpPacket::Ptr &rtp, bool flush, bool r sendRtpPacket(rtp->data() + RtpPacket::kRtpTcpHeaderSize, rtp->size() - RtpPacket::kRtpTcpHeaderSize, flush, &ctx); _bytes_usage += rtp->size() - RtpPacket::kRtpTcpHeaderSize; - if (track->rtcp_context_send) { - auto sr = track->rtcp_context_send->createRtcpSR(track->answer_ssrc_rtp); - if (sr && sr->size() > 0) { - sendRtcpPacket(sr->data(), sr->size(), true); + if (_rtcp_sr_send_ticker.elapsedTime() > 5000) { + _rtcp_sr_send_ticker.resetTime(); + if (track->rtcp_context_send) { + auto sr = track->rtcp_context_send->createRtcpSR(track->answer_ssrc_rtp); + if (sr && sr->size() > 0) { + sendRtcpPacket(sr->data(), sr->size(), true); + } } } } diff --git a/webrtc/WebRtcTransport.h b/webrtc/WebRtcTransport.h index b54030dc..b6495cd1 100644 --- a/webrtc/WebRtcTransport.h +++ b/webrtc/WebRtcTransport.h @@ -380,6 +380,7 @@ private: // pli rtcp timer toolkit::Ticker _pli_ticker; + toolkit::Ticker _rtcp_sr_send_ticker; toolkit::Ticker _rtcp_rr_send_ticker; // twcc rtcp发送上下文对象 [AUTO-TRANSLATED:aef6476a]