summaryrefslogtreecommitdiffstats
path: root/test/grab-async.c
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-03-17 15:38:38 +0100
committerMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-03-17 15:38:38 +0100
commit6de83f98c5f4d5fb696f413aa9dbe49ab4515661 (patch)
tree50095a8f5d39e6c2ad4fa91e06940873e9f1993c /test/grab-async.c
parent65a2016becbb165afa4fdf16742f3586f83d0f30 (diff)
downloaduca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.tar.gz
uca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.tar.bz2
uca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.tar.xz
uca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.zip
Expose grab-by-callback via camera and add asynchronous grabbing example
Diffstat (limited to 'test/grab-async.c')
-rw-r--r--test/grab-async.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/grab-async.c b/test/grab-async.c
new file mode 100644
index 0000000..8086d92
--- /dev/null
+++ b/test/grab-async.c
@@ -0,0 +1,46 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "uca.h"
+#include "uca-cam.h"
+
+void grab_callback(uint32_t image_number, void *buffer)
+{
+ printf("got picture number %i\n", image_number);
+}
+
+int main(int argc, char *argv[])
+{
+ struct uca *u = uca_init(NULL);
+ if (u == NULL) {
+ printf("Couldn't find a camera\n");
+ return 1;
+ }
+
+ /* take first camera */
+ struct uca_camera *cam = u->cameras;
+
+ uint32_t val = 1;
+ cam->set_property(cam, UCA_PROP_EXPOSURE, &val);
+ val = 0;
+ cam->set_property(cam, UCA_PROP_DELAY, &val);
+ val = 10;
+ cam->set_property(cam, UCA_PROP_FRAMERATE, &val);
+
+ uint32_t width, height, bits;
+ cam->get_property(cam, UCA_PROP_WIDTH, &width, 0);
+ cam->get_property(cam, UCA_PROP_HEIGHT, &height, 0);
+ cam->get_property(cam, UCA_PROP_BITDEPTH, &bits, 0);
+
+ uca_cam_alloc(cam, 10);
+
+ cam->register_callback(cam, &grab_callback);
+ cam->start_recording(cam);
+ printf("waiting for 10 seconds\n");
+ sleep(10);
+ cam->stop_recording(cam);
+
+ uca_destroy(u);
+ return 0;
+}