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

Side by Side Diff: webrtc/media/engine/webrtcvideocapturer.cc

Issue 1689923002: Reland of Make cricket::VideoCapturer implement VideoSourceInterface (patchset #14 id:30000… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased Created 4 years, 10 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
« no previous file with comments | « webrtc/media/engine/webrtcvideocapturer.h ('k') | webrtc/media/engine/webrtcvideoengine2.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/media/engine/webrtcvideocapturer.h" 11 #include "webrtc/media/engine/webrtcvideocapturer.h"
12 12
13 #ifdef HAVE_CONFIG_H 13 #ifdef HAVE_CONFIG_H
14 #include <config.h> 14 #include <config.h>
15 #endif 15 #endif
16 16
17 #ifdef HAVE_WEBRTC_VIDEO
18 #include "webrtc/base/arraysize.h" 17 #include "webrtc/base/arraysize.h"
19 #include "webrtc/base/bind.h" 18 #include "webrtc/base/bind.h"
20 #include "webrtc/base/checks.h" 19 #include "webrtc/base/checks.h"
21 #include "webrtc/base/criticalsection.h" 20 #include "webrtc/base/criticalsection.h"
22 #include "webrtc/base/logging.h" 21 #include "webrtc/base/logging.h"
23 #include "webrtc/base/safe_conversions.h" 22 #include "webrtc/base/safe_conversions.h"
24 #include "webrtc/base/thread.h" 23 #include "webrtc/base/thread.h"
25 #include "webrtc/base/timeutils.h" 24 #include "webrtc/base/timeutils.h"
26 #include "webrtc/media/engine/webrtcvideoframe.h" 25 #include "webrtc/media/engine/webrtcvideoframe.h"
27 #include "webrtc/media/engine/webrtcvideoframefactory.h" 26 #include "webrtc/media/engine/webrtcvideoframefactory.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 if (!module_) { 195 if (!module_) {
197 LOG(LS_ERROR) << "Failed to create capturer for id: " << device.id; 196 LOG(LS_ERROR) << "Failed to create capturer for id: " << device.id;
198 return false; 197 return false;
199 } 198 }
200 199
201 // It is safe to change member attributes now. 200 // It is safe to change member attributes now.
202 module_->AddRef(); 201 module_->AddRef();
203 SetId(device.id); 202 SetId(device.id);
204 SetSupportedFormats(supported); 203 SetSupportedFormats(supported);
205 204
206 // Ensure these 2 have the same value.
207 SetApplyRotation(module_->GetApplyRotation());
208
209 return true; 205 return true;
210 } 206 }
211 207
212 bool WebRtcVideoCapturer::Init(webrtc::VideoCaptureModule* module) { 208 bool WebRtcVideoCapturer::Init(webrtc::VideoCaptureModule* module) {
213 RTC_DCHECK(!start_thread_); 209 RTC_DCHECK(!start_thread_);
214 if (module_) { 210 if (module_) {
215 LOG(LS_ERROR) << "The capturer is already initialized"; 211 LOG(LS_ERROR) << "The capturer is already initialized";
216 return false; 212 return false;
217 } 213 }
218 if (!module) { 214 if (!module) {
(...skipping 17 matching lines...) Expand all
236 best_format->width = desired.width; 232 best_format->width = desired.width;
237 best_format->height = desired.height; 233 best_format->height = desired.height;
238 best_format->fourcc = FOURCC_I420; 234 best_format->fourcc = FOURCC_I420;
239 best_format->interval = desired.interval; 235 best_format->interval = desired.interval;
240 LOG(LS_INFO) << "Failed to find best capture format," 236 LOG(LS_INFO) << "Failed to find best capture format,"
241 << " fall back to the requested format " 237 << " fall back to the requested format "
242 << best_format->ToString(); 238 << best_format->ToString();
243 } 239 }
244 return true; 240 return true;
245 } 241 }
246 bool WebRtcVideoCapturer::SetApplyRotation(bool enable) { 242 void WebRtcVideoCapturer::OnSinkWantsChanged(const rtc::VideoSinkWants& wants) {
247 // Can't take lock here as this will cause deadlock with 243 // Can't take lock here as this will cause deadlock with
248 // OnIncomingCapturedFrame. In fact, the whole method, including methods it 244 // OnIncomingCapturedFrame. In fact, the whole method, including methods it
249 // calls, can't take lock. 245 // calls, can't take lock.
250 RTC_DCHECK(module_); 246 RTC_DCHECK(module_);
251 247
252 const std::string group_name = 248 const std::string group_name =
253 webrtc::field_trial::FindFullName("WebRTC-CVO"); 249 webrtc::field_trial::FindFullName("WebRTC-CVO");
254 250
255 if (group_name == "Disabled") { 251 if (group_name == "Disabled") {
256 return true; 252 return;
257 } 253 }
258 254
259 if (!VideoCapturer::SetApplyRotation(enable)) { 255 VideoCapturer::OnSinkWantsChanged(wants);
260 return false; 256 bool result = module_->SetApplyRotation(wants.rotation_applied);
261 } 257 RTC_CHECK(result);
262 return module_->SetApplyRotation(enable); 258
259 return;
263 } 260 }
264 261
265 CaptureState WebRtcVideoCapturer::Start(const VideoFormat& capture_format) { 262 CaptureState WebRtcVideoCapturer::Start(const VideoFormat& capture_format) {
266 if (!module_) { 263 if (!module_) {
267 LOG(LS_ERROR) << "The capturer has not been initialized"; 264 LOG(LS_ERROR) << "The capturer has not been initialized";
268 return CS_NO_DEVICE; 265 return CS_NO_DEVICE;
269 } 266 }
270 if (start_thread_) { 267 if (start_thread_) {
271 LOG(LS_ERROR) << "The capturer is already running"; 268 LOG(LS_ERROR) << "The capturer is already running";
272 RTC_DCHECK(start_thread_->IsCurrent()) 269 RTC_DCHECK(start_thread_->IsCurrent())
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 pixel_width = 1; 417 pixel_width = 1;
421 pixel_height = 1; 418 pixel_height = 1;
422 // Convert units from VideoFrame RenderTimeMs to CapturedFrame (nanoseconds). 419 // Convert units from VideoFrame RenderTimeMs to CapturedFrame (nanoseconds).
423 time_stamp = sample.render_time_ms() * rtc::kNumNanosecsPerMillisec; 420 time_stamp = sample.render_time_ms() * rtc::kNumNanosecsPerMillisec;
424 data_size = rtc::checked_cast<uint32_t>(length); 421 data_size = rtc::checked_cast<uint32_t>(length);
425 data = buffer; 422 data = buffer;
426 rotation = sample.rotation(); 423 rotation = sample.rotation();
427 } 424 }
428 425
429 } // namespace cricket 426 } // namespace cricket
430
431 #endif // HAVE_WEBRTC_VIDEO
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideocapturer.h ('k') | webrtc/media/engine/webrtcvideoengine2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698