Index: webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc |
diff --git a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc |
index e1268dad2210213d0144bad497b5d405692f098a..43575056ae9428e196073e006d78fa49c90b29b4 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc |
@@ -99,7 +99,7 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, TestProcessAfterTimeout) { |
// RemoteBitrateEstimator. |
const int64_t kStreamTimeOutMs = 2000; |
const int64_t kProcessIntervalMs = 1000; |
- IncomingPacket(0, 1000, clock_.TimeInMilliseconds(), 0, 0); |
+ IncomingPacket(0, 1000, clock_.TimeInMilliseconds(), 0, 0, true); |
clock_.AdvanceTimeMilliseconds(kStreamTimeOutMs + 1); |
// Trigger timeout. |
EXPECT_EQ(0, bitrate_estimator_->Process()); |
@@ -115,14 +115,16 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, TestProbeDetection) { |
for (int i = 0; i < kProbeLength; ++i) { |
clock_.AdvanceTimeMilliseconds(10); |
now_ms = clock_.TimeInMilliseconds(); |
- IncomingPacket(0, 1000, now_ms, 90 * now_ms, AbsSendTime(now_ms, 1000)); |
+ IncomingPacket(0, 1000, now_ms, 90 * now_ms, AbsSendTime(now_ms, 1000), |
+ true); |
} |
// Second burst sent at 8 * 1000 / 5 = 1600 kbps. |
for (int i = 0; i < kProbeLength; ++i) { |
clock_.AdvanceTimeMilliseconds(5); |
now_ms = clock_.TimeInMilliseconds(); |
- IncomingPacket(0, 1000, now_ms, 90 * now_ms, AbsSendTime(now_ms, 1000)); |
+ IncomingPacket(0, 1000, now_ms, 90 * now_ms, AbsSendTime(now_ms, 1000), |
+ true); |
} |
EXPECT_EQ(0, bitrate_estimator_->Process()); |
@@ -130,6 +132,28 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, TestProbeDetection) { |
EXPECT_GT(bitrate_observer_->latest_bitrate(), 1500000u); |
} |
+TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, |
+ TestProbeDetectionNonPacedPackets) { |
+ const int kProbeLength = 5; |
+ int64_t now_ms = clock_.TimeInMilliseconds(); |
+ // First burst sent at 8 * 1000 / 10 = 800 kbps, but with every other packet |
+ // not being paced which could mess things up. |
+ for (int i = 0; i < kProbeLength; ++i) { |
+ clock_.AdvanceTimeMilliseconds(5); |
+ now_ms = clock_.TimeInMilliseconds(); |
+ IncomingPacket(0, 1000, now_ms, 90 * now_ms, AbsSendTime(now_ms, 1000), |
+ true); |
+ // Non-paced packet, arriving 5 ms after. |
+ clock_.AdvanceTimeMilliseconds(5); |
+ IncomingPacket(0, 100, now_ms, 90 * now_ms, AbsSendTime(now_ms, 1000), |
+ false); |
+ } |
+ |
+ EXPECT_EQ(0, bitrate_estimator_->Process()); |
+ EXPECT_TRUE(bitrate_observer_->updated()); |
+ EXPECT_GT(bitrate_observer_->latest_bitrate(), 800000u); |
+} |
+ |
// Packets will require 5 ms to be transmitted to the receiver, causing packets |
// of the second probe to be dispersed. |
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, |
@@ -143,7 +167,7 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, |
now_ms = clock_.TimeInMilliseconds(); |
send_time_ms += 10; |
IncomingPacket(0, 1000, now_ms, 90 * send_time_ms, |
- AbsSendTime(send_time_ms, 1000)); |
+ AbsSendTime(send_time_ms, 1000), true); |
} |
// Second burst sent at 8 * 1000 / 5 = 1600 kbps, arriving at 8 * 1000 / 8 = |
@@ -153,7 +177,7 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, |
now_ms = clock_.TimeInMilliseconds(); |
send_time_ms += 5; |
IncomingPacket(0, 1000, now_ms, send_time_ms, |
- AbsSendTime(send_time_ms, 1000)); |
+ AbsSendTime(send_time_ms, 1000), true); |
} |
EXPECT_EQ(0, bitrate_estimator_->Process()); |
@@ -173,7 +197,7 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, |
send_time_ms += 10; |
now_ms = clock_.TimeInMilliseconds(); |
IncomingPacket(0, 1000, now_ms, 90 * send_time_ms, |
- AbsSendTime(send_time_ms, 1000)); |
+ AbsSendTime(send_time_ms, 1000), true); |
} |
EXPECT_EQ(0, bitrate_estimator_->Process()); |
@@ -192,7 +216,7 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, TestProbeDetectionFasterArrival) { |
send_time_ms += 10; |
now_ms = clock_.TimeInMilliseconds(); |
IncomingPacket(0, 1000, now_ms, 90 * send_time_ms, |
- AbsSendTime(send_time_ms, 1000)); |
+ AbsSendTime(send_time_ms, 1000), true); |
} |
EXPECT_EQ(0, bitrate_estimator_->Process()); |
@@ -210,7 +234,7 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, TestProbeDetectionSlowerArrival) { |
send_time_ms += 5; |
now_ms = clock_.TimeInMilliseconds(); |
IncomingPacket(0, 1000, now_ms, 90 * send_time_ms, |
- AbsSendTime(send_time_ms, 1000)); |
+ AbsSendTime(send_time_ms, 1000), true); |
} |
EXPECT_EQ(0, bitrate_estimator_->Process()); |
@@ -230,7 +254,7 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, |
send_time_ms += 1; |
now_ms = clock_.TimeInMilliseconds(); |
IncomingPacket(0, 1000, now_ms, 90 * send_time_ms, |
- AbsSendTime(send_time_ms, 1000)); |
+ AbsSendTime(send_time_ms, 1000), true); |
} |
EXPECT_EQ(0, bitrate_estimator_->Process()); |