| 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 consumer's | 10 // 1. Reserve Buffer: Before a frame can be captured, a slot in the consumer's |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 VideoCaptureOracle::Event event, | 419 VideoCaptureOracle::Event event, |
| 420 base::Time event_time, | 420 base::Time event_time, |
| 421 scoped_refptr<media::VideoFrame>* storage, | 421 scoped_refptr<media::VideoFrame>* storage, |
| 422 RenderWidgetHostViewFrameSubscriber::DeliverFrameCallback* callback) { | 422 RenderWidgetHostViewFrameSubscriber::DeliverFrameCallback* callback) { |
| 423 base::AutoLock guard(lock_); | 423 base::AutoLock guard(lock_); |
| 424 | 424 |
| 425 if (!consumer_ || !is_started_) | 425 if (!consumer_ || !is_started_) |
| 426 return false; // Capture is stopped. | 426 return false; // Capture is stopped. |
| 427 | 427 |
| 428 scoped_refptr<media::VideoFrame> output_buffer = | 428 scoped_refptr<media::VideoFrame> output_buffer = |
| 429 consumer_->ReserveOutputBuffer(); | 429 consumer_->ReserveOutputVideoFrame(); |
| 430 const bool should_capture = | 430 const bool should_capture = |
| 431 oracle_->ObserveEventAndDecideCapture(event, event_time); | 431 oracle_->ObserveEventAndDecideCapture(event, event_time); |
| 432 const bool content_is_dirty = | 432 const bool content_is_dirty = |
| 433 (event == VideoCaptureOracle::kCompositorUpdate || | 433 (event == VideoCaptureOracle::kCompositorUpdate || |
| 434 event == VideoCaptureOracle::kSoftwarePaint); | 434 event == VideoCaptureOracle::kSoftwarePaint); |
| 435 const char* event_name = | 435 const char* event_name = |
| 436 (event == VideoCaptureOracle::kTimerPoll ? "poll" : | 436 (event == VideoCaptureOracle::kTimerPoll ? "poll" : |
| 437 (event == VideoCaptureOracle::kCompositorUpdate ? "gpu" : | 437 (event == VideoCaptureOracle::kCompositorUpdate ? "gpu" : |
| 438 "paint")); | 438 "paint")); |
| 439 | 439 |
| (...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1240 media::VideoCaptureDevice::Name name; | 1240 media::VideoCaptureDevice::Name name; |
| 1241 base::SStringPrintf(&name.device_name, | 1241 base::SStringPrintf(&name.device_name, |
| 1242 "WebContents[%.*s]", | 1242 "WebContents[%.*s]", |
| 1243 static_cast<int>(device_id.size()), device_id.data()); | 1243 static_cast<int>(device_id.size()), device_id.data()); |
| 1244 name.unique_id = device_id; | 1244 name.unique_id = device_id; |
| 1245 | 1245 |
| 1246 return new WebContentsVideoCaptureDevice( | 1246 return new WebContentsVideoCaptureDevice( |
| 1247 name, render_process_id, render_view_id); | 1247 name, render_process_id, render_view_id); |
| 1248 } | 1248 } |
| 1249 | 1249 |
| 1250 media::VideoEncodingCapability |
| 1251 WebContentsVideoCaptureDevice::GetEncodingCapability() { |
| 1252 return media::VideoEncodingCapability(); |
| 1253 } |
| 1254 |
| 1255 void WebContentsVideoCaptureDevice::TryConfigureEncodedBitstream( |
| 1256 const media::RuntimeVideoEncodingParameters& params) { |
| 1257 } |
| 1258 |
| 1250 void WebContentsVideoCaptureDevice::Allocate( | 1259 void WebContentsVideoCaptureDevice::Allocate( |
| 1251 int width, int height, int frame_rate, | 1260 int width, int height, int frame_rate, |
| 1252 VideoCaptureDevice::EventHandler* consumer) { | 1261 VideoCaptureDevice::EventHandler* consumer) { |
| 1253 impl_->Allocate(width, height, frame_rate, consumer); | 1262 impl_->Allocate(width, height, frame_rate, consumer); |
| 1254 } | 1263 } |
| 1255 | 1264 |
| 1256 void WebContentsVideoCaptureDevice::Start() { | 1265 void WebContentsVideoCaptureDevice::Start() { |
| 1257 impl_->Start(); | 1266 impl_->Start(); |
| 1258 } | 1267 } |
| 1259 | 1268 |
| 1260 void WebContentsVideoCaptureDevice::Stop() { | 1269 void WebContentsVideoCaptureDevice::Stop() { |
| 1261 impl_->Stop(); | 1270 impl_->Stop(); |
| 1262 } | 1271 } |
| 1263 | 1272 |
| 1264 void WebContentsVideoCaptureDevice::DeAllocate() { | 1273 void WebContentsVideoCaptureDevice::DeAllocate() { |
| 1265 impl_->DeAllocate(); | 1274 impl_->DeAllocate(); |
| 1266 } | 1275 } |
| 1267 | 1276 |
| 1268 const media::VideoCaptureDevice::Name& | 1277 const media::VideoCaptureDevice::Name& |
| 1269 WebContentsVideoCaptureDevice::device_name() { | 1278 WebContentsVideoCaptureDevice::device_name() { |
| 1270 return device_name_; | 1279 return device_name_; |
| 1271 } | 1280 } |
| 1272 | 1281 |
| 1273 } // namespace content | 1282 } // namespace content |
| OLD | NEW |