Chromium Code Reviews| Index: content/browser/renderer_host/media/video_capture_controller.cc |
| diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc |
| index 557828cb9ce3ec0ffce046f9c106593f5a54b62b..8cd1b280f3bca51383d099a749c4bd7649ce3739 100644 |
| --- a/content/browser/renderer_host/media/video_capture_controller.cc |
| +++ b/content/browser/renderer_host/media/video_capture_controller.cc |
| @@ -40,6 +40,9 @@ namespace content { |
| namespace { |
| +// Counter used for identifying a DeviceRequest to start a capture device. |
| +static int g_device_start_id = 0; |
| + |
| static const int kInfiniteRatio = 99999; |
| #define UMA_HISTOGRAM_ASPECT_RATIO(name, width, height) \ |
| @@ -160,8 +163,17 @@ VideoCaptureController::BufferContext::CloneHandle() { |
| return buffer_handle_->Clone(); |
| } |
| -VideoCaptureController::VideoCaptureController() |
| - : consumer_feedback_observer_(nullptr), |
| +VideoCaptureController::VideoCaptureController( |
| + const std::string& device_id, |
| + MediaStreamType stream_type, |
| + const media::VideoCaptureParams& params, |
| + std::unique_ptr<BuildableVideoCaptureDevice> buildable_device) |
| + : serial_id_(g_device_start_id++), |
| + device_id_(device_id), |
| + stream_type_(stream_type), |
| + parameters_(params), |
| + buildable_device_(std::move(buildable_device)), |
| + consumer_feedback_observer_(nullptr), |
| state_(VIDEO_CAPTURE_STATE_STARTING), |
| has_received_frames_(false), |
| weak_ptr_factory_(this) { |
| @@ -484,6 +496,62 @@ void VideoCaptureController::OnStartedUsingGpuDecode() { |
| PerformForClientsWithOpenSession(base::Bind(&CallOnStartedUsingGpuDecode)); |
| } |
| +void VideoCaptureController::CreateAndStartDeviceAsync( |
| + const media::VideoCaptureParams& params, |
| + BuildableVideoCaptureDevice::Callbacks* callbacks, |
| + base::OnceClosure done_cb) { |
| + buildable_device_->CreateAndStartDeviceAsync(this, params, callbacks, |
| + std::move(done_cb)); |
| +} |
| + |
| +void VideoCaptureController::ReleaseDeviceAsync(base::OnceClosure done_cb) { |
| + buildable_device_->ReleaseDeviceAsync(this, std::move(done_cb)); |
| +} |
| + |
| +bool VideoCaptureController::IsDeviceAlive() const { |
| + return buildable_device_->IsDeviceAlive(); |
| +} |
| + |
| +bool VideoCaptureController::CorrespondsToController( |
| + const VideoCaptureController* controller) const { |
| + return controller == this; |
| +} |
|
mcasas
2017/03/22 22:43:16
How is this method supposed to be used?
(It isn't
chfremer
2017/03/22 23:20:38
Good catch. With the merge of VideoCaptureDeviceEn
|
| + |
| +void VideoCaptureController::GetPhotoCapabilities( |
| + media::VideoCaptureDevice::GetPhotoCapabilitiesCallback callback) const { |
| + buildable_device_->GetPhotoCapabilities(std::move(callback)); |
| +} |
| + |
| +void VideoCaptureController::SetPhotoOptions( |
| + media::mojom::PhotoSettingsPtr settings, |
| + media::VideoCaptureDevice::SetPhotoOptionsCallback callback) { |
| + buildable_device_->SetPhotoOptions(std::move(settings), std::move(callback)); |
| +} |
| + |
| +void VideoCaptureController::TakePhoto( |
| + media::VideoCaptureDevice::TakePhotoCallback callback) { |
| + buildable_device_->TakePhoto(std::move(callback)); |
| +} |
| + |
| +void VideoCaptureController::MaybeSuspend() { |
| + buildable_device_->MaybeSuspendDevice(); |
| +} |
| + |
| +void VideoCaptureController::Resume() { |
| + buildable_device_->ResumeDevice(); |
| +} |
| + |
| +void VideoCaptureController::RequestRefreshFrame() { |
| + buildable_device_->RequestRefreshFrame(); |
| +} |
| + |
| +void VideoCaptureController::SetDesktopCaptureWindowIdAsync( |
| + gfx::NativeViewId window_id, |
| + base::OnceClosure done_cb) { |
| + buildable_device_->SetDesktopCaptureWindowIdAsync(window_id, |
| + std::move(done_cb)); |
| +} |
| + |
| VideoCaptureController::ControllerClient* VideoCaptureController::FindClient( |
| VideoCaptureControllerID id, |
| VideoCaptureControllerEventHandler* handler, |