| Index: content/renderer/media/webmediaplayer_impl.cc
|
| diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc
|
| index b3ea6def86b7322c9f0c55bbc92ea6a0accea502..b76f1e4e22e76eb6e58e728c9089c313cdf2913f 100644
|
| --- a/content/renderer/media/webmediaplayer_impl.cc
|
| +++ b/content/renderer/media/webmediaplayer_impl.cc
|
| @@ -436,19 +436,19 @@ void WebMediaPlayerImpl::setPreload(WebMediaPlayer::Preload preload) {
|
| bool WebMediaPlayerImpl::hasVideo() const {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
|
|
| - return pipeline_.HasVideo();
|
| + return pipeline_metadata_.has_video;
|
| }
|
|
|
| bool WebMediaPlayerImpl::hasAudio() const {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
|
|
| - return pipeline_.HasAudio();
|
| + return pipeline_metadata_.has_audio;
|
| }
|
|
|
| blink::WebSize WebMediaPlayerImpl::naturalSize() const {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
|
|
| - return blink::WebSize(natural_size_);
|
| + return blink::WebSize(pipeline_metadata_.natural_size);
|
| }
|
|
|
| bool WebMediaPlayerImpl::paused() const {
|
| @@ -965,33 +965,19 @@ void WebMediaPlayerImpl::OnPipelineError(PipelineStatus error) {
|
| InvalidateOnMainThread();
|
| }
|
|
|
| -void WebMediaPlayerImpl::OnPipelineBufferingState(
|
| - media::Pipeline::BufferingState buffering_state) {
|
| - DVLOG(1) << "OnPipelineBufferingState(" << buffering_state << ")";
|
| -
|
| - switch (buffering_state) {
|
| - case media::Pipeline::kHaveMetadata:
|
| - // TODO(scherkus): Would be better to have a metadata changed callback
|
| - // that contained the size information as well whether audio/video is
|
| - // present. Doing so would let us remove more methods off Pipeline.
|
| - natural_size_ = pipeline_.GetInitialNaturalSize();
|
| -
|
| - SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
|
| -
|
| - if (hasVideo() && client_->needsWebLayerForVideo()) {
|
| - DCHECK(!video_weblayer_);
|
| - video_weblayer_.reset(
|
| - new webkit::WebLayerImpl(cc::VideoLayer::Create(this)));
|
| - client_->setWebLayer(video_weblayer_.get());
|
| - }
|
| - break;
|
| - case media::Pipeline::kPrerollCompleted:
|
| - // Only transition to ReadyStateHaveEnoughData if we don't have
|
| - // any pending seeks because the transition can cause Blink to
|
| - // report that the most recent seek has completed.
|
| - if (!pending_seek_)
|
| - SetReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
|
| - break;
|
| +void WebMediaPlayerImpl::OnPipelineMetadata(
|
| + media::PipelineMetadata metadata) {
|
| + DVLOG(1) << "OnPipelineMetadata";
|
| +
|
| + pipeline_metadata_ = metadata;
|
| +
|
| + SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
|
| +
|
| + if (hasVideo() && client_->needsWebLayerForVideo()) {
|
| + DCHECK(!video_weblayer_);
|
| + video_weblayer_.reset(
|
| + new webkit::WebLayerImpl(cc::VideoLayer::Create(this)));
|
| + client_->setWebLayer(video_weblayer_.get());
|
| }
|
|
|
| // TODO(scherkus): This should be handled by HTMLMediaElement and controls
|
| @@ -999,6 +985,21 @@ void WebMediaPlayerImpl::OnPipelineBufferingState(
|
| InvalidateOnMainThread();
|
| }
|
|
|
| +void WebMediaPlayerImpl::OnPipelinePrerollCompleted() {
|
| + DVLOG(1) << "OnPipelinePrerollCompleted";
|
| +
|
| + // Only transition to ReadyStateHaveEnoughData if we don't have
|
| + // any pending seeks because the transition can cause Blink to
|
| + // report that the most recent seek has completed.
|
| + if (!pending_seek_) {
|
| + SetReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
|
| +
|
| + // TODO(scherkus): This should be handled by HTMLMediaElement and controls
|
| + // should know when to invalidate themselves http://crbug.com/337015
|
| + InvalidateOnMainThread();
|
| + }
|
| +}
|
| +
|
| void WebMediaPlayerImpl::OnDemuxerOpened() {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
| client_->mediaSourceOpened(new WebMediaSourceImpl(
|
| @@ -1217,7 +1218,8 @@ void WebMediaPlayerImpl::StartPipeline() {
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineSeek),
|
| - BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingState),
|
| + BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata),
|
| + BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelinePrerollCompleted),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChange));
|
| }
|
|
|
| @@ -1279,7 +1281,7 @@ void WebMediaPlayerImpl::OnNaturalSizeChange(gfx::Size size) {
|
|
|
| media_log_->AddEvent(
|
| media_log_->CreateVideoSizeSetEvent(size.width(), size.height()));
|
| - natural_size_ = size;
|
| + pipeline_metadata_.natural_size = size;
|
|
|
| client_->sizeChanged();
|
| }
|
|
|