summaryrefslogtreecommitdiffstats
path: root/webkit/media
diff options
context:
space:
mode:
authorvrk@chromium.org <vrk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-28 03:07:33 +0000
committervrk@chromium.org <vrk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-28 03:07:33 +0000
commitf75fb47c15c88e42cc0a0b8cee2e04133def8d46 (patch)
treeb2cf21a2e5a08c87a2331e2d3c6f00c70bb3a4d7 /webkit/media
parente2464c33ee08db47a52d4148ab1363461091fa68 (diff)
downloadchromium_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.cc10
-rw-r--r--webkit/media/webmediaplayer_impl.h1
-rw-r--r--webkit/media/webmediaplayer_proxy.cc4
-rw-r--r--webkit/media/webmediaplayer_proxy.h1
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);