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

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

Issue 2643713003: Allow to use the DefaultRendererFactory from a Utility Process (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_video_renderer_sink_impl.h » ('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 a8b1fd35bbcbcf853ed1d0f26990c8e3bef149aa..3f64ad9a79c555c78cecd77fd41e0c487d31d021 100644
--- a/media/mojo/clients/mojo_renderer.cc
+++ b/media/mojo/clients/mojo_renderer.cc
@@ -15,6 +15,8 @@
#include "media/base/renderer_client.h"
#include "media/base/video_renderer_sink.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"
#include "media/renderers/video_overlay_factory.h"
namespace media {
@@ -29,7 +31,8 @@ MojoRenderer::MojoRenderer(
video_renderer_sink_(video_renderer_sink),
remote_renderer_info_(remote_renderer.PassInterface()),
client_binding_(this),
- media_time_interpolator_(&media_clock_) {
+ media_time_interpolator_(&media_clock_),
+ mojo_video_renderer_sink_(nullptr) {
DVLOG(1) << __func__;
}
@@ -105,6 +108,17 @@ void MojoRenderer::InitializeRendererFromStreams(
streams.push_back(std::move(video_stream));
}
+ mojom::VideoRendererSinkPtr video_renderer_sink_ptr;
+ mojo_video_renderer_sink_.reset(
+ new MojoVideoRendererSinkImpl(task_runner_, video_renderer_sink_,
+ MakeRequest(&video_renderer_sink_ptr)));
+ // Using base::Unretained(this) is safe because |this| owns
+ // |mojo_video_renderer_sink|, and the error handler can't be invoked once
+ // |mojo_video_renderer_sink| is destroyed.
+ mojo_video_renderer_sink_->set_connection_error_handler(
+ base::Bind(&MojoRenderer::OnVideoRendererSinkConnectionError,
+ base::Unretained(this)));
+
BindRemoteRendererIfNeeded();
mojom::RendererClientAssociatedPtrInfo client_ptr_info;
@@ -114,8 +128,8 @@ void MojoRenderer::InitializeRendererFromStreams(
// |remote_renderer_|, and the callback won't be dispatched if
// |remote_renderer_| is destroyed.
remote_renderer_->Initialize(
- std::move(client_ptr_info), std::move(streams), base::nullopt,
- base::nullopt,
+ std::move(client_ptr_info), std::move(streams),
+ std::move(video_renderer_sink_ptr), base::nullopt, base::nullopt,
base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
}
@@ -135,7 +149,8 @@ void MojoRenderer::InitializeRendererFromUrl(media::RendererClient* client) {
// |remote_renderer_| is destroyed.
std::vector<mojom::DemuxerStreamPtr> streams;
remote_renderer_->Initialize(
- std::move(client_ptr_info), std::move(streams), url_params.media_url,
+ std::move(client_ptr_info), std::move(streams),
+ mojom::VideoRendererSinkPtr(), url_params.media_url,
url_params.first_party_for_cookies,
base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
}
@@ -332,6 +347,13 @@ void MojoRenderer::OnDemuxerStreamConnectionError(
NOTREACHED() << "Unrecognized demuxer stream=" << stream;
}
+void MojoRenderer::OnVideoRendererSinkConnectionError() {
+ DVLOG(1) << __func__;
+ CHECK(task_runner_->BelongsToCurrentThread());
+
+ mojo_video_renderer_sink_.reset();
+}
+
void MojoRenderer::BindRemoteRendererIfNeeded() {
DVLOG(2) << __func__;
DCHECK(task_runner_->BelongsToCurrentThread());
« no previous file with comments | « media/mojo/clients/mojo_renderer.h ('k') | media/mojo/clients/mojo_video_renderer_sink_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698