OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef REMOTING_HOST_VIDEO_SCHEDULER_H_ | 5 #ifndef REMOTING_HOST_VIDEO_SCHEDULER_H_ |
6 #define REMOTING_HOST_VIDEO_SCHEDULER_H_ | 6 #define REMOTING_HOST_VIDEO_SCHEDULER_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner, | 88 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner, |
89 scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner, | 89 scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner, |
90 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, | 90 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, |
91 scoped_ptr<webrtc::DesktopCapturer> capturer, | 91 scoped_ptr<webrtc::DesktopCapturer> capturer, |
92 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor, | 92 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor, |
93 scoped_ptr<VideoEncoder> encoder, | 93 scoped_ptr<VideoEncoder> encoder, |
94 protocol::CursorShapeStub* cursor_stub, | 94 protocol::CursorShapeStub* cursor_stub, |
95 protocol::VideoStub* video_stub); | 95 protocol::VideoStub* video_stub); |
96 | 96 |
97 // webrtc::DesktopCapturer::Callback implementation. | 97 // webrtc::DesktopCapturer::Callback implementation. |
98 virtual webrtc::SharedMemory* CreateSharedMemory(size_t size) override; | 98 webrtc::SharedMemory* CreateSharedMemory(size_t size) override; |
99 virtual void OnCaptureCompleted(webrtc::DesktopFrame* frame) override; | 99 void OnCaptureCompleted(webrtc::DesktopFrame* frame) override; |
100 | 100 |
101 // webrtc::MouseCursorMonitor::Callback implementation. | 101 // webrtc::MouseCursorMonitor::Callback implementation. |
102 virtual void OnMouseCursor( | 102 void OnMouseCursor(webrtc::MouseCursor* mouse_cursor) override; |
103 webrtc::MouseCursor* mouse_cursor) override; | 103 void OnMouseCursorPosition(webrtc::MouseCursorMonitor::CursorState state, |
104 virtual void OnMouseCursorPosition( | 104 const webrtc::DesktopVector& position) override; |
105 webrtc::MouseCursorMonitor::CursorState state, | |
106 const webrtc::DesktopVector& position) override; | |
107 | 105 |
108 // Starts scheduling frame captures. | 106 // Starts scheduling frame captures. |
109 void Start(); | 107 void Start(); |
110 | 108 |
111 // Stop scheduling frame captures. This object cannot be re-used once | 109 // Stop scheduling frame captures. This object cannot be re-used once |
112 // it has been stopped. | 110 // it has been stopped. |
113 void Stop(); | 111 void Stop(); |
114 | 112 |
115 // Pauses or resumes scheduling of frame captures. Pausing/resuming captures | 113 // Pauses or resumes scheduling of frame captures. Pausing/resuming captures |
116 // only affects capture scheduling and does not stop/start the capturer. | 114 // only affects capture scheduling and does not stop/start the capturer. |
117 void Pause(bool pause); | 115 void Pause(bool pause); |
118 | 116 |
119 // Updates the sequence number embedded in VideoPackets. | 117 // Updates the sequence number embedded in VideoPackets. |
120 // Sequence numbers are used for performance measurements. | 118 // Sequence numbers are used for performance measurements. |
121 void UpdateSequenceNumber(int64 sequence_number); | 119 void UpdateSequenceNumber(int64 sequence_number); |
122 | 120 |
123 // Sets whether the video encoder should be requested to encode losslessly, | 121 // Sets whether the video encoder should be requested to encode losslessly, |
124 // or to use a lossless color space (typically requiring higher bandwidth). | 122 // or to use a lossless color space (typically requiring higher bandwidth). |
125 void SetLosslessEncode(bool want_lossless); | 123 void SetLosslessEncode(bool want_lossless); |
126 void SetLosslessColor(bool want_lossless); | 124 void SetLosslessColor(bool want_lossless); |
127 | 125 |
128 private: | 126 private: |
129 friend class base::RefCountedThreadSafe<VideoScheduler>; | 127 friend class base::RefCountedThreadSafe<VideoScheduler>; |
130 virtual ~VideoScheduler(); | 128 ~VideoScheduler() override; |
131 | 129 |
132 // Capturer thread ---------------------------------------------------------- | 130 // Capturer thread ---------------------------------------------------------- |
133 | 131 |
134 // Starts the capturer on the capture thread. | 132 // Starts the capturer on the capture thread. |
135 void StartOnCaptureThread(); | 133 void StartOnCaptureThread(); |
136 | 134 |
137 // Stops scheduling frame captures on the capture thread. | 135 // Stops scheduling frame captures on the capture thread. |
138 void StopOnCaptureThread(); | 136 void StopOnCaptureThread(); |
139 | 137 |
140 // Schedules the next call to CaptureNextFrame. | 138 // Schedules the next call to CaptureNextFrame. |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 | 217 |
220 // An object to schedule capturing. | 218 // An object to schedule capturing. |
221 CaptureScheduler scheduler_; | 219 CaptureScheduler scheduler_; |
222 | 220 |
223 DISALLOW_COPY_AND_ASSIGN(VideoScheduler); | 221 DISALLOW_COPY_AND_ASSIGN(VideoScheduler); |
224 }; | 222 }; |
225 | 223 |
226 } // namespace remoting | 224 } // namespace remoting |
227 | 225 |
228 #endif // REMOTING_HOST_VIDEO_SCHEDULER_H_ | 226 #endif // REMOTING_HOST_VIDEO_SCHEDULER_H_ |
OLD | NEW |