Index: webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc |
diff --git a/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc b/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc |
index 01cf7cbe3dd68880a64365d82a2b371e6ce8df0a..875c8f798f031e507811b7f882fd18b7b54b6d12 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc |
@@ -332,7 +332,7 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test { |
} |
void TestDelayFilter(int64_t delay_ms) { |
- filter_.SetDelayMs(delay_ms); |
+ filter_.SetOneWayDelayMs(delay_ms); |
TestDelayFilter(1, 0, 0); // No input should yield no output |
// Single packet |
@@ -340,7 +340,7 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test { |
TestDelayFilter(delay_ms, 0, 0); |
for (int i = 0; i < delay_ms; ++i) { |
- filter_.SetDelayMs(i); |
+ filter_.SetOneWayDelayMs(i); |
TestDelayFilter(1, 10, 10); |
} |
TestDelayFilter(0, 0, 0); |
@@ -350,11 +350,11 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test { |
TestDelayFilter(delay_ms, 0, 0); |
for (int i = 1; i < delay_ms + 1; ++i) { |
- filter_.SetDelayMs(i); |
+ filter_.SetOneWayDelayMs(i); |
TestDelayFilter(1, 5, 5); |
} |
TestDelayFilter(0, 0, 0); |
- filter_.SetDelayMs(2 * delay_ms); |
+ filter_.SetOneWayDelayMs(2 * delay_ms); |
TestDelayFilter(1, 0, 0); |
TestDelayFilter(delay_ms, 13, 13); |
TestDelayFilter(delay_ms, 0, 0); |
@@ -363,11 +363,11 @@ class BweTestFramework_DelayFilterTest : public ::testing::Test { |
TestDelayFilter(delay_ms, 0, 0); |
for (int i = 0; i < 2 * delay_ms; ++i) { |
- filter_.SetDelayMs(2 * delay_ms - i - 1); |
+ filter_.SetOneWayDelayMs(2 * delay_ms - i - 1); |
TestDelayFilter(1, 5, 5); |
} |
TestDelayFilter(0, 0, 0); |
- filter_.SetDelayMs(0); |
+ filter_.SetOneWayDelayMs(0); |
TestDelayFilter(0, 7, 7); |
ASSERT_TRUE(IsTimeSorted(accumulated_packets_)); |
@@ -388,7 +388,7 @@ TEST_F(BweTestFramework_DelayFilterTest, Delay0) { |
TestDelayFilter(1, 0, 0); // No input should yield no output |
TestDelayFilter(1, 10, 10); // Expect no delay (delay time is zero) |
TestDelayFilter(1, 0, 0); // Check no packets are still in buffer |
- filter_.SetDelayMs(0); |
+ filter_.SetOneWayDelayMs(0); |
TestDelayFilter(1, 5, 5); // Expect no delay (delay time is zero) |
TestDelayFilter(1, 0, 0); // Check no packets are still in buffer |
} |
@@ -415,7 +415,7 @@ TEST_F(BweTestFramework_DelayFilterTest, JumpToZeroDelay) { |
Packets packets; |
// Delay a bunch of packets, accumulate them to the 'acc' list. |
- delay.SetDelayMs(100.0f); |
+ delay.SetOneWayDelayMs(100.0f); |
for (uint32_t i = 0; i < 10; ++i) { |
packets.push_back(new MediaPacket(i * 100, i)); |
} |
@@ -426,7 +426,7 @@ TEST_F(BweTestFramework_DelayFilterTest, JumpToZeroDelay) { |
// Drop delay to zero, send a few more packets through the delay, append them |
// to the 'acc' list and verify that it is all sorted. |
- delay.SetDelayMs(0.0f); |
+ delay.SetOneWayDelayMs(0.0f); |
for (uint32_t i = 10; i < 50; ++i) { |
packets.push_back(new MediaPacket(i * 100, i)); |
} |
@@ -445,12 +445,12 @@ TEST_F(BweTestFramework_DelayFilterTest, IncreasingDelay) { |
TestDelayFilter(i); |
} |
// Reach a steady state. |
- filter_.SetDelayMs(100); |
+ filter_.SetOneWayDelayMs(100); |
TestDelayFilter(1, 20, 20); |
TestDelayFilter(2, 0, 0); |
TestDelayFilter(99, 20, 20); |
// Drop delay back down to zero. |
- filter_.SetDelayMs(0); |
+ filter_.SetOneWayDelayMs(0); |
TestDelayFilter(1, 100, 100); |
TestDelayFilter(23010, 0, 0); |
ASSERT_TRUE(IsTimeSorted(accumulated_packets_)); |
@@ -643,7 +643,7 @@ class BweTestFramework_ChokeFilterTest : public ::testing::Test { |
delete output_packets_.front(); |
output_packets_.pop_front(); |
} |
- EXPECT_EQ(expected_kbit_transmitted, (bytes_transmitted * 8) / 1000); |
+ EXPECT_EQ(expected_kbit_transmitted, (bytes_transmitted * 8 + 500) / 1000); |
} |
void CheckMaxDelay(int64_t max_delay_ms) { |
@@ -672,7 +672,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, NoQueue) { |
uint16_t sequence_number = 0; |
int64_t send_time_us = 0; |
ChokeFilter filter(NULL, 0); |
- filter.SetCapacity(10); |
+ filter.set_capacity_kbps(10); |
Packets packets; |
RTPHeader header; |
for (int i = 0; i < 2; ++i) { |
@@ -699,14 +699,14 @@ TEST_F(BweTestFramework_ChokeFilterTest, Short) { |
// That is actually just a single packet, since each packet has 1000 bits of |
// payload. |
ChokeFilter filter(NULL, 0); |
- filter.SetCapacity(10); |
+ filter.set_capacity_kbps(10); |
TestChoke(&filter, 100, 100, 1); |
} |
TEST_F(BweTestFramework_ChokeFilterTest, Medium) { |
// 100ms, 10 packets, 10 kbps choke -> 1 packet through, or 1 kbit. |
ChokeFilter filter(NULL, 0); |
- filter.SetCapacity(10); |
+ filter.set_capacity_kbps(10); |
TestChoke(&filter, 100, 10, 1); |
// 200ms, no new packets -> another packet through. |
TestChoke(&filter, 100, 0, 1); |
@@ -719,7 +719,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, Medium) { |
TEST_F(BweTestFramework_ChokeFilterTest, Long) { |
// 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit. |
ChokeFilter filter(NULL, 0); |
- filter.SetCapacity(10); |
+ filter.set_capacity_kbps(10); |
TestChoke(&filter, 100, 100, 1); |
// 200ms, no input, another packet through. |
TestChoke(&filter, 100, 0, 1); |
@@ -727,22 +727,22 @@ TEST_F(BweTestFramework_ChokeFilterTest, Long) { |
TestChoke(&filter, 800, 0, 8); |
// 10000ms, no input, raise choke to 100 kbps. Remaining 90 packets in queue |
// should be propagated, for a total of 90 kbps. |
- filter.SetCapacity(100); |
+ filter.set_capacity_kbps(100); |
TestChoke(&filter, 9000, 0, 90); |
// 10100ms, 20 more packets -> 10 packets or 10 kbit through. |
TestChoke(&filter, 100, 20, 10); |
// 10300ms, 10 more packets -> 20 packets out. |
TestChoke(&filter, 200, 10, 20); |
// 11300ms, no input, queue should be empty. |
- filter.SetCapacity(10); |
+ filter.set_capacity_kbps(10); |
TestChoke(&filter, 1000, 0, 0); |
} |
TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) { |
// 10 kbps choke, 500 ms delay cap |
ChokeFilter filter(NULL, 0); |
- filter.SetCapacity(10); |
- filter.SetMaxDelay(500); |
+ filter.set_capacity_kbps(10); |
+ filter.set_max_delay_ms(500); |
// 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit. |
TestChoke(&filter, 100, 100, 1); |
CheckMaxDelay(500); |
@@ -752,7 +752,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) { |
TestChoke(&filter, 9500, 0, 0); |
// 100 ms delay cap |
- filter.SetMaxDelay(100); |
+ filter.set_max_delay_ms(100); |
// 10100ms, 50 more packets -> 1 packets or 1 kbit through. |
TestChoke(&filter, 100, 50, 1); |
CheckMaxDelay(100); |
@@ -760,8 +760,8 @@ TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) { |
TestChoke(&filter, 9900, 0, 0); |
// Reset delay cap (0 is no cap) and verify no packets are dropped. |
- filter.SetCapacity(10); |
- filter.SetMaxDelay(0); |
+ filter.set_capacity_kbps(10); |
+ filter.set_max_delay_ms(0); |
TestChoke(&filter, 100, 100, 1); |
TestChoke(&filter, 9900, 0, 99); |
} |
@@ -784,7 +784,7 @@ TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceTwoWraps) { |
TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceMaxDelay) { |
TraceBasedDeliveryFilter filter(NULL, 0); |
- filter.SetMaxDelay(25); |
+ filter.set_max_delay_ms(25); |
ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx"))); |
// Uses all slots up to 110 ms. Several packets are being dropped. |
TestChoke(&filter, 110, 20, 9); |
@@ -805,12 +805,14 @@ void TestVideoSender(VideoSender* sender, |
ASSERT_TRUE(IsTimeSorted(packets)); |
ASSERT_TRUE(IsSequenceNumberSorted(packets)); |
EXPECT_EQ(expected_packets, packets.size()); |
+ |
int64_t send_time_us = -1; |
size_t total_payload_size = 0; |
uint32_t absolute_send_time = 0; |
uint32_t absolute_send_time_wraps = 0; |
uint32_t rtp_timestamp = 0; |
uint32_t rtp_timestamp_wraps = 0; |
+ |
for (const auto* packet : packets) { |
const MediaPacket* media_packet = static_cast<const MediaPacket*>(packet); |
EXPECT_LE(send_time_us, media_packet->send_time_us()); |
@@ -830,6 +832,7 @@ void TestVideoSender(VideoSender* sender, |
} |
rtp_timestamp = media_packet->header().timestamp; |
} |
+ |
EXPECT_EQ(expected_total_payload_size, total_payload_size); |
EXPECT_GE(1u, absolute_send_time_wraps); |
EXPECT_GE(1u, rtp_timestamp_wraps); |
@@ -838,6 +841,8 @@ void TestVideoSender(VideoSender* sender, |
delete packet; |
} |
+// Random {-1, 0, +1} ms was added to frame timestamps. |
+ |
TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s) { |
// 1 fps, 80 kbps |
VideoSource source(0, 1.0f, 80, 0x1234, 0); |
@@ -846,14 +851,16 @@ TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s) { |
// We're at 1 fps, so all packets should be generated on first call, giving 10 |
// packets of each 1000 bytes, total 10000 bytes. |
TestVideoSender(&sender, 1, 9, 400, 10000); |
- // 999ms, should see no output here. |
- TestVideoSender(&sender, 998, 0, 0, 0); |
- // 1999ms, should get data for one more frame. |
- TestVideoSender(&sender, 1000, 9, 400, 10000); |
- // 2000ms, one more frame. |
- TestVideoSender(&sender, 1, 9, 400, 10000); |
- // 2999ms, should see nothing. |
- TestVideoSender(&sender, 999, 0, 0, 0); |
+ // 998ms, should see no output here. |
+ TestVideoSender(&sender, 997, 0, 0, 0); |
+ // 1001ms, should get data for one more frame. |
+ TestVideoSender(&sender, 3, 9, 400, 10000); |
+ // 1998ms, should see no output here. |
+ TestVideoSender(&sender, 997, 0, 0, 0); |
+ // 2001ms, one more frame. |
+ TestVideoSender(&sender, 3, 9, 400, 10000); |
+ // 2998ms, should see nothing. |
+ TestVideoSender(&sender, 997, 0, 0, 0); |
} |
TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s_Offset) { |
@@ -861,20 +868,20 @@ TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s_Offset) { |
VideoSource source(0, 1.0f, 80, 0x1234, 500); |
VideoSender sender(NULL, &source, kNullEstimator); |
EXPECT_EQ(80000u, source.bits_per_second()); |
- // 499ms, no output. |
- TestVideoSender(&sender, 499, 0, 0, 0); |
- // 500ms, first frame (this is the offset we set), 10 packets of 1000 bytes. |
- TestVideoSender(&sender, 1, 9, 400, 10000); |
- // 1499ms, nothing. |
- TestVideoSender(&sender, 999, 0, 0, 0); |
- // 1999ms, second frame. |
- TestVideoSender(&sender, 500, 9, 400, 10000); |
- // 2499ms, nothing. |
- TestVideoSender(&sender, 500, 0, 0, 0); |
- // 2500ms, third frame. |
- TestVideoSender(&sender, 1, 9, 400, 10000); |
- // 3499ms, nothing. |
- TestVideoSender(&sender, 999, 0, 0, 0); |
+ // 498ms, no output. |
+ TestVideoSender(&sender, 498, 0, 0, 0); |
+ // 501ms, first frame (this is the offset we set), 10 packets of 1000 bytes. |
+ TestVideoSender(&sender, 3, 9, 400, 10000); |
+ // 1498ms, nothing. |
+ TestVideoSender(&sender, 997, 0, 0, 0); |
+ // 1501ms, second frame. |
+ TestVideoSender(&sender, 3, 9, 400, 10000); |
+ // 2498ms, nothing. |
+ TestVideoSender(&sender, 997, 0, 0, 0); |
+ // 2501ms, third frame. |
+ TestVideoSender(&sender, 3, 9, 400, 10000); |
+ // 3498ms, nothing. |
+ TestVideoSender(&sender, 997, 0, 0, 0); |
} |
TEST(BweTestFramework_VideoSenderTest, Fps50Kpbs80_11s) { |
@@ -882,55 +889,55 @@ TEST(BweTestFramework_VideoSenderTest, Fps50Kpbs80_11s) { |
VideoSource source(0, 50.0f, 80, 0x1234, 0); |
VideoSender sender(NULL, &source, kNullEstimator); |
EXPECT_EQ(80000u, source.bits_per_second()); |
- // 9998ms, should see 500 frames, 200 byte payloads, total 100000 bytes. |
- TestVideoSender(&sender, 9998, 500, 200, 100000); |
- // 9999ms, nothing. |
- TestVideoSender(&sender, 1, 0, 0, 0); |
- // 10000ms, 501st frame as a single packet. |
- TestVideoSender(&sender, 1, 1, 200, 200); |
- // 10998ms, 49 more frames. |
- TestVideoSender(&sender, 998, 49, 200, 9800); |
- // 10999ms, nothing. |
- TestVideoSender(&sender, 1, 0, 0, 0); |
+ // 9981, should see 500 frames, 200 byte payloads, total 100000 bytes. |
+ TestVideoSender(&sender, 9981, 500, 200, 100000); |
+ // 9998ms, nothing. |
+ TestVideoSender(&sender, 17, 0, 0, 0); |
+ // 10001ms, 501st frame as a single packet. |
+ TestVideoSender(&sender, 3, 1, 200, 200); |
+ // 10981ms, 49 more frames. |
+ TestVideoSender(&sender, 981, 49, 200, 9800); |
+ // 10998ms, nothing. |
+ TestVideoSender(&sender, 17, 0, 0, 0); |
} |
-TEST(BweTestFramework_VideoSenderTest, Fps10Kpbs120_1s) { |
+TEST(BweTestFramework_VideoSenderTest, Fps20Kpbs120_1s) { |
// 20 fps, 120 kbps. |
VideoSource source(0, 20.0f, 120, 0x1234, 0); |
VideoSender sender(NULL, &source, kNullEstimator); |
EXPECT_EQ(120000u, source.bits_per_second()); |
- // 498ms, 10 frames with 750 byte payloads, total 7500 bytes. |
- TestVideoSender(&sender, 498, 10, 750, 7500); |
- // 499ms, nothing. |
- TestVideoSender(&sender, 1, 0, 0, 0); |
- // 500ms, one more frame. |
- TestVideoSender(&sender, 1, 1, 750, 750); |
- // 998ms, 9 more frames. |
- TestVideoSender(&sender, 498, 9, 750, 6750); |
- // 999ms, nothing. |
- TestVideoSender(&sender, 1, 0, 0, 0); |
+ // 451ms, 10 frames with 750 byte payloads, total 7500 bytes. |
+ TestVideoSender(&sender, 451, 10, 750, 7500); |
+ // 498ms, nothing. |
+ TestVideoSender(&sender, 47, 0, 0, 0); |
+ // 501ms, one more frame. |
+ TestVideoSender(&sender, 3, 1, 750, 750); |
+ // 951ms, 9 more frames. |
+ TestVideoSender(&sender, 450, 9, 750, 6750); |
+ // 998ms, nothing. |
+ TestVideoSender(&sender, 47, 0, 0, 0); |
} |
-TEST(BweTestFramework_VideoSenderTest, Fps30Kbps800_20s) { |
- // 20 fps, 820 kbps. |
+TEST(BweTestFramework_VideoSenderTest, Fps25Kbps820_20s) { |
+ // 25 fps, 820 kbps. |
VideoSource source(0, 25.0f, 820, 0x1234, 0); |
VideoSender sender(NULL, &source, kNullEstimator); |
EXPECT_EQ(820000u, source.bits_per_second()); |
- // 9998ms, 250 frames. 820 kbps = 102500 bytes/s, so total should be 1025000. |
+ // 9961ms, 250 frames. 820 kbps = 102500 bytes/s, so total should be 1025000. |
// Each frame is 102500/25=4100 bytes, or 5 packets (4 @1000 bytes, 1 @100), |
// so packet count should be 5*250=1250 and last packet of each frame has |
// 100 bytes of payload. |
- TestVideoSender(&sender, 9998, 1000, 500, 1025000); |
- // 9999ms, nothing. |
- TestVideoSender(&sender, 1, 0, 0, 0); |
- // 19998ms, 250 more frames. |
- TestVideoSender(&sender, 9999, 1000, 500, 1025000); |
- // 19999ms, nothing. |
- TestVideoSender(&sender, 1, 0, 0, 0); |
- // 20038ms, one more frame, as described above (25fps == 40ms/frame). |
- TestVideoSender(&sender, 39, 4, 500, 4100); |
- // 20039ms, nothing. |
- TestVideoSender(&sender, 1, 0, 0, 0); |
+ TestVideoSender(&sender, 9961, 1000, 500, 1025000); |
+ // 9998ms, nothing. |
+ TestVideoSender(&sender, 37, 0, 0, 0); |
+ // 19961ms, 250 more frames. |
+ TestVideoSender(&sender, 9963, 1000, 500, 1025000); |
+ // 19998ms, nothing. |
+ TestVideoSender(&sender, 37, 0, 0, 0); |
+ // 20001ms, one more frame, as described above (25fps == 40ms/frame). |
+ TestVideoSender(&sender, 3, 4, 500, 4100); |
+ // 20038ms, nothing. |
+ TestVideoSender(&sender, 37, 0, 0, 0); |
} |
TEST(BweTestFramework_VideoSenderTest, TestAppendInOrder) { |
@@ -973,7 +980,7 @@ TEST(BweTestFramework_VideoSenderTest, FeedbackIneffective) { |
VideoSender sender(NULL, &source, kNullEstimator); |
EXPECT_EQ(820000u, source.bits_per_second()); |
- TestVideoSender(&sender, 9998, 1000, 500, 1025000); |
+ TestVideoSender(&sender, 9961, 1000, 500, 1025000); |
// Make sure feedback has no effect on a regular video sender. |
RembFeedback* feedback = new RembFeedback(0, 0, 0, 512000, RTCPReportBlock()); |
@@ -981,14 +988,14 @@ TEST(BweTestFramework_VideoSenderTest, FeedbackIneffective) { |
packets.push_back(feedback); |
sender.RunFor(0, &packets); |
EXPECT_EQ(820000u, source.bits_per_second()); |
- TestVideoSender(&sender, 9998, 1000, 500, 1025000); |
+ TestVideoSender(&sender, 10000, 1000, 500, 1025000); |
} |
TEST(BweTestFramework_AdaptiveVideoSenderTest, FeedbackChangesBitrate) { |
AdaptiveVideoSource source(0, 25.0f, 820, 0x1234, 0); |
VideoSender sender(NULL, &source, kRembEstimator); |
EXPECT_EQ(820000u, source.bits_per_second()); |
- TestVideoSender(&sender, 9998, 1000, 500, 1025000); |
+ TestVideoSender(&sender, 9961, 1000, 500, 1025000); |
// Make sure we can reduce the bitrate. |
RembFeedback* feedback = new RembFeedback(0, 0, 0, 512000, RTCPReportBlock()); |
@@ -996,7 +1003,7 @@ TEST(BweTestFramework_AdaptiveVideoSenderTest, FeedbackChangesBitrate) { |
packets.push_back(feedback); |
sender.RunFor(0, &packets); |
EXPECT_EQ(512000u, source.bits_per_second()); |
- TestVideoSender(&sender, 9998, 750, 160, 640000); |
+ TestVideoSender(&sender, 10000, 750, 160, 640000); |
// Increase the bitrate to the initial bitrate and verify that the output is |
// the same. |
@@ -1021,7 +1028,7 @@ TEST(BweTestFramework_AdaptiveVideoSenderTest, Paced_FeedbackChangesBitrate) { |
packets.push_back(feedback); |
sender.RunFor(10000, &packets); |
ASSERT_EQ(512000u, source.bits_per_second()); |
- TestVideoSender(&sender, 9998, 750, 160, 640000); |
+ TestVideoSender(&sender, 10000, 750, 160, 640000); |
// Increase the bitrate to the initial bitrate and verify that the output is |
// the same. |