int V4L2JpegEncoder::encodeImage(const ImageConfig *input) { int ret; TRACE(); output.width = input->width; output.height = input->height; ret = initDevice(V4L2_OUTPUT, input); if (ret < 0) { ERR("Failed to configure output stream"); return ret; } ret = initDevice(V4L2_CAPTURE, &output); if (ret < 0) { ERR("Failed to configure capture stream"); cleanupDevice(V4L2_OUTPUT); return ret; } ret = device->pollDevice(POLLIN | POLLERR, 1000); cleanupDevice(V4L2_OUTPUT); cleanupDevice(V4L2_CAPTURE); if (!(ret & POLLIN)) { ERR("No frames received before timeout"); return -1; } return 0; }
//--------------------------------------------------------------- void Device1394::fini() { MIRO_DBG(VIDEO, LL_DEBUG, "Device1394::fini()"); if (is_open_) { MIRO_DBG(VIDEO, LL_DEBUG, "Device1394::fini() close"); dc1394_stop_iso_transmission(handle_, p_camera_->node); dc1394_dma_unlisten(handle_, p_camera_); dc1394_dma_release_camera(handle_, p_camera_); is_open_ = false; } cleanupDevice(); }