generic-camera is a framework for implementing type-agnostic interfaces for cameras. generic-camera provides two fundamental traits, GenCamDriver and GenCam.
GenCamDriver defines functionality used to query a driver for available devices, their capabilities, and connect to a specific device.
GenCam defines functionality to query a specific driver for its capabilities (get_properties), which return a map of camera settings, along with legal values, controlled using the get_property and set_property functions.
start_exposure, image_ready and download_image functions allow non-blocking image capture, and capture blocks to return an image. generic-camera uses refimage::GenericImageRef to support arbitrary image encapsulation (u8, u16 and f32 data types) while being serdes compatible and supporting metadata.
GenCamCtrl encapsulates control of different aspects of a camera (serdes compatible).
GenCamCtrl::Deviceencapsulates device control,GenCamCtrl::Sensorencapsulates sensor controls, such as setting ROI, pixel bit depth, `GenCamCtrl::Triggerencapsulates trigger selection and settings,GenCamCtrl::Exposureencapsulates exposure control (such as exposure time, auto exposure)GenCamCtrl::FrameTimeencapsulates frame time controls (such as frame rate)GenCamCtrl::Analogcontrols analog features such as gain, white balance etc.GenCamCtrl::DigitalIocontrols digital I/O.
Property structs encapsulate allowed ranges and variants for the various controls. The API accepts concrete values through the PropertyValue struct. Both Property and PropertyValue are serdes compatible.
server: This optional feature exportsGenCamServer, a type that aggregates multiple cameras, accessed by ai32ID returned when the camera is inserted intoGenCamServer. Functions associated with a camera are called by passing in the appropriateGenSrvCmd, and the returns values are encapsulated inGenSrvValue.dummy: This optional feature exports a dummy camera throughGenCamDriverDummyandGenCamDummyto demonstrate the use of the API.