OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_PROTOCOL_VIDEO_FRAME_PUMP_H_ | 5 #ifndef REMOTING_PROTOCOL_VIDEO_FRAME_PUMP_H_ |
6 #define REMOTING_PROTOCOL_VIDEO_FRAME_PUMP_H_ | 6 #define REMOTING_PROTOCOL_VIDEO_FRAME_PUMP_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 // | Time | 63 // | Time |
64 // v | 64 // v |
65 // | 65 // |
66 // VideoFramePump would ideally schedule captures so as to saturate the slowest | 66 // VideoFramePump would ideally schedule captures so as to saturate the slowest |
67 // of the capture, encode and network processes. However, it also needs to | 67 // of the capture, encode and network processes. However, it also needs to |
68 // rate-limit captures to avoid overloading the host system, either by consuming | 68 // rate-limit captures to avoid overloading the host system, either by consuming |
69 // too much CPU, or hogging the host's graphics subsystem. | 69 // too much CPU, or hogging the host's graphics subsystem. |
70 class VideoFramePump : public VideoStream, | 70 class VideoFramePump : public VideoStream, |
71 public webrtc::DesktopCapturer::Callback { | 71 public webrtc::DesktopCapturer::Callback { |
72 public: | 72 public: |
73 // Enables timestamps for generated frames. Used for testing. | |
74 static void EnableTimestampsForTests(); | |
75 | |
76 // Creates a VideoFramePump running capture, encode and network tasks on the | 73 // Creates a VideoFramePump running capture, encode and network tasks on the |
77 // supplied TaskRunners. Video will be pumped to |video_stub|, which must | 74 // supplied TaskRunners. Video will be pumped to |video_stub|, which must |
78 // outlive the pump.. | 75 // outlive the pump.. |
79 VideoFramePump(scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner, | 76 VideoFramePump(scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner, |
80 std::unique_ptr<webrtc::DesktopCapturer> capturer, | 77 std::unique_ptr<webrtc::DesktopCapturer> capturer, |
81 std::unique_ptr<VideoEncoder> encoder, | 78 std::unique_ptr<VideoEncoder> encoder, |
82 protocol::VideoStub* video_stub); | 79 protocol::VideoStub* video_stub); |
83 ~VideoFramePump() override; | 80 ~VideoFramePump() override; |
84 | 81 |
85 // VideoStream interface. | 82 // VideoStream interface. |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 188 |
192 base::WeakPtrFactory<VideoFramePump> weak_factory_; | 189 base::WeakPtrFactory<VideoFramePump> weak_factory_; |
193 | 190 |
194 DISALLOW_COPY_AND_ASSIGN(VideoFramePump); | 191 DISALLOW_COPY_AND_ASSIGN(VideoFramePump); |
195 }; | 192 }; |
196 | 193 |
197 } // namespace protocol | 194 } // namespace protocol |
198 } // namespace remoting | 195 } // namespace remoting |
199 | 196 |
200 #endif // REMOTING_PROTOCOL_VIDEO_FRAME_PUMP_H_ | 197 #endif // REMOTING_PROTOCOL_VIDEO_FRAME_PUMP_H_ |
OLD | NEW |