Index: media/renderers/renderer_impl.cc |
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc |
index 5e99061138485fd732b5012ee1e561f22cd0e01f..cec26bcb655eea604b1c9f762cfd7414c816f2c4 100644 |
--- a/media/renderers/renderer_impl.cc |
+++ b/media/renderers/renderer_impl.cc |
@@ -17,8 +17,8 @@ |
#include "media/base/audio_decoder_config.h" |
#include "media/base/audio_renderer.h" |
#include "media/base/bind_to_current_loop.h" |
-#include "media/base/demuxer_stream_provider.h" |
#include "media/base/media_log.h" |
+#include "media/base/media_resource.h" |
#include "media/base/media_switches.h" |
#include "media/base/renderer_client.h" |
#include "media/base/time_source.h" |
@@ -129,7 +129,7 @@ RendererImpl::~RendererImpl() { |
} |
} |
-void RendererImpl::Initialize(DemuxerStreamProvider* demuxer_stream_provider, |
+void RendererImpl::Initialize(MediaResource* media_resource, |
RendererClient* client, |
const PipelineStatusCB& init_cb) { |
DVLOG(1) << __func__; |
@@ -139,7 +139,7 @@ void RendererImpl::Initialize(DemuxerStreamProvider* demuxer_stream_provider, |
DCHECK(client); |
client_ = client; |
- demuxer_stream_provider_ = demuxer_stream_provider; |
+ media_resource_ = media_resource; |
init_cb_ = init_cb; |
if (HasEncryptedStream() && !cdm_context_) { |
@@ -350,15 +350,16 @@ bool RendererImpl::GetWallClockTimes( |
} |
bool RendererImpl::HasEncryptedStream() { |
- DemuxerStream* audio_stream = |
- demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO); |
- if (audio_stream && audio_stream->audio_decoder_config().is_encrypted()) |
- return true; |
+ std::vector<DemuxerStream*> demuxer_streams = media_resource_->GetStreams(); |
- DemuxerStream* video_stream = |
- demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); |
- if (video_stream && video_stream->video_decoder_config().is_encrypted()) |
- return true; |
+ for (const auto& s : demuxer_streams) { |
+ if (s->type() == DemuxerStream::AUDIO && |
+ s->audio_decoder_config().is_encrypted()) |
+ return true; |
+ if (s->type() == DemuxerStream::VIDEO && |
+ s->video_decoder_config().is_encrypted()) |
+ return true; |
+ } |
return false; |
} |
@@ -381,8 +382,14 @@ void RendererImpl::InitializeAudioRenderer() { |
PipelineStatusCB done_cb = |
base::Bind(&RendererImpl::OnAudioRendererInitializeDone, weak_this_); |
- DemuxerStream* audio_stream = |
- demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO); |
+ std::vector<DemuxerStream*> streams = media_resource_->GetStreams(); |
+ DemuxerStream* audio_stream = nullptr; |
+ for (const auto& s : streams) { |
+ if (s->type() == DemuxerStream::AUDIO && s->enabled()) { |
+ audio_stream = s; |
+ break; |
+ } |
+ } |
if (!audio_stream) { |
audio_renderer_.reset(); |
task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK)); |
@@ -430,8 +437,15 @@ void RendererImpl::InitializeVideoRenderer() { |
PipelineStatusCB done_cb = |
base::Bind(&RendererImpl::OnVideoRendererInitializeDone, weak_this_); |
- DemuxerStream* video_stream = |
- demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO); |
+ std::vector<DemuxerStream*> streams = media_resource_->GetStreams(); |
+ DemuxerStream* video_stream = nullptr; |
+ for (const auto& s : streams) { |
+ if (s->type() == DemuxerStream::VIDEO && s->enabled()) { |
+ video_stream = s; |
+ break; |
+ } |
+ } |
+ |
if (!video_stream) { |
video_renderer_.reset(); |
task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK)); |