Index: content/browser/renderer_host/media/media_stream_manager.cc |
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc |
index 73c6345d35e9f531130e75fb38f9f2b58e0d34e4..b0fb9dd13dfef6bb3757b1183893f26bbe41ee51 100644 |
--- a/content/browser/renderer_host/media/media_stream_manager.cc |
+++ b/content/browser/renderer_host/media/media_stream_manager.cc |
@@ -45,7 +45,7 @@ |
#include "content/public/common/media_stream_request.h" |
#include "crypto/hmac.h" |
#include "media/audio/audio_device_description.h" |
-#include "media/audio/audio_manager.h" |
+#include "media/audio/audio_system.h" |
#include "media/base/audio_parameters.h" |
#include "media/base/channel_layout.h" |
#include "media/base/media_switches.h" |
@@ -392,14 +392,14 @@ void MediaStreamManager::SendMessageToNativeLog(const std::string& message) { |
msm->AddLogMessageOnIOThread(message); |
} |
-MediaStreamManager::MediaStreamManager(media::AudioManager* audio_manager) |
- : audio_manager_(audio_manager), |
+MediaStreamManager::MediaStreamManager(media::AudioSystem* audio_system) |
+ : audio_system_(audio_system), |
#if defined(OS_WIN) |
video_capture_thread_("VideoCaptureThread"), |
#endif |
use_fake_ui_(base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kUseFakeUIForMediaStream)) { |
- DCHECK(audio_manager_); |
+ DCHECK(audio_system_); |
// Some unit tests create the MSM in the IO thread and assumes the |
// initialization is done synchronously. |
@@ -423,7 +423,6 @@ MediaStreamManager::~MediaStreamManager() { |
DCHECK(!BrowserThread::IsThreadInitialized(BrowserThread::IO)); |
DVLOG(1) << "~MediaStreamManager"; |
DCHECK(requests_.empty()); |
- DCHECK(!device_task_runner_.get()); |
base::PowerMonitor* power_monitor = base::PowerMonitor::Get(); |
// The PowerMonitor instance owned by BrowserMainLoops always outlives the |
@@ -909,14 +908,11 @@ void MediaStreamManager::ReadOutputParamsAndPostRequestToUI( |
// TODO(guidou): MEDIA_TAB_AUDIO_CAPTURE should not be a special case. See |
// crbug.com/584287. |
if (request->audio_type() == MEDIA_TAB_AUDIO_CAPTURE) { |
- // Read output parameters on the correct thread for native audio OS calls. |
- // Using base::Unretained is safe since |audio_manager_| is deleted after |
- // its task runner, and MediaStreamManager is deleted on the UI thread, |
- // after the IO thread has been stopped. |
- base::PostTaskAndReplyWithResult( |
- audio_manager_->GetTaskRunner(), FROM_HERE, |
- base::Bind(&media::AudioManager::GetDefaultOutputStreamParameters, |
- base::Unretained(audio_manager_)), |
+ // Using base::Unretained is safe: |audio_system_| will post |
+ // PostRequestToUI() to IO thread, and MediaStreamManager is deleted on the |
+ // UI thread, after the IO thread has been stopped. |
+ audio_system_->GetOutputStreamParameters( |
+ media::AudioDeviceDescription::kDefaultDeviceId, |
base::Bind(&MediaStreamManager::PostRequestToUI, base::Unretained(this), |
label, request, enumeration)); |
} else { |
@@ -1233,15 +1229,14 @@ void MediaStreamManager::InitializeDeviceManagersOnIOThread() { |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
"457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 1")); |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- DCHECK(!device_task_runner_.get()); |
- device_task_runner_ = audio_manager_->GetTaskRunner(); |
// TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is |
// fixed. |
tracked_objects::ScopedTracker tracking_profile2( |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
"457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 2")); |
- audio_input_device_manager_ = new AudioInputDeviceManager(audio_manager_); |
+ audio_input_device_manager_ = |
+ new AudioInputDeviceManager(audio_system_->GetAudioManager()); |
audio_input_device_manager_->RegisterListener(this); |
// TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is |
@@ -1271,13 +1266,13 @@ void MediaStreamManager::InitializeDeviceManagersOnIOThread() { |
video_capture_manager_ = new VideoCaptureManager( |
media::VideoCaptureDeviceFactory::CreateFactory( |
BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)), |
- device_task_runner_); |
+ audio_system_->GetTaskRunner()); |
#endif |
video_capture_manager_->RegisterListener(this); |
- media_devices_manager_.reset( |
- new MediaDevicesManager(audio_manager_, video_capture_manager_, this)); |
+ media_devices_manager_.reset(new MediaDevicesManager( |
+ audio_system_->GetAudioManager(), video_capture_manager_, this)); |
} |
void MediaStreamManager::Opened(MediaStreamType stream_type, |
@@ -1560,7 +1555,6 @@ void MediaStreamManager::WillDestroyCurrentMessageLoop() { |
if (audio_input_device_manager_) |
audio_input_device_manager_->UnregisterListener(this); |
- device_task_runner_ = nullptr; |
audio_input_device_manager_ = nullptr; |
video_capture_manager_ = nullptr; |
media_devices_manager_ = nullptr; |