From 65082825627714cc6a199c7bb69ad62de44b6f14 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 6 Aug 2024 17:35:52 +0300 Subject: [PATCH 1/3] misc/sensor: Add RAW flag. For sensors that only support bayer output. --- src/omv/common/sensor.h | 1 + src/omv/common/sensor_utils.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/omv/common/sensor.h b/src/omv/common/sensor.h index ec054f6ce..f4ca98007 100644 --- a/src/omv/common/sensor.h +++ b/src/omv/common/sensor.h @@ -261,6 +261,7 @@ typedef struct _sensor { uint32_t bayer : 3; // Bayer/CFA pattern. uint32_t yuv_order : 1; // YUV/YVU order. uint32_t blc_size : 4; // Number of black level calibration registers. + uint32_t raw : 1; // The sensor supports raw/Bayer output only. } hw_flags; const uint16_t *color_palette; // Color palette used for color lookup. diff --git a/src/omv/common/sensor_utils.c b/src/omv/common/sensor_utils.c index 0b270067c..0f623e172 100644 --- a/src/omv/common/sensor_utils.c +++ b/src/omv/common/sensor_utils.c @@ -727,6 +727,9 @@ __weak bool sensor_get_cropped() { } __weak uint32_t sensor_get_src_bpp() { + if (sensor.hw_flags.raw) { + return 1; + } switch (sensor.pixformat) { case PIXFORMAT_GRAYSCALE: return sensor.hw_flags.gs_bpp; From b93b43f50686ab32aaa3dc3a8c9b90407ac7eb27 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 6 Aug 2024 17:42:01 +0300 Subject: [PATCH 2/3] imlib: Fix raw framebuffer size. --- src/omv/imlib/framebuffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/omv/imlib/framebuffer.c b/src/omv/imlib/framebuffer.c index 9b356da46..73b5fac72 100644 --- a/src/omv/imlib/framebuffer.c +++ b/src/omv/imlib/framebuffer.c @@ -270,7 +270,7 @@ static uint32_t framebuffer_raw_buffer_size() { uint32_t size = (uint32_t) (fb_alloc_stack_pointer() - ((char *) framebuffer->data)); // We don't want to give all of the frame buffer RAM to the frame buffer. So, we will limit // the maximum amount of RAM we return. - uint32_t raw_buf_size = (&_fb_memory_end - &_fb_memory_start); + uint32_t raw_buf_size = (&_fb_memory_end - &_fb_memory_start - sizeof(framebuffer_t)); return IM_MIN(size, raw_buf_size); } From da4c686dc31dc549f88eabe51ee8a8f83a841881 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 6 Aug 2024 17:43:41 +0300 Subject: [PATCH 3/3] sensors/ov7725: Set bayer format. --- src/omv/sensors/ov7725.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/omv/sensors/ov7725.c b/src/omv/sensors/ov7725.c index 5263b0176..021a86054 100644 --- a/src/omv/sensors/ov7725.c +++ b/src/omv/sensors/ov7725.c @@ -683,6 +683,7 @@ int ov7725_init(sensor_t *sensor) { sensor->hw_flags.jpege = 0; sensor->hw_flags.gs_bpp = 2; sensor->hw_flags.rgb_swap = 1; + sensor->hw_flags.bayer = SENSOR_HW_FLAGS_BAYER_GBRG; sensor->hw_flags.yuv_order = SENSOR_HW_FLAGS_YVU422; sensor->hw_flags.blc_size = 8;