Index: content/renderer/media/webmediaplayer_impl.cc |
diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc |
index 48b001bf3423f25b10b2ce896de9e36e39f364c5..2f000bb2dd6d53f7570ded6006ae07132ab70f72 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 { |
@@ -943,33 +943,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()) { |
- DCHECK(!video_weblayer_); |
- video_weblayer_.reset(new webkit::WebLayerImpl( |
- cc::VideoLayer::Create(compositor_.GetVideoFrameProvider()))); |
- 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()) { |
+ DCHECK(!video_weblayer_); |
+ video_weblayer_.reset(new webkit::WebLayerImpl( |
+ cc::VideoLayer::Create(compositor_.GetVideoFrameProvider()))); |
+ client_->setWebLayer(video_weblayer_.get()); |
} |
// TODO(scherkus): This should be handled by HTMLMediaElement and controls |
@@ -977,6 +963,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( |
@@ -1195,7 +1196,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)); |
} |
@@ -1257,7 +1259,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(); |
} |