webrtc_m130/modules/pacing/task_queue_paced_sender.cc

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

343 lines
12 KiB
C++
Raw Normal View History

/*
* Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "modules/pacing/task_queue_paced_sender.h"
#include <algorithm>
#include <utility>
Revert "Pacer: Reduce TQ wake up and improve packet size estimation" This reverts commit 37195cf2e577cc09ad1362d046b5c8a9b65d4f99. Reason for revert: Breaks downstream tests (more investigations and testing is necessary). Original change's description: > Pacer: Reduce TQ wake up and improve packet size estimation > > The TQ Pacer schedules delayed task according to target time of > PacingController. It drains all valid ProcessPackets() in single loop, > denies retired scheduled tasks, and round up the timeout to 1ms. > > This CL also improves packet size estimation in TQ Pacer by removing > zero initialization, and introduces `include_overhead_` configuration. > > Tests: > 1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > > 2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > > 3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > > Bug: webrtc:13417, webrtc:13437 > Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Henrik Boström <hbos@webrtc.org> > Commit-Queue: Erik Språng <sprang@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#36179} No-Try: True Bug: webrtc:13417, webrtc:13437 Change-Id: I5418d26d3978f21765ef38acfb002398e671e036 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/255301 Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#36185}
2022-03-14 09:13:41 +00:00
#include "absl/memory/memory.h"
#include "api/transport/network_types.h"
#include "rtc_base/checks.h"
#include "rtc_base/experiments/field_trial_parser.h"
#include "rtc_base/experiments/field_trial_units.h"
#include "rtc_base/system/unused.h"
Reland "Add trace of enqueued and sent RTP packets" This reverts commit 45bb717a2866c2d836b5332a24af0d09f2b30714. Reason for revert: Use #if RTC_TRACE_EVENTS_ENABLED to avoid unused variable. Original change's description: > Revert "Add trace of enqueued and sent RTP packets" > > This reverts commit 45b9192ad981dcdc12ad4aef087fff2195bd030c. > > Reason for revert: When tracing is disabled, this results in a clang warning (unused variable), which results in a build error since Werror is enabled by default. > > Original change's description: > > Add trace of enqueued and sent RTP packets > > > > This is useful in debugging the latency from a packet > > is enqueued until it's sent. > > > > Bug: webrtc:11617 > > Change-Id: Ic2f194334a2e178de221df3a0838481035bb3505 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176231 > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Johannes Kron <kron@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#31381} > > TBR=sprang@webrtc.org,kron@webrtc.org > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Bug: webrtc:11617 > Change-Id: I854c17e587c624691a0e5e3ec9fd38c2607eda84 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176380 > Commit-Queue: Casey Fischer <caseyfischer@google.com> > Reviewed-by: Adam Nathan <adamnathan@google.com> > Cr-Commit-Position: refs/heads/master@{#31399} TBR=sprang@webrtc.org,yujo@chromium.org,adamnathan@google.com,kron@webrtc.org,caseyfischer@google.com # Not skipping CQ checks because this is a reland. Bug: webrtc:11617 Change-Id: I9de7f7ed290481a51c161a693f5b2d5df7d2eae3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176367 Commit-Queue: Johannes Kron <kron@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Johannes Kron <kron@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31407}
2020-06-01 23:28:44 +00:00
#include "rtc_base/trace_event.h"
namespace webrtc {
namespace {
constexpr const char* kSlackedTaskQueuePacedSenderFieldTrial =
"WebRTC-SlackedTaskQueuePacedSender";
} // namespace
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
const int TaskQueuePacedSender::kNoPacketHoldback = -1;
TaskQueuePacedSender::SlackedPacerFlags::SlackedPacerFlags(
const FieldTrialsView& field_trials)
: allow_low_precision("Enabled"),
max_low_precision_expected_queue_time("max_queue_time"),
send_burst_interval("send_burst_interval") {
ParseFieldTrial({&allow_low_precision, &max_low_precision_expected_queue_time,
&send_burst_interval},
field_trials.Lookup(kSlackedTaskQueuePacedSenderFieldTrial));
}
TaskQueuePacedSender::TaskQueuePacedSender(
Clock* clock,
PacingController::PacketSender* packet_sender,
const FieldTrialsView& field_trials,
TaskQueueFactory* task_queue_factory,
TimeDelta max_hold_back_window,
int max_hold_back_window_in_packets)
: clock_(clock),
slacked_pacer_flags_(field_trials),
max_hold_back_window_(slacked_pacer_flags_.allow_low_precision
? PacingController::kMinSleepTime
: max_hold_back_window),
max_hold_back_window_in_packets_(slacked_pacer_flags_.allow_low_precision
? 0
: max_hold_back_window_in_packets),
pacing_controller_(clock, packet_sender, field_trials),
next_process_time_(Timestamp::MinusInfinity()),
is_started_(false),
is_shutdown_(false),
packet_size_(/*alpha=*/0.95),
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
include_overhead_(false),
task_queue_(task_queue_factory->CreateTaskQueue(
"TaskQueuePacedSender",
TaskQueueFactory::Priority::NORMAL)) {
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
RTC_DCHECK_GE(max_hold_back_window_, PacingController::kMinSleepTime);
if (slacked_pacer_flags_.allow_low_precision &&
slacked_pacer_flags_.send_burst_interval) {
pacing_controller_.SetSendBurstInterval(
slacked_pacer_flags_.send_burst_interval.Value());
}
}
TaskQueuePacedSender::~TaskQueuePacedSender() {
// Post an immediate task to mark the queue as shutting down.
// The rtc::TaskQueue destructor will wait for pending tasks to
// complete before continuing.
task_queue_.PostTask([&]() {
RTC_DCHECK_RUN_ON(&task_queue_);
is_shutdown_ = true;
});
}
Reland "[Battery]: Delay start of TaskQueuePacedSender." Take 3 This is a reland of 89cb65ed663a9000b9f7c90a78039bd85731e9ae ... and f28aade91dcc2cb8f590dc1379ac7ab5c1981909 ... and 2072b87261a6505a88561bdeab3e7405d7038eaa Reason for revert: Failing DuoGroupsMediaQualityTest due to missing TaskQueuePacedSender::EnsureStarted() in google3. Fix: This CL adds the logic behind TaskQueuePacedSender::EnsureStarted, but initializes with |is_started| = true. Once the caller in google3 is updated, |is_started| can be switched to false by default. > Original change's description: > Reason for revert: crashes due to uninitialized pacing_bitrate_ > crbug.com/1190547 > Apparently pacer() is sometimes being used before EnsureStarted() > Fix: Instead of delaying first call to SetPacingRates(), > this CL no-ops MaybeProcessPackets() until EnsureStarted() > is called for the first time. > Original change's description: > > [Battery]: Delay start of TaskQueuePacedSender. > > > > To avoid unnecessary repeating tasks, TaskQueuePacedSender is started > > only upon RtpTransportControllerSend::EnsureStarted(). > > > > More specifically, the repeating task happens in > > TaskQueuePacedSender::MaybeProcessPackets() every 500ms, using a self > > task_queue_.PostDelayedTask(). > > > > Bug: chromium:1152887 > > Change-Id: I72c96d2c4b491d5edb45a30b210b3797165cbf48 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208560 > > Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> > > Reviewed-by: Henrik Boström <hbos@webrtc.org> > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#33421} > > Bug: chromium:1152887 > Change-Id: I9aba4882a64bbee7d97ace9059dea8a24c144f93 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212880 > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Henrik Boström <hbos@webrtc.org> > Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> > Cr-Commit-Position: refs/heads/master@{#33554} Bug: chromium:1152887 Change-Id: Ie365562bd83aefdb2757a65e20a4cf3eece678b9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/213000 Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Cr-Commit-Position: refs/heads/master@{#33629}
2021-03-29 17:36:15 +00:00
void TaskQueuePacedSender::EnsureStarted() {
task_queue_.PostTask([this]() {
RTC_DCHECK_RUN_ON(&task_queue_);
is_started_ = true;
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
void TaskQueuePacedSender::CreateProbeClusters(
std::vector<ProbeClusterConfig> probe_cluster_configs) {
task_queue_.PostTask(
[this, probe_cluster_configs = std::move(probe_cluster_configs)]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.CreateProbeClusters(probe_cluster_configs);
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
void TaskQueuePacedSender::Pause() {
task_queue_.PostTask([this]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.Pause();
});
}
void TaskQueuePacedSender::Resume() {
task_queue_.PostTask([this]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.Resume();
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
void TaskQueuePacedSender::SetCongested(bool congested) {
task_queue_.PostTask([this, congested]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.SetCongested(congested);
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
void TaskQueuePacedSender::SetPacingRates(DataRate pacing_rate,
DataRate padding_rate) {
task_queue_.PostTask([this, pacing_rate, padding_rate]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.SetPacingRates(pacing_rate, padding_rate);
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
void TaskQueuePacedSender::EnqueuePackets(
std::vector<std::unique_ptr<RtpPacketToSend>> packets) {
Reland "Add trace of enqueued and sent RTP packets" This reverts commit 45bb717a2866c2d836b5332a24af0d09f2b30714. Reason for revert: Use #if RTC_TRACE_EVENTS_ENABLED to avoid unused variable. Original change's description: > Revert "Add trace of enqueued and sent RTP packets" > > This reverts commit 45b9192ad981dcdc12ad4aef087fff2195bd030c. > > Reason for revert: When tracing is disabled, this results in a clang warning (unused variable), which results in a build error since Werror is enabled by default. > > Original change's description: > > Add trace of enqueued and sent RTP packets > > > > This is useful in debugging the latency from a packet > > is enqueued until it's sent. > > > > Bug: webrtc:11617 > > Change-Id: Ic2f194334a2e178de221df3a0838481035bb3505 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176231 > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Johannes Kron <kron@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#31381} > > TBR=sprang@webrtc.org,kron@webrtc.org > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Bug: webrtc:11617 > Change-Id: I854c17e587c624691a0e5e3ec9fd38c2607eda84 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176380 > Commit-Queue: Casey Fischer <caseyfischer@google.com> > Reviewed-by: Adam Nathan <adamnathan@google.com> > Cr-Commit-Position: refs/heads/master@{#31399} TBR=sprang@webrtc.org,yujo@chromium.org,adamnathan@google.com,kron@webrtc.org,caseyfischer@google.com # Not skipping CQ checks because this is a reland. Bug: webrtc:11617 Change-Id: I9de7f7ed290481a51c161a693f5b2d5df7d2eae3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176367 Commit-Queue: Johannes Kron <kron@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Johannes Kron <kron@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31407}
2020-06-01 23:28:44 +00:00
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("webrtc"),
"TaskQueuePacedSender::EnqueuePackets");
for (auto& packet : packets) {
RTC_UNUSED(packet);
Reland "Add trace of enqueued and sent RTP packets" This reverts commit 45bb717a2866c2d836b5332a24af0d09f2b30714. Reason for revert: Use #if RTC_TRACE_EVENTS_ENABLED to avoid unused variable. Original change's description: > Revert "Add trace of enqueued and sent RTP packets" > > This reverts commit 45b9192ad981dcdc12ad4aef087fff2195bd030c. > > Reason for revert: When tracing is disabled, this results in a clang warning (unused variable), which results in a build error since Werror is enabled by default. > > Original change's description: > > Add trace of enqueued and sent RTP packets > > > > This is useful in debugging the latency from a packet > > is enqueued until it's sent. > > > > Bug: webrtc:11617 > > Change-Id: Ic2f194334a2e178de221df3a0838481035bb3505 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176231 > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Johannes Kron <kron@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#31381} > > TBR=sprang@webrtc.org,kron@webrtc.org > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Bug: webrtc:11617 > Change-Id: I854c17e587c624691a0e5e3ec9fd38c2607eda84 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176380 > Commit-Queue: Casey Fischer <caseyfischer@google.com> > Reviewed-by: Adam Nathan <adamnathan@google.com> > Cr-Commit-Position: refs/heads/master@{#31399} TBR=sprang@webrtc.org,yujo@chromium.org,adamnathan@google.com,kron@webrtc.org,caseyfischer@google.com # Not skipping CQ checks because this is a reland. Bug: webrtc:11617 Change-Id: I9de7f7ed290481a51c161a693f5b2d5df7d2eae3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176367 Commit-Queue: Johannes Kron <kron@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Johannes Kron <kron@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31407}
2020-06-01 23:28:44 +00:00
TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("webrtc"),
"TaskQueuePacedSender::EnqueuePackets::Loop",
"sequence_number", packet->SequenceNumber(), "rtp_timestamp",
packet->Timestamp());
}
task_queue_.PostTask([this, packets_ = std::move(packets)]() mutable {
RTC_DCHECK_RUN_ON(&task_queue_);
for (auto& packet : packets_) {
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
size_t packet_size = packet->payload_size() + packet->padding_size();
if (include_overhead_) {
packet_size += packet->headers_size();
}
packet_size_.Apply(1, packet_size);
Reland "Represent RtpPacketToSend::capture_time with Timestamp" This reverts commit 56db8d09529d5ba92d24954a1d78a90c8ea2cd85. Reason for revert: downstream problem addressed Original change's description: > Revert "Represent RtpPacketToSend::capture_time with Timestamp" > > This reverts commit 385eb9714daa80306d2f92d36678c42892dab555. > > Reason for revert: Causes problems downstream: > > # > # Fatal error in: rtc_base/units/unit_base.h, line 122 > # last system error: 0 > # Check failed: value >= 0 (-234 vs. 0) > > Original change's description: > > Represent RtpPacketToSend::capture_time with Timestamp > > > > Bug: webrtc:13757 > > Change-Id: I0ede22cd34e3a59afe1477d8edd495dce64e3242 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/252586 > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> > > Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> > > Cr-Commit-Position: refs/heads/main@{#36083} > > Bug: webrtc:13757 > Change-Id: I8442abd438be8726cf671d0f372d50ecfac6847e > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/252720 > Auto-Submit: Tomas Gunnarsson <tommi@webrtc.org> > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> > Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#36087} Bug: webrtc:13757 Change-Id: I1fa852757480116f35deb2b6c3c27800bdf5e197 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/252781 Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36093}
2022-02-27 21:10:55 +00:00
RTC_DCHECK_GE(packet->capture_time(), Timestamp::Zero());
pacing_controller_.EnqueuePacket(std::move(packet));
}
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
void TaskQueuePacedSender::SetAccountForAudioPackets(bool account_for_audio) {
task_queue_.PostTask([this, account_for_audio]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.SetAccountForAudioPackets(account_for_audio);
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
Reland "Reland "Only include overhead if using send side bandwidth estimation."" This is a reland of 086055d0fd9b9b9efe8bcf85884324a019e9bd33 ANA was accitendly disabled even when transport sequence numbers were negotiated due to a bug in how the audio send stream is configured. To solve this we simply continue to always allow enabling ANA and leave it up to the application to ensure that it's not used together with receive side estimation. Original change's description: > Reland "Only include overhead if using send side bandwidth estimation." > > This is a reland of 8c79c6e1af354c526497082c79ccbe12af03a33e > > Original change's description: > > Only include overhead if using send side bandwidth estimation. > > > > Bug: webrtc:11298 > > Change-Id: Ia2daf690461b55d394c1b964d6a7977a98be8be2 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166820 > > Reviewed-by: Oskar Sundbom <ossu@webrtc.org> > > Reviewed-by: Sam Zackrisson <saza@webrtc.org> > > Reviewed-by: Ali Tofigh <alito@webrtc.org> > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#30382} > > Bug: webrtc:11298 > Change-Id: I33205e869a8ae27c15ffe991f6d985973ed6d15a > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167524 > Reviewed-by: Ali Tofigh <alito@webrtc.org> > Reviewed-by: Sam Zackrisson <saza@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Oskar Sundbom <ossu@webrtc.org> > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#30390} Bug: webrtc:11298 Change-Id: If2ad91e17ebfc85dc51edcd9607996e18c5d1f13 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167883 Commit-Queue: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30413}
2020-01-29 17:42:52 +01:00
void TaskQueuePacedSender::SetIncludeOverhead() {
task_queue_.PostTask([this]() {
RTC_DCHECK_RUN_ON(&task_queue_);
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
include_overhead_ = true;
Reland "Reland "Only include overhead if using send side bandwidth estimation."" This is a reland of 086055d0fd9b9b9efe8bcf85884324a019e9bd33 ANA was accitendly disabled even when transport sequence numbers were negotiated due to a bug in how the audio send stream is configured. To solve this we simply continue to always allow enabling ANA and leave it up to the application to ensure that it's not used together with receive side estimation. Original change's description: > Reland "Only include overhead if using send side bandwidth estimation." > > This is a reland of 8c79c6e1af354c526497082c79ccbe12af03a33e > > Original change's description: > > Only include overhead if using send side bandwidth estimation. > > > > Bug: webrtc:11298 > > Change-Id: Ia2daf690461b55d394c1b964d6a7977a98be8be2 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166820 > > Reviewed-by: Oskar Sundbom <ossu@webrtc.org> > > Reviewed-by: Sam Zackrisson <saza@webrtc.org> > > Reviewed-by: Ali Tofigh <alito@webrtc.org> > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#30382} > > Bug: webrtc:11298 > Change-Id: I33205e869a8ae27c15ffe991f6d985973ed6d15a > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167524 > Reviewed-by: Ali Tofigh <alito@webrtc.org> > Reviewed-by: Sam Zackrisson <saza@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Oskar Sundbom <ossu@webrtc.org> > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#30390} Bug: webrtc:11298 Change-Id: If2ad91e17ebfc85dc51edcd9607996e18c5d1f13 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167883 Commit-Queue: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30413}
2020-01-29 17:42:52 +01:00
pacing_controller_.SetIncludeOverhead();
MaybeProcessPackets(Timestamp::MinusInfinity());
Reland "Reland "Only include overhead if using send side bandwidth estimation."" This is a reland of 086055d0fd9b9b9efe8bcf85884324a019e9bd33 ANA was accitendly disabled even when transport sequence numbers were negotiated due to a bug in how the audio send stream is configured. To solve this we simply continue to always allow enabling ANA and leave it up to the application to ensure that it's not used together with receive side estimation. Original change's description: > Reland "Only include overhead if using send side bandwidth estimation." > > This is a reland of 8c79c6e1af354c526497082c79ccbe12af03a33e > > Original change's description: > > Only include overhead if using send side bandwidth estimation. > > > > Bug: webrtc:11298 > > Change-Id: Ia2daf690461b55d394c1b964d6a7977a98be8be2 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166820 > > Reviewed-by: Oskar Sundbom <ossu@webrtc.org> > > Reviewed-by: Sam Zackrisson <saza@webrtc.org> > > Reviewed-by: Ali Tofigh <alito@webrtc.org> > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#30382} > > Bug: webrtc:11298 > Change-Id: I33205e869a8ae27c15ffe991f6d985973ed6d15a > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167524 > Reviewed-by: Ali Tofigh <alito@webrtc.org> > Reviewed-by: Sam Zackrisson <saza@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Oskar Sundbom <ossu@webrtc.org> > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#30390} Bug: webrtc:11298 Change-Id: If2ad91e17ebfc85dc51edcd9607996e18c5d1f13 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167883 Commit-Queue: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30413}
2020-01-29 17:42:52 +01:00
});
}
Reland "Adds trial to use correct overhead calculation in pacer." This reverts commit 7affd9bcbb7a778408942d8afa4fe3ce29a8fc0b. Reason for revert: The perf issue has been addressed in the reland (https://webrtc-review.googlesource.com/c/src/+/167883). Original change's description: > Revert "Adds trial to use correct overhead calculation in pacer." > > This reverts commit 71a77c4b3b314a5e3b4e6b2f12d4886cff1b60d7. > > Reason for revert: https://webrtc-review.googlesource.com/c/src/+/167524 needs to be reverted and this CL causes a merge conflict. > > Original change's description: > > Adds trial to use correct overhead calculation in pacer. > > > > Bug: webrtc:9883 > > Change-Id: I1f25a235468678bf823ee1399ba31d94acf33be9 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166534 > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#30399} > > TBR=sprang@webrtc.org,srte@webrtc.org > > Change-Id: I7d3efa29f70aa0363311766980acae6d88bbcaaa > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9883 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167880 > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#30409} TBR=mbonadei@webrtc.org,sprang@webrtc.org,srte@webrtc.org Change-Id: Iafdef81d08078000dc368e001f67bee660e2f5bc No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:9883 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167861 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30414}
2020-01-29 18:45:00 +00:00
void TaskQueuePacedSender::SetTransportOverhead(DataSize overhead_per_packet) {
task_queue_.PostTask([this, overhead_per_packet]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.SetTransportOverhead(overhead_per_packet);
MaybeProcessPackets(Timestamp::MinusInfinity());
Reland "Adds trial to use correct overhead calculation in pacer." This reverts commit 7affd9bcbb7a778408942d8afa4fe3ce29a8fc0b. Reason for revert: The perf issue has been addressed in the reland (https://webrtc-review.googlesource.com/c/src/+/167883). Original change's description: > Revert "Adds trial to use correct overhead calculation in pacer." > > This reverts commit 71a77c4b3b314a5e3b4e6b2f12d4886cff1b60d7. > > Reason for revert: https://webrtc-review.googlesource.com/c/src/+/167524 needs to be reverted and this CL causes a merge conflict. > > Original change's description: > > Adds trial to use correct overhead calculation in pacer. > > > > Bug: webrtc:9883 > > Change-Id: I1f25a235468678bf823ee1399ba31d94acf33be9 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166534 > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Commit-Queue: Sebastian Jansson <srte@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#30399} > > TBR=sprang@webrtc.org,srte@webrtc.org > > Change-Id: I7d3efa29f70aa0363311766980acae6d88bbcaaa > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:9883 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167880 > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> > Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#30409} TBR=mbonadei@webrtc.org,sprang@webrtc.org,srte@webrtc.org Change-Id: Iafdef81d08078000dc368e001f67bee660e2f5bc No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:9883 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167861 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30414}
2020-01-29 18:45:00 +00:00
});
}
void TaskQueuePacedSender::SetQueueTimeLimit(TimeDelta limit) {
task_queue_.PostTask([this, limit]() {
RTC_DCHECK_RUN_ON(&task_queue_);
pacing_controller_.SetQueueTimeLimit(limit);
MaybeProcessPackets(Timestamp::MinusInfinity());
});
}
TimeDelta TaskQueuePacedSender::ExpectedQueueTime() const {
return GetStats().expected_queue_time;
}
DataSize TaskQueuePacedSender::QueueSizeData() const {
return GetStats().queue_size;
}
absl::optional<Timestamp> TaskQueuePacedSender::FirstSentPacketTime() const {
return GetStats().first_sent_packet_time;
}
TimeDelta TaskQueuePacedSender::OldestPacketWaitTime() const {
Timestamp oldest_packet = GetStats().oldest_packet_enqueue_time;
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
if (oldest_packet.IsInfinite()) {
return TimeDelta::Zero();
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
}
// (webrtc:9716): The clock is not always monotonic.
Timestamp current = clock_->CurrentTime();
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
if (current < oldest_packet) {
return TimeDelta::Zero();
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
}
return current - oldest_packet;
}
void TaskQueuePacedSender::OnStatsUpdated(const Stats& stats) {
MutexLock lock(&stats_mutex_);
current_stats_ = stats;
}
void TaskQueuePacedSender::MaybeProcessPackets(
Timestamp scheduled_process_time) {
RTC_DCHECK_RUN_ON(&task_queue_);
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("webrtc"),
"TaskQueuePacedSender::MaybeProcessPackets");
Reland "[Battery]: Delay start of TaskQueuePacedSender." Take 3 This is a reland of 89cb65ed663a9000b9f7c90a78039bd85731e9ae ... and f28aade91dcc2cb8f590dc1379ac7ab5c1981909 ... and 2072b87261a6505a88561bdeab3e7405d7038eaa Reason for revert: Failing DuoGroupsMediaQualityTest due to missing TaskQueuePacedSender::EnsureStarted() in google3. Fix: This CL adds the logic behind TaskQueuePacedSender::EnsureStarted, but initializes with |is_started| = true. Once the caller in google3 is updated, |is_started| can be switched to false by default. > Original change's description: > Reason for revert: crashes due to uninitialized pacing_bitrate_ > crbug.com/1190547 > Apparently pacer() is sometimes being used before EnsureStarted() > Fix: Instead of delaying first call to SetPacingRates(), > this CL no-ops MaybeProcessPackets() until EnsureStarted() > is called for the first time. > Original change's description: > > [Battery]: Delay start of TaskQueuePacedSender. > > > > To avoid unnecessary repeating tasks, TaskQueuePacedSender is started > > only upon RtpTransportControllerSend::EnsureStarted(). > > > > More specifically, the repeating task happens in > > TaskQueuePacedSender::MaybeProcessPackets() every 500ms, using a self > > task_queue_.PostDelayedTask(). > > > > Bug: chromium:1152887 > > Change-Id: I72c96d2c4b491d5edb45a30b210b3797165cbf48 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208560 > > Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> > > Reviewed-by: Henrik Boström <hbos@webrtc.org> > > Reviewed-by: Erik Språng <sprang@webrtc.org> > > Cr-Commit-Position: refs/heads/master@{#33421} > > Bug: chromium:1152887 > Change-Id: I9aba4882a64bbee7d97ace9059dea8a24c144f93 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212880 > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Henrik Boström <hbos@webrtc.org> > Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> > Cr-Commit-Position: refs/heads/master@{#33554} Bug: chromium:1152887 Change-Id: Ie365562bd83aefdb2757a65e20a4cf3eece678b9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/213000 Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Cr-Commit-Position: refs/heads/master@{#33629}
2021-03-29 17:36:15 +00:00
if (is_shutdown_ || !is_started_) {
return;
}
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
Timestamp next_send_time = pacing_controller_.NextSendTime();
RTC_DCHECK(next_send_time.IsFinite());
const Timestamp now = clock_->CurrentTime();
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
TimeDelta early_execute_margin =
pacing_controller_.IsProbing()
? PacingController::kMaxEarlyProbeProcessing
: TimeDelta::Zero();
// Process packets and update stats.
while (next_send_time <= now + early_execute_margin) {
pacing_controller_.ProcessPackets();
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
next_send_time = pacing_controller_.NextSendTime();
RTC_DCHECK(next_send_time.IsFinite());
// Probing state could change. Get margin after process packets.
early_execute_margin = pacing_controller_.IsProbing()
? PacingController::kMaxEarlyProbeProcessing
: TimeDelta::Zero();
}
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
UpdateStats();
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
// Ignore retired scheduled task, otherwise reset `next_process_time_`.
if (scheduled_process_time.IsFinite()) {
if (scheduled_process_time != next_process_time_) {
return;
}
next_process_time_ = Timestamp::MinusInfinity();
}
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
// Do not hold back in probing.
TimeDelta hold_back_window = TimeDelta::Zero();
if (!pacing_controller_.IsProbing()) {
hold_back_window = max_hold_back_window_;
DataRate pacing_rate = pacing_controller_.pacing_rate();
if (max_hold_back_window_in_packets_ != kNoPacketHoldback &&
!pacing_rate.IsZero() &&
packet_size_.filtered() != rtc::ExpFilter::kValueUndefined) {
TimeDelta avg_packet_send_time =
DataSize::Bytes(packet_size_.filtered()) / pacing_rate;
hold_back_window =
std::min(hold_back_window,
avg_packet_send_time * max_hold_back_window_in_packets_);
}
}
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
// Calculate next process time.
TimeDelta time_to_next_process =
std::max(hold_back_window, next_send_time - now - early_execute_margin);
next_send_time = now + time_to_next_process;
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
// If no in flight task or in flight task is later than `next_send_time`,
// schedule a new one. Previous in flight task will be retired.
if (next_process_time_.IsMinusInfinity() ||
next_process_time_ > next_send_time) {
// Prefer low precision if allowed and not probing.
TaskQueueBase::DelayPrecision precision =
slacked_pacer_flags_.allow_low_precision &&
!pacing_controller_.IsProbing()
? TaskQueueBase::DelayPrecision::kLow
: TaskQueueBase::DelayPrecision::kHigh;
// Check for cases where we need high precision.
if (precision == TaskQueueBase::DelayPrecision::kLow) {
auto& packets_per_type =
pacing_controller_.SizeInPacketsPerRtpPacketMediaType();
bool audio_or_retransmission_packets_in_queue =
packets_per_type[static_cast<size_t>(RtpPacketMediaType::kAudio)] >
0 ||
packets_per_type[static_cast<size_t>(
RtpPacketMediaType::kRetransmission)] > 0;
bool queue_time_too_large =
slacked_pacer_flags_.max_low_precision_expected_queue_time &&
pacing_controller_.ExpectedQueueTime() >=
slacked_pacer_flags_.max_low_precision_expected_queue_time
.Value();
if (audio_or_retransmission_packets_in_queue || queue_time_too_large) {
precision = TaskQueueBase::DelayPrecision::kHigh;
}
}
task_queue_.PostDelayedTaskWithPrecision(
precision,
Reland "Pacer: Reduce TQ wake up and improve packet size estimation" Update `early_execute_margin` after process packets, and the test case. Original change's description: >Pacer: Reduce TQ wake up and improve packet size estimation > >The TQ Pacer schedules delayed task according to target time of >PacingController. It drains all valid ProcessPackets() in single loop, >denies retired scheduled tasks, and round up the timeout to 1ms. > >This CL also improves packet size estimation in TQ Pacer by removing >zero initialization, and introduces `include_overhead_` configuration. > >Tests: >1. webrtc_perf_tests: MaybeProcessPackets() calls > 2075147 -> 2007995 > >2. module_unittests: MaybeProcessPackets() calls > 203393 -> 183563 > >3. peerconnection_unittests: MaybeProcessPackets() calls > 66713-> 64333 > >Bug: webrtc:13417, webrtc:13437 >Change-Id: I18eb0a36dbe063c606b1f27014df74a65ebfc486 >Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242962 >Reviewed-by: Erik Språng <sprang@webrtc.org> >Reviewed-by: Henrik Boström <hbos@webrtc.org> >Commit-Queue: Erik Språng <sprang@webrtc.org> >Cr-Commit-Position: refs/heads/main@{#36179} Bug: webrtc:13417, webrtc:13437 Change-Id: I79f2554cf02364b67ce7073698611a3ae337a73b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256145 Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Owners-Override: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36283}
2022-03-19 15:38:51 +08:00
[this, next_send_time]() { MaybeProcessPackets(next_send_time); },
time_to_next_process.RoundUpTo(TimeDelta::Millis(1)).ms<uint32_t>());
next_process_time_ = next_send_time;
}
}
void TaskQueuePacedSender::UpdateStats() {
Stats new_stats;
new_stats.expected_queue_time = pacing_controller_.ExpectedQueueTime();
new_stats.first_sent_packet_time = pacing_controller_.FirstSentPacketTime();
new_stats.oldest_packet_enqueue_time =
pacing_controller_.OldestPacketEnqueueTime();
new_stats.queue_size = pacing_controller_.QueueSizeData();
OnStatsUpdated(new_stats);
}
TaskQueuePacedSender::Stats TaskQueuePacedSender::GetStats() const {
MutexLock lock(&stats_mutex_);
return current_stats_;
}
} // namespace webrtc