diff --git a/api/stats/rtcstats_objects.h b/api/stats/rtcstats_objects.h index f26c574e5b..5fab85e6e3 100644 --- a/api/stats/rtcstats_objects.h +++ b/api/stats/rtcstats_objects.h @@ -413,7 +413,6 @@ class RTC_EXPORT RTCInboundRTPStreamStats final : public RTCRTPStreamStats { RTCStatsMember fec_packets_received; RTCStatsMember fec_packets_discarded; RTCStatsMember bytes_received; - RTCStatsMember header_bytes_received; RTCStatsMember packets_lost; // Signed per RFC 3550 RTCStatsMember last_packet_received_timestamp; // TODO(hbos): Collect and populate this value for both "audio" and "video", @@ -467,7 +466,6 @@ class RTC_EXPORT RTCOutboundRTPStreamStats final : public RTCRTPStreamStats { RTCStatsMember packets_sent; RTCStatsMember retransmitted_packets_sent; RTCStatsMember bytes_sent; - RTCStatsMember header_bytes_sent; RTCStatsMember retransmitted_bytes_sent; // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7066 RTCStatsMember target_bitrate; diff --git a/audio/audio_receive_stream.cc b/audio/audio_receive_stream.cc index 517f0deb60..14dfd90bf8 100644 --- a/audio/audio_receive_stream.cc +++ b/audio/audio_receive_stream.cc @@ -188,11 +188,7 @@ webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats() const { return stats; } - stats.payload_bytes_rcvd = call_stats.payload_bytes_rcvd; - stats.header_and_padding_bytes_rcvd = - call_stats.header_and_padding_bytes_rcvd; - stats.bytes_rcvd = - stats.payload_bytes_rcvd + stats.header_and_padding_bytes_rcvd; + stats.bytes_rcvd = call_stats.bytesReceived; stats.packets_rcvd = call_stats.packetsReceived; stats.packets_lost = call_stats.cumulativeLost; stats.capture_start_ntp_time_ms = call_stats.capture_start_ntp_time_ms_; diff --git a/audio/audio_receive_stream_unittest.cc b/audio/audio_receive_stream_unittest.cc index ae6605c86c..a14e8e142e 100644 --- a/audio/audio_receive_stream_unittest.cc +++ b/audio/audio_receive_stream_unittest.cc @@ -63,7 +63,7 @@ const unsigned int kSpeechOutputLevel = 99; const double kTotalOutputEnergy = 0.25; const double kTotalOutputDuration = 0.5; -const CallReceiveStatistics kCallStats = {678, 234, -12, 567, 78, 890, 123}; +const CallReceiveStatistics kCallStats = {678, 234, -12, 567, 890, 123}; const std::pair kReceiveCodec = { 123, {"codec_name_recv", 96000, 0}}; @@ -266,9 +266,7 @@ TEST(AudioReceiveStreamTest, GetStats) { helper.SetupMockForGetStats(); AudioReceiveStream::Stats stats = recv_stream->GetStats(); EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); - EXPECT_EQ(kCallStats.payload_bytes_rcvd, stats.payload_bytes_rcvd); - EXPECT_EQ(kCallStats.header_and_padding_bytes_rcvd, - stats.header_and_padding_bytes_rcvd); + EXPECT_EQ(static_cast(kCallStats.bytesReceived), stats.bytes_rcvd); EXPECT_EQ(static_cast(kCallStats.packetsReceived), stats.packets_rcvd); EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc index e86667ded7..dbca457636 100644 --- a/audio/audio_send_stream.cc +++ b/audio/audio_send_stream.cc @@ -440,11 +440,7 @@ webrtc::AudioSendStream::Stats AudioSendStream::GetStats( stats.target_bitrate_bps = channel_send_->GetBitrate(); webrtc::CallSendStatistics call_stats = channel_send_->GetRTCPStatistics(); - stats.payload_bytes_sent = call_stats.payload_bytes_sent; - stats.header_and_padding_bytes_sent = - call_stats.header_and_padding_bytes_sent; - stats.bytes_sent = - stats.payload_bytes_sent + stats.header_and_padding_bytes_sent; + stats.bytes_sent = call_stats.bytesSent; stats.retransmitted_bytes_sent = call_stats.retransmitted_bytes_sent; stats.packets_sent = call_stats.packetsSent; stats.retransmitted_packets_sent = call_stats.retransmitted_packets_sent; diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc index 8884e5f164..d787a8adbd 100644 --- a/audio/audio_send_stream_unittest.cc +++ b/audio/audio_send_stream_unittest.cc @@ -64,7 +64,7 @@ const double kEchoReturnLoss = -65; const double kEchoReturnLossEnhancement = 101; const double kResidualEchoLikelihood = -1.0f; const double kResidualEchoLikelihoodMax = 23.0f; -const CallSendStatistics kCallStats = {112, 12, 13456, 17890}; +const CallSendStatistics kCallStats = {112, 13456, 17890}; const ReportBlock kReportBlock = {456, 780, 123, 567, 890, 132, 143, 13354}; const int kTelephoneEventPayloadType = 123; const int kTelephoneEventPayloadFrequency = 65432; @@ -414,9 +414,7 @@ TEST(AudioSendStreamTest, GetStats) { helper.SetupMockForGetStats(); AudioSendStream::Stats stats = send_stream->GetStats(true); EXPECT_EQ(kSsrc, stats.local_ssrc); - EXPECT_EQ(kCallStats.payload_bytes_sent, stats.payload_bytes_sent); - EXPECT_EQ(kCallStats.header_and_padding_bytes_sent, - stats.header_and_padding_bytes_sent); + EXPECT_EQ(static_cast(kCallStats.bytesSent), stats.bytes_sent); EXPECT_EQ(kCallStats.packetsSent, stats.packets_sent); EXPECT_EQ(kReportBlock.cumulative_num_packets_lost, stats.packets_lost); EXPECT_EQ(Q8ToFloat(kReportBlock.fraction_lost), stats.fraction_lost); diff --git a/audio/channel_receive.cc b/audio/channel_receive.cc index fa1463a2e6..486dcb11ac 100644 --- a/audio/channel_receive.cc +++ b/audio/channel_receive.cc @@ -43,6 +43,7 @@ #include "rtc_base/race_checker.h" #include "rtc_base/thread_checker.h" #include "rtc_base/time_utils.h" +#include "system_wrappers/include/field_trial.h" #include "system_wrappers/include/metrics.h" namespace webrtc { @@ -56,6 +57,11 @@ constexpr double kAudioSampleDurationSeconds = 0.01; constexpr int kVoiceEngineMinMinPlayoutDelayMs = 0; constexpr int kVoiceEngineMaxMinPlayoutDelayMs = 10000; +// Field trial which controls whether to report standard-compliant bytes +// sent/received per stream. If enabled, padding and headers are not included +// in bytes sent or received. +constexpr char kUseStandardBytesStats[] = "WebRTC-UseStandardBytesStats"; + RTPHeader CreateRTPHeaderForMediaTransportFrame( const MediaTransportEncodedAudioFrame& frame, uint64_t channel_id) { @@ -272,6 +278,8 @@ class ChannelReceive : public ChannelReceiveInterface, // E2EE Audio Frame Decryption rtc::scoped_refptr frame_decryptor_; webrtc::CryptoOptions crypto_options_; + + const bool use_standard_bytes_stats_; }; void ChannelReceive::OnReceivedPayloadData( @@ -476,7 +484,9 @@ ChannelReceive::ChannelReceive( associated_send_channel_(nullptr), media_transport_config_(media_transport_config), frame_decryptor_(frame_decryptor), - crypto_options_(crypto_options) { + crypto_options_(crypto_options), + use_standard_bytes_stats_( + webrtc::field_trial::IsEnabled(kUseStandardBytesStats)) { // TODO(nisse): Use _moduleProcessThreadPtr instead? module_process_thread_checker_.Detach(); @@ -724,17 +734,16 @@ CallReceiveStatistics ChannelReceive::GetRTCPStatistics() const { // --- Data counters if (statistician) { - stats.payload_bytes_rcvd = rtp_stats.packet_counter.payload_bytes; - - stats.header_and_padding_bytes_rcvd = - rtp_stats.packet_counter.header_bytes + - rtp_stats.packet_counter.padding_bytes; + if (use_standard_bytes_stats_) { + stats.bytesReceived = rtp_stats.packet_counter.payload_bytes; + } else { + stats.bytesReceived = rtp_stats.packet_counter.TotalBytes(); + } stats.packetsReceived = rtp_stats.packet_counter.packets; stats.last_packet_received_timestamp_ms = rtp_stats.last_packet_received_timestamp_ms; } else { - stats.payload_bytes_rcvd = 0; - stats.header_and_padding_bytes_rcvd = 0; + stats.bytesReceived = 0; stats.packetsReceived = 0; stats.last_packet_received_timestamp_ms = absl::nullopt; } diff --git a/audio/channel_receive.h b/audio/channel_receive.h index 5f71ea31b4..7527ef2454 100644 --- a/audio/channel_receive.h +++ b/audio/channel_receive.h @@ -54,8 +54,7 @@ struct CallReceiveStatistics { unsigned int cumulativeLost; unsigned int jitterSamples; int64_t rttMs; - int64_t payload_bytes_rcvd = 0; - int64_t header_and_padding_bytes_rcvd = 0; + size_t bytesReceived; int packetsReceived; // The capture ntp time (in local timebase) of the first played out audio // frame. diff --git a/audio/channel_send.cc b/audio/channel_send.cc index f803bf9f63..2a969ab1b4 100644 --- a/audio/channel_send.cc +++ b/audio/channel_send.cc @@ -52,6 +52,11 @@ namespace { constexpr int64_t kMaxRetransmissionWindowMs = 1000; constexpr int64_t kMinRetransmissionWindowMs = 30; +// Field trial which controls whether to report standard-compliant bytes +// sent/received per stream. If enabled, padding and headers are not included +// in bytes sent or received. +constexpr char kUseStandardBytesStats[] = "WebRTC-UseStandardBytesStats"; + MediaTransportEncodedAudioFrame::FrameType MediaTransportFrameTypeForWebrtcFrameType(webrtc::AudioFrameType frame_type) { switch (frame_type) { @@ -258,6 +263,7 @@ class ChannelSend : public ChannelSendInterface, rtc::ThreadChecker construction_thread_; const bool use_twcc_plr_for_ana_; + const bool use_standard_bytes_stats_; bool encoder_queue_is_active_ RTC_GUARDED_BY(encoder_queue_) = false; @@ -603,6 +609,8 @@ ChannelSend::ChannelSend(Clock* clock, new RateLimiter(clock, kMaxRetransmissionWindowMs)), use_twcc_plr_for_ana_( webrtc::field_trial::FindFullName("UseTwccPlrForAna") == "Enabled"), + use_standard_bytes_stats_( + webrtc::field_trial::IsEnabled(kUseStandardBytesStats)), media_transport_config_(media_transport_config), frame_encryptor_(frame_encryptor), crypto_options_(crypto_options), @@ -1011,12 +1019,17 @@ CallSendStatistics ChannelSend::GetRTCPStatistics() const { StreamDataCounters rtp_stats; StreamDataCounters rtx_stats; _rtpRtcpModule->GetSendStreamDataCounters(&rtp_stats, &rtx_stats); - stats.payload_bytes_sent = - rtp_stats.transmitted.payload_bytes + rtx_stats.transmitted.payload_bytes; - stats.header_and_padding_bytes_sent = - rtp_stats.transmitted.padding_bytes + rtp_stats.transmitted.header_bytes + - rtx_stats.transmitted.padding_bytes + rtx_stats.transmitted.header_bytes; - + if (use_standard_bytes_stats_) { + stats.bytesSent = rtp_stats.transmitted.payload_bytes + + rtx_stats.transmitted.payload_bytes; + } else { + stats.bytesSent = rtp_stats.transmitted.payload_bytes + + rtp_stats.transmitted.padding_bytes + + rtp_stats.transmitted.header_bytes + + rtx_stats.transmitted.payload_bytes + + rtx_stats.transmitted.padding_bytes + + rtx_stats.transmitted.header_bytes; + } // TODO(https://crbug.com/webrtc/10555): RTX retransmissions should show up in // separate outbound-rtp stream objects. stats.retransmitted_bytes_sent = rtp_stats.retransmitted.payload_bytes; diff --git a/audio/channel_send.h b/audio/channel_send.h index 11f8332fd3..6f946101d9 100644 --- a/audio/channel_send.h +++ b/audio/channel_send.h @@ -36,8 +36,7 @@ class RtpTransportControllerSendInterface; struct CallSendStatistics { int64_t rttMs; - int64_t payload_bytes_sent; - int64_t header_and_padding_bytes_sent; + size_t bytesSent; // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-retransmittedbytessent uint64_t retransmitted_bytes_sent; int packetsSent; diff --git a/audio/test/audio_stats_test.cc b/audio/test/audio_stats_test.cc index c91183c66b..ec55db317d 100644 --- a/audio/test/audio_stats_test.cc +++ b/audio/test/audio_stats_test.cc @@ -46,7 +46,7 @@ class NoLossTest : public AudioEndToEndTest { void OnStreamsStopped() override { AudioSendStream::Stats send_stats = send_stream()->GetStats(); - EXPECT_PRED2(IsNear, kBytesSent, send_stats.payload_bytes_sent); + EXPECT_PRED2(IsNear, kBytesSent, send_stats.bytes_sent); EXPECT_PRED2(IsNear, kPacketsSent, send_stats.packets_sent); EXPECT_EQ(0, send_stats.packets_lost); EXPECT_EQ(0.0f, send_stats.fraction_lost); @@ -66,7 +66,7 @@ class NoLossTest : public AudioEndToEndTest { EXPECT_EQ(false, send_stats.typing_noise_detected); AudioReceiveStream::Stats recv_stats = receive_stream()->GetStats(); - EXPECT_PRED2(IsNear, kBytesSent, recv_stats.payload_bytes_rcvd); + EXPECT_PRED2(IsNear, kBytesSent, recv_stats.bytes_rcvd); EXPECT_PRED2(IsNear, kPacketsSent, recv_stats.packets_rcvd); EXPECT_EQ(0u, recv_stats.packets_lost); EXPECT_EQ("opus", send_stats.codec_name); diff --git a/call/audio_receive_stream.h b/call/audio_receive_stream.h index 2999c3cb87..935aaed401 100644 --- a/call/audio_receive_stream.h +++ b/call/audio_receive_stream.h @@ -36,11 +36,7 @@ class AudioReceiveStream { Stats(); ~Stats(); uint32_t remote_ssrc = 0; - // TODO(nisse): Sum of below two values. Deprecated, delete as soon as - // downstream applications are updated. - int64_t bytes_rcvd; - int64_t payload_bytes_rcvd = 0; - int64_t header_and_padding_bytes_rcvd = 0; + int64_t bytes_rcvd = 0; uint32_t packets_rcvd = 0; uint64_t fec_packets_received = 0; uint64_t fec_packets_discarded = 0; diff --git a/call/audio_send_stream.h b/call/audio_send_stream.h index f2dab9a3d3..fb711c4efe 100644 --- a/call/audio_send_stream.h +++ b/call/audio_send_stream.h @@ -43,11 +43,7 @@ class AudioSendStream { // TODO(solenberg): Harmonize naming and defaults with receive stream stats. uint32_t local_ssrc = 0; - // TODO(nisse): Sum of below two values. Deprecated, delete as soon as - // downstream applications are updated. - int64_t bytes_sent; - int64_t payload_bytes_sent = 0; - int64_t header_and_padding_bytes_sent = 0; + int64_t bytes_sent = 0; // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-retransmittedbytessent uint64_t retransmitted_bytes_sent = 0; int32_t packets_sent = 0; diff --git a/media/base/media_channel.h b/media/base/media_channel.h index c3e8be57a3..8f6b04b512 100644 --- a/media/base/media_channel.h +++ b/media/base/media_channel.h @@ -393,13 +393,7 @@ struct MediaSenderInfo { return 0; } } - // TODO(nisse): Sum of below two values. Deprecated, delete as soon as - // downstream applications are updated. - int64_t bytes_sent; - // https://w3c.github.io/webrtc-stats/#dom-rtcsentrtpstreamstats-bytessent - int64_t payload_bytes_sent = 0; - // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-headerbytessent - int64_t header_and_padding_bytes_sent = 0; + int64_t bytes_sent = 0; // https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-retransmittedbytessent uint64_t retransmitted_bytes_sent = 0; int packets_sent = 0; @@ -453,13 +447,7 @@ struct MediaReceiverInfo { } } - // TODO(nisse): Sum of below two values. Deprecated, delete as soon as - // downstream applications are updated. - int64_t bytes_rcvd; - // https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-bytesreceived - int64_t payload_bytes_rcvd = 0; - // https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-headerbytesreceived - int64_t header_and_padding_bytes_rcvd = 0; + int64_t bytes_rcvd = 0; int packets_rcvd = 0; int packets_lost = 0; // TODO(bugs.webrtc.org/10679): Unused, delete as soon as downstream code is diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc index 74647a87d7..7bce942105 100644 --- a/media/engine/webrtc_video_engine.cc +++ b/media/engine/webrtc_video_engine.cc @@ -48,6 +48,11 @@ namespace { const int kMinLayerSize = 16; +// Field trial which controls whether to report standard-compliant bytes +// sent/received per stream. If enabled, padding and headers are not included +// in bytes sent or received. +constexpr char kUseStandardBytesStats[] = "WebRTC-UseStandardBytesStats"; + // If this field trial is enabled, we will enable sending FlexFEC and disable // sending ULPFEC whenever the former has been negotiated in the SDPs. bool IsFlexfecFieldTrialEnabled() { @@ -1803,7 +1808,9 @@ WebRtcVideoChannel::WebRtcVideoSendStream::WebRtcVideoSendStream( encoder_sink_(nullptr), parameters_(std::move(config), options, max_bitrate_bps, codec_settings), rtp_parameters_(CreateRtpParametersWithEncodings(sp)), - sending_(false) { + sending_(false), + use_standard_bytes_stats_( + webrtc::field_trial::IsEnabled(kUseStandardBytesStats)) { // Maximum packet size may come in RtpConfig from external transport, for // example from QuicTransportInterface implementation, so do not exceed // given max_packet_size. @@ -2372,10 +2379,13 @@ VideoSenderInfo WebRtcVideoChannel::WebRtcVideoSendStream::GetVideoSenderInfo( it != stats.substreams.end(); ++it) { // TODO(pbos): Wire up additional stats, such as padding bytes. webrtc::VideoSendStream::StreamStats stream_stats = it->second; - info.payload_bytes_sent += stream_stats.rtp_stats.transmitted.payload_bytes; - info.header_and_padding_bytes_sent += - stream_stats.rtp_stats.transmitted.header_bytes + - stream_stats.rtp_stats.transmitted.padding_bytes; + if (use_standard_bytes_stats_) { + info.bytes_sent += stream_stats.rtp_stats.transmitted.payload_bytes; + } else { + info.bytes_sent += stream_stats.rtp_stats.transmitted.payload_bytes + + stream_stats.rtp_stats.transmitted.header_bytes + + stream_stats.rtp_stats.transmitted.padding_bytes; + } info.packets_sent += stream_stats.rtp_stats.transmitted.packets; info.total_packet_send_delay_ms += stream_stats.total_packet_send_delay_ms; // TODO(https://crbug.com/webrtc/10555): RTX retransmissions should show up @@ -2399,8 +2409,6 @@ VideoSenderInfo WebRtcVideoChannel::WebRtcVideoSendStream::GetVideoSenderInfo( info.report_block_datas.push_back(stream_stats.report_block_data.value()); } } - info.bytes_sent = - info.payload_bytes_sent + info.header_and_padding_bytes_sent; if (!stats.substreams.empty()) { // TODO(pbos): Report fraction lost per SSRC. @@ -2493,7 +2501,9 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream( decoder_factory_(decoder_factory), sink_(NULL), first_frame_timestamp_(-1), - estimated_remote_start_ntp_time_ms_(0) { + estimated_remote_start_ntp_time_ms_(0), + use_standard_bytes_stats_( + webrtc::field_trial::IsEnabled(kUseStandardBytesStats)) { config_.renderer = this; ConfigureCodecs(recv_codecs); ConfigureFlexfecCodec(flexfec_config.payload_type); @@ -2789,12 +2799,11 @@ WebRtcVideoChannel::WebRtcVideoReceiveStream::GetVideoReceiverInfo( if (stats.current_payload_type != -1) { info.codec_payload_type = stats.current_payload_type; } - info.payload_bytes_rcvd = stats.rtp_stats.packet_counter.payload_bytes; - info.header_and_padding_bytes_rcvd = - stats.rtp_stats.packet_counter.header_bytes + - stats.rtp_stats.packet_counter.padding_bytes; - info.bytes_rcvd = - info.payload_bytes_rcvd + info.header_and_padding_bytes_rcvd; + if (use_standard_bytes_stats_) { + info.bytes_rcvd = stats.rtp_stats.packet_counter.payload_bytes; + } else { + info.bytes_rcvd = stats.rtp_stats.packet_counter.TotalBytes(); + } info.packets_rcvd = stats.rtp_stats.packet_counter.packets; info.packets_lost = stats.rtp_stats.packets_lost; diff --git a/media/engine/webrtc_video_engine.h b/media/engine/webrtc_video_engine.h index 5e5ab6e4f3..6e4830494a 100644 --- a/media/engine/webrtc_video_engine.h +++ b/media/engine/webrtc_video_engine.h @@ -380,6 +380,8 @@ class WebRtcVideoChannel : public VideoMediaChannel, bool sending_ RTC_GUARDED_BY(&thread_checker_); + const bool use_standard_bytes_stats_; + // In order for the |invoker_| to protect other members from being // destructed as they are used in asynchronous tasks it has to be destructed // first. @@ -469,6 +471,8 @@ class WebRtcVideoChannel : public VideoMediaChannel, // Start NTP time is estimated as current remote NTP time (estimated from // RTCP) minus the elapsed time, as soon as remote NTP time is available. int64_t estimated_remote_start_ntp_time_ms_ RTC_GUARDED_BY(sink_lock_); + + const bool use_standard_bytes_stats_; }; void Construct(webrtc::Call* call, WebRtcVideoEngine* engine); diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc index 62bbf245f8..b4a0a6195a 100644 --- a/media/engine/webrtc_video_engine_unittest.cc +++ b/media/engine/webrtc_video_engine_unittest.cc @@ -1599,6 +1599,8 @@ TEST_F(WebRtcVideoChannelBaseTest, InvalidRecvBufferSize) { // Test that stats work properly for a 1-1 call. TEST_F(WebRtcVideoChannelBaseTest, GetStats) { + webrtc::test::ScopedFieldTrials field_trials( + "WebRTC-UseStandardBytesStats/Enabled/"); SetUp(); const int kDurationSec = 3; @@ -1611,7 +1613,7 @@ TEST_F(WebRtcVideoChannelBaseTest, GetStats) { ASSERT_EQ(1U, info.senders.size()); // TODO(whyuan): bytes_sent and bytes_rcvd are different. Are both payload? // For webrtc, bytes_sent does not include the RTP header length. - EXPECT_EQ(info.senders[0].payload_bytes_sent, + EXPECT_EQ(info.senders[0].bytes_sent, NumRtpBytes() - kRtpHeaderSize * NumRtpPackets()); EXPECT_EQ(NumRtpPackets(), info.senders[0].packets_sent); EXPECT_EQ(0.0, info.senders[0].fraction_lost); @@ -1636,7 +1638,7 @@ TEST_F(WebRtcVideoChannelBaseTest, GetStats) { ASSERT_TRUE(info.receivers[0].codec_payload_type); EXPECT_EQ(DefaultCodec().id, *info.receivers[0].codec_payload_type); EXPECT_EQ(NumRtpBytes() - kRtpHeaderSize * NumRtpPackets(), - info.receivers[0].payload_bytes_rcvd); + info.receivers[0].bytes_rcvd); EXPECT_EQ(NumRtpPackets(), info.receivers[0].packets_rcvd); EXPECT_EQ(0, info.receivers[0].packets_lost); // TODO(asapersson): Not set for webrtc. Handle missing stats. @@ -1657,6 +1659,8 @@ TEST_F(WebRtcVideoChannelBaseTest, GetStats) { // Test that stats work properly for a conf call with multiple recv streams. TEST_F(WebRtcVideoChannelBaseTest, GetStatsMultipleRecvStreams) { + webrtc::test::ScopedFieldTrials field_trials( + "WebRTC-UseStandardBytesStats/Enabled/"); SetUp(); cricket::FakeVideoRenderer renderer1, renderer2; @@ -1690,7 +1694,7 @@ TEST_F(WebRtcVideoChannelBaseTest, GetStatsMultipleRecvStreams) { // TODO(whyuan): bytes_sent and bytes_rcvd are different. Are both payload? // For webrtc, bytes_sent does not include the RTP header length. EXPECT_EQ_WAIT(NumRtpBytes() - kRtpHeaderSize * NumRtpPackets(), - GetSenderStats(0).payload_bytes_sent, kTimeout); + GetSenderStats(0).bytes_sent, kTimeout); EXPECT_EQ_WAIT(NumRtpPackets(), GetSenderStats(0).packets_sent, kTimeout); EXPECT_EQ(kVideoWidth, GetSenderStats(0).send_frame_width); EXPECT_EQ(kVideoHeight, GetSenderStats(0).send_frame_height); @@ -1700,7 +1704,7 @@ TEST_F(WebRtcVideoChannelBaseTest, GetStatsMultipleRecvStreams) { EXPECT_EQ(1U, GetReceiverStats(i).ssrcs().size()); EXPECT_EQ(i + 1, GetReceiverStats(i).ssrcs()[0]); EXPECT_EQ_WAIT(NumRtpBytes() - kRtpHeaderSize * NumRtpPackets(), - GetReceiverStats(i).payload_bytes_rcvd, kTimeout); + GetReceiverStats(i).bytes_rcvd, kTimeout); EXPECT_EQ_WAIT(NumRtpPackets(), GetReceiverStats(i).packets_rcvd, kTimeout); EXPECT_EQ_WAIT(kVideoWidth, GetReceiverStats(i).frame_width, kTimeout); EXPECT_EQ_WAIT(kVideoHeight, GetReceiverStats(i).frame_height, kTimeout); @@ -5278,6 +5282,9 @@ TEST_F(WebRtcVideoChannelTest, GetStatsTranslatesDecodeStatsCorrectly) { } TEST_F(WebRtcVideoChannelTest, GetStatsTranslatesReceivePacketStatsCorrectly) { + webrtc::test::ScopedFieldTrials field_trials( + "WebRTC-UseStandardBytesStats/Enabled/"); + FakeVideoReceiveStream* stream = AddRecvStream(); webrtc::VideoReceiveStream::Stats stats; stats.rtp_stats.packet_counter.payload_bytes = 2; @@ -5290,7 +5297,7 @@ TEST_F(WebRtcVideoChannelTest, GetStatsTranslatesReceivePacketStatsCorrectly) { cricket::VideoMediaInfo info; ASSERT_TRUE(channel_->GetStats(&info)); EXPECT_EQ(stats.rtp_stats.packet_counter.payload_bytes, - rtc::checked_cast(info.receivers[0].payload_bytes_rcvd)); + rtc::checked_cast(info.receivers[0].bytes_rcvd)); EXPECT_EQ(stats.rtp_stats.packet_counter.packets, rtc::checked_cast(info.receivers[0].packets_rcvd)); EXPECT_EQ(stats.rtp_stats.packets_lost, info.receivers[0].packets_lost); diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc index a3b27a5f00..bef9d23840 100644 --- a/media/engine/webrtc_voice_engine.cc +++ b/media/engine/webrtc_voice_engine.cc @@ -2158,10 +2158,7 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) { stream.second->GetStats(recv_streams_.size() > 0); VoiceSenderInfo sinfo; sinfo.add_ssrc(stats.local_ssrc); - sinfo.payload_bytes_sent = stats.payload_bytes_sent; - sinfo.header_and_padding_bytes_sent = stats.header_and_padding_bytes_sent; - sinfo.bytes_sent = - sinfo.payload_bytes_sent + sinfo.header_and_padding_bytes_sent; + sinfo.bytes_sent = stats.bytes_sent; sinfo.retransmitted_bytes_sent = stats.retransmitted_bytes_sent; sinfo.packets_sent = stats.packets_sent; sinfo.retransmitted_packets_sent = stats.retransmitted_packets_sent; @@ -2204,10 +2201,7 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) { webrtc::AudioReceiveStream::Stats stats = stream.second->GetStats(); VoiceReceiverInfo rinfo; rinfo.add_ssrc(stats.remote_ssrc); - rinfo.payload_bytes_rcvd = stats.payload_bytes_rcvd; - rinfo.header_and_padding_bytes_rcvd = stats.header_and_padding_bytes_rcvd; - rinfo.bytes_rcvd = - rinfo.payload_bytes_rcvd + rinfo.header_and_padding_bytes_rcvd; + rinfo.bytes_rcvd = stats.bytes_rcvd; rinfo.packets_rcvd = stats.packets_rcvd; rinfo.fec_packets_received = stats.fec_packets_received; rinfo.fec_packets_discarded = stats.fec_packets_discarded; diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc index 711cbbb8e6..8fac2a1f92 100644 --- a/media/engine/webrtc_voice_engine_unittest.cc +++ b/media/engine/webrtc_voice_engine_unittest.cc @@ -566,8 +566,7 @@ class WebRtcVoiceEngineTestFake : public ::testing::Test { webrtc::AudioSendStream::Stats GetAudioSendStreamStats() const { webrtc::AudioSendStream::Stats stats; stats.local_ssrc = 12; - stats.payload_bytes_sent = 345; - stats.header_and_padding_bytes_sent = 56; + stats.bytes_sent = 345; stats.packets_sent = 678; stats.packets_lost = 9012; stats.fraction_lost = 34.56f; @@ -601,9 +600,7 @@ class WebRtcVoiceEngineTestFake : public ::testing::Test { bool is_sending) { const auto stats = GetAudioSendStreamStats(); EXPECT_EQ(info.ssrc(), stats.local_ssrc); - EXPECT_EQ(info.payload_bytes_sent, stats.payload_bytes_sent); - EXPECT_EQ(info.header_and_padding_bytes_sent, - stats.header_and_padding_bytes_sent); + EXPECT_EQ(info.bytes_sent, stats.bytes_sent); EXPECT_EQ(info.packets_sent, stats.packets_sent); EXPECT_EQ(info.packets_lost, stats.packets_lost); EXPECT_EQ(info.fraction_lost, stats.fraction_lost); @@ -645,8 +642,7 @@ class WebRtcVoiceEngineTestFake : public ::testing::Test { webrtc::AudioReceiveStream::Stats GetAudioReceiveStreamStats() const { webrtc::AudioReceiveStream::Stats stats; stats.remote_ssrc = 123; - stats.payload_bytes_rcvd = 456; - stats.header_and_padding_bytes_rcvd = 67; + stats.bytes_rcvd = 456; stats.packets_rcvd = 768; stats.packets_lost = 101; stats.codec_name = "codec_name_recv"; @@ -686,9 +682,7 @@ class WebRtcVoiceEngineTestFake : public ::testing::Test { void VerifyVoiceReceiverInfo(const cricket::VoiceReceiverInfo& info) { const auto stats = GetAudioReceiveStreamStats(); EXPECT_EQ(info.ssrc(), stats.remote_ssrc); - EXPECT_EQ(info.payload_bytes_rcvd, stats.payload_bytes_rcvd); - EXPECT_EQ(info.header_and_padding_bytes_rcvd, - stats.header_and_padding_bytes_rcvd); + EXPECT_EQ(info.bytes_rcvd, stats.bytes_rcvd); EXPECT_EQ(rtc::checked_cast(info.packets_rcvd), stats.packets_rcvd); EXPECT_EQ(rtc::checked_cast(info.packets_lost), diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc index 9d6cf7711a..50c49a701b 100644 --- a/pc/rtc_stats_collector.cc +++ b/pc/rtc_stats_collector.cc @@ -256,9 +256,7 @@ void SetInboundRTPStreamStatsFromMediaReceiverInfo( inbound_stats->packets_received = static_cast(media_receiver_info.packets_rcvd); inbound_stats->bytes_received = - static_cast(media_receiver_info.payload_bytes_rcvd); - inbound_stats->header_bytes_received = - static_cast(media_receiver_info.header_and_padding_bytes_rcvd); + static_cast(media_receiver_info.bytes_rcvd); inbound_stats->packets_lost = static_cast(media_receiver_info.packets_lost); } @@ -345,9 +343,7 @@ void SetOutboundRTPStreamStatsFromMediaSenderInfo( outbound_stats->retransmitted_packets_sent = media_sender_info.retransmitted_packets_sent; outbound_stats->bytes_sent = - static_cast(media_sender_info.payload_bytes_sent); - outbound_stats->header_bytes_sent = - static_cast(media_sender_info.header_and_padding_bytes_sent); + static_cast(media_sender_info.bytes_sent); outbound_stats->retransmitted_bytes_sent = media_sender_info.retransmitted_bytes_sent; } diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc index 86f8ba9f4a..1420fcc5ae 100644 --- a/pc/rtc_stats_collector_unittest.cc +++ b/pc/rtc_stats_collector_unittest.cc @@ -1739,8 +1739,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) { voice_media_info.receivers[0].packets_rcvd = 2; voice_media_info.receivers[0].fec_packets_discarded = 5566; voice_media_info.receivers[0].fec_packets_received = 6677; - voice_media_info.receivers[0].payload_bytes_rcvd = 3; - voice_media_info.receivers[0].header_and_padding_bytes_rcvd = 4; + voice_media_info.receivers[0].bytes_rcvd = 3; voice_media_info.receivers[0].codec_payload_type = 42; voice_media_info.receivers[0].jitter_ms = 4500; voice_media_info.receivers[0].last_packet_received_timestamp_ms = @@ -1777,7 +1776,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Audio) { expected_audio.fec_packets_discarded = 5566; expected_audio.fec_packets_received = 6677; expected_audio.bytes_received = 3; - expected_audio.header_bytes_received = 4; expected_audio.packets_lost = -1; // |expected_audio.last_packet_received_timestamp| should be undefined. expected_audio.jitter = 4.5; @@ -1811,8 +1809,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { video_media_info.receivers[0].local_stats[0].ssrc = 1; video_media_info.receivers[0].packets_rcvd = 2; video_media_info.receivers[0].packets_lost = 42; - video_media_info.receivers[0].payload_bytes_rcvd = 3; - video_media_info.receivers[0].header_and_padding_bytes_rcvd = 12; + video_media_info.receivers[0].bytes_rcvd = 3; video_media_info.receivers[0].codec_payload_type = 42; video_media_info.receivers[0].firs_sent = 5; video_media_info.receivers[0].plis_sent = 6; @@ -1855,7 +1852,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCInboundRTPStreamStats_Video) { expected_video.nack_count = 7; expected_video.packets_received = 2; expected_video.bytes_received = 3; - expected_video.header_bytes_received = 12; expected_video.packets_lost = 42; expected_video.frames_decoded = 8; expected_video.key_frames_decoded = 3; @@ -1900,8 +1896,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) { voice_media_info.senders[0].local_stats[0].ssrc = 1; voice_media_info.senders[0].packets_sent = 2; voice_media_info.senders[0].retransmitted_packets_sent = 20; - voice_media_info.senders[0].payload_bytes_sent = 3; - voice_media_info.senders[0].header_and_padding_bytes_sent = 12; + voice_media_info.senders[0].bytes_sent = 3; voice_media_info.senders[0].retransmitted_bytes_sent = 30; voice_media_info.senders[0].codec_payload_type = 42; @@ -1934,7 +1929,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Audio) { expected_audio.packets_sent = 2; expected_audio.retransmitted_packets_sent = 20; expected_audio.bytes_sent = 3; - expected_audio.header_bytes_sent = 12; expected_audio.retransmitted_bytes_sent = 30; ASSERT_TRUE(report->Get(expected_audio.id())); @@ -1962,8 +1956,7 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) { video_media_info.senders[0].nacks_rcvd = 4; video_media_info.senders[0].packets_sent = 5; video_media_info.senders[0].retransmitted_packets_sent = 50; - video_media_info.senders[0].payload_bytes_sent = 6; - video_media_info.senders[0].header_and_padding_bytes_sent = 12; + video_media_info.senders[0].bytes_sent = 6; video_media_info.senders[0].retransmitted_bytes_sent = 60; video_media_info.senders[0].codec_payload_type = 42; video_media_info.senders[0].frames_encoded = 8; @@ -2015,7 +2008,6 @@ TEST_F(RTCStatsCollectorTest, CollectRTCOutboundRTPStreamStats_Video) { expected_video.packets_sent = 5; expected_video.retransmitted_packets_sent = 50; expected_video.bytes_sent = 6; - expected_video.header_bytes_sent = 12; expected_video.retransmitted_bytes_sent = 60; expected_video.frames_encoded = 8; expected_video.key_frames_encoded = 3; @@ -2204,8 +2196,7 @@ TEST_F(RTCStatsCollectorTest, CollectNoStreamRTCOutboundRTPStreamStats_Audio) { voice_media_info.senders[0].local_stats[0].ssrc = 1; voice_media_info.senders[0].packets_sent = 2; voice_media_info.senders[0].retransmitted_packets_sent = 20; - voice_media_info.senders[0].payload_bytes_sent = 3; - voice_media_info.senders[0].header_and_padding_bytes_sent = 4; + voice_media_info.senders[0].bytes_sent = 3; voice_media_info.senders[0].retransmitted_bytes_sent = 30; voice_media_info.senders[0].codec_payload_type = 42; @@ -2239,7 +2230,6 @@ TEST_F(RTCStatsCollectorTest, CollectNoStreamRTCOutboundRTPStreamStats_Audio) { expected_audio.packets_sent = 2; expected_audio.retransmitted_packets_sent = 20; expected_audio.bytes_sent = 3; - expected_audio.header_bytes_sent = 4; expected_audio.retransmitted_bytes_sent = 30; ASSERT_TRUE(report->Get(expected_audio.id())); diff --git a/pc/rtc_stats_integrationtest.cc b/pc/rtc_stats_integrationtest.cc index 0d51af09e0..7cb302842c 100644 --- a/pc/rtc_stats_integrationtest.cc +++ b/pc/rtc_stats_integrationtest.cc @@ -797,8 +797,6 @@ class RTCStatsReportVerifier { inbound_stream.fec_packets_discarded); } verifier.TestMemberIsNonNegative(inbound_stream.bytes_received); - verifier.TestMemberIsNonNegative( - inbound_stream.header_bytes_received); // packets_lost is defined as signed, but this should never happen in // this test. See RFC 3550. verifier.TestMemberIsNonNegative(inbound_stream.packets_lost); @@ -857,8 +855,6 @@ class RTCStatsReportVerifier { verifier.TestMemberIsNonNegative( outbound_stream.retransmitted_packets_sent); verifier.TestMemberIsNonNegative(outbound_stream.bytes_sent); - verifier.TestMemberIsNonNegative( - outbound_stream.header_bytes_sent); verifier.TestMemberIsNonNegative( outbound_stream.retransmitted_bytes_sent); verifier.TestMemberIsUndefined(outbound_stream.target_bitrate); diff --git a/pc/stats_collector.cc b/pc/stats_collector.cc index c5999dacdb..1fb2a5b182 100644 --- a/pc/stats_collector.cc +++ b/pc/stats_collector.cc @@ -19,16 +19,10 @@ #include "pc/peer_connection.h" #include "rtc_base/checks.h" #include "rtc_base/third_party/base64/base64.h" -#include "system_wrappers/include/field_trial.h" namespace webrtc { namespace { -// Field trial which controls whether to report standard-compliant bytes -// sent/received per stream. If enabled, padding and headers are not included -// in bytes sent or received. -constexpr char kUseStandardBytesStats[] = "WebRTC-UseStandardBytesStats"; - // The following is the enum RTCStatsIceCandidateType from // http://w3c.github.io/webrtc-stats/#rtcstatsicecandidatetype-enum such that // our stats report for ice candidate type could conform to that. @@ -88,14 +82,9 @@ void CreateTrackReports(const TrackVector& tracks, } void ExtractCommonSendProperties(const cricket::MediaSenderInfo& info, - StatsReport* report, - bool use_standard_bytes_stats) { + StatsReport* report) { report->AddString(StatsReport::kStatsValueNameCodecName, info.codec_name); - int64_t bytes_sent = info.payload_bytes_sent; - if (!use_standard_bytes_stats) { - bytes_sent += info.header_and_padding_bytes_sent; - } - report->AddInt64(StatsReport::kStatsValueNameBytesSent, bytes_sent); + report->AddInt64(StatsReport::kStatsValueNameBytesSent, info.bytes_sent); if (info.rtt_ms >= 0) { report->AddInt64(StatsReport::kStatsValueNameRtt, info.rtt_ms); } @@ -142,9 +131,7 @@ void SetAudioProcessingStats(StatsReport* report, } } -void ExtractStats(const cricket::VoiceReceiverInfo& info, - StatsReport* report, - bool use_standard_bytes_stats) { +void ExtractStats(const cricket::VoiceReceiverInfo& info, StatsReport* report) { ExtractCommonReceiveProperties(info, report); const FloatForAdd floats[] = { {StatsReport::kStatsValueNameExpandRate, info.expand_rate}, @@ -192,11 +179,7 @@ void ExtractStats(const cricket::VoiceReceiverInfo& info, report->AddInt(StatsReport::kStatsValueNameDecodingCodecPLC, info.decoding_codec_plc); - int64_t bytes_rcvd = info.payload_bytes_rcvd; - if (!use_standard_bytes_stats) { - bytes_rcvd += info.header_and_padding_bytes_rcvd; - } - report->AddInt64(StatsReport::kStatsValueNameBytesReceived, bytes_rcvd); + report->AddInt64(StatsReport::kStatsValueNameBytesReceived, info.bytes_rcvd); if (info.capture_start_ntp_time_ms >= 0) { report->AddInt64(StatsReport::kStatsValueNameCaptureStartNtpTimeMs, info.capture_start_ntp_time_ms); @@ -204,10 +187,8 @@ void ExtractStats(const cricket::VoiceReceiverInfo& info, report->AddString(StatsReport::kStatsValueNameMediaType, "audio"); } -void ExtractStats(const cricket::VoiceSenderInfo& info, - StatsReport* report, - bool use_standard_bytes_stats) { - ExtractCommonSendProperties(info, report, use_standard_bytes_stats); +void ExtractStats(const cricket::VoiceSenderInfo& info, StatsReport* report) { + ExtractCommonSendProperties(info, report); SetAudioProcessingStats(report, info.typing_noise_detected, info.apm_statistics); @@ -265,17 +246,11 @@ void ExtractStats(const cricket::VoiceSenderInfo& info, } } -void ExtractStats(const cricket::VideoReceiverInfo& info, - StatsReport* report, - bool use_standard_bytes_stats) { +void ExtractStats(const cricket::VideoReceiverInfo& info, StatsReport* report) { ExtractCommonReceiveProperties(info, report); report->AddString(StatsReport::kStatsValueNameCodecImplementationName, info.decoder_implementation_name); - int64_t bytes_rcvd = info.payload_bytes_rcvd; - if (!use_standard_bytes_stats) { - bytes_rcvd += info.header_and_padding_bytes_rcvd; - } - report->AddInt64(StatsReport::kStatsValueNameBytesReceived, bytes_rcvd); + report->AddInt64(StatsReport::kStatsValueNameBytesReceived, info.bytes_rcvd); if (info.capture_start_ntp_time_ms >= 0) { report->AddInt64(StatsReport::kStatsValueNameCaptureStartNtpTimeMs, info.capture_start_ntp_time_ms); @@ -326,10 +301,8 @@ void ExtractStats(const cricket::VideoReceiverInfo& info, webrtc::videocontenttypehelpers::ToString(info.content_type)); } -void ExtractStats(const cricket::VideoSenderInfo& info, - StatsReport* report, - bool use_standard_bytes_stats) { - ExtractCommonSendProperties(info, report, use_standard_bytes_stats); +void ExtractStats(const cricket::VideoSenderInfo& info, StatsReport* report) { + ExtractCommonSendProperties(info, report); report->AddString(StatsReport::kStatsValueNameCodecImplementationName, info.encoder_implementation_name); @@ -444,7 +417,7 @@ void ExtractStatsFromList( StatsReport* report = collector->PrepareReport(true, ssrc, track_id, transport_id, direction); if (report) - ExtractStats(d, report, collector->UseStandardBytesStats()); + ExtractStats(d, report); if (!d.remote_stats.empty()) { report = collector->PrepareReport(false, ssrc, track_id, transport_id, @@ -497,10 +470,7 @@ const char* AdapterTypeToStatsType(rtc::AdapterType type) { } StatsCollector::StatsCollector(PeerConnectionInternal* pc) - : pc_(pc), - stats_gathering_started_(0), - use_standard_bytes_stats_( - webrtc::field_trial::IsEnabled(kUseStandardBytesStats)) { + : pc_(pc), stats_gathering_started_(0) { RTC_DCHECK(pc_); } diff --git a/pc/stats_collector.h b/pc/stats_collector.h index 041fe2f8fe..fa9d587a67 100644 --- a/pc/stats_collector.h +++ b/pc/stats_collector.h @@ -94,8 +94,6 @@ class StatsCollector { // ignored. void ClearUpdateStatsCacheForTest(); - bool UseStandardBytesStats() const { return use_standard_bytes_stats_; } - private: friend class StatsCollectorTest; @@ -145,7 +143,6 @@ class StatsCollector { // Raw pointer to the peer connection the statistics are gathered from. PeerConnectionInternal* const pc_; double stats_gathering_started_; - const bool use_standard_bytes_stats_; // TODO(tommi): We appear to be holding on to raw pointers to reference // counted objects? We should be using scoped_refptr here. diff --git a/pc/stats_collector_unittest.cc b/pc/stats_collector_unittest.cc index c6b57c278e..a06b32248f 100644 --- a/pc/stats_collector_unittest.cc +++ b/pc/stats_collector_unittest.cc @@ -324,9 +324,7 @@ void VerifyVoiceReceiverInfoReport(const StatsReport* report, EXPECT_EQ(rtc::ToString(info.audio_level), value_in_report); EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameBytesReceived, &value_in_report)); - EXPECT_EQ(rtc::ToString(info.payload_bytes_rcvd + - info.header_and_padding_bytes_rcvd), - value_in_report); + EXPECT_EQ(rtc::ToString(info.bytes_rcvd), value_in_report); EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameJitterReceived, &value_in_report)); EXPECT_EQ(rtc::ToString(info.jitter_ms), value_in_report); @@ -399,9 +397,7 @@ void VerifyVoiceSenderInfoReport(const StatsReport* report, EXPECT_EQ(sinfo.codec_name, value_in_report); EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameBytesSent, &value_in_report)); - EXPECT_EQ(rtc::ToString(sinfo.payload_bytes_sent + - sinfo.header_and_padding_bytes_sent), - value_in_report); + EXPECT_EQ(rtc::ToString(sinfo.bytes_sent), value_in_report); EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNamePacketsSent, &value_in_report)); EXPECT_EQ(rtc::ToString(sinfo.packets_sent), value_in_report); @@ -532,8 +528,7 @@ void InitVoiceSenderInfo(cricket::VoiceSenderInfo* voice_sender_info, uint32_t ssrc = kSsrcOfTrack) { voice_sender_info->add_ssrc(ssrc); voice_sender_info->codec_name = "fake_codec"; - voice_sender_info->payload_bytes_sent = 88; - voice_sender_info->header_and_padding_bytes_sent = 12; + voice_sender_info->bytes_sent = 100; voice_sender_info->packets_sent = 101; voice_sender_info->rtt_ms = 102; voice_sender_info->fraction_lost = 103; @@ -568,8 +563,7 @@ void UpdateVoiceSenderInfoFromAudioTrack( void InitVoiceReceiverInfo(cricket::VoiceReceiverInfo* voice_receiver_info) { voice_receiver_info->add_ssrc(kSsrcOfTrack); - voice_receiver_info->payload_bytes_rcvd = 98; - voice_receiver_info->header_and_padding_bytes_rcvd = 12; + voice_receiver_info->bytes_rcvd = 110; voice_receiver_info->packets_rcvd = 111; voice_receiver_info->packets_lost = 114; voice_receiver_info->jitter_ms = 116; @@ -910,8 +904,7 @@ TEST_P(StatsCollectorTrackTest, BytesCounterHandles64Bits) { VideoSenderInfo video_sender_info; video_sender_info.add_ssrc(1234); - video_sender_info.payload_bytes_sent = kBytesSent; - video_sender_info.header_and_padding_bytes_sent = 0; + video_sender_info.bytes_sent = kBytesSent; VideoMediaInfo video_info; video_info.senders.push_back(video_sender_info); @@ -943,8 +936,7 @@ TEST_P(StatsCollectorTrackTest, AudioBandwidthEstimationInfoIsReported) { VoiceSenderInfo voice_sender_info; voice_sender_info.add_ssrc(1234); - voice_sender_info.payload_bytes_sent = kBytesSent - 12; - voice_sender_info.header_and_padding_bytes_sent = 12; + voice_sender_info.bytes_sent = kBytesSent; VoiceMediaInfo voice_info; voice_info.senders.push_back(voice_sender_info); @@ -992,9 +984,7 @@ TEST_P(StatsCollectorTrackTest, VideoBandwidthEstimationInfoIsReported) { VideoSenderInfo video_sender_info; video_sender_info.add_ssrc(1234); - video_sender_info.payload_bytes_sent = kBytesSent - 12; - video_sender_info.header_and_padding_bytes_sent = 12; - + video_sender_info.bytes_sent = kBytesSent; VideoMediaInfo video_info; video_info.senders.push_back(video_sender_info); @@ -1091,8 +1081,7 @@ TEST_P(StatsCollectorTrackTest, TrackAndSsrcObjectExistAfterUpdateSsrcStats) { VideoSenderInfo video_sender_info; video_sender_info.add_ssrc(1234); - video_sender_info.payload_bytes_sent = kBytesSent - 12; - video_sender_info.header_and_padding_bytes_sent = 12; + video_sender_info.bytes_sent = kBytesSent; VideoMediaInfo video_info; video_info.senders.push_back(video_sender_info); @@ -1146,8 +1135,7 @@ TEST_P(StatsCollectorTrackTest, TransportObjectLinkedFromSsrcObject) { VideoSenderInfo video_sender_info; video_sender_info.add_ssrc(1234); - video_sender_info.payload_bytes_sent = kBytesSent - 12; - video_sender_info.header_and_padding_bytes_sent = 12; + video_sender_info.bytes_sent = kBytesSent; VideoMediaInfo video_info; video_info.senders.push_back(video_sender_info); diff --git a/stats/rtcstats_objects.cc b/stats/rtcstats_objects.cc index 99594a8904..3f8d7521f3 100644 --- a/stats/rtcstats_objects.cc +++ b/stats/rtcstats_objects.cc @@ -598,7 +598,6 @@ WEBRTC_RTCSTATS_IMPL( RTCInboundRTPStreamStats, RTCRTPStreamStats, "inbound-rtp", &packets_received, &bytes_received, - &header_bytes_received, &packets_lost, &last_packet_received_timestamp, &jitter, @@ -631,7 +630,6 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(std::string&& id, fec_packets_received("fecPacketsReceived"), fec_packets_discarded("fecPacketsDiscarded"), bytes_received("bytesReceived"), - header_bytes_received("headerBytesReceived"), packets_lost("packetsLost"), last_packet_received_timestamp("lastPacketReceivedTimestamp"), jitter("jitter"), @@ -659,7 +657,6 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats( fec_packets_received(other.fec_packets_received), fec_packets_discarded(other.fec_packets_discarded), bytes_received(other.bytes_received), - header_bytes_received(other.header_bytes_received), packets_lost(other.packets_lost), last_packet_received_timestamp(other.last_packet_received_timestamp), jitter(other.jitter), @@ -689,7 +686,6 @@ WEBRTC_RTCSTATS_IMPL( &packets_sent, &retransmitted_packets_sent, &bytes_sent, - &header_bytes_sent, &retransmitted_bytes_sent, &target_bitrate, &frames_encoded, @@ -714,7 +710,6 @@ RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(std::string&& id, packets_sent("packetsSent"), retransmitted_packets_sent("retransmittedPacketsSent"), bytes_sent("bytesSent"), - header_bytes_sent("headerBytesSent"), retransmitted_bytes_sent("retransmittedBytesSent"), target_bitrate("targetBitrate"), frames_encoded("framesEncoded"), @@ -735,7 +730,6 @@ RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats( packets_sent(other.packets_sent), retransmitted_packets_sent(other.retransmitted_packets_sent), bytes_sent(other.bytes_sent), - header_bytes_sent(other.header_bytes_sent), retransmitted_bytes_sent(other.retransmitted_bytes_sent), target_bitrate(other.target_bitrate), frames_encoded(other.frames_encoded),