Commit 325e0230 authored by Xinan Cheng's avatar Xinan Cheng Committed by Commit Bot

[Fuchsia] Accept InterfaceHandle in FuchsiaAudioRenderer constructor.

Previously FuchsiaAudioRenderer dependent on FuchsiaMediaResourceProvider,
but not all clients will use it.

Bug: b/149863069
Change-Id: I7a8c46c7acdfa6a90674d23b25fb50fe5d8a7437
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2293467Reviewed-by: default avatarStefan Zager <szager@chromium.org>
Reviewed-by: default avatarSergey Ulanov <sergeyu@chromium.org>
Commit-Queue: Xinan Cheng <xinan@google.com>
Cr-Commit-Position: refs/heads/master@{#789223}
parent 97cd6235
......@@ -450,6 +450,7 @@ target(link_target_type, "renderer") {
"//media/fuchsia/audio",
"//media/fuchsia/cdm/client",
"//media/fuchsia/mojom",
"//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
]
}
......
......@@ -4,6 +4,7 @@
#include "content/renderer/media/fuchsia_renderer_factory.h"
#include <fuchsia/media/cpp/fidl.h>
#include <memory>
#include <utility>
......@@ -14,6 +15,9 @@
#include "media/renderers/video_renderer_impl.h"
#include "media/video/gpu_memory_buffer_video_frame_pool.h"
#include "media/video/gpu_video_accelerator_factories.h"
#include "media/fuchsia/mojom/fuchsia_media_resource_provider.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
namespace content {
......@@ -57,8 +61,14 @@ std::unique_ptr<media::Renderer> FuchsiaRendererFactory::CreateRenderer(
interface_broker_->GetInterface(
media_resource_provider.InitWithNewPipeAndPassReceiver());
mojo::Remote<media::mojom::FuchsiaMediaResourceProvider>
remote_media_resource_provider;
remote_media_resource_provider.Bind(std::move(media_resource_provider));
fidl::InterfaceHandle<fuchsia::media::AudioConsumer> audio_consumer_handle;
remote_media_resource_provider->CreateAudioConsumer(
audio_consumer_handle.NewRequest());
auto audio_renderer = std::make_unique<media::FuchsiaAudioRenderer>(
media_log_, std::move(media_resource_provider));
media_log_, std::move(audio_consumer_handle));
media::GpuVideoAcceleratorFactories* gpu_factories = nullptr;
if (get_gpu_factories_cb_)
......
......@@ -8,7 +8,6 @@ source_set("audio") {
deps = [
"//base",
"//media",
"//media/fuchsia/mojom",
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.audio",
"//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
]
......
......@@ -11,6 +11,7 @@
#include "base/logging.h"
#include "base/sequenced_task_runner.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/threading/thread_task_runner_handle.h"
#include "media/base/decoder_buffer.h"
#include "media/base/renderer_client.h"
#include "media/filters/decrypting_demuxer_stream.h"
......@@ -78,18 +79,13 @@ constexpr size_t kNumBuffers = 16;
FuchsiaAudioRenderer::FuchsiaAudioRenderer(
MediaLog* media_log,
mojo::PendingRemote<media::mojom::FuchsiaMediaResourceProvider>
pending_media_resource_provider)
: media_log_(media_log) {
fidl::InterfaceHandle<fuchsia::media::AudioConsumer> audio_consumer_handle)
: media_log_(media_log),
audio_consumer_handle_(std::move(audio_consumer_handle)) {
DETACH_FROM_THREAD(thread_checker_);
mojo::Remote<media::mojom::FuchsiaMediaResourceProvider>
media_resource_provider;
media_resource_provider.Bind(std::move(pending_media_resource_provider));
media_resource_provider->CreateAudioConsumer(
audio_consumer_handle_.NewRequest());
}
FuchsiaAudioRenderer::~FuchsiaAudioRenderer() {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
}
......
......@@ -9,13 +9,11 @@
#include "base/memory/weak_ptr.h"
#include "base/threading/thread_checker.h"
#include "base/timer/timer.h"
#include "media/base/audio_renderer.h"
#include "media/base/buffering_state.h"
#include "media/base/demuxer_stream.h"
#include "media/base/time_source.h"
#include "media/fuchsia/mojom/fuchsia_media_resource_provider.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace media {
......@@ -27,10 +25,9 @@ class MediaLog;
// sends encoded stream directly to AudioConsumer provided by the platform.
class FuchsiaAudioRenderer : public AudioRenderer, public TimeSource {
public:
FuchsiaAudioRenderer(
MediaLog* media_log,
mojo::PendingRemote<media::mojom::FuchsiaMediaResourceProvider>
media_resource_provider);
FuchsiaAudioRenderer(MediaLog* media_log,
fidl::InterfaceHandle<fuchsia::media::AudioConsumer>
audio_consumer_handle);
~FuchsiaAudioRenderer() final;
// AudioRenderer implementation.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment