| Index: media/mojo/clients/mojo_renderer.cc
|
| diff --git a/media/mojo/clients/mojo_renderer.cc b/media/mojo/clients/mojo_renderer.cc
|
| index 796666b56454589f660363cbdc6379fc6abb499a..91a51a29517ba40360a6f0f27d7836c4aa8fc47d 100644
|
| --- a/media/mojo/clients/mojo_renderer.cc
|
| +++ b/media/mojo/clients/mojo_renderer.cc
|
| @@ -10,10 +10,12 @@
|
| #include "base/callback_helpers.h"
|
| #include "base/location.h"
|
| #include "base/single_thread_task_runner.h"
|
| +#include "media/base/audio_renderer_sink.h"
|
| #include "media/base/demuxer_stream_provider.h"
|
| #include "media/base/pipeline_status.h"
|
| #include "media/base/renderer_client.h"
|
| #include "media/base/video_renderer_sink.h"
|
| +#include "media/mojo/clients/mojo_audio_renderer_sink_impl.h"
|
| #include "media/mojo/clients/mojo_demuxer_stream_impl.h"
|
| #include "media/mojo/clients/mojo_video_renderer_sink_impl.h"
|
| #include "media/mojo/interfaces/video_renderer_sink.mojom.h"
|
| @@ -24,14 +26,17 @@ namespace media {
|
| MojoRenderer::MojoRenderer(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| std::unique_ptr<VideoOverlayFactory> video_overlay_factory,
|
| + AudioRendererSink* audio_renderer_sink,
|
| VideoRendererSink* video_renderer_sink,
|
| mojom::RendererPtr remote_renderer)
|
| : task_runner_(task_runner),
|
| video_overlay_factory_(std::move(video_overlay_factory)),
|
| + audio_renderer_sink_(audio_renderer_sink),
|
| video_renderer_sink_(video_renderer_sink),
|
| remote_renderer_info_(remote_renderer.PassInterface()),
|
| client_binding_(this),
|
| media_time_interpolator_(&media_clock_),
|
| + mojo_audio_renderer_sink_(nullptr),
|
| mojo_video_renderer_sink_(nullptr) {
|
| DVLOG(1) << __func__;
|
| }
|
| @@ -105,6 +110,14 @@ void MojoRenderer::InitializeRendererFromStreams(
|
| base::Unretained(this), DemuxerStream::VIDEO));
|
| }
|
|
|
| + mojom::AudioRendererSinkPtr audio_renderer_sink_ptr;
|
| + mojo_audio_renderer_sink_.reset(
|
| + new MojoAudioRendererSinkImpl(task_runner_, audio_renderer_sink_,
|
| + MakeRequest(&audio_renderer_sink_ptr)));
|
| + mojo_audio_renderer_sink_->set_connection_error_handler(
|
| + base::Bind(&MojoRenderer::OnAudioRendererSinkConnectionError,
|
| + base::Unretained(this)));
|
| +
|
| mojom::VideoRendererSinkPtr video_renderer_sink_ptr;
|
| mojo_video_renderer_sink_.reset(
|
| new MojoVideoRendererSinkImpl(task_runner_, video_renderer_sink_,
|
| @@ -126,8 +139,8 @@ void MojoRenderer::InitializeRendererFromStreams(
|
| // |remote_renderer_| is destroyed.
|
| remote_renderer_->Initialize(
|
| std::move(client_ptr_info), std::move(audio_stream),
|
| - std::move(video_stream), std::move(video_renderer_sink_ptr),
|
| - base::nullopt, base::nullopt,
|
| + std::move(video_stream), std::move(audio_renderer_sink_ptr),
|
| + std::move(video_renderer_sink_ptr), base::nullopt, base::nullopt,
|
| base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
|
| }
|
|
|
| @@ -147,8 +160,9 @@ void MojoRenderer::InitializeRendererFromUrl(media::RendererClient* client) {
|
| // |remote_renderer_| is destroyed.
|
| remote_renderer_->Initialize(
|
| std::move(client_ptr_info), mojom::DemuxerStreamPtr(),
|
| - mojom::DemuxerStreamPtr(), mojom::VideoRendererSinkPtr(),
|
| - url_params.media_url, url_params.first_party_for_cookies,
|
| + mojom::DemuxerStreamPtr(), mojom::AudioRendererSinkPtr(),
|
| + mojom::VideoRendererSinkPtr(), url_params.media_url,
|
| + url_params.first_party_for_cookies,
|
| base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
|
| }
|
|
|
| @@ -343,6 +357,13 @@ void MojoRenderer::OnDemuxerStreamConnectionError(DemuxerStream::Type type) {
|
| }
|
| }
|
|
|
| +void MojoRenderer::OnAudioRendererSinkConnectionError() {
|
| + DVLOG(1) << __func__;
|
| + CHECK(task_runner_->BelongsToCurrentThread());
|
| +
|
| + mojo_audio_renderer_sink_.reset();
|
| +}
|
| +
|
| void MojoRenderer::OnVideoRendererSinkConnectionError() {
|
| DVLOG(1) << __func__;
|
| CHECK(task_runner_->BelongsToCurrentThread());
|
|
|