summaryrefslogtreecommitdiff
path: root/camera.c
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2025-02-24 23:56:53 -0500
committerpommicket <pommicket@gmail.com>2025-02-25 15:16:08 -0500
commite8c5a90014982f423fbdcd3f8b3e7edacdb4b91c (patch)
tree8ecea8dfe07421691707aa7a20d527d544e7b373 /camera.c
parentcfd34de0dbedc7c2aca2c03853ddbd4489a1244e (diff)
adjustable framerate
Diffstat (limited to 'camera.c')
-rw-r--r--camera.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/camera.c b/camera.c
index 871a06a..ed0510d 100644
--- a/camera.c
+++ b/camera.c
@@ -251,6 +251,10 @@ uint32_t *camera_get_pixfmts(Camera *camera) {
PictureFormat camera_closest_picfmt(Camera *camera, PictureFormat desired) {
PictureFormat best_format = {0};
int32_t best_score = INT32_MIN;
+ if (desired.pixfmt == 0) {
+ // sensible default
+ desired.pixfmt = V4L2_PIX_FMT_RGB24;
+ }
arr_foreach_ptr(camera->formats, const PictureFormat, fmt) {
int32_t score = 0;
if (fmt->pixfmt != desired.pixfmt) {
@@ -796,7 +800,8 @@ bool camera_set_format(Camera *camera, PictureFormat picfmt, int desired_framera
}
if (!force
&& camera->access_method == access
- && picture_format_cmp_qsort((PictureFormat[1]) { camera_picture_format(camera) }, &picfmt) == 0) {
+ && picture_format_cmp_qsort((PictureFormat[1]) { camera_picture_format(camera) }, &picfmt) == 0
+ && (desired_framerate == 0 || camera->framerate == desired_framerate)) {
// no changes needed
return true;
}