pub use nokhwa::{
NokhwaError as CameraError,
utils::{
CameraIndex,
CameraInfo,
},
};
use nokhwa::{
query as nokhwa_query,
utils::ApiBackend,
};
#[derive(Clone, Debug, PartialEq, Eq, Hash, Default)]
pub enum CameraFormat {
#[default]
HighestFrameRate,
HighestResolution,
Resolution { width: u32, height: u32 },
Exact {
width: u32,
height: u32,
frame_rate: u32,
},
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct CameraConfig {
pub device: CameraIndex,
pub format: CameraFormat,
}
impl Default for CameraConfig {
fn default() -> Self {
Self {
device: CameraIndex::Index(0),
format: CameraFormat::default(),
}
}
}
impl CameraConfig {
pub fn new() -> Self {
Self::default()
}
pub fn device(mut self, device: CameraIndex) -> Self {
self.device = device;
self
}
pub fn format(mut self, format: CameraFormat) -> Self {
self.format = format;
self
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct StreamInfo {
pub width: u32,
pub height: u32,
pub frame_rate: u32,
}
pub fn query() -> Result<Vec<CameraInfo>, CameraError> {
nokhwa_query(ApiBackend::Auto)
}