4 releases (2 breaking)
0.3.0 | Jan 10, 2022 |
---|---|
0.2.0 | Oct 22, 2021 |
0.1.1 | May 15, 2019 |
0.1.0 | May 15, 2019 |
#238 in Compression
28 downloads per month
Used in lonelyradio
67KB
1K
SLoC
ALAC Encoder for Rust
Rust port of Apple's open source ALAC library.
Installation
This crate works with Cargo and is on crates.io.
Usage
use alac_encoder::{AlacEncoder, FormatDescription};
// Specify the input format as signed 16-bit raw PCM, 44100 Hz & 2 channels
let input_format = FormatDescription::pcm::<i16>(44100.0, 2);
// Specify the output format as 44100 Hz ALAC with a frame size of 4096 & 2 channels
let output_format = FormatDescription::alac(44100.0, 4096, 2);
// Initialize the encoder
let mut encoder = AlacEncoder::new(&output_format);
// Allocate a buffer for the encoder to write chunks to.
let mut output = vec![0u8; output_format.max_packet_size()];
// Get a hold of the source data, e.g. from a file
let pcm = fs::read("foobar.pcm").unwrap();
// Iterate over chunks from the input
for chunk in pcm.chunks(frame_size as usize * channels as usize * 2) {
// Feed the current chunk to the encoder
let size = encoder.encode(&input_format, &chunk, &mut output);
// Here you can do whatever you want with the result:
Vec::from(&output[0..size]);
}
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~87KB