| Index: webrtc/modules/pacing/paced_sender.cc
|
| diff --git a/webrtc/modules/pacing/paced_sender.cc b/webrtc/modules/pacing/paced_sender.cc
|
| index 7c24301b95f0d830af5effde988a9a182ac36d48..913dbfc2741637746922bef9c22409e49a82d831 100644
|
| --- a/webrtc/modules/pacing/paced_sender.cc
|
| +++ b/webrtc/modules/pacing/paced_sender.cc
|
| @@ -264,7 +264,9 @@ PacedSender::PacedSender(const Clock* clock,
|
| time_last_update_us_(clock->TimeInMicroseconds()),
|
| first_sent_packet_ms_(-1),
|
| packets_(new paced_sender::PacketQueue(clock)),
|
| - packet_counter_(0) {
|
| + packet_counter_(0),
|
| + pacing_factor_(kDefaultPaceMultiplier),
|
| + queue_time_limit(kMaxQueueLengthMs) {
|
| UpdateBudgetWithElapsedTime(kMinPacketLimitMs);
|
| }
|
|
|
| @@ -314,7 +316,7 @@ void PacedSender::SetEstimatedBitrate(uint32_t bitrate_bps) {
|
| std::min(estimated_bitrate_bps_ / 1000, max_padding_bitrate_kbps_));
|
| pacing_bitrate_kbps_ =
|
| std::max(min_send_bitrate_kbps_, estimated_bitrate_bps_ / 1000) *
|
| - kDefaultPaceMultiplier;
|
| + pacing_factor_;
|
| alr_detector_->SetEstimatedBitrate(bitrate_bps);
|
| }
|
|
|
| @@ -324,7 +326,7 @@ void PacedSender::SetSendBitrateLimits(int min_send_bitrate_bps,
|
| min_send_bitrate_kbps_ = min_send_bitrate_bps / 1000;
|
| pacing_bitrate_kbps_ =
|
| std::max(min_send_bitrate_kbps_, estimated_bitrate_bps_ / 1000) *
|
| - kDefaultPaceMultiplier;
|
| + pacing_factor_;
|
| max_padding_bitrate_kbps_ = padding_bitrate / 1000;
|
| padding_budget_->set_target_rate_kbps(
|
| std::min(estimated_bitrate_bps_ / 1000, max_padding_bitrate_kbps_));
|
| @@ -419,7 +421,7 @@ void PacedSender::Process() {
|
| // time constraint shall be met. Determine bitrate needed for that.
|
| packets_->UpdateQueueTime(clock_->TimeInMilliseconds());
|
| int64_t avg_time_left_ms = std::max<int64_t>(
|
| - 1, kMaxQueueLengthMs - packets_->AverageQueueTimeMs());
|
| + 1, queue_time_limit - packets_->AverageQueueTimeMs());
|
| int min_bitrate_needed_kbps =
|
| static_cast<int>(queue_size_bytes * 8 / avg_time_left_ms);
|
| if (min_bitrate_needed_kbps > target_bitrate_kbps)
|
| @@ -535,4 +537,15 @@ void PacedSender::UpdateBudgetWithBytesSent(size_t bytes_sent) {
|
| media_budget_->UseBudget(bytes_sent);
|
| padding_budget_->UseBudget(bytes_sent);
|
| }
|
| +
|
| +void PacedSender::SetPacingFactor(float pacing_factor) {
|
| + rtc::CritScope cs(&critsect_);
|
| + pacing_factor_ = pacing_factor;
|
| +}
|
| +
|
| +void PacedSender::SetQueueTimeLimit(int limit_ms) {
|
| + rtc::CritScope cs(&critsect_);
|
| + queue_time_limit = limit_ms;
|
| +}
|
| +
|
| } // namespace webrtc
|
|
|