use super::ioctl;
pub(crate) enum CapKind {
Yuv444Packed,
Grey,
Nv12,
}
pub(crate) fn classify(fourcc: u32) -> Option<CapKind> {
match fourcc {
ioctl::V4L2_PIX_FMT_YUV24 => Some(CapKind::Yuv444Packed),
ioctl::V4L2_PIX_FMT_GREY => Some(CapKind::Grey),
ioctl::V4L2_PIX_FMT_NV12 | ioctl::V4L2_PIX_FMT_NV12M => Some(CapKind::Nv12),
_ => None,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn classify_maps_known_capture_formats() {
assert!(matches!(
classify(ioctl::V4L2_PIX_FMT_YUV24),
Some(CapKind::Yuv444Packed)
));
assert!(matches!(
classify(ioctl::V4L2_PIX_FMT_GREY),
Some(CapKind::Grey)
));
assert!(matches!(
classify(ioctl::V4L2_PIX_FMT_NV12),
Some(CapKind::Nv12)
));
assert!(matches!(
classify(ioctl::V4L2_PIX_FMT_NV12M),
Some(CapKind::Nv12)
));
assert!(classify(ioctl::V4L2_PIX_FMT_YUYV).is_none());
}
}