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::Birtate::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",
    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 mp3lame_sys as ffi;

Structs

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

Enums

Enumeration of valid values for set_brate
Encoder builder errors
Encoder errors
Possible modes for encoder
Possible quality parameter. From best(0) to worst(9)
Possible VBR types

Traits

Flush method.
Type of PCM input for encoder

Functions

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