| 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 "third_party/libyuv/include/libyuv/convert.h" | 9 #include "third_party/libyuv/include/libyuv/convert.h" |
| 10 #include "third_party/webrtc/media/engine/webrtcvideoframe.h" | 10 #include "third_party/webrtc/media/engine/webrtcvideoframe.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 | 23 |
| 24 // Disable video adaptation since we don't intend to use it. | 24 // Disable video adaptation since we don't intend to use it. |
| 25 set_enable_video_adapter(false); | 25 set_enable_video_adapter(false); |
| 26 } | 26 } |
| 27 | 27 |
| 28 WebrtcVideoCapturerAdapter::~WebrtcVideoCapturerAdapter() { | 28 WebrtcVideoCapturerAdapter::~WebrtcVideoCapturerAdapter() { |
| 29 DCHECK(!capture_timer_); | 29 DCHECK(!capture_timer_); |
| 30 } | 30 } |
| 31 | 31 |
| 32 void WebrtcVideoCapturerAdapter::SetSizeCallback( | 32 void WebrtcVideoCapturerAdapter::SetSizeCallback( |
| 33 const SizeCallback& size_callback) { | 33 const VideoStream::SizeCallback& size_callback) { |
| 34 DCHECK(thread_checker_.CalledOnValidThread()); | 34 DCHECK(thread_checker_.CalledOnValidThread()); |
| 35 size_callback_ = size_callback; | 35 size_callback_ = size_callback; |
| 36 } | 36 } |
| 37 | 37 |
| 38 base::WeakPtr<WebrtcVideoCapturerAdapter> | 38 base::WeakPtr<WebrtcVideoCapturerAdapter> |
| 39 WebrtcVideoCapturerAdapter::GetWeakPtr() { | 39 WebrtcVideoCapturerAdapter::GetWeakPtr() { |
| 40 return weak_factory_.GetWeakPtr(); | 40 return weak_factory_.GetWeakPtr(); |
| 41 } | 41 } |
| 42 | 42 |
| 43 bool WebrtcVideoCapturerAdapter::GetBestCaptureFormat( | 43 bool WebrtcVideoCapturerAdapter::GetBestCaptureFormat( |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 // nothing is changing on the screen. This is necessary because the video | 162 // nothing is changing on the screen. This is necessary because the video |
| 163 // sender drops frames. Obviously this is a suboptimal. The sending code in | 163 // sender drops frames. Obviously this is a suboptimal. The sending code in |
| 164 // WebRTC needs to have some mechanism to notify when the bandwidth is | 164 // WebRTC needs to have some mechanism to notify when the bandwidth is |
| 165 // exceeded, so the capturer can adapt frame rate. | 165 // exceeded, so the capturer can adapt frame rate. |
| 166 | 166 |
| 167 size_t width = frame->size().width(); | 167 size_t width = frame->size().width(); |
| 168 size_t height = frame->size().height(); | 168 size_t height = frame->size().height(); |
| 169 if (!yuv_frame_ || yuv_frame_->GetWidth() != width || | 169 if (!yuv_frame_ || yuv_frame_->GetWidth() != width || |
| 170 yuv_frame_->GetHeight() != height) { | 170 yuv_frame_->GetHeight() != height) { |
| 171 if (!size_callback_.is_null()) | 171 if (!size_callback_.is_null()) |
| 172 size_callback_.Run(frame->size()); | 172 size_callback_.Run(frame->size(), frame->dpi()); |
| 173 | 173 |
| 174 scoped_ptr<cricket::WebRtcVideoFrame> webrtc_frame( | 174 scoped_ptr<cricket::WebRtcVideoFrame> webrtc_frame( |
| 175 new cricket::WebRtcVideoFrame()); | 175 new cricket::WebRtcVideoFrame()); |
| 176 webrtc_frame->InitToEmptyBuffer(width, height, 0); | 176 webrtc_frame->InitToEmptyBuffer(width, height, 0); |
| 177 yuv_frame_ = std::move(webrtc_frame); | 177 yuv_frame_ = std::move(webrtc_frame); |
| 178 | 178 |
| 179 // Set updated_region so the whole frame is converted to YUV below. | 179 // Set updated_region so the whole frame is converted to YUV below. |
| 180 frame->mutable_updated_region()->SetRect( | 180 frame->mutable_updated_region()->SetRect( |
| 181 webrtc::DesktopRect::MakeWH(width, height)); | 181 webrtc::DesktopRect::MakeWH(width, height)); |
| 182 } | 182 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 DCHECK(thread_checker_.CalledOnValidThread()); | 222 DCHECK(thread_checker_.CalledOnValidThread()); |
| 223 | 223 |
| 224 if (capture_pending_) | 224 if (capture_pending_) |
| 225 return; | 225 return; |
| 226 capture_pending_ = true; | 226 capture_pending_ = true; |
| 227 desktop_capturer_->Capture(webrtc::DesktopRegion()); | 227 desktop_capturer_->Capture(webrtc::DesktopRegion()); |
| 228 } | 228 } |
| 229 | 229 |
| 230 } // namespace protocol | 230 } // namespace protocol |
| 231 } // namespace remoting | 231 } // namespace remoting |
| OLD | NEW |