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

Unified Diff: media/gpu/gpu_video_decode_accelerator_factory.cc

Issue 2864603002: Provide callback to create mojo AndroidOverlays to AVDA. (Closed)
Patch Set: fixed deps Created 3 years, 7 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
Index: media/gpu/gpu_video_decode_accelerator_factory.cc
diff --git a/media/gpu/gpu_video_decode_accelerator_factory.cc b/media/gpu/gpu_video_decode_accelerator_factory.cc
index c3eebb10d6e438aafba5aa92c68b0835bdda0f8e..6ff41537693b26ee1612ef55db96508e20f02013 100644
--- a/media/gpu/gpu_video_decode_accelerator_factory.cc
+++ b/media/gpu/gpu_video_decode_accelerator_factory.cc
@@ -31,6 +31,8 @@
#include "media/gpu/android_video_decode_accelerator.h"
#include "media/gpu/android_video_surface_chooser_impl.h"
#include "media/gpu/avda_codec_allocator.h"
+#include "media/mojo/clients/mojo_android_overlay.h"
+#include "services/service_manager/public/cpp/connector.h"
#endif
namespace media {
@@ -43,7 +45,7 @@ GpuVideoDecodeAcceleratorFactory::Create(
const BindGLImageCallback& bind_image_cb) {
return base::WrapUnique(new GpuVideoDecodeAcceleratorFactory(
get_gl_context_cb, make_context_current_cb, bind_image_cb,
- GetGLES2DecoderCallback()));
+ GetGLES2DecoderCallback(), nullptr, nullptr));
}
// static
@@ -52,10 +54,12 @@ GpuVideoDecodeAcceleratorFactory::CreateWithGLES2Decoder(
const GetGLContextCallback& get_gl_context_cb,
const MakeGLContextCurrentCallback& make_context_current_cb,
const BindGLImageCallback& bind_image_cb,
- const GetGLES2DecoderCallback& get_gles2_decoder_cb) {
+ const GetGLES2DecoderCallback& get_gles2_decoder_cb,
+ service_manager::Connector* connector,
+ const char* browser_service_name) {
return base::WrapUnique(new GpuVideoDecodeAcceleratorFactory(
get_gl_context_cb, make_context_current_cb, bind_image_cb,
- get_gles2_decoder_cb));
+ get_gles2_decoder_cb, connector, browser_service_name));
}
// static
@@ -251,24 +255,53 @@ GpuVideoDecodeAcceleratorFactory::CreateAndroidVDA(
const gpu::GpuDriverBugWorkarounds& workarounds,
const gpu::GpuPreferences& gpu_preferences) const {
std::unique_ptr<VideoDecodeAccelerator> decoder;
+
+ // To make unit-testing easier, convert the connector into a callback.
+ AndroidOverlayMojoFactoryCB overlay_cb;
+#if defined(OS_ANDROID)
+ if (connector_ && browser_service_name_)
+ overlay_cb =
+ base::Bind(&GpuVideoDecodeAcceleratorFactory::CreateAndroidOverlay,
+ connector_, browser_service_name_);
+#endif
+
decoder.reset(new AndroidVideoDecodeAccelerator(
AVDACodecAllocator::GetInstance(),
base::MakeUnique<AndroidVideoSurfaceChooserImpl>(),
- make_context_current_cb_, get_gles2_decoder_cb_,
+ make_context_current_cb_, get_gles2_decoder_cb_, std::move(overlay_cb),
AndroidVideoDecodeAccelerator::PlatformConfig::CreateDefault()));
return decoder;
}
+
+std::unique_ptr<media::AndroidOverlay>
+GpuVideoDecodeAcceleratorFactory::CreateAndroidOverlay(
+ service_manager::Connector* connector,
+ const char* browser_service_name,
+ const base::UnguessableToken& routing_token,
+ media::AndroidOverlayConfig config) {
+ media::mojom::AndroidOverlayProviderPtr provider_ptr;
+ if (!connector || !browser_service_name)
+ return nullptr;
+
+ connector->BindInterface(browser_service_name, &provider_ptr);
+ return base::MakeUnique<media::MojoAndroidOverlay>(
+ std::move(provider_ptr), std::move(config), routing_token);
+}
#endif
GpuVideoDecodeAcceleratorFactory::GpuVideoDecodeAcceleratorFactory(
const GetGLContextCallback& get_gl_context_cb,
const MakeGLContextCurrentCallback& make_context_current_cb,
const BindGLImageCallback& bind_image_cb,
- const GetGLES2DecoderCallback& get_gles2_decoder_cb)
+ const GetGLES2DecoderCallback& get_gles2_decoder_cb,
+ service_manager::Connector* connector,
+ const char* browser_service_name)
: get_gl_context_cb_(get_gl_context_cb),
make_context_current_cb_(make_context_current_cb),
bind_image_cb_(bind_image_cb),
- get_gles2_decoder_cb_(get_gles2_decoder_cb) {}
+ get_gles2_decoder_cb_(get_gles2_decoder_cb),
+ connector_(connector),
+ browser_service_name_(browser_service_name) {}
GpuVideoDecodeAcceleratorFactory::~GpuVideoDecodeAcceleratorFactory() {}

Powered by Google App Engine
This is Rietveld 408576698