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}
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.cc b/modules/rtp_rtcp/source/rtp_sender_egress.cc
index 3f836c5..d8163dc 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_egress.cc
@@ -277,13 +277,20 @@
     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);
+    }
   }
 }