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

Side by Side Diff: content/browser/renderer_host/media/web_contents_video_capture_device.cc

Issue 12252058: Add a |scope| argument to TRACE_EVENT_INSTANT* and require its presence. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix builds 2 Created 7 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Implementation notes: This needs to work on a variety of hardware 5 // Implementation notes: This needs to work on a variety of hardware
6 // configurations where the speed of the CPU and GPU greatly affect overall 6 // configurations where the speed of the CPU and GPU greatly affect overall
7 // performance. Spanning several threads, the process of capturing has been 7 // performance. Spanning several threads, the process of capturing has been
8 // split up into four conceptual stages: 8 // split up into four conceptual stages:
9 // 9 //
10 // 1. Reserve Buffer: Before a frame can be captured, a slot in the consumer's 10 // 1. Reserve Buffer: Before a frame can be captured, a slot in the consumer's
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 should_sample = sampler_.IsOverdueForSamplingAt(now); 449 should_sample = sampler_.IsOverdueForSamplingAt(now);
450 } 450 }
451 451
452 const char* event_name = (event == TIMER_POLL ? "poll" : 452 const char* event_name = (event == TIMER_POLL ? "poll" :
453 (event == COMPOSITOR_UPDATE ? "gpu" : 453 (event == COMPOSITOR_UPDATE ? "gpu" :
454 "paint")); 454 "paint"));
455 455
456 // Step 3: Consider the various reasons not to initiate a capture. 456 // Step 3: Consider the various reasons not to initiate a capture.
457 if (should_sample && !output_buffer) { 457 if (should_sample && !output_buffer) {
458 TRACE_EVENT_INSTANT1("mirroring", "EncodeLimited", 458 TRACE_EVENT_INSTANT1("mirroring", "EncodeLimited",
459 TRACE_EVENT_SCOPE_THREAD,
459 "trigger", event_name); 460 "trigger", event_name);
460 return false; 461 return false;
461 } else if (!should_sample && output_buffer) { 462 } else if (!should_sample && output_buffer) {
462 if (content_is_dirty) { 463 if (content_is_dirty) {
463 // This is a normal and acceptable way to drop a frame. We've hit our 464 // This is a normal and acceptable way to drop a frame. We've hit our
464 // capture rate limit: for example, the content is animating at 60fps but 465 // capture rate limit: for example, the content is animating at 60fps but
465 // we're capturing at 30fps. 466 // we're capturing at 30fps.
466 TRACE_EVENT_INSTANT1("mirroring", "FpsRateLimited", 467 TRACE_EVENT_INSTANT1("mirroring", "FpsRateLimited",
468 TRACE_EVENT_SCOPE_THREAD,
467 "trigger", event_name); 469 "trigger", event_name);
468 } 470 }
469 return false; 471 return false;
470 } else if (!should_sample && !output_buffer) { 472 } else if (!should_sample && !output_buffer) {
471 // We decided not to capture, but we wouldn't have been able to if we wanted 473 // We decided not to capture, but we wouldn't have been able to if we wanted
472 // to because no output buffer was available. 474 // to because no output buffer was available.
473 TRACE_EVENT_INSTANT1("mirroring", "NearlyEncodeLimited", 475 TRACE_EVENT_INSTANT1("mirroring", "NearlyEncodeLimited",
476 TRACE_EVENT_SCOPE_THREAD,
474 "trigger", event_name); 477 "trigger", event_name);
475 return false; 478 return false;
476 } 479 }
477 480
478 // Step 4: Initiate a capture. 481 // Step 4: Initiate a capture.
479 sampler_.RecordSample(); 482 sampler_.RecordSample();
480 TRACE_EVENT_ASYNC_BEGIN2("mirroring", "Capture", output_buffer.get(), 483 TRACE_EVENT_ASYNC_BEGIN2("mirroring", "Capture", output_buffer.get(),
481 "frame_number", frame_number_, 484 "frame_number", frame_number_,
482 "trigger", event_name); 485 "trigger", event_name);
483 *storage = output_buffer; 486 *storage = output_buffer;
(...skipping 14 matching lines...) Expand all
498 501
499 void CaptureOracle::ReportError() { 502 void CaptureOracle::ReportError() {
500 base::AutoLock guard(lock_); 503 base::AutoLock guard(lock_);
501 if (consumer_) 504 if (consumer_)
502 consumer_->OnError(); 505 consumer_->OnError();
503 } 506 }
504 507
505 void CaptureOracle::InvalidateConsumer() { 508 void CaptureOracle::InvalidateConsumer() {
506 base::AutoLock guard(lock_); 509 base::AutoLock guard(lock_);
507 510
508 TRACE_EVENT_INSTANT0("mirroring", "InvalidateConsumer"); 511 TRACE_EVENT_INSTANT0("mirroring", "InvalidateConsumer",
512 TRACE_EVENT_SCOPE_THREAD);
509 513
510 is_started_ = false; 514 is_started_ = false;
511 consumer_ = NULL; 515 consumer_ = NULL;
512 } 516 }
513 517
514 void CaptureOracle::DidCaptureFrame( 518 void CaptureOracle::DidCaptureFrame(
515 const scoped_refptr<media::VideoFrame>& frame, 519 const scoped_refptr<media::VideoFrame>& frame,
516 base::Time timestamp, 520 base::Time timestamp,
517 bool success) { 521 bool success) {
518 base::AutoLock guard(lock_); 522 base::AutoLock guard(lock_);
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 return false; 1307 return false;
1304 else 1308 else
1305 return true; 1309 return true;
1306 } 1310 }
1307 1311
1308 base::Time SmoothEventSampler::GetLastSampledEvent() { 1312 base::Time SmoothEventSampler::GetLastSampledEvent() {
1309 return last_sample_; 1313 return last_sample_;
1310 } 1314 }
1311 1315
1312 } // namespace content 1316 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/compositor_impl_android.cc ('k') | content/browser/renderer_host/render_widget_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698