Crate vorbis [−] [src]
Safe Vorbis decoder implementation in pure Rust.
The decoder is low-level and can only decode Vorbis packets directly (not wrapped in any containers like Ogg).
Example
use std::io::Cursor; use vorbis::{BitReader, Decoder}; let ident_packet = &[]; // Replace with real data. let comment_packet = &[]; // Replace with real data. let setup_packet = &[]; // Replace with real data. let mut builder = Decoder::builder(); builder.read_ident_packet(&mut BitReader::new(Cursor::new(ident_packet))) .expect("Couldn't read ident packet"); builder.read_comment_packet(&mut BitReader::new(Cursor::new(comment_packet))) .expect("Couldn't read comment packet"); builder.read_setup_packet(&mut BitReader::new(Cursor::new(setup_packet))) .expect("Couldn't read setup packet"); let mut decoder = builder.build(); let mut sample_buf = Vec::with_capacity(decoder.header().frame_lens().long() * decoder.header().channel_count()); loop { let audio_packet = &[]; // Replace with real data. decoder.decode(&mut BitReader::new(Cursor::new(audio_packet))) .expect("Couldn't decode audio packet"); if decoder.samples().is_empty() { continue; } sample_buf.truncate(0); sample_buf.extend(decoder.samples().interleave() .map(|s| (s * 32767.0 + 0.5).floor() as i16)); // Do something with the sample_buf. }
Structs
BitReader | |
Bitrates | |
ChannelIter | |
Comments | |
Decoder |
Low-level Vorbis decoder. |
DecoderBuilder | |
FrameLens | |
Header | |
InterleavedSamplesIter | |
Samples |
Contains decoded sample data for all channels returned by the Decoder::decode() method. |
Enums
CommentTag | |
Error | |
ErrorKind | |
FrameKind |
Traits
BitRead |
A |
Type Definitions
Result |