Chromium Code Reviews| Index: content/renderer/media/render_audiosourceprovider.cc |
| diff --git a/content/renderer/media/render_audiosourceprovider.cc b/content/renderer/media/render_audiosourceprovider.cc |
| index 750db7fe0a47472c99bbdc50ff3ba7f612062da2..fb1295f9173d5393c69a5f2e74759ce3883ce6ad 100644 |
| --- a/content/renderer/media/render_audiosourceprovider.cc |
| +++ b/content/renderer/media/render_audiosourceprovider.cc |
| @@ -9,9 +9,10 @@ |
| #include "base/basictypes.h" |
| #include "base/command_line.h" |
| #include "base/logging.h" |
| -#include "content/renderer/media/audio_device_factory.h" |
| +#include "content/renderer/media/audio_message_filter.h" |
| #include "content/renderer/media/audio_renderer_mixer_manager.h" |
| #include "content/renderer/render_thread_impl.h" |
| +#include "media/audio/audio_output_device.h" |
| #include "media/base/audio_renderer_mixer_input.h" |
| #include "media/base/media_switches.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProviderClient.h" |
| @@ -21,7 +22,7 @@ using WebKit::WebVector; |
| namespace content { |
| -RenderAudioSourceProvider::RenderAudioSourceProvider() |
| +RenderAudioSourceProvider::RenderAudioSourceProvider(int source_render_view_id) |
| : is_initialized_(false), |
| channels_(0), |
| sample_rate_(0), |
| @@ -44,8 +45,22 @@ RenderAudioSourceProvider::RenderAudioSourceProvider() |
| if (use_mixing) { |
| default_sink_ = RenderThreadImpl::current()-> |
| GetAudioRendererMixerManager()->CreateInput(); |
| + // TODO(miu): Partition mixer instances per RenderView. |
| } else { |
| - default_sink_ = AudioDeviceFactory::NewOutputDevice(); |
| + RenderThreadImpl* const render_thread = RenderThreadImpl::current(); |
|
tommi (sloooow) - chröme
2012/11/29 13:08:38
the convention is:
const RenderThreadImpl* render_
miu
2012/11/30 02:40:35
Actually, that has totally different meaning:
c
|
| + scoped_refptr<media::AudioOutputDevice> device = |
| + new media::AudioOutputDevice(render_thread->audio_message_filter(), |
| + render_thread->GetIOMessageLoopProxy()); |
|
Chris Rogers
2012/11/29 11:14:32
I don't understand why the factory has been remove
tommi (sloooow) - chröme
2012/11/29 13:08:38
Maybe I'm misunderstanding your point, but AudioOu
tommi (sloooow) - chröme
2012/11/29 15:30:38
Chris, Henrik and I just talked about this. I und
miu
2012/11/30 02:40:35
Done.
tommi (sloooow) - chröme
2012/11/30 06:51:31
I can't think of a reason for why at least the sta
|
| + // The RenderView creating RenderAudioSourceProvider will be the source of |
| + // the audio (WebMediaPlayer is always associated with a single frame). |
| + // |
| + // TODO(miu): Unfortunately, there is one use case where this is not true: |
| + // JavaScript code can call new Audio() and pass the object around. The |
| + // RenderAudioSourceProvider is not instantiated until the "src" attribute |
| + // has been set. |
| + render_thread->audio_message_filter()->AssociateStreamWithProducer( |
| + device->stream_id(), source_render_view_id); |
| + default_sink_ = device; |
| } |
| } |