use std::slice;
use tinyvec::{tiny_vec, TinyVec};
#[allow(unused_imports)]
use crate::VorbisDecoder;
pub struct VorbisAudioSamples {
audio_samples: TinyVec<[&'static [f32]; 8]>
}
impl VorbisAudioSamples {
pub(in crate::decoder) fn new(
buf: *mut *mut f32,
channels: usize,
samples_read: usize
) -> Self {
let mut audio_samples = tiny_vec!([&[f32]; 8]);
unsafe {
audio_samples.extend(
slice::from_raw_parts(buf, channels)
.iter()
.map(|channel_samples| slice::from_raw_parts(*channel_samples, samples_read))
);
}
Self { audio_samples }
}
pub fn samples(&self) -> &[&[f32]] {
&self.audio_samples
}
}