use std::time::Instant; use playerone_sdk::Camera; use playerone_sdk::ImageFormat; pub fn main() { let camera_description = Camera::all_cameras() .into_iter() .nth(0) .expect("No cameras found"); let mut camera = camera_description.open().expect("opening camera"); println!("camera properties:\n{:#?}\n", camera.properties()); let bounds = camera.config_bounds(); println!("camera bounds:\n{:#?}\n", bounds); camera .set_image_format(ImageFormat::RAW8) .expect("setting image format"); camera.set_exposure(500, true).expect("setting exposure"); camera.set_gain(200, true).expect("setting gain"); camera .set_usb_bandwidth_limit(bounds.usb_bandwidth_limit.max) .expect("setting usb bandwidth limit"); camera .set_image_size( camera.properties().max_width, camera.properties().max_height, ) .expect("setting image size"); let mut last_time = Instant::now(); camera .stream(Some(1000), |camera, buffer| { print!("FPS: {:.2} \r", 1.0 / last_time.elapsed().as_secs_f64()); last_time = Instant::now(); true }) .expect("stream failed"); }