| 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 e2118fea834f453690dbf80d7c0c1394b53eb861..d5e21f09f55f83bd77b29991472baa7adeecb1e3 100644
|
| --- a/content/renderer/media/audio_device_factory.cc
|
| +++ b/content/renderer/media/audio_device_factory.cc
|
| @@ -21,6 +21,18 @@ AudioDeviceFactory* AudioDeviceFactory::factory_ = NULL;
|
|
|
| namespace {
|
|
|
| +media::AudioOutputDevice* NewOutputDevice(int render_frame_id,
|
| + int session_id,
|
| + const std::string& device_id,
|
| + const url::Origin& security_origin) {
|
| + AudioMessageFilter* const filter = AudioMessageFilter::Get();
|
| + media::AudioOutputDevice* device = new media::AudioOutputDevice(
|
| + filter->CreateAudioOutputIPC(render_frame_id), filter->io_task_runner(),
|
| + session_id, device_id, security_origin);
|
| + device->RequestDeviceAuthorization();
|
| + return device;
|
| +}
|
| +
|
| // This is where we decide which audio will go to mixers and which one to
|
| // AudioOutpuDevice directly.
|
| bool IsMixable(AudioDeviceFactory::SourceType source_type) {
|
| @@ -34,12 +46,12 @@ bool IsMixable(AudioDeviceFactory::SourceType source_type) {
|
|
|
| scoped_refptr<media::RestartableAudioRendererSink> 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));
|
| + return render_thread->GetAudioRendererMixerManager()->CreateInput(
|
| + render_frame_id, session_id, device_id, security_origin);
|
| }
|
|
|
| scoped_refptr<media::AudioRendererSink> NewUnmixableSink(
|
| @@ -47,31 +59,27 @@ scoped_refptr<media::AudioRendererSink> NewUnmixableSink(
|
| int session_id,
|
| const std::string& device_id,
|
| const url::Origin& security_origin) {
|
| - return AudioDeviceFactory::NewOutputDevice(render_frame_id, session_id,
|
| - device_id, security_origin);
|
| + return NewOutputDevice(render_frame_id, session_id, device_id,
|
| + security_origin);
|
| }
|
|
|
| } // namespace
|
|
|
| -// static
|
| -scoped_refptr<media::AudioOutputDevice> AudioDeviceFactory::NewOutputDevice(
|
| +scoped_refptr<media::AudioRendererMixerSink>
|
| +AudioDeviceFactory::NewAudioRendererMixerSink(
|
| int render_frame_id,
|
| int session_id,
|
| const std::string& device_id,
|
| const url::Origin& security_origin) {
|
| if (factory_) {
|
| - media::AudioOutputDevice* const device = factory_->CreateOutputDevice(
|
| - render_frame_id, session_id, device_id, security_origin);
|
| - if (device)
|
| - return device;
|
| + media::AudioRendererMixerSink* const sink =
|
| + factory_->CreateAudioRendererMixerSink(render_frame_id, session_id,
|
| + device_id, security_origin);
|
| + if (sink)
|
| + return sink;
|
| }
|
| -
|
| - AudioMessageFilter* const filter = AudioMessageFilter::Get();
|
| - scoped_refptr<media::AudioOutputDevice> device = new media::AudioOutputDevice(
|
| - filter->CreateAudioOutputIPC(render_frame_id), filter->io_task_runner(),
|
| - session_id, device_id, security_origin);
|
| - device->RequestDeviceAuthorization();
|
| - return device;
|
| + return NewOutputDevice(render_frame_id, session_id, device_id,
|
| + security_origin);
|
| }
|
|
|
| // static
|
| @@ -89,7 +97,8 @@ AudioDeviceFactory::NewAudioRendererSink(SourceType source_type,
|
| }
|
|
|
| if (IsMixable(source_type))
|
| - return NewMixableSink(render_frame_id, device_id, security_origin);
|
| + return NewMixableSink(render_frame_id, session_id, device_id,
|
| + security_origin);
|
|
|
| return NewUnmixableSink(render_frame_id, session_id, device_id,
|
| security_origin);
|
| @@ -113,7 +122,8 @@ AudioDeviceFactory::NewRestartableAudioRendererSink(
|
| }
|
|
|
| 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.
|
|
|