use crate::{ImageEncodingError, MatView};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum EncodingKind {
Jpeg,
Webp,
None,
}
impl EncodingKind {
pub const fn name(self) -> &'static str {
match self {
Self::Jpeg => "jpeg",
Self::Webp => "webp",
Self::None => "none",
}
}
}
pub trait ImageEncoderPort: Send + Sync {
fn encode(
&self,
frame: &dyn MatView,
kind: EncodingKind,
) -> Result<Vec<u8>, ImageEncodingError>;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn encoding_kind_names() {
assert_eq!(EncodingKind::Jpeg.name(), "jpeg");
assert_eq!(EncodingKind::Webp.name(), "webp");
assert_eq!(EncodingKind::None.name(), "none");
}
}