| Index: webrtc/test/frame_generator_capturer.cc
|
| diff --git a/webrtc/test/frame_generator_capturer.cc b/webrtc/test/frame_generator_capturer.cc
|
| index 00efbc8b40b467e2248169349ac498997b8de3d2..96c64c729fb266963c97d64145ac8a122a46d64a 100644
|
| --- a/webrtc/test/frame_generator_capturer.cc
|
| +++ b/webrtc/test/frame_generator_capturer.cc
|
| @@ -10,6 +10,9 @@
|
|
|
| #include "webrtc/test/frame_generator_capturer.h"
|
|
|
| +#include <utility>
|
| +#include <vector>
|
| +
|
| #include "webrtc/base/criticalsection.h"
|
| #include "webrtc/base/platform_thread.h"
|
| #include "webrtc/system_wrappers/include/clock.h"
|
| @@ -61,8 +64,7 @@ FrameGeneratorCapturer::FrameGeneratorCapturer(
|
| sending_(false),
|
| sink_(nullptr),
|
| sink_wants_observer_(nullptr),
|
| - tick_(EventTimerWrapper::Create()),
|
| - thread_(FrameGeneratorCapturer::Run, this, "FrameGeneratorCapturer"),
|
| + task_queue_("FrameGeneratorQueue", rtc::TaskQueue::Priority::HIGH),
|
| frame_generator_(std::move(frame_generator)),
|
| target_fps_(target_fps),
|
| first_frame_capture_time_(-1) {
|
| @@ -72,8 +74,6 @@ FrameGeneratorCapturer::FrameGeneratorCapturer(
|
|
|
| FrameGeneratorCapturer::~FrameGeneratorCapturer() {
|
| Stop();
|
| -
|
| - thread_.Stop();
|
| }
|
|
|
| void FrameGeneratorCapturer::SetFakeRotation(VideoRotation rotation) {
|
| @@ -87,15 +87,10 @@ bool FrameGeneratorCapturer::Init() {
|
| if (frame_generator_.get() == NULL)
|
| return false;
|
|
|
| - if (!tick_->StartTimer(true, 1000 / target_fps_))
|
| - return false;
|
| - thread_.Start();
|
| - thread_.SetPriority(rtc::kHighPriority);
|
| - return true;
|
| -}
|
| + task_queue_.PostDelayedTask(
|
| + std::unique_ptr<rtc::QueuedTask>(new InsertFrameTask(this, true)),
|
| + 1000 / target_fps_);
|
|
|
| -bool FrameGeneratorCapturer::Run(void* obj) {
|
| - static_cast<FrameGeneratorCapturer*>(obj)->InsertFrame();
|
| return true;
|
| }
|
|
|
| @@ -113,7 +108,6 @@ void FrameGeneratorCapturer::InsertFrame() {
|
| sink_->OnFrame(*frame);
|
| }
|
| }
|
| - tick_->Wait(WEBRTC_EVENT_INFINITE);
|
| }
|
|
|
| void FrameGeneratorCapturer::Start() {
|
| @@ -155,7 +149,20 @@ void FrameGeneratorCapturer::RemoveSink(
|
| }
|
|
|
| void FrameGeneratorCapturer::ForceFrame() {
|
| - tick_->Set();
|
| + task_queue_.PostTask(
|
| + std::unique_ptr<rtc::QueuedTask>(new InsertFrameTask(this, false)));
|
| }
|
| -} // test
|
| -} // webrtc
|
| +
|
| +bool FrameGeneratorCapturer::InsertFrameTask::Run() {
|
| + if (repeat_) {
|
| + rtc::TaskQueue::Current()->PostDelayedTask(
|
| + std::unique_ptr<rtc::QueuedTask>(this),
|
| + 1000 / frame_generator_capturer_->target_fps_);
|
| + }
|
| + frame_generator_capturer_->InsertFrame();
|
| + // If task is repeating, it should not be deleted.
|
| + return !repeat_;
|
| +}
|
| +
|
| +} // namespace test
|
| +} // namespace webrtc
|
|
|