Support UVC cameras somewhat
This commit is contained in:
@@ -129,16 +129,20 @@ libmegapixels_open(libmegapixels_camera *camera)
|
||||
return -1;
|
||||
}
|
||||
|
||||
camera->media_fd = open(camera->media_path, O_RDWR);
|
||||
if (camera->media_fd < 0) {
|
||||
log_error("Could not open %s: %s\n", camera->media_path, strerror(errno));
|
||||
return -1;
|
||||
if (camera->media_path) {
|
||||
camera->media_fd = open(camera->media_path, O_RDWR);
|
||||
if (camera->media_fd < 0) {
|
||||
log_error("Could not open %s: %s\n", camera->media_path, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
camera->sensor_fd = open(camera->sensor_path, O_RDWR);
|
||||
if (camera->sensor_fd < 0) {
|
||||
log_error("Could not open %s: %s\n", camera->sensor_path, strerror(errno));
|
||||
return -1;
|
||||
if (camera->sensor_path) {
|
||||
camera->sensor_fd = open(camera->sensor_path, O_RDWR);
|
||||
if (camera->sensor_fd < 0) {
|
||||
log_error("Could not open %s: %s\n", camera->sensor_path, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
camera->video_fd = open(camera->video_path, O_RDWR);
|
||||
@@ -147,9 +151,16 @@ libmegapixels_open(libmegapixels_camera *camera)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ret = load_entity_ids(camera);
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
// If this is an UVC camera the sensor _is_ the video device
|
||||
if (camera->sensor_fd == 0) {
|
||||
camera->sensor_fd = camera->video_fd;
|
||||
}
|
||||
|
||||
if (camera->media_fd > 0) {
|
||||
int ret = load_entity_ids(camera);
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -158,6 +169,11 @@ libmegapixels_open(libmegapixels_camera *camera)
|
||||
void
|
||||
libmegapixels_close(libmegapixels_camera *camera)
|
||||
{
|
||||
int uvc = 0;
|
||||
if (camera->sensor_fd != 0 && camera->sensor_fd == camera->video_fd) {
|
||||
uvc = 1;
|
||||
}
|
||||
|
||||
if (camera->media_fd != 0) {
|
||||
close(camera->media_fd);
|
||||
camera->media_fd = 0;
|
||||
@@ -165,6 +181,9 @@ libmegapixels_close(libmegapixels_camera *camera)
|
||||
if (camera->sensor_fd != 0) {
|
||||
close(camera->sensor_fd);
|
||||
camera->sensor_fd = 0;
|
||||
if (uvc) {
|
||||
camera->video_fd = 0;
|
||||
}
|
||||
}
|
||||
if (camera->video_fd != 0) {
|
||||
close(camera->video_fd);
|
||||
|
Reference in New Issue
Block a user