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

Unified Diff: content/renderer/media/audio_device_factory.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: comment and bug ref to remove AudioManagerBase dependency 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
« no previous file with comments | « content/renderer/media/audio_device_factory.h ('k') | content/renderer/media/audio_message_filter.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/audio_device_factory.cc
diff --git a/content/renderer/media/audio_device_factory.cc b/content/renderer/media/audio_device_factory.cc
index f36cf4b2d43a42ccefc027c48a454917490d4274..40d8455f5c402a2c1a02af593bd174ab333add57 100644
--- a/content/renderer/media/audio_device_factory.cc
+++ b/content/renderer/media/audio_device_factory.cc
@@ -47,21 +47,13 @@ bool IsMixable(AudioDeviceFactory::SourceType source_type) {
scoped_refptr<media::SwitchableAudioRendererSink> NewMixableSink(
int render_frame_id,
+ int session_id,
const std::string& device_id,
const url::Origin& security_origin) {
RenderThreadImpl* render_thread = RenderThreadImpl::current();
return scoped_refptr<media::AudioRendererMixerInput>(
render_thread->GetAudioRendererMixerManager()->CreateInput(
- render_frame_id, device_id, security_origin));
-}
-
-scoped_refptr<media::AudioRendererSink> NewUnmixableSink(
- int render_frame_id,
- int session_id,
- const std::string& device_id,
- const url::Origin& security_origin) {
- return NewOutputDevice(render_frame_id, session_id, device_id,
- security_origin);
+ render_frame_id, session_id, device_id, security_origin));
}
} // namespace
@@ -72,15 +64,8 @@ AudioDeviceFactory::NewAudioRendererMixerSink(
int session_id,
const std::string& device_id,
const url::Origin& security_origin) {
- if (factory_) {
- scoped_refptr<media::AudioRendererSink> sink =
- factory_->CreateAudioRendererMixerSink(render_frame_id, session_id,
- device_id, security_origin);
- if (sink)
- return sink;
- }
- return NewOutputDevice(render_frame_id, session_id, device_id,
- security_origin);
+ return NewFinalAudioRendererSink(render_frame_id, session_id, device_id,
+ security_origin);
}
// static
@@ -100,10 +85,11 @@ AudioDeviceFactory::NewAudioRendererSink(SourceType source_type,
}
if (IsMixable(source_type))
- return NewMixableSink(render_frame_id, device_id, security_origin);
-
- return NewUnmixableSink(render_frame_id, session_id, device_id,
+ return NewMixableSink(render_frame_id, session_id, device_id,
security_origin);
+
+ return NewFinalAudioRendererSink(render_frame_id, session_id, device_id,
+ security_origin);
}
// static
@@ -124,7 +110,8 @@ AudioDeviceFactory::NewSwitchableAudioRendererSink(
}
if (IsMixable(source_type))
- return NewMixableSink(render_frame_id, device_id, security_origin);
+ return NewMixableSink(render_frame_id, session_id, device_id,
+ security_origin);
// AudioOutputDevice is not RestartableAudioRendererSink, so we can't return
// anything for those who wants to create an unmixable sink.
@@ -155,11 +142,14 @@ media::OutputDeviceInfo AudioDeviceFactory::GetOutputDeviceInfo(
int session_id,
const std::string& device_id,
const url::Origin& security_origin) {
- scoped_refptr<media::AudioOutputDevice> device =
- NewOutputDevice(render_frame_id, session_id, device_id, security_origin);
+ scoped_refptr<media::AudioRendererSink> sink = NewFinalAudioRendererSink(
+ render_frame_id, session_id, device_id, security_origin);
+
+ const media::OutputDeviceInfo& device_info = sink->GetOutputDeviceInfo();
+
+ // TODO(olka): Cache it and reuse, http://crbug.com/586161
+ sink->Stop(); // Must be stopped.
- const media::OutputDeviceInfo& device_info = device->GetOutputDeviceInfo();
- device->Stop(); // Must be stopped.
return device_info;
}
@@ -172,4 +162,23 @@ AudioDeviceFactory::~AudioDeviceFactory() {
factory_ = NULL;
}
+// static
+scoped_refptr<media::AudioRendererSink>
+AudioDeviceFactory::NewFinalAudioRendererSink(
+ int render_frame_id,
+ int session_id,
+ const std::string& device_id,
+ const url::Origin& security_origin) {
+ if (factory_) {
+ scoped_refptr<media::AudioRendererSink> sink =
+ factory_->CreateFinalAudioRendererSink(render_frame_id, session_id,
+ device_id, security_origin);
+ if (sink)
+ return sink;
+ }
+
+ return NewOutputDevice(render_frame_id, session_id, device_id,
+ security_origin);
+}
+
} // namespace content
« no previous file with comments | « content/renderer/media/audio_device_factory.h ('k') | content/renderer/media/audio_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698