diff options
Diffstat (limited to 'test/grab.c')
-rw-r--r-- | test/grab.c | 24 |
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; } |