| Index: remoting/protocol/webrtc_video_capturer_adapter.h
|
| diff --git a/remoting/protocol/webrtc_video_capturer_adapter.h b/remoting/protocol/webrtc_video_capturer_adapter.h
|
| index 4a373e9f138994cf347da81b25074dcf687feffa..3c5375b439f18b93917193eff22f8a8c1799e4b0 100644
|
| --- a/remoting/protocol/webrtc_video_capturer_adapter.h
|
| +++ b/remoting/protocol/webrtc_video_capturer_adapter.h
|
| @@ -21,11 +21,16 @@ namespace base {
|
| class SingleThreadTaskRunner;
|
| } // namespace base
|
|
|
| +namespace cricket {
|
| +class VideoFrame;
|
| +} // namespace cricket
|
| +
|
| namespace webrtc {
|
| class DesktopFrame;
|
| } // namespace webrtc
|
|
|
| namespace remoting {
|
| +namespace protocol {
|
|
|
| // This class controls the capture of video frames from the desktop and is used
|
| // to construct a VideoSource as part of the webrtc PeerConnection API.
|
| @@ -39,15 +44,8 @@ class WebrtcVideoCapturerAdapter : public cricket::VideoCapturer,
|
| public:
|
| explicit WebrtcVideoCapturerAdapter(
|
| scoped_ptr<webrtc::DesktopCapturer> capturer);
|
| -
|
| ~WebrtcVideoCapturerAdapter() override;
|
|
|
| - // webrtc::DesktopCapturer::Callback implementation.
|
| - webrtc::SharedMemory* CreateSharedMemory(size_t size) override;
|
| - // Converts |frame| to a cricket::CapturedFrame and emits that via
|
| - // SignalFrameCaptured for the base::VideoCapturer implementation to process.
|
| - void OnCaptureCompleted(webrtc::DesktopFrame* frame) override;
|
| -
|
| // cricket::VideoCapturer implementation.
|
| bool GetBestCaptureFormat(const cricket::VideoFormat& desired,
|
| cricket::VideoFormat* best_format) override;
|
| @@ -60,22 +58,31 @@ class WebrtcVideoCapturerAdapter : public cricket::VideoCapturer,
|
| bool GetPreferredFourccs(std::vector<uint32_t>* fourccs) override;
|
|
|
| private:
|
| - // Kicks off the next frame capture using |desktop_capturer_|.
|
| - // The captured frame will be passed to OnCaptureCompleted().
|
| + // webrtc::DesktopCapturer::Callback implementation.
|
| + webrtc::SharedMemory* CreateSharedMemory(size_t size) override;
|
| + void OnCaptureCompleted(webrtc::DesktopFrame* frame) override;
|
| +
|
| + // Kicks off the next frame capture using |desktop_capturer_|. The captured
|
| + // frame will be passed to OnCaptureCompleted().
|
| void CaptureNextFrame();
|
|
|
| - // |thread_checker_| is bound to the peer connection worker thread.
|
| base::ThreadChecker thread_checker_;
|
|
|
| - // Used to capture frames.
|
| scoped_ptr<webrtc::DesktopCapturer> desktop_capturer_;
|
|
|
| - // Used to schedule periodic screen captures.
|
| + // Timer to call CaptureNextFrame().
|
| scoped_ptr<base::RepeatingTimer> capture_timer_;
|
|
|
| + // Video frame is kept between captures to avoid YUV conversion for static
|
| + // parts of the screen.
|
| + scoped_ptr<cricket::VideoFrame> yuv_frame_;
|
| +
|
| + bool capture_pending_ = false;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(WebrtcVideoCapturerAdapter);
|
| };
|
|
|
| +} // namespace protocol
|
| } // namespace remoting
|
|
|
| #endif // REMOTING_PROTOCOL_WEBRTC_VIDEO_CAPTURER_ADAPTER_H_
|
|
|