summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/webrtc/modules/pacing/paced_sender.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/webrtc/modules/pacing/paced_sender.cc')
-rw-r--r--chromium/third_party/webrtc/modules/pacing/paced_sender.cc39
1 files changed, 15 insertions, 24 deletions
diff --git a/chromium/third_party/webrtc/modules/pacing/paced_sender.cc b/chromium/third_party/webrtc/modules/pacing/paced_sender.cc
index c46bd04ed73..e9f9bddced1 100644
--- a/chromium/third_party/webrtc/modules/pacing/paced_sender.cc
+++ b/chromium/third_party/webrtc/modules/pacing/paced_sender.cc
@@ -120,19 +120,16 @@ class IntervalBudget {
};
} // namespace paced_sender
-PacedSender::PacedSender(Callback* callback, int target_bitrate_kbps,
- float pace_multiplier)
+PacedSender::PacedSender(Callback* callback,
+ int max_bitrate_kbps,
+ int min_bitrate_kbps)
: callback_(callback),
- pace_multiplier_(pace_multiplier),
- enabled_(false),
+ enabled_(true),
paused_(false),
max_queue_length_ms_(kDefaultMaxQueueLengthMs),
critsect_(CriticalSectionWrapper::CreateCriticalSection()),
- media_budget_(new paced_sender::IntervalBudget(
- pace_multiplier_ * target_bitrate_kbps)),
- padding_budget_(new paced_sender::IntervalBudget(0)),
- // No padding until UpdateBitrate is called.
- pad_up_to_bitrate_budget_(new paced_sender::IntervalBudget(0)),
+ media_budget_(new paced_sender::IntervalBudget(max_bitrate_kbps)),
+ padding_budget_(new paced_sender::IntervalBudget(min_bitrate_kbps)),
time_last_update_(TickTime::Now()),
capture_time_ms_last_queued_(0),
capture_time_ms_last_sent_(0),
@@ -165,13 +162,11 @@ bool PacedSender::Enabled() const {
return enabled_;
}
-void PacedSender::UpdateBitrate(int target_bitrate_kbps,
- int max_padding_bitrate_kbps,
- int pad_up_to_bitrate_kbps) {
+void PacedSender::UpdateBitrate(int max_bitrate_kbps,
+ int min_bitrate_kbps) {
CriticalSectionScoped cs(critsect_.get());
- media_budget_->set_target_rate_kbps(pace_multiplier_ * target_bitrate_kbps);
- padding_budget_->set_target_rate_kbps(max_padding_bitrate_kbps);
- pad_up_to_bitrate_budget_->set_target_rate_kbps(pad_up_to_bitrate_kbps);
+ media_budget_->set_target_rate_kbps(max_bitrate_kbps);
+ padding_budget_->set_target_rate_kbps(min_bitrate_kbps);
}
bool PacedSender::SendPacket(Priority priority, uint32_t ssrc,
@@ -273,24 +268,21 @@ int32_t PacedSender::Process() {
if (high_priority_packets_->empty() &&
normal_priority_packets_->empty() &&
low_priority_packets_->empty() &&
- padding_budget_->bytes_remaining() > 0 &&
- pad_up_to_bitrate_budget_->bytes_remaining() > 0) {
- int padding_needed = std::min(
- padding_budget_->bytes_remaining(),
- pad_up_to_bitrate_budget_->bytes_remaining());
+ padding_budget_->bytes_remaining() > 0) {
+ int padding_needed = padding_budget_->bytes_remaining();
critsect_->Leave();
int bytes_sent = callback_->TimeToSendPadding(padding_needed);
critsect_->Enter();
media_budget_->UseBudget(bytes_sent);
padding_budget_->UseBudget(bytes_sent);
- pad_up_to_bitrate_budget_->UseBudget(bytes_sent);
}
}
return 0;
}
// MUST have critsect_ when calling.
-bool PacedSender::SendPacketFromList(paced_sender::PacketList* packet_list) {
+bool PacedSender::SendPacketFromList(paced_sender::PacketList* packet_list)
+ EXCLUSIVE_LOCKS_REQUIRED(critsect_.get()) {
paced_sender::Packet packet = GetNextPacketFromList(packet_list);
critsect_->Leave();
@@ -323,7 +315,6 @@ bool PacedSender::SendPacketFromList(paced_sender::PacketList* packet_list) {
void PacedSender::UpdateBytesPerInterval(uint32_t delta_time_ms) {
media_budget_->IncreaseBudget(delta_time_ms);
padding_budget_->IncreaseBudget(delta_time_ms);
- pad_up_to_bitrate_budget_->IncreaseBudget(delta_time_ms);
}
// MUST have critsect_ when calling.
@@ -387,7 +378,7 @@ paced_sender::Packet PacedSender::GetNextPacketFromList(
void PacedSender::UpdateMediaBytesSent(int num_bytes) {
time_last_send_ = TickTime::Now();
media_budget_->UseBudget(num_bytes);
- pad_up_to_bitrate_budget_->UseBudget(num_bytes);
+ padding_budget_->UseBudget(num_bytes);
}
} // namespace webrtc