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 | |
parent | 4eddb8e175255c47519a73c1aa6f1b982172a7e3 (diff) |
camera_framerate
-rw-r--r-- | camera.c | 13 | ||||
-rw-r--r-- | camera.h | 1 |
2 files changed, 12 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: @@ -109,6 +109,7 @@ PictureFormat *camera_get_resolutions_with_pixfmt(Camera *camera, uint32_t pixfm uint32_t *camera_get_pixfmts(Camera *camera); PictureFormat camera_closest_picfmt(Camera *camera, PictureFormat picfmt); uint64_t camera_framerates_supported(Camera *camera); +int camera_framerate(Camera *camera); int32_t camera_frame_width(Camera *camera); int32_t camera_frame_height(Camera *camera); PictureFormat camera_picture_format(Camera *camera); |