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

Side by Side Diff: remoting/protocol/webrtc_video_capturer_adapter.h

Issue 1571543002: Implement missing features in WebrtcVideoStream. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
OLDNEW
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_WEBRTC_VIDEO_CAPTURER_ADAPTER_H_ 5 #ifndef REMOTING_PROTOCOL_WEBRTC_VIDEO_CAPTURER_ADAPTER_H_
6 #define REMOTING_PROTOCOL_WEBRTC_VIDEO_CAPTURER_ADAPTER_H_ 6 #define REMOTING_PROTOCOL_WEBRTC_VIDEO_CAPTURER_ADAPTER_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 24 matching lines...) Expand all
35 // This class controls the capture of video frames from the desktop and is used 35 // This class controls the capture of video frames from the desktop and is used
36 // to construct a VideoSource as part of the webrtc PeerConnection API. 36 // to construct a VideoSource as part of the webrtc PeerConnection API.
37 // WebrtcVideoCapturerAdapter acts as an adapter between webrtc::DesktopCapturer 37 // WebrtcVideoCapturerAdapter acts as an adapter between webrtc::DesktopCapturer
38 // and the cricket::VideoCapturer interface, which it implements. It is used 38 // and the cricket::VideoCapturer interface, which it implements. It is used
39 // to construct a cricket::VideoSource for a PeerConnection, to capture frames 39 // to construct a cricket::VideoSource for a PeerConnection, to capture frames
40 // of the desktop. As indicated in the base implementation, Start() and Stop() 40 // of the desktop. As indicated in the base implementation, Start() and Stop()
41 // should be called on the same thread. 41 // should be called on the same thread.
42 class WebrtcVideoCapturerAdapter : public cricket::VideoCapturer, 42 class WebrtcVideoCapturerAdapter : public cricket::VideoCapturer,
43 public webrtc::DesktopCapturer::Callback { 43 public webrtc::DesktopCapturer::Callback {
44 public: 44 public:
45 typedef base::Callback<void(const webrtc::DesktopSize& size)> SizeCallback;
46
45 explicit WebrtcVideoCapturerAdapter( 47 explicit WebrtcVideoCapturerAdapter(
46 scoped_ptr<webrtc::DesktopCapturer> capturer); 48 scoped_ptr<webrtc::DesktopCapturer> capturer);
47 ~WebrtcVideoCapturerAdapter() override; 49 ~WebrtcVideoCapturerAdapter() override;
48 50
51 void SetSizeCallback(const SizeCallback& size_callback);
52
49 // cricket::VideoCapturer implementation. 53 // cricket::VideoCapturer implementation.
50 bool GetBestCaptureFormat(const cricket::VideoFormat& desired, 54 bool GetBestCaptureFormat(const cricket::VideoFormat& desired,
51 cricket::VideoFormat* best_format) override; 55 cricket::VideoFormat* best_format) override;
52 cricket::CaptureState Start( 56 cricket::CaptureState Start(
53 const cricket::VideoFormat& capture_format) override; 57 const cricket::VideoFormat& capture_format) override;
54 bool Pause(bool pause) override; 58 bool Pause(bool pause) override;
55 void Stop() override; 59 void Stop() override;
56 bool IsRunning() override; 60 bool IsRunning() override;
57 bool IsScreencast() const override; 61 bool IsScreencast() const override;
58 bool GetPreferredFourccs(std::vector<uint32_t>* fourccs) override; 62 bool GetPreferredFourccs(std::vector<uint32_t>* fourccs) override;
59 63
60 private: 64 private:
61 // webrtc::DesktopCapturer::Callback implementation. 65 // webrtc::DesktopCapturer::Callback implementation.
62 webrtc::SharedMemory* CreateSharedMemory(size_t size) override; 66 webrtc::SharedMemory* CreateSharedMemory(size_t size) override;
63 void OnCaptureCompleted(webrtc::DesktopFrame* frame) override; 67 void OnCaptureCompleted(webrtc::DesktopFrame* frame) override;
64 68
65 // Kicks off the next frame capture using |desktop_capturer_|. The captured 69 // Kicks off the next frame capture using |desktop_capturer_|. The captured
66 // frame will be passed to OnCaptureCompleted(). 70 // frame will be passed to OnCaptureCompleted().
67 void CaptureNextFrame(); 71 void CaptureNextFrame();
68 72
69 base::ThreadChecker thread_checker_; 73 base::ThreadChecker thread_checker_;
70 74
71 scoped_ptr<webrtc::DesktopCapturer> desktop_capturer_; 75 scoped_ptr<webrtc::DesktopCapturer> desktop_capturer_;
72 76
77 SizeCallback size_callback_;
78
73 // Timer to call CaptureNextFrame(). 79 // Timer to call CaptureNextFrame().
74 scoped_ptr<base::RepeatingTimer> capture_timer_; 80 scoped_ptr<base::RepeatingTimer> capture_timer_;
75 81
76 // Video frame is kept between captures to avoid YUV conversion for static 82 // Video frame is kept between captures to avoid YUV conversion for static
77 // parts of the screen. 83 // parts of the screen.
78 scoped_ptr<cricket::VideoFrame> yuv_frame_; 84 scoped_ptr<cricket::VideoFrame> yuv_frame_;
79 85
80 bool capture_pending_ = false; 86 bool capture_pending_ = false;
81 87
82 DISALLOW_COPY_AND_ASSIGN(WebrtcVideoCapturerAdapter); 88 DISALLOW_COPY_AND_ASSIGN(WebrtcVideoCapturerAdapter);
83 }; 89 };
84 90
85 } // namespace protocol 91 } // namespace protocol
86 } // namespace remoting 92 } // namespace remoting
87 93
88 #endif // REMOTING_PROTOCOL_WEBRTC_VIDEO_CAPTURER_ADAPTER_H_ 94 #endif // REMOTING_PROTOCOL_WEBRTC_VIDEO_CAPTURER_ADAPTER_H_
89 95
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698