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

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: Created 4 years, 9 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 309eaa848f707362555ca6b1ba2202a54c3e022b..41f3b65fbd8e8f49ce8f449090ff4adb08d2d955 100644
--- a/content/renderer/media/audio_renderer_mixer_manager.cc
+++ b/content/renderer/media/audio_renderer_mixer_manager.cc
@@ -10,15 +10,15 @@
#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"
+#include "media/base/audio_renderer_mixer_sink.h"
namespace content {
-AudioRendererMixerManager::AudioRendererMixerManager()
- : sink_for_testing_(nullptr) {}
+AudioRendererMixerManager::AudioRendererMixerManager(){};
o1ka 2016/03/07 15:25:49 nit: I'll add a space before {}
o1ka 2016/04/05 15:13:38 Done.
AudioRendererMixerManager::~AudioRendererMixerManager() {
// References to AudioRendererMixers may be owned by garbage collected
@@ -28,24 +28,35 @@ 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);
+
+ if (session_id && device_id.empty()) {
+ // Output sink should be selected basing on |session_id|
+ scoped_refptr<media::AudioRendererMixerSink> sink_from_session_id =
Henrik Grunell 2016/03/08 21:09:56 I know we have been discussing this offline before
o1ka 2016/04/05 15:13:37 No, not for now.
+ AudioDeviceFactory::NewAudioRendererMixerSink(
+ source_render_frame_id, session_id, device_id, security_origin);
+ new_device_id = sink_from_session_id->GetDeviceId();
+
+ // 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
+ // |sesson_id| can (and should) be safely ignored.
Henrik Grunell 2016/03/08 21:09:57 Typo: session_id
o1ka 2016/04/05 15:13:38 Done.
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),
base::Bind(&AudioRendererMixerManager::GetHardwareOutputParams,
- source_render_frame_id, 0), // Session id is 0.
- device_id,
+ source_render_frame_id, 0), // Session id is 0
+ new_device_id,
security_origin);
}
-void AudioRendererMixerManager::SetAudioRendererSinkForTesting(
- media::AudioRendererSink* sink) {
- sink_for_testing_ = sink;
-}
-
media::AudioRendererMixer* AudioRendererMixerManager::GetMixer(
int source_render_frame_id,
const media::AudioParameters& params,
@@ -69,11 +80,8 @@ media::AudioRendererMixer* AudioRendererMixerManager::GetMixer(
}
scoped_refptr<media::AudioRendererSink> sink =
- sink_for_testing_
- ? sink_for_testing_
- : AudioDeviceFactory::NewOutputDevice(source_render_frame_id, 0,
- device_id, security_origin)
- .get();
+ AudioDeviceFactory::NewAudioRendererMixerSink(source_render_frame_id, 0,
+ device_id, security_origin);
media::OutputDeviceStatus new_device_status =
sink->GetOutputDevice()->GetDeviceStatus();
@@ -153,14 +161,16 @@ media::AudioParameters AudioRendererMixerManager::GetHardwareOutputParams(
// AudioOutputDevice is the only interface we have to communicate with output
Guido Urdaneta 2016/03/08 14:53:09 Comment no longer matches code. However, I think y
o1ka 2016/04/05 15:13:38 The method does not exist any more
// device via IPC. So, that's how we get the parameters when there is no
// AudioOutputDevice:
- scoped_refptr<media::AudioOutputDevice> device =
- AudioDeviceFactory::NewOutputDevice(render_frame_id, session_id,
- device_id, security_origin);
+ scoped_refptr<media::AudioRendererMixerSink> sink =
+ AudioDeviceFactory::NewAudioRendererMixerSink(render_frame_id, session_id,
+ device_id, security_origin);
- if (device->GetDeviceStatus() == media::OUTPUT_DEVICE_STATUS_OK)
- params = device->GetOutputParameters();
+ if (sink->GetOutputDevice()->GetDeviceStatus() ==
+ media::OUTPUT_DEVICE_STATUS_OK)
+ params = sink->GetOutputDevice()->GetOutputParameters();
- device->Stop(); // TODO(olka): temporary cash for future reuse.
+ // TODO(olka): temporary cash for future reuse. http://crbug.com/586161
Guido Urdaneta 2016/03/08 14:53:09 typo: s/cash/cache I think, although this doesn't
Henrik Grunell 2016/03/08 21:09:56 Yeah it's a typo. The todo is for adding caching,
+ sink->Stop();
return params;
}

Powered by Google App Engine
This is Rietveld 408576698