Index: webrtc/modules/pacing/paced_sender.cc |
diff --git a/webrtc/modules/pacing/paced_sender.cc b/webrtc/modules/pacing/paced_sender.cc |
index dcdf64e97e9bd8cfdf0e80891d2ef991354e08dd..943424360bb0cb9fbb94e8e073bc917c52848205 100644 |
--- a/webrtc/modules/pacing/paced_sender.cc |
+++ b/webrtc/modules/pacing/paced_sender.cc |
@@ -358,10 +358,9 @@ int32_t PacedSender::Process() { |
CriticalSectionScoped cs(critsect_.get()); |
int64_t elapsed_time_ms = (now_us - time_last_update_us_ + 500) / 1000; |
time_last_update_us_ = now_us; |
- if (paused_) |
- return 0; |
int target_bitrate_kbps = max_bitrate_kbps_; |
- if (elapsed_time_ms > 0) { |
+ // TODO(holmer): Remove the !paused_ check when issue 5307 has been fixed. |
+ if (!paused_ && elapsed_time_ms > 0) { |
size_t queue_size_bytes = packets_->SizeInBytes(); |
if (queue_size_bytes > 0) { |
// Assuming equal size packets and input/output rate, the average packet |
@@ -373,7 +372,7 @@ int32_t PacedSender::Process() { |
int min_bitrate_needed_kbps = |
static_cast<int>(queue_size_bytes * 8 / avg_time_left_ms); |
if (min_bitrate_needed_kbps > target_bitrate_kbps) |
- target_bitrate_kbps = min_bitrate_needed_kbps; |
+ target_bitrate_kbps = min_bitrate_needed_kbps; |
} |
media_budget_->set_target_rate_kbps(target_bitrate_kbps); |
@@ -389,7 +388,11 @@ int32_t PacedSender::Process() { |
// element from the priority queue but keep it in storage, so that we can |
// reinsert it if send fails. |
const paced_sender::Packet& packet = packets_->BeginPop(); |
- if (SendPacket(packet)) { |
+ |
+ // TODO(holmer): Because of this bug issue 5307 we have to send audio |
+ // packets even when the pacer is paused. Here we assume audio packets are |
+ // always high priority and that they are the only high priority packets. |
+ if ((!paused_ || packet.priority == kHighPriority) && SendPacket(packet)) { |
// Send succeeded, remove it from the queue. |
packets_->FinalizePop(packet); |
if (prober_->IsProbing()) |
@@ -401,7 +404,8 @@ int32_t PacedSender::Process() { |
} |
} |
- if (!packets_->Empty()) |
+ // TODO(holmer): Remove the paused_ check when issue 5307 has been fixed. |
+ if (paused_ || !packets_->Empty()) |
return 0; |
size_t padding_needed; |