summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authoracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-23 23:46:36 +0000
committeracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-23 23:46:36 +0000
commit35c83a09965168db7670efb4803554c0bdc8187f (patch)
tree47cd6abc50b5ff74c1dfd267f94c8f3def09fc49 /webkit
parenta9a0b71dc445677a21bf2ff3e7658b1c878de9a2 (diff)
downloadchromium_src-35c83a09965168db7670efb4803554c0bdc8187f.zip
chromium_src-35c83a09965168db7670efb4803554c0bdc8187f.tar.gz
chromium_src-35c83a09965168db7670efb4803554c0bdc8187f.tar.bz2
Implement sourceAddId() & sourceRemoveId()
BUG=122897 TEST=Covered by LayoutTests Review URL: http://codereview.chromium.org/10164017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133568 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/media/webmediaplayer_impl.cc31
-rw-r--r--webkit/media/webmediaplayer_impl.h7
-rw-r--r--webkit/media/webmediaplayer_proxy.cc21
-rw-r--r--webkit/media/webmediaplayer_proxy.h6
4 files changed, 57 insertions, 8 deletions
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 1c236fb8..77b86c2 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -645,10 +645,39 @@ void WebMediaPlayerImpl::putCurrentFrame(
}
}
+#define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \
+ COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayer::webkit_name) == \
+ static_cast<int>(media::ChunkDemuxer::chromium_name), \
+ mismatching_status_enums)
+COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusOk, kOk);
+COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusNotSupported, kNotSupported);
+COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusReachedIdLimit, kReachedIdLimit);
+
+WebKit::WebMediaPlayer::AddIdStatus WebMediaPlayerImpl::sourceAddId(
+ const WebKit::WebString& id,
+ const WebKit::WebString& type) {
+ DCHECK_EQ(main_loop_, MessageLoop::current());
+ return static_cast<WebKit::WebMediaPlayer::AddIdStatus>(
+ proxy_->DemuxerAddId(id.utf8().data(), type.utf8().data()));
+}
+
+bool WebMediaPlayerImpl::sourceRemoveId(const WebKit::WebString& id) {
+ DCHECK(!id.isEmpty());
+ proxy_->DemuxerRemoveId(id.utf8().data());
+ return true;
+}
+
bool WebMediaPlayerImpl::sourceAppend(const unsigned char* data,
unsigned length) {
+ return sourceAppend(WebKit::WebString::fromUTF8("DefaultSourceId"),
+ data, length);
+}
+
+bool WebMediaPlayerImpl::sourceAppend(const WebKit::WebString& id,
+ const unsigned char* data,
+ unsigned length) {
DCHECK_EQ(main_loop_, MessageLoop::current());
- return proxy_->DemuxerAppend(data, length);
+ return proxy_->DemuxerAppend(id.utf8().data(), data, length);
}
void WebMediaPlayerImpl::sourceEndOfStream(
diff --git a/webkit/media/webmediaplayer_impl.h b/webkit/media/webmediaplayer_impl.h
index ae1e889..83c2c0d 100644
--- a/webkit/media/webmediaplayer_impl.h
+++ b/webkit/media/webmediaplayer_impl.h
@@ -181,7 +181,14 @@ class WebMediaPlayerImpl
virtual WebKit::WebAudioSourceProvider* audioSourceProvider();
+ virtual AddIdStatus sourceAddId(const WebKit::WebString& id,
+ const WebKit::WebString& type);
+ virtual bool sourceRemoveId(const WebKit::WebString& id);
+ // TODO(acolwell): Remove non-id version when http://webk.it/83788 fix lands.
virtual bool sourceAppend(const unsigned char* data, unsigned length);
+ virtual bool sourceAppend(const WebKit::WebString& id,
+ const unsigned char* data,
+ unsigned length);
virtual void sourceEndOfStream(EndOfStreamStatus status);
virtual MediaKeyException generateKeyRequest(
diff --git a/webkit/media/webmediaplayer_proxy.cc b/webkit/media/webmediaplayer_proxy.cc
index f6984f0..54661d9 100644
--- a/webkit/media/webmediaplayer_proxy.cc
+++ b/webkit/media/webmediaplayer_proxy.cc
@@ -187,15 +187,24 @@ void WebMediaPlayerProxy::DemuxerFlush() {
chunk_demuxer_->FlushData();
}
-bool WebMediaPlayerProxy::DemuxerAppend(const uint8* data, size_t length) {
- if (chunk_demuxer_.get())
- return chunk_demuxer_->AppendData(data, length);
- return false;
+media::ChunkDemuxer::Status WebMediaPlayerProxy::DemuxerAddId(
+ const std::string& id,
+ const std::string& type) {
+ return chunk_demuxer_->AddId(id, type);
+}
+
+void WebMediaPlayerProxy::DemuxerRemoveId(const std::string& id) {
+ chunk_demuxer_->RemoveId(id);
+}
+
+bool WebMediaPlayerProxy::DemuxerAppend(const std::string& id,
+ const uint8* data,
+ size_t length) {
+ return chunk_demuxer_->AppendData(id, data, length);
}
void WebMediaPlayerProxy::DemuxerEndOfStream(media::PipelineStatus status) {
- if (chunk_demuxer_.get())
- chunk_demuxer_->EndOfStream(status);
+ chunk_demuxer_->EndOfStream(status);
}
void WebMediaPlayerProxy::DemuxerShutdown() {
diff --git a/webkit/media/webmediaplayer_proxy.h b/webkit/media/webmediaplayer_proxy.h
index 83fab2f..cc07306 100644
--- a/webkit/media/webmediaplayer_proxy.h
+++ b/webkit/media/webmediaplayer_proxy.h
@@ -10,6 +10,7 @@
#include "base/memory/ref_counted.h"
#include "base/synchronization/lock.h"
#include "media/base/pipeline.h"
+#include "media/filters/chunk_demuxer.h"
#include "media/filters/chunk_demuxer_client.h"
#include "media/filters/ffmpeg_video_decoder.h"
#include "webkit/media/buffered_data_source.h"
@@ -88,7 +89,10 @@ class WebMediaPlayerProxy
// Methods for Demuxer communication.
void DemuxerFlush();
- bool DemuxerAppend(const uint8* data, size_t length);
+ media::ChunkDemuxer::Status DemuxerAddId(const std::string& id,
+ const std::string& type);
+ void DemuxerRemoveId(const std::string& id);
+ bool DemuxerAppend(const std::string& id, const uint8* data, size_t length);
void DemuxerEndOfStream(media::PipelineStatus status);
void DemuxerShutdown();