diff options
Diffstat (limited to 'chromium/content/browser/renderer_host/media/audio_renderer_host.cc')
-rw-r--r-- | chromium/content/browser/renderer_host/media/audio_renderer_host.cc | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/chromium/content/browser/renderer_host/media/audio_renderer_host.cc b/chromium/content/browser/renderer_host/media/audio_renderer_host.cc index 53f2eb2ae90..c09dc6ce08b 100644 --- a/chromium/content/browser/renderer_host/media/audio_renderer_host.cc +++ b/chromium/content/browser/renderer_host/media/audio_renderer_host.cc @@ -36,6 +36,7 @@ class AudioRendererHost::AudioEntry int stream_id, int render_view_id, const media::AudioParameters& params, + const std::string& output_device_id, const std::string& input_device_id, scoped_ptr<base::SharedMemory> shared_memory, scoped_ptr<media::AudioOutputController::SyncReader> reader); @@ -88,6 +89,7 @@ class AudioRendererHost::AudioEntry AudioRendererHost::AudioEntry::AudioEntry( AudioRendererHost* host, int stream_id, int render_view_id, const media::AudioParameters& params, + const std::string& output_device_id, const std::string& input_device_id, scoped_ptr<base::SharedMemory> shared_memory, scoped_ptr<media::AudioOutputController::SyncReader> reader) @@ -95,7 +97,8 @@ AudioRendererHost::AudioEntry::AudioEntry( stream_id_(stream_id), render_view_id_(render_view_id), controller_(media::AudioOutputController::Create( - host->audio_manager_, this, params, input_device_id, reader.get())), + host->audio_manager_, this, params, output_device_id, + input_device_id, reader.get())), shared_memory_(shared_memory.Pass()), reader_(reader.Pass()) { DCHECK(controller_.get()); @@ -301,10 +304,16 @@ void AudioRendererHost::OnCreateStream( // When the |input_channels| is valid, clients are trying to create a unified // IO stream which opens an input device mapping to the |session_id|. - std::string input_device_id; + // Initialize the |output_device_id| to an empty string which indicates that + // the default device should be used. If a StreamDeviceInfo instance was found + // though, then we use the matched output device. + std::string input_device_id, output_device_id; + const StreamDeviceInfo* info = media_stream_manager_-> + audio_input_device_manager()->GetOpenedDeviceInfoById(session_id); + if (info) + output_device_id = info->device.matched_output_device_id; + if (input_channels > 0) { - const StreamDeviceInfo* info = media_stream_manager_-> - audio_input_device_manager()->GetOpenedDeviceInfoById(session_id); if (!info) { SendErrorMessage(stream_id); DLOG(WARNING) << "No permission has been granted to input stream with " @@ -346,16 +355,18 @@ void AudioRendererHost::OnCreateStream( media_observer->OnCreatingAudioStream(render_process_id_, render_view_id); scoped_ptr<AudioEntry> entry(new AudioEntry( - this, stream_id, render_view_id, params, input_device_id, - shared_memory.Pass(), + this, stream_id, render_view_id, params, output_device_id, + input_device_id, shared_memory.Pass(), reader.PassAs<media::AudioOutputController::SyncReader>())); if (mirroring_manager_) { mirroring_manager_->AddDiverter( render_process_id_, entry->render_view_id(), entry->controller()); } audio_entries_.insert(std::make_pair(stream_id, entry.release())); - if (media_internals_) - media_internals_->OnSetAudioStreamStatus(this, stream_id, "created"); + if (media_internals_) { + media_internals_->OnAudioStreamCreated( + this, stream_id, params, input_device_id); + } } void AudioRendererHost::OnPlayStream(int stream_id) { |