From c35a3f13c7980b0afbb26d901df4bc2e6f45fa3f Mon Sep 17 00:00:00 2001 From: Markus Handell Date: Fri, 3 Mar 2023 10:04:27 +0100 Subject: [PATCH] RtpSenderEgress::SendPacket: avoid PostTasks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Under the combined network/worker thread project, tasks are unnecessarily posted to the same thread. Avoid this by posting only if invoked on a diffferent sequence. TESTED=presubmit + local Meet calls. Bug: webrtc:137439 Change-Id: I9befde0583b214ebe014617695c2eb9f047de8a0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/295869 Commit-Queue: Markus Handell Reviewed-by: Erik Språng Cr-Commit-Position: refs/heads/main@{#39472} --- modules/rtp_rtcp/source/rtp_sender_egress.cc | 21 +++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.cc b/modules/rtp_rtcp/source/rtp_sender_egress.cc index 3f836c5415..d8163dc2e7 100644 --- a/modules/rtp_rtcp/source/rtp_sender_egress.cc +++ b/modules/rtp_rtcp/source/rtp_sender_egress.cc @@ -277,13 +277,20 @@ void RtpSenderEgress::SendPacket(RtpPacketToSend* packet, RtpPacketMediaType packet_type = *packet->packet_type(); RtpPacketCounter counter(*packet); size_t size = packet->size(); - worker_queue_->PostTask( - SafeTask(task_safety_.flag(), [this, now, packet_ssrc, packet_type, - counter = std::move(counter), size]() { - RTC_DCHECK_RUN_ON(worker_queue_); - UpdateRtpStats(now, packet_ssrc, packet_type, std::move(counter), - size); - })); + // TODO(bugs.webrtc.org/137439): clean up task posting when the combined + // network/worker project launches. + if (TaskQueueBase::Current() != worker_queue_) { + worker_queue_->PostTask( + SafeTask(task_safety_.flag(), [this, now, packet_ssrc, packet_type, + counter = std::move(counter), size]() { + RTC_DCHECK_RUN_ON(worker_queue_); + UpdateRtpStats(now, packet_ssrc, packet_type, std::move(counter), + size); + })); + } else { + RTC_DCHECK_RUN_ON(worker_queue_); + UpdateRtpStats(now, packet_ssrc, packet_type, std::move(counter), size); + } } }