summaryrefslogtreecommitdiffstats
path: root/webkit/media
diff options
context:
space:
mode:
authorcrogers@google.com <crogers@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-07 00:06:21 +0000
committercrogers@google.com <crogers@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-07 00:06:21 +0000
commit9e2269da3e7cd37c98422d4bd7f79c1048a4bd40 (patch)
tree6662278ff746f0ca9d9c25d58f4bcad6cedb5cd1 /webkit/media
parentc7551b72248653f7a49e92f3bf54db36ea121f41 (diff)
downloadchromium_src-9e2269da3e7cd37c98422d4bd7f79c1048a4bd40.zip
chromium_src-9e2269da3e7cd37c98422d4bd7f79c1048a4bd40.tar.gz
chromium_src-9e2269da3e7cd37c98422d4bd7f79c1048a4bd40.tar.bz2
Integrate HTMLMediaElement with Web Audio API's MediaElementAudioSourceNode (take 2)
RenderAudioSourceProvider implements WebKit::WebAudioSourceProvider using AudioRendererImpl BUG=none TEST=none (tested locally) Original Code Review: http://codereview.chromium.org/8980008/ Review URL: http://codereview.chromium.org/9122009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@116778 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/media')
-rw-r--r--webkit/media/webmediaplayer_impl.cc8
-rw-r--r--webkit/media/webmediaplayer_impl.h11
2 files changed, 18 insertions, 1 deletions
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index fac7996..d2ec3be 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -102,6 +102,7 @@ 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)
@@ -122,7 +123,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
media_stream_client_(media_stream_client),
media_log_(media_log),
is_accelerated_compositing_active_(false),
- incremented_externally_allocated_memory_(false) {
+ incremented_externally_allocated_memory_(false),
+ audio_source_provider_(audio_source_provider) {
// Saves the current message loop.
DCHECK(!main_loop_);
main_loop_ = MessageLoop::current();
@@ -936,6 +938,10 @@ 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 7b5cd60..b9600ec 100644
--- a/webkit/media/webmediaplayer_impl.h
+++ b/webkit/media/webmediaplayer_impl.h
@@ -52,14 +52,19 @@
#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;
}
@@ -98,11 +103,13 @@ 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);
@@ -172,6 +179,8 @@ 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);
@@ -265,6 +274,8 @@ class WebMediaPlayerImpl
bool incremented_externally_allocated_memory_;
+ WebKit::WebAudioSourceProvider* audio_source_provider_;
+
DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl);
};