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,
},
#[non_exhaustive] _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
indexrefers a specificaudio_datainput record. We can have multiple records. - request
audio_writersocket 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
indexrefers to a specificaudio_datainput record.
- response
errordescription 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
indexrefers a specificaudio_datainput record to clear.
- response
errordescription 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
errordescription of failure action to take.
Fields
responder: InjectionWaitUntilInputIsDoneResponderStartInputInjection
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
indexrefers a specificaudio_datainput record to play on the virtual microphone.
- response
errordescription 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
errordescription of failure action to take.
Fields
responder: InjectionStopInputInjectionResponder#[non_exhaustive]_UnknownMethod
An interaction was received which does not match any known method.
Fields
This variant is marked as non-exhaustive
control_handle: InjectionControlHandlemethod_type: MethodTypeImplementations§
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