RtpSenderEgress::SendPacket: avoid PostTasks.

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 <handellm@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39472}
This commit is contained in:
Markus Handell 2023-03-03 10:04:27 +01:00 committed by WebRTC LUCI CQ
parent 28c4986e1b
commit c35a3f13c7

View file

@ -277,6 +277,9 @@ void RtpSenderEgress::SendPacket(RtpPacketToSend* packet,
RtpPacketMediaType packet_type = *packet->packet_type(); RtpPacketMediaType packet_type = *packet->packet_type();
RtpPacketCounter counter(*packet); RtpPacketCounter counter(*packet);
size_t size = packet->size(); size_t size = packet->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( worker_queue_->PostTask(
SafeTask(task_safety_.flag(), [this, now, packet_ssrc, packet_type, SafeTask(task_safety_.flag(), [this, now, packet_ssrc, packet_type,
counter = std::move(counter), size]() { counter = std::move(counter), size]() {
@ -284,6 +287,10 @@ void RtpSenderEgress::SendPacket(RtpPacketToSend* packet,
UpdateRtpStats(now, packet_ssrc, packet_type, std::move(counter), UpdateRtpStats(now, packet_ssrc, packet_type, std::move(counter),
size); size);
})); }));
} else {
RTC_DCHECK_RUN_ON(worker_queue_);
UpdateRtpStats(now, packet_ssrc, packet_type, std::move(counter), size);
}
} }
} }