OLD | NEW |
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 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 if (min_bitrate_needed_kbps > target_bitrate_kbps) | 383 if (min_bitrate_needed_kbps > target_bitrate_kbps) |
384 target_bitrate_kbps = min_bitrate_needed_kbps; | 384 target_bitrate_kbps = min_bitrate_needed_kbps; |
385 } | 385 } |
386 | 386 |
387 media_budget_->set_target_rate_kbps(target_bitrate_kbps); | 387 media_budget_->set_target_rate_kbps(target_bitrate_kbps); |
388 | 388 |
389 int64_t delta_time_ms = std::min(kMaxIntervalTimeMs, elapsed_time_ms); | 389 int64_t delta_time_ms = std::min(kMaxIntervalTimeMs, elapsed_time_ms); |
390 UpdateBytesPerInterval(delta_time_ms); | 390 UpdateBytesPerInterval(delta_time_ms); |
391 } | 391 } |
392 | 392 |
393 int probe_cluster_id = prober_->IsProbing() ? prober_->CurrentClusterId() | 393 bool is_probing = prober_->IsProbing(); |
394 : PacketInfo::kNotAProbe; | 394 int probe_cluster_id = is_probing ? prober_->CurrentClusterId() |
| 395 : PacketInfo::kNotAProbe; |
395 while (!packets_->Empty()) { | 396 while (!packets_->Empty()) { |
396 if (media_budget_->bytes_remaining() == 0 && !prober_->IsProbing()) | 397 if (media_budget_->bytes_remaining() == 0 && !is_probing) |
397 return; | 398 return; |
398 | 399 |
399 // Since we need to release the lock in order to send, we first pop the | 400 // Since we need to release the lock in order to send, we first pop the |
400 // element from the priority queue but keep it in storage, so that we can | 401 // element from the priority queue but keep it in storage, so that we can |
401 // reinsert it if send fails. | 402 // reinsert it if send fails. |
402 const paced_sender::Packet& packet = packets_->BeginPop(); | 403 const paced_sender::Packet& packet = packets_->BeginPop(); |
403 | 404 |
404 if (SendPacket(packet, probe_cluster_id)) { | 405 if (SendPacket(packet, probe_cluster_id)) { |
405 // Send succeeded, remove it from the queue. | 406 // Send succeeded, remove it from the queue. |
406 packets_->FinalizePop(packet); | 407 packets_->FinalizePop(packet); |
407 if (prober_->IsProbing()) | 408 if (is_probing) |
408 return; | 409 return; |
409 } else { | 410 } else { |
410 // Send failed, put it back into the queue. | 411 // Send failed, put it back into the queue. |
411 packets_->CancelPop(packet); | 412 packets_->CancelPop(packet); |
412 return; | 413 return; |
413 } | 414 } |
414 } | 415 } |
415 | 416 |
416 // TODO(holmer): Remove the paused_ check when issue 5307 has been fixed. | 417 // TODO(holmer): Remove the paused_ check when issue 5307 has been fixed. |
417 if (paused_ || !packets_->Empty()) | 418 if (paused_ || !packets_->Empty()) |
418 return; | 419 return; |
419 | 420 |
420 size_t padding_needed; | 421 size_t padding_needed; |
421 if (prober_->IsProbing()) { | 422 if (is_probing) { |
422 padding_needed = prober_->RecommendedPacketSize(); | 423 padding_needed = prober_->RecommendedPacketSize(); |
423 } else { | 424 } else { |
424 padding_needed = padding_budget_->bytes_remaining(); | 425 padding_needed = padding_budget_->bytes_remaining(); |
425 } | 426 } |
426 | 427 |
427 if (padding_needed > 0) | 428 if (padding_needed > 0) |
428 SendPadding(padding_needed, probe_cluster_id); | 429 SendPadding(padding_needed, probe_cluster_id); |
429 } | 430 } |
430 | 431 |
431 bool PacedSender::SendPacket(const paced_sender::Packet& packet, | 432 bool PacedSender::SendPacket(const paced_sender::Packet& packet, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 media_budget_->UseBudget(bytes_sent); | 467 media_budget_->UseBudget(bytes_sent); |
467 padding_budget_->UseBudget(bytes_sent); | 468 padding_budget_->UseBudget(bytes_sent); |
468 } | 469 } |
469 } | 470 } |
470 | 471 |
471 void PacedSender::UpdateBytesPerInterval(int64_t delta_time_ms) { | 472 void PacedSender::UpdateBytesPerInterval(int64_t delta_time_ms) { |
472 media_budget_->IncreaseBudget(delta_time_ms); | 473 media_budget_->IncreaseBudget(delta_time_ms); |
473 padding_budget_->IncreaseBudget(delta_time_ms); | 474 padding_budget_->IncreaseBudget(delta_time_ms); |
474 } | 475 } |
475 } // namespace webrtc | 476 } // namespace webrtc |
OLD | NEW |