summaryrefslogtreecommitdiffstats
path: root/webkit/media
diff options
context:
space:
mode:
authoracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-20 00:51:52 +0000
committeracolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-20 00:51:52 +0000
commitc566cb79b77ee9dfe3f287fb930c2e9e419793d3 (patch)
treee5dc3c731b7d7ca2399d412bcf96825b4de67bcf /webkit/media
parent2767ca041af88d18e387d59c12a49fff10443ce8 (diff)
downloadchromium_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.cc30
-rw-r--r--webkit/media/webmediaplayer_proxy.cc7
-rw-r--r--webkit/media/webmediaplayer_proxy.h3
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);