blob: 71b7439f75c2d5a02fe27e224dc40a662ebdda4a [file] [log] [blame]
// 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;
});
};