Line
Link Here
|
0 |
-- a/dc1394/juju/capture.c |
0 |
++ b/dc1394/juju/capture.c |
Lines 321-327
dc1394_juju_capture_dequeue (platform_camera_t * craw,
Link Here
|
321 |
|
321 |
|
322 |
struct { |
322 |
struct { |
323 |
struct fw_cdev_event_iso_interrupt i; |
323 |
struct fw_cdev_event_iso_interrupt i; |
324 |
__u32 headers[craw->packets_per_frame*2 + 16]; // HPK 20161209 |
324 |
__u32 *headers; |
325 |
} iso; |
325 |
} iso; |
326 |
|
326 |
|
327 |
if ( (policy<DC1394_CAPTURE_POLICY_MIN) || (policy>DC1394_CAPTURE_POLICY_MAX) ) |
327 |
if ( (policy<DC1394_CAPTURE_POLICY_MIN) || (policy>DC1394_CAPTURE_POLICY_MAX) ) |
Lines 333-352
dc1394_juju_capture_dequeue (platform_camera_t * craw,
Link Here
|
333 |
fds[0].fd = craw->iso_fd; |
333 |
fds[0].fd = craw->iso_fd; |
334 |
fds[0].events = POLLIN; |
334 |
fds[0].events = POLLIN; |
335 |
|
335 |
|
|
|
336 |
iso.headers = malloc(craw->packets_per_frame*2 + 16); // HPK 20161209 |
337 |
|
336 |
while (1) { |
338 |
while (1) { |
337 |
err = poll(fds, 1, (policy == DC1394_CAPTURE_POLICY_POLL) ? 0 : -1); |
339 |
err = poll(fds, 1, (policy == DC1394_CAPTURE_POLICY_POLL) ? 0 : -1); |
338 |
if (err < 0) { |
340 |
if (err < 0) { |
339 |
if (errno == EINTR) |
341 |
if (errno == EINTR) |
340 |
continue; |
342 |
continue; |
341 |
dc1394_log_error("poll() failed for device %s.", craw->filename); |
343 |
dc1394_log_error("poll() failed for device %s.", craw->filename); |
|
|
344 |
free(iso.headers); |
342 |
return DC1394_FAILURE; |
345 |
return DC1394_FAILURE; |
343 |
} else if (err == 0) { |
346 |
} else if (err == 0) { |
|
|
347 |
free(iso.headers); |
344 |
return DC1394_SUCCESS; |
348 |
return DC1394_SUCCESS; |
345 |
} |
349 |
} |
346 |
|
350 |
|
347 |
len = read (craw->iso_fd, &iso, sizeof iso); |
351 |
len = read (craw->iso_fd, &iso, sizeof iso); |
348 |
if (len < 0) { |
352 |
if (len < 0) { |
349 |
dc1394_log_error("Juju: dequeue failed to read a response: %m"); |
353 |
dc1394_log_error("Juju: dequeue failed to read a response: %m"); |
|
|
354 |
free(iso.headers); |
350 |
return DC1394_FAILURE; |
355 |
return DC1394_FAILURE; |
351 |
} |
356 |
} |
352 |
|
357 |
|
Lines 394-399
dc1394_juju_capture_dequeue (platform_camera_t * craw,
Link Here
|
394 |
|
399 |
|
395 |
*frame_return = &f->frame; |
400 |
*frame_return = &f->frame; |
396 |
|
401 |
|
|
|
402 |
free(iso.headers); |
403 |
|
397 |
return DC1394_SUCCESS; |
404 |
return DC1394_SUCCESS; |
398 |
} |
405 |
} |
399 |
|
406 |
|