You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Following the *-sys package conventions,
the minimp3_ex-sys crate does not define higher-level abstractions over
the native minimp3_ex library functions.
minimp3.h contains only the two functions mp3dec_init() and
mp3dec_decode_frame() (and the necessary type definitions).
minimp3_ex.h (which includes minimp3.h) is a bit less "mini" and contains
many more functions, including for opening files, seeking, using buffers,
using callback functions, ...
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).