diff options
author | pommicket <pommicket@gmail.com> | 2025-02-24 22:34:55 -0500 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2025-02-25 15:16:08 -0500 |
commit | e6d427b9406d565bd3b6dc069f1941533adee34f (patch) | |
tree | 8508cd1fc322bb9f2d6d1345616f0b8fab0c7eb6 /camera.c | |
parent | 4eddb8e175255c47519a73c1aa6f1b982172a7e3 (diff) |
camera_framerate
Diffstat (limited to 'camera.c')
-rw-r--r-- | camera.c | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -30,6 +30,7 @@ struct Camera { bool streaming; int curr_frame_idx; int buffer_count; + int framerate; struct v4l2_buffer frame_buffer; CameraAccessMethod access_method; PictureFormat best_format; @@ -50,6 +51,10 @@ void camera_init(const GlProcs *procs) { gl = *procs; } +int camera_framerate(Camera *camera) { + return camera->framerate; +} + static int uint32_cmp_qsort(const void *av, const void *bv) { uint32_t a = *(const uint32_t *)av, b = *(const uint32_t *)bv; if (a < b) return -1; @@ -859,9 +864,13 @@ bool camera_set_format(Camera *camera, PictureFormat picfmt, int desired_framera }; if (v4l2_ioctl(camera->fd, VIDIOC_S_PARM, &stream_params) != 0) { perror("v4l2_ioctl VIDIOC_S_PARM"); - // even if we don't get the framerate we want, don't fail. + // NOTE: even if we don't get the framerate we want, don't fail, but do ensure our reported framerate is correct + v4l2_ioctl(camera->fd, VIDIOC_G_PARM, &stream_params); } - + // fuck you, fractional framerates + camera->framerate = stream_params.parm.capture.timeperframe.denominator / + stream_params.parm.capture.timeperframe.numerator; + //printf("image size = %uB\n",format.fmt.pix.sizeimage); switch (camera->access_method) { case CAMERA_ACCESS_READ: |