Index: remoting/host/video_scheduler.h |
diff --git a/remoting/host/video_scheduler.h b/remoting/host/video_scheduler.h |
index 3bcf27723f9d64f08ad97ba9d9c08e3c784dfbe0..c30ffa25310c1b1062a758d531c35102d4b70623 100644 |
--- a/remoting/host/video_scheduler.h |
+++ b/remoting/host/video_scheduler.h |
@@ -13,7 +13,6 @@ |
#include "base/time/time.h" |
#include "base/timer/timer.h" |
#include "remoting/codec/video_encoder.h" |
-#include "remoting/host/capture_scheduler.h" |
#include "remoting/proto/video.pb.h" |
#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h" |
#include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h" |
@@ -28,6 +27,7 @@ class DesktopCapturer; |
namespace remoting { |
+class CaptureScheduler; |
class CursorShapeInfo; |
namespace protocol { |
@@ -94,15 +94,6 @@ class VideoScheduler : public base::RefCountedThreadSafe<VideoScheduler>, |
protocol::CursorShapeStub* cursor_stub, |
protocol::VideoStub* video_stub); |
- // webrtc::DesktopCapturer::Callback implementation. |
- webrtc::SharedMemory* CreateSharedMemory(size_t size) override; |
- void OnCaptureCompleted(webrtc::DesktopFrame* frame) override; |
- |
- // webrtc::MouseCursorMonitor::Callback implementation. |
- void OnMouseCursor(webrtc::MouseCursor* mouse_cursor) override; |
- void OnMouseCursorPosition(webrtc::MouseCursorMonitor::CursorState state, |
- const webrtc::DesktopVector& position) override; |
- |
// Starts scheduling frame captures. |
void Start(); |
@@ -129,20 +120,29 @@ class VideoScheduler : public base::RefCountedThreadSafe<VideoScheduler>, |
// Capturer thread ---------------------------------------------------------- |
+ // webrtc::DesktopCapturer::Callback implementation. |
+ webrtc::SharedMemory* CreateSharedMemory(size_t size) override; |
+ void OnCaptureCompleted(webrtc::DesktopFrame* frame) override; |
+ |
+ // webrtc::MouseCursorMonitor::Callback implementation. |
+ void OnMouseCursor(webrtc::MouseCursor* mouse_cursor) override; |
+ void OnMouseCursorPosition(webrtc::MouseCursorMonitor::CursorState state, |
+ const webrtc::DesktopVector& position) override; |
+ |
// Starts the capturer on the capture thread. |
void StartOnCaptureThread(); |
// Stops scheduling frame captures on the capture thread. |
void StopOnCaptureThread(); |
- // Schedules the next call to CaptureNextFrame. |
- void ScheduleNextCapture(); |
- |
// Starts the next frame capture, unless there are already too many pending. |
void CaptureNextFrame(); |
- // Called when a frame capture has been encoded & sent to the client. |
- void FrameCaptureCompleted(); |
+ // Called when a frame has been encoded. |
+ void ProcessFrameEncodedOnCaptureThread(base::TimeDelta encode_time); |
+ |
+ // Called when a frame has been sent to the client. |
+ void ProcessFrameSentOnCaptureThread(); |
// Network thread ----------------------------------------------------------- |
@@ -191,32 +191,14 @@ class VideoScheduler : public base::RefCountedThreadSafe<VideoScheduler>, |
protocol::CursorShapeStub* cursor_stub_; |
protocol::VideoStub* video_stub_; |
- // Timer used to schedule CaptureNextFrame(). |
- scoped_ptr<base::OneShotTimer<VideoScheduler> > capture_timer_; |
- |
// Timer used to ensure that we send empty keep-alive frames to the client |
// even when the video stream is paused or encoder is busy. |
scoped_ptr<base::DelayTimer<VideoScheduler> > keep_alive_timer_; |
- // The number of frames being processed, i.e. frames that we are currently |
- // capturing, encoding or sending. The value is capped at 2 to minimize |
- // latency. |
- int pending_frames_; |
- |
- // Set when the capturer is capturing a frame. |
- bool capture_pending_; |
- |
- // True if the previous scheduled capture was skipped. |
- bool did_skip_frame_; |
- |
- // True if capture of video frames is paused. |
- bool is_paused_; |
- |
// Number updated by the caller to trace performance. |
int64 latest_event_timestamp_; |
- // An object to schedule capturing. |
- CaptureScheduler scheduler_; |
+ scoped_ptr<CaptureScheduler> capture_scheduler_; |
DISALLOW_COPY_AND_ASSIGN(VideoScheduler); |
}; |