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}
This commit is contained in:
Jakob Ivarsson 2024-04-23 15:03:29 +02:00 committed by WebRTC LUCI CQ
parent dc3cdf98e0
commit 00a8839d47

View file

@ -29,12 +29,17 @@ void SourceTracker::OnFrameDelivered(RtpPacketInfos packet_infos) {
}
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(