diff options
author | Matthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de> | 2011-03-17 15:38:38 +0100 |
---|---|---|
committer | Matthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de> | 2011-03-17 15:38:38 +0100 |
commit | 6de83f98c5f4d5fb696f413aa9dbe49ab4515661 (patch) | |
tree | 50095a8f5d39e6c2ad4fa91e06940873e9f1993c /test | |
parent | 65a2016becbb165afa4fdf16742f3586f83d0f30 (diff) | |
download | libuca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.tar.gz libuca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.tar.bz2 libuca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.tar.xz libuca-6de83f98c5f4d5fb696f413aa9dbe49ab4515661.zip |
Expose grab-by-callback via camera and add asynchronous grabbing example
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 2 | ||||
-rw-r--r-- | test/grab-async.c | 46 |
2 files changed, 48 insertions, 0 deletions
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 <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; +} |