| Index: content/renderer/media/webmediaplayer_impl.cc
|
| diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc
|
| index 451317ee6cc0cd45371c8d257c570dd4e5af54ae..7e969b17b90343a128b8e64b4bf60212328ecefb 100644
|
| --- a/content/renderer/media/webmediaplayer_impl.cc
|
| +++ b/content/renderer/media/webmediaplayer_impl.cc
|
| @@ -167,6 +167,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
|
| supports_save_(true),
|
| starting_(false),
|
| chunk_demuxer_(NULL),
|
| + buffered_(pipeline_),
|
| compositor_( // Threaded compositing isn't enabled universally yet.
|
| (RenderThreadImpl::current()->compositor_message_loop_proxy()
|
| ? RenderThreadImpl::current()->compositor_message_loop_proxy()
|
| @@ -308,13 +309,11 @@ void WebMediaPlayerImpl::DoLoad(LoadType load_type,
|
| }
|
|
|
| // Otherwise it's a regular request which requires resolving the URL first.
|
| - // TODO(sandersd): Make WMPI a DataSourceHost and pass |this| instead of
|
| - // |&pipeline_|.
|
| data_source_.reset(new BufferedDataSource(
|
| main_loop_,
|
| frame_,
|
| media_log_.get(),
|
| - &pipeline_,
|
| + &buffered_,
|
| base::Bind(&WebMediaPlayerImpl::NotifyDownloading, AsWeakPtr())));
|
| data_source_->Initialize(
|
| url, static_cast<BufferedResourceLoader::CORSMode>(cors_mode),
|
| @@ -495,12 +494,21 @@ WebMediaPlayer::ReadyState WebMediaPlayerImpl::readyState() const {
|
| return ready_state_;
|
| }
|
|
|
| +static base::TimeDelta TimeForByteOffset(
|
| + int64 byte_offset, int64 total_bytes, base::TimeDelta duration) {
|
| + double position = static_cast<double>(byte_offset) / total_bytes;
|
| + // Snap to the beginning/end where the approximation can look especially bad.
|
| + if (position < 0.01)
|
| + return base::TimeDelta();
|
| + if (position > 0.99)
|
| + return duration;
|
| + return base::TimeDelta::FromMilliseconds(
|
| + static_cast<int64>(position * duration.InMilliseconds()));
|
| +}
|
| +
|
| const blink::WebTimeRanges& WebMediaPlayerImpl::buffered() {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
| - blink::WebTimeRanges web_ranges(
|
| - ConvertToWebTimeRanges(pipeline_.GetBufferedTimeRanges()));
|
| - buffered_.swap(web_ranges);
|
| - return buffered_;
|
| + return buffered_.BufferedTimeRanges();
|
| }
|
|
|
| double WebMediaPlayerImpl::maxTimeSeekable() const {
|
| @@ -519,8 +527,7 @@ double WebMediaPlayerImpl::maxTimeSeekable() const {
|
|
|
| bool WebMediaPlayerImpl::didLoadingProgress() const {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
| -
|
| - return pipeline_.DidLoadingProgress();
|
| + return buffered_.DidLoadingProgress();
|
| }
|
|
|
| void WebMediaPlayerImpl::paint(WebCanvas* canvas,
|
|
|