= Unified Camera Access = `libuca` is a thin wrapper to make the different cameras (via !CameraLink or PCIe) accessible in an easy way. == Specification == Properties of cameras are accessed in a vendor-neutral way by specifying the property names as defined in `uca.h`. The following list is the definite specification of basic properties that all devices must implement: ||= Property Name =||= Property String =||= Unit =||= Access =||= Meaning =|| || UCA_PROP_NAME || `name` || null-terminated C string || r || Name of camera || || UCA_PROP_WIDTH || `width` || pixels || r/w || Width of image to be taken || || UCA_PROP_HEIGHT || `height` || pixels || r/w || Height of image to be taken || || UCA_PROP_MAX_WIDTH || `max-width` || pixels || r || Maximum possible width || || UCA_PROP_MAX_HEIGHT || `max-height` || pixels || r || Maximum possible height || || UCA_PROP_BITDEPTH || `bit-depth` || number of bits || r || Bits per pixel || || UCA_PROP_EXPOSURE || `exposure` || microseconds || r/w || Duration of image capture || || UCA_PROP_FRAMERATE || `frame-rate` || frames per second || r || Current number of frames per second || == Code == Followingly, we will build libpco (the hardware-dependent pco.edge "driver") and libuca. First of all, get the sources {{{ #!sh cd some-empty-dir bzr clone bzr+ssh://user@ufo.kit.edu/vogelgesang/pco-diag libpco bzr clone bzr+ssh://user@ufo.kit.edu/vogelgesang/uca libuca }}} Make sure, that you have installed the Silicon Software [http://www.silicon-software.de/download.html Runtime Environment]. Then build and install libpco using {{{ #!sh mkdir build && cd build cmake ../libpco make && sudo make install }}} If everything went okay, you can try the `diagnose` program in the build directory. It tries to open the camera and frame grabber, prints out some information and stores one frame as `out.raw`. Finally, you can build libuca {{{ #!sh rm -rf * cmake ../libuca make }}} == Using libuca == The following test program is supplied with `libuca` and demonstrates the general functionality of the library: {{{ #!c #include #include "uca.h" int main(int argc, char *argv[]) { struct uca_t *uca = uca_init(); if (uca == NULL) { printf("Couldn't find a camera\n"); return 1; } uint32_t width = 800, height = 600; uca->cam_set_property(uca, UCA_PROP_WIDTH, &width); uca->cam_set_property(uca, UCA_PROP_HEIGHT, &height); char camera_name[256] = "foobar"; uca->cam_get_property(uca, UCA_PROP_NAME, camera_name); printf("Camera name: %s\n", camera_name); uca_destroy(uca); return 0; } }}}