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:
Evan Shrubsole
2022-03-01 10:42:44 +01:00
committed by WebRTC LUCI CQ
parent 42da5a9a10
commit 7619b7c078
4 changed files with 84 additions and 10 deletions

View File

@ -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