diff options
author | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-23 23:46:36 +0000 |
---|---|---|
committer | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-23 23:46:36 +0000 |
commit | 35c83a09965168db7670efb4803554c0bdc8187f (patch) | |
tree | 47cd6abc50b5ff74c1dfd267f94c8f3def09fc49 /webkit | |
parent | a9a0b71dc445677a21bf2ff3e7658b1c878de9a2 (diff) | |
download | chromium_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.cc | 31 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_impl.h | 7 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.cc | 21 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.h | 6 |
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(); |