5个版本
0.2.0 | 2023年9月24日 |
---|---|
0.1.3 | 2023年9月24日 |
0.1.2 | 2023年9月23日 |
0.1.1 | 2023年9月23日 |
0.1.0 | 2023年9月23日 |
#1020 in 音频
每月22次下载
305KB
5.5K SLoC
ThreePM-rs
Rust对ThreePM的绑定——这是一个用C编写的定点MP3解码库。
它支持解码所有MP3 CBR文件。VBR目前不支持。
使用
将threepm
添加到您的Cargo.toml
cargo add threepm
如果您正在运行访问闪存速度较慢的目标(例如RP2040),您可以尝试启用code-in-ram
功能以提高性能。
cargo add threepm --features threepm/code-in-ram
这使用链接器技巧将一些性能关键代码放入RAM中——请注意,这不是所有目标都适用,GCC在链接过程中会发出一些关于它认为不应驻留在RAM中的符号的警告。
构建
此crate将在构建过程中编译ThreePM——这意味着您需要告诉Rust您的C编译器!对于cortex-m目标,您的路径上需要有arm-none-eabi-
工具链,因为这将是目标默认设置。对于riscv目标,您还需要有一个环境变量来公开C编译器的名称。对于https://github.com/riscv-collab/riscv-gnu-toolchain/releases或https://www.embecosm.com/resources/tool-chain-downloads/
CC=riscv32-unknown-elf-gcc cargo run --release
或对于xPack riscv gcc工具链 https://xpack.github.io/dev-tools/riscv-none-elf-gcc/releases/
CC=riscv-none-elf-gcc cargo run --release
开发
如果您更新或添加了ThreePM的接口,您将需要更新Rust绑定。要这样做,安装bindgen-cli并从该项目的根目录运行./ffi/bindgen.sh
。
测试
为了测试这个库,我推荐在以下地址可用的测试样本
https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/en/latest/design-guide/audio-samples.html
项目中 examples
路径下的示例已经配置为运行 Espressif 音频样本页面上的简短 2 通道示例。如果您已安装 wget
,可以从本项目的根目录运行以下命令来获取此样本
wget https://dl.espressif.com/dl/audio/gs-16b-2c-44100hz.mp3
许可证
依赖项
~225KB