| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index 37d1011dc930132ba83deb303b2f85c65398c999..d51b54ef3975faf19bc0e975c60284ee53a93818 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -83,11 +83,13 @@
|
| #include "content/renderer/input_tag_speech_dispatcher.h"
|
| #include "content/renderer/java/java_bridge_dispatcher.h"
|
| #include "content/renderer/load_progress_tracker.h"
|
| +#include "content/renderer/media/audio_device_factory.h"
|
| +#include "content/renderer/media/audio_renderer_mixer_manager.h"
|
| #include "content/renderer/media/media_stream_dependency_factory.h"
|
| #include "content/renderer/media/media_stream_dispatcher.h"
|
| #include "content/renderer/media/media_stream_impl.h"
|
| -#include "content/renderer/media/render_audiosourceprovider.h"
|
| #include "content/renderer/media/render_media_log.h"
|
| +#include "content/renderer/media/renderer_audio_output_device.h"
|
| #include "content/renderer/media/renderer_gpu_video_decoder_factories.h"
|
| #include "content/renderer/media/rtc_peer_connection_handler.h"
|
| #include "content/renderer/mhtml_generator.h"
|
| @@ -113,6 +115,7 @@
|
| #include "content/renderer/web_ui_extension_data.h"
|
| #include "content/renderer/webplugin_delegate_proxy.h"
|
| #include "content/renderer/websharedworker_proxy.h"
|
| +#include "media/base/audio_renderer_mixer_input.h"
|
| #include "media/base/filter_collection.h"
|
| #include "media/base/media_switches.h"
|
| #include "media/filters/audio_renderer_impl.h"
|
| @@ -2616,14 +2619,29 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
|
| resource_context, gpu_channel_host, routing_id_));
|
| #endif
|
|
|
| - RenderMediaLog* render_media_log = new RenderMediaLog();
|
| -
|
| - RenderAudioSourceProvider* audio_source_provider = NULL;
|
| -
|
| - // |audio_source_provider| "provides" audio to WebKit and is a sink from the
|
| - // perspective of the audio renderer.
|
| + scoped_refptr<media::AudioRendererSink> sink;
|
| if (!cmd_line->HasSwitch(switches::kDisableAudio)) {
|
| - audio_source_provider = new RenderAudioSourceProvider(routing_id_);
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| + const bool use_mixing =
|
| + !cmd_line->HasSwitch(switches::kDisableRendererSideMixing);
|
| +#else
|
| + const bool use_mixing =
|
| + cmd_line->HasSwitch(switches::kEnableRendererSideMixing);
|
| +#endif
|
| + if (use_mixing) {
|
| + sink = RenderThreadImpl::current()->GetAudioRendererMixerManager()->
|
| + CreateInput(routing_id_);
|
| + DVLOG(1) << "Using AudioRendererMixerManager-provided sink: " << sink;
|
| + } else {
|
| + scoped_refptr<RendererAudioOutputDevice> device =
|
| + AudioDeviceFactory::NewOutputDevice();
|
| + // The RenderView creating AudioRendererSink will be the source of
|
| + // the audio (WebMediaPlayer is always associated with a document in a
|
| + // frame at the time RenderAudioSourceProvider is instantiated).
|
| + device->SetSourceRenderView(routing_id_);
|
| + sink = device;
|
| + DVLOG(1) << "Using AudioDeviceFactory-provided sink: " << sink;
|
| + }
|
| }
|
|
|
| scoped_refptr<media::GpuVideoDecoder::Factories> gpu_factories;
|
| @@ -2644,8 +2662,7 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
|
| }
|
|
|
| webkit_media::WebMediaPlayerParams params(
|
| - audio_source_provider, audio_source_provider, gpu_factories,
|
| - media_stream_impl_, render_media_log);
|
| + sink, gpu_factories, media_stream_impl_, new RenderMediaLog());
|
| WebMediaPlayer* media_player =
|
| GetContentClient()->renderer()->OverrideCreateWebMediaPlayer(
|
| this, frame, client, AsWeakPtr(), params);
|
|
|