alac-encoder

Crates.ioalac-encoder
lib.rsalac-encoder
version0.3.0
sourcesrc
created_at2019-05-15 19:04:57.100923
updated_at2022-01-10 22:50:19.479205
descriptionRust port of Apple's open source ALAC library
homepage
repositoryhttps://github.com/LinusU/rust-alac-encoder
max_upload_size
id134560
size81,209
Linus Unnebäck (LinusU)

documentation

README

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

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.

Commit count: 78

cargo fmt