summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc5
-rw-r--r--chrome/renderer/chrome_content_renderer_client.h1
-rw-r--r--chrome/renderer/prerender/prerender_webmediaplayer.cc2
-rw-r--r--chrome/renderer/prerender/prerender_webmediaplayer.h1
-rw-r--r--content/content_renderer.gypi2
-rw-r--r--content/public/renderer/content_renderer_client.h2
-rw-r--r--content/renderer/media/audio_device.cc6
-rw-r--r--content/renderer/media/audio_device.h44
-rw-r--r--content/renderer/media/audio_renderer_impl.cc44
-rw-r--r--content/renderer/media/audio_renderer_impl.h15
-rw-r--r--content/renderer/media/audio_renderer_impl_unittest.cc10
-rw-r--r--content/renderer/mock_content_renderer_client.cc1
-rw-r--r--content/renderer/mock_content_renderer_client.h1
-rw-r--r--content/renderer/render_audiosourceprovider.cc148
-rw-r--r--content/renderer/render_audiosourceprovider.h88
-rw-r--r--content/renderer/render_view_impl.cc23
-rw-r--r--content/shell/shell_content_renderer_client.cc1
-rw-r--r--content/shell/shell_content_renderer_client.h1
-rw-r--r--media/base/audio_renderer_sink.h70
-rw-r--r--webkit/media/webmediaplayer_impl.cc8
-rw-r--r--webkit/media/webmediaplayer_impl.h11
-rw-r--r--webkit/support/webkit_support.cc1
-rw-r--r--webkit/tools/test_shell/test_webview_delegate.cc1
23 files changed, 72 insertions, 414 deletions
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index a3c1eb4..de52237 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -295,7 +295,6 @@ bool ChromeContentRendererClient::OverrideCreateWebMediaPlayer(
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log,
@@ -304,8 +303,8 @@ bool ChromeContentRendererClient::OverrideCreateWebMediaPlayer(
return false;
*player = new prerender::PrerenderWebMediaPlayer(render_view, client,
- delegate, collection, audio_source_provider, message_loop_factory,
- media_stream_client, media_log);
+ delegate, collection, message_loop_factory, media_stream_client,
+ media_log);
return true;
}
diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h
index 64db976..1029e4e 100644
--- a/chrome/renderer/chrome_content_renderer_client.h
+++ b/chrome/renderer/chrome_content_renderer_client.h
@@ -64,7 +64,6 @@ class ChromeContentRendererClient : public content::ContentRendererClient {
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log,
diff --git a/chrome/renderer/prerender/prerender_webmediaplayer.cc b/chrome/renderer/prerender/prerender_webmediaplayer.cc
index c63af25..90cc202 100644
--- a/chrome/renderer/prerender/prerender_webmediaplayer.cc
+++ b/chrome/renderer/prerender/prerender_webmediaplayer.cc
@@ -19,7 +19,6 @@ PrerenderWebMediaPlayer::PrerenderWebMediaPlayer(
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log)
@@ -27,7 +26,6 @@ PrerenderWebMediaPlayer::PrerenderWebMediaPlayer(
WebMediaPlayerImpl(client,
delegate,
collection,
- audio_source_provider,
message_loop_factory,
media_stream_client,
media_log),
diff --git a/chrome/renderer/prerender/prerender_webmediaplayer.h b/chrome/renderer/prerender/prerender_webmediaplayer.h
index 8370367..99db44e 100644
--- a/chrome/renderer/prerender/prerender_webmediaplayer.h
+++ b/chrome/renderer/prerender/prerender_webmediaplayer.h
@@ -29,7 +29,6 @@ class PrerenderWebMediaPlayer
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log);
diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi
index b75579d..97f4afd 100644
--- a/content/content_renderer.gypi
+++ b/content/content_renderer.gypi
@@ -139,8 +139,6 @@
'renderer/pepper_plugin_delegate_impl.h',
'renderer/plugin_channel_host.cc',
'renderer/plugin_channel_host.h',
- 'renderer/render_audiosourceprovider.cc',
- 'renderer/render_audiosourceprovider.h',
'renderer/render_process.h',
'renderer/render_process_impl.cc',
'renderer/render_process_impl.h',
diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
index 279d65b..c666fda 100644
--- a/content/public/renderer/content_renderer_client.h
+++ b/content/public/renderer/content_renderer_client.h
@@ -18,7 +18,6 @@ class GURL;
class SkBitmap;
namespace WebKit {
-class WebAudioSourceProvider;
class WebFrame;
class WebMediaPlayerClient;
class WebPlugin;
@@ -112,7 +111,6 @@ class ContentRendererClient {
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log,
diff --git a/content/renderer/media/audio_device.cc b/content/renderer/media/audio_device.cc
index 75c2bad..f6ead33 100644
--- a/content/renderer/media/audio_device.cc
+++ b/content/renderer/media/audio_device.cc
@@ -62,8 +62,6 @@ void AudioDevice::Initialize(size_t buffer_size,
CHECK_EQ(0, stream_id_) <<
"AudioDevice::Initialize() must be called before Start()";
- CHECK(!is_initialized_);
-
buffer_size_ = buffer_size;
channels_ = channels;
sample_rate_ = sample_rate;
@@ -83,6 +81,10 @@ void AudioDevice::Initialize(size_t buffer_size,
is_initialized_ = true;
}
+bool AudioDevice::IsInitialized() {
+ return is_initialized_;
+}
+
AudioDevice::~AudioDevice() {
// The current design requires that the user calls Stop() before deleting
// this class.
diff --git a/content/renderer/media/audio_device.h b/content/renderer/media/audio_device.h
index 815a493..d8680c0 100644
--- a/content/renderer/media/audio_device.h
+++ b/content/renderer/media/audio_device.h
@@ -73,13 +73,25 @@
#include "content/common/content_export.h"
#include "content/renderer/media/audio_message_filter.h"
#include "media/audio/audio_parameters.h"
-#include "media/base/audio_renderer_sink.h"
class CONTENT_EXPORT AudioDevice
- : public media::AudioRendererSink,
- public AudioMessageFilter::Delegate,
- public base::DelegateSimpleThread::Delegate {
+ : public AudioMessageFilter::Delegate,
+ public base::DelegateSimpleThread::Delegate,
+ public base::RefCountedThreadSafe<AudioDevice> {
public:
+ class CONTENT_EXPORT RenderCallback {
+ public:
+ // Fills entire buffer of length |number_of_frames| but returns actual
+ // number of frames it got from its source (|number_of_frames| in case of
+ // continuous stream). That actual number of frames is passed to host
+ // together with PCM audio data and host is free to use or ignore it.
+ virtual size_t Render(const std::vector<float*>& audio_data,
+ size_t number_of_frames,
+ size_t audio_delay_milliseconds) = 0;
+ protected:
+ virtual ~RenderCallback() {}
+ };
+
// Methods called on main render thread -------------------------------------
// Minimal constructor where Initialize() must be called later.
@@ -91,38 +103,38 @@ class CONTENT_EXPORT AudioDevice
RenderCallback* callback);
virtual ~AudioDevice();
- // AudioRendererSink implementation.
+ void Initialize(size_t buffer_size,
+ int channels,
+ double sample_rate,
+ AudioParameters::Format latency_format,
+ RenderCallback* callback);
+ bool IsInitialized();
- virtual void Initialize(size_t buffer_size,
- int channels,
- double sample_rate,
- AudioParameters::Format latency_format,
- RenderCallback* callback) OVERRIDE;
// Starts audio playback.
- virtual void Start() OVERRIDE;
+ void Start();
// Stops audio playback.
- virtual void Stop() OVERRIDE;
+ void Stop();
// Resumes playback if currently paused.
// TODO(crogers): it should be possible to remove the extra complexity
// of Play() and Pause() with additional re-factoring work in
// AudioRendererImpl.
- virtual void Play() OVERRIDE;
+ void Play();
// Pauses playback.
// If |flush| is true then any pending audio that is in the pipeline
// (has not yet reached the hardware) will be discarded. In this case,
// when Play() is later called, no previous pending audio will be
// rendered.
- virtual void Pause(bool flush) OVERRIDE;
+ void Pause(bool flush);
// Sets the playback volume, with range [0.0, 1.0] inclusive.
// Returns |true| on success.
- virtual bool SetVolume(double volume) OVERRIDE;
+ bool SetVolume(double volume);
// Gets the playback volume, with range [0.0, 1.0] inclusive.
- virtual void GetVolume(double* volume) OVERRIDE;
+ void GetVolume(double* volume);
double sample_rate() const { return sample_rate_; }
size_t buffer_size() const { return buffer_size_; }
diff --git a/content/renderer/media/audio_renderer_impl.cc b/content/renderer/media/audio_renderer_impl.cc
index eb54186..ca905a0 100644
--- a/content/renderer/media/audio_renderer_impl.cc
+++ b/content/renderer/media/audio_renderer_impl.cc
@@ -35,12 +35,16 @@ static size_t GetBufferSizeForSampleRate(int sample_rate) {
return kNominalBufferSize * 4;
}
-AudioRendererImpl::AudioRendererImpl(media::AudioRendererSink* sink)
+AudioRendererImpl::AudioRendererImpl()
: AudioRendererBase(),
bytes_per_second_(0),
- stopped_(false),
- sink_(sink),
- is_initialized_(false) {
+ stopped_(false) {
+ // We create the AudioDevice here because it must be created in the
+ // main thread. But we don't yet know the audio format (sample-rate, etc.)
+ // at this point. Later, when OnInitialize() is called, we have
+ // the audio format information and call the AudioDevice::Initialize()
+ // method to fully initialize it.
+ audio_device_ = new AudioDevice();
}
AudioRendererImpl::~AudioRendererImpl() {
@@ -86,30 +90,28 @@ bool AudioRendererImpl::OnInitialize(int bits_per_channel,
bytes_per_second_ = audio_parameters_.GetBytesPerSecond();
- DCHECK(sink_.get());
+ DCHECK(audio_device_.get());
- if (!is_initialized_) {
- sink_->Initialize(
+ if (!audio_device_->IsInitialized()) {
+ audio_device_->Initialize(
GetBufferSizeForSampleRate(sample_rate),
audio_parameters_.channels,
audio_parameters_.sample_rate,
audio_parameters_.format,
this);
- sink_->Start();
- is_initialized_ = true;
- return true;
+ audio_device_->Start();
}
- return false;
+ return true;
}
void AudioRendererImpl::OnStop() {
if (stopped_)
return;
- DCHECK(sink_.get());
- sink_->Stop();
+ DCHECK(audio_device_.get());
+ audio_device_->Stop();
stopped_ = true;
}
@@ -167,27 +169,27 @@ void AudioRendererImpl::Play(const base::Closure& callback) {
void AudioRendererImpl::SetVolume(float volume) {
if (stopped_)
return;
- DCHECK(sink_.get());
- sink_->SetVolume(volume);
+ DCHECK(audio_device_.get());
+ audio_device_->SetVolume(volume);
}
void AudioRendererImpl::DoPlay() {
earliest_end_time_ = base::Time::Now();
- DCHECK(sink_.get());
- sink_->Play();
+ DCHECK(audio_device_.get());
+ audio_device_->Play();
}
void AudioRendererImpl::DoPause() {
- DCHECK(sink_.get());
- sink_->Pause(false);
+ DCHECK(audio_device_.get());
+ audio_device_->Pause(false);
}
void AudioRendererImpl::DoSeek() {
earliest_end_time_ = base::Time::Now();
// Pause and flush the stream when we seek to a new location.
- DCHECK(sink_.get());
- sink_->Pause(true);
+ DCHECK(audio_device_.get());
+ audio_device_->Pause(true);
}
size_t AudioRendererImpl::Render(const std::vector<float*>& audio_data,
diff --git a/content/renderer/media/audio_renderer_impl.h b/content/renderer/media/audio_renderer_impl.h
index cc84a50..f555b11 100644
--- a/content/renderer/media/audio_renderer_impl.h
+++ b/content/renderer/media/audio_renderer_impl.h
@@ -25,18 +25,16 @@
#include "content/renderer/media/audio_device.h"
#include "media/audio/audio_io.h"
#include "media/audio/audio_parameters.h"
-#include "media/base/audio_renderer_sink.h"
#include "media/filters/audio_renderer_base.h"
class AudioMessageFilter;
class CONTENT_EXPORT AudioRendererImpl
: public media::AudioRendererBase,
- public media::AudioRendererSink::RenderCallback {
+ public AudioDevice::RenderCallback {
public:
// Methods called on Render thread ------------------------------------------
- // An AudioRendererSink is used as the destination for the rendered audio.
- explicit AudioRendererImpl(media::AudioRendererSink* sink);
+ AudioRendererImpl();
virtual ~AudioRendererImpl();
// Methods called on pipeline thread ----------------------------------------
@@ -76,7 +74,7 @@ class CONTENT_EXPORT AudioRendererImpl
void DoPause();
void DoSeek();
- // media::AudioRendererSink::RenderCallback implementation.
+ // AudioDevice::RenderCallback implementation.
virtual size_t Render(const std::vector<float*>& audio_data,
size_t number_of_frames,
size_t audio_delay_milliseconds) OVERRIDE;
@@ -105,11 +103,8 @@ class CONTENT_EXPORT AudioRendererImpl
// A flag that indicates this filter is called to stop.
bool stopped_;
- // The sink (destination) for rendered audio.
- scoped_refptr<media::AudioRendererSink> sink_;
-
- // Set to true when OnInitialize() is called.
- bool is_initialized_;
+ // audio_device_ is the sink (destination) for rendered audio.
+ scoped_refptr<AudioDevice> audio_device_;
// We're supposed to know amount of audio data OS or hardware buffered, but
// that is not always so -- on my Linux box
diff --git a/content/renderer/media/audio_renderer_impl_unittest.cc b/content/renderer/media/audio_renderer_impl_unittest.cc
index f760798..7a2895b 100644
--- a/content/renderer/media/audio_renderer_impl_unittest.cc
+++ b/content/renderer/media/audio_renderer_impl_unittest.cc
@@ -54,8 +54,8 @@ void WaitCallback(base::WaitableEvent* event) {
// Class we would be testing.
class TestAudioRendererImpl : public AudioRendererImpl {
public:
- explicit TestAudioRendererImpl(media::AudioRendererSink* sink)
- : AudioRendererImpl(sink) {
+ explicit TestAudioRendererImpl()
+ : AudioRendererImpl() {
}
};
@@ -100,12 +100,8 @@ class AudioRendererImplTest
EXPECT_CALL(*decoder_, samples_per_second())
.WillRepeatedly(Return(44100));
- // Create a sink for the audio renderer.
- scoped_refptr<media::AudioRendererSink> default_sink =
- new AudioDevice();
-
// Create and initialize the audio renderer.
- renderer_ = new TestAudioRendererImpl(default_sink.get());
+ renderer_ = new TestAudioRendererImpl();
renderer_->Initialize(decoder_, media::NewExpectedClosure(),
NewUnderflowClosure());
diff --git a/content/renderer/mock_content_renderer_client.cc b/content/renderer/mock_content_renderer_client.cc
index 5a50a0e..c3c97fe 100644
--- a/content/renderer/mock_content_renderer_client.cc
+++ b/content/renderer/mock_content_renderer_client.cc
@@ -47,7 +47,6 @@ bool MockContentRendererClient::OverrideCreateWebMediaPlayer(
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log,
diff --git a/content/renderer/mock_content_renderer_client.h b/content/renderer/mock_content_renderer_client.h
index 7bd1c33..4bddf8d 100644
--- a/content/renderer/mock_content_renderer_client.h
+++ b/content/renderer/mock_content_renderer_client.h
@@ -39,7 +39,6 @@ class MockContentRendererClient : public ContentRendererClient {
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log,
diff --git a/content/renderer/render_audiosourceprovider.cc b/content/renderer/render_audiosourceprovider.cc
deleted file mode 100644
index 6f070d5..0000000
--- a/content/renderer/render_audiosourceprovider.cc
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright (c) 2011 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/render_audiosourceprovider.h"
-
-#include "base/basictypes.h"
-#include "base/logging.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProviderClient.h"
-
-using std::vector;
-using WebKit::WebVector;
-
-RenderAudioSourceProvider::RenderAudioSourceProvider()
- : is_initialized_(false),
- channels_(0),
- sample_rate_(0.0),
- is_running_(false),
- volume_(1.0),
- renderer_(NULL),
- client_(NULL) {
- // We create the AudioDevice here because it must be created in the
- // main thread. 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_ = new AudioDevice();
-}
-
-RenderAudioSourceProvider::~RenderAudioSourceProvider() {}
-
-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);
- volume_ = volume;
- return true;
-}
-
-void RenderAudioSourceProvider::GetVolume(double* volume) {
- if (!client_)
- default_sink_->GetVolume(volume);
- else if (volume)
- *volume = volume_;
-}
-
-void RenderAudioSourceProvider::Initialize(
- size_t buffer_size,
- int channels,
- double sample_rate,
- AudioParameters::Format latency_format,
- RenderCallback* renderer) {
- base::AutoLock auto_lock(sink_lock_);
- CHECK(!is_initialized_);
- renderer_ = renderer;
-
- default_sink_->Initialize(buffer_size,
- channels,
- sample_rate,
- latency_format,
- renderer);
-
- if (client_) {
- // Inform WebKit about the audio stream format.
- client_->setFormat(channels, sample_rate);
- }
-
- // Keep track of the format in case the client hasn't yet been set.
- channels_ = channels;
- sample_rate_ = sample_rate;
- is_initialized_ = true;
-}
-
-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_->Pause(true);
-
- // 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];
-
- // 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(v, number_of_frames, 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(float) * number_of_frames);
- }
-}
diff --git a/content/renderer/render_audiosourceprovider.h b/content/renderer/render_audiosourceprovider.h
deleted file mode 100644
index 02f6b73..0000000
--- a/content/renderer/render_audiosourceprovider.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2011 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
-// AudioDevice 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 AudioDevice
-// 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_RENDER_AUDIOSOURCEPROVIDER_H_
-#define CONTENT_RENDERER_RENDER_AUDIOSOURCEPROVIDER_H_
-
-#include <vector>
-
-#include "content/renderer/media/audio_device.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"
-
-namespace WebKit {
-class WebAudioSourceProviderClient;
-}
-
-class RenderAudioSourceProvider
- : public WebKit::WebAudioSourceProvider,
- public media::AudioRendererSink {
- public:
- RenderAudioSourceProvider();
- virtual ~RenderAudioSourceProvider();
-
- // 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.
- virtual void Start() OVERRIDE;
- virtual void Stop() OVERRIDE;
- virtual void Play() OVERRIDE;
- virtual void Pause(bool flush) OVERRIDE;
- virtual bool SetVolume(double volume) OVERRIDE;
- virtual void GetVolume(double* volume) OVERRIDE;
- virtual void Initialize(size_t buffer_size,
- int channels,
- double sample_rate,
- AudioParameters::Format latency_format,
- RenderCallback* renderer) OVERRIDE;
-
- private:
- // Set to true when Initialize() is called.
- bool is_initialized_;
- int channels_;
- double sample_rate_;
-
- bool is_running_;
- double volume_;
- media::AudioRendererSink::RenderCallback* renderer_;
- WebKit::WebAudioSourceProviderClient* client_;
-
- // Protects access to sink_
- base::Lock sink_lock_;
-
- // default_sink_ is the default sink.
- scoped_refptr<media::AudioRendererSink> default_sink_;
-
- DISALLOW_COPY_AND_ASSIGN(RenderAudioSourceProvider);
-};
-
-#endif // CONTENT_RENDERER_RENDER_AUDIOSOURCEPROVIDER_H_
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 53f68bf..515ef64 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -65,7 +65,6 @@
#include "content/renderer/notification_provider.h"
#include "content/renderer/p2p/socket_dispatcher.h"
#include "content/renderer/plugin_channel_host.h"
-#include "content/renderer/render_audiosourceprovider.h"
#include "content/renderer/render_process.h"
#include "content/renderer/render_thread_impl.h"
#include "content/renderer/render_widget_fullscreen_pepper.h"
@@ -1932,20 +1931,11 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
media::FilterCollection* collection = new media::FilterCollection();
RenderMediaLog* render_media_log = new RenderMediaLog();
- RenderAudioSourceProvider* audio_source_provider = NULL;
-
// Add in any custom filter factories first.
const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
if (!cmd_line->HasSwitch(switches::kDisableAudio)) {
- // audio_source_provider is a "provider" to WebKit, and a sink
- // from the perspective of the audio renderer.
- audio_source_provider = new RenderAudioSourceProvider();
-
- // Add the chrome specific audio renderer, using audio_source_provider
- // as the sink.
- AudioRendererImpl* audio_renderer =
- new AudioRendererImpl(audio_source_provider);
- collection->AddAudioRenderer(audio_renderer);
+ // Add the chrome specific audio renderer.
+ collection->AddAudioRenderer(new AudioRendererImpl());
}
#if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
@@ -1969,12 +1959,11 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
webkit_media::WebMediaPlayerImpl* result_ptr;
if (!content::GetContentClient()->renderer()->OverrideCreateWebMediaPlayer(
- this, client, AsWeakPtr(), collection, audio_source_provider,
- message_loop_factory, media_stream_impl_.get(), render_media_log,
- &result_ptr)) {
+ this, client, AsWeakPtr(), collection, message_loop_factory,
+ media_stream_impl_.get(), render_media_log, &result_ptr)) {
result_ptr = new webkit_media::WebMediaPlayerImpl(
- client, AsWeakPtr(), collection, audio_source_provider,
- message_loop_factory, media_stream_impl_.get(), render_media_log);
+ client, AsWeakPtr(), collection, message_loop_factory,
+ media_stream_impl_.get(), render_media_log);
}
DCHECK(result_ptr);
diff --git a/content/shell/shell_content_renderer_client.cc b/content/shell/shell_content_renderer_client.cc
index ddf3c44..ac09373 100644
--- a/content/shell/shell_content_renderer_client.cc
+++ b/content/shell/shell_content_renderer_client.cc
@@ -53,7 +53,6 @@ bool ShellContentRendererClient::OverrideCreateWebMediaPlayer(
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log,
diff --git a/content/shell/shell_content_renderer_client.h b/content/shell/shell_content_renderer_client.h
index e0cdc87..36d428e 100644
--- a/content/shell/shell_content_renderer_client.h
+++ b/content/shell/shell_content_renderer_client.h
@@ -36,7 +36,6 @@ class ShellContentRendererClient : public ContentRendererClient {
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
webkit_media::MediaStreamClient* media_stream_client,
media::MediaLog* media_log,
diff --git a/media/base/audio_renderer_sink.h b/media/base/audio_renderer_sink.h
deleted file mode 100644
index fc7bb9b..0000000
--- a/media/base/audio_renderer_sink.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2011 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.
-
-#ifndef MEDIA_BASE_AUDIO_RENDERER_SINK_H_
-#define MEDIA_BASE_AUDIO_RENDERER_SINK_H_
-
-#include <vector>
-#include "base/basictypes.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "media/audio/audio_parameters.h"
-
-namespace media {
-
-// AudioRendererSink is an interface representing the end-point for
-// rendered audio. An implementation is expected to
-// periodically call Render() on a callback object.
-
-class AudioRendererSink
- : public base::RefCountedThreadSafe<media::AudioRendererSink> {
- public:
- class RenderCallback {
- public:
- // Fills entire buffer of length |number_of_frames| but returns actual
- // number of frames it got from its source (|number_of_frames| in case of
- // continuous stream). That actual number of frames is passed to host
- // together with PCM audio data and host is free to use or ignore it.
- // TODO(crogers): use base:Callback instead.
- virtual size_t Render(const std::vector<float*>& audio_data,
- size_t number_of_frames,
- size_t audio_delay_milliseconds) = 0;
-
- protected:
- virtual ~RenderCallback() {}
- };
-
- virtual ~AudioRendererSink() {}
-
- // Sets important information about the audio stream format.
- // It must be called before any of the other methods.
- virtual void Initialize(size_t buffer_size,
- int channels,
- double sample_rate,
- AudioParameters::Format latency_format,
- RenderCallback* callback) = 0;
-
- // Starts audio playback.
- virtual void Start() = 0;
-
- // Stops audio playback.
- virtual void Stop() = 0;
-
- // Pauses playback.
- virtual void Pause(bool flush) = 0;
-
- // Resumes playback after calling Pause().
- virtual void Play() = 0;
-
- // Sets the playback volume, with range [0.0, 1.0] inclusive.
- // Returns |true| on success.
- virtual bool SetVolume(double volume) = 0;
-
- // Gets the playback volume, with range [0.0, 1.0] inclusive.
- virtual void GetVolume(double* volume) = 0;
-};
-
-} // namespace media
-
-#endif // MEDIA_BASE_AUDIO_RENDERER_SINK_H_
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 2bb0e65..4753202 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -102,7 +102,6 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
MediaStreamClient* media_stream_client,
media::MediaLog* media_log)
@@ -123,8 +122,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
media_stream_client_(media_stream_client),
media_log_(media_log),
is_accelerated_compositing_active_(false),
- incremented_externally_allocated_memory_(false),
- audio_source_provider_(audio_source_provider) {
+ incremented_externally_allocated_memory_(false) {
// Saves the current message loop.
DCHECK(!main_loop_);
main_loop_ = MessageLoop::current();
@@ -936,10 +934,6 @@ WebKit::WebMediaPlayerClient* WebMediaPlayerImpl::GetClient() {
return client_;
}
-WebKit::WebAudioSourceProvider* WebMediaPlayerImpl::audioSourceProvider() {
- return audio_source_provider_;
-}
-
void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() {
DCHECK_EQ(main_loop_, MessageLoop::current());
incremented_externally_allocated_memory_ = true;
diff --git a/webkit/media/webmediaplayer_impl.h b/webkit/media/webmediaplayer_impl.h
index b9600ec..7b5cd60 100644
--- a/webkit/media/webmediaplayer_impl.h
+++ b/webkit/media/webmediaplayer_impl.h
@@ -52,19 +52,14 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/message_loop.h"
-#include "media/base/audio_renderer_sink.h"
#include "media/base/filters.h"
#include "media/base/message_loop_factory.h"
#include "media/base/pipeline.h"
#include "skia/ext/platform_canvas.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProvider.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerClient.h"
-class RenderAudioSourceProvider;
-
namespace WebKit {
-class WebAudioSourceProvider;
class WebFrame;
}
@@ -103,13 +98,11 @@ class WebMediaPlayerImpl
// audio renderer is a fake audio device that plays silence. Provider of the
// |collection| can override the default filters by adding extra filters to
// |collection| before calling this method.
- // This object takes ownership of the |audio_source_provider|.
//
// Callers must call |Initialize()| before they can use the object.
WebMediaPlayerImpl(WebKit::WebMediaPlayerClient* client,
base::WeakPtr<WebMediaPlayerDelegate> delegate,
media::FilterCollection* collection,
- WebKit::WebAudioSourceProvider* audio_source_provider,
media::MessageLoopFactory* message_loop_factory,
MediaStreamClient* media_stream_client,
media::MediaLog* media_log);
@@ -179,8 +172,6 @@ class WebMediaPlayerImpl
virtual WebKit::WebVideoFrame* getCurrentFrame();
virtual void putCurrentFrame(WebKit::WebVideoFrame* web_video_frame);
- virtual WebKit::WebAudioSourceProvider* audioSourceProvider();
-
virtual bool sourceAppend(const unsigned char* data, unsigned length);
virtual void sourceEndOfStream(EndOfStreamStatus status);
@@ -274,8 +265,6 @@ class WebMediaPlayerImpl
bool incremented_externally_allocated_memory_;
- WebKit::WebAudioSourceProvider* audio_source_provider_;
-
DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl);
};
diff --git a/webkit/support/webkit_support.cc b/webkit/support/webkit_support.cc
index 80200a2..25a7be0 100644
--- a/webkit/support/webkit_support.cc
+++ b/webkit/support/webkit_support.cc
@@ -319,7 +319,6 @@ WebKit::WebMediaPlayer* CreateMediaPlayer(WebFrame* frame,
client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate>(),
collection.release(),
- NULL,
message_loop_factory.release(),
NULL,
new media::MediaLog()));
diff --git a/webkit/tools/test_shell/test_webview_delegate.cc b/webkit/tools/test_shell/test_webview_delegate.cc
index 412fbd3..8938599 100644
--- a/webkit/tools/test_shell/test_webview_delegate.cc
+++ b/webkit/tools/test_shell/test_webview_delegate.cc
@@ -652,7 +652,6 @@ WebMediaPlayer* TestWebViewDelegate::createMediaPlayer(
client,
base::WeakPtr<webkit_media::WebMediaPlayerDelegate>(),
collection.release(),
- NULL,
message_loop_factory.release(),
NULL,
new media::MediaLog()));