Revert of rewrite frame generator capturer to use TaskQueue instead of EventTimeWrapper (patchset #2 id:90001 of https://codereview.webrtc.org/2744003002/ )

Reason for revert:
CallPerfTest.ReceivesCpuOveruseAndUnderuse perf test fails due to this CL. It requires very accurate frame rate, which may not be so accurate now.

Original issue's description:
> Reland of rewrite frame generator capturer to use TaskQueue instead of EventTimeWrapper (patchset #1 id:1 of https://codereview.webrtc.org/2743993002/ )
>
> And enable large full-stack test depending on that change (Reland of https://codereview.webrtc.org/2741823003/)
> TBR=stefan@webrtc.org,tommi@webrtc.org
> BUG=webrtc:7301,webrtc:7325
>
> Review-Url: https://codereview.webrtc.org/2744003002
> Cr-Commit-Position: refs/heads/master@{#17196}
> Committed: https://chromium.googlesource.com/external/webrtc/+/8c0a5896d1cdc7bb81307c33fa4b3538d8160a0f

TBR=stefan@webrtc.org,tommi@webrtc.org,sprang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7301,webrtc:7325

Review-Url: https://codereview.webrtc.org/2748643002
Cr-Commit-Position: refs/heads/master@{#17198}
diff --git a/webrtc/call/call_perf_tests.cc b/webrtc/call/call_perf_tests.cc
index 079b702..1551cd7 100644
--- a/webrtc/call/call_perf_tests.cc
+++ b/webrtc/call/call_perf_tests.cc
@@ -476,7 +476,7 @@
     LoadObserver()
         : SendTest(kLongTimeoutMs),
           expect_lower_resolution_wants_(true),
-          encoder_(Clock::GetRealTimeClock(), 40 /* delay_ms */) {}
+          encoder_(Clock::GetRealTimeClock(), 35 /* delay_ms */) {}
 
     void OnFrameGeneratorCapturerCreated(
         test::FrameGeneratorCapturer* frame_generator_capturer) override {
diff --git a/webrtc/test/frame_generator_capturer.cc b/webrtc/test/frame_generator_capturer.cc
index 98f7a4b..00efbc8 100644
--- a/webrtc/test/frame_generator_capturer.cc
+++ b/webrtc/test/frame_generator_capturer.cc
@@ -10,13 +10,10 @@
 
 #include "webrtc/test/frame_generator_capturer.h"
 
-#include <utility>
-#include <vector>
-
 #include "webrtc/base/criticalsection.h"
 #include "webrtc/base/platform_thread.h"
-#include "webrtc/base/task_queue.h"
 #include "webrtc/system_wrappers/include/clock.h"
+#include "webrtc/system_wrappers/include/event_wrapper.h"
 #include "webrtc/system_wrappers/include/sleep.h"
 #include "webrtc/test/frame_generator.h"
 #include "webrtc/video_send_stream.h"
@@ -24,30 +21,6 @@
 namespace webrtc {
 namespace test {
 
-class FrameGeneratorCapturer::InsertFrameTask : public rtc::QueuedTask {
- public:
-  // Repeats in |repeat_interval_ms|. One-time if |repeat_interval_ms| == 0.
-  InsertFrameTask(
-      webrtc::test::FrameGeneratorCapturer* frame_generator_capturer,
-      uint32_t repeat_interval_ms)
-      : frame_generator_capturer_(frame_generator_capturer),
-        repeat_interval_ms_(repeat_interval_ms) {}
-
- private:
-  bool Run() override {
-    if (repeat_interval_ms_ > 0) {
-      rtc::TaskQueue::Current()->PostDelayedTask(
-          std::unique_ptr<rtc::QueuedTask>(this), repeat_interval_ms_);
-    }
-    frame_generator_capturer_->InsertFrame();
-    // Task should be deleted only if it's not repeating.
-    return repeat_interval_ms_ == 0;
-  }
-
-  webrtc::test::FrameGeneratorCapturer* const frame_generator_capturer_;
-  const uint32_t repeat_interval_ms_;
-};
-
 FrameGeneratorCapturer* FrameGeneratorCapturer::Create(int width,
                                                        int height,
                                                        int target_fps,
@@ -88,17 +61,19 @@
       sending_(false),
       sink_(nullptr),
       sink_wants_observer_(nullptr),
+      tick_(EventTimerWrapper::Create()),
+      thread_(FrameGeneratorCapturer::Run, this, "FrameGeneratorCapturer"),
       frame_generator_(std::move(frame_generator)),
       target_fps_(target_fps),
-      first_frame_capture_time_(-1),
-      task_queue_("FrameGeneratorCapturerQueue",
-                  rtc::TaskQueue::Priority::HIGH) {
+      first_frame_capture_time_(-1) {
   RTC_DCHECK(frame_generator_);
   RTC_DCHECK_GT(target_fps, 0);
 }
 
 FrameGeneratorCapturer::~FrameGeneratorCapturer() {
   Stop();
+
+  thread_.Stop();
 }
 
 void FrameGeneratorCapturer::SetFakeRotation(VideoRotation rotation) {
@@ -112,11 +87,15 @@
   if (frame_generator_.get() == NULL)
     return false;
 
-  task_queue_.PostDelayedTask(
-      std::unique_ptr<rtc::QueuedTask>(
-          new InsertFrameTask(this, 1000 / target_fps_)),
-      1000 / target_fps_);
+  if (!tick_->StartTimer(true, 1000 / target_fps_))
+    return false;
+  thread_.Start();
+  thread_.SetPriority(rtc::kHighPriority);
+  return true;
+}
 
+bool FrameGeneratorCapturer::Run(void* obj) {
+  static_cast<FrameGeneratorCapturer*>(obj)->InsertFrame();
   return true;
 }
 
@@ -134,6 +113,7 @@
         sink_->OnFrame(*frame);
     }
   }
+  tick_->Wait(WEBRTC_EVENT_INFINITE);
 }
 
 void FrameGeneratorCapturer::Start() {
@@ -175,11 +155,7 @@
 }
 
 void FrameGeneratorCapturer::ForceFrame() {
-  // One-time non-repeating task,
-  // therefore repeat_interval_ms is 0 in InsertFrameTask()
-  task_queue_.PostTask(
-      std::unique_ptr<rtc::QueuedTask>(new InsertFrameTask(this, 0)));
+  tick_->Set();
 }
-
-}  // namespace test
-}  // namespace webrtc
+}  // test
+}  // webrtc
diff --git a/webrtc/test/frame_generator_capturer.h b/webrtc/test/frame_generator_capturer.h
index 75e4849..dfd1271 100644
--- a/webrtc/test/frame_generator_capturer.h
+++ b/webrtc/test/frame_generator_capturer.h
@@ -15,7 +15,7 @@
 
 #include "webrtc/api/video/video_frame.h"
 #include "webrtc/base/criticalsection.h"
-#include "webrtc/base/task_queue.h"
+#include "webrtc/base/platform_thread.h"
 #include "webrtc/test/video_capturer.h"
 #include "webrtc/typedefs.h"
 
@@ -74,8 +74,6 @@
   bool Init();
 
  private:
-  class InsertFrameTask;
-
   void InsertFrame();
   static bool Run(void* obj);
 
@@ -84,18 +82,17 @@
   rtc::VideoSinkInterface<VideoFrame>* sink_ GUARDED_BY(&lock_);
   SinkWantsObserver* sink_wants_observer_ GUARDED_BY(&lock_);
 
+  std::unique_ptr<EventTimerWrapper> tick_;
   rtc::CriticalSection lock_;
+  rtc::PlatformThread thread_;
   std::unique_ptr<FrameGenerator> frame_generator_;
 
   int target_fps_;
   VideoRotation fake_rotation_ = kVideoRotation_0;
 
   int64_t first_frame_capture_time_;
-  // Must be the last field, so it will be deconstructed first as tasks
-  // in the TaskQueue access other fields of the instance of this class.
-  rtc::TaskQueue task_queue_;
 };
-}  // namespace test
-}  // namespace webrtc
+}  // test
+}  // webrtc
 
 #endif  // WEBRTC_TEST_FRAME_GENERATOR_CAPTURER_H_
diff --git a/webrtc/video/full_stack_tests.cc b/webrtc/video/full_stack_tests.cc
index eb7e68b..e59280a 100644
--- a/webrtc/video/full_stack_tests.cc
+++ b/webrtc/video/full_stack_tests.cc
@@ -534,8 +534,8 @@
   RunTest(large_room);
 }
 
-#if defined(WEBRTC_ANDROID)
-// Fails on Android:
+#if defined(WEBRTC_ANDROID) || defined(WEBRTC_WIN)
+// Fails on Android and win:
 // https://bugs.chromium.org/p/webrtc/issues/detail?id=7301
 #define MAYBE_LargeRoomVP8_50thumb DISABLED_LargeRoomVP8_50thumb
 #define MAYBE_LargeRoomVP8_15thumb DISABLED_LargeRoomVP8_15thumb