Crate mp3lame_encoder

Source
Expand description

High level wrapper over mp3lame-sys

§Example

use mp3lame_encoder::{Builder, Id3Tag, DualPcm, FlushNoGap};

let mut mp3_encoder = Builder::new().expect("Create LAME builder");
mp3_encoder.set_num_channels(2).expect("set channels");
mp3_encoder.set_sample_rate(44_100).expect("set sample rate");
mp3_encoder.set_brate(mp3lame_encoder::Bitrate::Kbps192).expect("set brate");
mp3_encoder.set_quality(mp3lame_encoder::Quality::Best).expect("set quality");
mp3_encoder.set_id3_tag(Id3Tag {
    title: b"My title",
    artist: &[],
    album: b"My album",
    album_art: &[],
    year: b"Current year",
    comment: b"Just my comment",
});
let mut mp3_encoder = mp3_encoder.build().expect("To initialize LAME encoder");

//use actual PCM data
let input = DualPcm {
    left: &[0u16, 0],
    right: &[0u16, 0],
};

let mut mp3_out_buffer = Vec::new();
mp3_out_buffer.reserve(mp3lame_encoder::max_required_buffer_size(input.left.len()));
let encoded_size = mp3_encoder.encode(input, mp3_out_buffer.spare_capacity_mut()).expect("To encode");
unsafe {
    mp3_out_buffer.set_len(mp3_out_buffer.len().wrapping_add(encoded_size));
}

let encoded_size = mp3_encoder.flush::<FlushNoGap>(mp3_out_buffer.spare_capacity_mut()).expect("to flush");
unsafe {
    mp3_out_buffer.set_len(mp3_out_buffer.len().wrapping_add(encoded_size));
}
//At this point your mp3_out_buffer should have full MP3 data, ready to be written on file system or whatever

Re-exports§

pub use Bitrate as Birtate;
pub use mp3lame_sys as ffi;

Structs§

Builder
Builder of C LAME encoder.
DualPcm
PCM data represented by two channels.
Encoder
LAME Encoder.
FlushGap
Performs flush, padding gaps with 0
FlushNoGap
Performs flush, padding it with ancillary data
Id3Tag
ID3 tag as raw bytes.
InterleavedPcm
PCM data in interleaved form
MonoPcm
PCM data with only 1 channel

Enums§

Bitrate
Enumeration of valid values for set_brate
BuildError
Encoder builder errors
EncodeError
Encoder errors
Id3TagError
ID3 setter errors
Mode
Possible modes for encoder
Quality
Possible quality parameter. From best(0) to worst(9)
VbrMode
Possible VBR types

Constants§

MAX_ALBUM_ART_SIZE
Maximum size of album art

Traits§

EncoderFlush
Flush method.
EncoderInput
Type of PCM input for encoder

Functions§

encoder
Creates default encoder with 192kbps bitrate and best possible quality.
max_required_buffer_size
Calculates maximum required size for specified number of samples.