diff options
author | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-20 00:51:52 +0000 |
---|---|---|
committer | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-20 00:51:52 +0000 |
commit | c566cb79b77ee9dfe3f287fb930c2e9e419793d3 (patch) | |
tree | e5dc3c731b7d7ca2399d412bcf96825b4de67bcf /webkit/media | |
parent | 2767ca041af88d18e387d59c12a49fff10443ce8 (diff) | |
download | chromium_src-c566cb79b77ee9dfe3f287fb930c2e9e419793d3.zip chromium_src-c566cb79b77ee9dfe3f287fb930c2e9e419793d3.tar.gz chromium_src-c566cb79b77ee9dfe3f287fb930c2e9e419793d3.tar.bz2 |
Fix ChunkDemuxer so it properly outputs buffered ranges.
BUG=133042
TEST=None. Verified manually by a simple test page that appends some data
and then checks the buffered attribute. I will convert this to a
LayoutTest soon.
Review URL: https://chromiumcodereview.appspot.com/10558011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@143106 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/media')
-rw-r--r-- | webkit/media/webmediaplayer_impl.cc | 30 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.cc | 7 | ||||
-rw-r--r-- | webkit/media/webmediaplayer_proxy.h | 3 |
3 files changed, 17 insertions, 23 deletions
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc index 321ca72..5707a7b 100644 --- a/webkit/media/webmediaplayer_impl.cc +++ b/webkit/media/webmediaplayer_impl.cc @@ -91,6 +91,16 @@ COMPILE_ASSERT_MATCHING_ENUM(Anonymous); COMPILE_ASSERT_MATCHING_ENUM(UseCredentials); #undef COMPILE_ASSERT_MATCHING_ENUM +static WebKit::WebTimeRanges ConvertToWebTimeRanges( + const media::Ranges<base::TimeDelta>& ranges) { + WebKit::WebTimeRanges result(ranges.size()); + for (size_t i = 0; i < ranges.size(); i++) { + result[i].start = ranges.start(i).InSecondsF(); + result[i].end = ranges.end(i).InSecondsF(); + } + return result; +} + WebMediaPlayerImpl::WebMediaPlayerImpl( WebKit::WebFrame* frame, WebKit::WebMediaPlayerClient* client, @@ -471,13 +481,8 @@ WebMediaPlayer::ReadyState WebMediaPlayerImpl::readyState() const { const WebKit::WebTimeRanges& WebMediaPlayerImpl::buffered() { DCHECK_EQ(main_loop_, MessageLoop::current()); - media::Ranges<base::TimeDelta> buffered_time_ranges = - pipeline_->GetBufferedTimeRanges(); - WebKit::WebTimeRanges web_ranges(buffered_time_ranges.size()); - for (size_t i = 0; i < buffered_time_ranges.size(); ++i) { - web_ranges[i].start = buffered_time_ranges.start(i).InSecondsF(); - web_ranges[i].end = buffered_time_ranges.end(i).InSecondsF(); - } + WebKit::WebTimeRanges web_ranges( + ConvertToWebTimeRanges(pipeline_->GetBufferedTimeRanges())); buffered_.swap(web_ranges); return buffered_; } @@ -656,16 +661,7 @@ bool WebMediaPlayerImpl::sourceRemoveId(const WebKit::WebString& id) { WebKit::WebTimeRanges WebMediaPlayerImpl::sourceBuffered( const WebKit::WebString& id) { - media::ChunkDemuxer::Ranges buffered_ranges; - if (!proxy_->DemuxerBufferedRange(id.utf8().data(), &buffered_ranges)) - return WebKit::WebTimeRanges(); - - WebKit::WebTimeRanges ranges(buffered_ranges.size()); - for (size_t i = 0; i < buffered_ranges.size(); i++) { - ranges[i].start = buffered_ranges[i].first.InSecondsF(); - ranges[i].end = buffered_ranges[i].second.InSecondsF(); - } - return ranges; + return ConvertToWebTimeRanges(proxy_->DemuxerBufferedRange(id.utf8().data())); } bool WebMediaPlayerImpl::sourceAppend(const unsigned char* data, diff --git a/webkit/media/webmediaplayer_proxy.cc b/webkit/media/webmediaplayer_proxy.cc index 8b2adc1..2809e68 100644 --- a/webkit/media/webmediaplayer_proxy.cc +++ b/webkit/media/webmediaplayer_proxy.cc @@ -200,10 +200,9 @@ void WebMediaPlayerProxy::DemuxerRemoveId(const std::string& id) { chunk_demuxer_->RemoveId(id); } -bool WebMediaPlayerProxy::DemuxerBufferedRange( - const std::string& id, - media::ChunkDemuxer::Ranges* ranges_out) { - return chunk_demuxer_->GetBufferedRanges(id, ranges_out); +media::Ranges<base::TimeDelta> WebMediaPlayerProxy::DemuxerBufferedRange( + const std::string& id) { + return chunk_demuxer_->GetBufferedRanges(id); } bool WebMediaPlayerProxy::DemuxerAppend(const std::string& id, diff --git a/webkit/media/webmediaplayer_proxy.h b/webkit/media/webmediaplayer_proxy.h index 0fe84f1..dcca88d 100644 --- a/webkit/media/webmediaplayer_proxy.h +++ b/webkit/media/webmediaplayer_proxy.h @@ -100,8 +100,7 @@ class WebMediaPlayerProxy const std::string& type, std::vector<std::string>& codecs); void DemuxerRemoveId(const std::string& id); - bool DemuxerBufferedRange(const std::string& id, - media::ChunkDemuxer::Ranges* ranges_out); + 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 DemuxerEndOfStream(media::PipelineStatus status); |