Allow source tracker to be called synchronously on a single thread.
Bug: None
Change-Id: I699c0c787d28fe79959e93b3e1eda2634c931cef
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/348840
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42154}
diff --git a/modules/rtp_rtcp/source/source_tracker.cc b/modules/rtp_rtcp/source/source_tracker.cc
index 51e8f1c..cd881f1 100644
--- a/modules/rtp_rtcp/source/source_tracker.cc
+++ b/modules/rtp_rtcp/source/source_tracker.cc
@@ -29,12 +29,17 @@
}
Timestamp now = clock_->CurrentTime();
- worker_thread_->PostTask(
- SafeTask(worker_safety_.flag(),
- [this, packet_infos = std::move(packet_infos), now]() {
- RTC_DCHECK_RUN_ON(worker_thread_);
- OnFrameDeliveredInternal(now, packet_infos);
- }));
+ if (worker_thread_->IsCurrent()) {
+ RTC_DCHECK_RUN_ON(worker_thread_);
+ OnFrameDeliveredInternal(now, packet_infos);
+ } else {
+ worker_thread_->PostTask(
+ SafeTask(worker_safety_.flag(),
+ [this, packet_infos = std::move(packet_infos), now]() {
+ RTC_DCHECK_RUN_ON(worker_thread_);
+ OnFrameDeliveredInternal(now, packet_infos);
+ }));
+ }
}
void SourceTracker::OnFrameDeliveredInternal(