| Index: content/browser/renderer_host/media/audio_renderer_host.cc
|
| diff --git a/content/browser/renderer_host/media/audio_renderer_host.cc b/content/browser/renderer_host/media/audio_renderer_host.cc
|
| index 1e1065aca5e225a3d75ca4f006553ece32771cff..c09dc6ce08b00df873adee71e86cd47da72099c3 100644
|
| --- a/content/browser/renderer_host/media/audio_renderer_host.cc
|
| +++ b/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,8 +97,7 @@ AudioRendererHost::AudioEntry::AudioEntry(
|
| stream_id_(stream_id),
|
| render_view_id_(render_view_id),
|
| controller_(media::AudioOutputController::Create(
|
| - // TODO(tommi): Feed in the proper output device id.
|
| - host->audio_manager_, this, params, std::string(),
|
| + host->audio_manager_, this, params, output_device_id,
|
| input_device_id, reader.get())),
|
| shared_memory_(shared_memory.Pass()),
|
| reader_(reader.Pass()) {
|
| @@ -303,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 "
|
| @@ -348,8 +355,8 @@ 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(
|
|
|