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(); |
} |