| <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<<a class='link' href='#SignalProcessing'>SignalProcessing</a>></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} |
| |
| <EMPTY> |
| |
| |
| #### 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} |
| |
| <EMPTY> |
| |
| |
| #### 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} |
| |
| <EMPTY> |
| |
| |
| #### 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} |
| |
| <EMPTY> |
| |
| |
| #### 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<<a class='link' href='#Element'>Element</a>>[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<<a class='link' href='#Topology'>Topology</a>>[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)* |
| |
| <EMPTY> |
| |
| ### 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)* |
| |
| <EMPTY> |
| |
| |
| ## **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<<a class='link' href='#DynamicsBand'>DynamicsBand</a>>[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 "hard" knee; larger values lead to "softer" 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<<a class='link' href='#DynamicsBandState'>DynamicsBandState</a>>[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<uint8>[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<<a class='link' href='#EqualizerBand'>EqualizerBand</a>>[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 "Q", 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 "Q". 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<<a class='link' href='#EqualizerBandState'>EqualizerBandState</a>>[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<<a class='link' href='#EdgePair'>EdgePair</a>>[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> |