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

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

Issue 2753073006: [Mojo Video Capture] Add support to BuildableVideoCaptureDevice for aborting the device start. (Closed)
Patch Set: Incorporated mcasas@'s suggestions from PatchSet 2 Created 3 years, 8 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
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 #include "content/browser/renderer_host/media/video_capture_host.h" 5 #include "content/browser/renderer_host/media/video_capture_host.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 21 matching lines...) Expand all
32 mojo::MakeStrongBinding( 32 mojo::MakeStrongBinding(
33 base::MakeUnique<VideoCaptureHost>(media_stream_manager), 33 base::MakeUnique<VideoCaptureHost>(media_stream_manager),
34 std::move(request)); 34 std::move(request));
35 } 35 }
36 36
37 VideoCaptureHost::~VideoCaptureHost() { 37 VideoCaptureHost::~VideoCaptureHost() {
38 for (auto it = controllers_.begin(); it != controllers_.end(); ) { 38 for (auto it = controllers_.begin(); it != controllers_.end(); ) {
39 const base::WeakPtr<VideoCaptureController>& controller = it->second; 39 const base::WeakPtr<VideoCaptureController>& controller = it->second;
40 if (controller) { 40 if (controller) {
41 const VideoCaptureControllerID controller_id(it->first); 41 const VideoCaptureControllerID controller_id(it->first);
42 media_stream_manager_->video_capture_manager()->StopCaptureForClient( 42 media_stream_manager_->video_capture_manager()->DisconnectClient(
43 controller.get(), controller_id, this, false); 43 controller.get(), controller_id, this, false);
44 ++it; 44 ++it;
45 } else { 45 } else {
46 // Remove the entry for this controller_id so that when the controller 46 // Remove the entry for this controller_id so that when the controller
47 // is added, the controller will be notified to stop for this client 47 // is added, the controller will be notified to stop for this client
48 // in DoControllerAdded. 48 // in DoControllerAdded.
49 controllers_.erase(it++); 49 controllers_.erase(it++);
50 } 50 }
51 } 51 }
52 } 52 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 device_id_to_observer_map_[device_id] = std::move(observer); 135 device_id_to_observer_map_[device_id] = std::move(observer);
136 136
137 const VideoCaptureControllerID controller_id(device_id); 137 const VideoCaptureControllerID controller_id(device_id);
138 if (controllers_.find(controller_id) != controllers_.end()) { 138 if (controllers_.find(controller_id) != controllers_.end()) {
139 device_id_to_observer_map_[device_id]->OnStateChanged( 139 device_id_to_observer_map_[device_id]->OnStateChanged(
140 mojom::VideoCaptureState::STARTED); 140 mojom::VideoCaptureState::STARTED);
141 return; 141 return;
142 } 142 }
143 143
144 controllers_[controller_id] = base::WeakPtr<VideoCaptureController>(); 144 controllers_[controller_id] = base::WeakPtr<VideoCaptureController>();
145 media_stream_manager_->video_capture_manager()->StartCaptureForClient( 145 media_stream_manager_->video_capture_manager()->ConnectClient(
146 session_id, params, controller_id, this, 146 session_id, params, controller_id, this,
147 base::Bind(&VideoCaptureHost::OnControllerAdded, 147 base::Bind(&VideoCaptureHost::OnControllerAdded,
148 weak_factory_.GetWeakPtr(), device_id)); 148 weak_factory_.GetWeakPtr(), device_id));
149 } 149 }
150 150
151 void VideoCaptureHost::Stop(int32_t device_id) { 151 void VideoCaptureHost::Stop(int32_t device_id) {
152 DVLOG(1) << __func__ << " " << device_id; 152 DVLOG(1) << __func__ << " " << device_id;
153 DCHECK_CURRENTLY_ON(BrowserThread::IO); 153 DCHECK_CURRENTLY_ON(BrowserThread::IO);
154 154
155 VideoCaptureControllerID controller_id(device_id); 155 VideoCaptureControllerID controller_id(device_id);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 } 288 }
289 289
290 void VideoCaptureHost::OnControllerAdded( 290 void VideoCaptureHost::OnControllerAdded(
291 int device_id, 291 int device_id,
292 const base::WeakPtr<VideoCaptureController>& controller) { 292 const base::WeakPtr<VideoCaptureController>& controller) {
293 DCHECK_CURRENTLY_ON(BrowserThread::IO); 293 DCHECK_CURRENTLY_ON(BrowserThread::IO);
294 VideoCaptureControllerID controller_id(device_id); 294 VideoCaptureControllerID controller_id(device_id);
295 auto it = controllers_.find(controller_id); 295 auto it = controllers_.find(controller_id);
296 if (it == controllers_.end()) { 296 if (it == controllers_.end()) {
297 if (controller) { 297 if (controller) {
298 media_stream_manager_->video_capture_manager()->StopCaptureForClient( 298 media_stream_manager_->video_capture_manager()->DisconnectClient(
299 controller.get(), controller_id, this, false); 299 controller.get(), controller_id, this, false);
300 } 300 }
301 return; 301 return;
302 } 302 }
303 303
304 if (!controller) { 304 if (!controller) {
305 if (base::ContainsKey(device_id_to_observer_map_, controller_id)) { 305 if (base::ContainsKey(device_id_to_observer_map_, controller_id)) {
306 device_id_to_observer_map_[device_id]->OnStateChanged( 306 device_id_to_observer_map_[device_id]->OnStateChanged(
307 mojom::VideoCaptureState::FAILED); 307 mojom::VideoCaptureState::FAILED);
308 } 308 }
(...skipping 11 matching lines...) Expand all
320 320
321 auto it = controllers_.find(controller_id); 321 auto it = controllers_.find(controller_id);
322 if (it == controllers_.end()) 322 if (it == controllers_.end())
323 return; 323 return;
324 324
325 const base::WeakPtr<VideoCaptureController> controller = it->second; 325 const base::WeakPtr<VideoCaptureController> controller = it->second;
326 controllers_.erase(it); 326 controllers_.erase(it);
327 if (!controller) 327 if (!controller)
328 return; 328 return;
329 329
330 media_stream_manager_->video_capture_manager()->StopCaptureForClient( 330 media_stream_manager_->video_capture_manager()->DisconnectClient(
331 controller.get(), controller_id, this, on_error); 331 controller.get(), controller_id, this, on_error);
332 } 332 }
333 333
334 } // namespace content 334 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698