Enum InjectionRequest

Source
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 specific audio_data input record. We can have multiple records.
  • request audio_writer socket where audio data will be loaded from.

Fields

§index: i32
§audio_writer: Socket
§control_handle: InjectionControlHandle
§

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 specific audio_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 specific audio_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.
§

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 specific audio_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.
§

_UnknownMethod

An interaction was received which does not match any known method.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§ordinal: u64

Ordinal of the method that was called.

§control_handle: InjectionControlHandle
§method_type: MethodType

Implementations§

Trait Implementations§

Source§

impl Debug for InjectionRequest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.