AudioBlockSequentialView

Struct AudioBlockSequentialView 

Source
pub struct AudioBlockSequentialView<'a, S>
where S: Sample,
{ /* private fields */ }
Expand description

A read-only view of sequential audio data.

  • Layout: [ch0, ch0, ch0, ch1, ch1, ch1]
  • Interpretation: All samples from ch0 are stored first, followed by all from ch1, etc.
  • Terminology: Described “channels first” in the sense that all data for one channel appears before any data for the next.
  • Usage: Used in DSP pipelines where per-channel processing is easier and more efficient.

§Example

use audio_blocks::*;

let data = vec![0.0, 0.0, 0.0, 1.0, 1.0, 1.0];

let block = AudioBlockSequentialView::from_slice(&data, 2, 3);

assert_eq!(block.channel(0), &[0.0, 0.0, 0.0]);
assert_eq!(block.channel(1), &[1.0, 1.0, 1.0]);

Implementations§

Source§

impl<'a, S> AudioBlockSequentialView<'a, S>
where S: Sample,

Source

pub fn from_slice( data: &'a [S], num_channels: u16, num_frames: usize, ) -> AudioBlockSequentialView<'a, S>

Creates a new audio block from a slice of sequential audio data.

§Parameters
  • data - The slice containing sequential audio samples
  • num_channels - Number of audio channels in the data
  • num_frames - Number of audio frames in the data
§Panics

Panics if the length of data doesn’t equal num_channels * num_frames.

Source

pub fn from_slice_limited( data: &'a [S], num_channels_visible: u16, num_frames_visible: usize, num_channels_allocated: u16, num_frames_allocated: usize, ) -> AudioBlockSequentialView<'a, S>

Creates a new audio block from a slice with limited visibility.

This function allows creating a view that exposes only a subset of the allocated channels and frames, which is useful for working with a logical section of a larger buffer.

§Parameters
  • data - The slice containing sequential audio samples
  • num_channels_visible - Number of audio channels to expose in the view
  • num_frames_visible - Number of audio frames to expose in the view
  • num_channels_allocated - Total number of channels allocated in the data buffer
  • num_frames_allocated - Total number of frames allocated in the data buffer
§Panics
  • Panics if the length of data doesn’t equal num_channels_allocated * num_frames_allocated
  • Panics if num_channels_visible exceeds num_channels_allocated
  • Panics if num_frames_visible exceeds num_frames_allocated
Source

pub unsafe fn from_ptr( ptr: *const S, num_channels: u16, num_frames: usize, ) -> AudioBlockSequentialView<'a, S>

Creates a new audio block from a raw pointers.

§Safety

The caller must ensure that:

  • ptr points to valid memory containing at least num_channels_available * num_frames_available elements
  • The memory referenced by ptr must be valid for the lifetime of the returned SequentialView
  • The memory must not be mutated through other pointers while this view exists
Source

pub unsafe fn from_ptr_limited( ptr: *const S, num_channels_visible: u16, num_frames_visible: usize, num_channels_allocated: u16, num_frames_allocated: usize, ) -> AudioBlockSequentialView<'a, S>

Creates a new audio block from a pointer with a limited amount of channels and/or frames.

§Safety

The caller must ensure that:

  • ptr points to valid memory containing at least num_channels_available * num_frames_available elements
  • The memory referenced by ptr must be valid for the lifetime of the returned SequentialView
  • The memory must not be mutated through other pointers while this view exists
Source

pub fn channel(&self, channel: u16) -> &[S]

Returns a slice for a single channel.

§Panics

Panics if channel index is out of bounds.

Source

pub fn channels(&self) -> impl Iterator<Item = &[S]>

Returns an iterator over all channels in the block.

Each channel is represented as a slice of samples.

Source

pub fn raw_data(&self) -> &[S]

Provides direct access to the underlying memory as an interleaved slice.

This function gives access to all allocated data, including any reserved capacity beyond the active range.

Source

pub fn view(&self) -> AudioBlockSequentialView<'_, S>

Trait Implementations§

Source§

impl<S> AudioBlock<S> for AudioBlockSequentialView<'_, S>
where S: Sample,

Source§

type PlanarView = [S; 0]

Source§

fn num_channels(&self) -> u16

Returns the number of active audio channels.
Source§

fn num_frames(&self) -> usize

Returns the number of audio frames (samples per channel).
Source§

fn num_channels_allocated(&self) -> u16

Returns the total number of channels allocated in memory. Read more
Source§

fn num_frames_allocated(&self) -> usize

Returns the total number of frames allocated in memory. Read more
Source§

fn layout(&self) -> BlockLayout

Returns the memory layout of this audio block (interleaved, sequential, or planar).
Source§

fn sample(&self, channel: u16, frame: usize) -> S

Returns the sample value at the specified channel and frame position. Read more
Source§

fn channel_iter(&self, channel: u16) -> impl Iterator<Item = &S>

Returns an iterator over all samples in the specified channel. Read more
Source§

fn channels_iter(&self) -> impl Iterator<Item = impl Iterator<Item = &S>>

Returns an iterator that yields an iterator for each channel.
Source§

fn frame_iter(&self, frame: usize) -> impl Iterator<Item = &S>

Returns an iterator over all samples in the specified frame (across all channels). Read more
Source§

fn frame_iters(&self) -> impl Iterator<Item = impl Iterator<Item = &S>>

Returns an iterator that yields an iterator for each frame.
Source§

fn as_view(&self) -> impl AudioBlock<S>

Creates a non-owning view of this audio block. Read more
Source§

fn as_sequential_view(&self) -> Option<AudioBlockSequentialView<'_, S>>

Attempts to downcast this generic audio block to a concrete sequential view. This enables access to frame slices and the underlying raw data. Read more
Source§

fn as_interleaved_view(&self) -> Option<AudioBlockInterleavedView<'_, S>>

Attempts to downcast this generic audio block to a concrete interleaved view. This enables access to frame slices and the underlying raw data. Read more
Source§

fn as_planar_view( &self, ) -> Option<AudioBlockPlanarView<'_, S, Self::PlanarView>>

Attempts to downcast this generic audio block to a concrete planar view. This enables access to frame slices and the underlying raw data. Read more
Source§

impl<S> Debug for AudioBlockSequentialView<'_, S>
where S: Sample + Debug,

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, S> Freeze for AudioBlockSequentialView<'a, S>

§

impl<'a, S> RefUnwindSafe for AudioBlockSequentialView<'a, S>
where S: RefUnwindSafe,

§

impl<'a, S> Send for AudioBlockSequentialView<'a, S>
where S: Sync,

§

impl<'a, S> Sync for AudioBlockSequentialView<'a, S>
where S: Sync,

§

impl<'a, S> Unpin for AudioBlockSequentialView<'a, S>

§

impl<'a, S> UnwindSafe for AudioBlockSequentialView<'a, S>
where S: RefUnwindSafe,

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> 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<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

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.