diff options
| -rw-r--r-- | src/grabbers/me4.c | 2 | ||||
| -rw-r--r-- | test/grab-async.c | 37 | 
2 files changed, 27 insertions, 12 deletions
| diff --git a/src/grabbers/me4.c b/src/grabbers/me4.c index 874df32..aea67f0 100644 --- a/src/grabbers/me4.c +++ b/src/grabbers/me4.c @@ -154,7 +154,7 @@ uint32_t uca_me4_grab(struct uca_grabber *grabber, void **buffer, uint32_t *fram  static int uca_me4_callback(frameindex_t frame, struct fg_apc_data *apc)  { -    apc->callback(frame, Fg_getImagePtr(apc->fg, frame, PORT_A), apc->meta_data, apc->user); +    apc->callback(frame, Fg_getImagePtrEx(apc->fg, frame, PORT_A, apc->mem), apc->meta_data, apc->user);      return 0;  } diff --git a/test/grab-async.c b/test/grab-async.c index 1e0a90b..5f3694e 100644 --- a/test/grab-async.c +++ b/test/grab-async.c @@ -5,9 +5,24 @@  #include "uca.h"  #include "uca-cam.h" +struct image_props { +    uint32_t width; +    uint32_t height; +    uint32_t bits; +}; +  void grab_callback(uint32_t image_number, void *buffer, void *meta_data, void *user)  { -    printf("got picture number %i\n", image_number); +    struct image_props *props = (struct image_props *) user; +    const int pixel_size = props->bits == 8 ? 1 : 2; +    char filename[256]; + +    sprintf(filename, "out-%04i.raw", image_number); +    FILE *fp = fopen(filename, "wb"); +    fwrite(buffer, props->width * props->height, pixel_size, fp); +    fclose(fp); + +    printf("grabbed picture %i at %p (%ix%i @ %i bits)\n", image_number, buffer, props->width, props->height, props->bits);  }  int main(int argc, char *argv[]) @@ -21,25 +36,25 @@ int main(int argc, char *argv[])      /* take first camera */      struct uca_camera *cam = u->cameras; -    uint32_t val = 1; +    uint32_t val = 5000;      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); +    struct image_props props; +    cam->get_property(cam, UCA_PROP_WIDTH, &props.width, 0); +    cam->get_property(cam, UCA_PROP_HEIGHT, &props.height, 0); +    cam->get_property(cam, UCA_PROP_BITDEPTH, &props.bits, 0);      uca_cam_alloc(cam, 10); -    cam->register_callback(cam, &grab_callback, NULL); +    cam->register_callback(cam, &grab_callback, &props);      cam->start_recording(cam); -    printf("waiting for 5 seconds\n"); -    sleep(5); +    printf("grabbing for 2 seconds\n"); +    sleep(2);      cam->stop_recording(cam); +    printf("done\n"); +    fflush(stdout);      uca_destroy(u);      return 0; | 
