From 6de83f98c5f4d5fb696f413aa9dbe49ab4515661 Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Thu, 17 Mar 2011 15:38:38 +0100 Subject: Expose grab-by-callback via camera and add asynchronous grabbing example --- test/CMakeLists.txt | 2 ++ test/grab-async.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 test/grab-async.c (limited to 'test') diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3ea7414..287f9ea 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,9 +15,11 @@ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/control.glade # --- Build targets ----------------------------------------------------------- add_executable(enum enum.c) add_executable(grab grab.c) +add_executable(grab-async grab-async.c) target_link_libraries(enum uca) target_link_libraries(grab uca) +target_link_libraries(grab-async uca) if (GTK2_FOUND) include_directories(${GTK2_INCLUDE_DIRS}) 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 +#include +#include +#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; +} -- cgit v1.2.3