blob: 7759433f56dedefef45dcf44e51942347398d39e [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.hardware.audio.signalprocessing
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## Connector {#Connector}
*Defined in [fuchsia.hardware.audio.signalprocessing/connector.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/connector.fidl;l=8)*
<p>For an overview of the signal processing protocols see
<a href="//docs/concepts/drivers/driver_architectures/audio_drivers/audio_signal_processing.md">Audio Signal Processing</a></p>
### SignalProcessingConnect {#Connector.SignalProcessingConnect}
<p>Connect to a <code>SignalProcessing</code> 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
<code>protocol</code> channel (not the channel upon which <code>SignalProcessingConnect</code> is being called)
will be closed with an ZX_ERR_ALREADY_BOUND epitaph.
If signal processing is not supported at all, then the <code>protocol</code> channel (again, not the
channel upon which <code>SignalProcessingConnect</code> is being called) will be closed with a
ZX_ERR_NOT_SUPPORTED epitaph.
This method is named <code>SignalProcessingConnect</code> instead of <code>Connect</code> because this protocol
is intended to be composed, and hence the more verbose name allows differentiation and
improved clarity.</p>
#### Request {#Connector.SignalProcessingConnect_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>protocol</code></td>
<td>
<code>server_end&lt;<a class='link' href='#SignalProcessing'>SignalProcessing</a>&gt;</code>
</td>
</tr>
</table>
## Reader {#Reader}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=218)*
<p>For an overview see
<a href="https://fuchsia.dev/fuchsia-src/concepts/drivers/driver_architectures/audio_drivers/audio_signal_processing">[Signal Processing Interface]</a>.</p>
### GetElements {#Reader.GetElements}
<p>Returns a vector of supported processing elements.
Must return one or more processing elements, or ZX_ERR_NOT_SUPPORTED.</p>
#### Request {#Reader.GetElements_Request}
&lt;EMPTY&gt;
#### Response {#Reader.GetElements_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Reader_GetElements_Result'>Reader_GetElements_Result</a></code>
</td>
</tr>
</table>
### GetTopologies {#Reader.GetTopologies}
<p>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 <code>SetTopology</code>.
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 <code>SetTopology</code>.
If <code>GetElements</code> returns one or more elements, <code>GetTopologies</code> must return one or
more topologies.</p>
#### Request {#Reader.GetTopologies_Request}
&lt;EMPTY&gt;
#### Response {#Reader.GetTopologies_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Reader_GetTopologies_Result'>Reader_GetTopologies_Result</a></code>
</td>
</tr>
</table>
### WatchElementState {#Reader.WatchElementState}
<p>Get the processing element state via a hanging get. For a given <code>processing_element_id</code>,
the driver will reply to the first <code>WatchElement</code> sent by the client.
The driver will not respond to subsequent client <code>WatchElement</code> calls for a
given <code>processing_element_id</code> until any field of the <code>Element</code> table
changes from what was most recently reported for that <code>processing_element_id</code>.</p>
#### Request {#Reader.WatchElementState_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>processing_element_id</code></td>
<td>
<code>uint64</code>
</td>
</tr>
</table>
#### Response {#Reader.WatchElementState_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>state</code></td>
<td>
<code><a class='link' href='#ElementState'>ElementState</a></code>
</td>
</tr>
</table>
## SignalProcessing {#SignalProcessing}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=167)*
<p>For an overview see
<a href="https://fuchsia.dev/fuchsia-src/concepts/drivers/driver_architectures/audio_drivers/audio_signal_processing">[Signal Processing Interface]</a>.</p>
### GetElements {#SignalProcessing.GetElements}
<p>Returns a vector of supported processing elements.
Must return one or more processing elements, or ZX_ERR_NOT_SUPPORTED.</p>
#### Request {#SignalProcessing.GetElements_Request}
&lt;EMPTY&gt;
#### Response {#SignalProcessing.GetElements_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Reader_GetElements_Result'>Reader_GetElements_Result</a></code>
</td>
</tr>
</table>
### GetTopologies {#SignalProcessing.GetTopologies}
<p>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 <code>SetTopology</code>.
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 <code>SetTopology</code>.
If <code>GetElements</code> returns one or more elements, <code>GetTopologies</code> must return one or
more topologies.</p>
#### Request {#SignalProcessing.GetTopologies_Request}
&lt;EMPTY&gt;
#### Response {#SignalProcessing.GetTopologies_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Reader_GetTopologies_Result'>Reader_GetTopologies_Result</a></code>
</td>
</tr>
</table>
### SetElementState {#SignalProcessing.SetElementState}
<p>Controls a processing element using a unique id returned by <code>GetElements</code>.
Returns <code>ZX_ERR_INVALID_ARGS</code> if the <code>processing_element_id</code> does not match an id returned
by <code>GetElements</code> or the type of <code>TypeSpecificElementState</code> does not
match the <code>ElementType</code> of the processing element returned by
<code>GetElements</code> for this id.
The driver may return <code>ZX_ERR_INVALID_ARGS</code> if the <code>state</code> values are invalid, i.e. any
of the values violates rules specified in this protocol, e.g. trying to change an
<code>EQUALIZER</code> processing element's <code>EqualizerBandState</code> <code>frequency</code> when this processing
element did not advertise <code>CAN_CONTROL_FREQUENCY</code> in its <code>supported_controls</code>.</p>
<p><code>SetElementState</code> may be called before or after non-<code>SignalProcessing</code> protocol
calls. If called after non-<code>SignalProcessing</code> protocol calls then
<code>SetElementState</code> may or may not require renegotiation of the driver state as
reached with calls of the protocol composing <code>SignalProcessing</code>, e.g. <code>Dai</code>.
For instance, <code>SetElementState</code> changing an <code>AGL</code> processing element's parameters
may not require renegotiation of the <code>Dai</code> state because changing a gain parameter usually
does not change the set of supported audio formats.
By contrast, if <code>SetElementState</code> changes the parameters of a <code>CONNECTION_POINT</code>
element, the change may require renegotiation because it may invalidate the set of
supported formats returned in a previous <code>GetDaiFormats</code> <code>Dai</code> protocol call.</p>
<p>It is the driver's job to determine when renegotiation is required. If renegotiation is
required, then <code>SetElementState</code> 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 <code>SetElementState</code> call that returned
ZX_ERR_BAD_STATE before any non-<code>SignalProcessing</code> protocol calls.</p>
#### Request {#SignalProcessing.SetElementState_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>processing_element_id</code></td>
<td>
<code>uint64</code>
</td>
</tr>
<tr>
<td><code>state</code></td>
<td>
<code><a class='link' href='#ElementState'>ElementState</a></code>
</td>
</tr>
</table>
#### Response {#SignalProcessing.SetElementState_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#SignalProcessing_SetElementState_Result'>SignalProcessing_SetElementState_Result</a></code>
</td>
</tr>
</table>
### SetTopology {#SignalProcessing.SetTopology}
<p>Sets the topology to be used using an id to the vector returned by <code>GetTopologies</code>.
If <code>GetTopologies</code> returns more than one <code>Topology</code>, <code>SetTopology</code> must be called to put the
driver in an initialized state. If <code>GetTopologies</code> returns only one <code>Topology</code>,
<code>SetTopology</code> is optional and has no effect.</p>
<p><code>SetTopology</code> may be called before or after non-<code>SignalProcessing</code> protocol calls.
If called after non-<code>SignalProcessing</code> protocol calls, then <code>SetTopology</code> may return
ZX_ERR_BAD_STATE to indicate that the operation can not proceed without renegotiation of the
driver state. See <code>SetElementState</code> for further discussion.</p>
#### Request {#SignalProcessing.SetTopology_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>topology_id</code></td>
<td>
<code>uint64</code>
</td>
</tr>
</table>
#### Response {#SignalProcessing.SetTopology_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#SignalProcessing_SetTopology_Result'>SignalProcessing_SetTopology_Result</a></code>
</td>
</tr>
</table>
### WatchElementState {#SignalProcessing.WatchElementState}
<p>Get the processing element state via a hanging get. For a given <code>processing_element_id</code>,
the driver will reply to the first <code>WatchElement</code> sent by the client.
The driver will not respond to subsequent client <code>WatchElement</code> calls for a
given <code>processing_element_id</code> until any field of the <code>Element</code> table
changes from what was most recently reported for that <code>processing_element_id</code>.</p>
#### Request {#SignalProcessing.WatchElementState_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>processing_element_id</code></td>
<td>
<code>uint64</code>
</td>
</tr>
</table>
#### Response {#SignalProcessing.WatchElementState_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>state</code></td>
<td>
<code><a class='link' href='#ElementState'>ElementState</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### EdgePair {#EdgePair data-text="EdgePair"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=146)*
<p>Edge pairs between processing elements used to define ordering in processing elements
arrangements.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="EdgePair.processing_element_id_from">
<td><code>processing_element_id_from</code></td>
<td>
<code>uint64</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="EdgePair.processing_element_id_to">
<td><code>processing_element_id_to</code></td>
<td>
<code>uint64</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Reader_GetElements_Response {#Reader_GetElements_Response data-text="Reader_GetElements_Response"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=221)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Reader_GetElements_Response.processing_elements">
<td><code>processing_elements</code></td>
<td>
<code>vector&lt;<a class='link' href='#Element'>Element</a>&gt;[64]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Reader_GetTopologies_Response {#Reader_GetTopologies_Response data-text="Reader_GetTopologies_Response"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=244)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Reader_GetTopologies_Response.topologies">
<td><code>topologies</code></td>
<td>
<code>vector&lt;<a class='link' href='#Topology'>Topology</a>&gt;[64]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SignalProcessing_SetElementState_Response {#SignalProcessing_SetElementState_Response data-text="SignalProcessing_SetElementState_Response"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=200)*
&lt;EMPTY&gt;
### SignalProcessing_SetTopology_Response {#SignalProcessing_SetTopology_Response data-text="SignalProcessing_SetTopology_Response"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=213)*
&lt;EMPTY&gt;
## **ENUMS**
### ElementType [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ElementType data-text="ElementType"}
Type: <code>uint32</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=17)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ElementType.VENDOR_SPECIFIC">
<td><h3 id="ElementType.VENDOR_SPECIFIC" class="add-link hide-from-toc">VENDOR_SPECIFIC</h3></td>
<td><code>1</code></td>
<td><p>Vendor Specific. A type of processing element not covered by any subsequent type definition.</p>
</td>
</tr>
<tr id="ElementType.END_POINT">
<td><h3 id="ElementType.END_POINT" class="add-link hide-from-toc">END_POINT</h3></td>
<td><code>2</code></td>
<td><p>Define pipelines start/end.</p>
</td>
</tr>
<tr id="ElementType.CONNECTION_POINT">
<td><h3 id="ElementType.CONNECTION_POINT" class="add-link hide-from-toc">CONNECTION_POINT</h3></td>
<td><code>3</code></td>
<td><p>Controls pipelines channel mixing and routing.</p>
</td>
</tr>
<tr id="ElementType.GAIN">
<td><h3 id="ElementType.GAIN" class="add-link hide-from-toc">GAIN</h3></td>
<td><code>4</code></td>
<td><p>Gain control, a.k.a. Volume control.</p>
</td>
</tr>
<tr id="ElementType.AUTOMATIC_GAIN_CONTROL">
<td><h3 id="ElementType.AUTOMATIC_GAIN_CONTROL" class="add-link hide-from-toc">AUTOMATIC_GAIN_CONTROL</h3></td>
<td><code>5</code></td>
<td><p>Automatic Gain Control.
Automatically maintains a suitable signal level regardless of variation of its input.</p>
</td>
</tr>
<tr id="ElementType.AUTOMATIC_GAIN_LIMITER">
<td><h3 id="ElementType.AUTOMATIC_GAIN_LIMITER" class="add-link hide-from-toc">AUTOMATIC_GAIN_LIMITER</h3></td>
<td><code>6</code></td>
<td><p>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.</p>
</td>
</tr>
<tr id="ElementType.DYNAMICS">
<td><h3 id="ElementType.DYNAMICS" class="add-link hide-from-toc">DYNAMICS</h3></td>
<td><code>7</code></td>
<td><p>Alters the dynamic range of the signal, e.g. dynamic range compression.</p>
</td>
</tr>
<tr id="ElementType.MUTE">
<td><h3 id="ElementType.MUTE" class="add-link hide-from-toc">MUTE</h3></td>
<td><code>8</code></td>
<td><p>Mute.</p>
</td>
</tr>
<tr id="ElementType.DELAY">
<td><h3 id="ElementType.DELAY" class="add-link hide-from-toc">DELAY</h3></td>
<td><code>9</code></td>
<td><p>Delay.</p>
</td>
</tr>
<tr id="ElementType.EQUALIZER">
<td><h3 id="ElementType.EQUALIZER" class="add-link hide-from-toc">EQUALIZER</h3></td>
<td><code>10</code></td>
<td><p>Equalizer.</p>
</td>
</tr>
<tr id="ElementType.SAMPLE_RATE_CONVERSION">
<td><h3 id="ElementType.SAMPLE_RATE_CONVERSION" class="add-link hide-from-toc">SAMPLE_RATE_CONVERSION</h3></td>
<td><code>11</code></td>
<td><p>Sample Rate Conversion.</p>
</td>
</tr>
</table>
### EqualizerBandType [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#EqualizerBandType data-text="EqualizerBandType"}
Type: <code>uint64</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/equalizer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/equalizer.fidl;l=9)*
<p>Type of the equalizer band.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="EqualizerBandType.PEAK">
<td><h3 id="EqualizerBandType.PEAK" class="add-link hide-from-toc">PEAK</h3></td>
<td><code>1</code></td>
<td><p>Increase/decrease in <code>gain_db</code> in the vicinity of a <code>frequency</code> with an optional <code>q</code>.</p>
</td>
</tr>
<tr id="EqualizerBandType.NOTCH">
<td><h3 id="EqualizerBandType.NOTCH" class="add-link hide-from-toc">NOTCH</h3></td>
<td><code>2</code></td>
<td><p>Narrow band rejection significantly attenuating a <code>frequency</code> with an optional <code>q</code>.</p>
</td>
</tr>
<tr id="EqualizerBandType.LOW_CUT">
<td><h3 id="EqualizerBandType.LOW_CUT" class="add-link hide-from-toc">LOW_CUT</h3></td>
<td><code>3</code></td>
<td><p>Decrease gain below a <code>frequency</code> with an optional <code>q</code>, a.k.a high pass.</p>
</td>
</tr>
<tr id="EqualizerBandType.HIGH_CUT">
<td><h3 id="EqualizerBandType.HIGH_CUT" class="add-link hide-from-toc">HIGH_CUT</h3></td>
<td><code>4</code></td>
<td><p>Decrease gain above a <code>frequency</code> with an optional <code>q</code>, a.k.a low pass.</p>
</td>
</tr>
<tr id="EqualizerBandType.LOW_SHELF">
<td><h3 id="EqualizerBandType.LOW_SHELF" class="add-link hide-from-toc">LOW_SHELF</h3></td>
<td><code>5</code></td>
<td><p>Decrease gain below a <code>frequency</code> for a <code>gain_db</code> amount with a plateau effect.</p>
</td>
</tr>
<tr id="EqualizerBandType.HIGH_SHELF">
<td><h3 id="EqualizerBandType.HIGH_SHELF" class="add-link hide-from-toc">HIGH_SHELF</h3></td>
<td><code>6</code></td>
<td><p>Decrease gain above a <code>frequency</code> for a <code>gain_db</code> amount with a plateau effect.</p>
</td>
</tr>
</table>
### GainDomain [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#GainDomain data-text="GainDomain"}
Type: <code>uint8</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/gain.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/gain.fidl;l=7)*
<p>Hardware domain of the gain, e.g. ANALOG.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="GainDomain.DIGITAL">
<td><h3 id="GainDomain.DIGITAL" class="add-link hide-from-toc">DIGITAL</h3></td>
<td><code>1</code></td>
<td><p>The processing element gain is applied in the digital domain.</p>
</td>
</tr>
<tr id="GainDomain.ANALOG">
<td><h3 id="GainDomain.ANALOG" class="add-link hide-from-toc">ANALOG</h3></td>
<td><code>2</code></td>
<td><p>The processing element gain is applied in the analog domain.</p>
</td>
</tr>
<tr id="GainDomain.MIXED">
<td><h3 id="GainDomain.MIXED" class="add-link hide-from-toc">MIXED</h3></td>
<td><code>3</code></td>
<td><p>The processing element gain is mixed using digital and analog hardware.</p>
</td>
</tr>
</table>
### GainType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#GainType data-text="GainType"}
Type: <code>uint8</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/gain.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/gain.fidl;l=19)*
<p>Gain type of representation.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="GainType.DECIBELS">
<td><h3 id="GainType.DECIBELS" class="add-link hide-from-toc">DECIBELS</h3></td>
<td><code>1</code></td>
<td><p>Gain specified in dB, for example -103.0dB or +3.2dB.</p>
</td>
</tr>
<tr id="GainType.PERCENT">
<td><h3 id="GainType.PERCENT" class="add-link hide-from-toc">PERCENT</h3></td>
<td><code>2</code></td>
<td><p>Gain specified as a percentage, for example 10.0% or 80.5%.</p>
</td>
</tr>
</table>
### LevelType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LevelType data-text="LevelType"}
Type: <code>uint8</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/dynamics.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=11)*
<p>Level type.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="LevelType.PEAK">
<td><h3 id="LevelType.PEAK" class="add-link hide-from-toc">PEAK</h3></td>
<td><code>1</code></td>
<td><p>Level Gain specified as peak.</p>
</td>
</tr>
<tr id="LevelType.RMS">
<td><h3 id="LevelType.RMS" class="add-link hide-from-toc">RMS</h3></td>
<td><code>2</code></td>
<td><p>Level specified as RMS.</p>
</td>
</tr>
</table>
### ThresholdType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ThresholdType data-text="ThresholdType"}
Type: <code>uint8</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/dynamics.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=20)*
<p>Threshold type.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ThresholdType.ABOVE">
<td><h3 id="ThresholdType.ABOVE" class="add-link hide-from-toc">ABOVE</h3></td>
<td><code>1</code></td>
<td><p>Apply dynamics processing above the threshold.</p>
</td>
</tr>
<tr id="ThresholdType.BELOW">
<td><h3 id="ThresholdType.BELOW" class="add-link hide-from-toc">BELOW</h3></td>
<td><code>2</code></td>
<td><p>Apply dynamics processing below the threshold.</p>
</td>
</tr>
</table>
## **TABLES**
### Dynamics {#Dynamics data-text="Dynamics"}
*Defined in [fuchsia.hardware.audio.signalprocessing/dynamics.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=69)*
<p>Parameters for an <code>Element</code> with <code>type</code> equal to <code>DYNAMICS</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Dynamics.bands">
<td><h3 id="Dynamics.bands" class="add-link hide-from-toc">1</h3></td>
<td><code>bands</code></td>
<td>
<code>vector&lt;<a class='link' href='#DynamicsBand'>DynamicsBand</a>&gt;[64]</code>
</td>
<td><p><code>Dynamics</code> elements in this protocol may support multiple bands, each
specifying a number of parameters in <code>DynamicsElementState</code> that can be changed
with <code>SetElement</code>.
The number of elements of the <code>bands</code> vector determines the number of bands supported by
this processing element.</p>
</td>
</tr>
<tr id="Dynamics.supported_controls">
<td><h3 id="Dynamics.supported_controls" class="add-link hide-from-toc">2</h3></td>
<td><code>supported_controls</code></td>
<td>
<code><a class='link' href='#DynamicsSupportedControls'>DynamicsSupportedControls</a></code>
</td>
<td><p>The controls supported by this processing element.</p>
</td>
</tr>
</table>
### DynamicsBand {#DynamicsBand data-text="DynamicsBand"}
*Defined in [fuchsia.hardware.audio.signalprocessing/dynamics.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=29)*
<p>Parameters for a <code>Dynamics</code> element band.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="DynamicsBand.id">
<td><h3 id="DynamicsBand.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Unique ID for this band, only required to be unique within the corresponding
<code>Element</code>, and valid until the channel associated with the <code>SignalProcessing</code>
protocol is closed. Required.</p>
</td>
</tr>
</table>
### DynamicsBandState {#DynamicsBandState data-text="DynamicsBandState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/dynamics.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=84)*
<p>State for a single band within an <code>Element</code> with <code>type</code> equal to <code>DYNAMICS</code>.
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 <code>supported_controls</code>).</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="DynamicsBandState.id">
<td><h3 id="DynamicsBandState.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Unique ID for the band. Must match one of the <code>id</code>s specified in
<code>Dynamics</code> <code>bands</code>. Required.</p>
</td>
</tr>
<tr id="DynamicsBandState.min_frequency">
<td><h3 id="DynamicsBandState.min_frequency" class="add-link hide-from-toc">2</h3></td>
<td><code>min_frequency</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Minimum frequency for the band in Hz. Required.
This field could be 0, for instance for single band dynamics processing to specify
(together with max_frequency) that the band is full range.</p>
</td>
</tr>
<tr id="DynamicsBandState.max_frequency">
<td><h3 id="DynamicsBandState.max_frequency" class="add-link hide-from-toc">3</h3></td>
<td><code>max_frequency</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Maximum frequency for the band in Hz. Required.
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.</p>
</td>
</tr>
<tr id="DynamicsBandState.threshold_db">
<td><h3 id="DynamicsBandState.threshold_db" class="add-link hide-from-toc">4</h3></td>
<td><code>threshold_db</code></td>
<td>
<code>float32</code>
</td>
<td><p>The value beyond which the dynamics main processing starts (subject to the
<code>knee_width_db</code>), in input dB. Required.
Some signal processing like <code>input_gain</code> and <code>output_gain</code> are not affected by this value.</p>
</td>
</tr>
<tr id="DynamicsBandState.threshold_type">
<td><h3 id="DynamicsBandState.threshold_type" class="add-link hide-from-toc">5</h3></td>
<td><code>threshold_type</code></td>
<td>
<code><a class='link' href='#ThresholdType'>ThresholdType</a></code>
</td>
<td><p>Dynamics processing is applied <code>ABOVE</code> or <code>BELOW</code> the threshold. Required for a server.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.THRESHOLD_TYPE</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.ratio">
<td><h3 id="DynamicsBandState.ratio" class="add-link hide-from-toc">6</h3></td>
<td><code>ratio</code></td>
<td>
<code>float32</code>
</td>
<td><p>The input-to-output dB ratio above or below (see <code>threshold_type</code>) the knee region.
Required.</p>
</td>
</tr>
<tr id="DynamicsBandState.knee_width_db">
<td><h3 id="DynamicsBandState.knee_width_db" class="add-link hide-from-toc">7</h3></td>
<td><code>knee_width_db</code></td>
<td>
<code>float32</code>
</td>
<td><p>The width of the knee region, in input dB. Optional.
If not included, the width of the knee region is unspecified.
A value of zero is a &quot;hard&quot; knee; larger values lead to &quot;softer&quot; knees.
This knee is centered on <code>threshold_db</code>.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.KNEE_WIDTH</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.attack">
<td><h3 id="DynamicsBandState.attack" class="add-link hide-from-toc">8</h3></td>
<td><code>attack</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>Attack time. Optional.
If not included, the attack time is unspecified.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.ATTACK</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.release">
<td><h3 id="DynamicsBandState.release" class="add-link hide-from-toc">9</h3></td>
<td><code>release</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>Release time. Optional.
If not included, the release time is unspecified.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.RELEASE</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.output_gain_db">
<td><h3 id="DynamicsBandState.output_gain_db" class="add-link hide-from-toc">10</h3></td>
<td><code>output_gain_db</code></td>
<td>
<code>float32</code>
</td>
<td><p>Output (a.k.a. make up or post) gain value in dB. Optional.
If not included, the output gain is unspecified.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.OUTPUT_GAIN</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.input_gain_db">
<td><h3 id="DynamicsBandState.input_gain_db" class="add-link hide-from-toc">11</h3></td>
<td><code>input_gain_db</code></td>
<td>
<code>float32</code>
</td>
<td><p>input (a.k.a. pre) gain value in dB. Optional.
If not included, the input gain is unspecified.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.INPUT_GAIN</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.level_type">
<td><h3 id="DynamicsBandState.level_type" class="add-link hide-from-toc">12</h3></td>
<td><code>level_type</code></td>
<td>
<code><a class='link' href='#LevelType'>LevelType</a></code>
</td>
<td><p>Level type (peak or RMS). Optional.
If not included, the level type is unspecified.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.LEVEL_TYPE</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.lookahead">
<td><h3 id="DynamicsBandState.lookahead" class="add-link hide-from-toc">13</h3></td>
<td><code>lookahead</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>Look-ahead time. Optional.
If not included, the look-ahead time is unspecified.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.LOOKAHEAD</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
<tr id="DynamicsBandState.linked_channels">
<td><h3 id="DynamicsBandState.linked_channels" class="add-link hide-from-toc">14</h3></td>
<td><code>linked_channels</code></td>
<td>
<code>bool</code>
</td>
<td><p>Linked channels (a.k.a. Stereo linked for 2-channel systems). Optional.
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.
A client must not include this field in a <code>SetElement</code> if
<code>DynamicsSupportedControls.LINKED_CHANNELS</code> is not set in <code>supported_controls</code>.</p>
</td>
</tr>
</table>
### DynamicsElementState {#DynamicsElementState data-text="DynamicsElementState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/dynamics.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=167)*
<p>State for an <code>Element</code> with <code>type</code> equal to <code>DYNAMICS</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="DynamicsElementState.band_states">
<td><h3 id="DynamicsElementState.band_states" class="add-link hide-from-toc">1</h3></td>
<td><code>band_states</code></td>
<td>
<code>vector&lt;<a class='link' href='#DynamicsBandState'>DynamicsBandState</a>&gt;[64]</code>
</td>
<td><p>Each id must match an id from <code>Dynamics.bands</code> and ids cannot be repeated.
<code>bands_state</code> must have at least one element.
The bands controlled by <code>bands_state</code> are determined by each <code>band.id</code>.</p>
</td>
</tr>
</table>
### Element {#Element data-text="Element"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=78)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Element.id">
<td><h3 id="Element.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Unique ID for this element. The scope of this id is only within the <code>SignalProcessing</code>
protocol lifespan, i.e. until the channel associated with the protocol is closed.
Required.</p>
</td>
</tr>
<tr id="Element.type">
<td><h3 id="Element.type" class="add-link hide-from-toc">2</h3></td>
<td><code>type</code></td>
<td>
<code><a class='link' href='#ElementType'>ElementType</a></code>
</td>
<td><p>Processing element type. Required.</p>
</td>
</tr>
<tr id="Element.type_specific">
<td><h3 id="Element.type_specific" class="add-link hide-from-toc">3</h3></td>
<td><code>type_specific</code></td>
<td>
<code><a class='link' href='#TypeSpecificElement'>TypeSpecificElement</a></code>
</td>
<td><p>If included, type specific parameters for the processing element.</p>
</td>
</tr>
<tr id="Element.can_disable">
<td><h3 id="Element.can_disable" class="add-link hide-from-toc">4</h3></td>
<td><code>can_disable</code></td>
<td>
<code>bool</code>
</td>
<td><p>If included and true, the processing element can be disabled via
<code>ElementSetState</code>.
If not included or false, the processing element is always enabled.</p>
</td>
</tr>
<tr id="Element.description">
<td><h3 id="Element.description" class="add-link hide-from-toc">5</h3></td>
<td><code>description</code></td>
<td>
<code>string[256]</code>
</td>
<td><p>If included, a textual description of the processing element.</p>
</td>
</tr>
</table>
### ElementState {#ElementState data-text="ElementState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=117)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ElementState.type_specific">
<td><h3 id="ElementState.type_specific" class="add-link hide-from-toc">1</h3></td>
<td><code>type_specific</code></td>
<td>
<code><a class='link' href='#TypeSpecificElementState'>TypeSpecificElementState</a></code>
</td>
<td><p>If included, type specific state parameters for the processing element.</p>
<p>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 <code>SetElementState</code> enables a
disabled processing element providing a <code>TypeSpecificElementState</code>, then any previous
informational <code>TypeSpecificElementState</code> is superceded.</p>
</td>
</tr>
<tr id="ElementState.enabled">
<td><h3 id="ElementState.enabled" class="add-link hide-from-toc">2</h3></td>
<td><code>enabled</code></td>
<td>
<code>bool</code>
</td>
<td><p>Process element enable/disable state. Optional. By default processing elements are enabled.
If the corresponding <code>Element</code> returned <code>can_disable</code> equals to <code>false</code>, then
this field can't be set to <code>false</code>.
If <code>enabled</code> is not included, then <code>state</code> must be included if and only if the processing
element is currently enabled.</p>
</td>
</tr>
<tr id="ElementState.latency">
<td><h3 id="ElementState.latency" class="add-link hide-from-toc">3</h3></td>
<td><code>latency</code></td>
<td>
<code><a class='link' href='#Latency'>Latency</a></code>
</td>
<td><p>If included, how much latency is added to the pipeline if this processing element is
enabled. This field must not be present in a <code>SetElementState</code> <code>state</code> since
the latency can't be set by a client, it can only provided by the server in a
<code>WatchElementState</code> reply.</p>
</td>
</tr>
<tr id="ElementState.vendor_specific_data">
<td><h3 id="ElementState.vendor_specific_data" class="add-link hide-from-toc">4</h3></td>
<td><code>vendor_specific_data</code></td>
<td>
<code>vector&lt;uint8&gt;[4096]</code>
</td>
<td><p>If included, an opaque object of octets for exchanging vendor specific information.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div>
</td>
</tr>
</table>
### Equalizer {#Equalizer data-text="Equalizer"}
*Defined in [fuchsia.hardware.audio.signalprocessing/equalizer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/equalizer.fidl;l=72)*
<p>Parameters for a <code>Element</code> with <code>type</code> equal to <code>EQUALIZER</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Equalizer.bands">
<td><h3 id="Equalizer.bands" class="add-link hide-from-toc">1</h3></td>
<td><code>bands</code></td>
<td>
<code>vector&lt;<a class='link' href='#EqualizerBand'>EqualizerBand</a>&gt;[64]</code>
</td>
<td><p>Equalizers in this protocol are built by a number of bands, each specifying a number of
parameters here and <code>EqualizerElementState</code> that can be changed with
<code>SetElement</code>.
The number of elements of the <code>bands</code> vector determines the number of bands
supported by this processing element.</p>
</td>
</tr>
<tr id="Equalizer.supported_controls">
<td><h3 id="Equalizer.supported_controls" class="add-link hide-from-toc">2</h3></td>
<td><code>supported_controls</code></td>
<td>
<code><a class='link' href='#EqualizerSupportedControls'>EqualizerSupportedControls</a></code>
</td>
<td><p>The controls supported by this equalizer.</p>
</td>
</tr>
<tr id="Equalizer.can_disable_bands">
<td><h3 id="Equalizer.can_disable_bands" class="add-link hide-from-toc">3</h3></td>
<td><code>can_disable_bands</code></td>
<td>
<code>bool</code>
</td>
<td><p>If included and true, individual bands can be disabled via <code>ElementState</code>.
If not included or false, the bands are always enabled.
For a band to be functional its enclosing equalizer processing element has to be enabled.</p>
</td>
</tr>
<tr id="Equalizer.min_frequency">
<td><h3 id="Equalizer.min_frequency" class="add-link hide-from-toc">4</h3></td>
<td><code>min_frequency</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Minimum frequency for the bands in Hz. Required.</p>
</td>
</tr>
<tr id="Equalizer.max_frequency">
<td><h3 id="Equalizer.max_frequency" class="add-link hide-from-toc">5</h3></td>
<td><code>max_frequency</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Maximum frequency for the bands in Hz. Required.</p>
</td>
</tr>
<tr id="Equalizer.max_q">
<td><h3 id="Equalizer.max_q" class="add-link hide-from-toc">6</h3></td>
<td><code>max_q</code></td>
<td>
<code>float32</code>
</td>
<td><p>Maximum quality factor, usually denoted by &quot;Q&quot;, for the bands. Optional.
Indicates how narrow the frequency transition is. Higher Q values imply narrower
notches/peaks and steeper cuts/shelves. Must be positive.</p>
</td>
</tr>
<tr id="Equalizer.min_gain_db">
<td><h3 id="Equalizer.min_gain_db" class="add-link hide-from-toc">7</h3></td>
<td><code>min_gain_db</code></td>
<td>
<code>float32</code>
</td>
<td><p>Minimum gain in dB.
Required if any <code>EqualizerBand.EqualizerBandType</code> is set to <code>PEAK</code>, <code>LOW_SHELF</code>,
<code>HIGH_SHELF</code>.</p>
</td>
</tr>
<tr id="Equalizer.max_gain_db">
<td><h3 id="Equalizer.max_gain_db" class="add-link hide-from-toc">8</h3></td>
<td><code>max_gain_db</code></td>
<td>
<code>float32</code>
</td>
<td><p>Maximum gain in dB.
Required if any <code>EqualizerBand.EqualizerBandType</code> is set to <code>PEAK</code>, <code>LOW_SHELF</code>,
<code>HIGH_SHELF</code>.</p>
</td>
</tr>
</table>
### EqualizerBand {#EqualizerBand data-text="EqualizerBand"}
*Defined in [fuchsia.hardware.audio.signalprocessing/equalizer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/equalizer.fidl;l=30)*
<p>Parameters for an equalizer Band.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="EqualizerBand.id">
<td><h3 id="EqualizerBand.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Unique ID for this band, only required to be unique within the corresponding
<code>Element</code>, and valid until the channel associated with the <code>SignalProcessing</code>
protocol is closed. Required.</p>
</td>
</tr>
</table>
### EqualizerBandState {#EqualizerBandState data-text="EqualizerBandState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/equalizer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/equalizer.fidl;l=111)*
<p>State for a single band within a <code>Element</code> with <code>type</code> equal to <code>EQUALIZER</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="EqualizerBandState.id">
<td><h3 id="EqualizerBandState.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Unique ID for the band. Must match one of the <code>id</code>s specified in
<code>Equalizer</code> <code>bands</code>. Required.</p>
</td>
</tr>
<tr id="EqualizerBandState.type">
<td><h3 id="EqualizerBandState.type" class="add-link hide-from-toc">2</h3></td>
<td><code>type</code></td>
<td>
<code><a class='link' href='#EqualizerBandType'>EqualizerBandType</a></code>
</td>
<td><p>Type of band. Optional.</p>
</td>
</tr>
<tr id="EqualizerBandState.frequency">
<td><h3 id="EqualizerBandState.frequency" class="add-link hide-from-toc">3</h3></td>
<td><code>frequency</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Center frequency for the band. Optional.</p>
</td>
</tr>
<tr id="EqualizerBandState.q">
<td><h3 id="EqualizerBandState.q" class="add-link hide-from-toc">4</h3></td>
<td><code>q</code></td>
<td>
<code>float32</code>
</td>
<td><p>Quality factor, usually denoted as &quot;Q&quot;. Optional.
Indicates how narrow the frequency transition is. Higher Q values imply narrower
notches/peaks and steeper cuts/shelves. Must be positive.</p>
</td>
</tr>
<tr id="EqualizerBandState.gain_db">
<td><h3 id="EqualizerBandState.gain_db" class="add-link hide-from-toc">5</h3></td>
<td><code>gain_db</code></td>
<td>
<code>float32</code>
</td>
<td><p>Gain in dB. Required for <code>EqualizerBandType</code> <code>PEAK</code>, <code>LOW_SHELF</code> and <code>HIGH_SHELF</code>.
May not be included for <code>EqualizerBandType</code> <code>NOTCH</code>, <code>LOW_CUT</code> or <code>HIGH_CUT</code>.</p>
</td>
</tr>
<tr id="EqualizerBandState.enabled">
<td><h3 id="EqualizerBandState.enabled" class="add-link hide-from-toc">6</h3></td>
<td><code>enabled</code></td>
<td>
<code>bool</code>
</td>
<td><p>Enable/disable the band. Optional. By default all bands are enabled.
Disabling the enclosing processing element by setting <code>ElementState.enabled</code> to
false disables the whole equalizer and it does not change this field. For a band to be
functional its enclosing equalizer processing element has to be enabled.</p>
</td>
</tr>
</table>
### EqualizerElementState {#EqualizerElementState data-text="EqualizerElementState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/equalizer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/equalizer.fidl;l=139)*
<p>State for a <code>Element</code> with <code>type</code> equal to <code>EQUALIZER</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="EqualizerElementState.bands_state">
<td><h3 id="EqualizerElementState.bands_state" class="add-link hide-from-toc">1</h3></td>
<td><code>bands_state</code></td>
<td>
<code>vector&lt;<a class='link' href='#EqualizerBandState'>EqualizerBandState</a>&gt;[64]</code>
</td>
<td><p>The number of elements of the <code>bands_state</code> vector must be equal or smaller than the
number of elements of the <code>bands</code> returned in returned in the corresponding
<code>Equalizer</code>. <code>bands_state</code> must have at least one element.
The bands controlled by <code>bands_state</code> are determined by each <code>band.id</code>.</p>
</td>
</tr>
</table>
### Gain {#Gain data-text="Gain"}
*Defined in [fuchsia.hardware.audio.signalprocessing/gain.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/gain.fidl;l=28)*
<p>Parameters for an <code>Element</code> with <code>type</code> equal to <code>GAIN</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Gain.type">
<td><h3 id="Gain.type" class="add-link hide-from-toc">1</h3></td>
<td><code>type</code></td>
<td>
<code><a class='link' href='#GainType'>GainType</a></code>
</td>
<td><p>Specifies what the numbers for gain represent, e.g. a percentage. Required.</p>
</td>
</tr>
<tr id="Gain.domain">
<td><h3 id="Gain.domain" class="add-link hide-from-toc">2</h3></td>
<td><code>domain</code></td>
<td>
<code><a class='link' href='#GainDomain'>GainDomain</a></code>
</td>
<td><p>If included, the gain is applied in the specified <code>GainDomain</code>.
If not included, the gain domain is unspecified.</p>
</td>
</tr>
<tr id="Gain.min_gain">
<td><h3 id="Gain.min_gain" class="add-link hide-from-toc">3</h3></td>
<td><code>min_gain</code></td>
<td>
<code>float32</code>
</td>
<td><p>Minimum gain in <code>GainType</code> format. Required.</p>
</td>
</tr>
<tr id="Gain.max_gain">
<td><h3 id="Gain.max_gain" class="add-link hide-from-toc">4</h3></td>
<td><code>max_gain</code></td>
<td>
<code>float32</code>
</td>
<td><p>Maximum gain in <code>GainType</code> format. Required.</p>
</td>
</tr>
<tr id="Gain.min_gain_step">
<td><h3 id="Gain.min_gain_step" class="add-link hide-from-toc">5</h3></td>
<td><code>min_gain_step</code></td>
<td>
<code>float32</code>
</td>
<td><p>Minimum gain step in <code>GainType</code> format, this value must not be negative, but may be zero to
convey an effectively continuous range of values. Must not exceed <code>max_gain</code> - <code>min_gain</code>.
The actual gain set may be queried by the client with a <code>WatchElement</code> call.
Required.</p>
</td>
</tr>
</table>
### GainElementState {#GainElementState data-text="GainElementState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/gain.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/gain.fidl;l=50)*
<p>State for an <code>Element</code> with <code>type</code> equal to <code>GAIN</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="GainElementState.gain">
<td><h3 id="GainElementState.gain" class="add-link hide-from-toc">1</h3></td>
<td><code>gain</code></td>
<td>
<code>float32</code>
</td>
<td><p>Current gain in <code>GainType</code> format. Required.</p>
</td>
</tr>
</table>
### Topology {#Topology data-text="Topology"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=152)*
<p>A <code>Topology</code> specifies one way processing elements are arranged within the hardware.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Topology.id">
<td><h3 id="Topology.id" class="add-link hide-from-toc">1</h3></td>
<td><code>id</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Unique ID for this topology. The scope of this id is only within the <code>SignalProcessing</code>
protocol lifespan, i.e. until the channel associated with the protocol is closed.
Required.</p>
</td>
</tr>
<tr id="Topology.processing_elements_edge_pairs">
<td><h3 id="Topology.processing_elements_edge_pairs" class="add-link hide-from-toc">2</h3></td>
<td><code>processing_elements_edge_pairs</code></td>
<td>
<code>vector&lt;<a class='link' href='#EdgePair'>EdgePair</a>&gt;[64]</code>
</td>
<td><p>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 <code>Topology</code> entries in <code>GetTopologies</code>.
Required.</p>
</td>
</tr>
</table>
### VendorSpecific {#VendorSpecific data-text="VendorSpecific"}
*Defined in [fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl;l=7)*
<p>Type specific parameters for an <code>Element</code> with <code>type</code> equal to <code>VENDOR_SPECIFIC</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
</table>
### VendorSpecificState {#VendorSpecificState data-text="VendorSpecificState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl;l=10)*
<p>State for an <code>Element</code> with <code>type</code> equal to <code>VENDOR_SPECIFIC</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
</table>
## **UNIONS**
### Latency [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Latency data-text="Latency"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=70)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Latency.latency_time">
<td><h3 id="Latency.latency_time" class="add-link hide-from-toc">1</h3></td>
<td><code>latency_time</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>Latency added to the pipeline as a zx.duration.</p>
</td>
</tr>
<tr id="Latency.latency_frames">
<td><h3 id="Latency.latency_frames" class="add-link hide-from-toc">2</h3></td>
<td><code>latency_frames</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Latency added to the pipeline as a number of frames.</p>
</td>
</tr>
</table>
### Reader_GetElements_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Reader_GetElements_Result data-text="Reader_GetElements_Result"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=221)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Reader_GetElements_Result.response">
<td><h3 id="Reader_GetElements_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Reader_GetElements_Response'>Reader_GetElements_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Reader_GetElements_Result.err">
<td><h3 id="Reader_GetElements_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### Reader_GetTopologies_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Reader_GetTopologies_Result data-text="Reader_GetTopologies_Result"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=244)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Reader_GetTopologies_Result.response">
<td><h3 id="Reader_GetTopologies_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Reader_GetTopologies_Response'>Reader_GetTopologies_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Reader_GetTopologies_Result.err">
<td><h3 id="Reader_GetTopologies_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### SignalProcessing_SetElementState_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SignalProcessing_SetElementState_Result data-text="SignalProcessing_SetElementState_Result"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=200)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="SignalProcessing_SetElementState_Result.response">
<td><h3 id="SignalProcessing_SetElementState_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#SignalProcessing_SetElementState_Response'>SignalProcessing_SetElementState_Response</a></code>
</td>
<td></td>
</tr>
<tr id="SignalProcessing_SetElementState_Result.err">
<td><h3 id="SignalProcessing_SetElementState_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### SignalProcessing_SetTopology_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SignalProcessing_SetTopology_Result data-text="SignalProcessing_SetTopology_Result"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=213)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="SignalProcessing_SetTopology_Result.response">
<td><h3 id="SignalProcessing_SetTopology_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#SignalProcessing_SetTopology_Response'>SignalProcessing_SetTopology_Response</a></code>
</td>
<td></td>
</tr>
<tr id="SignalProcessing_SetTopology_Result.err">
<td><h3 id="SignalProcessing_SetTopology_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### TypeSpecificElement [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TypeSpecificElement data-text="TypeSpecificElement"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=56)*
<p>Type specific Parameters for an <code>Element</code>.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="TypeSpecificElement.vendor_specific">
<td><h3 id="TypeSpecificElement.vendor_specific" class="add-link hide-from-toc">1</h3></td>
<td><code>vendor_specific</code></td>
<td>
<code><a class='link' href='#VendorSpecific'>VendorSpecific</a></code>
</td>
<td></td>
</tr>
<tr id="TypeSpecificElement.gain">
<td><h3 id="TypeSpecificElement.gain" class="add-link hide-from-toc">2</h3></td>
<td><code>gain</code></td>
<td>
<code><a class='link' href='#Gain'>Gain</a></code>
</td>
<td></td>
</tr>
<tr id="TypeSpecificElement.equalizer">
<td><h3 id="TypeSpecificElement.equalizer" class="add-link hide-from-toc">3</h3></td>
<td><code>equalizer</code></td>
<td>
<code><a class='link' href='#Equalizer'>Equalizer</a></code>
</td>
<td></td>
</tr>
<tr id="TypeSpecificElement.dynamics">
<td><h3 id="TypeSpecificElement.dynamics" class="add-link hide-from-toc">4</h3></td>
<td><code>dynamics</code></td>
<td>
<code><a class='link' href='#Dynamics'>Dynamics</a></code>
</td>
<td></td>
</tr>
</table>
### TypeSpecificElementState [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TypeSpecificElementState data-text="TypeSpecificElementState"}
*Defined in [fuchsia.hardware.audio.signalprocessing/signal_processing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=103)*
<p>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 <code>ElementType</code> entry in the
corresponding <code>Element</code>.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="TypeSpecificElementState.vendor_specific">
<td><h3 id="TypeSpecificElementState.vendor_specific" class="add-link hide-from-toc">1</h3></td>
<td><code>vendor_specific</code></td>
<td>
<code><a class='link' href='#VendorSpecificState'>VendorSpecificState</a></code>
</td>
<td></td>
</tr>
<tr id="TypeSpecificElementState.gain">
<td><h3 id="TypeSpecificElementState.gain" class="add-link hide-from-toc">2</h3></td>
<td><code>gain</code></td>
<td>
<code><a class='link' href='#GainElementState'>GainElementState</a></code>
</td>
<td></td>
</tr>
<tr id="TypeSpecificElementState.equalizer">
<td><h3 id="TypeSpecificElementState.equalizer" class="add-link hide-from-toc">3</h3></td>
<td><code>equalizer</code></td>
<td>
<code><a class='link' href='#EqualizerElementState'>EqualizerElementState</a></code>
</td>
<td></td>
</tr>
<tr id="TypeSpecificElementState.dynamics">
<td><h3 id="TypeSpecificElementState.dynamics" class="add-link hide-from-toc">4</h3></td>
<td><code>dynamics</code></td>
<td>
<code><a class='link' href='#DynamicsElementState'>DynamicsElementState</a></code>
</td>
<td></td>
</tr>
</table>
## **BITS**
### DynamicsSupportedControls [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DynamicsSupportedControls}
Type: <code>uint64</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/dynamics.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=39)*
<p>Supported controls for <code>Dynamics</code>.
If included, each bit representing a parameter of the dynamics processing bands can be changed
with <code>SetElement</code>.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="DynamicsSupportedControls.KNEE_WIDTH">
<td><h3 id="DynamicsSupportedControls.KNEE_WIDTH" class="add-link hide-from-toc">KNEE_WIDTH</h3></td>
<td>1</td>
<td><p>If included, the <code>knee_width_db</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.ATTACK">
<td><h3 id="DynamicsSupportedControls.ATTACK" class="add-link hide-from-toc">ATTACK</h3></td>
<td>2</td>
<td><p>If included, the <code>attack</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.RELEASE">
<td><h3 id="DynamicsSupportedControls.RELEASE" class="add-link hide-from-toc">RELEASE</h3></td>
<td>4</td>
<td><p>If included, the <code>release</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.OUTPUT_GAIN">
<td><h3 id="DynamicsSupportedControls.OUTPUT_GAIN" class="add-link hide-from-toc">OUTPUT_GAIN</h3></td>
<td>8</td>
<td><p>If included, the <code>output_gain_db</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.INPUT_GAIN">
<td><h3 id="DynamicsSupportedControls.INPUT_GAIN" class="add-link hide-from-toc">INPUT_GAIN</h3></td>
<td>16</td>
<td><p>If included, the <code>input_gain_db</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.LOOKAHEAD">
<td><h3 id="DynamicsSupportedControls.LOOKAHEAD" class="add-link hide-from-toc">LOOKAHEAD</h3></td>
<td>32</td>
<td><p>If included, the <code>lookahead</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.LEVEL_TYPE">
<td><h3 id="DynamicsSupportedControls.LEVEL_TYPE" class="add-link hide-from-toc">LEVEL_TYPE</h3></td>
<td>64</td>
<td><p>If included, the <code>level_type</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.LINKED_CHANNELS">
<td><h3 id="DynamicsSupportedControls.LINKED_CHANNELS" class="add-link hide-from-toc">LINKED_CHANNELS</h3></td>
<td>128</td>
<td><p>If included, the <code>linked_channels</code> parameter can be changed.</p>
</td>
</tr>
<tr id="DynamicsSupportedControls.THREDSHOLD_TYPE">
<td><h3 id="DynamicsSupportedControls.THREDSHOLD_TYPE" class="add-link hide-from-toc">THREDSHOLD_TYPE</h3></td>
<td>256</td>
<td><p>If included, the <code>threshold_type</code> parameter can be changed.</p>
</td>
</tr>
</table>
### EqualizerSupportedControls [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#EqualizerSupportedControls}
Type: <code>uint64</code>
*Defined in [fuchsia.hardware.audio.signalprocessing/equalizer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/equalizer.fidl;l=38)*
<p>Equalizer supported controls specified in <code>Equalizer</code>.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="EqualizerSupportedControls.CAN_CONTROL_FREQUENCY">
<td><h3 id="EqualizerSupportedControls.CAN_CONTROL_FREQUENCY" class="add-link hide-from-toc">CAN_CONTROL_FREQUENCY</h3></td>
<td>1</td>
<td><p>If included, the <code>frequency</code> of the equalizer bands can be changed with
<code>SetElement</code>.</p>
</td>
</tr>
<tr id="EqualizerSupportedControls.CAN_CONTROL_Q">
<td><h3 id="EqualizerSupportedControls.CAN_CONTROL_Q" class="add-link hide-from-toc">CAN_CONTROL_Q</h3></td>
<td>2</td>
<td><p>If included, the <code>q</code> of the equalizer bands can be changed with <code>SetElement</code>.</p>
</td>
</tr>
<tr id="EqualizerSupportedControls.SUPPORTS_TYPE_PEAK">
<td><h3 id="EqualizerSupportedControls.SUPPORTS_TYPE_PEAK" class="add-link hide-from-toc">SUPPORTS_TYPE_PEAK</h3></td>
<td>4</td>
<td><p>If included, the <code>type</code> of the equalizer bands can be changed with <code>SetElement</code>
to <code>EqualizerBandType</code> <code>PEAK</code>.</p>
</td>
</tr>
<tr id="EqualizerSupportedControls.SUPPORTS_TYPE_NOTCH">
<td><h3 id="EqualizerSupportedControls.SUPPORTS_TYPE_NOTCH" class="add-link hide-from-toc">SUPPORTS_TYPE_NOTCH</h3></td>
<td>8</td>
<td><p>If included, the <code>type</code> of the equalizer bands can be changed with <code>SetElement</code>
to <code>EqualizerBandType</code> <code>NOTCH</code>.</p>
</td>
</tr>
<tr id="EqualizerSupportedControls.SUPPORTS_TYPE_LOW_CUT">
<td><h3 id="EqualizerSupportedControls.SUPPORTS_TYPE_LOW_CUT" class="add-link hide-from-toc">SUPPORTS_TYPE_LOW_CUT</h3></td>
<td>16</td>
<td><p>If included, the <code>type</code> of the equalizer bands can be changed with <code>SetElement</code>
to <code>EqualizerBandType</code> <code>LOW_CUT</code>.</p>
</td>
</tr>
<tr id="EqualizerSupportedControls.SUPPORTS_TYPE_HIGH_CUT">
<td><h3 id="EqualizerSupportedControls.SUPPORTS_TYPE_HIGH_CUT" class="add-link hide-from-toc">SUPPORTS_TYPE_HIGH_CUT</h3></td>
<td>32</td>
<td><p>If included, the <code>type</code> of the equalizer bands can be changed with <code>SetElement</code>
to <code>EqualizerBandType</code> <code>HIGH_CUT</code>.</p>
</td>
</tr>
<tr id="EqualizerSupportedControls.SUPPORTS_TYPE_LOW_SHELF">
<td><h3 id="EqualizerSupportedControls.SUPPORTS_TYPE_LOW_SHELF" class="add-link hide-from-toc">SUPPORTS_TYPE_LOW_SHELF</h3></td>
<td>64</td>
<td><p>If included, the <code>type</code> of the equalizer bands can be changed with <code>SetElement</code>
to <code>EqualizerBandType</code> <code>LOW_SHELF</code>.</p>
</td>
</tr>
<tr id="EqualizerSupportedControls.SUPPORTS_TYPE_HIGH_SHELF">
<td><h3 id="EqualizerSupportedControls.SUPPORTS_TYPE_HIGH_SHELF" class="add-link hide-from-toc">SUPPORTS_TYPE_HIGH_SHELF</h3></td>
<td>128</td>
<td><p>If included, the <code>type</code> of the equalizer bands can be changed with <code>SetElement</code>
to <code>EqualizerBandType</code> <code>HIGH_SHELF</code>.</p>
</td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="MAX_BYTES_ELEMENT_VENDOR_SPECIFIC">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=15">MAX_BYTES_ELEMENT_VENDOR_SPECIFIC</a></td>
<td>
<code>4096</code>
</td>
<td><code>uint32</code></td>
<td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div>
</td>
</tr>
<tr id="MAX_COUNT_DYNAMICS_BANDS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/dynamics.fidl;l=8">MAX_COUNT_DYNAMICS_BANDS</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_COUNT_EQUALIZER_BANDS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/equalizer.fidl;l=6">MAX_COUNT_EQUALIZER_BANDS</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_COUNT_PROCESSING_ELEMENTS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=10">MAX_COUNT_PROCESSING_ELEMENTS</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_COUNT_PROCESSING_ELEMENTS_EDGE_PAIRS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=12">MAX_COUNT_PROCESSING_ELEMENTS_EDGE_PAIRS</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_COUNT_TOPOLOGIES">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=11">MAX_COUNT_TOPOLOGIES</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_STRING_SIZE">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.audio.signalprocessing/signal_processing.fidl;l=13">MAX_STRING_SIZE</a></td>
<td>
<code>256</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
</table>