summaryrefslogtreecommitdiffstats
path: root/test/grab.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/grab.c')
-rw-r--r--test/grab.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/test/grab.c b/test/grab.c
index 9f86069..1dd573f 100644
--- a/test/grab.c
+++ b/test/grab.c
@@ -23,28 +23,32 @@ int main(int argc, char *argv[])
val = 0;
handle_error(uca_cam_set_property(cam, UCA_PROP_DELAY, &val));
- val = 1;
- handle_error(uca_cam_set_property(cam, UCA_PROP_GRAB_SYNCHRONOUS, &val));
-
uint32_t width, height, bits;
handle_error(uca_cam_get_property(cam, UCA_PROP_WIDTH, &width, 0));
handle_error(uca_cam_get_property(cam, UCA_PROP_HEIGHT, &height, 0));
handle_error(uca_cam_get_property(cam, UCA_PROP_BITDEPTH, &bits, 0));
- handle_error(uca_cam_alloc(cam, 10));
+ handle_error(uca_cam_alloc(cam, 20));
const int pixel_size = bits == 8 ? 1 : 2;
uint16_t *buffer = (uint16_t *) malloc(width * height * pixel_size);
handle_error(uca_cam_start_recording(cam));
- handle_error(uca_cam_grab(cam, (char *) buffer, NULL));
- handle_error(uca_cam_stop_recording(cam));
- uca_destroy(u);
- FILE *fp = fopen("out.raw", "wb");
- fwrite(buffer, width*height, pixel_size, fp);
- fclose(fp);
+ uint32_t error = UCA_NO_ERROR;
+ char filename[FILENAME_MAX];
+ int counter = 0;
+ while (error == UCA_NO_ERROR) {
+ error = uca_cam_grab(cam, (char *) buffer, NULL);
+ snprintf(filename, FILENAME_MAX, "frame-%08i.raw", counter++);
+ FILE *fp = fopen(filename, "wb");
+ fwrite(buffer, width*height, pixel_size, fp);
+ fclose(fp);
+ }
+
+ handle_error(uca_cam_stop_recording(cam));
+ uca_destroy(u);
free(buffer);
return 0;
}