| // 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. |
| |
| library fuchsia.ultrasound; |
| |
| using fuchsia.media; |
| using zx; |
| |
| [Discoverable] |
| protocol Factory { |
| /// Creates a new `fuchsia.media.AudioCapturer` that is capable of capturing audio in |
| /// the ultrasonic frequency range. |
| /// |
| /// The capturer will be suitible for capturing audio at ultrasound frequencies. The |
| /// channelization and sample rate of the capturer will be fixed to whatever the underlying |
| /// device is configured for. The `fuchsia.media.AudioSampleFormat` will be `FLOAT`. |
| /// |
| /// See `fuchsia.media.AudioCore` for more information on the operation of a |
| /// `fuchsia.media.AudioCapturer`, with the following differences: |
| /// |
| /// - `SetUsage` is disallowed. Ultrasound capturers do not have an associated |
| /// `fuchsia.media.AudioCaptureUsage`. |
| /// |
| /// - `BindGainControl` is disallowed. Ultrasound capturers will always have unity gain. |
| /// |
| /// - `SetPcmStreamType` is disallowed. The stream type of an ultrasound capturer is not |
| /// configurable, but instead returned from `CreateCapturer`. |
| /// |
| /// - `SetReferenceClock` is disallowed. The reference clock of an ultrasound capturer is not |
| /// configurable, but instead returned from `CreateCapturer`. |
| CreateCapturer(request<fuchsia.media.AudioCapturer> request) |
| -> (zx.handle:CLOCK reference_clock, fuchsia.media.AudioStreamType stream_type); |
| |
| /// Creates a new `fuchsia.media.AudioRenderer` that is capable of producing audio in |
| /// the ultrasonic frequency range. |
| /// |
| /// The renderer will be suitible for producing audio at ultrasound frequencies. The |
| /// channelization and sample rate of the renderer will be fixed to whatever the underlying |
| /// device is configured for. The `fuchsia.media.AudioSampleFormat` will be `FLOAT`. |
| /// |
| /// See `fuchsia.media.AudioCore` for more information on the operation of a |
| /// `fuchsia.media.AudioRenderer`, with the following differences: |
| /// |
| /// - `SetUsage` is disallowed. Ultrasound renderers do not have an associated |
| /// `fuchsia.media.AudioRenderUsage`. |
| /// |
| /// - `BindGainControl` is disallowed. Ultrasound renderers will always have unity gain. |
| /// |
| /// - `SetPcmStreamType` is disallowed. The stream type of an ultrasound renderer is not |
| /// configurable, but instead returned from `CreateRenderer`. |
| /// |
| /// - `SetReferenceClock` is disallowed. The reference clock of an ultrasound renderer is not |
| /// configurable, but instead returned from `CreateRenderer`. |
| CreateRenderer(request<fuchsia.media.AudioRenderer> renderer) |
| -> (zx.handle:CLOCK reference_clock, fuchsia.media.AudioStreamType stream_type); |
| }; |