summaryrefslogtreecommitdiff
path: root/camera.c
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2025-02-20 10:02:58 -0500
committerpommicket <pommicket@gmail.com>2025-02-20 10:02:58 -0500
commite19574ce7766cd754b42808c36cc88fd0f510033 (patch)
tree340f3dd0c7c0aefc300cd9d2c1a318eaf4615927 /camera.c
parent013bdece5092db18767fbbc9d46951ad9a295943 (diff)
optimization for MJPEG->JPEG saving
Diffstat (limited to 'camera.c')
-rw-r--r--camera.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/camera.c b/camera.c
index f2c43f5..a8872b4 100644
--- a/camera.c
+++ b/camera.c
@@ -336,6 +336,16 @@ static uint8_t *curr_frame_rgb24(Camera *camera) {
}
bool camera_save_jpg(Camera *camera, const char *name, int quality) {
+ if (camera_pixel_format(camera) == V4L2_PIX_FMT_MJPEG && camera_curr_frame(camera)) {
+ // frame is already in jpeg format
+ FILE *fp = fopen(name, "wb");
+ if (!fp) {
+ perror("fopen");
+ return false;
+ }
+ fwrite(camera_curr_frame(camera), 1, camera->frame_bytes_set, fp);
+ fclose(fp);
+ }
uint8_t *frame = curr_frame_rgb24(camera);
if (frame) {
uint32_t frame_width = camera_frame_width(camera);