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

Unified Diff: media/renderers/renderer_impl.cc

Issue 2491043003: MediaResource refactoring to support multiple streams (Closed)
Patch Set: Added a TODO about DemuxerStream enabled/set_enabled methods Created 3 years, 10 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 | « media/remoting/fake_media_resource.cc ('k') | media/renderers/renderer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/renderers/renderer_impl.cc
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc
index b10dbd05bfe3b86a56e10e79873ba40c0567087f..3abc020566c30fad4cfecf3460545bf36c227267 100644
--- a/media/renderers/renderer_impl.cc
+++ b/media/renderers/renderer_impl.cc
@@ -350,15 +350,17 @@ bool RendererImpl::GetWallClockTimes(
}
bool RendererImpl::HasEncryptedStream() {
- DemuxerStream* audio_stream =
- media_resource_->GetStream(DemuxerStream::AUDIO);
- if (audio_stream && audio_stream->audio_decoder_config().is_encrypted())
- return true;
+ std::vector<DemuxerStream*> demuxer_streams =
+ media_resource_->GetAllStreams();
- DemuxerStream* video_stream =
- media_resource_->GetStream(DemuxerStream::VIDEO);
- if (video_stream && video_stream->video_decoder_config().is_encrypted())
- return true;
+ for (const auto& stream : demuxer_streams) {
+ if (stream->type() == DemuxerStream::AUDIO &&
+ stream->audio_decoder_config().is_encrypted())
+ return true;
+ if (stream->type() == DemuxerStream::VIDEO &&
+ stream->video_decoder_config().is_encrypted())
+ return true;
+ }
return false;
}
@@ -381,17 +383,16 @@ void RendererImpl::InitializeAudioRenderer() {
PipelineStatusCB done_cb =
base::Bind(&RendererImpl::OnAudioRendererInitializeDone, weak_this_);
+ // TODO(servolk): Implement proper support for multiple streams. But for now
+ // pick the first enabled stream to preserve the existing behavior.
DemuxerStream* audio_stream =
- media_resource_->GetStream(DemuxerStream::AUDIO);
+ media_resource_->GetFirstStream(DemuxerStream::AUDIO);
if (!audio_stream) {
audio_renderer_.reset();
task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK));
return;
}
- audio_stream->SetStreamStatusChangeCB(base::Bind(
- &RendererImpl::OnStreamStatusChanged, weak_this_, audio_stream));
-
audio_renderer_client_.reset(
new RendererClientInternal(DemuxerStream::AUDIO, this));
// Note: After the initialization of a renderer, error events from it may
@@ -430,17 +431,16 @@ void RendererImpl::InitializeVideoRenderer() {
PipelineStatusCB done_cb =
base::Bind(&RendererImpl::OnVideoRendererInitializeDone, weak_this_);
+ // TODO(servolk): Implement proper support for multiple streams. But for now
+ // pick the first enabled stream to preserve the existing behavior.
DemuxerStream* video_stream =
- media_resource_->GetStream(DemuxerStream::VIDEO);
+ media_resource_->GetFirstStream(DemuxerStream::VIDEO);
if (!video_stream) {
video_renderer_.reset();
task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK));
return;
}
- video_stream->SetStreamStatusChangeCB(base::Bind(
- &RendererImpl::OnStreamStatusChanged, weak_this_, video_stream));
-
video_renderer_client_.reset(
new RendererClientInternal(DemuxerStream::VIDEO, this));
video_renderer_->Initialize(
@@ -469,6 +469,9 @@ void RendererImpl::OnVideoRendererInitializeDone(PipelineStatus status) {
return;
}
+ media_resource_->SetStreamStatusChangeCB(
+ base::Bind(&RendererImpl::OnStreamStatusChanged, weak_this_));
+
if (audio_renderer_) {
time_source_ = audio_renderer_->GetTimeSource();
} else if (!time_source_) {
« no previous file with comments | « media/remoting/fake_media_resource.cc ('k') | media/renderers/renderer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698