pub struct VorbisDecoder {
pub sample_rate: u32,
pub channels: u8,
pub state: DecoderState,
pub packets_decoded: u64,
/* private fields */
}Expand description
Vorbis audio decoder.
Fields§
§sample_rate: u32Sample rate (filled from ID header).
channels: u8Channel count (filled from ID header).
state: DecoderStateCurrent decoder state.
packets_decoded: u64Number of audio packets decoded.
Implementations§
Source§impl VorbisDecoder
impl VorbisDecoder
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new, uninitialised decoder.
Feed the three header packets via decode_packet before audio.
Sourcepub fn decode_packet(&mut self, data: &[u8]) -> CodecResult<Option<Vec<f32>>>
pub fn decode_packet(&mut self, data: &[u8]) -> CodecResult<Option<Vec<f32>>>
Decode one Vorbis packet.
- Header packets are parsed for configuration.
- Audio packets are decoded to interleaved f32 PCM.
Returns None for header packets, Some(Vec<f32>) for audio.
§Errors
Returns CodecError if the packet is malformed.
Sourcepub fn process_header_packet(
&mut self,
data: &[u8],
) -> CodecResult<VorbisHeaderType>
pub fn process_header_packet( &mut self, data: &[u8], ) -> CodecResult<VorbisHeaderType>
Process a Vorbis header packet and return which header type was parsed.
This is an alternative entry-point to decode_packet for callers that
only need the structured header information without PCM output.
§Errors
Returns CodecError if the packet is malformed or received out of order.
Sourcepub fn id_header(&self) -> Option<&VorbisIdHeader>
pub fn id_header(&self) -> Option<&VorbisIdHeader>
Return a reference to the parsed identification header, if available.
Sourcepub fn comment_header(&self) -> Option<&VorbisCommentHeader>
pub fn comment_header(&self) -> Option<&VorbisCommentHeader>
Return a reference to the parsed comment header, if available.
Sourcepub fn is_ready(&self) -> bool
pub fn is_ready(&self) -> bool
Returns true once all three Vorbis header packets have been processed
and the decoder is ready for audio packets.
Sourcepub fn decode_audio_packet(&self, data: &[u8]) -> CodecResult<Vec<f32>>
pub fn decode_audio_packet(&self, data: &[u8]) -> CodecResult<Vec<f32>>
Validate and structurally decode a Vorbis audio packet.
This checks that the decoder is ready and that the packet starts with
the audio-packet type byte (0x00). A full Vorbis II floor/residue
decode is performed by decode_packet; this entry-point is provided
for callers that only need structural validation.
§Errors
Returns CodecError if the decoder is not yet ready, the packet is
empty, or the packet-type byte is not 0x00.
Auto Trait Implementations§
impl Freeze for VorbisDecoder
impl RefUnwindSafe for VorbisDecoder
impl Send for VorbisDecoder
impl Sync for VorbisDecoder
impl Unpin for VorbisDecoder
impl UnsafeUnpin for VorbisDecoder
impl UnwindSafe for VorbisDecoder
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
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