diff options
author | vrk@chromium.org <vrk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-28 03:07:33 +0000 |
---|---|---|
committer | vrk@chromium.org <vrk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-28 03:07:33 +0000 |
commit | f75fb47c15c88e42cc0a0b8cee2e04133def8d46 (patch) | |
tree | b2cf21a2e5a08c87a2331e2d3c6f00c70bb3a4d7 /webkit/media | |
parent | e2464c33ee08db47a52d4148ab1363461091fa68 (diff) | |
download | chromium_src-f75fb47c15c88e42cc0a0b8cee2e04133def8d46.zip chromium_src-f75fb47c15c88e42cc0a0b8cee2e04133def8d46.tar.gz chromium_src-f75fb47c15c88e42cc0a0b8cee2e04133def8d46.tar.bz2 |
Support setting an explicit duration on MediaSource objects
This is the Chromium-side change to support MediaSource's duration attribute.
BUG=NONE
Review URL: https://chromiumcodereview.appspot.com/10879056
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153613 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/media')
-rw-r--r-- | webkit/media/webmediaplayer_impl.cc | 10 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_impl.h | 1 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.cc | 4 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.h | 1 |
4 files changed, 16 insertions, 0 deletions
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc index e07b0d4..0b9cc7a7 100644 --- a/webkit/media/webmediaplayer_impl.cc +++ b/webkit/media/webmediaplayer_impl.cc @@ -665,6 +665,16 @@ bool WebMediaPlayerImpl::sourceAbort(const WebKit::WebString& id) { return true; } +void WebMediaPlayerImpl::sourceSetDuration(double new_duration) { + if (static_cast<double>(duration()) == new_duration) + return; + + proxy_->DemuxerSetDuration( + base::TimeDelta::FromMicroseconds( + new_duration * base::Time::kMicrosecondsPerSecond)); + GetClient()->durationChanged(); +} + void WebMediaPlayerImpl::sourceEndOfStream( WebMediaPlayer::EndOfStreamStatus status) { DCHECK_EQ(main_loop_, MessageLoop::current()); diff --git a/webkit/media/webmediaplayer_impl.h b/webkit/media/webmediaplayer_impl.h index 47bb12d..83aa13a8 100644 --- a/webkit/media/webmediaplayer_impl.h +++ b/webkit/media/webmediaplayer_impl.h @@ -198,6 +198,7 @@ class WebMediaPlayerImpl const unsigned char* data, unsigned length); virtual bool sourceAbort(const WebKit::WebString& id); + virtual void sourceSetDuration(double new_duration); virtual void sourceEndOfStream(EndOfStreamStatus status); virtual bool sourceSetTimestampOffset(const WebKit::WebString& id, double offset); diff --git a/webkit/media/webmediaplayer_proxy.cc b/webkit/media/webmediaplayer_proxy.cc index bd888c7..9a25542 100644 --- a/webkit/media/webmediaplayer_proxy.cc +++ b/webkit/media/webmediaplayer_proxy.cc @@ -167,6 +167,10 @@ void WebMediaPlayerProxy::DemuxerAbort(const std::string& id) { chunk_demuxer_->Abort(id); } +void WebMediaPlayerProxy::DemuxerSetDuration(base::TimeDelta duration) { + chunk_demuxer_->SetDuration(duration); +} + void WebMediaPlayerProxy::DemuxerEndOfStream(media::PipelineStatus status) { chunk_demuxer_->EndOfStream(status); } diff --git a/webkit/media/webmediaplayer_proxy.h b/webkit/media/webmediaplayer_proxy.h index 9e6ca4f..d987d5e 100644 --- a/webkit/media/webmediaplayer_proxy.h +++ b/webkit/media/webmediaplayer_proxy.h @@ -89,6 +89,7 @@ class WebMediaPlayerProxy media::Ranges<base::TimeDelta> DemuxerBufferedRange(const std::string& id); bool DemuxerAppend(const std::string& id, const uint8* data, size_t length); void DemuxerAbort(const std::string& id); + void DemuxerSetDuration(base::TimeDelta duration); void DemuxerEndOfStream(media::PipelineStatus status); void DemuxerShutdown(); bool DemuxerSetTimestampOffset(const std::string& id, base::TimeDelta offset); |