Index: media/mojo/services/mojo_renderer_service.cc |
diff --git a/media/mojo/services/mojo_renderer_service.cc b/media/mojo/services/mojo_renderer_service.cc |
index 7646b83d06e22df692653886c24dd3d8c5ed732f..e2196e2b6bb201f8ce51efde4cdf4bc0b2f06d05 100644 |
--- a/media/mojo/services/mojo_renderer_service.cc |
+++ b/media/mojo/services/mojo_renderer_service.cc |
@@ -8,6 +8,7 @@ |
#include "base/bind.h" |
#include "media/base/media_keys.h" |
+#include "media/base/media_url_demuxer.h" |
#include "media/base/renderer.h" |
#include "media/mojo/services/demuxer_stream_provider_shim.h" |
#include "media/mojo/services/mojo_cdm_service_context.h" |
@@ -33,20 +34,33 @@ MojoRendererService::MojoRendererService( |
weak_this_ = weak_factory_.GetWeakPtr(); |
} |
-MojoRendererService::~MojoRendererService() { |
-} |
+MojoRendererService::~MojoRendererService() {} |
void MojoRendererService::Initialize(mojom::RendererClientPtr client, |
mojom::DemuxerStreamPtr audio, |
mojom::DemuxerStreamPtr video, |
+ const base::Optional<GURL>& url, |
const InitializeCallback& callback) { |
DVLOG(1) << __FUNCTION__; |
DCHECK_EQ(state_, STATE_UNINITIALIZED); |
client_ = std::move(client); |
state_ = STATE_INITIALIZING; |
- stream_provider_.reset(new DemuxerStreamProviderShim( |
- std::move(audio), std::move(video), |
- base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback))); |
+ |
+ if (url == base::nullopt) { |
+ stream_provider_.reset(new DemuxerStreamProviderShim( |
+ std::move(audio), std::move(video), |
+ base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback))); |
+ return; |
+ } |
+ |
+ DCHECK(!audio); |
+ DCHECK(!video); |
+ DCHECK(!url.value().is_empty()); |
+ stream_provider_.reset(new MediaUrlDemuxer(nullptr, url.value())); |
+ renderer_->Initialize( |
+ stream_provider_.get(), this, |
+ base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_, |
+ callback)); |
} |
void MojoRendererService::Flush(const FlushCallback& callback) { |