diff --git a/audio/channel_receive.cc b/audio/channel_receive.cc index ed3356a4a8..d114391469 100644 --- a/audio/channel_receive.cc +++ b/audio/channel_receive.cc @@ -747,8 +747,8 @@ CallReceiveStatistics ChannelReceive::GetRTCPStatistics() const { // --- Data counters if (statistician) { - StreamDataCounters data_counters; - statistician->GetReceiveStreamDataCounters(&data_counters); + StreamDataCounters data_counters = + statistician->GetReceiveStreamDataCounters(); if (use_standard_bytes_stats_) { stats.bytesReceived = data_counters.transmitted.payload_bytes; } else { diff --git a/modules/rtp_rtcp/include/receive_statistics.h b/modules/rtp_rtcp/include/receive_statistics.h index 801d4c7d46..2046b8228e 100644 --- a/modules/rtp_rtcp/include/receive_statistics.h +++ b/modules/rtp_rtcp/include/receive_statistics.h @@ -49,8 +49,7 @@ class StreamStatistician { virtual absl::optional GetFractionLostInPercent() const = 0; // Gets received stream data counters (includes reset counter values). - virtual void GetReceiveStreamDataCounters( - StreamDataCounters* data_counters) const = 0; + virtual StreamDataCounters GetReceiveStreamDataCounters() const = 0; virtual uint32_t BitrateReceived() const = 0; }; diff --git a/modules/rtp_rtcp/source/receive_statistics_impl.cc b/modules/rtp_rtcp/source/receive_statistics_impl.cc index 1302dac969..e78cac489f 100644 --- a/modules/rtp_rtcp/source/receive_statistics_impl.cc +++ b/modules/rtp_rtcp/source/receive_statistics_impl.cc @@ -306,10 +306,10 @@ absl::optional StreamStatisticianImpl::GetFractionLostInPercent() const { return 100 * static_cast(cumulative_loss_) / expected_packets; } -void StreamStatisticianImpl::GetReceiveStreamDataCounters( - StreamDataCounters* data_counters) const { +StreamDataCounters StreamStatisticianImpl::GetReceiveStreamDataCounters() + const { rtc::CritScope cs(&stream_lock_); - *data_counters = receive_counters_; + return receive_counters_; } uint32_t StreamStatisticianImpl::BitrateReceived() const { diff --git a/modules/rtp_rtcp/source/receive_statistics_impl.h b/modules/rtp_rtcp/source/receive_statistics_impl.h index 3935d876de..a4eab7b6a2 100644 --- a/modules/rtp_rtcp/source/receive_statistics_impl.h +++ b/modules/rtp_rtcp/source/receive_statistics_impl.h @@ -39,8 +39,7 @@ class StreamStatisticianImpl : public StreamStatistician, void GetDataCounters(size_t* bytes_received, uint32_t* packets_received) const override; absl::optional GetFractionLostInPercent() const override; - void GetReceiveStreamDataCounters( - StreamDataCounters* data_counters) const override; + StreamDataCounters GetReceiveStreamDataCounters() const override; uint32_t BitrateReceived() const override; // Implements RtpPacketSinkInterface diff --git a/modules/rtp_rtcp/source/receive_statistics_unittest.cc b/modules/rtp_rtcp/source/receive_statistics_unittest.cc index 28c14036f0..25424565bf 100644 --- a/modules/rtp_rtcp/source/receive_statistics_unittest.cc +++ b/modules/rtp_rtcp/source/receive_statistics_unittest.cc @@ -217,13 +217,12 @@ TEST_F(ReceiveStatisticsTest, GetReceiveStreamDataCounters) { receive_statistics_->GetStatistician(kSsrc1); ASSERT_TRUE(statistician != NULL); - StreamDataCounters counters; - statistician->GetReceiveStreamDataCounters(&counters); + StreamDataCounters counters = statistician->GetReceiveStreamDataCounters(); EXPECT_GT(counters.first_packet_time_ms, -1); EXPECT_EQ(1u, counters.transmitted.packets); receive_statistics_->OnRtpPacket(packet1_); - statistician->GetReceiveStreamDataCounters(&counters); + counters = statistician->GetReceiveStreamDataCounters(); EXPECT_GT(counters.first_packet_time_ms, -1); EXPECT_EQ(2u, counters.transmitted.packets); }