From b3212a12de0ad6fa677ec9dd60ffc961e267e2a4 Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 26 Jul 2020 23:18:56 +0800 Subject: [PATCH] RTC: Update nack stat --- trunk/src/app/srs_app_rtc_conn.cpp | 6 ++++++ trunk/src/app/srs_app_rtc_source.cpp | 7 +++++++ trunk/src/app/srs_app_rtc_source.hpp | 1 + 3 files changed, 14 insertions(+) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 537cbf689..093394d2c 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -486,6 +486,9 @@ void SrsRtcPlayStream::nack_fetch(vector& pkts, uint32_t ssrc, u SrsRtcAudioSendTrack* track = it->second; if (track->has_ssrc(ssrc)) { + // update recv nack statistic + track->on_recv_nack(); + SrsRtpPacket2* pkt = track->fetch_rtp_packet(seq); if (pkt != NULL) { pkts.push_back(pkt); @@ -501,6 +504,9 @@ void SrsRtcPlayStream::nack_fetch(vector& pkts, uint32_t ssrc, u SrsRtcVideoSendTrack* track = it->second; if (track->has_ssrc(ssrc)) { + // update recv nack statistic + track->on_recv_nack(); + SrsRtpPacket2* pkt = track->fetch_rtp_packet(seq); if (pkt != NULL) { pkts.push_back(pkt); diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index 7d45163e0..4e1e55755 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -1769,6 +1769,13 @@ srs_error_t SrsRtcSendTrack::on_rtcp(SrsRtpPacket2* pkt) return srs_success; } +void SrsRtcSendTrack::on_recv_nack() +{ + SrsRtcTrackStatistic* statistic = statistic_; + + statistic->nacks++; +} + SrsRtcAudioSendTrack::SrsRtcAudioSendTrack(SrsRtcConnection* session, SrsRtcTrackDescription* track_desc) : SrsRtcSendTrack(session, track_desc, true) { diff --git a/trunk/src/app/srs_app_rtc_source.hpp b/trunk/src/app/srs_app_rtc_source.hpp index fcdcf699c..dcca61f61 100644 --- a/trunk/src/app/srs_app_rtc_source.hpp +++ b/trunk/src/app/srs_app_rtc_source.hpp @@ -517,6 +517,7 @@ public: public: virtual srs_error_t on_rtp(SrsRtpPacket2* pkt, SrsRtcPlayStreamStatistic& info); virtual srs_error_t on_rtcp(SrsRtpPacket2* pkt); + virtual void on_recv_nack(); }; class SrsRtcAudioSendTrack : public SrsRtcSendTrack