pub trait VideoPlayer: Send + Sync {
// Required methods
fn play(&mut self);
fn pause(&mut self);
fn stop(&mut self);
fn position(&self) -> u64;
fn duration(&self) -> Option<u64>;
fn surface_id(&self) -> u64;
fn poll_events(&mut self) -> Vec<VideoEvent>;
fn seek_to(&mut self, position_ms: u64);
fn set_rate(&mut self, rate: f32);
fn set_volume(&mut self, volume: f32);
fn set_muted(&mut self, muted: bool);
}