jiixyj / libebur128

A library implementing the EBU R128 loudness standard.
MIT License
402 stars 76 forks source link

Rust-Bindings #98

Open upachler opened 5 years ago

upachler commented 5 years ago

Hello,

I'd like to draw attention to a little side project of mine, which provides rust bindings for libebur128. This is in very early stages of development, of course, but almost all library functions are already made available. The binding intends to be 'Rust-safe', which means that it wraps (in Rust eyes) unsafe C functions in safe Rust constructs (State struct and associated functions, raw buffer pointers in array slices).

I'd be more than happy about feedback, and, if you guys approve, a link from here to the rust binding.

sdroege commented 4 years ago

Sorry I just saw this issue now.

I also made Rust bindings for this and uploaded them to crates.io a few months ago. The initial versions up to 0.1.1 were plain bindings that shipped/built the C library internally, 0.1.2 and above are a pure Rust port of this library with a compatible API/ABI, the same results and basically the same performance. It can also be built as a C library that works as a drop-in replacement of the C libebur128.

upachler commented 4 years ago

I guess that obsoletes my library then :)

..but no hard feelings - on the contrary: It's great to have a pure rust version of the library from yourself, the original author!

sdroege commented 4 years ago

I'm not the original author of libebur128, that's @jiixyj :)

If you think there's anything that could be made nicer in my version (API or implementation-wise), especially if it doesn't work for your use-cases, please let me know!

FWIW, I did this as part of implementing a loudness normalization filter for GStreamer based on the ffmpeg loudnorm filter. More details about that here if you're interested.