1 void 2 capture_frames (unicap_handle_t handle, int nframes) 3 { 4 unicap_format_t format; 5 unicap_data_buffer_t buffer; 6 int cframe = 0; 7 8 9 if (!SUCCESS (unicap_get_format (handle, &format))) 10 { 11 fprintf (stderr, "Failed to get video format!\n"); 12 exit (-1); 13 } 14 15 format.buffer_type = UNICAP_BUFFER_TYPE_USER; // (1) 16 17 if (!SUCCESS (unicap_set_format (handle, &format))) 18 { 19 fprintf (stderr, "Failed to set video format!\n"); 20 exit (-1); 21 } 22 23 buffer.data = malloc (format.buffer_size); // (2) 24 buffer.buffer_size = format.buffer_size; 25 26 unicap_start_capture (handle); // (4) 27 unicap_queue_buffer (handle, &buffer); // (3) 28 29 while (cframe < nframes) 30 { 31 unicap_data_buffer_t *returned_buffer; 32 if (!SUCCESS (unicap_wait_buffer (handle, &returned_buffer))) 33 { 34 fprintf (stderr, "Failed to wait for buffer!\n"); 35 exit (-1); 36 } 37 38 // (5) 39 40 if (!SUCCESS (unicap_queue_buffer (handle, returned_buffer))) 41 { 42 fprintf (stderr, "Failed to queue buffer!\n"); 43 exit (-1); 44 } 45 46 cframe++; 47 } 48 printf ("Captured %d frames!\n", nframes); 49 50 unicap_stop_capture (handle); // (6) 51 52 free (buffer.data); 53 }