| 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 #include "remoting/protocol/webrtc_video_capturer_adapter.h" | 5 #include "remoting/protocol/webrtc_video_capturer_adapter.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "remoting/base/constants.h" | 9 #include "remoting/base/constants.h" |
| 10 #include "third_party/libyuv/include/libyuv/convert.h" | 10 #include "third_party/libyuv/include/libyuv/convert.h" |
| 11 #include "third_party/webrtc/media/engine/webrtcvideoframe.h" | 11 #include "third_party/webrtc/media/engine/webrtcvideoframe.h" |
| 12 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" | 12 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" |
| 13 | 13 |
| 14 namespace remoting { | 14 namespace remoting { |
| 15 namespace protocol { | 15 namespace protocol { |
| 16 | 16 |
| 17 // Number of frames to be captured per second. | 17 // Number of frames to be captured per second. |
| 18 const int kFramesPerSec = 30; | 18 const int kFramesPerSec = 30; |
| 19 | 19 |
| 20 WebrtcVideoCapturerAdapter::WebrtcVideoCapturerAdapter( | 20 WebrtcVideoCapturerAdapter::WebrtcVideoCapturerAdapter( |
| 21 scoped_ptr<webrtc::DesktopCapturer> capturer) | 21 std::unique_ptr<webrtc::DesktopCapturer> capturer) |
| 22 : desktop_capturer_(std::move(capturer)), weak_factory_(this) { | 22 : desktop_capturer_(std::move(capturer)), weak_factory_(this) { |
| 23 DCHECK(desktop_capturer_); | 23 DCHECK(desktop_capturer_); |
| 24 | 24 |
| 25 // Disable video adaptation since we don't intend to use it. | 25 // Disable video adaptation since we don't intend to use it. |
| 26 set_enable_video_adapter(false); | 26 set_enable_video_adapter(false); |
| 27 } | 27 } |
| 28 | 28 |
| 29 WebrtcVideoCapturerAdapter::~WebrtcVideoCapturerAdapter() { | 29 WebrtcVideoCapturerAdapter::~WebrtcVideoCapturerAdapter() { |
| 30 DCHECK(!capture_timer_); | 30 DCHECK(!capture_timer_); |
| 31 } | 31 } |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 void WebrtcVideoCapturerAdapter::OnCaptureCompleted( | 150 void WebrtcVideoCapturerAdapter::OnCaptureCompleted( |
| 151 webrtc::DesktopFrame* frame) { | 151 webrtc::DesktopFrame* frame) { |
| 152 DCHECK(thread_checker_.CalledOnValidThread()); | 152 DCHECK(thread_checker_.CalledOnValidThread()); |
| 153 | 153 |
| 154 DCHECK(capture_pending_); | 154 DCHECK(capture_pending_); |
| 155 capture_pending_ = false; | 155 capture_pending_ = false; |
| 156 | 156 |
| 157 if (!frame) | 157 if (!frame) |
| 158 return; | 158 return; |
| 159 | 159 |
| 160 scoped_ptr<webrtc::DesktopFrame> owned_frame(frame); | 160 std::unique_ptr<webrtc::DesktopFrame> owned_frame(frame); |
| 161 | 161 |
| 162 // TODO(sergeyu): Currently the adapter keeps generating frames even when | 162 // TODO(sergeyu): Currently the adapter keeps generating frames even when |
| 163 // nothing is changing on the screen. This is necessary because the video | 163 // nothing is changing on the screen. This is necessary because the video |
| 164 // sender drops frames. Obviously this is a suboptimal. The sending code in | 164 // sender drops frames. Obviously this is a suboptimal. The sending code in |
| 165 // WebRTC needs to have some mechanism to notify when the bandwidth is | 165 // WebRTC needs to have some mechanism to notify when the bandwidth is |
| 166 // exceeded, so the capturer can adapt frame rate. | 166 // exceeded, so the capturer can adapt frame rate. |
| 167 | 167 |
| 168 webrtc::DesktopVector dpi = | 168 webrtc::DesktopVector dpi = |
| 169 frame->dpi().is_zero() ? webrtc::DesktopVector(kDefaultDpi, kDefaultDpi) | 169 frame->dpi().is_zero() ? webrtc::DesktopVector(kDefaultDpi, kDefaultDpi) |
| 170 : frame->dpi(); | 170 : frame->dpi(); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 DCHECK(thread_checker_.CalledOnValidThread()); | 236 DCHECK(thread_checker_.CalledOnValidThread()); |
| 237 | 237 |
| 238 if (capture_pending_) | 238 if (capture_pending_) |
| 239 return; | 239 return; |
| 240 capture_pending_ = true; | 240 capture_pending_ = true; |
| 241 desktop_capturer_->Capture(webrtc::DesktopRegion()); | 241 desktop_capturer_->Capture(webrtc::DesktopRegion()); |
| 242 } | 242 } |
| 243 | 243 |
| 244 } // namespace protocol | 244 } // namespace protocol |
| 245 } // namespace remoting | 245 } // namespace remoting |
| OLD | NEW |