pub enum InjectionRequest {
WriteInputAudio {
index: i32,
audio_writer: Socket,
control_handle: InjectionControlHandle,
},
GetInputAudioSize {
index: i32,
responder: InjectionGetInputAudioSizeResponder,
},
ClearInputAudio {
index: i32,
responder: InjectionClearInputAudioResponder,
},
WaitUntilInputIsDone {
responder: InjectionWaitUntilInputIsDoneResponder,
},
StartInputInjection {
index: i32,
responder: InjectionStartInputInjectionResponder,
},
StopInputInjection {
responder: InjectionStopInputInjectionResponder,
},
_UnknownMethod {
ordinal: u64,
control_handle: InjectionControlHandle,
method_type: MethodType,
},
}
Expand description
A protocol that supports audio input injection.
Connections to this protocol control a virtual input audio device which can be used to inject audio as if it came from a microphone.
The server contains indexed tracks which can be independently queued and played. When injecting audio, it is common to pre-load all required inputs for a test scenario and play them sequentially, using WaitUntilInputIsDone to determine when to start the next stage.
Variants§
WriteInputAudio
Set the audio to be injected at index
.
The first time this is called, an empty vector will be created, subsequent calls will
append to audio_data
to the same vector.
Use ClearInputAudio
to clear audio input data stored at index
.
Further requests on the same Injection connection are blocked until the audio_writer socket is drained completely. To determine when injection is complete, users may initiate a call to GetInputAudioSize immediately following the call to this method.
- request
index
refers a specificaudio_data
input record. We can have multiple records. - request
audio_writer
socket where audio data will be loaded from.
GetInputAudioSize
Get the size of audio data stored at index
.
This method returns the number of bytes of input data stored at the given index.
If a WriteInputAudio
call is pending for the given index,
this method will block until the socket is drained and the data
is fully stored.
- request
index
refers to a specificaudio_data
input record.
- response
error
description of failure action to take.
ClearInputAudio
Clears audio data stored at index
.
If no data exists at index
nothing will get cleared, but no error will be returned.
- request
index
refers a specificaudio_data
input record to clear.
- response
error
description of failure action to take.
WaitUntilInputIsDone
Wait until injected inputs are done playing.
This function returns only when all injected audio tracks are complete.
This is intended to be called after calling StartInputInjection
.
If no tracks have been started, or all started tracks have already completed,
then this function will immediately return without error.
- response
error
description of failure action to take.
Fields
responder: InjectionWaitUntilInputIsDoneResponder
StartInputInjection
Start injecting the incoming audio for this device, using the audio at index
.
Before calling this, use WriteInputAudio
to store audio data at the given index.
- request
index
refers a specificaudio_data
input record to play on the virtual microphone.
- response
error
description of failure action to take.
StopInputInjection
Stop injecting audio data.
This stops playing all injected tracks.
This is intended to be called after calling StartInputInjection
.
If no tracks have been started, or if all started tracks have already completed,
then this function will immediately return without error.
- response
error
description of failure action to take.
Fields
responder: InjectionStopInputInjectionResponder
_UnknownMethod
An interaction was received which does not match any known method.
Fields
This variant is marked as non-exhaustive
control_handle: InjectionControlHandle
method_type: MethodType
Implementations§
Source§impl InjectionRequest
impl InjectionRequest
pub fn into_write_input_audio( self, ) -> Option<(i32, Socket, InjectionControlHandle)>
pub fn into_get_input_audio_size( self, ) -> Option<(i32, InjectionGetInputAudioSizeResponder)>
pub fn into_clear_input_audio( self, ) -> Option<(i32, InjectionClearInputAudioResponder)>
pub fn into_wait_until_input_is_done( self, ) -> Option<InjectionWaitUntilInputIsDoneResponder>
pub fn into_start_input_injection( self, ) -> Option<(i32, InjectionStartInputInjectionResponder)>
pub fn into_stop_input_injection( self, ) -> Option<InjectionStopInputInjectionResponder>
Sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL