PROTOCOLS
Connector
Defined in fuchsia.hardware.audio.signalprocessing/connector.fidl
For an overview of the signal processing protocols see Audio Signal Processing
SignalProcessingConnect
Connect to a SignalProcessing
protocol.
Multiple connections may be supported, if a new connection request is not supported, i.e.
the maximum number of connections have already been created, for instance one, then the
protocol
channel (not the channel upon which SignalProcessingConnect
is being called)
will be closed with a ZX_ERR_ALREADY_BOUND
epitaph.
If signal processing is not supported at all, then the protocol
channel (again, not the
channel upon which SignalProcessingConnect
is being called) will be closed with a
ZX_ERR_NOT_SUPPORTED
epitaph.
This method is named SignalProcessingConnect
instead of Connect
because this protocol
is intended to be composed, and hence the more verbose name allows differentiation and
improved clarity.
Request
Name | Type |
---|---|
protocol |
server_end:SignalProcessing
|
Reader
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
This protocol is required for Composite audio drivers, and unsupported for other audio driver types (Codec, Dai, StreamConfig).
For an overview see [Signal Processing Interface].
GetElements
Returns a vector of supported processing elements. This vector must include one or more processing elements.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
Returns a vector of supported topologies.
This vector must include one or more topologies.
If more than one topology is returned, then the client may select any topology from the
list by calling SetTopology
.
If only one topology is returned, SetTopology
can still be called but causes no change.
Each Element must be included in at least one Topology, but need not be included in every Topology.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_GetTopologies_Result
|
WatchElementState
Get the processing element state via a hanging get.
For a given processing_element_id
, the driver will immediately reply to the first
WatchElementState
sent by the client. The driver will not respond to subsequent client
WatchElementState
calls for that processing_element_id
until any portion of the
ElementState
has changed from what was most recently reported for that element.
The driver will close the protocol channel with an error of ZX_ERR_INVALID_ARGS
, if
processing_element_id
does not match an ElementId returned by GetElements
.
The driver will close the protocol channel with an error of ZX_ERR_BAD_STATE
, if this
method is called again while there is already a pending WatchElementState
for this client
and processing_element_id
.
Request
Name | Type |
---|---|
processing_element_id |
ElementId
|
Response
Name | Type |
---|---|
state |
ElementState
|
WatchTopology
Get the current topology via a hanging get.
The driver will immediately reply to the first WatchTopology
sent by each client.
The driver will not respond to subsequent WatchTopology
calls from that client until the
signal processing topology changes; this occurs as a result of a SetTopology
call.
The driver will close the protocol channel with an error of ZX_ERR_BAD_STATE
, if this
method is called again while there is already a pending WatchTopology
for this client.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_WatchTopology_Result
|
SignalProcessing
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
This protocol is required for Composite audio drivers, and unsupported for other audio driver types (Codec, Dai, StreamConfig).
For an overview see [Signal Processing Interface].
GetElements
Returns a vector of supported processing elements. This vector must include one or more processing elements.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
Returns a vector of supported topologies.
This vector must include one or more topologies.
If more than one topology is returned, then the client may select any topology from the
list by calling SetTopology
.
If only one topology is returned, SetTopology
can still be called but causes no change.
Each Element must be included in at least one Topology, but need not be included in every Topology.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_GetTopologies_Result
|
SetElementState
Controls the processing element specified by processing_element_id
, a unique ElementId
returned by GetElements
.
The state
specified in calls to SetElementState
is a SettableElementState
. This is a
subset of ElementState
because some fields returned by WatchElementState
(e.g. latency
or plug_state
) can only be observed (not set) by the client.
Returns ZX_ERR_INVALID_ARGS
if processing_element_id
does not match a known ElementId
returned by GetElements
, or if state
is not valid for the element. This entails any
violation of the rules specified in this protocol.
Examples:
state
specifies that an element should be stopped or bypassed, but the corresponding
element does not specify (or explicitly set to false) can_stop
or can_bypass
.
state
includes a type_specific
entry, but that SettableTypeSpecificElementState
does
not match the ElementType
of the element corresponding to processing_element_id
.
state
changes an EqualizerBandState
for an EQUALIZER
element (so far so good), but
specifies a change to frequency
when this element did not set CAN_CONTROL_FREQUENCY
in its supported_controls
.
state
specifies a GainElementState
for a GAIN
element with a gain
value that is
-infinity, NAN, or outside the Element's stated min_gain,
max_gain range.
Callers may intersperse method calls to the SignalProcessing
protocol with calls to other
driver protocols. Some non-SignalProcessing
configuration changes may require a
renegotiation of the driver state before certain elements can receive a SetElementState
.
For example, if a DaiFormat
is changed, then SetElementState
changing an AGL
element's
parameters may not require renegotiation of driver state because changing gain parameters
usually does not change the set of supported audio formats.
By contrast, following the same DaiFormat
change, before SetElementState
can be called
on a CONNECTION_POINT
element, the driver state may need to be reestablished because the
format change may invalidate the set of supported formats returned in a previous
GetDaiFormats
protocol call for another part of the Topology.
It is the driver's job to determine when renegotiation is required. When this is needed,
the related SetElementState
call must return ZX_ERR_BAD_STATE
and the client must
close the protocol channel entirely, such that the protocol negotiations are started over.
The client then must re-invoke the SetElementState
call that returned
ZX_ERR_BAD_STATE
before any non-SignalProcessing
protocol calls.
Request
Name | Type |
---|---|
processing_element_id |
ElementId
|
state |
SettableElementState
|
Response
Name | Type |
---|---|
payload |
SignalProcessing_SetElementState_Result
|
SetTopology
Sets the currently active topology by specifying a topology_id
, which matches to an entry
in the vector returned by GetTopologies
.
The currently active topology is communicated by WatchTopology
responses. To change which
topology is active, a client uses SetTopology
.
If GetTopologies
returns only one Topology
, SetTopology
is optional and has no effect.
This call will fail and return ZX_ERR_INVALID_ARGS
if the specified topology_id
is not
found within thetopologies
returned by GetTopologies
.
SetTopology
may be called before or after non-SignalProcessing
protocol calls.
If called after non-SignalProcessing
protocol calls, then SetTopology
may return
ZX_ERR_BAD_STATE
to indicate that the operation can not proceed without renegotiation of
the driver state. See SetElementState
for further discussion.
Request
Name | Type |
---|---|
topology_id |
TopologyId
|
Response
Name | Type |
---|---|
payload |
SignalProcessing_SetTopology_Result
|
WatchElementState
Get the processing element state via a hanging get.
For a given processing_element_id
, the driver will immediately reply to the first
WatchElementState
sent by the client. The driver will not respond to subsequent client
WatchElementState
calls for that processing_element_id
until any portion of the
ElementState
has changed from what was most recently reported for that element.
The driver will close the protocol channel with an error of ZX_ERR_INVALID_ARGS
, if
processing_element_id
does not match an ElementId returned by GetElements
.
The driver will close the protocol channel with an error of ZX_ERR_BAD_STATE
, if this
method is called again while there is already a pending WatchElementState
for this client
and processing_element_id
.
Request
Name | Type |
---|---|
processing_element_id |
ElementId
|
Response
Name | Type |
---|---|
state |
ElementState
|
WatchTopology
Get the current topology via a hanging get.
The driver will immediately reply to the first WatchTopology
sent by each client.
The driver will not respond to subsequent WatchTopology
calls from that client until the
signal processing topology changes; this occurs as a result of a SetTopology
call.
The driver will close the protocol channel with an error of ZX_ERR_BAD_STATE
, if this
method is called again while there is already a pending WatchTopology
for this client.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_WatchTopology_Result
|
STRUCTS
EdgePair
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Edge pairs between processing elements, used to specify how audio flows sequentially through a collection of processing elements arrangements.
Field | Type | Description | Default |
---|---|---|---|
processing_element_id_from |
ElementId
|
No default | |
processing_element_id_to |
ElementId
|
No default |
Reader_GetElements_Response
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Field | Type | Description | Default |
---|---|---|---|
processing_elements |
vector<Element>:64
|
No default |
Reader_GetTopologies_Response
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Field | Type | Description | Default |
---|---|---|---|
topologies |
vector<Topology>:64
|
No default |
Reader_WatchTopology_Response
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Field | Type | Description | Default |
---|---|---|---|
topology_id |
TopologyId
|
No default |
SignalProcessing_SetElementState_Response
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
<EMPTY>
SignalProcessing_SetTopology_Response
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
<EMPTY>
ENUMS
ElementType flexible
Type: uint32
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Name | Value | Description |
---|---|---|
VENDOR_SPECIFIC |
1 |
Vendor Specific. A type of processing element not covered by any subsequent type definition. |
CONNECTION_POINT |
3 |
Controls pipelines channel mixing and routing. |
GAIN |
4 |
Gain control, a.k.a. Volume control. |
AUTOMATIC_GAIN_CONTROL |
5 |
Automatic Gain Control. Automatically maintains a suitable signal level regardless of variation of its input. |
AUTOMATIC_GAIN_LIMITER |
6 |
Automatic Gain Limiter. Automatically maintains a signal level below a level specified. Input below the level is unaffected, and peaks above the level are attenuated. |
DYNAMICS |
7 |
Alters the dynamic range of the signal, e.g. dynamic range compression. |
MUTE |
8 |
Mute. |
DELAY |
9 |
Delay. |
EQUALIZER |
10 |
Equalizer. |
SAMPLE_RATE_CONVERSION |
11 |
Sample Rate Conversion. |
ENDPOINT |
12 |
The start/end of a pipeline. DeprecationUse Removed: 20
|
RING_BUFFER |
13 |
Ring Buffer. This is the first of two types of elements that can start/end processing pipelines. Added: 20
|
DAI_INTERCONNECT |
14 |
Digital Audio Interface Interconnect. This is the second of two types of elements that can start/end processing pipelines. Added: 20
|
EndpointType flexible
Type: uint8
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Endpoint types.
Deprecation
Use ElementType
RING_BUFFER
or DAI_INTERCONNECT
instead.
Name | Value | Description |
---|---|---|
RING_BUFFER |
1 |
The endpoint represents a ring buffer. A ring buffer processing element's id allows for multi-ring buffer topologies to be supported by a driver providing the fuchsia.hardware.audio/Composite API. |
DAI_INTERCONNECT |
2 |
The endpoint represents a Digital Audio Interface Interconnect, e.g. connecting an SoC audio subsystem to a DAC + amplifier hardware codec. |
EqualizerBandType flexible
Type: uint64
Defined in fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Type of the equalizer band.
Name | Value | Description |
---|---|---|
PEAK |
1 |
Increase/decrease in |
NOTCH |
2 |
Narrow band rejection significantly attenuating a |
LOW_CUT |
3 |
Decrease gain below a |
HIGH_CUT |
4 |
Decrease gain above a |
LOW_SHELF |
5 |
Decrease gain below a |
HIGH_SHELF |
6 |
Decrease gain above a |
GainDomain flexible
Type: uint8
Defined in fuchsia.hardware.audio.signalprocessing/gain.fidl
Hardware domain of the gain, e.g. ANALOG.
Name | Value | Description |
---|---|---|
DIGITAL |
1 |
The processing element gain is applied in the digital domain. |
ANALOG |
2 |
The processing element gain is applied in the analog domain. |
MIXED |
3 |
The processing element gain is mixed using digital and analog hardware. |
GainType strict
Type: uint8
Defined in fuchsia.hardware.audio.signalprocessing/gain.fidl
Gain type of representation.
Name | Value | Description |
---|---|---|
DECIBELS |
1 |
Gain specified in dB, for example -103.0dB or +3.2dB. |
PERCENT |
2 |
Gain specified as a percentage, for example 10.0% or 80.5%. |
LevelType strict
Type: uint8
Defined in fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Level type.
Name | Value | Description |
---|---|---|
PEAK |
1 |
Level Gain specified as peak. |
RMS |
2 |
Level specified as RMS. |
PlugDetectCapabilities flexible
Type: uint32
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Plug detection capabilities for the interconnect.
Name | Value | Description |
---|---|---|
HARDWIRED |
0 |
Interconnect is hardwired (will always be plugged in). |
CAN_ASYNC_NOTIFY |
1 |
Interconnect can be unplugged/plugged and can asynchronously notify of plug state changes. |
ThresholdType strict
Type: uint8
Defined in fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Threshold type.
Name | Value | Description |
---|---|---|
ABOVE |
1 |
Apply dynamics processing above the threshold. |
BELOW |
2 |
Apply dynamics processing below the threshold. |
TABLES
DaiInterconnect
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Parameters for an Element
with ElementType
DAI_INTERCONNECT
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
plug_detect_capabilities |
PlugDetectCapabilities
|
Plug Detect Capabilities. Required. |
DaiInterconnectElementState
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
State for an Element
with ElementType
DAI_INTERCONNECT
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
plug_state |
PlugState
|
The plug state for this DAI interconnect. Required. |
2 |
external_delay |
zx/Duration
|
The driver's best estimate of the external delay beyond this DAI endpoint, as the pipeline is currently configured.
If not included, Optional. If specified, must be non-negative. |
Dynamics
Defined in fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Parameters for an Element
with type
equal to DYNAMICS
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
bands |
vector<DynamicsBand>:64
|
Required. Must contain at least one entry. |
2 |
supported_controls |
DynamicsSupportedControls
|
The controls supported by this processing element (i.e. that can be changed by a call to
Optional. |
DynamicsBand
Defined in fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Parameters for a Dynamics
element band.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
id |
uint64
|
Unique ID for this band, only required to be unique within the corresponding
Required. |
DynamicsBandState
Defined in fuchsia.hardware.audio.signalprocessing/dynamics.fidl
State for a single band within an Element
with type
equal to DYNAMICS
.
WatchElementState
may return control band fields, even if the values cannot be changed by the
client (i.e. the bits are not set in supported_controls
).
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
id |
uint64
|
Unique ID for the band. Must match one of the |
2 |
min_frequency |
uint32
|
Minimum frequency for the band in Hz. This field could be 0, for instance for single band dynamics processing to specify (together with max_frequency) that the band is full range. |
3 |
max_frequency |
uint32
|
Maximum frequency for the band in Hz. This field could be the Nyquist frequency, for instance for single band dynamics processing to specify (together with min_frequency) that the band is full range. Required. |
4 |
threshold_db |
float32
|
The value beyond which the dynamics main processing starts (subject to the
Required. Must be finite. |
5 |
threshold_type |
ThresholdType
|
Dynamics processing is applied Required for |
6 |
ratio |
float32
|
The input-to-output dB ratio above or below (see Required. Must be finite. |
7 |
knee_width_db |
float32
|
The width of the knee region, in input dB. If present, cannot be negative.
If not included, the width of the knee region is unspecified.
A value of zero is a "hard" knee; larger values lead to "softer" knees.
This knee is centered on Optional. If specified, must be finite.
Disallowed in |
8 |
attack |
zx/Duration
|
Attack time. If not included, the attack time is unspecified. Optional. If specified, must be non-negative.
Disallowed in |
9 |
release |
zx/Duration
|
Release time. If not included, the release time is unspecified. Optional. If specified, must be non-negative.
Disallowed in |
10 |
output_gain_db |
float32
|
Output (a.k.a. make up or post) gain value in dB. If not included, the output gain is unspecified. Optional. If specified, must be finite.
Disallowed in |
11 |
input_gain_db |
float32
|
Input (a.k.a. pre) gain value in dB. If not included, the input gain is unspecified. Optional. If specified, must be finite.
Disallowed in |
12 |
level_type |
LevelType
|
Level type (peak or RMS). If not included, the level type is unspecified. Optional.
Disallowed in |
13 |
lookahead |
zx/Duration
|
Look-ahead time. If not included, the look-ahead time is unspecified. Optional. If specified, must be non-negative.
Disallowed in |
14 |
linked_channels |
bool
|
Linked channels (a.k.a. Stereo linked for 2-channel systems). If not included, the linked channels option is unspecified. If true, the dynamics response is applied to all channels. If false, each channel has its own dynamics response. Optional.
Disallowed in |
DynamicsElementState
Defined in fuchsia.hardware.audio.signalprocessing/dynamics.fidl
State for an Element
with type
equal to DYNAMICS
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
band_states |
vector<DynamicsBandState>:64
|
Each id must match an id from Required. Must contain at least one entry. |
Element
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
id |
ElementId
|
Unique ID for this element. The scope of this id is only within the Required. |
2 |
type |
ElementType
|
Processing element type. Required. |
3 |
type_specific |
TypeSpecificElement
|
Type-specific parameters for the processing element. Required for |
4 |
can_disable |
bool
|
Can the processing element be disabled via DeprecationUse Removed: 20
|
5 |
description |
string:256
|
If included, a textual description of the processing element. Optional. If present, must not be empty. |
6 |
can_stop |
bool
|
If true, the processing element can be stopped via Optional. Added: 20
|
7 |
can_bypass |
bool
|
If true, the processing element can be bypassed via Optional. Added: 20
|
ElementState
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
The current state of an element, as returned from the driver. Note that this table contains
fields that are not present in SettableElementState
, since they cannot be changed by clients.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
type_specific |
TypeSpecificElementState
|
Type-specific state parameters for the processing element. If this processing element is disabled and its type-specific state is provided, then the type-specific state is only informational (e.g. the state of a stopped element, if it were to be re-started without also providing additional superceding state information). Required for DAI_INTERCONNECT, DYNAMICS, EQUALIZER, GAIN and VENDOR_SPECIFIC elements. Invalid if specified for elements of type AUTOMATIC_GAIN_CONTROL, AUTOMATIC_GAIN_LIMITER, CONNECTION_POINT, DELAY, MUTE, RING_BUFFER or SAMPLE_RATE_CONVERSION. |
2 |
enabled |
bool
|
Enable/disable state for the processing element. DeprecationUse Removed: 20
|
3 |
latency |
Latency
|
How much latency this element adds, if enabled. DeprecationUse Removed: 20
|
4 |
vendor_specific_data |
vector<uint8>:4096
|
If included, an opaque object of octets for conveying vendor-specific information from the
driver to Optional (permitted even if the element's type is not VENDOR_SPECIFIC). Added: 27
|
5 |
started |
bool
|
The start/stop state for this processing element. If true, the hardware associated with the element is started. If false, it is stopped. If the corresponding A stopped processing element does not provide its abstracted functionality. No audio data flows through stopped elements. Required. Added: 20
|
6 |
bypassed |
bool
|
The bypass state for this processing element. If true, the hardware associated with the element is bypassed. If false or missing, the associated hardware is not bypassed. By default, processing elements are not bypassed.
If the corresponding A bypassed element does not affect the flow of audio through the topology. Audio flows through a bypassed element, unchanged. Optional. Added: 20
|
7 |
turn_on_delay |
zx/Duration
|
If included, the driver's best estimate of the amount of time it takes the element's
hardware to enter a fully operational mode after If Optional. If specified, must be non-negative. Added: 20
|
8 |
turn_off_delay |
zx/Duration
|
If included, the driver's best estimate of the amount of time it takes the element's
hardware to enter a fully disabled mode after If Optional. If specified, must be non-negative. Added: 20
|
9 |
processing_delay |
zx/Duration
|
If included, the driver's best estimate of the delay added by this processing element,
as it is currently configured (including This value should be taken into account by timing-sensitive clients, when determining the requirements for (playback) minimum lead time and minimum capture delay. For an element of type Optional. If specified, must be non-negative. Added: 20
|
Endpoint
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Parameters for an Element
with type
equal to ENDPOINT
.
Deprecation
Use DaiInterconnect
and ElementType
DAI_INTERCONNECT
instead.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
type |
EndpointType
|
Specifies what the endpoint represents. Required. |
2 |
plug_detect_capabilities |
PlugDetectCapabilities
|
Plug Detect Capabilities. Required. |
EndpointElementState
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
State for an Element
with type
equal to ENDPOINT
.
Deprecation
Use DaiInterconnectElementState
and ElementType
DAI_INTERCONNECT
instead.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
plug_state |
PlugState
|
If included the plug detect state for this endpoint. Required for servers. |
Equalizer
Defined in fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Parameters for a Element
with type
equal to EQUALIZER
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
bands |
vector<EqualizerBand>:64
|
Equalizers in this protocol are built by a number of bands, each specifying a number of
parameters here and in Required. Must contain at least one entry. |
2 |
supported_controls |
EqualizerSupportedControls
|
The controls supported by this equalizer (i.e. that can be changed via Optional. |
3 |
can_disable_bands |
bool
|
If included and true, individual bands can be disabled via Optional. |
4 |
min_frequency |
uint32
|
Minimum frequency for all bands, in Hz. Required. |
5 |
max_frequency |
uint32
|
Maximum frequency for all bands, in Hz. Required. |
6 |
max_q |
float32
|
Maximum quality factor, usually denoted by "Q", for all bands. This indicates how narrow the frequency transition is. Higher Q values imply narrower notches/peaks and steeper cuts/shelves. Must be positive. Optional. If specified, must be finite. |
7 |
min_gain_db |
float32
|
Minimum gain in dB. Required, if |
8 |
max_gain_db |
float32
|
Maximum gain in dB. Required, if |
EqualizerBand
Defined in fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Parameters for an equalizer Band.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
id |
uint64
|
Unique ID for this band. Must only be unique within the corresponding Required. |
EqualizerBandState
Defined in fuchsia.hardware.audio.signalprocessing/equalizer.fidl
State for a single band within a Element
with type
equal to EQUALIZER
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
id |
uint64
|
Unique ID for the band. Must match one of the Required. |
2 |
type |
EqualizerBandType
|
Type of band. Required.
If this is a call to |
3 |
frequency |
uint32
|
Center frequency for the band. Required.
If this is a call to |
4 |
q |
float32
|
Quality factor, usually denoted as "Q". Indicates how narrow the frequency transition is. Higher Q values imply narrower notches/peaks and steeper cuts/shelves. Must be positive. Optional.
If used in |
5 |
gain_db |
float32
|
Gain in dB. Required, for |
6 |
enabled |
bool
|
Enable/disable the band. If disabled, audio still flows through the equalizer but this band has no effect. If absent in the return value from Bypassing the entire enclosing processing element (by setting Optional. |
EqualizerElementState
Defined in fuchsia.hardware.audio.signalprocessing/equalizer.fidl
State for a Element
with type
equal to EQUALIZER
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
bands_state |
vector<EqualizerBandState>:64
|
The states of the bands in this equalizer processing element. DeprecationUse Removed: 20
|
2 |
band_states |
vector<EqualizerBandState>:64
|
The states of the bands in this equalizer processing element. The number of elements of the Required. Must contain at least one entry. Added: 20
|
Gain
Defined in fuchsia.hardware.audio.signalprocessing/gain.fidl
Parameters for an Element
with type
equal to GAIN
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
type |
GainType
|
Specifies what the numbers for gain represent, e.g. a percentage. Required. |
2 |
domain |
GainDomain
|
If included, the gain is applied in the specified Optional. |
3 |
min_gain |
float32
|
Minimum gain in Required. Must be finite. |
4 |
max_gain |
float32
|
Maximum gain in Required. Must be finite. |
5 |
min_gain_step |
float32
|
Minimum gain step in Required. Must be finite. |
GainElementState
Defined in fuchsia.hardware.audio.signalprocessing/gain.fidl
State for an Element
with type
equal to GAIN
.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
gain |
float32
|
Current gain in Required. Must be finite. |
PlugState
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Plug state for the interconnect.
If the driver reports a plug_detect_capabilities
equal to HARDWIRED, then the driver should
respond to WatchElementState
only the first time it is called for a given interconnect, with
plugged
set to true and plug_state_time
set to time '0'.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
plugged |
bool
|
Indicates whether the interconnect is currently plugged in. Required |
2 |
plug_state_time |
zx/Time
|
Indicates when the current Required. |
SettableElementState
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Processing element state that can be set by clients.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
type_specific |
SettableTypeSpecificElementState
|
Type-specific element-state parameters that can be set by clients. If an element is disabled, changes in this field (and all others in SettableElementState) are purely informational and take no effect until the element is enabled. If not set, then the element's previous Optional for DYNAMICS, EQUALIZER, GAIN and VENDOR_SPECIFIC types. Invalid if specified for AUTOMATIC_GAIN_CONTROL, AUTOMATIC_GAIN_LIMITER, CONNECTION_POINT, DAI_INTERCONNECT, DELAY, MUTE, RING_BUFFER or SAMPLE_RATE_CONVERSION elements. |
2 |
vendor_specific_data |
vector<uint8>:4096
|
If included, an opaque object of octets for conveying vendor-specific information from a client to the audio driver. This can be used with any element type, not just VENDOR_SPECIFIC elements. Optional. Added: 27
|
3 |
started |
bool
|
Whether to start or stop this processing element. A stopped processing element does not provide its abstracted functionality. Specifically, no audio data flows through a stopped element. If the corresponding Optional. |
4 |
bypassed |
bool
|
Whether to bypass this processing element. A bypassed element does not affect the flow of audio through the topology. Specifically, audio flows through a bypassed element, without change. If the corresponding Optional. |
Topology
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
A Topology
specifies how processing elements are arranged within the hardware.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
id |
TopologyId
|
Unique ID for this topology. The scope of this id is only within the Required. |
2 |
processing_elements_edge_pairs |
vector<EdgePair>:64
|
Vector of processing elements edge pairs that specify connections between elements. Processing elements are connected by edge pairs, to form multi-element pipelines. A Topology can contain more than one distinct pipeline: the Topology need not be a single interconnected sequence (e.g. Topology A->B->C D->E->F is valid). To define multiple possible configurations where one possibility can be selected by the
client, return multiple If a device does support multiple Topology entries, then each specific Topology is not required to include every Element. However, every element must be included in at least one Topology. Within each Topology, every sequence of connected elements must begin with an element of type DAI_INTERCONNECT or RING_BUFFER, and must end with an element of type DAI_INTERCONNECT or RING_BUFFER. An DAI_INTERCONNECT element is permitted to be the endpoint for an element sequence, but a
RING_BUFFER is required to be one. If a certain RING_BUFFER element is listed in an EdgeList
entry as a Required. Must contain at least one entry. |
VendorSpecific
Defined in fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl
Parameters for an Element
with type
equal to VENDOR_SPECIFIC
.
Ordinal | Field | Type | Description |
---|
VendorSpecificState
Defined in fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl
State for an Element
with type
equal to VENDOR_SPECIFIC
.
Ordinal | Field | Type | Description |
---|
UNIONS
Latency flexible
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Deprecation
Use processing_delay
instead.
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
latency_time |
zx/Duration
|
Latency added to the pipeline as a zx.Duration. |
2 |
latency_frames |
uint32
|
Latency added to the pipeline as a number of frames. |
Reader_GetElements_Result strict
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
Reader_GetElements_Response
|
|
2 |
err |
zx/Status
|
Reader_GetTopologies_Result strict
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
Reader_GetTopologies_Response
|
|
2 |
err |
zx/Status
|
Reader_WatchTopology_Result strict
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
Reader_WatchTopology_Response
|
|
3 |
framework_err |
internal
|
SettableTypeSpecificElementState flexible
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Type-specific processing element state that can be set by clients.
The type of processing element control is defined by the type of parameters provided in this
union. This type-specific variant must match the ElementType
entry in the corresponding
Element
.
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
vendor_specific |
VendorSpecificState
|
|
2 |
gain |
GainElementState
|
|
3 |
equalizer |
EqualizerElementState
|
|
4 |
dynamics |
DynamicsElementState
|
SignalProcessing_SetElementState_Result strict
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
SignalProcessing_SetElementState_Response
|
|
2 |
err |
zx/Status
|
SignalProcessing_SetTopology_Result strict
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
SignalProcessing_SetTopology_Response
|
|
2 |
err |
zx/Status
|
TypeSpecificElement flexible
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Type-specific Parameters for an Element
.
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
vendor_specific |
VendorSpecific
|
|
2 |
gain |
Gain
|
|
3 |
equalizer |
Equalizer
|
|
4 |
dynamics |
Dynamics
|
|
5 |
endpoint |
Endpoint
|
Removed: 20
|
6 |
dai_interconnect |
DaiInterconnect
|
Added: 20
|
TypeSpecificElementState flexible
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Type-specific processing element state, as returned from the driver.
The type of processing element control is defined by the type of parameters provided in this
union. This type-specific variant must match the ElementType
entry in the corresponding
Element
.
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
vendor_specific |
VendorSpecificState
|
|
2 |
gain |
GainElementState
|
|
3 |
equalizer |
EqualizerElementState
|
|
4 |
dynamics |
DynamicsElementState
|
|
5 |
endpoint |
EndpointElementState
|
Removed: 20
|
6 |
dai_interconnect |
DaiInterconnectElementState
|
Added: 20
|
BITS
DynamicsSupportedControls flexible
Type: uint64
Defined in fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Supported controls for Dynamics
.
If included, each bit representing a parameter of the dynamics processing bands can be changed
with SetElementState
.
Name | Value | Description |
---|---|---|
KNEE_WIDTH |
1 | If set, |
ATTACK |
2 | If set, |
RELEASE |
4 | If set, |
OUTPUT_GAIN |
8 | If set, |
INPUT_GAIN |
16 | If set, |
LOOKAHEAD |
32 | If set, |
LEVEL_TYPE |
64 | If set, |
LINKED_CHANNELS |
128 | If set, |
THRESHOLD_TYPE |
256 | If set, Added: 20
|
EqualizerSupportedControls flexible
Type: uint64
Defined in fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Equalizer supported controls specified in Equalizer
.
Name | Value | Description |
---|---|---|
CAN_CONTROL_FREQUENCY |
1 | If set, |
CAN_CONTROL_Q |
2 | If set, |
SUPPORTS_TYPE_PEAK |
4 | If set, |
SUPPORTS_TYPE_NOTCH |
8 | If set, |
SUPPORTS_TYPE_LOW_CUT |
16 | If set, |
SUPPORTS_TYPE_HIGH_CUT |
32 | If set, |
SUPPORTS_TYPE_LOW_SHELF |
64 | If set, |
SUPPORTS_TYPE_HIGH_SHELF |
128 | If set, |
CONSTANTS
Name | Value | Type | Description |
---|---|---|---|
MAX_BYTES_ELEMENT_VENDOR_SPECIFIC |
4096
|
uint32 |
Added: 27
|
MAX_COUNT_DYNAMICS_BANDS |
64
|
uint32 |
|
MAX_COUNT_EQUALIZER_BANDS |
64
|
uint32 |
|
MAX_COUNT_PROCESSING_ELEMENTS |
64
|
uint32 |
|
MAX_COUNT_PROCESSING_ELEMENTS_EDGE_PAIRS |
64
|
uint32 |
|
MAX_COUNT_TOPOLOGIES |
64
|
uint32 |
|
MAX_STRING_SIZE |
256
|
uint32 |
ALIASES
Name | Value | Description |
---|---|---|
ElementId |
uint64 |
|
TopologyId |
uint64 |
SERVICES
ConnectorService
Defined in fuchsia.hardware.audio.signalprocessing/connector.fidl
Name | Type | Transport |
---|---|---|
connector |
fuchsia.hardware.audio.signalprocessing/Connector
|
Channel |