diff --git a/api/stats/rtcstats_objects.h b/api/stats/rtcstats_objects.h
index f26c574..5fab85e 100644
--- a/api/stats/rtcstats_objects.h
+++ b/api/stats/rtcstats_objects.h
@@ -413,7 +413,6 @@
   RTCStatsMember<uint64_t> fec_packets_received;
   RTCStatsMember<uint64_t> fec_packets_discarded;
   RTCStatsMember<uint64_t> bytes_received;
-  RTCStatsMember<uint64_t> header_bytes_received;
   RTCStatsMember<int32_t> packets_lost;  // Signed per RFC 3550
   RTCStatsMember<double> last_packet_received_timestamp;
   // TODO(hbos): Collect and populate this value for both "audio" and "video",
@@ -467,7 +466,6 @@
   RTCStatsMember<uint32_t> packets_sent;
   RTCStatsMember<uint64_t> retransmitted_packets_sent;
   RTCStatsMember<uint64_t> bytes_sent;
-  RTCStatsMember<uint64_t> header_bytes_sent;
   RTCStatsMember<uint64_t> retransmitted_bytes_sent;
   // TODO(hbos): Collect and populate this value. https://bugs.webrtc.org/7066
   RTCStatsMember<double> target_bitrate;
diff --git a/audio/audio_receive_stream.cc b/audio/audio_receive_stream.cc
index 517f0de..14dfd90 100644
--- a/audio/audio_receive_stream.cc
+++ b/audio/audio_receive_stream.cc
@@ -188,11 +188,7 @@
     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 ae6605c..a14e8e1 100644
--- a/audio/audio_receive_stream_unittest.cc
+++ b/audio/audio_receive_stream_unittest.cc
@@ -63,7 +63,7 @@
 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<int, SdpAudioFormat> kReceiveCodec = {
     123,
     {"codec_name_recv", 96000, 0}};
@@ -266,9 +266,7 @@
   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<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd);
   EXPECT_EQ(static_cast<uint32_t>(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 e86667d..dbca457 100644
--- a/audio/audio_send_stream.cc
+++ b/audio/audio_send_stream.cc
@@ -440,11 +440,7 @@
   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 8884e5f..d787a8a 100644
--- a/audio/audio_send_stream_unittest.cc
+++ b/audio/audio_send_stream_unittest.cc
@@ -64,7 +64,7 @@
 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 @@
   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<int64_t>(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 fa1463a..486dcb1 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 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 @@
   // E2EE Audio Frame Decryption
   rtc::scoped_refptr<FrameDecryptorInterface> frame_decryptor_;
   webrtc::CryptoOptions crypto_options_;
+
+  const bool use_standard_bytes_stats_;
 };
 
 void ChannelReceive::OnReceivedPayloadData(
@@ -476,7 +484,9 @@
       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 @@
 
   // --- 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 5f71ea3..7527ef2 100644
--- a/audio/channel_receive.h
+++ b/audio/channel_receive.h
@@ -54,8 +54,7 @@
   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 f803bf9..2a969ab 100644
--- a/audio/channel_send.cc
+++ b/audio/channel_send.cc
@@ -52,6 +52,11 @@
 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 @@
   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 @@
           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 @@
   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 11f8332..6f94610 100644
--- a/audio/channel_send.h
+++ b/audio/channel_send.h
@@ -36,8 +36,7 @@
 
 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 c91183c..ec55db3 100644
--- a/audio/test/audio_stats_test.cc
+++ b/audio/test/audio_stats_test.cc
@@ -46,7 +46,7 @@
 
   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 @@
     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 2999c3c..935aaed 100644
--- a/call/audio_receive_stream.h
+++ b/call/audio_receive_stream.h
@@ -36,11 +36,7 @@
     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 f2dab9a..fb711c4 100644
--- a/call/audio_send_stream.h
+++ b/call/audio_send_stream.h
@@ -43,11 +43,7 @@
 
     // 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 c3e8be5..8f6b04b 100644
--- a/media/base/media_channel.h
+++ b/media/base/media_channel.h
@@ -393,13 +393,7 @@
       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 @@
     }
   }
 
-  // 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 74647a8..7bce942 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -48,6 +48,11 @@
 
 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 @@
       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 @@
        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 @@
       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 @@
       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 @@
   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 5e5ab6e..6e48304 100644
--- a/media/engine/webrtc_video_engine.h
+++ b/media/engine/webrtc_video_engine.h
@@ -380,6 +380,8 @@
 
     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 @@
     // 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 62bbf24..b4a0a61 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -1599,6 +1599,8 @@
 
 // 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 @@
   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 @@
   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 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 @@
   // 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 @@
     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, 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 @@
   cricket::VideoMediaInfo info;
   ASSERT_TRUE(channel_->GetStats(&info));
   EXPECT_EQ(stats.rtp_stats.packet_counter.payload_bytes,
-            rtc::checked_cast<size_t>(info.receivers[0].payload_bytes_rcvd));
+            rtc::checked_cast<size_t>(info.receivers[0].bytes_rcvd));
   EXPECT_EQ(stats.rtp_stats.packet_counter.packets,
             rtc::checked_cast<unsigned int>(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 a3b27a5..bef9d23 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -2158,10 +2158,7 @@
         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 @@
     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 711cbbb..8fac2a1 100644
--- a/media/engine/webrtc_voice_engine_unittest.cc
+++ b/media/engine/webrtc_voice_engine_unittest.cc
@@ -566,8 +566,7 @@
   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 @@
                              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 @@
   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 @@
   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<unsigned int>(info.packets_rcvd),
               stats.packets_rcvd);
     EXPECT_EQ(rtc::checked_cast<unsigned int>(info.packets_lost),
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index 9d6cf77..50c49a7 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -256,9 +256,7 @@
   inbound_stats->packets_received =
       static_cast<uint32_t>(media_receiver_info.packets_rcvd);
   inbound_stats->bytes_received =
-      static_cast<uint64_t>(media_receiver_info.payload_bytes_rcvd);
-  inbound_stats->header_bytes_received =
-      static_cast<uint64_t>(media_receiver_info.header_and_padding_bytes_rcvd);
+      static_cast<uint64_t>(media_receiver_info.bytes_rcvd);
   inbound_stats->packets_lost =
       static_cast<int32_t>(media_receiver_info.packets_lost);
 }
@@ -345,9 +343,7 @@
   outbound_stats->retransmitted_packets_sent =
       media_sender_info.retransmitted_packets_sent;
   outbound_stats->bytes_sent =
-      static_cast<uint64_t>(media_sender_info.payload_bytes_sent);
-  outbound_stats->header_bytes_sent =
-      static_cast<uint64_t>(media_sender_info.header_and_padding_bytes_sent);
+      static_cast<uint64_t>(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 86f8ba9..1420fcc 100644
--- a/pc/rtc_stats_collector_unittest.cc
+++ b/pc/rtc_stats_collector_unittest.cc
@@ -1739,8 +1739,7 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 0d51af0..7cb3028 100644
--- a/pc/rtc_stats_integrationtest.cc
+++ b/pc/rtc_stats_integrationtest.cc
@@ -797,8 +797,6 @@
           inbound_stream.fec_packets_discarded);
     }
     verifier.TestMemberIsNonNegative<uint64_t>(inbound_stream.bytes_received);
-    verifier.TestMemberIsNonNegative<uint64_t>(
-        inbound_stream.header_bytes_received);
     // packets_lost is defined as signed, but this should never happen in
     // this test. See RFC 3550.
     verifier.TestMemberIsNonNegative<int32_t>(inbound_stream.packets_lost);
@@ -858,8 +856,6 @@
         outbound_stream.retransmitted_packets_sent);
     verifier.TestMemberIsNonNegative<uint64_t>(outbound_stream.bytes_sent);
     verifier.TestMemberIsNonNegative<uint64_t>(
-        outbound_stream.header_bytes_sent);
-    verifier.TestMemberIsNonNegative<uint64_t>(
         outbound_stream.retransmitted_bytes_sent);
     verifier.TestMemberIsUndefined(outbound_stream.target_bitrate);
     if (outbound_stream.media_type.is_defined() &&
diff --git a/pc/stats_collector.cc b/pc/stats_collector.cc
index c5999da..1fb2a5b 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 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 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 @@
     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 @@
   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::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 @@
       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 @@
     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 @@
 }
 
 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 041fe2f..fa9d587 100644
--- a/pc/stats_collector.h
+++ b/pc/stats_collector.h
@@ -94,8 +94,6 @@
   // ignored.
   void ClearUpdateStatsCacheForTest();
 
-  bool UseStandardBytesStats() const { return use_standard_bytes_stats_; }
-
  private:
   friend class StatsCollectorTest;
 
@@ -145,7 +143,6 @@
   // 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 c6b57c2..a06b322 100644
--- a/pc/stats_collector_unittest.cc
+++ b/pc/stats_collector_unittest.cc
@@ -324,9 +324,7 @@
   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 @@
   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 @@
                          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 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 @@
 
   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 @@
 
   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 @@
 
   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 @@
 
   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 @@
 
   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 99594a8..3f8d752 100644
--- a/stats/rtcstats_objects.cc
+++ b/stats/rtcstats_objects.cc
@@ -598,7 +598,6 @@
     RTCInboundRTPStreamStats, RTCRTPStreamStats, "inbound-rtp",
     &packets_received,
     &bytes_received,
-    &header_bytes_received,
     &packets_lost,
     &last_packet_received_timestamp,
     &jitter,
@@ -631,7 +630,6 @@
       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 @@
       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 @@
     &packets_sent,
     &retransmitted_packets_sent,
     &bytes_sent,
-    &header_bytes_sent,
     &retransmitted_bytes_sent,
     &target_bitrate,
     &frames_encoded,
@@ -714,7 +710,6 @@
       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 @@
       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),
