OLD | NEW |
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 client's | 10 // 1. Reserve Buffer: Before a frame can be captured, a slot in the client's |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 // on success. | 367 // on success. |
368 if (success) { | 368 if (success) { |
369 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 369 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
370 // TODO(isheriff): Unclear if taking a snapshot of cursor here affects user | 370 // TODO(isheriff): Unclear if taking a snapshot of cursor here affects user |
371 // experience in any particular scenarios. Doing it prior to capture may | 371 // experience in any particular scenarios. Doing it prior to capture may |
372 // require evaluating region_in_frame in this file. | 372 // require evaluating region_in_frame in this file. |
373 if (frame_subscriber_ && frame_subscriber_->cursor_renderer_) { | 373 if (frame_subscriber_ && frame_subscriber_->cursor_renderer_) { |
374 CursorRenderer* cursor_renderer = | 374 CursorRenderer* cursor_renderer = |
375 frame_subscriber_->cursor_renderer_.get(); | 375 frame_subscriber_->cursor_renderer_.get(); |
376 if (cursor_renderer->SnapshotCursorState(region_in_frame)) | 376 if (cursor_renderer->SnapshotCursorState(region_in_frame)) |
377 cursor_renderer->RenderOnVideoFrame(frame); | 377 cursor_renderer->RenderOnVideoFrame(frame.get()); |
378 frame->metadata()->SetBoolean( | 378 frame->metadata()->SetBoolean( |
379 media::VideoFrameMetadata::INTERACTIVE_CONTENT, | 379 media::VideoFrameMetadata::INTERACTIVE_CONTENT, |
380 frame_subscriber_->IsUserInteractingWithContent()); | 380 frame_subscriber_->IsUserInteractingWithContent()); |
381 } | 381 } |
382 } | 382 } |
383 capture_frame_cb.Run(std::move(frame), timestamp, success); | 383 capture_frame_cb.Run(std::move(frame), timestamp, success); |
384 } | 384 } |
385 | 385 |
386 bool FrameSubscriber::IsUserInteractingWithContent() { | 386 bool FrameSubscriber::IsUserInteractingWithContent() { |
387 bool interactive_mode = false; | 387 bool interactive_mode = false; |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 void WebContentsVideoCaptureDevice::StopAndDeAllocate() { | 956 void WebContentsVideoCaptureDevice::StopAndDeAllocate() { |
957 core_->StopAndDeAllocate(); | 957 core_->StopAndDeAllocate(); |
958 } | 958 } |
959 | 959 |
960 void WebContentsVideoCaptureDevice::OnUtilizationReport(int frame_feedback_id, | 960 void WebContentsVideoCaptureDevice::OnUtilizationReport(int frame_feedback_id, |
961 double utilization) { | 961 double utilization) { |
962 core_->OnConsumerReportingUtilization(frame_feedback_id, utilization); | 962 core_->OnConsumerReportingUtilization(frame_feedback_id, utilization); |
963 } | 963 } |
964 | 964 |
965 } // namespace content | 965 } // namespace content |
OLD | NEW |