Index: chromecast/media/service/cast_renderer.cc |
diff --git a/chromecast/media/service/cast_renderer.cc b/chromecast/media/service/cast_renderer.cc |
index aa3ae067644ddc8c5fcbbe77667e5a653c156fe4..109517b2bc3f12a4ae30fd527de23dd9ffa65d2d 100644 |
--- a/chromecast/media/service/cast_renderer.cc |
+++ b/chromecast/media/service/cast_renderer.cc |
@@ -18,8 +18,8 @@ |
#include "chromecast/public/media/media_pipeline_device_params.h" |
#include "media/base/audio_decoder_config.h" |
#include "media/base/demuxer_stream.h" |
-#include "media/base/demuxer_stream_provider.h" |
#include "media/base/media_log.h" |
+#include "media/base/media_resource.h" |
#include "media/base/renderer_client.h" |
namespace chromecast { |
@@ -61,10 +61,9 @@ CastRenderer::~CastRenderer() { |
video_resolution_policy_->RemoveObserver(this); |
} |
-void CastRenderer::Initialize( |
- ::media::DemuxerStreamProvider* demuxer_stream_provider, |
- ::media::RendererClient* client, |
- const ::media::PipelineStatusCB& init_cb) { |
+void CastRenderer::Initialize(::media::MediaResource* media_resource, |
+ ::media::RendererClient* client, |
+ const ::media::PipelineStatusCB& init_cb) { |
CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
DCHECK(task_runner_->BelongsToCurrentThread()); |
@@ -92,9 +91,22 @@ void CastRenderer::Initialize( |
pipeline_->SetClient(pipeline_client); |
pipeline_->Initialize(load_type, std::move(backend)); |
+ // Obtain the first enabled audio and video streams. |
xhwang
2017/02/01 18:26:03
Here and everywhere else, add a TODO to enable mul
servolk
2017/02/01 22:29:11
Done.
|
+ std::vector<::media::DemuxerStream*> streams = media_resource->GetStreams(); |
+ ::media::DemuxerStream* audio_stream = nullptr; |
+ ::media::DemuxerStream* video_stream = nullptr; |
+ for (const auto& s : streams) { |
xhwang
2017/02/01 18:26:03
tiny nit: This is a local variable in the loop so
servolk
2017/02/01 22:29:11
Done.
|
+ if (!audio_stream && s->enabled() && |
+ s->type() == ::media::DemuxerStream::AUDIO) { |
+ audio_stream = s; |
+ } |
+ if (!video_stream && s->enabled() && |
+ s->type() == ::media::DemuxerStream::VIDEO) { |
+ video_stream = s; |
+ } |
+ } |
+ |
// Initialize audio. |
- ::media::DemuxerStream* audio_stream = |
- demuxer_stream_provider->GetStream(::media::DemuxerStream::AUDIO); |
if (audio_stream) { |
AvPipelineClient audio_client; |
audio_client.wait_for_key_cb = base::Bind( |
@@ -119,8 +131,6 @@ void CastRenderer::Initialize( |
} |
// Initialize video. |
- ::media::DemuxerStream* video_stream = |
- demuxer_stream_provider->GetStream(::media::DemuxerStream::VIDEO); |
if (video_stream) { |
VideoPipelineClient video_client; |
video_client.av_pipeline_client.wait_for_key_cb = base::Bind( |