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

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

Issue 23551011: From Video Capture, abolish OnFrameInfo and enable resolution changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes from bbudge Created 7 years, 1 month 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 | Annotate | Revision Log
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_manager.h" 5 #include "content/browser/renderer_host/media/video_capture_manager.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 if (!video_capture_device) { 176 if (!video_capture_device) {
177 device_client->OnError(); 177 device_client->OnError();
178 return; 178 return;
179 } 179 }
180 180
181 video_capture_device->AllocateAndStart(capture_params, device_client.Pass()); 181 video_capture_device->AllocateAndStart(capture_params, device_client.Pass());
182 entry->video_capture_device = video_capture_device.Pass(); 182 entry->video_capture_device = video_capture_device.Pass();
183 } 183 }
184 184
185 void VideoCaptureManager::StartCaptureForClient( 185 void VideoCaptureManager::StartCaptureForClient(
186 const media::VideoCaptureParams& capture_params, 186 const media::VideoCaptureParams& params,
187 base::ProcessHandle client_render_process, 187 base::ProcessHandle client_render_process,
188 VideoCaptureControllerID client_id, 188 VideoCaptureControllerID client_id,
189 VideoCaptureControllerEventHandler* client_handler, 189 VideoCaptureControllerEventHandler* client_handler,
190 const DoneCB& done_cb) { 190 const DoneCB& done_cb) {
191 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 191 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
192 DVLOG(1) << "VideoCaptureManager::StartCaptureForClient, (" 192 DVLOG(1) << "VideoCaptureManager::StartCaptureForClient, ("
193 << capture_params.width 193 << params.requested_format.width
194 << ", " << capture_params.height 194 << ", " << params.requested_format.height
195 << ", " << capture_params.frame_rate 195 << ", " << params.requested_format.frame_rate
196 << ", #" << capture_params.session_id 196 << ", #" << params.session_id
197 << ")"; 197 << ")";
198 198
199 DeviceEntry* entry = GetOrCreateDeviceEntry(capture_params.session_id); 199 DeviceEntry* entry = GetOrCreateDeviceEntry(params.session_id);
200 if (!entry) { 200 if (!entry) {
201 done_cb.Run(base::WeakPtr<VideoCaptureController>()); 201 done_cb.Run(base::WeakPtr<VideoCaptureController>());
202 return; 202 return;
203 } 203 }
204 204
205 DCHECK(entry->video_capture_controller); 205 DCHECK(entry->video_capture_controller);
206 206
207 // First client starts the device. 207 // First client starts the device.
208 if (entry->video_capture_controller->GetClientCount() == 0) { 208 if (entry->video_capture_controller->GetClientCount() == 0) {
209 DVLOG(1) << "VideoCaptureManager starting device (type = " 209 DVLOG(1) << "VideoCaptureManager starting device (type = "
210 << entry->stream_type << ", id = " << entry->id << ")"; 210 << entry->stream_type << ", id = " << entry->id << ")";
211 211
212 media::VideoCaptureCapability params_as_capability; 212 media::VideoCaptureCapability params_as_capability;
213 params_as_capability.width = capture_params.width; 213 params_as_capability.session_id = params.session_id;
214 params_as_capability.height = capture_params.height; 214 params_as_capability.width = params.requested_format.width;
215 params_as_capability.frame_rate = capture_params.frame_rate; 215 params_as_capability.height = params.requested_format.height;
216 params_as_capability.session_id = capture_params.session_id; 216 params_as_capability.frame_rate = params.requested_format.frame_rate;
217 params_as_capability.frame_size_type = capture_params.frame_size_type; 217 params_as_capability.frame_size_type =
218 params.requested_format.frame_size_type;
218 219
219 device_loop_->PostTask(FROM_HERE, base::Bind( 220 device_loop_->PostTask(FROM_HERE, base::Bind(
220 &VideoCaptureManager::DoStartDeviceOnDeviceThread, this, 221 &VideoCaptureManager::DoStartDeviceOnDeviceThread, this,
221 entry, params_as_capability, 222 entry, params_as_capability,
222 base::Passed(entry->video_capture_controller->NewDeviceClient()))); 223 base::Passed(entry->video_capture_controller->NewDeviceClient())));
223 } 224 }
224 // Run the callback first, as AddClient() may trigger OnFrameInfo(). 225 // Run the callback first, as AddClient() may trigger OnFrameInfo().
225 done_cb.Run(entry->video_capture_controller->GetWeakPtr()); 226 done_cb.Run(entry->video_capture_controller->GetWeakPtr());
226 entry->video_capture_controller->AddClient(client_id, 227 entry->video_capture_controller->AddClient(client_id,
227 client_handler, 228 client_handler,
228 client_render_process, 229 client_render_process,
229 capture_params); 230 params);
230 } 231 }
231 232
232 void VideoCaptureManager::StopCaptureForClient( 233 void VideoCaptureManager::StopCaptureForClient(
233 VideoCaptureController* controller, 234 VideoCaptureController* controller,
234 VideoCaptureControllerID client_id, 235 VideoCaptureControllerID client_id,
235 VideoCaptureControllerEventHandler* client_handler) { 236 VideoCaptureControllerEventHandler* client_handler) {
236 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 237 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
237 DCHECK(controller); 238 DCHECK(controller);
238 DCHECK(client_handler); 239 DCHECK(client_handler);
239 240
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 scoped_ptr<VideoCaptureController> video_capture_controller( 415 scoped_ptr<VideoCaptureController> video_capture_controller(
415 new VideoCaptureController()); 416 new VideoCaptureController());
416 DeviceEntry* new_device = new DeviceEntry(device_info.type, 417 DeviceEntry* new_device = new DeviceEntry(device_info.type,
417 device_info.id, 418 device_info.id,
418 video_capture_controller.Pass()); 419 video_capture_controller.Pass());
419 devices_.insert(new_device); 420 devices_.insert(new_device);
420 return new_device; 421 return new_device;
421 } 422 }
422 423
423 } // namespace content 424 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698