| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "src/media/audio/audio_core/ultrasound_factory.h" |
| |
| #include "src/media/audio/audio_core/route_graph.h" |
| #include "src/media/audio/audio_core/ultrasound_capturer.h" |
| #include "src/media/audio/audio_core/ultrasound_renderer.h" |
| |
| namespace media::audio { |
| |
| std::unique_ptr<UltrasoundFactory> UltrasoundFactory::CreateAndServe(Context* context) { |
| return std::make_unique<UltrasoundFactory>(context); |
| } |
| |
| UltrasoundFactory::UltrasoundFactory(Context* context) : context_(*context) { |
| FX_DCHECK(context); |
| context_.component_context().outgoing()->AddPublicService(bindings_.GetHandler(this)); |
| } |
| |
| void UltrasoundFactory::CreateCapturer( |
| fidl::InterfaceRequest<fuchsia::media::AudioCapturer> request, |
| CreateCapturerCallback callback) { |
| auto capturer = UltrasoundCapturer::Create(std::move(request), &context_, std::move(callback)); |
| // Ultrasound capturers are immediately routable. |
| context_.route_graph().AddCapturer(capturer); |
| context_.route_graph().SetCapturerRoutingProfile( |
| *capturer, RoutingProfile{.routable = true, |
| .usage = StreamUsage::WithCaptureUsage(CaptureUsage::ULTRASOUND)}); |
| } |
| |
| void UltrasoundFactory::CreateRenderer( |
| fidl::InterfaceRequest<fuchsia::media::AudioRenderer> request, |
| CreateRendererCallback callback) { |
| auto renderer = UltrasoundRenderer::Create(std::move(request), &context_, std::move(callback)); |
| // Ultrasound renderers are immediately routable. |
| context_.route_graph().AddRenderer(renderer); |
| context_.route_graph().SetRendererRoutingProfile( |
| *renderer, RoutingProfile{ |
| .routable = true, |
| .usage = StreamUsage::WithRenderUsage(RenderUsage::ULTRASOUND), |
| }); |
| } |
| |
| } // namespace media::audio |