Struct AudioBuffer
pub struct AudioBuffer<S>where
S: Sample,{ /* private fields */ }
dep_symphonia
only.Expand description
AudioBuffer
is a container for multi-channel planar audio sample data. An AudioBuffer
is
characterized by the duration (capacity), and audio specification (channels and sample rate).
The capacity of an AudioBuffer
is the maximum number of samples the buffer may store per
channel. Manipulation of samples is accomplished through the Signal trait or direct buffer
manipulation.
Implementations§
§impl<S> AudioBuffer<S>where
S: Sample,
impl<S> AudioBuffer<S>where
S: Sample,
pub fn new(duration: u64, spec: SignalSpec) -> AudioBuffer<S>
pub fn new(duration: u64, spec: SignalSpec) -> AudioBuffer<S>
Instantiate a new AudioBuffer
using the specified signal specification and of the given
duration.
pub fn unused() -> AudioBuffer<S>
pub fn unused() -> AudioBuffer<S>
Instantiates an unused AudioBuffer
. An unused AudioBuffer
will not allocate any memory,
has a sample rate of 0, and no audio channels.
pub fn spec(&self) -> &SignalSpec
pub fn spec(&self) -> &SignalSpec
Gets the signal specification for the buffer.
pub fn capacity(&self) -> usize ⓘ
pub fn capacity(&self) -> usize ⓘ
Gets the total capacity of the buffer. The capacity is the maximum number of audio frames a buffer can store.
pub fn planes(&self) -> AudioPlanes<'_, S>
pub fn planes(&self) -> AudioPlanes<'_, S>
Gets immutable references to all audio planes (channels) within the audio buffer.
Note: This is not a cheap operation for audio buffers with > 8 channels. It is advisable
that this call is only used when operating on large batches of frames. Generally speaking,
it is almost always better to use chan()
to selectively choose the plane to read instead.
pub fn planes_mut(&mut self) -> AudioPlanesMut<'_, S>
pub fn planes_mut(&mut self) -> AudioPlanesMut<'_, S>
Gets mutable references to all audio planes (channels) within the buffer.
Note: This is not a cheap operation for audio buffers with > 8 channels. It is advisable
that this call is only used when modifying large batches of frames. Generally speaking,
it is almost always better to use render()
, fill()
, chan_mut()
, and chan_pair_mut()
to modify the buffer instead.
pub fn convert<T>(&self, dest: &mut AudioBuffer<T>)where
T: Sample,
S: IntoSample<T>,
pub fn convert<T>(&self, dest: &mut AudioBuffer<T>)where
T: Sample,
S: IntoSample<T>,
Converts the contents of an AudioBuffer into an equivalent destination AudioBuffer of a different type. If the types are the same then this is a copy operation.
pub fn make_equivalent<E>(&self) -> AudioBuffer<E>where
E: Sample,
pub fn make_equivalent<E>(&self) -> AudioBuffer<E>where
E: Sample,
Makes an equivalent AudioBuffer of a different type.
Trait Implementations§
§impl AsAudioBufferRef for AudioBuffer<f32>
impl AsAudioBufferRef for AudioBuffer<f32>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<f64>
impl AsAudioBufferRef for AudioBuffer<f64>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<i16>
impl AsAudioBufferRef for AudioBuffer<i16>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<i24>
impl AsAudioBufferRef for AudioBuffer<i24>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<i32>
impl AsAudioBufferRef for AudioBuffer<i32>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<i8>
impl AsAudioBufferRef for AudioBuffer<i8>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<u16>
impl AsAudioBufferRef for AudioBuffer<u16>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<u24>
impl AsAudioBufferRef for AudioBuffer<u24>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<u32>
impl AsAudioBufferRef for AudioBuffer<u32>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl AsAudioBufferRef for AudioBuffer<u8>
impl AsAudioBufferRef for AudioBuffer<u8>
§fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
fn as_audio_buffer_ref(&self) -> AudioBufferRef<'_>
AudioBufferRef
reference.§impl<S> Clone for AudioBuffer<S>
impl<S> Clone for AudioBuffer<S>
§fn clone(&self) -> AudioBuffer<S>
fn clone(&self) -> AudioBuffer<S>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl<S> Signal<S> for AudioBuffer<S>where
S: Sample,
impl<S> Signal<S> for AudioBuffer<S>where
S: Sample,
§fn clear(&mut self)
fn clear(&mut self)
§fn frames(&self) -> usize ⓘ
fn frames(&self) -> usize ⓘ
§fn chan(&self, channel: usize) -> &[S] ⓘ
fn chan(&self, channel: usize) -> &[S] ⓘ
§fn chan_mut(&mut self, channel: usize) -> &mut [S] ⓘ
fn chan_mut(&mut self, channel: usize) -> &mut [S] ⓘ
§fn chan_pair_mut(&mut self, first: usize, second: usize) -> (&mut [S], &mut [S]) ⓘ
fn chan_pair_mut(&mut self, first: usize, second: usize) -> (&mut [S], &mut [S]) ⓘ
§fn render_silence(&mut self, n_frames: Option<usize>)
fn render_silence(&mut self, n_frames: Option<usize>)
§fn render_reserved(&mut self, n_frames: Option<usize>)
fn render_reserved(&mut self, n_frames: Option<usize>)
§fn render<'a, F>(
&'a mut self,
n_frames: Option<usize>,
render: F,
) -> Result<(), Error> ⓘ
fn render<'a, F>( &'a mut self, n_frames: Option<usize>, render: F, ) -> Result<(), Error> ⓘ
n_frames
. If n_frames
is None
, the remaining number of frames
in the buffer will be rendered. If the render function returns an error, the render
operation is terminated prematurely.§fn transform<F>(&mut self, f: F)where
F: Fn(S) -> S,
fn transform<F>(&mut self, f: F)where
F: Fn(S) -> S,
§fn truncate(&mut self, n_frames: usize)
fn truncate(&mut self, n_frames: usize)
§fn shift(&mut self, shift: usize)
fn shift(&mut self, shift: usize)
Auto Trait Implementations§
impl<S> Freeze for AudioBuffer<S>
impl<S> RefUnwindSafe for AudioBuffer<S>where
S: RefUnwindSafe,
impl<S> Send for AudioBuffer<S>where
S: Send,
impl<S> Sync for AudioBuffer<S>where
S: Sync,
impl<S> Unpin for AudioBuffer<S>where
S: Unpin,
impl<S> UnwindSafe for AudioBuffer<S>where
S: UnwindSafe,
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.