2个版本
使用旧的Rust 2015
0.1.1 | 2022年11月7日 |
---|---|
0.1.0 | 2022年11月6日 |
#257 in 无标准库
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标准库的情况下也能完全正常工作,但它会自动启用以提供在向量上的 XboxADPCMEncodeSink
和 XboxADPCMDecodeSink
特性。
要禁用使用标准库,请在您的Cargo.toml中的依赖声明中添加 defaultfeatures = false
。有关更多信息,请参阅功能 - Cargo手册。
致谢
编码器基于David Bryant的ADPCM-XQ编码器,这是一个IMA-ADPCM编码器,可在GitHub上找到,地址为dbry/adpcm-xq。