PROTOCOLS
EffectsController
Defined in fuchsia.media.audio/effects_controller.fidl
UpdateEffect
Sends the config
message to an audio effect named effect_name
. If the
server closes the EffectsController
connection for any reason, that
indicates that the effects have been reset and any state associated with
previous UpdateEffect
messages have been lost. Clients who wish to re-apply
state should respond by reconnecting and resending any needed UpdateEffect
messages. If a client closes the connection, no state will be lost but the
client will also be unable to determine if and when any state associated with
previous messages have been lost.
Returns success (empty response) if the message was accepted by an
effect named effect_name
.
Returns UpdateEffectError.INVALID_CONFIG
if an effect with the name
effect_name
was found, but the config
message was rejected.
Returns UpdateEffectError.NOT_FOUND
if no effect with name effect_name
could be located.
Request
Name | Type |
---|---|
effect_name |
string:128
|
config |
string
|
Response
Name | Type |
---|---|
payload |
EffectsController_UpdateEffect_Result
|
GainControl
Defined in fuchsia.media.audio/gain_control.fidl
Enables control and monitoring of audio gain. This interface is typically
a tear-off of other interfaces. For example, fuchsia.media.audio.Renderer
has a BindGainControl
method that binds to a gain control that controls
gain for the renderer.
OnGainMuteChanged
Notifies the client of changes in the current gain/mute values.
Response
Name | Type |
---|---|
gain_db |
float32
|
muted |
bool
|
SetGain
Sets the gain in decibels.
Request
Name | Type |
---|---|
gain_db |
float32
|
SetGainWithRamp
Smoothly changes gain from its current value to specified value, over the specified duration (in milliseconds). If 'duration_ns' is 0, gain changes immediately. Otherwise, gain changes only while the stream is running.
Any active or pending ramp is cancelled by subsequent call to SetGain.
There can be at most 1 active ramp at any time. Any active or pending ramp is replaced by a later call to SetGainWithRamp (even if duration is 0). In this case gain would ramps directly from its most recent (mid-ramp) value to the newly-specified one, over the new duration, using the new easing.
Usage example (using time in seconds):
Time 0
SetGainWithRamp(MUTED_GAIN_DB
, 0, SCALE_LINEAR) // Ramp 1
SetGainWithRamp(0.0f, ZX_SEC
(4), SCALE_LINEAR) // Ramp 2
Time 3
PlayNoReply(kNoTimestamp, any_media_time)
Time 4
PauseNoReply()
Time 7
PlayNoReply(kNoTimestamp, any_media_time)
Time 8
SetGainWithRamp(MUTED_GAIN_DB
, ZX_SEC(1), SCALE_LINEAR) // Ramp 3
Time 0: Ramp 1 completes immediately, changing the gain to MUTED_GAIN_DB
.
Ramp 2 is pending, since we are not in playback.
Time 3, Ramp 2 begins ramping from MUTED_GAIN_DB
to 0 dB
(scale 0.0=>1.0).
Time 4: Ramp 2 pauses (3s remain). Per SCALE_LINEAR
, scale is approx.
0.25.
Time 7: Ramp 2 resumes from most recent value toward the target.
Time 8: Ramp 3 replaces Ramp 2 and starts from current scale
(approx 0.5).
Time 9: Ramp 3 completes; current scale value is now 0.0 (MUTED_GAIN_DB
).
Request
Name | Type |
---|---|
gain_db |
float32
|
duration |
zx/Duration
|
rampType |
RampType
|
SetMute
Sets the mute value. Ramping and mute are fully independent, although they both affect the scaling that is applied.
Request
Name | Type |
---|---|
muted |
bool
|
VolumeControl
Defined in fuchsia.media.audio/volume_control.fidl
A protocol for controlling volume.
OnVolumeMuteChanged
Emitted when the volume or mute state of the audio element changes.
Response
Name | Type |
---|---|
new_volume |
float32
|
new_muted |
bool
|
SetMute
Sets whether the controlled element is muted. Mute is not the same as setting volume to 0.0; volume will persist for the duration of a mute. If volume was 0.5 before mute, volume will resume at 0.5 following unmute.
Request
Name | Type |
---|---|
mute |
bool
|
SetVolume
Sets the volume of the audio element to the given value in [0.0, 1.0]. If the value is provided is outside of [0.0, 1.0], the value is clamped before application.
Request
Name | Type |
---|---|
volume |
float32
|
STRUCTS
EffectsController_UpdateEffect_Response
Defined in fuchsia.media.audio/effects_controller.fidl
<EMPTY>
ENUMS
RampType strict
Type: uint16
Defined in fuchsia.media.audio/gain_control.fidl
Enumerates gain control ramp types.
Name | Value | Description |
---|---|---|
SCALE_LINEAR |
1 |
Amplitude scale changes at a fixed rate across the ramp duration. |
UpdateEffectError strict
Type: uint32
Defined in fuchsia.media.audio/effects_controller.fidl
Name | Value | Description |
---|---|---|
INVALID_CONFIG |
1 |
|
NOT_FOUND |
2 |
UNIONS
EffectsController_UpdateEffect_Result strict
Defined in fuchsia.media.audio/effects_controller.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
EffectsController_UpdateEffect_Response
|
|
2 |
err |
UpdateEffectError
|
CONSTANTS
Name | Value | Type | Description |
---|---|---|---|
MAX_EFFECT_NAME_LENGTH |
128
|
uint32 |
|
MAX_GAIN_DB |
24
|
float32 |
Maximum permitted gain value. |
MAX_VOLUME |
1
|
float32 |
The volume value representing the maximum loudness. |
MIN_VOLUME |
0
|
float32 |
The volume value representing silence. |
MUTED_GAIN_DB |
-160
|
float32 |
Gain value producing silence. Gain values less than this value are permitted, but produce the same effect as this value. |