#bindings #codec #decoder #multimedia #api-bindings #linker

cadeau

Idiomatic rust bindings to Cadeau library, performance primitives and media foundation functions

5 releases (breaking)

0.5.0 Dec 3, 2024
0.4.0 Jul 28, 2024
0.3.0 Jul 26, 2024
0.2.0 Jul 25, 2024
0.1.0 Jul 24, 2024

#249 in Images

Download history 127/week @ 2024-09-25 246/week @ 2024-10-02 49/week @ 2024-10-09 115/week @ 2024-10-16 216/week @ 2024-10-23 176/week @ 2024-10-30 309/week @ 2024-11-06 168/week @ 2024-11-13 209/week @ 2024-11-20 303/week @ 2024-11-27 438/week @ 2024-12-04 461/week @ 2024-12-11 432/week @ 2024-12-18 7/week @ 2024-12-25 197/week @ 2025-01-01 465/week @ 2025-01-08

1,252 downloads per month

MIT/Apache

48KB
986 lines

An efficient and idiomatic cadeau to Rust

Idiomatic wrapper around the Cadeau library: performance primitives and media foundation.

It’s possible to choose between dynamically loading the library and regular static / dynamic linking at build-time for a total of three options. See xmf-sys to learn more about this.

Example: generate a WebM file from a PNG image

use cadeau::xmf::image::Image;
use cadeau::xmf::recorder::Recorder;

fn main() -> Result<(), Box<dyn std::error::Error>> {
  #[cfg(feature = "dlopen")]
  unsafe { cadeau::xmf::init("libxmf.so")? };

  assert!(cadeau::xmf::is_init());

  let frame = Image::load_file("frame.png")?;

  let mut recorder = Recorder::builder(frame.width(), frame.height())
    .frame_rate(10)
    .init("output.webm")?;

  recorder.update_frame(frame.data(), 0, 0, frame.width(), frame.height(), frame.step())?;
  recorder.timeout();

  Ok(())
}

Dependencies

~0–4.5MB