| // Copyright 2022 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.hardware.audio.signalprocessing; |
| |
| /// Hardware domain of the gain, e.g. ANALOG. |
| type GainDomain = flexible enum : uint8 { |
| /// The processing element gain is applied in the digital domain. |
| DIGITAL = 1; |
| |
| /// The processing element gain is applied in the analog domain. |
| ANALOG = 2; |
| |
| /// The processing element gain is mixed using digital and analog hardware. |
| MIXED = 3; |
| }; |
| |
| /// Gain type of representation. |
| type GainType = strict enum : uint8 { |
| /// Gain specified in dB, for example -103.0dB or +3.2dB. |
| DECIBELS = 1; |
| |
| /// Gain specified as a percentage, for example 10.0% or 80.5%. |
| PERCENT = 2; |
| }; |
| |
| /// Parameters for an `Element` with `type` equal to `GAIN`. |
| type Gain = table { |
| /// Specifies what the numbers for gain represent, e.g. a percentage. Required. |
| 1: type GainType; |
| |
| /// If included, the gain is applied in the specified `GainDomain`. |
| /// If not included, the gain domain is unspecified. |
| 2: domain GainDomain; |
| |
| /// Minimum gain in `GainType` format. Required. |
| 3: min_gain float32; |
| |
| /// Maximum gain in `GainType` format. Required. |
| 4: max_gain float32; |
| |
| /// Minimum gain step in `GainType` format, this value must not be negative, but may be zero to |
| /// convey an effectively continuous range of values. Must not exceed `max_gain` - `min_gain`. |
| /// The actual gain set may be queried by the client with a `WatchElement` call. |
| /// Required. |
| 5: min_gain_step float32; |
| }; |
| |
| /// State for an `Element` with `type` equal to `GAIN`. |
| type GainElementState = table { |
| /// Current gain in `GainType` format. Required. |
| 1: gain float32; |
| }; |