diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-10 21:53:22 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-10 21:53:22 +0000 |
commit | 67cd505bfb5fe7c135f23e273c040e0a031b1d88 (patch) | |
tree | 8ef480ff3bf6b7f124ab04c5e5d5ce5d39081439 /webkit/api | |
parent | 4cfdd73343aaef2f695407f39824da5a6884553e (diff) | |
download | chromium_src-67cd505bfb5fe7c135f23e273c040e0a031b1d88.zip chromium_src-67cd505bfb5fe7c135f23e273c040e0a031b1d88.tar.gz chromium_src-67cd505bfb5fe7c135f23e273c040e0a031b1d88.tar.bz2 |
Buffered time ranges for <video>
API change and related changes to support multiple buffered time ranges.
This change doesn't change any behavior.
BUG=21305
TEST=Open a video or audio file, you see the full bar of buffered ranges.
Review URL: http://codereview.chromium.org/199037
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25932 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/api')
-rw-r--r-- | webkit/api/public/WebMediaPlayer.h | 13 | ||||
-rw-r--r-- | webkit/api/src/WebMediaPlayerClientImpl.cpp | 16 | ||||
-rw-r--r-- | webkit/api/src/WebMediaPlayerClientImpl.h | 2 |
3 files changed, 25 insertions, 6 deletions
diff --git a/webkit/api/public/WebMediaPlayer.h b/webkit/api/public/WebMediaPlayer.h index ddd88e4..b6df8bc 100644 --- a/webkit/api/public/WebMediaPlayer.h +++ b/webkit/api/public/WebMediaPlayer.h @@ -31,6 +31,8 @@ #ifndef WebMediaPlayer_h #define WebMediaPlayer_h +#include <vector> + #include "WebCanvas.h" namespace WebKit { @@ -39,6 +41,15 @@ namespace WebKit { struct WebRect; struct WebSize; + struct WebTimeRange { + WebTimeRange(float s, float e) : start(s), end(e) {} + + float start; + float end; + }; + + typedef std::vector<WebTimeRange> WebTimeRanges; + class WebMediaPlayer { public: enum NetworkState { @@ -83,7 +94,7 @@ namespace WebKit { virtual void setVisible(bool) = 0; virtual bool setAutoBuffer(bool) = 0; virtual bool totalBytesKnown() = 0; - virtual float maxTimeBuffered() const = 0; + virtual const WebTimeRanges& buffered() const = 0; virtual float maxTimeSeekable() const = 0; virtual void setSize(const WebSize&) = 0; diff --git a/webkit/api/src/WebMediaPlayerClientImpl.cpp b/webkit/api/src/WebMediaPlayerClientImpl.cpp index a7c64044..b07ff6f 100644 --- a/webkit/api/src/WebMediaPlayerClientImpl.cpp +++ b/webkit/api/src/WebMediaPlayerClientImpl.cpp @@ -8,6 +8,7 @@ #if ENABLE(VIDEO) #include "TemporaryGlue.h" +#include "TimeRanges.h" #include "WebCanvas.h" #include "WebCString.h" #include "WebKit.h" @@ -253,11 +254,18 @@ float WebMediaPlayerClientImpl::maxTimeSeekable() const return 0.0f; } -float WebMediaPlayerClientImpl::maxTimeBuffered() const +WTF::PassRefPtr<WebCore::TimeRanges> WebMediaPlayerClientImpl::buffered() const { - if (m_webMediaPlayer.get()) - return m_webMediaPlayer->maxTimeBuffered(); - return 0.0f; + if (m_webMediaPlayer.get()) { + WebTimeRanges webRanges = m_webMediaPlayer->buffered(); + + // FIXME: Save the time ranges in a member variable and update it when needed. + WTF::RefPtr<TimeRanges> ranges = TimeRanges::create(); + for (size_t i = 0; i < webRanges.size(); ++i) + ranges->add(webRanges[i].start, webRanges[i].end); + return ranges.release(); + } + return TimeRanges::create(); } int WebMediaPlayerClientImpl::dataRate() const diff --git a/webkit/api/src/WebMediaPlayerClientImpl.h b/webkit/api/src/WebMediaPlayerClientImpl.h index 8c5add0..075a710 100644 --- a/webkit/api/src/WebMediaPlayerClientImpl.h +++ b/webkit/api/src/WebMediaPlayerClientImpl.h @@ -82,7 +82,7 @@ namespace WebKit { virtual WebCore::MediaPlayer::NetworkState networkState() const; virtual WebCore::MediaPlayer::ReadyState readyState() const; virtual float maxTimeSeekable() const; - virtual float maxTimeBuffered() const; + virtual WTF::PassRefPtr<WebCore::TimeRanges> buffered() const; virtual int dataRate() const; virtual void setAutobuffer(bool); virtual bool totalBytesKnown() const; |