OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 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 18 matching lines...) Expand all Loading... |
29 | 29 |
30 // Require a bitrate increase of max(10%, 20kbps) to resume paused streams. | 30 // Require a bitrate increase of max(10%, 20kbps) to resume paused streams. |
31 const double kToggleFactor = 0.1; | 31 const double kToggleFactor = 0.1; |
32 const uint32_t kMinToggleBitrateBps = 20000; | 32 const uint32_t kMinToggleBitrateBps = 20000; |
33 | 33 |
34 const int64_t kBweLogIntervalMs = 5000; | 34 const int64_t kBweLogIntervalMs = 5000; |
35 | 35 |
36 namespace { | 36 namespace { |
37 | 37 |
38 double MediaRatio(uint32_t allocated_bitrate, uint32_t protection_bitrate) { | 38 double MediaRatio(uint32_t allocated_bitrate, uint32_t protection_bitrate) { |
39 RTC_DCHECK_GT(allocated_bitrate, 0u); | 39 RTC_DCHECK_GT(allocated_bitrate, 0); |
40 if (protection_bitrate == 0) | 40 if (protection_bitrate == 0) |
41 return 1.0; | 41 return 1.0; |
42 | 42 |
43 uint32_t media_bitrate = allocated_bitrate - protection_bitrate; | 43 uint32_t media_bitrate = allocated_bitrate - protection_bitrate; |
44 return media_bitrate / static_cast<double>(allocated_bitrate); | 44 return media_bitrate / static_cast<double>(allocated_bitrate); |
45 } | 45 } |
46 } // namespace | 46 } // namespace |
47 | 47 |
48 BitrateAllocator::BitrateAllocator(LimitObserver* limit_observer) | 48 BitrateAllocator::BitrateAllocator(LimitObserver* limit_observer) |
49 : limit_observer_(limit_observer), | 49 : limit_observer_(limit_observer), |
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 ObserverSortingMap list_max_bitrates; | 375 ObserverSortingMap list_max_bitrates; |
376 for (const auto& observer_config : bitrate_observer_configs_) { | 376 for (const auto& observer_config : bitrate_observer_configs_) { |
377 if (include_zero_allocations || | 377 if (include_zero_allocations || |
378 allocation->at(observer_config.observer) != 0) { | 378 allocation->at(observer_config.observer) != 0) { |
379 list_max_bitrates.insert(std::pair<uint32_t, const ObserverConfig*>( | 379 list_max_bitrates.insert(std::pair<uint32_t, const ObserverConfig*>( |
380 observer_config.max_bitrate_bps, &observer_config)); | 380 observer_config.max_bitrate_bps, &observer_config)); |
381 } | 381 } |
382 } | 382 } |
383 auto it = list_max_bitrates.begin(); | 383 auto it = list_max_bitrates.begin(); |
384 while (it != list_max_bitrates.end()) { | 384 while (it != list_max_bitrates.end()) { |
385 RTC_DCHECK_GT(bitrate, 0u); | 385 RTC_DCHECK_GT(bitrate, 0); |
386 uint32_t extra_allocation = | 386 uint32_t extra_allocation = |
387 bitrate / static_cast<uint32_t>(list_max_bitrates.size()); | 387 bitrate / static_cast<uint32_t>(list_max_bitrates.size()); |
388 uint32_t total_allocation = | 388 uint32_t total_allocation = |
389 extra_allocation + allocation->at(it->second->observer); | 389 extra_allocation + allocation->at(it->second->observer); |
390 bitrate -= extra_allocation; | 390 bitrate -= extra_allocation; |
391 if (total_allocation > max_multiplier * it->first) { | 391 if (total_allocation > max_multiplier * it->first) { |
392 // There is more than we can fit for this observer, carry over to the | 392 // There is more than we can fit for this observer, carry over to the |
393 // remaining observers. | 393 // remaining observers. |
394 bitrate += total_allocation - max_multiplier * it->first; | 394 bitrate += total_allocation - max_multiplier * it->first; |
395 total_allocation = max_multiplier * it->first; | 395 total_allocation = max_multiplier * it->first; |
(...skipping 14 matching lines...) Expand all Loading... |
410 (bitrate - sum_min_bitrates) / | 410 (bitrate - sum_min_bitrates) / |
411 static_cast<uint32_t>(bitrate_observer_configs_.size()); | 411 static_cast<uint32_t>(bitrate_observer_configs_.size()); |
412 for (const auto& observer_config : bitrate_observer_configs_) { | 412 for (const auto& observer_config : bitrate_observer_configs_) { |
413 if (observer_config.min_bitrate_bps + extra_bitrate_per_observer < | 413 if (observer_config.min_bitrate_bps + extra_bitrate_per_observer < |
414 MinBitrateWithHysteresis(observer_config)) | 414 MinBitrateWithHysteresis(observer_config)) |
415 return false; | 415 return false; |
416 } | 416 } |
417 return true; | 417 return true; |
418 } | 418 } |
419 } // namespace webrtc | 419 } // namespace webrtc |
OLD | NEW |