Home

Awesome

Rust FFI bindings to the minimp3_ex library

This crate provides raw FFI bindings to the minimp3_ex library for reading MP3 audio files.

Following the *-sys package conventions, the minimp3_ex-sys crate does not define higher-level abstractions over the native minimp3_ex library functions.

The minimp3 project (https://github.com/lieff/minimp3) provides two header-only libraries:

This crate provides bindings for all functions from both header files.

If you only need the minimp3.h functionality, you can also use the minimp3-sys crate.

There are also some higher-level crates based on minimp3.h:

And of course https://crates.io/ provides a multitude of further MP3-related libraries for Rust.

Usage

Add this to your Cargo.toml:

[dependencies]
minimp3_ex-sys = "0.1"

Features

The feature float-output changes the output data type (mp3d_sample_t) from i16 to f32.

WARNING: This feature doesn't behave like typical Cargo features because it is not additive. If multiple instances of minimp3_ex-sys appear in the dependency tree and at least one of them has the float-output feature enabled, it will be enabled for all instances (probably leading to compiler errors). Hopefully, this doesn't happen in practice.

The function mp3dec_f32_to_s16() is only available if the float-output feature is enabled.

The functions ending in _w are only available on Windows.

Building the minimp3_ex library

When building this crate, the minimp3_ex library is automatically built as well, using the cc crate.

Auto-generating the Rust bindings

The Rust bindings have already been auto-generated with bindgen (using the bindgen/run-bindgen.sh script) and are part of this crate (see src/bindings.rs).

Contributing

If you want to report a problem or suggest an improvement, please go to https://github.com/mgeier/minimp3_ex-sys. Contributions are always welcome!