use crate::frame::FrameBuffer;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy)]
pub enum VideoCodec {
VP9,
Mock,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DecodedFrame {
pub sequence_number: u64,
pub width: u32,
pub height: u32,
pub data: Vec<u8>,
}
pub trait Decodable: Send + Sync {
type Frame;
fn new(codec: VideoCodec, on_decoded_frame: Box<dyn Fn(Self::Frame) + Send + Sync>) -> Self
where
Self: Sized;
fn decode(&self, frame: FrameBuffer);
}
#[cfg(feature = "native")]
mod native;
#[cfg(feature = "native")]
pub use self::native::NativeDecoder as Decoder;
#[cfg(feature = "wasm")]
mod wasm;
#[cfg(feature = "wasm")]
pub use self::wasm::WasmDecoder;