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
For an overview see [Signal Processing Interface].
GetElements
Returns a vector of supported processing elements.
Must return one or more processing elements, or ZX_ERR_NOT_SUPPORTED
.
If GetTopologies
returns one or more topologies, then GetElements
must return one or
more elements.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
Returns a vector of supported topologies.
Must return one or more topologies, or ZX_ERR_NOT_SUPPORTED
.
If more than one topology is returned, then the client may choose any of the topologies from
the list with SetTopology
.
If only one topology is returned, then the topology definition is informational only since
the one and only topology used can't be changed with SetTopology
.
If GetElements
returns one or more elements, then GetTopologies
must return one or
more topologies.
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 reply to the first WatchElementState
sent by the client. The driver will not respond to subsequent client WatchElementState
calls for a given processing_element_id
until any field of the Element
table changes
from what was most recently reported for that processing_element_id
.
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, which 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
For an overview see [Signal Processing Interface].
GetElements
Returns a vector of supported processing elements.
Must return one or more processing elements, or ZX_ERR_NOT_SUPPORTED
.
If GetTopologies
returns one or more topologies, then GetElements
must return one or
more elements.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
Returns a vector of supported topologies.
Must return one or more topologies, or ZX_ERR_NOT_SUPPORTED
.
If more than one topology is returned, then the client may choose any of the topologies from
the list with SetTopology
.
If only one topology is returned, then the topology definition is informational only since
the one and only topology used can't be changed with SetTopology
.
If GetElements
returns one or more elements, then GetTopologies
must return one or
more topologies.
Request
<EMPTY>
Response
Name | Type |
---|---|
payload |
Reader_GetTopologies_Result
|
SetElementState
Controls a processing element using a unique ElementId returned by GetElements
.
Note that SettableElementState
is a subset of ElementState
, because some fields returned
from WatchElementState
(e.g. latency
) can only be observed (not set) by the client.
Returns ZX_ERR_INVALID_ARGS
if the processing_element_id
does not match an id returned
by GetElements
or the type of SettableTypeSpecificElementState
does not
match the ElementType
of the processing element returned by
GetElements
for this id.
The driver may return ZX_ERR_INVALID_ARGS
if the state
values are invalid, i.e. any
of the values violates rules specified in this protocol, e.g. trying to change an
EQUALIZER
processing element's EqualizerBandState
frequency
when this processing
element did not advertise CAN_CONTROL_FREQUENCY
in its supported_controls
.
SetElementState
may be called before or after non-SignalProcessing
protocol
calls. If called after non-SignalProcessing
protocol calls then
SetElementState
may or may not require renegotiation of the driver state as
reached with calls of the protocol composing SignalProcessing
, e.g. Dai
.
For instance, SetElementState
changing an AGL
processing element's parameters
may not require renegotiation of the Dai
state because changing a gain parameter usually
does not change the set of supported audio formats.
By contrast, if SetElementState
changes the parameters of a CONNECTION_POINT
element, the change may require renegotiation because it may invalidate the set of
supported formats returned in a previous GetDaiFormats
Dai
protocol call.
It is the driver's job to determine when renegotiation is required. If renegotiation is
required, then SetElementState
must return ZX_ERR_BAD_STATE
and the client must
close the protocol channel such that the protocol negotiations are started over.
The client then must make 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 topology to be used using an id to the vector returned by GetTopologies
.
The current topology is communicated by WatchTopology
responses. To change which topology
is active, a client uses SetTopology
.
If the specified topology_id
is not within thetopologies
returned by GetTopologies
,
this call will return ZX_ERR_INVALID_ARGS
.
If GetTopologies
returns only one Topology
, SetTopology
is optional and has no effect.
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 reply to the first WatchElementState
sent by the client. The driver will not respond to subsequent client WatchElementState
calls for a given processing_element_id
until any field of the Element
table changes
from what was most recently reported for that processing_element_id
.
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, which 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 define ordering in 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. Removed: 20 Added: 12
|
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.
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 type
equal to 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 type
equal to 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. |
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. 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
.
Servers may include control band fields even if the values are not able to 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. |
5 |
threshold_type |
ThresholdType
|
Dynamics processing is applied Required for a server.
A client must not include this field in a |
6 |
ratio |
float32
|
The input-to-output dB ratio above or below (see Required. |
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.
A client must not include this field in a |
8 |
attack |
zx/Duration
|
Attack time. If not included, the attack time is unspecified. Optional.
A client must not include this field in a |
9 |
release |
zx/Duration
|
Release time. If not included, the release time is unspecified. Optional.
A client must not include this field in a |
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.
A client must not include this field in a |
11 |
input_gain_db |
float32
|
input (a.k.a. pre) gain value in dB. If not included, the input gain is unspecified. Optional.
A client must not include this field in a |
12 |
level_type |
LevelType
|
Level type (peak or RMS). If not included, the level type is unspecified. Optional.
A client must not include this field in a |
13 |
lookahead |
zx/Duration
|
Look-ahead time. If not included, the look-ahead time is unspecified. Optional.
A client must not include this field in a |
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.
A client must not include this field in a |
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 |
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
|
If included, type-specific parameters for the processing element. Optional. |
4 |
can_disable |
bool
|
If included and true, the processing element can be disabled via
Optional. DeprecationUse Removed: 20
|
5 |
description |
string:256
|
If included, a textual description of the processing element. Optional. |
6 |
can_stop |
bool
|
If included and true, the processing element can be stopped via Optional. Added: 20
|
7 |
can_bypass |
bool
|
If included and 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 set by clients.
Ordinal | Field | Type | Description |
---|---|---|---|
1 |
type_specific |
TypeSpecificElementState
|
If included, 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). Optional. |
2 |
enabled |
bool
|
Process element enable/disable state. By default processing elements are enabled.
If the corresponding Optional. DeprecationUse Removed: 20
|
3 |
latency |
Latency
|
If included, how much latency is added to the pipeline if this processing element is
enabled. This field must not be present in a Optional. Removed: 20
|
4 |
vendor_specific_data |
vector<uint8>:4096
|
If included, an opaque object of octets for exchanging vendor specific information. Optional. Added: HEAD
|
5 |
started |
bool
|
The started/stopped state for this processing element. If true, the hardware associated with the element is started. If false, stopped. By default processing elements are started. A stopped processing element does not provide its abstracted functionality. Specifically, no audio data flows through a stopped element. Required. Added: 20
|
6 |
bypassed |
bool
|
The bypassed state for this processing element. If true, the hardware associated with the element is bypassed. If false, 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. 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 this delay is not taken into account, then the initial frames of an audio stream may be
lost while an audio element is powering up.
If not included, Optional. 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 this delay is not taken into account, more frames will be emitted/captured than a
client may realize, specifically when elements are powering down.
If not included, Optional. Added: 20
|
9 |
processing_delay |
zx/Duration
|
If included, the driver's best estimate (as currently configured, including This value must be taken into account by clients when determining the requirements for minimum lead time (during playback) and minimum capture delay (during capture). For an element of type Optional. Added: 20
|
Endpoint
Defined in fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Parameters for an Element
with type
equal to ENDPOINT
.
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
.
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 Required. |
2 |
supported_controls |
EqualizerSupportedControls
|
The controls supported by this equalizer. Optional. |
3 |
can_disable_bands |
bool
|
If included and true, individual bands can be disabled via Optional. |
4 |
min_frequency |
uint32
|
Minimum frequency for the bands in Hz. Required. |
5 |
max_frequency |
uint32
|
Maximum frequency for the bands in Hz. Required. |
6 |
max_q |
float32
|
Maximum quality factor, usually denoted by "Q", for the bands. Indicates how narrow the frequency transition is. Higher Q values imply narrower notches/peaks and steeper cuts/shelves. Must be positive. Optional. |
7 |
min_gain_db |
float32
|
Minimum gain in dB. Optional, but required if |
8 |
max_gain_db |
float32
|
Maximum gain in dB. Optional, but 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, only required to 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. Optional. |
3 |
frequency |
uint32
|
Center frequency for the band. Optional. |
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. |
5 |
gain_db |
float32
|
Gain in dB. Optional, but required for |
6 |
enabled |
bool
|
Enable/disable the band. By default all bands are enabled.
Disabling the 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 number of elements of the Required. Removed: 20
|
2 |
band_states |
vector<EqualizerBandState>:64
|
The number of elements of the Required. 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. |
4 |
max_gain |
float32
|
Maximum gain in Required. |
5 |
min_gain_step |
float32
|
Minimum gain step in Required. |
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. |
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 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, for instance if a If not set, then the element's previous Optional for Dynamics, Equalizer, Gain and VendorSpecific types. Invalid if included for any other element type. |
2 |
vendor_specific_data |
vector<uint8>:4096
|
If included, an opaque object of octets for exchanging vendor specific information. This can send vendor-specific data to any element, not just the VendorSpecific type. Optional. Added: HEAD
|
3 |
started |
bool
|
Whether to start this processing element (or to stop it, if false). 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 (or to enable/"unbypass" it, if false). A bypassed element does not affect the flow of audio through the topology. Specifically, audio flows through the element without any change. If the corresponding Optional. |
Topology
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
A Topology
specifies one way 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 in this order.
The ordering of processing elements with edge pairs form pipelines.
To define multiple possible pipelines, return more Required. |
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
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. Must match the type returned in the corresponding 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 Added: 12
|
6 |
dai_interconnect |
DaiInterconnect
|
Added: 20
|
TypeSpecificElementState flexible
Defined in fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Type-specific processing element state.
The type of processing element control is defined by the type of parameters provided in this
union. Must match the type returned in the corresponding 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 Added: 12
|
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 included, the |
ATTACK |
2 | If included, the |
RELEASE |
4 | If included, the |
OUTPUT_GAIN |
8 | If included, the |
INPUT_GAIN |
16 | If included, the |
LOOKAHEAD |
32 | If included, the |
LEVEL_TYPE |
64 | If included, the |
LINKED_CHANNELS |
128 | If included, the |
THRESHOLD_TYPE |
256 | If included, the 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 included, the |
CAN_CONTROL_Q |
2 | If included, the |
SUPPORTS_TYPE_PEAK |
4 | If included, the |
SUPPORTS_TYPE_NOTCH |
8 | If included, the |
SUPPORTS_TYPE_LOW_CUT |
16 | If included, the |
SUPPORTS_TYPE_HIGH_CUT |
32 | If included, the |
SUPPORTS_TYPE_LOW_SHELF |
64 | If included, the |
SUPPORTS_TYPE_HIGH_SHELF |
128 | If included, the |
CONSTANTS
Name | Value | Type | Description |
---|---|---|---|
MAX_BYTES_ELEMENT_VENDOR_SPECIFIC |
4096
|
uint32 |
Added: HEAD
|
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 |