Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1004)

Unified Diff: media/mojo/clients/mojo_renderer.cc

Issue 2640003002: Implement MojoAudioRendererSink and use it in UtilityMojoMediaClient (Closed)
Patch Set: Rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/mojo/clients/mojo_renderer.h ('k') | media/mojo/clients/mojo_renderer_factory.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/mojo/clients/mojo_renderer.cc
diff --git a/media/mojo/clients/mojo_renderer.cc b/media/mojo/clients/mojo_renderer.cc
index 3f64ad9a79c555c78cecd77fd41e0c487d31d021..794a70875a45f8ff266cf79ed288c9f6a38a72ab 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/media_resource.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__;
}
@@ -108,6 +113,14 @@ void MojoRenderer::InitializeRendererFromStreams(
streams.push_back(std::move(video_stream));
}
+ 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_,
@@ -129,7 +142,8 @@ void MojoRenderer::InitializeRendererFromStreams(
// |remote_renderer_| is destroyed.
remote_renderer_->Initialize(
std::move(client_ptr_info), std::move(streams),
- std::move(video_renderer_sink_ptr), base::nullopt, base::nullopt,
+ std::move(audio_renderer_sink_ptr), std::move(video_renderer_sink_ptr),
+ base::nullopt, base::nullopt,
base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
}
@@ -150,8 +164,8 @@ void MojoRenderer::InitializeRendererFromUrl(media::RendererClient* client) {
std::vector<mojom::DemuxerStreamPtr> streams;
remote_renderer_->Initialize(
std::move(client_ptr_info), std::move(streams),
- mojom::VideoRendererSinkPtr(), url_params.media_url,
- url_params.first_party_for_cookies,
+ mojom::AudioRendererSinkPtr(), mojom::VideoRendererSinkPtr(),
+ url_params.media_url, url_params.first_party_for_cookies,
base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
}
@@ -347,6 +361,13 @@ void MojoRenderer::OnDemuxerStreamConnectionError(
NOTREACHED() << "Unrecognized demuxer stream=" << stream;
}
+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());
« no previous file with comments | « media/mojo/clients/mojo_renderer.h ('k') | media/mojo/clients/mojo_renderer_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698