pub struct FrameDecoder { /* private fields */ }Expand description
A stateful APE frame decoder that works on raw compressed frame bytes.
Unlike ApeDecoder which owns a reader and handles both demuxing and
decoding, FrameDecoder only performs decoding. It is designed for
integration with external demuxers (e.g., Symphonia) that manage I/O
separately and supply compressed frame data as byte slices.
§Usage
ⓘ
let mut fd = FrameDecoder::new(version, channels, bits_per_sample, compression_level);
let pcm = fd.decode_frame(&frame_bytes, seek_remainder, frame_blocks)?;Implementations§
Source§impl FrameDecoder
impl FrameDecoder
Sourcepub fn new(
version: u16,
channels: u16,
bits_per_sample: u16,
compression_level: u16,
) -> ApeResult<Self>
pub fn new( version: u16, channels: u16, bits_per_sample: u16, compression_level: u16, ) -> ApeResult<Self>
Create a new FrameDecoder with the given APE stream parameters.
version— APE file version (e.g., 3990). Must be >= 3950.channels— Number of audio channels (1–32).bits_per_sample— Bits per sample (8, 16, 24, or 32).compression_level— Compression level (1000–5000).
Returns an error if the parameters are invalid (unsupported version, zero channels, or unsupported bit depth).
Sourcepub fn decode_frame(
&mut self,
frame_data: &[u8],
seek_remainder: u32,
frame_blocks: usize,
) -> ApeResult<Vec<u8>>
pub fn decode_frame( &mut self, frame_data: &[u8], seek_remainder: u32, frame_blocks: usize, ) -> ApeResult<Vec<u8>>
Decode a compressed frame to raw PCM bytes.
frame_data— Compressed frame bytes (including alignment prefix), as returned byApeDecoder::read_frame_data.seek_remainder— Byte alignment offset for this frame, as returned byApeDecoder::seek_remainder.frame_blocks— Number of audio blocks (samples per channel) in this frame.
Auto Trait Implementations§
impl Freeze for FrameDecoder
impl RefUnwindSafe for FrameDecoder
impl Send for FrameDecoder
impl Sync for FrameDecoder
impl Unpin for FrameDecoder
impl UnsafeUnpin for FrameDecoder
impl UnwindSafe for FrameDecoder
Blanket Implementations§
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
Mutably borrows from an owned value. Read more