Split packets/bytes in StreamDataCounter into RtpPacketCounter struct.
Prepares for adding FEC bytes to the StreamDataCounter.
R=mflodman@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/37579004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8122 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc
index 63b977e..0c7ac04 100644
--- a/talk/media/webrtc/webrtcvideoengine.cc
+++ b/talk/media/webrtc/webrtcvideoengine.cc
@@ -2754,8 +2754,8 @@
}
VideoReceiverInfo rinfo;
rinfo.add_ssrc(ssrc);
- rinfo.bytes_rcvd = received.bytes;
- rinfo.packets_rcvd = received.packets;
+ rinfo.bytes_rcvd = received.transmitted.payload_bytes;
+ rinfo.packets_rcvd = received.transmitted.packets;
rinfo.packets_lost = -1;
rinfo.packets_concealed = -1;
rinfo.fraction_lost = -1; // from SentRTCP
diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc
index ac8f5f3..33fefdf 100644
--- a/talk/media/webrtc/webrtcvideoengine2.cc
+++ b/talk/media/webrtc/webrtcvideoengine2.cc
@@ -1772,10 +1772,10 @@
++it) {
// TODO(pbos): Wire up additional stats, such as padding bytes.
webrtc::SsrcStats stream_stats = it->second;
- info.bytes_sent += stream_stats.rtp_stats.bytes +
- stream_stats.rtp_stats.header_bytes +
- stream_stats.rtp_stats.padding_bytes;
- info.packets_sent += stream_stats.rtp_stats.packets;
+ 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.packets_lost += stream_stats.rtcp_stats.cumulative_lost;
if (stream_stats.sent_width > info.send_frame_width)
info.send_frame_width = stream_stats.sent_width;
@@ -2020,9 +2020,10 @@
VideoReceiverInfo info;
info.add_ssrc(config_.rtp.remote_ssrc);
webrtc::VideoReceiveStream::Stats stats = stream_->GetStats();
- info.bytes_rcvd = stats.rtp_stats.bytes + stats.rtp_stats.header_bytes +
- stats.rtp_stats.padding_bytes;
- info.packets_rcvd = stats.rtp_stats.packets;
+ info.bytes_rcvd = stats.rtp_stats.transmitted.payload_bytes +
+ stats.rtp_stats.transmitted.header_bytes +
+ stats.rtp_stats.transmitted.padding_bytes;
+ info.packets_rcvd = stats.rtp_stats.transmitted.packets;
info.framerate_rcvd = stats.network_frame_rate;
info.framerate_decoded = stats.decode_frame_rate;
diff --git a/webrtc/common_types.h b/webrtc/common_types.h
index a4fe914..fe736cd 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -241,30 +241,38 @@
uint32_t unique_nack_requests; // Number of unique NACKed RTP packets.
};
-// Data usage statistics for a (rtp) stream.
-struct StreamDataCounters {
- StreamDataCounters()
- : first_packet_time_ms(-1),
- bytes(0),
- header_bytes(0),
+struct RtpPacketCounter {
+ RtpPacketCounter()
+ : header_bytes(0),
+ payload_bytes(0),
padding_bytes(0),
- packets(0),
- retransmitted_bytes(0),
- retransmitted_header_bytes(0),
- retransmitted_padding_bytes(0),
- retransmitted_packets(0),
- fec_packets(0) {}
+ packets(0) {}
- void Add(const StreamDataCounters& other) {
- bytes += other.bytes;
+ void Add(const RtpPacketCounter& other) {
header_bytes += other.header_bytes;
+ payload_bytes += other.payload_bytes;
padding_bytes += other.padding_bytes;
packets += other.packets;
- retransmitted_bytes += other.retransmitted_bytes;
- retransmitted_header_bytes += other.retransmitted_header_bytes;
- retransmitted_padding_bytes += other.retransmitted_padding_bytes;
- retransmitted_packets += other.retransmitted_packets;
- fec_packets += other.fec_packets;
+ }
+
+ size_t TotalBytes() const {
+ return header_bytes + payload_bytes + padding_bytes;
+ }
+
+ size_t header_bytes; // Number of bytes used by RTP headers.
+ size_t payload_bytes; // Payload bytes, excluding RTP headers and padding.
+ size_t padding_bytes; // Number of padding bytes.
+ uint32_t packets; // Number of packets.
+};
+
+// Data usage statistics for a (rtp) stream.
+struct StreamDataCounters {
+ StreamDataCounters() : first_packet_time_ms(-1) {}
+
+ void Add(const StreamDataCounters& other) {
+ transmitted.Add(other.transmitted);
+ retransmitted.Add(other.retransmitted);
+ fec.Add(other.fec);
if (other.first_packet_time_ms != -1 &&
(other.first_packet_time_ms < first_packet_time_ms ||
first_packet_time_ms == -1)) {
@@ -277,30 +285,18 @@
return (first_packet_time_ms == -1) ? -1 : (now_ms - first_packet_time_ms);
}
- size_t TotalBytes() const {
- return bytes + header_bytes + padding_bytes;
- }
-
- size_t RetransmittedBytes() const {
- return retransmitted_bytes + retransmitted_header_bytes +
- retransmitted_padding_bytes;
- }
-
+ // Returns the number of bytes corresponding to the actual media payload (i.e.
+ // RTP headers, padding and retransmissions are excluded). Note this function
+ // does not have meaning for an RTX stream.
size_t MediaPayloadBytes() const {
- return bytes - retransmitted_bytes;
+ return transmitted.payload_bytes - retransmitted.payload_bytes;
}
- // TODO(pbos): Rename bytes -> media_bytes.
int64_t first_packet_time_ms; // Time when first packet is sent/received.
- size_t bytes; // Payload bytes, excluding RTP headers and padding.
- size_t header_bytes; // Number of bytes used by RTP headers.
- size_t padding_bytes; // Number of padding bytes.
- uint32_t packets; // Number of packets.
- size_t retransmitted_bytes; // Number of retransmitted payload bytes.
- size_t retransmitted_header_bytes; // Retransmitted bytes used by RTP header.
- size_t retransmitted_padding_bytes; // Retransmitted padding bytes.
- uint32_t retransmitted_packets; // Number of retransmitted packets.
- uint32_t fec_packets; // Number of redundancy packets.
+ RtpPacketCounter transmitted; // Number of transmitted packets/bytes.
+ RtpPacketCounter retransmitted; // Number of retransmitted packets/bytes.
+ // TODO(asapersson): add FEC bytes.
+ RtpPacketCounter fec; // Number of redundancy packets/bytes.
};
// Callback, called whenever byte/packet counts have been updated.
diff --git a/webrtc/modules/rtp_rtcp/source/receive_statistics_impl.cc b/webrtc/modules/rtp_rtcp/source/receive_statistics_impl.cc
index 302c42c..aefab15 100644
--- a/webrtc/modules/rtp_rtcp/source/receive_statistics_impl.cc
+++ b/webrtc/modules/rtp_rtcp/source/receive_statistics_impl.cc
@@ -81,20 +81,20 @@
bool in_order = InOrderPacketInternal(header.sequenceNumber);
ssrc_ = header.ssrc;
incoming_bitrate_.Update(packet_length);
- receive_counters_.bytes +=
+ receive_counters_.transmitted.payload_bytes +=
packet_length - (header.paddingLength + header.headerLength);
- receive_counters_.header_bytes += header.headerLength;
- receive_counters_.padding_bytes += header.paddingLength;
- ++receive_counters_.packets;
+ receive_counters_.transmitted.header_bytes += header.headerLength;
+ receive_counters_.transmitted.padding_bytes += header.paddingLength;
+ ++receive_counters_.transmitted.packets;
if (!in_order && retransmitted) {
- ++receive_counters_.retransmitted_packets;
- receive_counters_.retransmitted_bytes +=
+ ++receive_counters_.retransmitted.packets;
+ receive_counters_.retransmitted.payload_bytes +=
packet_length - (header.paddingLength + header.headerLength);
- receive_counters_.retransmitted_header_bytes += header.headerLength;
- receive_counters_.retransmitted_padding_bytes += header.paddingLength;
+ receive_counters_.retransmitted.header_bytes += header.headerLength;
+ receive_counters_.retransmitted.padding_bytes += header.paddingLength;
}
- if (receive_counters_.packets == 1) {
+ if (receive_counters_.transmitted.packets == 1) {
received_seq_first_ = header.sequenceNumber;
receive_counters_.first_packet_time_ms = clock_->TimeInMilliseconds();
}
@@ -108,7 +108,7 @@
clock_->CurrentNtp(receive_time_secs, receive_time_frac);
// Wrong if we use RetransmitOfOldPacket.
- if (receive_counters_.packets > 1 &&
+ if (receive_counters_.transmitted.packets > 1 &&
received_seq_max_ > header.sequenceNumber) {
// Wrap around detected.
received_seq_wraps_++;
@@ -119,8 +119,8 @@
// If new time stamp and more than one in-order packet received, calculate
// new jitter statistics.
if (header.timestamp != last_received_timestamp_ &&
- (receive_counters_.packets - receive_counters_.retransmitted_packets) >
- 1) {
+ (receive_counters_.transmitted.packets -
+ receive_counters_.retransmitted.packets) > 1) {
UpdateJitter(header, receive_time_secs, receive_time_frac);
}
last_received_timestamp_ = header.timestamp;
@@ -203,7 +203,7 @@
void StreamStatisticianImpl::FecPacketReceived() {
{
CriticalSectionScoped cs(stream_lock_.get());
- ++receive_counters_.fec_packets;
+ ++receive_counters_.fec.packets;
}
NotifyRtpCallback();
}
@@ -218,7 +218,8 @@
bool reset) {
{
CriticalSectionScoped cs(stream_lock_.get());
- if (received_seq_first_ == 0 && receive_counters_.bytes == 0) {
+ if (received_seq_first_ == 0 &&
+ receive_counters_.transmitted.payload_bytes == 0) {
// We have not received anything.
return false;
}
@@ -260,8 +261,8 @@
// Number of received RTP packets since last report, counts all packets but
// not re-transmissions.
uint32_t rec_since_last =
- (receive_counters_.packets - receive_counters_.retransmitted_packets) -
- last_report_inorder_packets_;
+ (receive_counters_.transmitted.packets -
+ receive_counters_.retransmitted.packets) - last_report_inorder_packets_;
// With NACK we don't know the expected retransmissions during the last
// second. We know how many "old" packets we have received. We just count
@@ -273,7 +274,7 @@
// re-transmitted. We use RTT to decide if a packet is re-ordered or
// re-transmitted.
uint32_t retransmitted_packets =
- receive_counters_.retransmitted_packets - last_report_old_packets_;
+ receive_counters_.retransmitted.packets - last_report_old_packets_;
rec_since_last += retransmitted_packets;
int32_t missing = 0;
@@ -301,8 +302,9 @@
// Only for report blocks in RTCP SR and RR.
last_report_inorder_packets_ =
- receive_counters_.packets - receive_counters_.retransmitted_packets;
- last_report_old_packets_ = receive_counters_.retransmitted_packets;
+ receive_counters_.transmitted.packets -
+ receive_counters_.retransmitted.packets;
+ last_report_old_packets_ = receive_counters_.retransmitted.packets;
last_report_seq_max_ = received_seq_max_;
return stats;
@@ -312,11 +314,12 @@
size_t* bytes_received, uint32_t* packets_received) const {
CriticalSectionScoped cs(stream_lock_.get());
if (bytes_received) {
- *bytes_received = receive_counters_.bytes + receive_counters_.header_bytes +
- receive_counters_.padding_bytes;
+ *bytes_received = receive_counters_.transmitted.payload_bytes +
+ receive_counters_.transmitted.header_bytes +
+ receive_counters_.transmitted.padding_bytes;
}
if (packets_received) {
- *packets_received = receive_counters_.packets;
+ *packets_received = receive_counters_.transmitted.packets;
}
}
diff --git a/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc b/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc
index 5b2f0e3..c90e62e 100644
--- a/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/receive_statistics_unittest.cc
@@ -141,18 +141,18 @@
StreamDataCounters counters;
statistician->GetReceiveStreamDataCounters(&counters);
EXPECT_GT(counters.first_packet_time_ms, -1);
- EXPECT_EQ(1u, counters.packets);
+ EXPECT_EQ(1u, counters.transmitted.packets);
statistician->ResetStatistics();
// GetReceiveStreamDataCounters includes reset counter values.
statistician->GetReceiveStreamDataCounters(&counters);
EXPECT_GT(counters.first_packet_time_ms, -1);
- EXPECT_EQ(1u, counters.packets);
+ EXPECT_EQ(1u, counters.transmitted.packets);
receive_statistics_->IncomingPacket(header1_, kPacketSize1, false);
statistician->GetReceiveStreamDataCounters(&counters);
EXPECT_GT(counters.first_packet_time_ms, -1);
- EXPECT_EQ(2u, counters.packets);
+ EXPECT_EQ(2u, counters.transmitted.packets);
}
TEST_F(ReceiveStatisticsTest, RtcpCallbacks) {
@@ -262,17 +262,21 @@
const StreamDataCounters& expected) {
EXPECT_EQ(num_calls, num_calls_);
EXPECT_EQ(ssrc, ssrc_);
- EXPECT_EQ(expected.bytes, stats_.bytes);
- EXPECT_EQ(expected.header_bytes, stats_.header_bytes);
- EXPECT_EQ(expected.padding_bytes, stats_.padding_bytes);
- EXPECT_EQ(expected.packets, stats_.packets);
- EXPECT_EQ(expected.retransmitted_bytes, stats_.retransmitted_bytes);
- EXPECT_EQ(expected.retransmitted_header_bytes,
- stats_.retransmitted_header_bytes);
- EXPECT_EQ(expected.retransmitted_padding_bytes,
- stats_.retransmitted_padding_bytes);
- EXPECT_EQ(expected.retransmitted_packets, stats_.retransmitted_packets);
- EXPECT_EQ(expected.fec_packets, stats_.fec_packets);
+ EXPECT_EQ(expected.transmitted.payload_bytes,
+ stats_.transmitted.payload_bytes);
+ EXPECT_EQ(expected.transmitted.header_bytes,
+ stats_.transmitted.header_bytes);
+ EXPECT_EQ(expected.transmitted.padding_bytes,
+ stats_.transmitted.padding_bytes);
+ EXPECT_EQ(expected.transmitted.packets, stats_.transmitted.packets);
+ EXPECT_EQ(expected.retransmitted.payload_bytes,
+ stats_.retransmitted.payload_bytes);
+ EXPECT_EQ(expected.retransmitted.header_bytes,
+ stats_.retransmitted.header_bytes);
+ EXPECT_EQ(expected.retransmitted.padding_bytes,
+ stats_.retransmitted.padding_bytes);
+ EXPECT_EQ(expected.retransmitted.packets, stats_.retransmitted.packets);
+ EXPECT_EQ(expected.fec.packets, stats_.fec.packets);
}
uint32_t num_calls_;
@@ -292,15 +296,15 @@
receive_statistics_->IncomingPacket(
header1_, kPacketSize1 + kHeaderLength, false);
StreamDataCounters expected;
- expected.bytes = kPacketSize1;
- expected.header_bytes = kHeaderLength;
- expected.padding_bytes = 0;
- expected.packets = 1;
- expected.retransmitted_bytes = 0;
- expected.retransmitted_header_bytes = 0;
- expected.retransmitted_padding_bytes = 0;
- expected.retransmitted_packets = 0;
- expected.fec_packets = 0;
+ expected.transmitted.payload_bytes = kPacketSize1;
+ expected.transmitted.header_bytes = kHeaderLength;
+ expected.transmitted.padding_bytes = 0;
+ expected.transmitted.packets = 1;
+ expected.retransmitted.payload_bytes = 0;
+ expected.retransmitted.header_bytes = 0;
+ expected.retransmitted.padding_bytes = 0;
+ expected.retransmitted.packets = 0;
+ expected.fec.packets = 0;
callback.Matches(1, kSsrc1, expected);
++header1_.sequenceNumber;
@@ -309,24 +313,24 @@
// Another packet of size kPacketSize1 with 9 bytes padding.
receive_statistics_->IncomingPacket(
header1_, kPacketSize1 + kHeaderLength + kPaddingLength, false);
- expected.bytes = kPacketSize1 * 2;
- expected.header_bytes = kHeaderLength * 2;
- expected.padding_bytes = kPaddingLength;
- expected.packets = 2;
+ expected.transmitted.payload_bytes = kPacketSize1 * 2;
+ expected.transmitted.header_bytes = kHeaderLength * 2;
+ expected.transmitted.padding_bytes = kPaddingLength;
+ expected.transmitted.packets = 2;
callback.Matches(2, kSsrc1, expected);
clock_.AdvanceTimeMilliseconds(5);
// Retransmit last packet.
receive_statistics_->IncomingPacket(
header1_, kPacketSize1 + kHeaderLength + kPaddingLength, true);
- expected.bytes = kPacketSize1 * 3;
- expected.header_bytes = kHeaderLength * 3;
- expected.padding_bytes = kPaddingLength * 2;
- expected.packets = 3;
- expected.retransmitted_bytes = kPacketSize1;
- expected.retransmitted_header_bytes = kHeaderLength;
- expected.retransmitted_padding_bytes = kPaddingLength;
- expected.retransmitted_packets = 1;
+ expected.transmitted.payload_bytes = kPacketSize1 * 3;
+ expected.transmitted.header_bytes = kHeaderLength * 3;
+ expected.transmitted.padding_bytes = kPaddingLength * 2;
+ expected.transmitted.packets = 3;
+ expected.retransmitted.payload_bytes = kPacketSize1;
+ expected.retransmitted.header_bytes = kHeaderLength;
+ expected.retransmitted.padding_bytes = kPaddingLength;
+ expected.retransmitted.packets = 1;
callback.Matches(3, kSsrc1, expected);
header1_.paddingLength = 0;
@@ -336,10 +340,10 @@
receive_statistics_->IncomingPacket(
header1_, kPacketSize1 + kHeaderLength, false);
receive_statistics_->FecPacketReceived(kSsrc1);
- expected.bytes = kPacketSize1 * 4;
- expected.header_bytes = kHeaderLength * 4;
- expected.packets = 4;
- expected.fec_packets = 1;
+ expected.transmitted.payload_bytes = kPacketSize1 * 4;
+ expected.transmitted.header_bytes = kHeaderLength * 4;
+ expected.transmitted.packets = 4;
+ expected.fec.packets = 1;
callback.Matches(5, kSsrc1, expected);
receive_statistics_->RegisterRtpStatisticsCallback(NULL);
@@ -366,15 +370,15 @@
receive_statistics_->IncomingPacket(
header1_, kPacketSize1 + kHeaderLength, false);
StreamDataCounters expected;
- expected.bytes = kPacketSize1;
- expected.header_bytes = kHeaderLength;
- expected.padding_bytes = 0;
- expected.packets = 1;
- expected.fec_packets = 0;
+ expected.transmitted.payload_bytes = kPacketSize1;
+ expected.transmitted.header_bytes = kHeaderLength;
+ expected.transmitted.padding_bytes = 0;
+ expected.transmitted.packets = 1;
+ expected.fec.packets = 0;
callback.Matches(1, kSsrc1, expected);
receive_statistics_->FecPacketReceived(kSsrc1);
- expected.fec_packets = 1;
+ expected.fec.packets = 1;
callback.Matches(2, kSsrc1, expected);
}
} // namespace webrtc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index 2792273..bfc8266 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -408,8 +408,10 @@
RTCPSender::FeedbackState state;
state.send_payload_type = SendPayloadType();
state.frequency_hz = CurrentSendFrequencyHz();
- state.packets_sent = rtp_stats.packets + rtx_stats.packets;
- state.media_bytes_sent = rtp_stats.bytes + rtx_stats.bytes;
+ state.packets_sent = rtp_stats.transmitted.packets +
+ rtx_stats.transmitted.packets;
+ state.media_bytes_sent = rtp_stats.transmitted.payload_bytes +
+ rtx_stats.transmitted.payload_bytes;
state.module = this;
LastReceivedNTP(&state.last_rr_ntp_secs,
@@ -798,12 +800,16 @@
rtp_sender_.GetDataCounters(&rtp_stats, &rtx_stats);
if (bytes_sent) {
- *bytes_sent = rtp_stats.bytes + rtp_stats.padding_bytes +
- rtp_stats.header_bytes + rtx_stats.bytes +
- rtx_stats.padding_bytes + rtx_stats.header_bytes;
+ *bytes_sent = 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;
}
if (packets_sent) {
- *packets_sent = rtp_stats.packets + rtx_stats.packets;
+ *packets_sent = rtp_stats.transmitted.packets +
+ rtx_stats.transmitted.packets;
}
return 0;
}
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
index 867a0d3..0efc5bd 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl_unittest.cc
@@ -364,35 +364,38 @@
StreamDataCounters rtp;
const int64_t kStartTimeMs = 1;
rtp.first_packet_time_ms = kStartTimeMs;
- rtp.packets = 1;
- rtp.bytes = 1;
- rtp.header_bytes = 2;
- rtp.padding_bytes = 3;
- EXPECT_EQ(rtp.TotalBytes(), rtp.bytes + rtp.header_bytes + rtp.padding_bytes);
+ rtp.transmitted.packets = 1;
+ rtp.transmitted.payload_bytes = 1;
+ rtp.transmitted.header_bytes = 2;
+ rtp.transmitted.padding_bytes = 3;
+ EXPECT_EQ(rtp.transmitted.TotalBytes(), rtp.transmitted.payload_bytes +
+ rtp.transmitted.header_bytes +
+ rtp.transmitted.padding_bytes);
StreamDataCounters rtp2;
rtp2.first_packet_time_ms = -1;
- rtp2.packets = 10;
- rtp2.bytes = 10;
- rtp2.retransmitted_header_bytes = 4;
- rtp2.retransmitted_bytes = 5;
- rtp2.retransmitted_padding_bytes = 6;
- rtp2.retransmitted_packets = 7;
- rtp2.fec_packets = 8;
+ rtp2.transmitted.packets = 10;
+ rtp2.transmitted.payload_bytes = 10;
+ rtp2.retransmitted.header_bytes = 4;
+ rtp2.retransmitted.payload_bytes = 5;
+ rtp2.retransmitted.padding_bytes = 6;
+ rtp2.retransmitted.packets = 7;
+ rtp2.fec.packets = 8;
StreamDataCounters sum = rtp;
sum.Add(rtp2);
EXPECT_EQ(kStartTimeMs, sum.first_packet_time_ms);
- EXPECT_EQ(11U, sum.packets);
- EXPECT_EQ(11U, sum.bytes);
- EXPECT_EQ(2U, sum.header_bytes);
- EXPECT_EQ(3U, sum.padding_bytes);
- EXPECT_EQ(4U, sum.retransmitted_header_bytes);
- EXPECT_EQ(5U, sum.retransmitted_bytes);
- EXPECT_EQ(6U, sum.retransmitted_padding_bytes);
- EXPECT_EQ(7U, sum.retransmitted_packets);
- EXPECT_EQ(8U, sum.fec_packets);
- EXPECT_EQ(sum.TotalBytes(), rtp.TotalBytes() + rtp2.TotalBytes());
+ EXPECT_EQ(11U, sum.transmitted.packets);
+ EXPECT_EQ(11U, sum.transmitted.payload_bytes);
+ EXPECT_EQ(2U, sum.transmitted.header_bytes);
+ EXPECT_EQ(3U, sum.transmitted.padding_bytes);
+ EXPECT_EQ(4U, sum.retransmitted.header_bytes);
+ EXPECT_EQ(5U, sum.retransmitted.payload_bytes);
+ EXPECT_EQ(6U, sum.retransmitted.padding_bytes);
+ EXPECT_EQ(7U, sum.retransmitted.packets);
+ EXPECT_EQ(8U, sum.fec.packets);
+ EXPECT_EQ(sum.transmitted.TotalBytes(),
+ rtp.transmitted.TotalBytes() + rtp2.transmitted.TotalBytes());
StreamDataCounters rtp3;
rtp3.first_packet_time_ms = kStartTimeMs + 10;
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
index 79d69d1..952e770 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
@@ -894,25 +894,25 @@
}
total_bitrate_sent_.Update(packet_length);
- ++counters->packets;
- if (counters->packets == 1) {
+ ++counters->transmitted.packets;
+ if (counters->first_packet_time_ms == -1) {
counters->first_packet_time_ms = clock_->TimeInMilliseconds();
}
if (IsFecPacket(buffer, header)) {
- ++counters->fec_packets;
+ ++counters->fec.packets;
}
if (is_retransmit) {
- ++counters->retransmitted_packets;
- counters->retransmitted_bytes +=
+ ++counters->retransmitted.packets;
+ counters->retransmitted.payload_bytes +=
packet_length - (header.headerLength + header.paddingLength);
- counters->retransmitted_header_bytes += header.headerLength;
- counters->retransmitted_padding_bytes += header.paddingLength;
+ counters->retransmitted.header_bytes += header.headerLength;
+ counters->retransmitted.padding_bytes += header.paddingLength;
}
- counters->bytes +=
+ counters->transmitted.payload_bytes +=
packet_length - (header.headerLength + header.paddingLength);
- counters->header_bytes += header.headerLength;
- counters->padding_bytes += header.paddingLength;
+ counters->transmitted.header_bytes += header.headerLength;
+ counters->transmitted.padding_bytes += header.paddingLength;
if (rtp_stats_callback_) {
rtp_stats_callback_->DataCountersUpdated(*counters, ssrc);
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index aef627c..f7a9184 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -916,18 +916,23 @@
StreamDataCounters counters_;
void Matches(uint32_t ssrc, const StreamDataCounters& counters) {
EXPECT_EQ(ssrc, ssrc_);
- EXPECT_EQ(counters.bytes, counters_.bytes);
- EXPECT_EQ(counters.header_bytes, counters_.header_bytes);
- EXPECT_EQ(counters.padding_bytes, counters_.padding_bytes);
- EXPECT_EQ(counters.packets, counters_.packets);
- EXPECT_EQ(counters.retransmitted_bytes, counters_.retransmitted_bytes);
- EXPECT_EQ(counters.retransmitted_header_bytes,
- counters_.retransmitted_header_bytes);
- EXPECT_EQ(counters.retransmitted_padding_bytes,
- counters_.retransmitted_padding_bytes);
- EXPECT_EQ(counters.retransmitted_packets,
- counters_.retransmitted_packets);
- EXPECT_EQ(counters.fec_packets, counters_.fec_packets);
+ EXPECT_EQ(counters.transmitted.payload_bytes,
+ counters_.transmitted.payload_bytes);
+ EXPECT_EQ(counters.transmitted.header_bytes,
+ counters_.transmitted.header_bytes);
+ EXPECT_EQ(counters.transmitted.padding_bytes,
+ counters_.transmitted.padding_bytes);
+ EXPECT_EQ(counters.transmitted.packets,
+ counters_.transmitted.packets);
+ EXPECT_EQ(counters.retransmitted.payload_bytes,
+ counters_.retransmitted.payload_bytes);
+ EXPECT_EQ(counters.retransmitted.header_bytes,
+ counters_.retransmitted.header_bytes);
+ EXPECT_EQ(counters.retransmitted.padding_bytes,
+ counters_.retransmitted.padding_bytes);
+ EXPECT_EQ(counters.retransmitted.packets,
+ counters_.retransmitted.packets);
+ EXPECT_EQ(counters.fec.packets, counters_.fec.packets);
}
} callback;
@@ -949,35 +954,35 @@
4321, payload, sizeof(payload),
NULL));
StreamDataCounters expected;
- expected.bytes = 6;
- expected.header_bytes = 12;
- expected.padding_bytes = 0;
- expected.packets = 1;
- expected.retransmitted_bytes = 0;
- expected.retransmitted_header_bytes = 0;
- expected.retransmitted_padding_bytes = 0;
- expected.retransmitted_packets = 0;
- expected.fec_packets = 0;
+ expected.transmitted.payload_bytes = 6;
+ expected.transmitted.header_bytes = 12;
+ expected.transmitted.padding_bytes = 0;
+ expected.transmitted.packets = 1;
+ expected.retransmitted.payload_bytes = 0;
+ expected.retransmitted.header_bytes = 0;
+ expected.retransmitted.padding_bytes = 0;
+ expected.retransmitted.packets = 0;
+ expected.fec.packets = 0;
callback.Matches(ssrc, expected);
// Retransmit a frame.
uint16_t seqno = rtp_sender_->SequenceNumber() - 1;
rtp_sender_->ReSendPacket(seqno, 0);
- expected.bytes = 12;
- expected.header_bytes = 24;
- expected.packets = 2;
- expected.retransmitted_bytes = 6;
- expected.retransmitted_header_bytes = 12;
- expected.retransmitted_padding_bytes = 0;
- expected.retransmitted_packets = 1;
+ expected.transmitted.payload_bytes = 12;
+ expected.transmitted.header_bytes = 24;
+ expected.transmitted.packets = 2;
+ expected.retransmitted.payload_bytes = 6;
+ expected.retransmitted.header_bytes = 12;
+ expected.retransmitted.padding_bytes = 0;
+ expected.retransmitted.packets = 1;
callback.Matches(ssrc, expected);
// Send padding.
rtp_sender_->TimeToSendPadding(kMaxPaddingSize);
- expected.bytes = 12;
- expected.header_bytes = 36;
- expected.padding_bytes = kMaxPaddingSize;
- expected.packets = 3;
+ expected.transmitted.payload_bytes = 12;
+ expected.transmitted.header_bytes = 36;
+ expected.transmitted.padding_bytes = kMaxPaddingSize;
+ expected.transmitted.packets = 3;
callback.Matches(ssrc, expected);
// Send FEC.
@@ -991,10 +996,10 @@
ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameDelta, payload_type,
1234, 4321, payload,
sizeof(payload), NULL));
- expected.bytes = 40;
- expected.header_bytes = 60;
- expected.packets = 5;
- expected.fec_packets = 1;
+ expected.transmitted.payload_bytes = 40;
+ expected.transmitted.header_bytes = 60;
+ expected.transmitted.packets = 5;
+ expected.fec.packets = 1;
callback.Matches(ssrc, expected);
rtp_sender_->RegisterRtpStatisticsCallback(NULL);
@@ -1150,19 +1155,24 @@
// Payload + 1-byte generic header.
EXPECT_GT(rtp_stats.first_packet_time_ms, -1);
- EXPECT_EQ(rtp_stats.bytes, sizeof(payload) + 1);
- EXPECT_EQ(rtp_stats.header_bytes, 12u);
- EXPECT_EQ(rtp_stats.padding_bytes, 0u);
- EXPECT_EQ(rtx_stats.bytes, 0u);
- EXPECT_EQ(rtx_stats.header_bytes, 24u);
- EXPECT_EQ(rtx_stats.padding_bytes, 2 * kMaxPaddingSize);
+ EXPECT_EQ(rtp_stats.transmitted.payload_bytes, sizeof(payload) + 1);
+ EXPECT_EQ(rtp_stats.transmitted.header_bytes, 12u);
+ EXPECT_EQ(rtp_stats.transmitted.padding_bytes, 0u);
+ EXPECT_EQ(rtx_stats.transmitted.payload_bytes, 0u);
+ EXPECT_EQ(rtx_stats.transmitted.header_bytes, 24u);
+ EXPECT_EQ(rtx_stats.transmitted.padding_bytes, 2 * kMaxPaddingSize);
- EXPECT_EQ(rtp_stats.TotalBytes(),
- rtp_stats.bytes + rtp_stats.header_bytes + rtp_stats.padding_bytes);
- EXPECT_EQ(rtx_stats.TotalBytes(),
- rtx_stats.bytes + rtx_stats.header_bytes + rtx_stats.padding_bytes);
+ EXPECT_EQ(rtp_stats.transmitted.TotalBytes(),
+ rtp_stats.transmitted.payload_bytes +
+ rtp_stats.transmitted.header_bytes +
+ rtp_stats.transmitted.padding_bytes);
+ EXPECT_EQ(rtx_stats.transmitted.TotalBytes(),
+ rtx_stats.transmitted.payload_bytes +
+ rtx_stats.transmitted.header_bytes +
+ rtx_stats.transmitted.padding_bytes);
EXPECT_EQ(transport_.total_bytes_sent_,
- rtp_stats.TotalBytes() + rtx_stats.TotalBytes());
+ rtp_stats.transmitted.TotalBytes() +
+ rtx_stats.transmitted.TotalBytes());
}
} // namespace webrtc
diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
index f820554..e888ed8 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -1490,10 +1490,12 @@
stats.rtcp_stats.fraction_lost != 0 || stats.rtcp_stats.jitter != 0;
receive_stats_filled_["DataCountersUpdated"] |=
- stats.rtp_stats.bytes != 0 || stats.rtp_stats.fec_packets != 0 ||
- stats.rtp_stats.header_bytes != 0 || stats.rtp_stats.packets != 0 ||
- stats.rtp_stats.padding_bytes != 0 ||
- stats.rtp_stats.retransmitted_packets != 0;
+ stats.rtp_stats.transmitted.payload_bytes != 0 ||
+ stats.rtp_stats.fec.packets != 0 ||
+ stats.rtp_stats.transmitted.header_bytes != 0 ||
+ stats.rtp_stats.transmitted.packets != 0 ||
+ stats.rtp_stats.transmitted.padding_bytes != 0 ||
+ stats.rtp_stats.retransmitted.packets != 0;
receive_stats_filled_["CodecStats"] |=
stats.avg_delay_ms != 0 || stats.discarded_packets != 0;
@@ -1532,10 +1534,10 @@
stream_stats.rtcp_stats.fraction_lost != 0;
send_stats_filled_[CompoundKey("DataCountersUpdated", it->first)] |=
- stream_stats.rtp_stats.fec_packets != 0 ||
- stream_stats.rtp_stats.padding_bytes != 0 ||
- stream_stats.rtp_stats.retransmitted_packets != 0 ||
- stream_stats.rtp_stats.packets != 0;
+ stream_stats.rtp_stats.fec.packets != 0 ||
+ stream_stats.rtp_stats.transmitted.padding_bytes != 0 ||
+ stream_stats.rtp_stats.retransmitted.packets != 0 ||
+ stream_stats.rtp_stats.transmitted.packets != 0;
send_stats_filled_[CompoundKey("BitrateStatisticsObserver",
it->first)] |=
@@ -1686,7 +1688,7 @@
virtual Action OnSendRtp(const uint8_t* packet, size_t length) OVERRIDE {
if (sent_rtp_ >= kNumRtpPacketsToSend) {
VideoReceiveStream::Stats stats = receive_stream_->GetStats();
- if (kNumRtpPacketsToSend == stats.rtp_stats.packets) {
+ if (kNumRtpPacketsToSend == stats.rtp_stats.transmitted.packets) {
observation_complete_->Set();
}
return DROP_PACKET;
diff --git a/webrtc/video/send_statistics_proxy_unittest.cc b/webrtc/video/send_statistics_proxy_unittest.cc
index ccc0192..4450a59 100644
--- a/webrtc/video/send_statistics_proxy_unittest.cc
+++ b/webrtc/video/send_statistics_proxy_unittest.cc
@@ -65,13 +65,17 @@
EXPECT_EQ(a.avg_delay_ms, b.avg_delay_ms);
EXPECT_EQ(a.max_delay_ms, b.max_delay_ms);
- EXPECT_EQ(a.rtp_stats.bytes, b.rtp_stats.bytes);
- EXPECT_EQ(a.rtp_stats.header_bytes, b.rtp_stats.header_bytes);
- EXPECT_EQ(a.rtp_stats.padding_bytes, b.rtp_stats.padding_bytes);
- EXPECT_EQ(a.rtp_stats.packets, b.rtp_stats.packets);
- EXPECT_EQ(a.rtp_stats.retransmitted_packets,
- b.rtp_stats.retransmitted_packets);
- EXPECT_EQ(a.rtp_stats.fec_packets, b.rtp_stats.fec_packets);
+ EXPECT_EQ(a.rtp_stats.transmitted.payload_bytes,
+ b.rtp_stats.transmitted.payload_bytes);
+ EXPECT_EQ(a.rtp_stats.transmitted.header_bytes,
+ b.rtp_stats.transmitted.header_bytes);
+ EXPECT_EQ(a.rtp_stats.transmitted.padding_bytes,
+ b.rtp_stats.transmitted.padding_bytes);
+ EXPECT_EQ(a.rtp_stats.transmitted.packets,
+ b.rtp_stats.transmitted.packets);
+ EXPECT_EQ(a.rtp_stats.retransmitted.packets,
+ b.rtp_stats.retransmitted.packets);
+ EXPECT_EQ(a.rtp_stats.fec.packets, b.rtp_stats.fec.packets);
EXPECT_EQ(a.rtcp_stats.fraction_lost, b.rtcp_stats.fraction_lost);
EXPECT_EQ(a.rtcp_stats.cumulative_lost, b.rtcp_stats.cumulative_lost);
@@ -203,12 +207,12 @@
// Add statistics with some arbitrary, but unique, numbers.
size_t offset = ssrc * sizeof(StreamDataCounters);
uint32_t offset_uint32 = static_cast<uint32_t>(offset);
- counters.bytes = offset;
- counters.header_bytes = offset + 1;
- counters.fec_packets = offset_uint32 + 2;
- counters.padding_bytes = offset + 3;
- counters.retransmitted_packets = offset_uint32 + 4;
- counters.packets = offset_uint32 + 5;
+ counters.transmitted.payload_bytes = offset;
+ counters.transmitted.header_bytes = offset + 1;
+ counters.fec.packets = offset_uint32 + 2;
+ counters.transmitted.padding_bytes = offset + 3;
+ counters.retransmitted.packets = offset_uint32 + 4;
+ counters.transmitted.packets = offset_uint32 + 5;
callback->DataCountersUpdated(counters, ssrc);
}
for (std::vector<uint32_t>::const_iterator it = config_.rtp.rtx.ssrcs.begin();
@@ -219,12 +223,12 @@
// Add statistics with some arbitrary, but unique, numbers.
size_t offset = ssrc * sizeof(StreamDataCounters);
uint32_t offset_uint32 = static_cast<uint32_t>(offset);
- counters.bytes = offset;
- counters.header_bytes = offset + 1;
- counters.fec_packets = offset_uint32 + 2;
- counters.padding_bytes = offset + 3;
- counters.retransmitted_packets = offset_uint32 + 4;
- counters.packets = offset_uint32 + 5;
+ counters.transmitted.payload_bytes = offset;
+ counters.transmitted.header_bytes = offset + 1;
+ counters.fec.packets = offset_uint32 + 2;
+ counters.transmitted.padding_bytes = offset + 3;
+ counters.retransmitted.packets = offset_uint32 + 4;
+ counters.transmitted.packets = offset_uint32 + 5;
callback->DataCountersUpdated(counters, ssrc);
}
diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc
index 9d8ffb8..a6d7754 100644
--- a/webrtc/video/video_send_stream_tests.cc
+++ b/webrtc/video/video_send_stream_tests.cc
@@ -960,7 +960,8 @@
const SsrcStats& entry = stats.substreams[ssrc];
if (entry.frame_counts.key_frames > 0 &&
entry.frame_counts.delta_frames > 0 &&
- entry.total_bitrate_bps > 0 && entry.rtp_stats.packets > 0u &&
+ entry.total_bitrate_bps > 0 &&
+ entry.rtp_stats.transmitted.packets > 0u &&
entry.avg_delay_ms > 0 && entry.max_delay_ms > 0) {
return true;
}
diff --git a/webrtc/video_engine/include/vie_rtp_rtcp.h b/webrtc/video_engine/include/vie_rtp_rtcp.h
index 051eba0..62c0b4f 100644
--- a/webrtc/video_engine/include/vie_rtp_rtcp.h
+++ b/webrtc/video_engine/include/vie_rtp_rtcp.h
@@ -349,10 +349,10 @@
StreamDataCounters sent;
StreamDataCounters received;
int ret_code = GetRtpStatistics(video_channel, sent, received);
- bytes_sent = sent.bytes;
- packets_sent = sent.packets;
- bytes_received = received.bytes;
- packets_received = received.packets;
+ bytes_sent = sent.transmitted.payload_bytes;
+ packets_sent = sent.transmitted.packets;
+ bytes_received = received.transmitted.payload_bytes;
+ packets_received = received.transmitted.packets;
return ret_code;
}
diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc
index c4d458a..7410a01 100644
--- a/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc
+++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_custom_call.cc
@@ -1564,13 +1564,13 @@
"ERROR: %s at line %d",
__FUNCTION__, __LINE__);
std::cout << "\tRTP bytes sent: "
- << sent.bytes << std::endl;
+ << sent.transmitted.payload_bytes << std::endl;
std::cout << "\tRTP packets sent: "
- << sent.packets << std::endl;
+ << sent.transmitted.packets << std::endl;
std::cout << "\tRTP bytes received: "
- << received.bytes << std::endl;
+ << received.transmitted.payload_bytes << std::endl;
std::cout << "\tRTP packets received: "
- << received.packets << std::endl;
+ << received.transmitted.packets << std::endl;
}
void PrintBandwidthUsage(webrtc::ViERTP_RTCP* vie_rtp_rtcp,
diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
index 711bc58..47dbae4 100644
--- a/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
+++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
@@ -496,21 +496,24 @@
EXPECT_EQ(0, ViE.rtp_rtcp->GetRtpStatistics(tbChannel.videoChannel,
sent_after, received_after));
if (FLAGS_include_timing_dependent_tests) {
- EXPECT_GT(received_after.bytes, received_before.bytes);
+ EXPECT_GT(received_after.transmitted.payload_bytes,
+ received_before.transmitted.payload_bytes);
}
// Simulate lost reception and verify that nothing is sent during that time.
ViE.network->SetNetworkTransmissionState(tbChannel.videoChannel, false);
// Allow the encoder to finish the current frame before we expect that no
// additional packets will be sent.
AutoTestSleep(kAutoTestSleepTimeMs);
- received_before.bytes = received_after.bytes;
+ received_before.transmitted.payload_bytes =
+ received_after.transmitted.payload_bytes;
ViETest::Log("Network Down...\n");
AutoTestSleep(kAutoTestSleepTimeMs);
EXPECT_EQ(0, ViE.rtp_rtcp->GetRtpStatistics(tbChannel.videoChannel,
sent_before,
received_before));
if (FLAGS_include_timing_dependent_tests) {
- EXPECT_EQ(received_before.bytes, received_after.bytes);
+ EXPECT_EQ(received_before.transmitted.payload_bytes,
+ received_after.transmitted.payload_bytes);
}
// Network reception back. Video should now be sent.
@@ -521,9 +524,11 @@
sent_before,
received_before));
if (FLAGS_include_timing_dependent_tests) {
- EXPECT_GT(received_before.bytes, received_after.bytes);
+ EXPECT_GT(received_before.transmitted.payload_bytes,
+ received_after.transmitted.payload_bytes);
}
- received_after.bytes = received_before.bytes;
+ received_after.transmitted.payload_bytes =
+ received_before.transmitted.payload_bytes;
// Buffering mode.
EXPECT_EQ(0, ViE.base->StopSend(tbChannel.videoChannel));
EXPECT_EQ(0, ViE.base->StopReceive(tbChannel.videoChannel));
@@ -547,15 +552,18 @@
sent_before,
received_before));
if (FLAGS_include_timing_dependent_tests) {
- EXPECT_GT(received_before.bytes, received_after.bytes);
+ EXPECT_GT(received_before.transmitted.payload_bytes,
+ received_after.transmitted.payload_bytes);
}
- received_after.bytes = received_before.bytes;
+ received_after.transmitted.payload_bytes =
+ received_before.transmitted.payload_bytes;
AutoTestSleep(kAutoTestSleepTimeMs);
EXPECT_EQ(0, ViE.rtp_rtcp->GetRtpStatistics(tbChannel.videoChannel,
sent_before,
received_before));
if (FLAGS_include_timing_dependent_tests) {
- EXPECT_EQ(received_after.bytes, received_before.bytes);
+ EXPECT_EQ(received_after.transmitted.payload_bytes,
+ received_before.transmitted.payload_bytes);
}
// Network reception back. Video should now be sent.
ViETest::Log("Network Up...\n");
@@ -565,7 +573,8 @@
sent_before,
received_before));
if (FLAGS_include_timing_dependent_tests) {
- EXPECT_GT(received_before.bytes, received_after.bytes);
+ EXPECT_GT(received_before.transmitted.payload_bytes,
+ received_after.transmitted.payload_bytes);
}
// TODO(holmer): Verify that the decoded framerate doesn't decrease on an
// outage when in buffering mode. This isn't currently possible because we
diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc
index a83e30f..1e0a056 100644
--- a/webrtc/video_engine/vie_channel.cc
+++ b/webrtc/video_engine/vie_channel.cc
@@ -248,18 +248,18 @@
elapsed_sec = rtp_rtx.TimeSinceFirstPacketInMs(now) / 1000;
if (elapsed_sec > metrics::kMinRunTimeInSeconds) {
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.BitrateReceivedInKbps",
- rtp_rtx.TotalBytes() * 8 / elapsed_sec / 1000);
+ rtp_rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 1000);
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.MediaBitrateReceivedInKbps",
rtp.MediaPayloadBytes() * 8 / elapsed_sec / 1000);
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.PaddingBitrateReceivedInKbps",
- rtp_rtx.padding_bytes * 8 / elapsed_sec / 1000);
+ rtp_rtx.transmitted.padding_bytes * 8 / elapsed_sec / 1000);
RTC_HISTOGRAM_COUNTS_10000(
"WebRTC.Video.RetransmittedBitrateReceivedInKbps",
- rtp_rtx.RetransmittedBytes() * 8 / elapsed_sec / 1000);
+ rtp_rtx.retransmitted.TotalBytes() * 8 / elapsed_sec / 1000);
uint32_t ssrc = 0;
if (vie_receiver_.GetRtxSsrc(&ssrc)) {
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.RtxBitrateReceivedInKbps",
- rtx.TotalBytes() * 8 / elapsed_sec / 1000);
+ rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 1000);
}
}
}
@@ -278,17 +278,17 @@
return;
}
RTC_HISTOGRAM_COUNTS_100000("WebRTC.Video.BitrateSentInKbps",
- rtp_rtx.TotalBytes() * 8 / elapsed_sec / 1000);
+ rtp_rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 1000);
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.MediaBitrateSentInKbps",
rtp.MediaPayloadBytes() * 8 / elapsed_sec / 1000);
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.PaddingBitrateSentInKbps",
- rtp_rtx.padding_bytes * 8 / elapsed_sec / 1000);
+ rtp_rtx.transmitted.padding_bytes * 8 / elapsed_sec / 1000);
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.RetransmittedBitrateSentInKbps",
- rtp_rtx.RetransmittedBytes() * 8 / elapsed_sec / 1000);
+ rtp_rtx.retransmitted.TotalBytes() * 8 / elapsed_sec / 1000);
uint32_t ssrc = 0;
if (vie_receiver_.GetRtxSsrc(&ssrc)) {
RTC_HISTOGRAM_COUNTS_10000("WebRTC.Video.RtxBitrateSentInKbps",
- rtx.TotalBytes() * 8 / elapsed_sec / 1000);
+ rtx.transmitted.TotalBytes() * 8 / elapsed_sec / 1000);
}
}
diff --git a/webrtc/video_engine/vie_rtp_rtcp_impl.cc b/webrtc/video_engine/vie_rtp_rtcp_impl.cc
index f9d96e6..b14d8a2 100644
--- a/webrtc/video_engine/vie_rtp_rtcp_impl.cc
+++ b/webrtc/video_engine/vie_rtp_rtcp_impl.cc
@@ -726,10 +726,10 @@
shared_data_->SetLastError(kViERtpRtcpInvalidChannelId);
return -1;
}
- if (vie_channel->GetRtpStatistics(&sent.bytes,
- &sent.packets,
- &received.bytes,
- &received.packets) != 0) {
+ if (vie_channel->GetRtpStatistics(&sent.transmitted.payload_bytes,
+ &sent.transmitted.packets,
+ &received.transmitted.payload_bytes,
+ &received.transmitted.packets) != 0) {
shared_data_->SetLastError(kViERtpRtcpUnknownError);
return -1;
}