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

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

Issue 3001443002: Removed unused async_invoker_ in WebRtcVideoCapturer (Closed)
Patch Set: Created 3 years, 4 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') | no next file » | 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
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 }; 103 };
104 104
105 /////////////////////////////////////////////////////////////////////////// 105 ///////////////////////////////////////////////////////////////////////////
106 // Implementation of class WebRtcVideoCapturer 106 // Implementation of class WebRtcVideoCapturer
107 /////////////////////////////////////////////////////////////////////////// 107 ///////////////////////////////////////////////////////////////////////////
108 108
109 WebRtcVideoCapturer::WebRtcVideoCapturer() 109 WebRtcVideoCapturer::WebRtcVideoCapturer()
110 : factory_(new WebRtcVcmFactory), 110 : factory_(new WebRtcVcmFactory),
111 module_(nullptr), 111 module_(nullptr),
112 captured_frames_(0), 112 captured_frames_(0),
113 start_thread_(nullptr), 113 start_thread_(nullptr) {}
114 async_invoker_(nullptr) {}
115 114
116 WebRtcVideoCapturer::WebRtcVideoCapturer(WebRtcVcmFactoryInterface* factory) 115 WebRtcVideoCapturer::WebRtcVideoCapturer(WebRtcVcmFactoryInterface* factory)
117 : factory_(factory), 116 : factory_(factory),
118 module_(nullptr), 117 module_(nullptr),
119 captured_frames_(0), 118 captured_frames_(0),
120 start_thread_(nullptr), 119 start_thread_(nullptr) {}
121 async_invoker_(nullptr) {}
122 120
123 WebRtcVideoCapturer::~WebRtcVideoCapturer() {} 121 WebRtcVideoCapturer::~WebRtcVideoCapturer() {}
124 122
125 bool WebRtcVideoCapturer::Init(const Device& device) { 123 bool WebRtcVideoCapturer::Init(const Device& device) {
126 RTC_DCHECK(!start_thread_); 124 RTC_DCHECK(!start_thread_);
127 if (module_) { 125 if (module_) {
128 LOG(LS_ERROR) << "The capturer is already initialized"; 126 LOG(LS_ERROR) << "The capturer is already initialized";
129 return false; 127 return false;
130 } 128 }
131 129
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 return CS_FAILED; 247 return CS_FAILED;
250 } 248 }
251 if (start_thread_) { 249 if (start_thread_) {
252 LOG(LS_ERROR) << "The capturer is already running"; 250 LOG(LS_ERROR) << "The capturer is already running";
253 RTC_DCHECK(start_thread_->IsCurrent()) 251 RTC_DCHECK(start_thread_->IsCurrent())
254 << "Trying to start capturer on different threads"; 252 << "Trying to start capturer on different threads";
255 return CS_FAILED; 253 return CS_FAILED;
256 } 254 }
257 255
258 start_thread_ = rtc::Thread::Current(); 256 start_thread_ = rtc::Thread::Current();
259 RTC_DCHECK(!async_invoker_);
260 async_invoker_.reset(new rtc::AsyncInvoker());
261 captured_frames_ = 0; 257 captured_frames_ = 0;
262 258
263 SetCaptureFormat(&capture_format); 259 SetCaptureFormat(&capture_format);
264 260
265 webrtc::VideoCaptureCapability cap; 261 webrtc::VideoCaptureCapability cap;
266 if (!FormatToCapability(capture_format, &cap)) { 262 if (!FormatToCapability(capture_format, &cap)) {
267 LOG(LS_ERROR) << "Invalid capture format specified"; 263 LOG(LS_ERROR) << "Invalid capture format specified";
268 return CS_FAILED; 264 return CS_FAILED;
269 } 265 }
270 266
271 int64_t start = rtc::TimeMillis(); 267 int64_t start = rtc::TimeMillis();
272 module_->RegisterCaptureDataCallback(this); 268 module_->RegisterCaptureDataCallback(this);
273 if (module_->StartCapture(cap) != 0) { 269 if (module_->StartCapture(cap) != 0) {
274 LOG(LS_ERROR) << "Camera '" << GetId() << "' failed to start"; 270 LOG(LS_ERROR) << "Camera '" << GetId() << "' failed to start";
275 module_->DeRegisterCaptureDataCallback(); 271 module_->DeRegisterCaptureDataCallback();
276 async_invoker_.reset();
277 SetCaptureFormat(nullptr); 272 SetCaptureFormat(nullptr);
278 start_thread_ = nullptr; 273 start_thread_ = nullptr;
279 return CS_FAILED; 274 return CS_FAILED;
280 } 275 }
281 276
282 LOG(LS_INFO) << "Camera '" << GetId() << "' started with format " 277 LOG(LS_INFO) << "Camera '" << GetId() << "' started with format "
283 << capture_format.ToString() << ", elapsed time " 278 << capture_format.ToString() << ", elapsed time "
284 << rtc::TimeSince(start) << " ms"; 279 << rtc::TimeSince(start) << " ms";
285 280
286 SetCaptureState(CS_RUNNING); 281 SetCaptureState(CS_RUNNING);
287 return CS_STARTING; 282 return CS_STARTING;
288 } 283 }
289 284
290 void WebRtcVideoCapturer::Stop() { 285 void WebRtcVideoCapturer::Stop() {
291 if (!start_thread_) { 286 if (!start_thread_) {
292 LOG(LS_ERROR) << "The capturer is already stopped"; 287 LOG(LS_ERROR) << "The capturer is already stopped";
293 return; 288 return;
294 } 289 }
295 RTC_DCHECK(start_thread_); 290 RTC_DCHECK(start_thread_);
296 RTC_DCHECK(start_thread_->IsCurrent()); 291 RTC_DCHECK(start_thread_->IsCurrent());
297 RTC_DCHECK(async_invoker_);
298 if (IsRunning()) { 292 if (IsRunning()) {
299 // The module is responsible for OnIncomingCapturedFrame being called, if 293 // The module is responsible for OnIncomingCapturedFrame being called, if
300 // we stop it we will get no further callbacks. 294 // we stop it we will get no further callbacks.
301 module_->StopCapture(); 295 module_->StopCapture();
302 } 296 }
303 module_->DeRegisterCaptureDataCallback(); 297 module_->DeRegisterCaptureDataCallback();
304 298
305 // TODO(juberti): Determine if the VCM exposes any drop stats we can use. 299 // TODO(juberti): Determine if the VCM exposes any drop stats we can use.
306 double drop_ratio = 0.0; 300 double drop_ratio = 0.0;
307 LOG(LS_INFO) << "Camera '" << GetId() << "' stopped after capturing " 301 LOG(LS_INFO) << "Camera '" << GetId() << "' stopped after capturing "
308 << captured_frames_ << " frames and dropping " 302 << captured_frames_ << " frames and dropping "
309 << drop_ratio << "%"; 303 << drop_ratio << "%";
310 304
311 // Clear any pending async invokes (that OnIncomingCapturedFrame may have
312 // caused).
313 async_invoker_.reset();
314
315 SetCaptureFormat(NULL); 305 SetCaptureFormat(NULL);
316 start_thread_ = nullptr; 306 start_thread_ = nullptr;
317 SetCaptureState(CS_STOPPED); 307 SetCaptureState(CS_STOPPED);
318 } 308 }
319 309
320 bool WebRtcVideoCapturer::IsRunning() { 310 bool WebRtcVideoCapturer::IsRunning() {
321 return (module_ != NULL && module_->CaptureStarted()); 311 return (module_ != NULL && module_->CaptureStarted());
322 } 312 }
323 313
324 bool WebRtcVideoCapturer::GetPreferredFourccs(std::vector<uint32_t>* fourccs) { 314 bool WebRtcVideoCapturer::GetPreferredFourccs(std::vector<uint32_t>* fourccs) {
325 if (!fourccs) { 315 if (!fourccs) {
326 return false; 316 return false;
327 } 317 }
328 318
329 fourccs->clear(); 319 fourccs->clear();
330 for (size_t i = 0; i < arraysize(kSupportedFourCCs); ++i) { 320 for (size_t i = 0; i < arraysize(kSupportedFourCCs); ++i) {
331 fourccs->push_back(kSupportedFourCCs[i].fourcc); 321 fourccs->push_back(kSupportedFourCCs[i].fourcc);
332 } 322 }
333 return true; 323 return true;
334 } 324 }
335 325
336 void WebRtcVideoCapturer::OnFrame( 326 void WebRtcVideoCapturer::OnFrame(
337 const webrtc::VideoFrame& sample) { 327 const webrtc::VideoFrame& sample) {
338 // This can only happen between Start() and Stop(). 328 // This can only happen between Start() and Stop().
339 RTC_DCHECK(start_thread_); 329 RTC_DCHECK(start_thread_);
340 RTC_DCHECK(async_invoker_);
341 330
342 ++captured_frames_; 331 ++captured_frames_;
343 // Log the size and pixel aspect ratio of the first captured frame. 332 // Log the size and pixel aspect ratio of the first captured frame.
344 if (1 == captured_frames_) { 333 if (1 == captured_frames_) {
345 LOG(LS_INFO) << "Captured frame size " 334 LOG(LS_INFO) << "Captured frame size "
346 << sample.width() << "x" << sample.height() 335 << sample.width() << "x" << sample.height()
347 << ". Expected format " << GetCaptureFormat()->ToString(); 336 << ". Expected format " << GetCaptureFormat()->ToString();
348 } 337 }
349 338
350 VideoCapturer::OnFrame(sample, sample.width(), sample.height()); 339 VideoCapturer::OnFrame(sample, sample.width(), sample.height());
351 } 340 }
352 341
353 } // namespace cricket 342 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideocapturer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698