Index: media/base/pipeline_impl.cc |
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc |
index 0a08497ef248beeb82db6e420dffefd585f82809..e70ca30ca3155a8703a54d28f5c09a0d111c0650 100644 |
--- a/media/base/pipeline_impl.cc |
+++ b/media/base/pipeline_impl.cc |
@@ -823,10 +823,22 @@ void PipelineImpl::RendererWrapper::InitializeRenderer( |
const PipelineStatusCB& done_cb) { |
DCHECK(media_task_runner_->BelongsToCurrentThread()); |
- if (!demuxer_->GetStream(DemuxerStream::AUDIO) && |
- !demuxer_->GetStream(DemuxerStream::VIDEO)) { |
- done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER); |
- return; |
+ switch (demuxer_->GetType()) { |
+ case DemuxerStreamProvider::Type::STREAM: |
+ if (!demuxer_->GetStream(DemuxerStream::AUDIO) && |
+ !demuxer_->GetStream(DemuxerStream::VIDEO)) { |
+ done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER); |
+ return; |
+ } |
+ break; |
+ |
+ case DemuxerStreamProvider::Type::URL: |
+ // N.B: Empty GURL are not valid. |
+ if (!demuxer_->GetUrl().is_valid()) { |
+ done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER); |
+ return; |
+ } |
+ break; |
} |
if (cdm_context_) |
@@ -852,15 +864,28 @@ void PipelineImpl::RendererWrapper::ReportMetadata() { |
DCHECK(media_task_runner_->BelongsToCurrentThread()); |
PipelineMetadata metadata; |
- metadata.timeline_offset = demuxer_->GetTimelineOffset(); |
- DemuxerStream* stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
- if (stream) { |
- metadata.has_video = true; |
- metadata.natural_size = stream->video_decoder_config().natural_size(); |
- metadata.video_rotation = stream->video_rotation(); |
- } |
- if (demuxer_->GetStream(DemuxerStream::AUDIO)) { |
- metadata.has_audio = true; |
+ DemuxerStream* stream; |
+ |
+ switch (demuxer_->GetType()) { |
+ case DemuxerStreamProvider::Type::STREAM: |
+ metadata.timeline_offset = demuxer_->GetTimelineOffset(); |
+ stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
+ if (stream) { |
+ metadata.has_video = true; |
+ metadata.natural_size = stream->video_decoder_config().natural_size(); |
+ metadata.video_rotation = stream->video_rotation(); |
+ } |
+ if (demuxer_->GetStream(DemuxerStream::AUDIO)) { |
+ metadata.has_audio = true; |
+ } |
+ break; |
+ |
+ case DemuxerStreamProvider::Type::URL: |
+ // We don't know if the MediaPlayerRender has Audio/Video until we start |
+ // playing. Conservatively assume that they do. |
+ metadata.has_video = true; |
+ metadata.has_audio = true; |
+ break; |
} |
main_task_runner_->PostTask(FROM_HERE, base::Bind(&PipelineImpl::OnMetadata, |