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

Side by Side Diff: chromecast/renderer/media/cma_renderer.cc

Issue 1873513003: Add video-rendering to mojo media pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromecast/renderer/media/cma_renderer.h" 5 #include "chromecast/renderer/media/cma_renderer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 if (has_audio_ || has_video_) 83 if (has_audio_ || has_video_)
84 media_pipeline_->Stop(); 84 media_pipeline_->Stop();
85 } 85 }
86 86
87 void CmaRenderer::Initialize( 87 void CmaRenderer::Initialize(
88 ::media::DemuxerStreamProvider* demuxer_stream_provider, 88 ::media::DemuxerStreamProvider* demuxer_stream_provider,
89 const ::media::PipelineStatusCB& init_cb, 89 const ::media::PipelineStatusCB& init_cb,
90 const ::media::StatisticsCB& statistics_cb, 90 const ::media::StatisticsCB& statistics_cb,
91 const ::media::BufferingStateCB& buffering_state_cb, 91 const ::media::BufferingStateCB& buffering_state_cb,
92 const ::media::NaturalSizeChangedCB& natural_size_changed_cb,
92 const base::Closure& ended_cb, 93 const base::Closure& ended_cb,
93 const ::media::PipelineStatusCB& error_cb, 94 const ::media::PipelineStatusCB& error_cb,
94 const base::Closure& waiting_for_decryption_key_cb) { 95 const base::Closure& waiting_for_decryption_key_cb) {
95 CMALOG(kLogControl) << __FUNCTION__; 96 CMALOG(kLogControl) << __FUNCTION__;
96 DCHECK(thread_checker_.CalledOnValidThread()); 97 DCHECK(thread_checker_.CalledOnValidThread());
97 DCHECK_EQ(state_, kUninitialized) << state_; 98 DCHECK_EQ(state_, kUninitialized) << state_;
98 DCHECK(!init_cb.is_null()); 99 DCHECK(!init_cb.is_null());
99 DCHECK(!statistics_cb.is_null()); 100 DCHECK(!statistics_cb.is_null());
100 DCHECK(!ended_cb.is_null()); 101 DCHECK(!ended_cb.is_null());
101 DCHECK(!error_cb.is_null()); 102 DCHECK(!error_cb.is_null());
102 DCHECK(!buffering_state_cb.is_null()); 103 DCHECK(!buffering_state_cb.is_null());
104 DCHECK(!natural_size_changed_cb.is_null());
103 DCHECK(!waiting_for_decryption_key_cb.is_null()); 105 DCHECK(!waiting_for_decryption_key_cb.is_null());
104 DCHECK(demuxer_stream_provider->GetStream(::media::DemuxerStream::AUDIO) || 106 DCHECK(demuxer_stream_provider->GetStream(::media::DemuxerStream::AUDIO) ||
105 demuxer_stream_provider->GetStream(::media::DemuxerStream::VIDEO)); 107 demuxer_stream_provider->GetStream(::media::DemuxerStream::VIDEO));
106 108
107 // Deferred from ctor so as to initialise on correct thread. 109 // Deferred from ctor so as to initialise on correct thread.
108 hole_frame_factory_.reset(new HoleFrameFactory(gpu_factories_)); 110 hole_frame_factory_.reset(new HoleFrameFactory(gpu_factories_));
109 111
110 BeginStateTransition(); 112 BeginStateTransition();
111 113
112 demuxer_stream_provider_ = demuxer_stream_provider; 114 demuxer_stream_provider_ = demuxer_stream_provider;
113 statistics_cb_ = statistics_cb; 115 statistics_cb_ = statistics_cb;
114 buffering_state_cb_ = buffering_state_cb; 116 buffering_state_cb_ = buffering_state_cb;
117 natural_size_changed_cb_ = natural_size_changed_cb;
115 ended_cb_ = ended_cb; 118 ended_cb_ = ended_cb;
116 error_cb_ = error_cb; 119 error_cb_ = error_cb;
117 waiting_for_decryption_key_cb_ = waiting_for_decryption_key_cb; 120 waiting_for_decryption_key_cb_ = waiting_for_decryption_key_cb;
118 121
119 MediaPipelineClient media_pipeline_client; 122 MediaPipelineClient media_pipeline_client;
120 media_pipeline_client.error_cb = ::media::BindToCurrentLoop(error_cb_); 123 media_pipeline_client.error_cb = ::media::BindToCurrentLoop(error_cb_);
121 media_pipeline_client.buffering_state_cb = ::media::BindToCurrentLoop( 124 media_pipeline_client.buffering_state_cb = ::media::BindToCurrentLoop(
122 base::Bind(&CmaRenderer::OnBufferingNotification, weak_this_)); 125 base::Bind(&CmaRenderer::OnBufferingNotification, weak_this_));
123 media_pipeline_client.time_update_cb = ::media::BindToCurrentLoop( 126 media_pipeline_client.time_update_cb = ::media::BindToCurrentLoop(
124 base::Bind(&CmaRenderer::OnPlaybackTimeUpdated, weak_this_)); 127 base::Bind(&CmaRenderer::OnPlaybackTimeUpdated, weak_this_));
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 void CmaRenderer::OnStatisticsUpdated( 404 void CmaRenderer::OnStatisticsUpdated(
402 const ::media::PipelineStatistics& stats) { 405 const ::media::PipelineStatistics& stats) {
403 DCHECK(thread_checker_.CalledOnValidThread()); 406 DCHECK(thread_checker_.CalledOnValidThread());
404 statistics_cb_.Run(stats); 407 statistics_cb_.Run(stats);
405 } 408 }
406 409
407 void CmaRenderer::OnNaturalSizeChanged(const gfx::Size& size) { 410 void CmaRenderer::OnNaturalSizeChanged(const gfx::Size& size) {
408 DCHECK(thread_checker_.CalledOnValidThread()); 411 DCHECK(thread_checker_.CalledOnValidThread());
409 video_renderer_sink_->PaintFrameUsingOldRenderingPath( 412 video_renderer_sink_->PaintFrameUsingOldRenderingPath(
410 hole_frame_factory_->CreateHoleFrame(size)); 413 hole_frame_factory_->CreateHoleFrame(size));
414 natural_size_changed_cb_.Run(size);
411 } 415 }
412 416
413 void CmaRenderer::OnPlaybackTimeUpdated(base::TimeDelta time, 417 void CmaRenderer::OnPlaybackTimeUpdated(base::TimeDelta time,
414 base::TimeDelta max_time, 418 base::TimeDelta max_time,
415 base::TimeTicks capture_time) { 419 base::TimeTicks capture_time) {
416 DCHECK(thread_checker_.CalledOnValidThread()); 420 DCHECK(thread_checker_.CalledOnValidThread());
417 if (state_ != kPlaying) { 421 if (state_ != kPlaying) {
418 LOG(WARNING) << "Ignoring a late time update"; 422 LOG(WARNING) << "Ignoring a late time update";
419 return; 423 return;
420 } 424 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 is_pending_transition_ = true; 480 is_pending_transition_ = true;
477 } 481 }
478 482
479 void CmaRenderer::CompleteStateTransition(State new_state) { 483 void CmaRenderer::CompleteStateTransition(State new_state) {
480 state_ = new_state; 484 state_ = new_state;
481 is_pending_transition_ = false; 485 is_pending_transition_ = false;
482 } 486 }
483 487
484 } // namespace media 488 } // namespace media
485 } // namespace chromecast 489 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698