SoundIoInStream

Struct SoundIoInStream 

Source
#[repr(C)]
pub struct SoundIoInStream {
Show 14 fields pub device: *mut SoundIoDevice, pub format: SoundIoFormat, pub sample_rate: c_int, pub layout: SoundIoChannelLayout, pub software_latency: f64, pub userdata: *mut c_void, pub read_callback: Option<unsafe extern "C" fn(arg1: *mut SoundIoInStream, frame_count_min: c_int, frame_count_max: c_int)>, pub overflow_callback: Option<unsafe extern "C" fn(arg1: *mut SoundIoInStream)>, pub error_callback: Option<unsafe extern "C" fn(arg1: *mut SoundIoInStream, err: c_int)>, pub name: *const c_char, pub non_terminal_hint: bool, pub bytes_per_frame: c_int, pub bytes_per_sample: c_int, pub layout_error: c_int,
}
Expand description

The size of this struct is not part of the API or ABI.

Fields§

§device: *mut SoundIoDevice

Populated automatically when you call ::soundio_outstream_create.

§format: SoundIoFormat

Defaults to #SoundIoFormatFloat32NE, followed by the first one supported.

§sample_rate: c_int

Sample rate is the number of frames per second. Defaults to max(sample_rate_min, min(sample_rate_max, 48000))

§layout: SoundIoChannelLayout

Defaults to Stereo, if available, followed by the first layout supported.

§software_latency: f64

Ignoring hardware latency, this is the number of seconds it takes for a captured sample to become available for reading. After you call ::soundio_instream_open, this value is replaced with the actual software latency, as near to this value as possible. A higher value means less CPU usage. Defaults to a large value, potentially upwards of 2 seconds. If the device has unknown software latency min and max values, you may still set this, but you might not get the value you requested. For PulseAudio, if you set this value to non-default, it sets PA_STREAM_ADJUST_LATENCY and is the value used for fragsize. For JACK, this value is always equal to SoundIoDevice::software_latency_current

§userdata: *mut c_void

Defaults to NULL. Put whatever you want here.

§read_callback: Option<unsafe extern "C" fn(arg1: *mut SoundIoInStream, frame_count_min: c_int, frame_count_max: c_int)>

In this function call ::soundio_instream_begin_read and ::soundio_instream_end_read as many times as necessary to read at minimum frame_count_min frames and at maximum frame_count_max frames. If you return from read_callback without having read frame_count_min, the frames will be dropped. frame_count_max is how many frames are available to read.

The code in the supplied function must be suitable for real-time execution. That means that it cannot call functions that might block for a long time. This includes all I/O functions (disk, TTY, network), malloc, free, printf, pthread_mutex_lock, sleep, wait, poll, select, pthread_join, pthread_cond_wait, etc.

§overflow_callback: Option<unsafe extern "C" fn(arg1: *mut SoundIoInStream)>

This optional callback happens when the sound device buffer is full, yet there is more captured audio to put in it. This is never fired for PulseAudio. This is called from the SoundIoInStream::read_callback thread context.

§error_callback: Option<unsafe extern "C" fn(arg1: *mut SoundIoInStream, err: c_int)>

Optional callback. err is always SoundIoErrorStreaming. SoundIoErrorStreaming is an unrecoverable error. The stream is in an invalid state and must be destroyed. If you do not supply error_callback, the default callback will print a message to stderr and then abort(). This is called from the SoundIoInStream::read_callback thread context.

§name: *const c_char

Optional: Name of the stream. Defaults to “SoundIoInStream”; PulseAudio uses this for the stream name. JACK uses this for the client name of the client that connects when you open the stream. WASAPI uses this for the session display name. Must not contain a colon (“:”).

§non_terminal_hint: bool

Optional: Hint that this input stream is nonterminal. This is used by JACK and it means that the data received by the stream will be passed on or made available to another stream. Defaults to false.

§bytes_per_frame: c_int

computed automatically when you call ::soundio_instream_open

§bytes_per_sample: c_int

computed automatically when you call ::soundio_instream_open

§layout_error: c_int

If setting the channel layout fails for some reason, this field is set to an error code. Possible error codes are: #SoundIoErrorIncompatibleDevice

Trait Implementations§

Source§

impl Clone for SoundIoInStream

Source§

fn clone(&self) -> SoundIoInStream

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SoundIoInStream

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Copy for SoundIoInStream

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.