Chromium Code Reviews| Index: webrtc/modules/bitrate_controller/send_side_bandwidth_estimation_unittest.cc |
| diff --git a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation_unittest.cc b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation_unittest.cc |
| index 75384ae28408149a3d0242ea0a191aebb42f61f8..846300f920dbf23b8dee01e72b2a30f44438051e 100644 |
| --- a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation_unittest.cc |
| +++ b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation_unittest.cc |
| @@ -44,4 +44,53 @@ TEST(SendSideBweTest, InitialRembWithProbing) { |
| bwe.CurrentEstimate(&bitrate, &fraction_loss, &rtt); |
| EXPECT_EQ(kRembBps, bitrate); |
| } |
| + |
| +TEST(SendSideBweTest, DoesntReapplyBitrateDecreaseWithoutFollowingRemb) { |
| + SendSideBandwidthEstimation bwe; |
| + static const int kMinBitrateBps = 100000; |
| + static const int kInitialBitrateBps = 1000000; |
| + bwe.SetMinMaxBitrate(kMinBitrateBps, 1500000); |
| + bwe.SetSendBitrate(kInitialBitrateBps); |
| + |
| + static const uint8_t kFractionLoss = 128; |
| + static const int64_t kRttMs = 50; |
| + |
| + int64_t now_ms = 0; |
| + int bitrate_bps; |
| + uint8_t fraction_loss; |
| + int64_t rtt_ms; |
| + bwe.CurrentEstimate(&bitrate_bps, &fraction_loss, &rtt_ms); |
| + EXPECT_EQ(kInitialBitrateBps, bitrate_bps); |
| + EXPECT_EQ(0, fraction_loss); |
| + EXPECT_EQ(0, rtt_ms); |
| + |
| + // Signal heavy loss to go down in bitrate. |
| + bwe.UpdateReceiverBlock(kFractionLoss, kRttMs, 100, now_ms); |
| + // Trigger an update 2 seconds later to not be rate limited. |
| + now_ms += 2000; |
| + bwe.UpdateEstimate(now_ms); |
| + |
| + bwe.CurrentEstimate(&bitrate_bps, &fraction_loss, &rtt_ms); |
| + EXPECT_LT(bitrate_bps, kInitialBitrateBps); |
| + EXPECT_GT(bitrate_bps, kMinBitrateBps); |
|
stefan-webrtc
2015/10/22 09:20:47
GE
pbos-webrtc
2015/10/22 13:16:06
GT or the next check doesn't verify anything (we c
stefan-webrtc
2015/10/22 13:38:04
I see, good point. Add a comment :)
pbos-webrtc
2015/10/22 13:49:19
Done.
|
| + EXPECT_EQ(kFractionLoss, fraction_loss); |
| + EXPECT_EQ(kRttMs, rtt_ms); |
| + |
| + // Triggering an update shouldn't apply further downgrade nor upgrade since |
| + // there's no intermediate receiver block received indicating whether this is |
| + // currently good or not. |
| + int last_bitrate_bps = bitrate_bps; |
| + // Trigger an update 2 seconds later to not be rate limited (but it still |
| + // shouldn't update). |
| + now_ms += 2000; |
| + bwe.UpdateEstimate(now_ms); |
| + bwe.CurrentEstimate(&bitrate_bps, &fraction_loss, &rtt_ms); |
| + |
| + EXPECT_EQ(last_bitrate_bps, bitrate_bps); |
| + // The old loss rate should still be applied though. |
| + EXPECT_EQ(kFractionLoss, fraction_loss); |
| + EXPECT_EQ(kRttMs, rtt_ms); |
| + |
| +} |
| + |
| } // namespace webrtc |