Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions capture.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ static void log_stderr(camera_log_t type, const char* msg, void* pointer) {
}
}

static bool error(camera_t* camera, const char * msg)
static bool error(const camera_t* camera, const char * msg)
{
camera->context.log(CAMERA_ERROR, msg, camera->context.pointer);
return false;
}
static bool failure(camera_t* camera, const char * msg)
static bool failure(const camera_t* camera, const char * msg)
{
camera->context.log(CAMERA_FAIL, msg, camera->context.pointer);
return false;
Expand Down Expand Up @@ -464,19 +464,20 @@ camera_controls_menus(const camera_t* camera, camera_control_t* control)
qmenu.index = mindex;
if (ioctl(camera->fd, VIDIOC_QUERYMENU, &qmenu) == 0) {
copy(&control->menus.head[mindex], &qmenu);
} else {
error(camera, "VIDIOC_QUERYMENU");
}
}
}
static camera_control_t*
camera_controls_query(const camera_t* camera, camera_control_t* control_list)
{
camera_control_t* control_list_last = control_list;
struct v4l2_queryctrl qctrl;

for (uint32_t cid = V4L2_CID_USER_BASE; cid < V4L2_CID_LASTP1; cid++) {
struct v4l2_queryctrl qctrl;
memset(&qctrl, 0, sizeof qctrl);
qctrl.id = cid;
if (ioctl(camera->fd, VIDIOC_QUERYCTRL, &qctrl) == -1) continue;
for (qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
ioctl(camera->fd, VIDIOC_QUERYCTRL, &qctrl) == 0;
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL) {
camera_control_t* control = control_list_last++;
control->id = qctrl.id;
memcpy(control->name, qctrl.name, sizeof qctrl.name);
Expand All @@ -500,7 +501,7 @@ camera_controls_query(const camera_t* camera, camera_control_t* control_list)
}
camera_controls_t* camera_controls_new(const camera_t* camera)
{
camera_control_t control_list[V4L2_CID_LASTP1 - V4L2_CID_USER_BASE];
camera_control_t control_list[V4L2_CID_MAX_CTRLS]; // It can't be a higher qty :P
camera_control_t* control_list_last =
camera_controls_query(camera, control_list);
camera_controls_t* controls = malloc(sizeof (camera_controls_t));
Expand Down