| 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. Therefore, the process of capturing has been split up into a | 7 // performance. Therefore, the process of capturing has been split up into a |
| 8 // pipeline of three stages. Each stage executes on its own thread: | 8 // pipeline of three stages. Each stage executes on its own thread: |
| 9 // | 9 // |
| 10 // 1. Capture: A bitmap is snapshotted/copied from the RenderView's backing | 10 // 1. Capture: A bitmap is snapshotted/copied from the RenderView's backing |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 } | 134 } |
| 135 // Make each dimension a positive, even number; if not already. | 135 // Make each dimension a positive, even number; if not already. |
| 136 fitted_width = std::max(kMinFrameWidth, MakeEven(fitted_width)); | 136 fitted_width = std::max(kMinFrameWidth, MakeEven(fitted_width)); |
| 137 fitted_height = std::max(kMinFrameHeight, MakeEven(fitted_height)); | 137 fitted_height = std::max(kMinFrameHeight, MakeEven(fitted_height)); |
| 138 | 138 |
| 139 *fitted_size = gfx::Size(fitted_width, fitted_height); | 139 *fitted_size = gfx::Size(fitted_width, fitted_height); |
| 140 } | 140 } |
| 141 | 141 |
| 142 // Keeps track of the RenderView to be sourced, and executes copying of the | 142 // Keeps track of the RenderView to be sourced, and executes copying of the |
| 143 // backing store on the UI BrowserThread. | 143 // backing store on the UI BrowserThread. |
| 144 // TODO(miu): Use WebContentsCaptureUtil::RenderViewTracker instead of doing the |
| 145 // observing ourselves here. |
| 144 class BackingStoreCopier : public WebContentsObserver { | 146 class BackingStoreCopier : public WebContentsObserver { |
| 145 public: | 147 public: |
| 146 // Result status and done callback used with StartCopy(). | 148 // Result status and done callback used with StartCopy(). |
| 147 enum Result { | 149 enum Result { |
| 148 OK, | 150 OK, |
| 149 TRANSIENT_ERROR, | 151 TRANSIENT_ERROR, |
| 150 NO_SOURCE, | 152 NO_SOURCE, |
| 151 }; | 153 }; |
| 152 typedef base::Callback<void(Result result, | 154 typedef base::Callback<void(Result result, |
| 153 scoped_ptr<skia::PlatformBitmap> capture, | 155 scoped_ptr<skia::PlatformBitmap> capture, |
| (...skipping 896 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1050 capturer_->SetConsumer(NULL); | 1052 capturer_->SetConsumer(NULL); |
| 1051 capturer_->DeAllocate(); | 1053 capturer_->DeAllocate(); |
| 1052 } | 1054 } |
| 1053 | 1055 |
| 1054 const media::VideoCaptureDevice::Name& | 1056 const media::VideoCaptureDevice::Name& |
| 1055 WebContentsVideoCaptureDevice::device_name() { | 1057 WebContentsVideoCaptureDevice::device_name() { |
| 1056 return device_name_; | 1058 return device_name_; |
| 1057 } | 1059 } |
| 1058 | 1060 |
| 1059 } // namespace content | 1061 } // namespace content |
| OLD | NEW |