Add tests for FrameBuffer3 and SyncDecoding in PC Integration Tests
Change-Id: I04ae6a694599a535347c29706e5ad40cba58155b Bug: webrtc:13672 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251721 Reviewed-by: Stefan Holmer <stefan@webrtc.org> Commit-Queue: Evan Shrubsole <eshr@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36104}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
42da5a9a10
commit
7619b7c078
@ -56,4 +56,46 @@ int FindFirstMediaStatsIndexByKind(
|
||||
return -1;
|
||||
}
|
||||
|
||||
TaskQueueMetronome::TaskQueueMetronome(TaskQueueFactory* factory,
|
||||
TimeDelta tick_period)
|
||||
: tick_period_(tick_period),
|
||||
queue_(factory->CreateTaskQueue("MetronomeQueue",
|
||||
TaskQueueFactory::Priority::HIGH)) {
|
||||
tick_task_ = RepeatingTaskHandle::Start(queue_.Get(), [this] {
|
||||
MutexLock lock(&mutex_);
|
||||
for (auto* listener : listeners_) {
|
||||
listener->OnTickTaskQueue()->PostTask(
|
||||
ToQueuedTask([listener] { listener->OnTick(); }));
|
||||
}
|
||||
return tick_period_;
|
||||
});
|
||||
}
|
||||
|
||||
TaskQueueMetronome::~TaskQueueMetronome() {
|
||||
RTC_DCHECK(listeners_.empty());
|
||||
rtc::Event stop_event;
|
||||
queue_.PostTask([this, &stop_event] {
|
||||
tick_task_.Stop();
|
||||
stop_event.Set();
|
||||
});
|
||||
stop_event.Wait(1000);
|
||||
}
|
||||
|
||||
void TaskQueueMetronome::AddListener(TickListener* listener) {
|
||||
MutexLock lock(&mutex_);
|
||||
auto [it, inserted] = listeners_.insert(listener);
|
||||
RTC_DCHECK(inserted);
|
||||
}
|
||||
|
||||
void TaskQueueMetronome::RemoveListener(TickListener* listener) {
|
||||
MutexLock lock(&mutex_);
|
||||
auto it = listeners_.find(listener);
|
||||
RTC_DCHECK(it != listeners_.end());
|
||||
listeners_.erase(it);
|
||||
}
|
||||
|
||||
TimeDelta TaskQueueMetronome::TickPeriod() const {
|
||||
return tick_period_;
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user