OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 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 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 auto& scoring_point = controller_config.scoring_point(); | 246 auto& scoring_point = controller_config.scoring_point(); |
247 RTC_CHECK(scoring_point.has_uplink_bandwidth_bps()); | 247 RTC_CHECK(scoring_point.has_uplink_bandwidth_bps()); |
248 RTC_CHECK(scoring_point.has_uplink_packet_loss_fraction()); | 248 RTC_CHECK(scoring_point.has_uplink_packet_loss_fraction()); |
249 scoring_points[controller.get()] = std::make_pair<int, float>( | 249 scoring_points[controller.get()] = std::make_pair<int, float>( |
250 scoring_point.uplink_bandwidth_bps(), | 250 scoring_point.uplink_bandwidth_bps(), |
251 scoring_point.uplink_packet_loss_fraction()); | 251 scoring_point.uplink_packet_loss_fraction()); |
252 } | 252 } |
253 controllers.push_back(std::move(controller)); | 253 controllers.push_back(std::move(controller)); |
254 } | 254 } |
255 | 255 |
256 RTC_CHECK(controller_manager_config.has_min_reordering_time_ms()); | 256 if (scoring_points.size() == 0) { |
257 RTC_CHECK(controller_manager_config.has_min_reordering_squared_distance()); | 257 return std::unique_ptr<ControllerManagerImpl>(new ControllerManagerImpl( |
258 return std::unique_ptr<ControllerManagerImpl>(new ControllerManagerImpl( | 258 ControllerManagerImpl::Config(0, 0), std::move(controllers), |
259 ControllerManagerImpl::Config( | 259 scoring_points)); |
260 controller_manager_config.min_reordering_time_ms(), | 260 } else { |
261 controller_manager_config.min_reordering_squared_distance()), | 261 RTC_CHECK(controller_manager_config.has_min_reordering_time_ms()); |
262 std::move(controllers), scoring_points)); | 262 RTC_CHECK(controller_manager_config.has_min_reordering_squared_distance()); |
| 263 return std::unique_ptr<ControllerManagerImpl>(new ControllerManagerImpl( |
| 264 ControllerManagerImpl::Config( |
| 265 controller_manager_config.min_reordering_time_ms(), |
| 266 controller_manager_config.min_reordering_squared_distance()), |
| 267 std::move(controllers), scoring_points)); |
| 268 } |
| 269 |
263 #else | 270 #else |
264 RTC_NOTREACHED(); | 271 RTC_NOTREACHED(); |
265 return nullptr; | 272 return nullptr; |
266 #endif // WEBRTC_AUDIO_NETWORK_ADAPTOR_DEBUG_DUMP | 273 #endif // WEBRTC_AUDIO_NETWORK_ADAPTOR_DEBUG_DUMP |
267 } | 274 } |
268 | 275 |
269 ControllerManagerImpl::ControllerManagerImpl(const Config& config) | 276 ControllerManagerImpl::ControllerManagerImpl(const Config& config) |
270 : ControllerManagerImpl( | 277 : ControllerManagerImpl( |
271 config, | 278 config, |
272 std::vector<std::unique_ptr<Controller>>(), | 279 std::vector<std::unique_ptr<Controller>>(), |
(...skipping 14 matching lines...) Expand all Loading... |
287 controller_scoring_points_.insert(std::make_pair( | 294 controller_scoring_points_.insert(std::make_pair( |
288 controller_point.first, ScoringPoint(controller_point.second.first, | 295 controller_point.first, ScoringPoint(controller_point.second.first, |
289 controller_point.second.second))); | 296 controller_point.second.second))); |
290 } | 297 } |
291 } | 298 } |
292 | 299 |
293 ControllerManagerImpl::~ControllerManagerImpl() = default; | 300 ControllerManagerImpl::~ControllerManagerImpl() = default; |
294 | 301 |
295 std::vector<Controller*> ControllerManagerImpl::GetSortedControllers( | 302 std::vector<Controller*> ControllerManagerImpl::GetSortedControllers( |
296 const Controller::NetworkMetrics& metrics) { | 303 const Controller::NetworkMetrics& metrics) { |
297 int64_t now_ms = rtc::TimeMillis(); | 304 if (controller_scoring_points_.size() == 0) |
| 305 return default_sorted_controllers_; |
298 | 306 |
299 if (!metrics.uplink_bandwidth_bps || !metrics.uplink_packet_loss_fraction) | 307 if (!metrics.uplink_bandwidth_bps || !metrics.uplink_packet_loss_fraction) |
300 return sorted_controllers_; | 308 return sorted_controllers_; |
301 | 309 |
| 310 const int64_t now_ms = rtc::TimeMillis(); |
302 if (last_reordering_time_ms_ && | 311 if (last_reordering_time_ms_ && |
303 now_ms - *last_reordering_time_ms_ < config_.min_reordering_time_ms) | 312 now_ms - *last_reordering_time_ms_ < config_.min_reordering_time_ms) |
304 return sorted_controllers_; | 313 return sorted_controllers_; |
305 | 314 |
306 ScoringPoint scoring_point(*metrics.uplink_bandwidth_bps, | 315 ScoringPoint scoring_point(*metrics.uplink_bandwidth_bps, |
307 *metrics.uplink_packet_loss_fraction); | 316 *metrics.uplink_packet_loss_fraction); |
308 | 317 |
309 if (last_reordering_time_ms_ && | 318 if (last_reordering_time_ms_ && |
310 last_scoring_point_.SquaredDistanceTo(scoring_point) < | 319 last_scoring_point_.SquaredDistanceTo(scoring_point) < |
311 config_.min_reordering_squared_distance) | 320 config_.min_reordering_squared_distance) |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 NormalizeUplinkBandwidth(scoring_point.uplink_bandwidth_bps) - | 390 NormalizeUplinkBandwidth(scoring_point.uplink_bandwidth_bps) - |
382 NormalizeUplinkBandwidth(uplink_bandwidth_bps); | 391 NormalizeUplinkBandwidth(uplink_bandwidth_bps); |
383 float diff_normalized_packet_loss = | 392 float diff_normalized_packet_loss = |
384 NormalizePacketLossFraction(scoring_point.uplink_packet_loss_fraction) - | 393 NormalizePacketLossFraction(scoring_point.uplink_packet_loss_fraction) - |
385 NormalizePacketLossFraction(uplink_packet_loss_fraction); | 394 NormalizePacketLossFraction(uplink_packet_loss_fraction); |
386 return std::pow(diff_normalized_bitrate_bps, 2) + | 395 return std::pow(diff_normalized_bitrate_bps, 2) + |
387 std::pow(diff_normalized_packet_loss, 2); | 396 std::pow(diff_normalized_packet_loss, 2); |
388 } | 397 } |
389 | 398 |
390 } // namespace webrtc | 399 } // namespace webrtc |
OLD | NEW |