Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(248)

Unified Diff: content/renderer/media/webmediaplayer_impl.cc

Issue 206103004: Remove HasAudio(), HasVideo(), GetInitialNaturalSize() from media::Pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase /again/. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/webmediaplayer_impl.h ('k') | media/base/pipeline.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
}
« no previous file with comments | « content/renderer/media/webmediaplayer_impl.h ('k') | media/base/pipeline.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698