blob: bb6e388d6f04e955667bbdcfb4ddc5b6d5774283 [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.
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);
};