Chromium Code Reviews| Index: content/browser/renderer_host/media/audio_input_renderer_host.cc |
| diff --git a/content/browser/renderer_host/media/audio_input_renderer_host.cc b/content/browser/renderer_host/media/audio_input_renderer_host.cc |
| index ca5d0683d209a56a187430639fc1a85b811f2fd4..efddd6ec1cae8cd09ea9aaec7b1db63af6a5152f 100644 |
| --- a/content/browser/renderer_host/media/audio_input_renderer_host.cc |
| +++ b/content/browser/renderer_host/media/audio_input_renderer_host.cc |
| @@ -182,9 +182,20 @@ void AudioInputRendererHost::DoHandleError( |
| media::AudioInputController* controller, |
| media::AudioInputController::ErrorCode error_code) { |
| DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + // Log all errors even it is ignored later. |
| MediaStreamManager::SendMessageToNativeLog( |
| base::StringPrintf("AudioInputController error: %d", error_code)); |
| + // This is a fix for crbug.com/357501. The error can be triggered when closing |
| + // the lid on Macs, which causes more problems than it fixes. |
| + // Also, in crbug.com/357569, the goal is to remove usage of the error since |
| + // it was added to solve a crash on Windows that no longer can be reproduced. |
| + if (error_code == media::AudioInputController::NO_DATA_ERROR) { |
| + DVLOG(1) << "AudioInputRendererHost@" << this << "::DoHandleError: " |
| + << "NO_DATA_ERROR ignored."; |
| + return; |
| + } |
| + |
| AudioEntry* entry = LookupByController(controller); |
| if (!entry) |
| return; |
| @@ -237,7 +248,9 @@ void AudioInputRendererHost::OnCreateStream( |
| } |
| // Check if we have the permission to open the device and which device to use. |
| - std::string device_id = media::AudioManagerBase::kDefaultDeviceId; |
| + media::AudioDeviceName device_name( |
| + media::AudioManagerBase::kDefaultDeviceName, |
| + media::AudioManagerBase::kDefaultDeviceId); |
| if (audio_params.format() != media::AudioParameters::AUDIO_FAKE) { |
| const StreamDeviceInfo* info = media_stream_manager_-> |
| audio_input_device_manager()->GetOpenedDeviceInfoById(session_id); |
| @@ -248,7 +261,8 @@ void AudioInputRendererHost::OnCreateStream( |
| return; |
| } |
| - device_id = info->device.id; |
| + device_name.unique_id = info->device.id; |
|
tommi (sloooow) - chröme
2014/04/10 20:04:30
ah, I thought that |device| was of type AudioDevic
|
| + device_name.device_name = info->device.name; |
| } |
| // Create a new AudioEntry structure. |
| @@ -281,12 +295,12 @@ void AudioInputRendererHost::OnCreateStream( |
| // If we have successfully created the SyncWriter then assign it to the |
| // entry and construct an AudioInputController. |
| entry->writer.reset(writer.release()); |
| - if (WebContentsCaptureUtil::IsWebContentsDeviceId(device_id)) { |
| + if (WebContentsCaptureUtil::IsWebContentsDeviceId(device_name.unique_id)) { |
| entry->controller = media::AudioInputController::CreateForStream( |
| audio_manager_->GetTaskRunner(), |
| this, |
| WebContentsAudioInputStream::Create( |
| - device_id, |
| + device_name.unique_id, |
| audio_params, |
| audio_manager_->GetWorkerTaskRunner(), |
| audio_mirroring_manager_), |
| @@ -300,7 +314,7 @@ void AudioInputRendererHost::OnCreateStream( |
| media::AudioInputController::CreateLowLatency(audio_manager_, |
| this, |
| audio_params, |
| - device_id, |
| + device_name.unique_id, |
| entry->writer.get(), |
| user_input_monitor_); |
| } |
| @@ -321,8 +335,9 @@ void AudioInputRendererHost::OnCreateStream( |
| audio_entries_.insert(std::make_pair(stream_id, entry.release())); |
| MediaStreamManager::SendMessageToNativeLog( |
| - "Audio input stream created successfully."); |
| - audio_log_->OnCreated(stream_id, audio_params, device_id); |
| + "Audio input stream created successfully. Device name: " + |
| + device_name.device_name); |
| + audio_log_->OnCreated(stream_id, audio_params, device_name.unique_id); |
| } |
| void AudioInputRendererHost::OnRecordStream(int stream_id) { |