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

Unified Diff: content/renderer/media/audio_renderer_mixer_manager.cc

Issue 1769933002: Looking up device id by session id for AudioRendererMixerInput (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased with respect to OutputDevice->OutputDeviceInfo change, fixed AOD race, addressed review com… Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/audio_renderer_mixer_manager.cc
diff --git a/content/renderer/media/audio_renderer_mixer_manager.cc b/content/renderer/media/audio_renderer_mixer_manager.cc
index 14359b3b967ad00406c2443742f1904e0fe8da70..9a8d82ccc5b9812ebd8bd52ab697ef0fa5a8e588 100644
--- a/content/renderer/media/audio_renderer_mixer_manager.cc
+++ b/content/renderer/media/audio_renderer_mixer_manager.cc
@@ -10,7 +10,7 @@
#include "base/bind_helpers.h"
#include "build/build_config.h"
#include "content/renderer/media/audio_device_factory.h"
-#include "media/audio/audio_output_device.h"
+#include "media/audio/audio_manager_base.h"
#include "media/base/audio_hardware_config.h"
#include "media/base/audio_renderer_mixer.h"
#include "media/base/audio_renderer_mixer_input.h"
@@ -27,15 +27,31 @@ AudioRendererMixerManager::~AudioRendererMixerManager() {
media::AudioRendererMixerInput* AudioRendererMixerManager::CreateInput(
int source_render_frame_id,
+ int session_id,
const std::string& device_id,
const url::Origin& security_origin) {
+ std::string new_device_id(device_id);
Guido Urdaneta 2016/04/07 11:14:28 We can avoid this string copy. The code will be sl
o1ka 2016/04/07 12:40:49 Done.
+
+ if (media::AudioManagerBase::UseSessionIdToSelectDevice(session_id,
+ device_id)) {
+ // Output sink should be selected basing on |session_id|
+ scoped_refptr<media::AudioRendererSink> sink_from_session_id =
+ AudioDeviceFactory::NewAudioRendererMixerSink(
+ source_render_frame_id, session_id, device_id, security_origin);
+ new_device_id = sink_from_session_id->GetOutputDeviceInfo().device_id();
+
+ // TODO(olka): Cache it and reuse, http://crbug.com/586161
+ sink_from_session_id->Stop();
+ }
+
+ // At this point the output device is represented by |new_device_id| and
+ // |session_id| can (and should) be safely ignored.
return new media::AudioRendererMixerInput(
base::Bind(&AudioRendererMixerManager::GetMixer, base::Unretained(this),
source_render_frame_id),
base::Bind(&AudioRendererMixerManager::RemoveMixer,
base::Unretained(this), source_render_frame_id),
- device_id,
- security_origin);
+ new_device_id, security_origin);
}
media::AudioRendererMixer* AudioRendererMixerManager::GetMixer(

Powered by Google App Engine
This is Rietveld 408576698