Index: remoting/host/capture_scheduler.h |
diff --git a/remoting/host/capture_scheduler.h b/remoting/host/capture_scheduler.h |
deleted file mode 100644 |
index be8131b5da25ed82ba49cb2a84cb23eb1a7adaeb..0000000000000000000000000000000000000000 |
--- a/remoting/host/capture_scheduler.h |
+++ /dev/null |
@@ -1,113 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef REMOTING_HOST_CAPTURE_SCHEDULER_H_ |
-#define REMOTING_HOST_CAPTURE_SCHEDULER_H_ |
- |
-#include "base/callback.h" |
-#include "base/threading/thread_checker.h" |
-#include "base/time/tick_clock.h" |
-#include "base/time/time.h" |
-#include "base/timer/timer.h" |
-#include "remoting/base/running_average.h" |
-#include "remoting/protocol/video_feedback_stub.h" |
- |
-namespace remoting { |
- |
-class VideoPacket; |
- |
-// CaptureScheduler is used by the VideoFramePump to schedule frame capturer, |
-// taking into account capture delay, encoder delay, network bandwidth, etc. |
-// It implements VideoFeedbackStub to receive frame acknowledgments from the |
-// client. |
-// |
-// It attempts to achieve the following goals when scheduling frames: |
-// - Keep round-trip latency as low a possible. |
-// - Parallelize capture, encode and transmission, to achieve frame rate as |
-// close to the target of 30fps as possible. |
-// - Limit CPU usage to 50%. |
-class CaptureScheduler : public protocol::VideoFeedbackStub { |
- public: |
- explicit CaptureScheduler(const base::Closure& capture_closure); |
- ~CaptureScheduler() override; |
- |
- // Starts the scheduler. |
- void Start(); |
- |
- // Pauses or unpauses the stream. |
- void Pause(bool pause); |
- |
- // Notifies the scheduler that a capture has been completed. |
- void OnCaptureCompleted(); |
- |
- // Notifies the scheduler that a frame has been encoded. The scheduler can |
- // change |packet| if necessary, e.g. set |frame_id|. |
- void OnFrameEncoded(VideoPacket* packet); |
- |
- // Notifies the scheduler that a frame has been sent. |
- void OnFrameSent(); |
- |
- // VideoFeedbackStub interface. |
- void ProcessVideoAck(scoped_ptr<VideoAck> video_ack) override; |
- |
- // Sets minimum interval between frames. |
- void set_minimum_interval(base::TimeDelta minimum_interval) { |
- minimum_interval_ = minimum_interval; |
- } |
- |
- // Helper functions for tests. |
- void SetTickClockForTest(scoped_ptr<base::TickClock> tick_clock); |
- void SetTimerForTest(scoped_ptr<base::Timer> timer); |
- void SetNumOfProcessorsForTest(int num_of_processors); |
- |
- private: |
- // Schedules |capture_timer_| to call CaptureNextFrame() at appropriate time. |
- // Doesn't do anything if next frame cannot be captured yet (e.g. because |
- // there are too many frames being processed). |
- void ScheduleNextCapture(); |
- |
- // Called by |capture_timer_|. Calls |capture_closure_| to start capturing a |
- // new frame. |
- void CaptureNextFrame(); |
- |
- base::Closure capture_closure_; |
- |
- scoped_ptr<base::TickClock> tick_clock_; |
- |
- // Timer used to schedule CaptureNextFrame(). |
- scoped_ptr<base::Timer> capture_timer_; |
- |
- // Minimum interval between frames that determines maximum possible framerate. |
- base::TimeDelta minimum_interval_; |
- |
- int num_of_processors_; |
- |
- RunningAverage capture_time_; |
- RunningAverage encode_time_; |
- |
- // Number of frames pending encoding. |
- int num_encoding_frames_; |
- |
- // Number of outgoing frames for which we haven't received an acknowledgment. |
- int num_unacknowledged_frames_; |
- |
- // Set to true when capture is pending. |
- bool capture_pending_; |
- |
- // Time at which the last capture started. Used to schedule |capture_timer_|. |
- base::TimeTicks last_capture_started_time_; |
- |
- bool is_paused_; |
- |
- // Frame ID to be assigned to the next outgoing video frame. |
- uint32_t next_frame_id_; |
- |
- base::ThreadChecker thread_checker_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CaptureScheduler); |
-}; |
- |
-} // namespace remoting |
- |
-#endif // REMOTING_HOST_CAPTURE_SCHEDULER_H_ |