mpv-client-dyn 0.5.0

Bindings for libmpv client API that allow you to create plugins for MPV in Rust
Documentation

MPV plugins in Rust

Bindings for libmpv client API that allow you to create plugins for MPV in Rust.

This is a fork of TheCactusVert/mpv-client that supports developing mpv c plugins on windows.

Currently, this crate is compatible with the original one.

Example

Here is an example for your Cargo.toml:

[package]
name = "mpv-plugin"
version = "0.1.0"
edition = "2021"

[lib]
name = "mpv_plugin"
crate-type = ["cdylib"]

[dependencies]
mpv-client-dyn = "0.5.0"

And then the code src/lib.rs:

use mpv_client_dyn::{mpv_handle, Event, Handle};

#[no_mangle]
extern "C" fn mpv_open_cplugin(handle: *mut mpv_handle) -> std::os::raw::c_int {
  let client = Handle::from_ptr(handle);
  
  println!("Hello world from Rust plugin {}!", client.name());
  
  loop {
    match client.wait_event(-1.) {
      Event::Shutdown => { return 0; },
      event => { println!("Got event: {}", event); },
    }
  }
}

You can find more examples in C and Rust.