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

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

Issue 2634263002: Pass camera facing info to audio client (Closed)
Patch Set: Moved to chrome_browser_main_chromeos.cc Created 3 years, 10 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_manager.h" 5 #include "content/browser/renderer_host/media/video_capture_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 16 matching lines...) Expand all
27 #include "content/browser/media/media_internals.h" 27 #include "content/browser/media/media_internals.h"
28 #include "content/browser/renderer_host/media/video_capture_controller.h" 28 #include "content/browser/renderer_host/media/video_capture_controller.h"
29 #include "content/browser/renderer_host/media/video_capture_controller_event_han dler.h" 29 #include "content/browser/renderer_host/media/video_capture_controller_event_han dler.h"
30 #include "content/browser/renderer_host/media/video_capture_gpu_jpeg_decoder.h" 30 #include "content/browser/renderer_host/media/video_capture_gpu_jpeg_decoder.h"
31 #include "content/browser/renderer_host/media/video_frame_receiver_on_io_thread. h" 31 #include "content/browser/renderer_host/media/video_frame_receiver_on_io_thread. h"
32 #include "content/public/browser/browser_thread.h" 32 #include "content/public/browser/browser_thread.h"
33 #include "content/public/browser/desktop_media_id.h" 33 #include "content/public/browser/desktop_media_id.h"
34 #include "content/public/common/media_stream_request.h" 34 #include "content/public/common/media_stream_request.h"
35 #include "media/base/bind_to_current_loop.h" 35 #include "media/base/bind_to_current_loop.h"
36 #include "media/base/media_switches.h" 36 #include "media/base/media_switches.h"
37 #include "media/base/video_facing.h"
37 #include "media/capture/video/video_capture_buffer_pool_impl.h" 38 #include "media/capture/video/video_capture_buffer_pool_impl.h"
38 #include "media/capture/video/video_capture_buffer_tracker_factory_impl.h" 39 #include "media/capture/video/video_capture_buffer_tracker_factory_impl.h"
39 #include "media/capture/video/video_capture_device.h" 40 #include "media/capture/video/video_capture_device.h"
40 #include "media/capture/video/video_capture_device_client.h" 41 #include "media/capture/video/video_capture_device_client.h"
41 #include "media/capture/video/video_capture_device_factory.h" 42 #include "media/capture/video/video_capture_device_factory.h"
42 43
43 #if defined(ENABLE_SCREEN_CAPTURE) 44 #if defined(ENABLE_SCREEN_CAPTURE)
44 45
45 #if BUILDFLAG(ENABLE_WEBRTC) && !defined(OS_ANDROID) 46 #if BUILDFLAG(ENABLE_WEBRTC) && !defined(OS_ANDROID)
46 #include "content/browser/media/capture/desktop_capture_device.h" 47 #include "content/browser/media/capture/desktop_capture_device.h"
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 : device_task_runner_(std::move(device_task_runner)), 333 : device_task_runner_(std::move(device_task_runner)),
333 listener_(nullptr), 334 listener_(nullptr),
334 new_capture_session_id_(1), 335 new_capture_session_id_(1),
335 video_capture_device_factory_(std::move(factory)) {} 336 video_capture_device_factory_(std::move(factory)) {}
336 337
337 VideoCaptureManager::~VideoCaptureManager() { 338 VideoCaptureManager::~VideoCaptureManager() {
338 DCHECK(devices_.empty()); 339 DCHECK(devices_.empty());
339 DCHECK(device_start_queue_.empty()); 340 DCHECK(device_start_queue_.empty());
340 } 341 }
341 342
343 void VideoCaptureManager::AddVideoCaptureObserver(
344 media::VideoCaptureObserver* observer) {
345 DCHECK(observer);
346 DCHECK_CURRENTLY_ON(BrowserThread::IO);
347 capture_observers_.AddObserver(observer);
348 }
349
350 void VideoCaptureManager::RemoveAllVideoCaptureObservers() {
351 DCHECK_CURRENTLY_ON(BrowserThread::IO);
352 capture_observers_.Clear();
353 }
354
342 void VideoCaptureManager::RegisterListener( 355 void VideoCaptureManager::RegisterListener(
343 MediaStreamProviderListener* listener) { 356 MediaStreamProviderListener* listener) {
344 DCHECK_CURRENTLY_ON(BrowserThread::IO); 357 DCHECK_CURRENTLY_ON(BrowserThread::IO);
345 DCHECK(!listener_); 358 DCHECK(!listener_);
346 DCHECK(device_task_runner_); 359 DCHECK(device_task_runner_);
347 listener_ = listener; 360 listener_ = listener;
348 #if defined(OS_ANDROID) 361 #if defined(OS_ANDROID)
349 application_state_has_running_activities_ = true; 362 application_state_has_running_activities_ = true;
350 app_status_listener_.reset(new base::android::ApplicationStatusListener( 363 app_status_listener_.reset(new base::android::ApplicationStatusListener(
351 base::Bind(&VideoCaptureManager::OnApplicationStateChange, 364 base::Bind(&VideoCaptureManager::OnApplicationStateChange,
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 device_start_queue_.rbegin(); 474 device_start_queue_.rbegin();
462 request != device_start_queue_.rend(); ++request) { 475 request != device_start_queue_.rend(); ++request) {
463 if (request->serial_id() == entry->serial_id) { 476 if (request->serial_id() == entry->serial_id) {
464 request->set_abort_start(); 477 request->set_abort_start();
465 DVLOG(3) << "DoStopDevice, aborting start request for device " 478 DVLOG(3) << "DoStopDevice, aborting start request for device "
466 << entry->id << " serial_id = " << entry->serial_id; 479 << entry->id << " serial_id = " << entry->serial_id;
467 return; 480 return;
468 } 481 }
469 } 482 }
470 483
484 const DeviceInfo* device_info = GetDeviceInfoById(entry->id);
485 if (device_info != nullptr) {
486 for (auto& observer : capture_observers_)
487 observer.OnVideoCaptureStopped(device_info->descriptor.facing);
488 }
489
471 DVLOG(3) << "DoStopDevice. Send stop request for device = " << entry->id 490 DVLOG(3) << "DoStopDevice. Send stop request for device = " << entry->id
472 << " serial_id = " << entry->serial_id << "."; 491 << " serial_id = " << entry->serial_id << ".";
473 entry->video_capture_controller.OnLog( 492 entry->video_capture_controller.OnLog(
474 base::StringPrintf("Stopping device: id: %s", entry->id.c_str())); 493 base::StringPrintf("Stopping device: id: %s", entry->id.c_str()));
475 entry->video_capture_controller.SetConsumerFeedbackObserver(nullptr); 494 entry->video_capture_controller.SetConsumerFeedbackObserver(nullptr);
476 entry->video_capture_controller.SetFrameBufferPool(nullptr); 495 entry->video_capture_controller.SetFrameBufferPool(nullptr);
477 496
478 // |entry->video_capture_device| can be null if creating the device has 497 // |entry->video_capture_device| can be null if creating the device has
479 // failed. 498 // failed.
480 if (entry->video_capture_device) { 499 if (entry->video_capture_device) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 // since the renderer does not have all the information that might be 536 // since the renderer does not have all the information that might be
518 // held in the browser-side VideoCaptureDevice::Name structure. 537 // held in the browser-side VideoCaptureDevice::Name structure.
519 const DeviceInfo* found = GetDeviceInfoById(entry->id); 538 const DeviceInfo* found = GetDeviceInfoById(entry->id);
520 if (found) { 539 if (found) {
521 entry->video_capture_controller.OnLog( 540 entry->video_capture_controller.OnLog(
522 base::StringPrintf("Starting device: id: %s, name: %s, api: %s", 541 base::StringPrintf("Starting device: id: %s, name: %s, api: %s",
523 found->descriptor.device_id.c_str(), 542 found->descriptor.device_id.c_str(),
524 found->descriptor.GetNameAndModel().c_str(), 543 found->descriptor.GetNameAndModel().c_str(),
525 found->descriptor.GetCaptureApiTypeString())); 544 found->descriptor.GetCaptureApiTypeString()));
526 545
546 for (auto& observer : capture_observers_)
547 observer.OnVideoCaptureStarted(found->descriptor.facing);
548
527 start_capture_function = 549 start_capture_function =
528 base::Bind(&VideoCaptureManager::DoStartDeviceCaptureOnDeviceThread, 550 base::Bind(&VideoCaptureManager::DoStartDeviceCaptureOnDeviceThread,
529 this, found->descriptor, request->params(), 551 this, found->descriptor, request->params(),
530 base::Passed(std::move(device_client))); 552 base::Passed(std::move(device_client)));
531 } else { 553 } else {
532 // Errors from DoStartDeviceCaptureOnDeviceThread go via 554 // Errors from DoStartDeviceCaptureOnDeviceThread go via
533 // VideoCaptureDeviceClient::OnError, which needs some thread 555 // VideoCaptureDeviceClient::OnError, which needs some thread
534 // dancing to get errors processed on the IO thread. But since 556 // dancing to get errors processed on the IO thread. But since
535 // we're on that thread, we call VideoCaptureController 557 // we're on that thread, we call VideoCaptureController
536 // methods directly. 558 // methods directly.
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 if (!device_in_queue) { 1372 if (!device_in_queue) {
1351 // Session ID is only valid for Screen capture. So we can fake it to 1373 // Session ID is only valid for Screen capture. So we can fake it to
1352 // resume video capture devices here. 1374 // resume video capture devices here.
1353 QueueStartDevice(kFakeSessionId, entry.get(), entry->parameters); 1375 QueueStartDevice(kFakeSessionId, entry.get(), entry->parameters);
1354 } 1376 }
1355 } 1377 }
1356 } 1378 }
1357 #endif // defined(OS_ANDROID) 1379 #endif // defined(OS_ANDROID)
1358 1380
1359 } // namespace content 1381 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698