| Index: webrtc/modules/remote_bitrate_estimator/test/estimators/nada_unittest.cc
|
| diff --git a/webrtc/modules/remote_bitrate_estimator/test/estimators/nada_unittest.cc b/webrtc/modules/remote_bitrate_estimator/test/estimators/nada_unittest.cc
|
| index 967c2b2b5e47c3cda41a935e3a2b13ba44f07af7..983dbb56e93f1dd4796de42c4cb45e1782fd3638 100644
|
| --- a/webrtc/modules/remote_bitrate_estimator/test/estimators/nada_unittest.cc
|
| +++ b/webrtc/modules/remote_bitrate_estimator/test/estimators/nada_unittest.cc
|
| @@ -165,9 +165,9 @@ class NadaFbGenerator {
|
|
|
| // Verify if AcceleratedRampUp is called and that bitrate increases.
|
| TEST_F(NadaSenderSideTest, AcceleratedRampUp) {
|
| - const int64_t kRefSignalMs = 3;
|
| + const int64_t kRefSignalMs = 1;
|
| const int64_t kOneWayDelayMs = 50;
|
| - int original_bitrate = 2 * NadaBweSender::kMinRefRateKbps;
|
| + int original_bitrate = 2 * kMinBitrateKbps;
|
| size_t receiving_rate = static_cast<size_t>(original_bitrate);
|
| int64_t send_time_ms = nada_sender_.NowMs() - kOneWayDelayMs;
|
|
|
| @@ -199,7 +199,7 @@ TEST_F(NadaSenderSideTest, AcceleratedRampUp) {
|
| // Verify if AcceleratedRampDown is called and if bitrate decreases.
|
| TEST_F(NadaSenderSideTest, AcceleratedRampDown) {
|
| const int64_t kOneWayDelayMs = 50;
|
| - int original_bitrate = 3 * NadaBweSender::kMinRefRateKbps;
|
| + int original_bitrate = 3 * kMinBitrateKbps;
|
| size_t receiving_rate = static_cast<size_t>(original_bitrate);
|
| int64_t send_time_ms = nada_sender_.NowMs() - kOneWayDelayMs;
|
|
|
| @@ -216,8 +216,7 @@ TEST_F(NadaSenderSideTest, AcceleratedRampDown) {
|
| // Updates the bitrate according to the receiving rate and other constant
|
| // parameters.
|
| nada_sender_.AcceleratedRampDown(congested_fb);
|
| - int bitrate_2_kbps =
|
| - std::max(nada_sender_.bitrate_kbps(), NadaBweSender::kMinRefRateKbps);
|
| + int bitrate_2_kbps = std::max(nada_sender_.bitrate_kbps(), kMinBitrateKbps);
|
| EXPECT_EQ(bitrate_2_kbps, bitrate_1_kbps);
|
| }
|
|
|
| @@ -225,7 +224,7 @@ TEST_F(NadaSenderSideTest, GradualRateUpdate) {
|
| const int64_t kDeltaSMs = 20;
|
| const int64_t kRefSignalMs = 20;
|
| const int64_t kOneWayDelayMs = 50;
|
| - int original_bitrate = 2 * NadaBweSender::kMinRefRateKbps;
|
| + int original_bitrate = 2 * kMinBitrateKbps;
|
| size_t receiving_rate = static_cast<size_t>(original_bitrate);
|
| int64_t send_time_ms = nada_sender_.NowMs() - kOneWayDelayMs;
|
|
|
| @@ -251,8 +250,8 @@ TEST_F(NadaSenderSideTest, GradualRateUpdate) {
|
| // Sending bitrate should decrease and reach its Min bound.
|
| TEST_F(NadaSenderSideTest, VeryLowBandwith) {
|
| const int64_t kOneWayDelayMs = 50;
|
| - const int kMin = NadaBweSender::kMinRefRateKbps;
|
| - size_t receiving_rate = static_cast<size_t>(kMin);
|
| +
|
| + size_t receiving_rate = static_cast<size_t>(kMinBitrateKbps);
|
| int64_t send_time_ms = nada_sender_.NowMs() - kOneWayDelayMs;
|
|
|
| NadaFeedback extremely_congested_fb =
|
| @@ -260,7 +259,7 @@ TEST_F(NadaSenderSideTest, VeryLowBandwith) {
|
| NadaFeedback congested_fb =
|
| NadaFbGenerator::CongestedFb(receiving_rate, send_time_ms);
|
|
|
| - nada_sender_.set_bitrate_kbps(5 * kMin);
|
| + nada_sender_.set_bitrate_kbps(5 * kMinBitrateKbps);
|
| nada_sender_.set_original_operating_mode(true);
|
| for (int i = 0; i < 100; ++i) {
|
| // Trigger GradualRateUpdate mode.
|
| @@ -268,26 +267,25 @@ TEST_F(NadaSenderSideTest, VeryLowBandwith) {
|
| }
|
| // The original implementation doesn't allow the bitrate to stay at kMin,
|
| // even if the congestion signal is very high.
|
| - EXPECT_GE(nada_sender_.bitrate_kbps(), kMin);
|
| + EXPECT_GE(nada_sender_.bitrate_kbps(), kMinBitrateKbps);
|
|
|
| nada_sender_.set_original_operating_mode(false);
|
| - nada_sender_.set_bitrate_kbps(5 * kMin);
|
| + nada_sender_.set_bitrate_kbps(5 * kMinBitrateKbps);
|
|
|
| - for (int i = 0; i < 100; ++i) {
|
| + for (int i = 0; i < 1000; ++i) {
|
| int previous_bitrate = nada_sender_.bitrate_kbps();
|
| // Trigger AcceleratedRampDown mode.
|
| nada_sender_.GiveFeedback(congested_fb);
|
| EXPECT_LE(nada_sender_.bitrate_kbps(), previous_bitrate);
|
| }
|
| - EXPECT_EQ(nada_sender_.bitrate_kbps(), kMin);
|
| + EXPECT_EQ(nada_sender_.bitrate_kbps(), kMinBitrateKbps);
|
| }
|
|
|
| // Sending bitrate should increase and reach its Max bound.
|
| TEST_F(NadaSenderSideTest, VeryHighBandwith) {
|
| const int64_t kOneWayDelayMs = 50;
|
| - const int kMax = NadaBweSender::kMaxRefRateKbps;
|
| - const size_t kRecentReceivingRate = static_cast<size_t>(kMax);
|
| - const int64_t kRefSignalMs = 5;
|
| + const size_t kRecentReceivingRate = static_cast<size_t>(kMaxBitrateKbps);
|
| + const int64_t kRefSignalMs = 1;
|
| int64_t send_time_ms = nada_sender_.NowMs() - kOneWayDelayMs;
|
|
|
| NadaFeedback not_congested_fb = NadaFbGenerator::NotCongestedFb(
|
| @@ -299,21 +297,21 @@ TEST_F(NadaSenderSideTest, VeryHighBandwith) {
|
| nada_sender_.GiveFeedback(not_congested_fb);
|
| EXPECT_GE(nada_sender_.bitrate_kbps(), previous_bitrate);
|
| }
|
| - EXPECT_EQ(nada_sender_.bitrate_kbps(), kMax);
|
| + EXPECT_EQ(nada_sender_.bitrate_kbps(), kMaxBitrateKbps);
|
|
|
| nada_sender_.set_original_operating_mode(false);
|
| - nada_sender_.set_bitrate_kbps(NadaBweSender::kMinRefRateKbps);
|
| + nada_sender_.set_bitrate_kbps(kMinBitrateKbps);
|
|
|
| for (int i = 0; i < 100; ++i) {
|
| int previous_bitrate = nada_sender_.bitrate_kbps();
|
| nada_sender_.GiveFeedback(not_congested_fb);
|
| EXPECT_GE(nada_sender_.bitrate_kbps(), previous_bitrate);
|
| }
|
| - EXPECT_EQ(nada_sender_.bitrate_kbps(), kMax);
|
| + EXPECT_EQ(nada_sender_.bitrate_kbps(), kMaxBitrateKbps);
|
| }
|
|
|
| TEST_F(NadaReceiverSideTest, ReceivingRateNoPackets) {
|
| - EXPECT_EQ(nada_receiver_.RecentReceivingRate(), static_cast<size_t>(0));
|
| + EXPECT_EQ(nada_receiver_.RecentKbps(), static_cast<size_t>(0));
|
| }
|
|
|
| TEST_F(NadaReceiverSideTest, ReceivingRateSinglePacket) {
|
| @@ -329,25 +327,8 @@ TEST_F(NadaReceiverSideTest, ReceivingRateSinglePacket) {
|
|
|
| const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeWindowMs;
|
|
|
| - EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps);
|
| -}
|
| -
|
| -TEST_F(NadaReceiverSideTest, ReceivingRateLargePackets) {
|
| - const size_t kPayloadSizeBytes = 3000 * 1000;
|
| - const int64_t kTimeGapMs = 3000; // Between each packet.
|
| - const int64_t kOneWayDelayMs = 1000;
|
| -
|
| - for (int i = 1; i < 5; ++i) {
|
| - int64_t send_time_us = i * kTimeGapMs * 1000;
|
| - int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs;
|
| - uint16_t sequence_number = i;
|
| - const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes,
|
| - sequence_number);
|
| - nada_receiver_.ReceivePacket(arrival_time_ms, media_packet);
|
| - }
|
| -
|
| - const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeGapMs;
|
| - EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps);
|
| + EXPECT_NEAR(nada_receiver_.RecentKbps(), kReceivingRateKbps,
|
| + static_cast<float>(kReceivingRateKbps) / 100.0f);
|
| }
|
|
|
| TEST_F(NadaReceiverSideTest, ReceivingRateSmallPackets) {
|
| @@ -365,62 +346,8 @@ TEST_F(NadaReceiverSideTest, ReceivingRateSmallPackets) {
|
| }
|
|
|
| const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeGapMs;
|
| - EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps);
|
| -}
|
| -
|
| -TEST_F(NadaReceiverSideTest, ReceivingRateIntermittentPackets) {
|
| - const size_t kPayloadSizeBytes = 100 * 1000;
|
| - const int64_t kTimeGapMs = 50; // Between each packet.
|
| - const int64_t kFirstSendTimeMs = 0;
|
| - const int64_t kOneWayDelayMs = 50;
|
| -
|
| - // Gap between first and other packets
|
| - const MediaPacket media_packet(kFlowId, kFirstSendTimeMs, kPayloadSizeBytes,
|
| - 1);
|
| - nada_receiver_.ReceivePacket(kFirstSendTimeMs + kOneWayDelayMs, media_packet);
|
| -
|
| - const int64_t kDelayAfterFirstPacketMs = 1000;
|
| - const int kNumPackets = 5; // Small enough so that all packets are covered.
|
| - EXPECT_LT((kNumPackets - 2) * kTimeGapMs,
|
| - NadaBweReceiver::kReceivingRateTimeWindowMs);
|
| - const int64_t kTimeWindowMs =
|
| - kDelayAfterFirstPacketMs + (kNumPackets - 2) * kTimeGapMs;
|
| -
|
| - for (int i = 2; i <= kNumPackets; ++i) {
|
| - int64_t send_time_us =
|
| - ((i - 2) * kTimeGapMs + kFirstSendTimeMs + kDelayAfterFirstPacketMs) *
|
| - 1000;
|
| - int64_t arrival_time_ms = send_time_us / 1000 + kOneWayDelayMs;
|
| - uint16_t sequence_number = i;
|
| - const MediaPacket media_packet(kFlowId, send_time_us, kPayloadSizeBytes,
|
| - sequence_number);
|
| - nada_receiver_.ReceivePacket(arrival_time_ms, media_packet);
|
| - }
|
| -
|
| - const size_t kTotalReceivedKb = 8 * kNumPackets * kPayloadSizeBytes;
|
| - const int64_t kCorrectedTimeWindowMs =
|
| - (kTimeWindowMs * kNumPackets) / (kNumPackets - 1);
|
| - EXPECT_EQ(nada_receiver_.RecentReceivingRate(),
|
| - kTotalReceivedKb / kCorrectedTimeWindowMs);
|
| -}
|
| -
|
| -TEST_F(NadaReceiverSideTest, ReceivingRateDuplicatedPackets) {
|
| - const size_t kPayloadSizeBytes = 500 * 1000;
|
| - const int64_t kSendTimeUs = 300 * 1000;
|
| - const int64_t kArrivalTimeMs = kSendTimeUs / 1000 + 100;
|
| - const uint16_t kSequenceNumber = 1;
|
| - const int64_t kTimeWindowMs = NadaBweReceiver::kReceivingRateTimeWindowMs;
|
| -
|
| - // Insert the same packet twice.
|
| - for (int i = 0; i < 2; ++i) {
|
| - const MediaPacket media_packet(kFlowId, kSendTimeUs + 50 * i,
|
| - kPayloadSizeBytes, kSequenceNumber);
|
| - nada_receiver_.ReceivePacket(kArrivalTimeMs + 50 * i, media_packet);
|
| - }
|
| - // Should be counted only once.
|
| - const size_t kReceivingRateKbps = 8 * kPayloadSizeBytes / kTimeWindowMs;
|
| -
|
| - EXPECT_EQ(nada_receiver_.RecentReceivingRate(), kReceivingRateKbps);
|
| + EXPECT_NEAR(nada_receiver_.RecentKbps(), kReceivingRateKbps,
|
| + static_cast<float>(kReceivingRateKbps) / 100.0f);
|
| }
|
|
|
| TEST_F(NadaReceiverSideTest, PacketLossNoPackets) {
|
|
|