summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/content_renderer.gypi2
-rw-r--r--content/renderer/media/render_audiosourceprovider.cc172
-rw-r--r--content/renderer/render_view_impl.cc37
-rw-r--r--webkit/media/webaudiosourceprovider_impl.cc136
-rw-r--r--webkit/media/webaudiosourceprovider_impl.h (renamed from content/renderer/media/render_audiosourceprovider.h)72
-rw-r--r--webkit/media/webkit_media.gypi2
-rw-r--r--webkit/media/webmediaplayer_impl.cc13
-rw-r--r--webkit/media/webmediaplayer_impl.h10
-rw-r--r--webkit/media/webmediaplayer_params.cc4
-rw-r--r--webkit/media/webmediaplayer_params.h17
-rw-r--r--webkit/support/webkit_support.cc2
-rw-r--r--webkit/tools/test_shell/test_webview_delegate.cc2
12 files changed, 208 insertions, 261 deletions
diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi
index 8b95dcd..02a765f 100644
--- a/content/content_renderer.gypi
+++ b/content/content_renderer.gypi
@@ -130,8 +130,6 @@
'renderer/media/media_stream_impl.h',
'renderer/media/pepper_platform_video_decoder_impl.cc',
'renderer/media/pepper_platform_video_decoder_impl.h',
- 'renderer/media/render_audiosourceprovider.cc',
- 'renderer/media/render_audiosourceprovider.h',
'renderer/media/render_media_log.cc',
'renderer/media/render_media_log.h',
'renderer/media/renderer_audio_output_device.cc',
diff --git a/content/renderer/media/render_audiosourceprovider.cc b/content/renderer/media/render_audiosourceprovider.cc
deleted file mode 100644
index b2a0bec..0000000
--- a/content/renderer/media/render_audiosourceprovider.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/renderer/media/render_audiosourceprovider.h"
-
-#include <vector>
-
-#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/media/renderer_audio_output_device.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 std::vector;
-using WebKit::WebVector;
-
-namespace content {
-
-RenderAudioSourceProvider::RenderAudioSourceProvider(int source_render_view_id)
- : is_initialized_(false),
- channels_(0),
- sample_rate_(0),
- is_running_(false),
- renderer_(NULL),
- client_(NULL) {
- // 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.
- const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
-#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) {
- default_sink_ = RenderThreadImpl::current()->
- GetAudioRendererMixerManager()->CreateInput(source_render_view_id);
- DVLOG(1) << "Using AudioRendererMixerManager-provided sink: "
- << default_sink_.get();
- } else {
- scoped_refptr<RendererAudioOutputDevice> device =
- AudioDeviceFactory::NewOutputDevice();
- // The RenderView creating RenderAudioSourceProvider 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(source_render_view_id);
- default_sink_ = device;
- DVLOG(1) << "Using AudioDeviceFactory-provided sink: "
- << default_sink_.get();
- }
-}
-
-void RenderAudioSourceProvider::setClient(
- WebKit::WebAudioSourceProviderClient* client) {
- // Synchronize with other uses of client_ and default_sink_.
- base::AutoLock auto_lock(sink_lock_);
-
- if (client && client != client_) {
- // Detach the audio renderer from normal playback.
- default_sink_->Stop();
-
- // The client will now take control by calling provideInput() periodically.
- client_ = client;
-
- if (is_initialized_) {
- // The client needs to be notified of the audio format, if available.
- // If the format is not yet available, we'll be notified later
- // when Initialize() is called.
-
- // Inform WebKit about the audio stream format.
- client->setFormat(channels_, sample_rate_);
- }
- } else if (!client && client_) {
- // Restore normal playback.
- client_ = NULL;
- // TODO(crogers): We should call default_sink_->Play() if we're
- // in the playing state.
- }
-}
-
-void RenderAudioSourceProvider::provideInput(
- const WebVector<float*>& audio_data, size_t number_of_frames) {
- DCHECK(client_);
-
- if (renderer_ && is_initialized_ && is_running_) {
- // Wrap WebVector as std::vector.
- vector<float*> v(audio_data.size());
- for (size_t i = 0; i < audio_data.size(); ++i)
- v[i] = audio_data[i];
-
- scoped_ptr<media::AudioBus> audio_bus = media::AudioBus::WrapVector(
- number_of_frames, v);
-
- // TODO(crogers): figure out if we should volume scale here or in common
- // WebAudio code. In any case we need to take care of volume.
- renderer_->Render(audio_bus.get(), 0);
- } else {
- // Provide silence if the source is not running.
- for (size_t i = 0; i < audio_data.size(); ++i)
- memset(audio_data[i], 0, sizeof(*audio_data[0]) * number_of_frames);
- }
-}
-
-void RenderAudioSourceProvider::Start() {
- base::AutoLock auto_lock(sink_lock_);
- if (!client_)
- default_sink_->Start();
- is_running_ = true;
-}
-
-void RenderAudioSourceProvider::Stop() {
- base::AutoLock auto_lock(sink_lock_);
- if (!client_)
- default_sink_->Stop();
- is_running_ = false;
-}
-
-void RenderAudioSourceProvider::Play() {
- base::AutoLock auto_lock(sink_lock_);
- if (!client_)
- default_sink_->Play();
- is_running_ = true;
-}
-
-void RenderAudioSourceProvider::Pause(bool flush) {
- base::AutoLock auto_lock(sink_lock_);
- if (!client_)
- default_sink_->Pause(flush);
- is_running_ = false;
-}
-
-bool RenderAudioSourceProvider::SetVolume(double volume) {
- base::AutoLock auto_lock(sink_lock_);
- if (!client_)
- default_sink_->SetVolume(volume);
- return true;
-}
-
-void RenderAudioSourceProvider::Initialize(
- const media::AudioParameters& params,
- RenderCallback* renderer) {
- base::AutoLock auto_lock(sink_lock_);
- CHECK(!is_initialized_);
- renderer_ = renderer;
-
- default_sink_->Initialize(params, renderer);
-
- // Keep track of the format in case the client hasn't yet been set.
- channels_ = params.channels();
- sample_rate_ = params.sample_rate();
-
- if (client_) {
- // Inform WebKit about the audio stream format.
- client_->setFormat(channels_, sample_rate_);
- }
-
- is_initialized_ = true;
-}
-
-RenderAudioSourceProvider::~RenderAudioSourceProvider() {}
-
-} // namespace content
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index e0ba3d9..6894e66 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"
@@ -2648,14 +2651,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;
@@ -2676,8 +2694,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);
diff --git a/webkit/media/webaudiosourceprovider_impl.cc b/webkit/media/webaudiosourceprovider_impl.cc
new file mode 100644
index 0000000..3d2bfb1
--- /dev/null
+++ b/webkit/media/webaudiosourceprovider_impl.cc
@@ -0,0 +1,136 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "webkit/media/webaudiosourceprovider_impl.h"
+
+#include <vector>
+
+#include "base/logging.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProviderClient.h"
+
+using WebKit::WebVector;
+
+namespace webkit_media {
+
+WebAudioSourceProviderImpl::WebAudioSourceProviderImpl(
+ const scoped_refptr<media::AudioRendererSink>& sink)
+ : is_initialized_(false),
+ channels_(0),
+ sample_rate_(0),
+ is_running_(false),
+ renderer_(NULL),
+ client_(NULL),
+ sink_(sink) {
+}
+
+WebAudioSourceProviderImpl::~WebAudioSourceProviderImpl() {}
+
+void WebAudioSourceProviderImpl::setClient(
+ WebKit::WebAudioSourceProviderClient* client) {
+ base::AutoLock auto_lock(sink_lock_);
+
+ if (client && client != client_) {
+ // Detach the audio renderer from normal playback.
+ sink_->Stop();
+
+ // The client will now take control by calling provideInput() periodically.
+ client_ = client;
+
+ if (is_initialized_) {
+ // The client needs to be notified of the audio format, if available.
+ // If the format is not yet available, we'll be notified later
+ // when Initialize() is called.
+
+ // Inform WebKit about the audio stream format.
+ client->setFormat(channels_, sample_rate_);
+ }
+ } else if (!client && client_) {
+ // Restore normal playback.
+ client_ = NULL;
+ // TODO(crogers): We should call sink_->Play() if we're
+ // in the playing state.
+ }
+}
+
+void WebAudioSourceProviderImpl::provideInput(
+ const WebVector<float*>& audio_data, size_t number_of_frames) {
+ DCHECK(client_);
+
+ if (renderer_ && is_initialized_ && is_running_) {
+ // Wrap WebVector as std::vector.
+ std::vector<float*> v(audio_data.size());
+ for (size_t i = 0; i < audio_data.size(); ++i)
+ v[i] = audio_data[i];
+
+ scoped_ptr<media::AudioBus> audio_bus = media::AudioBus::WrapVector(
+ number_of_frames, v);
+
+ // TODO(crogers): figure out if we should volume scale here or in common
+ // WebAudio code. In any case we need to take care of volume.
+ renderer_->Render(audio_bus.get(), 0);
+ return;
+ }
+
+ // Provide silence if the source is not running.
+ for (size_t i = 0; i < audio_data.size(); ++i)
+ memset(audio_data[i], 0, sizeof(*audio_data[0]) * number_of_frames);
+}
+
+void WebAudioSourceProviderImpl::Start() {
+ base::AutoLock auto_lock(sink_lock_);
+ if (!client_)
+ sink_->Start();
+ is_running_ = true;
+}
+
+void WebAudioSourceProviderImpl::Stop() {
+ base::AutoLock auto_lock(sink_lock_);
+ if (!client_)
+ sink_->Stop();
+ is_running_ = false;
+}
+
+void WebAudioSourceProviderImpl::Play() {
+ base::AutoLock auto_lock(sink_lock_);
+ if (!client_)
+ sink_->Play();
+ is_running_ = true;
+}
+
+void WebAudioSourceProviderImpl::Pause(bool flush) {
+ base::AutoLock auto_lock(sink_lock_);
+ if (!client_)
+ sink_->Pause(flush);
+ is_running_ = false;
+}
+
+bool WebAudioSourceProviderImpl::SetVolume(double volume) {
+ base::AutoLock auto_lock(sink_lock_);
+ if (!client_)
+ sink_->SetVolume(volume);
+ return true;
+}
+
+void WebAudioSourceProviderImpl::Initialize(
+ const media::AudioParameters& params,
+ RenderCallback* renderer) {
+ base::AutoLock auto_lock(sink_lock_);
+ CHECK(!is_initialized_);
+ renderer_ = renderer;
+
+ sink_->Initialize(params, renderer);
+
+ // Keep track of the format in case the client hasn't yet been set.
+ channels_ = params.channels();
+ sample_rate_ = params.sample_rate();
+
+ if (client_) {
+ // Inform WebKit about the audio stream format.
+ client_->setFormat(channels_, sample_rate_);
+ }
+
+ is_initialized_ = true;
+}
+
+} // namespace webkit_media
diff --git a/content/renderer/media/render_audiosourceprovider.h b/webkit/media/webaudiosourceprovider_impl.h
index 148b11f..888d67f 100644
--- a/content/renderer/media/render_audiosourceprovider.h
+++ b/webkit/media/webaudiosourceprovider_impl.h
@@ -1,57 +1,46 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-//
-// RenderAudioSourceProvider provides a bridge between classes:
-// WebKit::WebAudioSourceProvider <---> media::AudioRendererSink
-//
-// RenderAudioSourceProvider is a "sink" of audio, and uses a default
-// AudioOutputDevice if a client has not explicitly been set.
-//
-// WebKit optionally sets a client, and then periodically calls provideInput()
-// to render a certain number of audio sample-frames. provideInput()
-// uses the renderer to get this data, and then massages it into the form
-// required by provideInput(). In this case, the default AudioOutputDevice
-// is no longer used.
-//
-// THREAD SAFETY:
-// It is assumed that the callers to setClient() and provideInput()
-// implement appropriate locking for thread safety when making
-// these calls. This happens in WebKit.
-#ifndef CONTENT_RENDERER_MEDIA_RENDER_AUDIOSOURCEPROVIDER_H_
-#define CONTENT_RENDERER_MEDIA_RENDER_AUDIOSOURCEPROVIDER_H_
+#ifndef WEBKIT_MEDIA_WEBAUDIOSOURCEPROVIDER_IMPL_H_
+#define WEBKIT_MEDIA_WEBAUDIOSOURCEPROVIDER_IMPL_H_
#include "base/synchronization/lock.h"
#include "media/base/audio_renderer_sink.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProvider.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h"
namespace WebKit {
class WebAudioSourceProviderClient;
}
-namespace content {
+namespace webkit_media {
-class RenderAudioSourceProvider
+// WebAudioSourceProviderImpl provides a bridge between classes:
+// WebKit::WebAudioSourceProvider <---> media::AudioRendererSink
+//
+// WebAudioSourceProviderImpl wraps an existing audio sink that is used unless
+// WebKit has set a client via setClient(). While a client is set WebKit will
+// periodically call provideInput() to render a certain number of audio
+// sample-frames using the sink's RenderCallback to get the data.
+//
+// THREAD SAFETY:
+// It is assumed that the callers to setClient() and provideInput()
+// implement appropriate locking for thread safety when making
+// these calls. This happens in WebKit.
+class WebAudioSourceProviderImpl
: public WebKit::WebAudioSourceProvider,
public media::AudioRendererSink {
public:
- explicit RenderAudioSourceProvider(int source_render_view_id);
+ explicit WebAudioSourceProviderImpl(
+ const scoped_refptr<media::AudioRendererSink>& sink);
// WebKit::WebAudioSourceProvider implementation.
-
- // WebKit calls setClient() if it desires to take control of the rendered
- // audio stream. We call client's setFormat() when the audio stream format
- // is known.
virtual void setClient(WebKit::WebAudioSourceProviderClient* client);
-
- // If setClient() has been called, then WebKit calls provideInput()
- // periodically to get the rendered audio stream.
virtual void provideInput(const WebKit::WebVector<float*>& audio_data,
size_t number_of_frames);
- // AudioRendererSink implementation.
+ // media::AudioRendererSink implementation.
virtual void Start() OVERRIDE;
virtual void Stop() OVERRIDE;
virtual void Play() OVERRIDE;
@@ -61,7 +50,7 @@ class RenderAudioSourceProvider
RenderCallback* renderer) OVERRIDE;
protected:
- virtual ~RenderAudioSourceProvider();
+ virtual ~WebAudioSourceProviderImpl();
private:
// Set to true when Initialize() is called.
@@ -69,19 +58,22 @@ class RenderAudioSourceProvider
int channels_;
int sample_rate_;
+ // Tracks if |sink_| has been instructed to consume audio.
bool is_running_;
+
+ // Where audio comes from.
media::AudioRendererSink::RenderCallback* renderer_;
+
+ // When set via setClient() it overrides |sink_| for consuming audio.
WebKit::WebAudioSourceProviderClient* client_;
- // Protects access to sink_
+ // Where audio ends up unless overridden by |client_|.
base::Lock sink_lock_;
+ scoped_refptr<media::AudioRendererSink> sink_;
- // default_sink_ is the default sink.
- scoped_refptr<media::AudioRendererSink> default_sink_;
-
- DISALLOW_IMPLICIT_CONSTRUCTORS(RenderAudioSourceProvider);
+ DISALLOW_IMPLICIT_CONSTRUCTORS(WebAudioSourceProviderImpl);
};
-} // namespace content
+} // namespace webkit_media
-#endif // CONTENT_RENDERER_MEDIA_RENDER_AUDIOSOURCEPROVIDER_H_
+#endif // WEBKIT_MEDIA_WEBAUDIOSOURCEPROVIDER_IMPL_H_
diff --git a/webkit/media/webkit_media.gypi b/webkit/media/webkit_media.gypi
index 52cf375..ade49ea 100644
--- a/webkit/media/webkit_media.gypi
+++ b/webkit/media/webkit_media.gypi
@@ -81,6 +81,8 @@
'simple_video_frame_provider.h',
'video_frame_provider.cc',
'video_frame_provider.h',
+ 'webaudiosourceprovider_impl.cc',
+ 'webaudiosourceprovider_impl.h',
'webmediaplayer_delegate.h',
'webmediaplayer_impl.cc',
'webmediaplayer_impl.h',
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 4b27e48..fee9545 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -33,6 +33,7 @@
#include "v8/include/v8.h"
#include "webkit/media/buffered_data_source.h"
#include "webkit/media/filter_helpers.h"
+#include "webkit/media/webaudiosourceprovider_impl.h"
#include "webkit/media/webmediaplayer_delegate.h"
#include "webkit/media/webmediaplayer_params.h"
#include "webkit/media/webmediaplayer_proxy.h"
@@ -139,8 +140,6 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
media_log_(params.media_log()),
accelerated_compositing_reported_(false),
incremented_externally_allocated_memory_(false),
- audio_source_provider_(params.audio_source_provider()),
- audio_renderer_sink_(params.audio_renderer_sink()),
is_local_source_(false),
supports_save_(true),
starting_(false) {
@@ -198,13 +197,11 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
proxy_->set_frame_provider(video_renderer);
// Create default audio renderer using the null sink if no sink was provided.
- scoped_refptr<media::AudioRendererSink> audio_renderer_sink =
- params.audio_renderer_sink();
- if (!audio_renderer_sink)
- audio_renderer_sink = new media::NullAudioSink();
-
+ audio_source_provider_ = new WebAudioSourceProviderImpl(
+ params.audio_renderer_sink() ? params.audio_renderer_sink() :
+ new media::NullAudioSink());
filter_collection_->AddAudioRenderer(new media::AudioRendererImpl(
- audio_renderer_sink, set_decryptor_ready_cb));
+ audio_source_provider_, set_decryptor_ready_cb));
}
WebMediaPlayerImpl::~WebMediaPlayerImpl() {
diff --git a/webkit/media/webmediaplayer_impl.h b/webkit/media/webmediaplayer_impl.h
index e9f8cd5..053fcf1 100644
--- a/webkit/media/webmediaplayer_impl.h
+++ b/webkit/media/webmediaplayer_impl.h
@@ -80,6 +80,7 @@ class MediaLog;
namespace webkit_media {
class MediaStreamClient;
+class WebAudioSourceProviderImpl;
class WebMediaPlayerDelegate;
class WebMediaPlayerParams;
class WebMediaPlayerProxy;
@@ -325,13 +326,8 @@ class WebMediaPlayerImpl
bool incremented_externally_allocated_memory_;
- // TODO(scherkus): Sadly these two objects are the same and we're also forced
- // to maintain an additional reference to |audio_renderer_sink_| otherwise
- // |audio_source_provider_| will go bad after |pipeline_| shuts down.
- //
- // See http://crbug.com/136442 for details.
- WebKit::WebAudioSourceProvider* audio_source_provider_;
- scoped_refptr<media::AudioRendererSink> audio_renderer_sink_;
+ // Routes audio playback to either AudioRendererSink or WebAudio.
+ scoped_refptr<WebAudioSourceProviderImpl> audio_source_provider_;
bool is_local_source_;
bool supports_save_;
diff --git a/webkit/media/webmediaplayer_params.cc b/webkit/media/webmediaplayer_params.cc
index b860531..1f24625 100644
--- a/webkit/media/webmediaplayer_params.cc
+++ b/webkit/media/webmediaplayer_params.cc
@@ -10,13 +10,11 @@
namespace webkit_media {
WebMediaPlayerParams::WebMediaPlayerParams(
- WebKit::WebAudioSourceProvider* audio_source_provider,
const scoped_refptr<media::AudioRendererSink>& audio_renderer_sink,
const scoped_refptr<media::GpuVideoDecoder::Factories>& gpu_factories,
MediaStreamClient* media_stream_client,
const scoped_refptr<media::MediaLog>& media_log)
- : audio_source_provider_(audio_source_provider),
- audio_renderer_sink_(audio_renderer_sink),
+ : audio_renderer_sink_(audio_renderer_sink),
gpu_factories_(gpu_factories),
media_stream_client_(media_stream_client),
media_log_(media_log) {
diff --git a/webkit/media/webmediaplayer_params.h b/webkit/media/webmediaplayer_params.h
index d78f78f..577d04c 100644
--- a/webkit/media/webmediaplayer_params.h
+++ b/webkit/media/webmediaplayer_params.h
@@ -13,10 +13,6 @@ class AudioRendererSink;
class MediaLog;
}
-namespace WebKit {
-class WebAudioSourceProvider;
-}
-
namespace webkit_media {
class MediaStreamClient;
@@ -26,25 +22,13 @@ class MediaStreamClient;
class WebMediaPlayerParams {
public:
// |media_log| is the only required parameter; all others may be null.
- //
- // If provided, |audio_source_provider| and |audio_renderer_sink| arguments
- // must be the same object.
- //
- // TODO(scherkus): Remove WebAudioSourceProvider parameter once we
- // refactor RenderAudioSourceProvider to live under webkit/media/
- // instead of content/renderer/, see http://crbug.com/136442
WebMediaPlayerParams(
- WebKit::WebAudioSourceProvider* audio_source_provider,
const scoped_refptr<media::AudioRendererSink>& audio_renderer_sink,
const scoped_refptr<media::GpuVideoDecoder::Factories>& gpu_factories,
MediaStreamClient* media_stream_client,
const scoped_refptr<media::MediaLog>& media_log);
~WebMediaPlayerParams();
- WebKit::WebAudioSourceProvider* audio_source_provider() const {
- return audio_source_provider_;
- }
-
const scoped_refptr<media::AudioRendererSink>& audio_renderer_sink() const {
return audio_renderer_sink_;
}
@@ -63,7 +47,6 @@ class WebMediaPlayerParams {
}
private:
- WebKit::WebAudioSourceProvider* audio_source_provider_;
scoped_refptr<media::AudioRendererSink> audio_renderer_sink_;
scoped_refptr<media::GpuVideoDecoder::Factories> gpu_factories_;
MediaStreamClient* media_stream_client_;
diff --git a/webkit/support/webkit_support.cc b/webkit/support/webkit_support.cc
index 71c6801..b2a3d55 100644
--- a/webkit/support/webkit_support.cc
+++ b/webkit/support/webkit_support.cc
@@ -421,7 +421,7 @@ WebKit::WebMediaPlayer* CreateMediaPlayer(
true);
#else
webkit_media::WebMediaPlayerParams params(
- NULL, NULL, NULL, NULL, new media::MediaLog());
+ NULL, NULL, NULL, new media::MediaLog());
return new webkit_media::WebMediaPlayerImpl(
frame,
client,
diff --git a/webkit/tools/test_shell/test_webview_delegate.cc b/webkit/tools/test_shell/test_webview_delegate.cc
index 913e05e..f13da4e 100644
--- a/webkit/tools/test_shell/test_webview_delegate.cc
+++ b/webkit/tools/test_shell/test_webview_delegate.cc
@@ -532,7 +532,7 @@ WebPlugin* TestWebViewDelegate::createPlugin(WebFrame* frame,
WebMediaPlayer* TestWebViewDelegate::createMediaPlayer(
WebFrame* frame, const WebKit::WebURL& url, WebMediaPlayerClient* client) {
webkit_media::WebMediaPlayerParams params(
- NULL, NULL, NULL, NULL, new media::MediaLog());
+ NULL, NULL, NULL, new media::MediaLog());
return new webkit_media::WebMediaPlayerImpl(
frame,
client,