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 039f75fb8f8c96dc3f01edf30ae50add4b65ebc3..6bd16ed576b0c4915af7b6ea15ad756885246f20 100644 |
| --- a/content/renderer/media/render_audiosourceprovider.cc |
| +++ b/content/renderer/media/render_audiosourceprovider.cc |
| @@ -5,8 +5,13 @@ |
| #include "content/renderer/media/render_audiosourceprovider.h" |
| #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_renderer_mixer_manager.h" |
| +#include "content/renderer/render_thread_impl.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" |
| using content::AudioDeviceFactory; |
| @@ -21,11 +26,24 @@ RenderAudioSourceProvider::RenderAudioSourceProvider() |
| volume_(1.0), |
| renderer_(NULL), |
| client_(NULL) { |
| - // We create the AudioDevice here using the factory. But we don't yet know |
| - // the audio format (sample-rate, etc.) at this point. Later, when |
| - // Initialize() is called, we have the audio format information and call |
| - // the AudioDevice::Initialize() method to fully initialize it. |
| - default_sink_ = AudioDeviceFactory::Create(); |
| + // Only process the command line switch once. |
| + static int enable_render_side_mixing = -1; |
|
scherkus (not reviewing)
2012/07/13 18:40:16
don't worry about optimizing the switch lookup on
DaleCurtis
2012/07/13 21:28:33
Done.
|
| + if (enable_render_side_mixing < 0) { |
| + const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); |
| + enable_render_side_mixing = static_cast<int>(cmd_line->HasSwitch( |
| + switches::kEnableRendererSideMixing)); |
| + } |
| + |
| + // We create an AudioRendererSink here, but we don't yet know the audio format |
| + // (sample-rate, etc.) at this point. Later, when Initialize() is called, we |
| + // have the audio format information and call AudioRendererSink::Initialize() |
| + // to fully initialize it. |
| + if (!enable_render_side_mixing) { |
| + default_sink_ = AudioDeviceFactory::Create(); |
| + } else { |
| + default_sink_ = RenderThreadImpl::current()-> |
| + audio_renderer_mixer_manager()->CreateInput(); |
| + } |
| } |
| void RenderAudioSourceProvider::setClient( |