mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
RTC: Refine NACK check, interval, time
This commit is contained in:
parent
d505bb6ea6
commit
abc26d470b
4 changed files with 9 additions and 5 deletions
|
@ -2301,8 +2301,7 @@ void SrsRtcConnection::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ss
|
||||||
rtcpNack.set_media_ssrc(ssrc);
|
rtcpNack.set_media_ssrc(ssrc);
|
||||||
nack->get_nack_seqs(rtcpNack, timeout_nacks);
|
nack->get_nack_seqs(rtcpNack, timeout_nacks);
|
||||||
|
|
||||||
sent_nacks = rtcpNack.get_lost_sns().size();
|
if(rtcpNack.empty()){
|
||||||
if(!sent_nacks){
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -190,7 +190,7 @@ SrsNackOption::SrsNackOption()
|
||||||
max_nack_interval = 500 * SRS_UTIME_MILLISECONDS;
|
max_nack_interval = 500 * SRS_UTIME_MILLISECONDS;
|
||||||
min_nack_interval = 20 * 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
|
//TODO: FIXME: audio and video using diff nack strategy
|
||||||
// video:
|
// video:
|
||||||
|
@ -259,8 +259,7 @@ void SrsRtpNackForReceiver::check_queue_size()
|
||||||
|
|
||||||
void SrsRtpNackForReceiver::get_nack_seqs(SrsRtcpNack& seqs, uint32_t& timeout_nacks)
|
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_get_system_time();
|
||||||
srs_utime_t now = srs_update_system_time();
|
|
||||||
|
|
||||||
srs_utime_t interval = now - pre_check_time_;
|
srs_utime_t interval = now - pre_check_time_;
|
||||||
if (interval < opts_.nack_check_interval) {
|
if (interval < opts_.nack_check_interval) {
|
||||||
|
|
|
@ -1212,6 +1212,11 @@ vector<uint16_t> SrsRtcpNack::get_lost_sns() const
|
||||||
return sn;
|
return sn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SrsRtcpNack::empty()
|
||||||
|
{
|
||||||
|
return lost_sns_.empty();
|
||||||
|
}
|
||||||
|
|
||||||
void SrsRtcpNack::set_media_ssrc(uint32_t ssrc)
|
void SrsRtcpNack::set_media_ssrc(uint32_t ssrc)
|
||||||
{
|
{
|
||||||
media_ssrc_ = ssrc;
|
media_ssrc_ = ssrc;
|
||||||
|
|
|
@ -345,6 +345,7 @@ public:
|
||||||
|
|
||||||
uint32_t get_media_ssrc() const;
|
uint32_t get_media_ssrc() const;
|
||||||
std::vector<uint16_t> get_lost_sns() const;
|
std::vector<uint16_t> get_lost_sns() const;
|
||||||
|
bool empty();
|
||||||
|
|
||||||
void set_media_ssrc(uint32_t ssrc);
|
void set_media_ssrc(uint32_t ssrc);
|
||||||
void add_lost_sn(uint16_t sn);
|
void add_lost_sn(uint16_t sn);
|
||||||
|
|
Loading…
Reference in a new issue