Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Unified Diff: webrtc/test/frame_generator_capturer.cc

Issue 2740723002: Rewrite frame generator capturer to use TaskQueue instead of EventTimeWrapper (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« webrtc/test/frame_generator_capturer.h ('K') | « webrtc/test/frame_generator_capturer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698