| Index: trunk/src/content/renderer/media/webmediaplayer_impl.cc
|
| ===================================================================
|
| --- trunk/src/content/renderer/media/webmediaplayer_impl.cc (revision 259158)
|
| +++ trunk/src/content/renderer/media/webmediaplayer_impl.cc (working copy)
|
| @@ -436,19 +436,19 @@
|
| bool WebMediaPlayerImpl::hasVideo() const {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
|
|
| - return pipeline_metadata_.has_video;
|
| + return pipeline_.HasVideo();
|
| }
|
|
|
| bool WebMediaPlayerImpl::hasAudio() const {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
|
|
| - return pipeline_metadata_.has_audio;
|
| + return pipeline_.HasAudio();
|
| }
|
|
|
| blink::WebSize WebMediaPlayerImpl::naturalSize() const {
|
| DCHECK(main_loop_->BelongsToCurrentThread());
|
|
|
| - return blink::WebSize(pipeline_metadata_.natural_size);
|
| + return blink::WebSize(natural_size_);
|
| }
|
|
|
| bool WebMediaPlayerImpl::paused() const {
|
| @@ -943,19 +943,33 @@
|
| InvalidateOnMainThread();
|
| }
|
|
|
| -void WebMediaPlayerImpl::OnPipelineMetadata(
|
| - media::PipelineMetadata metadata) {
|
| - DVLOG(1) << "OnPipelineMetadata";
|
| +void WebMediaPlayerImpl::OnPipelineBufferingState(
|
| + media::Pipeline::BufferingState buffering_state) {
|
| + DVLOG(1) << "OnPipelineBufferingState(" << buffering_state << ")";
|
|
|
| - pipeline_metadata_ = metadata;
|
| + 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);
|
| + SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
|
|
|
| - if (hasVideo()) {
|
| - DCHECK(!video_weblayer_);
|
| - video_weblayer_.reset(new webkit::WebLayerImpl(
|
| - cc::VideoLayer::Create(compositor_.GetVideoFrameProvider())));
|
| - client_->setWebLayer(video_weblayer_.get());
|
| + 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;
|
| }
|
|
|
| // TODO(scherkus): This should be handled by HTMLMediaElement and controls
|
| @@ -963,21 +977,6 @@
|
| 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(
|
| @@ -1196,8 +1195,7 @@
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineSeek),
|
| - BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata),
|
| - BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelinePrerollCompleted),
|
| + BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingState),
|
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChange));
|
| }
|
|
|
| @@ -1259,7 +1257,7 @@
|
|
|
| media_log_->AddEvent(
|
| media_log_->CreateVideoSizeSetEvent(size.width(), size.height()));
|
| - pipeline_metadata_.natural_size = size;
|
| + natural_size_ = size;
|
|
|
| client_->sizeChanged();
|
| }
|
|
|