| // 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. |
| @available(added=7) |
| library fuchsia.ultrasound; |
| |
| using fuchsia.media; |
| using zx; |
| |
| @discoverable |
| closed 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`. |
| strict CreateCapturer(resource struct { |
| request server_end:fuchsia.media.AudioCapturer; |
| }) -> (resource struct { |
| reference_clock zx.Handle:CLOCK; |
| stream_type fuchsia.media.AudioStreamType; |
| }); |
| |
| /// 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`. |
| strict CreateRenderer(resource struct { |
| renderer server_end:fuchsia.media.AudioRenderer; |
| }) -> (resource struct { |
| reference_clock zx.Handle:CLOCK; |
| stream_type fuchsia.media.AudioStreamType; |
| }); |
| }; |