|
|
|
@@ -772,33 +772,33 @@ TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s) {
|
|
|
|
EXPECT_EQ(10000u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(10000u, sender.bytes_per_second());
|
|
|
|
// We're at 1 fps, so all packets should be generated on first call, giving 10
|
|
|
|
// We're at 1 fps, so all packets should be generated on first call, giving 10
|
|
|
|
// packets of each 1000 bytes, total 10000 bytes.
|
|
|
|
// packets of each 1000 bytes, total 10000 bytes.
|
|
|
|
TestVideoSender(&sender, 1, 10, 1000, 10000);
|
|
|
|
TestVideoSender(&sender, 1, 9, 400, 10000);
|
|
|
|
// 999ms, should see no output here.
|
|
|
|
// 999ms, should see no output here.
|
|
|
|
TestVideoSender(&sender, 998, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 998, 0, 0, 0);
|
|
|
|
// 1999ms, should get data for one more frame.
|
|
|
|
// 1999ms, should get data for one more frame.
|
|
|
|
TestVideoSender(&sender, 1000, 10, 1000, 10000);
|
|
|
|
TestVideoSender(&sender, 1000, 9, 400, 10000);
|
|
|
|
// 2000ms, one more frame.
|
|
|
|
// 2000ms, one more frame.
|
|
|
|
TestVideoSender(&sender, 1, 10, 1000, 10000);
|
|
|
|
TestVideoSender(&sender, 1, 9, 400, 10000);
|
|
|
|
// 2999ms, should see nothing.
|
|
|
|
// 2999ms, should see nothing.
|
|
|
|
TestVideoSender(&sender, 999, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 999, 0, 0, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TEST(BweTestFramework_VideoSenderTest, Fps1Kpbs80_1s_Offset) {
|
|
|
|
TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s_Offset) {
|
|
|
|
// 1 fps, 80 kbps, offset 0.5 of a frame period, ==0.5s in this case.
|
|
|
|
// 1 fps, 80 kbps, offset 0.5 of a frame period, ==0.5s in this case.
|
|
|
|
VideoSender sender(NULL, 1.0f, 80, 0x1234, 0.5f);
|
|
|
|
VideoSender sender(NULL, 1.0f, 80, 0x1234, 0.5f);
|
|
|
|
EXPECT_EQ(10000u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(10000u, sender.bytes_per_second());
|
|
|
|
// 499ms, no output.
|
|
|
|
// 499ms, no output.
|
|
|
|
TestVideoSender(&sender, 499, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 499, 0, 0, 0);
|
|
|
|
// 500ms, first frame (this is the offset we set), 10 packets of 1000 bytes.
|
|
|
|
// 500ms, first frame (this is the offset we set), 10 packets of 1000 bytes.
|
|
|
|
TestVideoSender(&sender, 1, 10, 1000, 10000);
|
|
|
|
TestVideoSender(&sender, 1, 9, 400, 10000);
|
|
|
|
// 1499ms, nothing.
|
|
|
|
// 1499ms, nothing.
|
|
|
|
TestVideoSender(&sender, 999, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 999, 0, 0, 0);
|
|
|
|
// 1999ms, second frame.
|
|
|
|
// 1999ms, second frame.
|
|
|
|
TestVideoSender(&sender, 500, 10, 1000, 10000);
|
|
|
|
TestVideoSender(&sender, 500, 9, 400, 10000);
|
|
|
|
// 2499ms, nothing.
|
|
|
|
// 2499ms, nothing.
|
|
|
|
TestVideoSender(&sender, 500, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 500, 0, 0, 0);
|
|
|
|
// 2500ms, third frame.
|
|
|
|
// 2500ms, third frame.
|
|
|
|
TestVideoSender(&sender, 1, 10, 1000, 10000);
|
|
|
|
TestVideoSender(&sender, 1, 9, 400, 10000);
|
|
|
|
// 3499ms, nothing.
|
|
|
|
// 3499ms, nothing.
|
|
|
|
TestVideoSender(&sender, 999, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 999, 0, 0, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -835,7 +835,7 @@ TEST(BweTestFramework_VideoSenderTest, Fps10Kpbs120_1s) {
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TEST(BweTestFramework_VideoSenderTest, Fps30Kpbs800_20s) {
|
|
|
|
TEST(BweTestFramework_VideoSenderTest, Fps30Kbps800_20s) {
|
|
|
|
// 20 fps, 820 kbps.
|
|
|
|
// 20 fps, 820 kbps.
|
|
|
|
VideoSender sender(NULL, 25.0f, 820, 0x1234, 0);
|
|
|
|
VideoSender sender(NULL, 25.0f, 820, 0x1234, 0);
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
@@ -843,15 +843,15 @@ TEST(BweTestFramework_VideoSenderTest, Fps30Kpbs800_20s) {
|
|
|
|
// Each frame is 102500/25=4100 bytes, or 5 packets (4 @1000 bytes, 1 @100),
|
|
|
|
// 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
|
|
|
|
// so packet count should be 5*250=1250 and last packet of each frame has
|
|
|
|
// 100 bytes of payload.
|
|
|
|
// 100 bytes of payload.
|
|
|
|
TestVideoSender(&sender, 9998, 1250, 100, 1025000);
|
|
|
|
TestVideoSender(&sender, 9998, 1000, 500, 1025000);
|
|
|
|
// 9999ms, nothing.
|
|
|
|
// 9999ms, nothing.
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
// 19998ms, 250 more frames.
|
|
|
|
// 19998ms, 250 more frames.
|
|
|
|
TestVideoSender(&sender, 9999, 1250, 100, 1025000);
|
|
|
|
TestVideoSender(&sender, 9999, 1000, 500, 1025000);
|
|
|
|
// 19999ms, nothing.
|
|
|
|
// 19999ms, nothing.
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
// 20038ms, one more frame, as described above (25fps == 40ms/frame).
|
|
|
|
// 20038ms, one more frame, as described above (25fps == 40ms/frame).
|
|
|
|
TestVideoSender(&sender, 39, 5, 100, 4100);
|
|
|
|
TestVideoSender(&sender, 39, 4, 500, 4100);
|
|
|
|
// 20039ms, nothing.
|
|
|
|
// 20039ms, nothing.
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
TestVideoSender(&sender, 1, 0, 0, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -865,12 +865,12 @@ TEST(BweTestFramework_VideoSenderTest, TestAppendInOrder) {
|
|
|
|
sender1.RunFor(999, &packets);
|
|
|
|
sender1.RunFor(999, &packets);
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
ASSERT_TRUE(IsSequenceNumberSorted(packets));
|
|
|
|
ASSERT_TRUE(IsSequenceNumberSorted(packets));
|
|
|
|
EXPECT_EQ(10u, packets.size());
|
|
|
|
EXPECT_EQ(9u, packets.size());
|
|
|
|
// Generate some more packets and verify they are appended to end of list.
|
|
|
|
// Generate some more packets and verify they are appended to end of list.
|
|
|
|
sender1.RunFor(1000, &packets);
|
|
|
|
sender1.RunFor(1000, &packets);
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
ASSERT_TRUE(IsSequenceNumberSorted(packets));
|
|
|
|
ASSERT_TRUE(IsSequenceNumberSorted(packets));
|
|
|
|
EXPECT_EQ(20u, packets.size());
|
|
|
|
EXPECT_EQ(18u, packets.size());
|
|
|
|
|
|
|
|
|
|
|
|
// Another sender, 2 fps, 160 kpbs, 150ms offset
|
|
|
|
// Another sender, 2 fps, 160 kpbs, 150ms offset
|
|
|
|
VideoSender sender2(NULL, 2.0f, 160, 0x2234, 0.30f);
|
|
|
|
VideoSender sender2(NULL, 2.0f, 160, 0x2234, 0.30f);
|
|
|
|
@@ -879,42 +879,42 @@ TEST(BweTestFramework_VideoSenderTest, TestAppendInOrder) {
|
|
|
|
// on the list.
|
|
|
|
// on the list.
|
|
|
|
sender2.RunFor(999, &packets);
|
|
|
|
sender2.RunFor(999, &packets);
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
EXPECT_EQ(40u, packets.size());
|
|
|
|
EXPECT_EQ(36u, packets.size());
|
|
|
|
// Generate some more.
|
|
|
|
// Generate some more.
|
|
|
|
sender2.RunFor(1000, &packets);
|
|
|
|
sender2.RunFor(1000, &packets);
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
ASSERT_TRUE(IsTimeSorted(packets));
|
|
|
|
EXPECT_EQ(60u, packets.size());
|
|
|
|
EXPECT_EQ(54u, packets.size());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TEST(BweTestFramework_VideoSenderTest, FeedbackIneffective) {
|
|
|
|
TEST(BweTestFramework_VideoSenderTest, FeedbackIneffective) {
|
|
|
|
VideoSender sender(NULL, 25.0f, 820, 0x1234, 0);
|
|
|
|
VideoSender sender(NULL, 25.0f, 820, 0x1234, 0);
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
TestVideoSender(&sender, 9998, 1250, 100, 1025000);
|
|
|
|
TestVideoSender(&sender, 9998, 1000, 500, 1025000);
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure feedback has no effect on a regular video sender.
|
|
|
|
// Make sure feedback has no effect on a regular video sender.
|
|
|
|
PacketSender::Feedback feedback = { 512000 };
|
|
|
|
PacketSender::Feedback feedback = { 512000 };
|
|
|
|
sender.GiveFeedback(feedback);
|
|
|
|
sender.GiveFeedback(feedback);
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
TestVideoSender(&sender, 9998, 1250, 100, 1025000);
|
|
|
|
TestVideoSender(&sender, 9998, 1000, 500, 1025000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TEST(BweTestFramework_AdaptiveVideoSenderTest, FeedbackChangesBitrate) {
|
|
|
|
TEST(BweTestFramework_AdaptiveVideoSenderTest, FeedbackChangesBitrate) {
|
|
|
|
AdaptiveVideoSender sender(NULL, 25.0f, 820, 0x1234, 0);
|
|
|
|
AdaptiveVideoSender sender(NULL, 25.0f, 820, 0x1234, 0);
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
TestVideoSender(&sender, 9998, 1250, 100, 1025000);
|
|
|
|
TestVideoSender(&sender, 9998, 1000, 500, 1025000);
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure we can reduce the bitrate.
|
|
|
|
// Make sure we can reduce the bitrate.
|
|
|
|
PacketSender::Feedback feedback = { 512000 };
|
|
|
|
PacketSender::Feedback feedback = { 512000 };
|
|
|
|
sender.GiveFeedback(feedback);
|
|
|
|
sender.GiveFeedback(feedback);
|
|
|
|
EXPECT_EQ(64000u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(64000u, sender.bytes_per_second());
|
|
|
|
TestVideoSender(&sender, 9998, 750, 560, 640000);
|
|
|
|
TestVideoSender(&sender, 9998, 750, 160, 640000);
|
|
|
|
|
|
|
|
|
|
|
|
// Increase the bitrate to the initial bitrate and verify that the output is
|
|
|
|
// Increase the bitrate to the initial bitrate and verify that the output is
|
|
|
|
// the same.
|
|
|
|
// the same.
|
|
|
|
feedback.estimated_bps = 820000;
|
|
|
|
feedback.estimated_bps = 820000;
|
|
|
|
sender.GiveFeedback(feedback);
|
|
|
|
sender.GiveFeedback(feedback);
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
EXPECT_EQ(102500u, sender.bytes_per_second());
|
|
|
|
TestVideoSender(&sender, 9998, 1250, 100, 1025000);
|
|
|
|
TestVideoSender(&sender, 9998, 1000, 500, 1025000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} // namespace bwe
|
|
|
|
} // namespace bwe
|
|
|
|
} // namespace testing
|
|
|
|
} // namespace testing
|
|
|
|
|