#mp3 #decoder #c #bindings #port #pure-rust #attempt

bin+lib rinimp3

An attempt to make a pure-Rust MP3 decoder, based on minimp3

1 unstable release

Uses old Rust 2015

0.1.0 Oct 8, 2018




An attempt to make a port of lieff's minimp3 to Rust. The goal is basically to make the minimp3-rs crate, bindings to the C library, unnecessary.

There is a write-up of the translation process here.

First step is to just duplicate it as closely as possible, including passing its tests and fuzzing. Next step would be to smooth its API out and make it more Rusty; https://github.com/germangb/minimp3-rs might be useful for inspiration.

Current status: about 90% translated, but there's still some panics lurking in the test cases. I need to find a nice few days and just finish it off.

Differences from minimp3:

  • i16 output only
  • No SIMD
  • No conditional compilation -- basically should operate as if the following flags are defined:
  • #define MINIMP3_NO_SIMD


~69K SLoC