From 133e07e670657fa1398a762a86e2ec5a3d00366c Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 26 Jul 2020 21:23:58 +0800 Subject: [PATCH] RTC: Refine stat code --- trunk/src/app/srs_app_rtc_conn.cpp | 15 ++++++++++----- trunk/src/app/srs_app_rtc_conn.hpp | 3 +-- trunk/src/app/srs_app_rtc_source.cpp | 14 +++++++++----- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 5ba8d2a91..537cbf689 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -483,8 +483,10 @@ void SrsRtcPlayStream::nack_fetch(vector& pkts, uint32_t ssrc, u if (true) { std::map::iterator it; for (it = audio_tracks_.begin(); it != audio_tracks_.end(); ++it) { - if (it->second->has_ssrc(ssrc)) { - SrsRtpPacket2* pkt = it->second->fetch_rtp_packet(seq); + SrsRtcAudioSendTrack* track = it->second; + + if (track->has_ssrc(ssrc)) { + SrsRtpPacket2* pkt = track->fetch_rtp_packet(seq); if (pkt != NULL) { pkts.push_back(pkt); } @@ -496,8 +498,10 @@ void SrsRtcPlayStream::nack_fetch(vector& pkts, uint32_t ssrc, u if (true) { std::map::iterator it; for (it = video_tracks_.begin(); it != video_tracks_.end(); ++it) { - if (it->second->has_ssrc(ssrc)) { - SrsRtpPacket2* pkt = it->second->fetch_rtp_packet(seq); + SrsRtcVideoSendTrack* track = it->second; + + if (track->has_ssrc(ssrc)) { + SrsRtpPacket2* pkt = track->fetch_rtp_packet(seq); if (pkt != NULL) { pkts.push_back(pkt); } @@ -1951,7 +1955,7 @@ void SrsRtcConnection::update_sendonly_socket(SrsUdpMuxSocket* skt) sendonly_skt = addr_cache; } -void SrsRtcConnection::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssrc) +void SrsRtcConnection::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssrc, uint32_t& sent_nacks) { // If DTLS is not OK, drop all messages. if (!transport_) { @@ -1996,6 +2000,7 @@ void SrsRtcConnection::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ss } ++iter; + ++sent_nacks; } } diff --git a/trunk/src/app/srs_app_rtc_conn.hpp b/trunk/src/app/srs_app_rtc_conn.hpp index 3ede887a6..6745d5bf7 100644 --- a/trunk/src/app/srs_app_rtc_conn.hpp +++ b/trunk/src/app/srs_app_rtc_conn.hpp @@ -253,7 +253,6 @@ public: srs_error_t initialize(SrsRequest* req, SrsRtcStreamDescription* stream_desc); srs_error_t start(); private: - void check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssrc); srs_error_t send_rtcp_rr(); srs_error_t send_rtcp_xr_rrtr(); public: @@ -390,7 +389,7 @@ public: void update_sendonly_socket(SrsUdpMuxSocket* skt); public: // send rtcp - void check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssrc); + void check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssrc, uint32_t& sent_nacks); srs_error_t send_rtcp_rr(uint32_t ssrc, SrsRtpRingBuffer* rtp_queue, const uint64_t& last_send_systime, const SrsNtp& last_send_ntp); srs_error_t send_rtcp_xr_rrtr(uint32_t ssrc); srs_error_t send_rtcp_fb_pli(uint32_t ssrc); diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index e8798b7be..11845c63f 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -1597,8 +1597,10 @@ srs_error_t SrsRtcRecvTrack::on_nack(SrsRtpPacket2* pkt) // insert into video_queue and audio_queue rtp_queue_->set(seq, pkt->copy()); + // send_nack - session_->check_send_nacks(nack_receiver_, ssrc); + uint32_t sent_nacks = 0; + session_->check_send_nacks(nack_receiver_, ssrc, sent_nacks); return err; } @@ -1621,6 +1623,9 @@ srs_error_t SrsRtcAudioRecvTrack::on_rtp(SrsRtcStream* source, SrsRtpPacket2* pk { srs_error_t err = srs_success; + // connection level statistic + session_->stat_->nn_in_audios++; + if (source) { if ((err = source->on_rtp(pkt)) != srs_success) { return srs_error_wrap(err, "source on rtp"); @@ -1632,8 +1637,6 @@ srs_error_t SrsRtcAudioRecvTrack::on_rtp(SrsRtcStream* source, SrsRtpPacket2* pk return srs_error_wrap(err, "on nack"); } - session_->stat_->nn_in_audios++; - return err; } @@ -1651,6 +1654,9 @@ srs_error_t SrsRtcVideoRecvTrack::on_rtp(SrsRtcStream* source, SrsRtpPacket2* pk { srs_error_t err = srs_success; + // connection level statistic + session_->stat_->nn_in_videos++; + pkt->frame_type = SrsFrameTypeVideo; if (source) { @@ -1672,8 +1678,6 @@ srs_error_t SrsRtcVideoRecvTrack::on_rtp(SrsRtcStream* source, SrsRtpPacket2* pk return srs_error_wrap(err, "on nack"); } - session_->stat_->nn_in_videos++; - return err; }