Crate xbadpcm

source ·
Expand description

Safe (and optionally no-std) Rust crate for encoding and decoding Xbox ADPCM blocks.

Decoding example

Here is example code for decoding stereo audio.

use xbadpcm::{XboxADPCMDecoder, XboxADPCMDecodeSink};

let adpcm_data = read_some_adpcm_blocks();
let mut output = [Vec::new(), Vec::new()];

// Two channels
let mut encoder = XboxADPCMDecoder::new(2, &mut output);

// Decode
encoder.decode(&adpcm_data).unwrap();

assert!(!output[0].is_empty() && output[0].len() == output[1].len());

Encoding example

Here is example code for encoding stereo audio.

use xbadpcm::{XboxADPCMEncoder, XboxADPCMEncodeSink};

let (left_channel, right_channel) = read_some_pcm_samples();
let mut output = Vec::new();

// Two channels with a lookahead of three samples
let mut encoder = XboxADPCMEncoder::new(2, 3, &mut output);

// Encode
encoder.encode(&[&left_channel, &right_channel]).unwrap();

// Finish encoding
encoder.finish().unwrap();

assert!(!output.is_empty());

Structs

Xbox ADPCM decoder implementation.
XboxADPCM encoder implementation.

Traits

Writer for outputting PCM samples.
Writer outputting ADPCM blocks.