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

Side by Side Diff: remoting/host/video_scheduler.h

Issue 455073004: Switch DesktopEnvironment to return a DesktopCapturer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove ShapedDesktopCapturer::Create() Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/host/shaped_screen_capturer_unittest.cc ('k') | remoting/host/video_scheduler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
11 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/time/time.h" 13 #include "base/time/time.h"
14 #include "base/timer/timer.h" 14 #include "base/timer/timer.h"
15 #include "remoting/codec/video_encoder.h" 15 #include "remoting/codec/video_encoder.h"
16 #include "remoting/host/capture_scheduler.h" 16 #include "remoting/host/capture_scheduler.h"
17 #include "remoting/proto/video.pb.h" 17 #include "remoting/proto/video.pb.h"
18 #include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
18 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h" 19 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h"
19 #include "third_party/webrtc/modules/desktop_capture/screen_capturer.h"
20 20
21 namespace base { 21 namespace base {
22 class SingleThreadTaskRunner; 22 class SingleThreadTaskRunner;
23 } // namespace base 23 } // namespace base
24 24
25 namespace media { 25 namespace media {
26 class ScreenCapturer; 26 class DesktopCapturer;
27 } // namespace media 27 } // namespace media
28 28
29 namespace remoting { 29 namespace remoting {
30 30
31 class CursorShapeInfo; 31 class CursorShapeInfo;
32 32
33 namespace protocol { 33 namespace protocol {
34 class CursorShapeInfo; 34 class CursorShapeInfo;
35 class CursorShapeStub; 35 class CursorShapeStub;
36 class VideoStub; 36 class VideoStub;
37 } // namespace protocol 37 } // namespace protocol
38 38
39 // Class responsible for scheduling frame captures from a 39 // Class responsible for scheduling frame captures from a
40 // webrtc::ScreenCapturer, delivering them to a VideoEncoder to encode, and 40 // webrtc::DesktopCapturer, delivering them to a VideoEncoder to encode, and
41 // finally passing the encoded video packets to the specified VideoStub to send 41 // finally passing the encoded video packets to the specified VideoStub to send
42 // on the network. 42 // on the network.
43 // 43 //
44 // THREADING 44 // THREADING
45 // 45 //
46 // This class is supplied TaskRunners to use for capture, encode and network 46 // This class is supplied TaskRunners to use for capture, encode and network
47 // operations. Capture, encode and network transmission tasks are interleaved 47 // operations. Capture, encode and network transmission tasks are interleaved
48 // as illustrated below: 48 // as illustrated below:
49 // 49 //
50 // | CAPTURE ENCODE NETWORK 50 // | CAPTURE ENCODE NETWORK
(...skipping 30 matching lines...) Expand all
81 static void EnableTimestampsForTests(); 81 static void EnableTimestampsForTests();
82 82
83 // Creates a VideoScheduler running capture, encode and network tasks on the 83 // Creates a VideoScheduler running capture, encode and network tasks on the
84 // supplied TaskRunners. Video and cursor shape updates will be pumped to 84 // supplied TaskRunners. Video and cursor shape updates will be pumped to
85 // |video_stub| and |client_stub|, which must remain valid until Stop() is 85 // |video_stub| and |client_stub|, which must remain valid until Stop() is
86 // called. |capturer| is used to capture frames. 86 // called. |capturer| is used to capture frames.
87 VideoScheduler( 87 VideoScheduler(
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::ScreenCapturer> 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 virtual webrtc::SharedMemory* CreateSharedMemory(size_t size) OVERRIDE;
99 virtual void OnCaptureCompleted(webrtc::DesktopFrame* frame) OVERRIDE; 99 virtual void OnCaptureCompleted(webrtc::DesktopFrame* frame) OVERRIDE;
100 100
101 // webrtc::MouseCursorMonitor::Callback implementation. 101 // webrtc::MouseCursorMonitor::Callback implementation.
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 173
174 void EncodedDataAvailableCallback(int64 sequence_number, 174 void EncodedDataAvailableCallback(int64 sequence_number,
175 scoped_ptr<VideoPacket> packet); 175 scoped_ptr<VideoPacket> packet);
176 176
177 // Task runners used by this class. 177 // Task runners used by this class.
178 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner_; 178 scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner_;
179 scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner_; 179 scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner_;
180 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_; 180 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
181 181
182 // Used to capture frames. Always accessed on the capture thread. 182 // Used to capture frames. Always accessed on the capture thread.
183 scoped_ptr<webrtc::ScreenCapturer> capturer_; 183 scoped_ptr<webrtc::DesktopCapturer> capturer_;
184 184
185 // Used to capture mouse cursor shapes. Always accessed on the capture thread. 185 // Used to capture mouse cursor shapes. Always accessed on the capture thread.
186 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor_; 186 scoped_ptr<webrtc::MouseCursorMonitor> mouse_cursor_monitor_;
187 187
188 // Used to encode captured frames. Always accessed on the encode thread. 188 // Used to encode captured frames. Always accessed on the encode thread.
189 scoped_ptr<VideoEncoder> encoder_; 189 scoped_ptr<VideoEncoder> encoder_;
190 190
191 // Interfaces through which video frames and cursor shapes are passed to the 191 // Interfaces through which video frames and cursor shapes are passed to the
192 // client. These members are always accessed on the network thread. 192 // client. These members are always accessed on the network thread.
193 protocol::CursorShapeStub* cursor_stub_; 193 protocol::CursorShapeStub* cursor_stub_;
(...skipping 25 matching lines...) Expand all
219 219
220 // An object to schedule capturing. 220 // An object to schedule capturing.
221 CaptureScheduler scheduler_; 221 CaptureScheduler scheduler_;
222 222
223 DISALLOW_COPY_AND_ASSIGN(VideoScheduler); 223 DISALLOW_COPY_AND_ASSIGN(VideoScheduler);
224 }; 224 };
225 225
226 } // namespace remoting 226 } // namespace remoting
227 227
228 #endif // REMOTING_HOST_VIDEO_SCHEDULER_H_ 228 #endif // REMOTING_HOST_VIDEO_SCHEDULER_H_
OLDNEW
« no previous file with comments | « remoting/host/shaped_screen_capturer_unittest.cc ('k') | remoting/host/video_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698