| Index: media/mojo/services/service_factory_impl.cc
|
| diff --git a/media/mojo/services/service_factory_impl.cc b/media/mojo/services/service_factory_impl.cc
|
| index 76a0389404ab407840a548fd92a82c6e9b02e32f..4bdf49055ca016762a9e476f3839dc01d44028dc 100644
|
| --- a/media/mojo/services/service_factory_impl.cc
|
| +++ b/media/mojo/services/service_factory_impl.cc
|
| @@ -19,7 +19,9 @@
|
| #endif // defined(ENABLE_MOJO_VIDEO_DECODER)
|
|
|
| #if defined(ENABLE_MOJO_RENDERER)
|
| +#include "media/base/audio_renderer_sink.h"
|
| #include "media/base/renderer_factory.h"
|
| +#include "media/base/video_renderer_sink.h"
|
| #include "media/mojo/services/mojo_renderer_service.h"
|
| #endif // defined(ENABLE_MOJO_RENDERER)
|
|
|
| @@ -82,19 +84,26 @@ void ServiceFactoryImpl::CreateRenderer(
|
| const mojo::String& audio_device_id,
|
| mojo::InterfaceRequest<mojom::Renderer> request) {
|
| #if defined(ENABLE_MOJO_RENDERER)
|
| - // The created object is owned by the pipe.
|
| - // The audio and video sinks are owned by the client.
|
| + RendererFactory* renderer_factory = GetRendererFactory();
|
| + if (!renderer_factory)
|
| + return;
|
| +
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner(
|
| base::ThreadTaskRunnerHandle::Get());
|
| -
|
| - std::unique_ptr<Renderer> renderer = mojo_media_client_->CreateRenderer(
|
| - task_runner, media_log_, audio_device_id);
|
| + auto audio_sink =
|
| + mojo_media_client_->CreateAudioRendererSink(audio_device_id);
|
| + auto video_sink = mojo_media_client_->CreateVideoRendererSink(task_runner);
|
| + auto renderer = renderer_factory->CreateRenderer(
|
| + task_runner, task_runner, audio_sink.get(), video_sink.get(),
|
| + RequestSurfaceCB());
|
| if (!renderer) {
|
| LOG(ERROR) << "Renderer creation failed.";
|
| return;
|
| }
|
|
|
| + // The created object is owned by the pipe.
|
| new MojoRendererService(cdm_service_context_.GetWeakPtr(),
|
| + std::move(audio_sink), std::move(video_sink),
|
| std::move(renderer), std::move(request));
|
| #endif // defined(ENABLE_MOJO_RENDERER)
|
| }
|
| @@ -112,6 +121,16 @@ void ServiceFactoryImpl::CreateCdm(
|
| #endif // defined(ENABLE_MOJO_CDM)
|
| }
|
|
|
| +#if defined(ENABLE_MOJO_RENDERER)
|
| +RendererFactory* ServiceFactoryImpl::GetRendererFactory() {
|
| + if (!renderer_factory_) {
|
| + renderer_factory_ = mojo_media_client_->CreateRendererFactory(media_log_);
|
| + LOG_IF(ERROR, !renderer_factory_) << "RendererFactory not available.";
|
| + }
|
| + return renderer_factory_.get();
|
| +}
|
| +#endif // defined(ENABLE_MOJO_RENDERER)
|
| +
|
| #if defined(ENABLE_MOJO_CDM)
|
| CdmFactory* ServiceFactoryImpl::GetCdmFactory() {
|
| if (!cdm_factory_) {
|
|
|