diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-29 21:49:49 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-29 21:49:49 +0000 |
commit | 38259a7a83545e07681d921564468844c7b03337 (patch) | |
tree | ceddb850f76be8ee565d9cc2d3d34d7ae445a1d7 /webkit/api | |
parent | 6b33da129646087bbc173a72c84e0690e91740de (diff) | |
download | chromium_src-38259a7a83545e07681d921564468844c7b03337.zip chromium_src-38259a7a83545e07681d921564468844c7b03337.tar.gz chromium_src-38259a7a83545e07681d921564468844c7b03337.tar.bz2 |
BufferedDataSource to support server without range request support
This patch will enable BufferedDataSource to support servers with
no range request support. It will start a probe request of 1 byte
size besides the regular request. If the server does not support
range request, we will turn on the is_streamed flag of FFmpeg and
will not do any seeking.
BUG=17628
TEST=test_shell_tests --gtest_filter=BufferedDataSource.*
Review URL: http://codereview.chromium.org/160076
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21999 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/api')
-rw-r--r-- | webkit/api/public/WebMediaPlayer.h | 10 | ||||
-rw-r--r-- | webkit/api/src/WebMediaPlayerClientImpl.cpp | 28 | ||||
-rw-r--r-- | webkit/api/src/WebMediaPlayerClientImpl.h | 2 |
3 files changed, 40 insertions, 0 deletions
diff --git a/webkit/api/public/WebMediaPlayer.h b/webkit/api/public/WebMediaPlayer.h index 8b60c77..56bc967 100644 --- a/webkit/api/public/WebMediaPlayer.h +++ b/webkit/api/public/WebMediaPlayer.h @@ -59,6 +59,13 @@ namespace WebKit { HaveEnoughData, }; + enum MovieLoadType{ + Unknown, + Download, + StoredStream, + LiveStream, + }; + virtual ~WebMediaPlayer() {} virtual void load(const WebURL&) = 0; @@ -104,6 +111,9 @@ namespace WebKit { virtual unsigned long long bytesLoaded() const = 0; virtual unsigned long long totalBytes() const = 0; + + virtual bool hasSingleSecurityOrigin() const = 0; + virtual MovieLoadType movieLoadType() const = 0; }; } // namespace WebKit diff --git a/webkit/api/src/WebMediaPlayerClientImpl.cpp b/webkit/api/src/WebMediaPlayerClientImpl.cpp index d26bd16..884d45b 100644 --- a/webkit/api/src/WebMediaPlayerClientImpl.cpp +++ b/webkit/api/src/WebMediaPlayerClientImpl.cpp @@ -361,6 +361,34 @@ void WebMediaPlayerClientImpl::setAutobuffer(bool autoBuffer) m_webMediaPlayer->setAutoBuffer(autoBuffer); } +bool WebMediaPlayerClientImpl::hasSingleSecurityOrigin() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->hasSingleSecurityOrigin(); + return false; +} + +MediaPlayer::MovieLoadType WebMediaPlayerClientImpl::movieLoadType() const +{ + COMPILE_ASSERT( + int(WebMediaPlayer::Unknown) == int(MediaPlayer::Unknown), + Unknown); + COMPILE_ASSERT( + int(WebMediaPlayer::Download) == int(MediaPlayer::Download), + Download); + COMPILE_ASSERT( + int(WebMediaPlayer::StoredStream) == int(MediaPlayer::StoredStream), + StoredStream); + COMPILE_ASSERT( + int(WebMediaPlayer::LiveStream) == int(MediaPlayer::LiveStream), + LiveStream); + + if (m_webMediaPlayer.get()) + return static_cast<MediaPlayer::MovieLoadType>( + m_webMediaPlayer->movieLoadType()); + return MediaPlayer::Unknown; +} + MediaPlayerPrivateInterface* WebMediaPlayerClientImpl::create(MediaPlayer* player) { WebMediaPlayerClientImpl* client = new WebMediaPlayerClientImpl(); diff --git a/webkit/api/src/WebMediaPlayerClientImpl.h b/webkit/api/src/WebMediaPlayerClientImpl.h index d758276..721073c 100644 --- a/webkit/api/src/WebMediaPlayerClientImpl.h +++ b/webkit/api/src/WebMediaPlayerClientImpl.h @@ -90,6 +90,8 @@ namespace WebKit { virtual unsigned bytesLoaded() const; virtual void setSize(const WebCore::IntSize&); virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&); + virtual bool hasSingleSecurityOrigin() const; + virtual WebCore::MediaPlayer::MovieLoadType movieLoadType() const; private: WebMediaPlayerClientImpl(); |