Skip to content

Commit 1676e32

Browse files
committed
drivers: video: sw_isp: introduce a software-based ISP
This adds a driver that converts video frames submitted into a different format, which supports bayer (RGGB8, BGGR8, GRBG8, GBRG8), RGB24, RGB565, YUYV input format and can convert them to RGB24 RGB565, and YUYV. Setting the video input and output formats will control the format conversion done by this software device. Signed-off-by: Josuah Demangeon <[email protected]>
1 parent c6ac843 commit 1676e32

File tree

5 files changed

+505
-0
lines changed

5 files changed

+505
-0
lines changed

drivers/video/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ zephyr_library_sources(video_common.c)
77
zephyr_library_sources_ifdef(CONFIG_VIDEO_MCUX_CSI video_mcux_csi.c)
88
zephyr_library_sources_ifdef(CONFIG_VIDEO_MCUX_MIPI_CSI2RX video_mcux_mipi_csi2rx.c)
99
zephyr_library_sources_ifdef(CONFIG_VIDEO_SW_GENERATOR video_sw_generator.c)
10+
zephyr_library_sources_ifdef(CONFIG_VIDEO_SW_ISP video_sw_isp.c)
1011
zephyr_library_sources_ifdef(CONFIG_VIDEO_MT9M114 mt9m114.c)
1112
zephyr_library_sources_ifdef(CONFIG_VIDEO_OV7725 ov7725.c)
1213
zephyr_library_sources_ifdef(CONFIG_VIDEO_OV2640 ov2640.c)

drivers/video/Kconfig

+2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ source "drivers/video/Kconfig.mcux_mipi_csi2rx"
5858

5959
source "drivers/video/Kconfig.sw_generator"
6060

61+
source "drivers/video/Kconfig.sw_isp"
62+
6163
source "drivers/video/Kconfig.mt9m114"
6264

6365
source "drivers/video/Kconfig.ov7725"

drivers/video/Kconfig.sw_isp

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Copyright (c) 2025 tinyVision.ai Inc.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config VIDEO_SW_ISP
5+
bool "Video Software Image Signal Processor (ISP)"
6+
imply PIXEL
7+
help
8+
Enable a software-based image processing pipeline, providing the essential components
9+
of an Image Signal Processsor (ISP) exposing the essential features of the "pixel"
10+
library as a native Video API.
11+
12+
config VIDEO_SW_ISP_STACK_SIZE
13+
int "Stack size for the thread executing the pipelne"
14+
default 1024
15+
help
16+
Stack size for the thread executing the pipeline. All of the processing elements are not
17+
allocated on the stack but use global variables instead. The default value is therefore
18+
planning only for the temporary variables.
19+
20+
config VIDEO_SW_ISP_THREAD_PRIORITY
21+
int "Stack size for the thread executing the pipelne"
22+
default 5
23+
help
24+
Priority for the thread executing the pipeline. The default value is an intermediate
25+
starting point to be tuned arbitrarily to fit the application.
26+
27+
config VIDEO_SW_ISP_INPUT_WIDTH
28+
int "Width of the input of the pipeline in pixels, used for buffer allocation purposees."
29+
default 640
30+
help
31+
The default value is VGA width, a widespread default resolution supported broadly.
32+
33+
config VIDEO_SW_ISP_INPUT_HEIGHT
34+
int "Height of the input of the pipeline in pixels, used for buffer allocation purposees."
35+
default 480
36+
help
37+
The default value is VGA height, a widespread default resolution supported broadly.

0 commit comments

Comments
 (0)