Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(469)

Side by Side Diff: webrtc/call/bitrate_allocator_unittest.cc

Issue 2070343002: Remove ViEncoder::Pause / Start (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed comments. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/call/bitrate_allocator.cc ('k') | webrtc/modules/video_coding/generic_encoder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 std::unique_ptr<BitrateAllocator> allocator_; 56 std::unique_ptr<BitrateAllocator> allocator_;
57 }; 57 };
58 58
59 TEST_F(BitrateAllocatorTest, UpdatingBitrateObserver) { 59 TEST_F(BitrateAllocatorTest, UpdatingBitrateObserver) {
60 TestBitrateObserver bitrate_observer; 60 TestBitrateObserver bitrate_observer;
61 const uint32_t kMinSendBitrateBps = 100000; 61 const uint32_t kMinSendBitrateBps = 100000;
62 const uint32_t kPadUpToBitrateBps = 50000; 62 const uint32_t kPadUpToBitrateBps = 50000;
63 63
64 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(kMinSendBitrateBps, 64 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(kMinSendBitrateBps,
65 kPadUpToBitrateBps)); 65 kPadUpToBitrateBps));
66 int start_bitrate = allocator_->AddObserver( 66 allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 1500000,
67 &bitrate_observer, kMinSendBitrateBps, 1500000, kPadUpToBitrateBps, true); 67 kPadUpToBitrateBps, true);
68 EXPECT_EQ(300000, start_bitrate); 68 EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer));
69 allocator_->OnNetworkChanged(200000, 0, 0); 69 allocator_->OnNetworkChanged(200000, 0, 0);
70 EXPECT_EQ(200000u, bitrate_observer.last_bitrate_bps_); 70 EXPECT_EQ(200000, allocator_->GetStartBitrate(&bitrate_observer));
71 71
72 // TODO(pbos): Expect capping to 1.5M instead of 3M when not boosting the max 72 // TODO(pbos): Expect capping to 1.5M instead of 3M when not boosting the max
73 // bitrate for FEC/retransmissions (see todo in BitrateAllocator). 73 // bitrate for FEC/retransmissions (see todo in BitrateAllocator).
74 allocator_->OnNetworkChanged(4000000, 0, 0); 74 allocator_->OnNetworkChanged(4000000, 0, 0);
75 EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_); 75 EXPECT_EQ(3000000, allocator_->GetStartBitrate(&bitrate_observer));
76 76
77 // Expect |max_padding_bitrate_bps| to change to 0 if the observer is updated. 77 // Expect |max_padding_bitrate_bps| to change to 0 if the observer is updated.
78 EXPECT_CALL(limit_observer_, 78 EXPECT_CALL(limit_observer_,
79 OnAllocationLimitsChanged(kMinSendBitrateBps, 0)); 79 OnAllocationLimitsChanged(kMinSendBitrateBps, 0));
80 start_bitrate = allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 80 allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 4000000, 0,
81 4000000, 0, true); 81 true);
82 EXPECT_EQ(4000000, start_bitrate); 82 EXPECT_EQ(4000000, allocator_->GetStartBitrate(&bitrate_observer));
83 83
84 EXPECT_CALL(limit_observer_, 84 EXPECT_CALL(limit_observer_,
85 OnAllocationLimitsChanged(kMinSendBitrateBps, 0)); 85 OnAllocationLimitsChanged(kMinSendBitrateBps, 0));
86 start_bitrate = allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 86 allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 1500000, 0,
87 1500000, 0, true); 87 true);
88 EXPECT_EQ(3000000, start_bitrate); 88 EXPECT_EQ(3000000, allocator_->GetStartBitrate(&bitrate_observer));
89 EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_); 89 EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_);
90 allocator_->OnNetworkChanged(1500000, 0, 0); 90 allocator_->OnNetworkChanged(1500000, 0, 0);
91 EXPECT_EQ(1500000u, bitrate_observer.last_bitrate_bps_); 91 EXPECT_EQ(1500000u, bitrate_observer.last_bitrate_bps_);
92 } 92 }
93 93
94 TEST_F(BitrateAllocatorTest, TwoBitrateObserversOneRtcpObserver) { 94 TEST_F(BitrateAllocatorTest, TwoBitrateObserversOneRtcpObserver) {
95 TestBitrateObserver bitrate_observer_1; 95 TestBitrateObserver bitrate_observer_1;
96 TestBitrateObserver bitrate_observer_2; 96 TestBitrateObserver bitrate_observer_2;
97 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(100000, 0)); 97 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(100000, 0));
98 int start_bitrate =
99 allocator_->AddObserver(&bitrate_observer_1, 100000, 300000, 0, true); 98 allocator_->AddObserver(&bitrate_observer_1, 100000, 300000, 0, true);
100 EXPECT_EQ(300000, start_bitrate); 99 EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_1));
101 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(100000 + 200000, 0)); 100 EXPECT_CALL(limit_observer_,
102 start_bitrate = 101 OnAllocationLimitsChanged(100000 + 200000, 0));
103 allocator_->AddObserver(&bitrate_observer_2, 200000, 300000, 0, true); 102 allocator_->AddObserver(&bitrate_observer_2, 200000, 300000, 0, true);
104 EXPECT_EQ(200000, start_bitrate); 103 EXPECT_EQ(200000, allocator_->GetStartBitrate(&bitrate_observer_2));
105 104
106 // Test too low start bitrate, hence lower than sum of min. Min bitrates will 105 // Test too low start bitrate, hence lower than sum of min. Min bitrates
107 // be allocated to all observers. 106 // will
108 allocator_->OnNetworkChanged(200000, 0, 50); 107 // be allocated to all observers.
109 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 108 allocator_->OnNetworkChanged(200000, 0, 50);
110 EXPECT_EQ(0, bitrate_observer_1.last_fraction_loss_); 109 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
111 EXPECT_EQ(50, bitrate_observer_1.last_rtt_ms_); 110 EXPECT_EQ(0, bitrate_observer_1.last_fraction_loss_);
112 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); 111 EXPECT_EQ(50, bitrate_observer_1.last_rtt_ms_);
113 EXPECT_EQ(0, bitrate_observer_2.last_fraction_loss_); 112 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_);
114 EXPECT_EQ(50, bitrate_observer_2.last_rtt_ms_); 113 EXPECT_EQ(0, bitrate_observer_2.last_fraction_loss_);
114 EXPECT_EQ(50, bitrate_observer_2.last_rtt_ms_);
115 115
116 // Test a bitrate which should be distributed equally. 116 // Test a bitrate which should be distributed equally.
117 allocator_->OnNetworkChanged(500000, 0, 50); 117 allocator_->OnNetworkChanged(500000, 0, 50);
118 const uint32_t kBitrateToShare = 500000 - 200000 - 100000; 118 const uint32_t kBitrateToShare = 500000 - 200000 - 100000;
119 EXPECT_EQ(100000u + kBitrateToShare / 2, 119 EXPECT_EQ(100000u + kBitrateToShare / 2,
120 bitrate_observer_1.last_bitrate_bps_); 120 bitrate_observer_1.last_bitrate_bps_);
121 EXPECT_EQ(200000u + kBitrateToShare / 2, 121 EXPECT_EQ(200000u + kBitrateToShare / 2,
122 bitrate_observer_2.last_bitrate_bps_); 122 bitrate_observer_2.last_bitrate_bps_);
123 123
124 // Limited by 2x max bitrates since we leave room for FEC and retransmissions. 124 // Limited by 2x max bitrates since we leave room for FEC and
125 allocator_->OnNetworkChanged(1500000, 0, 50); 125 // retransmissions.
126 EXPECT_EQ(600000u, bitrate_observer_1.last_bitrate_bps_); 126 allocator_->OnNetworkChanged(1500000, 0, 50);
127 EXPECT_EQ(600000u, bitrate_observer_2.last_bitrate_bps_); 127 EXPECT_EQ(600000u, bitrate_observer_1.last_bitrate_bps_);
128 EXPECT_EQ(600000u, bitrate_observer_2.last_bitrate_bps_);
128 129
129 // Verify that if the bandwidth estimate is set to zero, the allocated rate is 130 // Verify that if the bandwidth estimate is set to zero, the allocated
130 // zero. 131 // rate is
131 allocator_->OnNetworkChanged(0, 0, 50); 132 // zero.
132 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 133 allocator_->OnNetworkChanged(0, 0, 50);
133 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_); 134 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
135 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_);
134 } 136 }
135 137
136 TEST_F(BitrateAllocatorTest, RemoveObserverTriggersLimitObserver) { 138 TEST_F(BitrateAllocatorTest, RemoveObserverTriggersLimitObserver) {
137 TestBitrateObserver bitrate_observer; 139 TestBitrateObserver bitrate_observer;
138 const uint32_t kMinSendBitrateBps = 100000; 140 const uint32_t kMinSendBitrateBps = 100000;
139 const uint32_t kPadUpToBitrateBps = 50000; 141 const uint32_t kPadUpToBitrateBps = 50000;
140 142
141 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(kMinSendBitrateBps, 143 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(kMinSendBitrateBps,
142 kPadUpToBitrateBps)); 144 kPadUpToBitrateBps));
143 allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 1500000, 145 allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 1500000,
(...skipping 14 matching lines...) Expand all
158 std::unique_ptr<BitrateAllocator> allocator_; 160 std::unique_ptr<BitrateAllocator> allocator_;
159 }; 161 };
160 162
161 // The following three tests verify enforcing a minimum bitrate works as 163 // The following three tests verify enforcing a minimum bitrate works as
162 // intended. 164 // intended.
163 TEST_F(BitrateAllocatorTestNoEnforceMin, OneBitrateObserver) { 165 TEST_F(BitrateAllocatorTestNoEnforceMin, OneBitrateObserver) {
164 TestBitrateObserver bitrate_observer_1; 166 TestBitrateObserver bitrate_observer_1;
165 // Expect OnAllocationLimitsChanged with |min_send_bitrate_bps| = 0 since 167 // Expect OnAllocationLimitsChanged with |min_send_bitrate_bps| = 0 since
166 // AddObserver is called with |enforce_min_bitrate| = false. 168 // AddObserver is called with |enforce_min_bitrate| = false.
167 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0)); 169 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0));
168 int start_bitrate =
169 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, false); 170 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, false);
170 EXPECT_EQ(300000, start_bitrate); 171 EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_1));
171 172
172 // High BWE. 173 // High BWE.
173 allocator_->OnNetworkChanged(150000, 0, 0); 174 allocator_->OnNetworkChanged(150000, 0, 0);
174 EXPECT_EQ(150000u, bitrate_observer_1.last_bitrate_bps_); 175 EXPECT_EQ(150000u, bitrate_observer_1.last_bitrate_bps_);
175 176
176 // Low BWE. 177 // Low BWE.
177 allocator_->OnNetworkChanged(10000, 0, 0); 178 allocator_->OnNetworkChanged(10000, 0, 0);
178 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 179 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
179 180
180 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0)); 181 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0));
181 allocator_->RemoveObserver(&bitrate_observer_1); 182 allocator_->RemoveObserver(&bitrate_observer_1);
182 } 183 }
183 184
184 TEST_F(BitrateAllocatorTestNoEnforceMin, ThreeBitrateObservers) { 185 TEST_F(BitrateAllocatorTestNoEnforceMin, ThreeBitrateObservers) {
185 TestBitrateObserver bitrate_observer_1; 186 TestBitrateObserver bitrate_observer_1;
186 TestBitrateObserver bitrate_observer_2; 187 TestBitrateObserver bitrate_observer_2;
187 TestBitrateObserver bitrate_observer_3; 188 TestBitrateObserver bitrate_observer_3;
188 // Set up the observers with min bitrates at 100000, 200000, and 300000. 189 // Set up the observers with min bitrates at 100000, 200000, and 300000.
189 int start_bitrate = 190 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, false);
190 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, false); 191 EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_1));
191 EXPECT_EQ(300000, start_bitrate);
192 192
193 start_bitrate = 193 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, 0, false);
194 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, 0, false); 194 EXPECT_EQ(200000, allocator_->GetStartBitrate(&bitrate_observer_2));
195 EXPECT_EQ(200000, start_bitrate);
196 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 195 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
197 196
198 start_bitrate = 197 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, 0, false);
199 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, 0, false); 198 EXPECT_EQ(0, allocator_->GetStartBitrate(&bitrate_observer_3));
200 EXPECT_EQ(0, start_bitrate);
201 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 199 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
202 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); 200 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_);
203 201
204 // High BWE. Make sure the controllers get a fair share of the surplus (i.e., 202 // High BWE. Make sure the controllers get a fair share of the surplus (i.e.,
205 // what is left after each controller gets its min rate). 203 // what is left after each controller gets its min rate).
206 allocator_->OnNetworkChanged(690000, 0, 0); 204 allocator_->OnNetworkChanged(690000, 0, 0);
207 // Verify that each observer gets its min rate (sum of min rates is 600000), 205 // Verify that each observer gets its min rate (sum of min rates is 600000),
208 // and that the remaining 90000 is divided equally among the three. 206 // and that the remaining 90000 is divided equally among the three.
209 uint32_t bitrate_to_share = 690000u - 100000u - 200000u - 300000u; 207 uint32_t bitrate_to_share = 690000u - 100000u - 200000u - 300000u;
210 EXPECT_EQ(100000u + bitrate_to_share / 3, 208 EXPECT_EQ(100000u + bitrate_to_share / 3,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 240
243 allocator_->RemoveObserver(&bitrate_observer_1); 241 allocator_->RemoveObserver(&bitrate_observer_1);
244 allocator_->RemoveObserver(&bitrate_observer_2); 242 allocator_->RemoveObserver(&bitrate_observer_2);
245 allocator_->RemoveObserver(&bitrate_observer_3); 243 allocator_->RemoveObserver(&bitrate_observer_3);
246 } 244 }
247 245
248 TEST_F(BitrateAllocatorTest, ThreeBitrateObserversLowBweEnforceMin) { 246 TEST_F(BitrateAllocatorTest, ThreeBitrateObserversLowBweEnforceMin) {
249 TestBitrateObserver bitrate_observer_1; 247 TestBitrateObserver bitrate_observer_1;
250 TestBitrateObserver bitrate_observer_2; 248 TestBitrateObserver bitrate_observer_2;
251 TestBitrateObserver bitrate_observer_3; 249 TestBitrateObserver bitrate_observer_3;
252 int start_bitrate =
253 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, true);
254 EXPECT_EQ(300000, start_bitrate);
255 250
256 start_bitrate = 251 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, true);
257 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, 0, true); 252 EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_1));
258 EXPECT_EQ(200000, start_bitrate); 253
254 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, 0, true);
255 EXPECT_EQ(200000, allocator_->GetStartBitrate(&bitrate_observer_2));
259 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 256 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
260 257
261 start_bitrate =
262 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, 0, true); 258 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, 0, true);
263 EXPECT_EQ(300000, start_bitrate); 259 EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_3));
264 EXPECT_EQ(100000, static_cast<int>(bitrate_observer_1.last_bitrate_bps_)); 260 EXPECT_EQ(100000, static_cast<int>(bitrate_observer_1.last_bitrate_bps_));
265 EXPECT_EQ(200000, static_cast<int>(bitrate_observer_2.last_bitrate_bps_)); 261 EXPECT_EQ(200000, static_cast<int>(bitrate_observer_2.last_bitrate_bps_));
266 262
267 // Low BWE. Verify that all observers still get their respective min bitrate. 263 // Low BWE. Verify that all observers still get their respective min
268 allocator_->OnNetworkChanged(1000, 0, 0); 264 // bitrate.
269 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); // Min cap. 265 allocator_->OnNetworkChanged(1000, 0, 0);
270 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); // Min cap. 266 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); // Min cap.
271 EXPECT_EQ(300000u, bitrate_observer_3.last_bitrate_bps_); // Min cap. 267 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); // Min cap.
268 EXPECT_EQ(300000u, bitrate_observer_3.last_bitrate_bps_); // Min cap.
272 269
273 allocator_->RemoveObserver(&bitrate_observer_1); 270 allocator_->RemoveObserver(&bitrate_observer_1);
274 allocator_->RemoveObserver(&bitrate_observer_2); 271 allocator_->RemoveObserver(&bitrate_observer_2);
275 allocator_->RemoveObserver(&bitrate_observer_3); 272 allocator_->RemoveObserver(&bitrate_observer_3);
276 } 273 }
277 274
278 TEST_F(BitrateAllocatorTest, AddObserverWhileNetworkDown) { 275 TEST_F(BitrateAllocatorTest, AddObserverWhileNetworkDown) {
279 TestBitrateObserver bitrate_observer_1; 276 TestBitrateObserver bitrate_observer_1;
280 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000, 0)); 277 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000, 0));
281 int start_bitrate = 278
282 allocator_->AddObserver(&bitrate_observer_1, 50000, 400000, 0, true); 279 allocator_->AddObserver(&bitrate_observer_1, 50000, 400000, 0, true);
283 EXPECT_EQ(300000, start_bitrate); 280 EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_1));
284 281
285 // Set network down, ie, no available bitrate. 282 // Set network down, ie, no available bitrate.
286 allocator_->OnNetworkChanged(0, 0, 0); 283 allocator_->OnNetworkChanged(0, 0, 0);
287 284
288 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 285 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
289 286
290 TestBitrateObserver bitrate_observer_2; 287 TestBitrateObserver bitrate_observer_2;
291 // Adding an observer while the network is down should not affect the limits. 288 // Adding an observer while the network is down should not affect the limits.
292 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000 + 50000, 0)); 289 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000 + 50000, 0));
293 start_bitrate = 290 allocator_->AddObserver(&bitrate_observer_2, 50000, 400000, 0, true);
294 allocator_->AddObserver(&bitrate_observer_2, 50000, 400000, 0, true);
295 291
296 // Expect the start_bitrate to be set as if the network was still up but that 292 // Expect the start_bitrate to be set as if the network was still up but that
297 // the new observer have been notified that the network is down. 293 // the new observer have been notified that the network is down.
298 EXPECT_EQ(300000 / 2, start_bitrate); 294 EXPECT_EQ(300000 / 2, allocator_->GetStartBitrate(&bitrate_observer_2));
299 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 295 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
300 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_); 296 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_);
301 297
302 // Set network back up. 298 // Set network back up.
303 allocator_->OnNetworkChanged(1500000, 0, 50); 299 allocator_->OnNetworkChanged(1500000, 0, 50);
304 EXPECT_EQ(750000u, bitrate_observer_1.last_bitrate_bps_); 300 EXPECT_EQ(750000u, bitrate_observer_1.last_bitrate_bps_);
305 EXPECT_EQ(750000u, bitrate_observer_2.last_bitrate_bps_); 301 EXPECT_EQ(750000u, bitrate_observer_2.last_bitrate_bps_);
306 } 302 }
307 303
308 TEST_F(BitrateAllocatorTest, MixedEnforecedConfigs) { 304 TEST_F(BitrateAllocatorTest, MixedEnforecedConfigs) {
309 TestBitrateObserver enforced_observer; 305 TestBitrateObserver enforced_observer;
310 int start_bitrate =
311 allocator_->AddObserver(&enforced_observer, 6000, 30000, 0, true); 306 allocator_->AddObserver(&enforced_observer, 6000, 30000, 0, true);
312 EXPECT_EQ(60000, start_bitrate); 307 EXPECT_EQ(60000, allocator_->GetStartBitrate(&enforced_observer));
313 308
314 TestBitrateObserver not_enforced_observer; 309 TestBitrateObserver not_enforced_observer;
315 start_bitrate =
316 allocator_->AddObserver(&not_enforced_observer, 30000, 2500000, 0, false); 310 allocator_->AddObserver(&not_enforced_observer, 30000, 2500000, 0, false);
317 EXPECT_EQ(270000, start_bitrate); 311 EXPECT_EQ(270000, allocator_->GetStartBitrate(&not_enforced_observer));
318 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_); 312 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_);
319 313
320 allocator_->OnNetworkChanged(36000, 0, 50); 314 allocator_->OnNetworkChanged(36000, 0, 50);
321 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_); 315 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_);
322 EXPECT_EQ(30000u, not_enforced_observer.last_bitrate_bps_); 316 EXPECT_EQ(30000u, not_enforced_observer.last_bitrate_bps_);
323 317
324 allocator_->OnNetworkChanged(35000, 0, 50); 318 allocator_->OnNetworkChanged(35000, 0, 50);
325 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_); 319 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_);
326 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_); 320 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_);
327 321
328 allocator_->OnNetworkChanged(5000, 0, 50); 322 allocator_->OnNetworkChanged(5000, 0, 50);
329 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_); 323 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_);
330 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_); 324 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_);
331 325
332 allocator_->OnNetworkChanged(36000, 0, 50); 326 allocator_->OnNetworkChanged(36000, 0, 50);
333 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_); 327 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_);
334 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_); 328 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_);
335 329
336 allocator_->OnNetworkChanged(55000, 0, 50); 330 allocator_->OnNetworkChanged(55000, 0, 50);
337 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_); 331 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_);
338 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_); 332 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_);
339 333
340 allocator_->OnNetworkChanged(56000, 0, 50); 334 allocator_->OnNetworkChanged(56000, 0, 50);
341 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_); 335 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_);
342 EXPECT_EQ(50000u, not_enforced_observer.last_bitrate_bps_); 336 EXPECT_EQ(50000u, not_enforced_observer.last_bitrate_bps_);
343 337
344 allocator_->OnNetworkChanged(56000, 0, 50); 338 allocator_->OnNetworkChanged(56000, 0, 50);
345 EXPECT_EQ(16000u, enforced_observer.last_bitrate_bps_); 339 EXPECT_EQ(16000u, enforced_observer.last_bitrate_bps_);
346 EXPECT_EQ(40000u, not_enforced_observer.last_bitrate_bps_); 340 EXPECT_EQ(40000u, not_enforced_observer.last_bitrate_bps_);
347 341
348 allocator_->RemoveObserver(&enforced_observer); 342 allocator_->RemoveObserver(&enforced_observer);
349 allocator_->RemoveObserver(&not_enforced_observer); 343 allocator_->RemoveObserver(&not_enforced_observer);
350 } 344 }
351 345
352 TEST_F(BitrateAllocatorTest, AvoidToggleAbsolute) { 346 TEST_F(BitrateAllocatorTest, AvoidToggleAbsolute) {
353 TestBitrateObserver observer; 347 TestBitrateObserver observer;
354 int start_bitrate =
355 allocator_->AddObserver(&observer, 30000, 300000, 0, false); 348 allocator_->AddObserver(&observer, 30000, 300000, 0, false);
356 EXPECT_EQ(300000, start_bitrate); 349 EXPECT_EQ(300000, allocator_->GetStartBitrate(&observer));
357 350
358 allocator_->OnNetworkChanged(30000, 0, 50); 351 allocator_->OnNetworkChanged(30000, 0, 50);
359 EXPECT_EQ(30000u, observer.last_bitrate_bps_); 352 EXPECT_EQ(30000u, observer.last_bitrate_bps_);
360 353
361 allocator_->OnNetworkChanged(20000, 0, 50); 354 allocator_->OnNetworkChanged(20000, 0, 50);
362 EXPECT_EQ(0u, observer.last_bitrate_bps_); 355 EXPECT_EQ(0u, observer.last_bitrate_bps_);
363 356
364 allocator_->OnNetworkChanged(30000, 0, 50); 357 allocator_->OnNetworkChanged(30000, 0, 50);
365 EXPECT_EQ(0u, observer.last_bitrate_bps_); 358 EXPECT_EQ(0u, observer.last_bitrate_bps_);
366 359
367 allocator_->OnNetworkChanged(49000, 0, 50); 360 allocator_->OnNetworkChanged(49000, 0, 50);
368 EXPECT_EQ(0u, observer.last_bitrate_bps_); 361 EXPECT_EQ(0u, observer.last_bitrate_bps_);
369 362
370 allocator_->OnNetworkChanged(50000, 0, 50); 363 allocator_->OnNetworkChanged(50000, 0, 50);
371 EXPECT_EQ(50000u, observer.last_bitrate_bps_); 364 EXPECT_EQ(50000u, observer.last_bitrate_bps_);
372 365
373 allocator_->OnNetworkChanged(30000, 0, 50); 366 allocator_->OnNetworkChanged(30000, 0, 50);
374 EXPECT_EQ(30000u, observer.last_bitrate_bps_); 367 EXPECT_EQ(30000u, observer.last_bitrate_bps_);
375 368
376 allocator_->RemoveObserver(&observer); 369 allocator_->RemoveObserver(&observer);
377 } 370 }
378 371
379 TEST_F(BitrateAllocatorTest, AvoidTogglePercent) { 372 TEST_F(BitrateAllocatorTest, AvoidTogglePercent) {
380 TestBitrateObserver observer; 373 TestBitrateObserver observer;
381 int start_bitrate =
382 allocator_->AddObserver(&observer, 300000, 600000, 0, false); 374 allocator_->AddObserver(&observer, 300000, 600000, 0, false);
383 EXPECT_EQ(300000, start_bitrate); 375 EXPECT_EQ(300000, allocator_->GetStartBitrate(&observer));
384 376
385 allocator_->OnNetworkChanged(300000, 0, 50); 377 allocator_->OnNetworkChanged(300000, 0, 50);
386 EXPECT_EQ(300000u, observer.last_bitrate_bps_); 378 EXPECT_EQ(300000u, observer.last_bitrate_bps_);
387 379
388 allocator_->OnNetworkChanged(200000, 0, 50); 380 allocator_->OnNetworkChanged(200000, 0, 50);
389 EXPECT_EQ(0u, observer.last_bitrate_bps_); 381 EXPECT_EQ(0u, observer.last_bitrate_bps_);
390 382
391 allocator_->OnNetworkChanged(300000, 0, 50); 383 allocator_->OnNetworkChanged(300000, 0, 50);
392 EXPECT_EQ(0u, observer.last_bitrate_bps_); 384 EXPECT_EQ(0u, observer.last_bitrate_bps_);
393 385
394 allocator_->OnNetworkChanged(329000, 0, 50); 386 allocator_->OnNetworkChanged(329000, 0, 50);
395 EXPECT_EQ(0u, observer.last_bitrate_bps_); 387 EXPECT_EQ(0u, observer.last_bitrate_bps_);
396 388
397 allocator_->OnNetworkChanged(330000, 0, 50); 389 allocator_->OnNetworkChanged(330000, 0, 50);
398 EXPECT_EQ(330000u, observer.last_bitrate_bps_); 390 EXPECT_EQ(330000u, observer.last_bitrate_bps_);
399 391
400 allocator_->OnNetworkChanged(300000, 0, 50); 392 allocator_->OnNetworkChanged(300000, 0, 50);
401 EXPECT_EQ(300000u, observer.last_bitrate_bps_); 393 EXPECT_EQ(300000u, observer.last_bitrate_bps_);
402 394
403 allocator_->RemoveObserver(&observer); 395 allocator_->RemoveObserver(&observer);
404 } 396 }
405 397
406 } // namespace webrtc 398 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/call/bitrate_allocator.cc ('k') | webrtc/modules/video_coding/generic_encoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698