From 5919865e5d637620bccca0bfbe87403017d1aa8e Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 8 Feb 2021 16:24:12 +0800 Subject: [PATCH] RTC: Refine NACK check, interval, time --- trunk/src/app/srs_app_rtc_conn.cpp | 3 +-- trunk/src/app/srs_app_rtc_queue.cpp | 5 ++--- trunk/src/kernel/srs_kernel_rtc_rtcp.cpp | 5 +++++ trunk/src/kernel/srs_kernel_rtc_rtcp.hpp | 1 + 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 34f7dc743..5ae67bbf4 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -2295,8 +2295,7 @@ void SrsRtcConnection::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ss rtcpNack.set_media_ssrc(ssrc); nack->get_nack_seqs(rtcpNack, timeout_nacks); - sent_nacks = rtcpNack.get_lost_sns().size(); - if(!sent_nacks){ + if(rtcpNack.empty()){ return; } diff --git a/trunk/src/app/srs_app_rtc_queue.cpp b/trunk/src/app/srs_app_rtc_queue.cpp index 1e9998964..2bba97b57 100644 --- a/trunk/src/app/srs_app_rtc_queue.cpp +++ b/trunk/src/app/srs_app_rtc_queue.cpp @@ -190,7 +190,7 @@ SrsNackOption::SrsNackOption() max_nack_interval = 500 * SRS_UTIME_MILLISECONDS; min_nack_interval = 20 * SRS_UTIME_MILLISECONDS; - nack_check_interval = 3 * SRS_UTIME_MILLISECONDS; + nack_check_interval = 20 * SRS_UTIME_MILLISECONDS; //TODO: FIXME: audio and video using diff nack strategy // video: @@ -259,8 +259,7 @@ void SrsRtpNackForReceiver::check_queue_size() void SrsRtpNackForReceiver::get_nack_seqs(SrsRtcpNack& seqs, uint32_t& timeout_nacks) { - // TODO: FIXME: Use packet as tick count, not clock. - srs_utime_t now = srs_update_system_time(); + srs_utime_t now = srs_get_system_time(); srs_utime_t interval = now - pre_check_time_; if (interval < opts_.nack_check_interval) { diff --git a/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp b/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp index 4e0f98eee..fb91a5bc7 100644 --- a/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp +++ b/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp @@ -1212,6 +1212,11 @@ vector SrsRtcpNack::get_lost_sns() const return sn; } +bool SrsRtcpNack::empty() +{ + return lost_sns_.empty(); +} + void SrsRtcpNack::set_media_ssrc(uint32_t ssrc) { media_ssrc_ = ssrc; diff --git a/trunk/src/kernel/srs_kernel_rtc_rtcp.hpp b/trunk/src/kernel/srs_kernel_rtc_rtcp.hpp index 56c30912a..279a08e27 100644 --- a/trunk/src/kernel/srs_kernel_rtc_rtcp.hpp +++ b/trunk/src/kernel/srs_kernel_rtc_rtcp.hpp @@ -345,6 +345,7 @@ public: uint32_t get_media_ssrc() const; std::vector get_lost_sns() const; + bool empty(); void set_media_ssrc(uint32_t ssrc); void add_lost_sn(uint16_t sn);