#codec #encoder #decoder #free #adpcm #xbox #channel

无std xbadpcm

免费100% Rust Xbox ADPCM编解码器

2个版本

使用旧的Rust 2015

0.1.1 2022年11月7日
0.1.0 2022年11月6日

#257 in 无标准库

GPL-3.0-only

26KB
373

XbadPCM

安全(可选无std)Rust crate,用于编码和解码Xbox ADPCM块。

解码示例

以下是解码立体声音频的示例代码。

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());

编码示例

以下是编码立体声音频的示例代码。

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());

无std支持

该crate在无需Rust标准库的情况下也能完全正常工作,但它会自动启用以提供在向量上的 XboxADPCMEncodeSinkXboxADPCMDecodeSink 特性。

要禁用使用标准库,请在您的Cargo.toml中的依赖声明中添加 defaultfeatures = false。有关更多信息,请参阅功能 - Cargo手册

致谢

编码器基于David Bryant的ADPCM-XQ编码器,这是一个IMA-ADPCM编码器,可在GitHub上找到,地址为dbry/adpcm-xq

无运行时依赖

功能