From ce5266a7d90c9c8fca334bd62bf0559f6c47151c Mon Sep 17 00:00:00 2001 From: Alain Volmat Date: Mon, 13 Oct 2025 20:31:16 +0200 Subject: [PATCH 1/5] boards: st: stm32n6570_dk: enable the venc driver The stm32n6570_dk device-tree describing the hardware available on this board, the Video ENCoder (VENC) status should be enabled, and its usage should be enabled or not based on the sample / application configuration. Signed-off-by: Alain Volmat --- boards/st/stm32n6570_dk/stm32n6570_dk_common.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/boards/st/stm32n6570_dk/stm32n6570_dk_common.dtsi b/boards/st/stm32n6570_dk/stm32n6570_dk_common.dtsi index f8675e78e2661..fa75bbd35b908 100644 --- a/boards/st/stm32n6570_dk/stm32n6570_dk_common.dtsi +++ b/boards/st/stm32n6570_dk/stm32n6570_dk_common.dtsi @@ -517,3 +517,7 @@ csi_interface: &dcmipp { csi_ep_in: endpoint {}; }; }; + +&venc { + status = "okay"; +}; From e73b777bb911970af42573c3a45bd0627842fd4e Mon Sep 17 00:00:00 2001 From: Alain Volmat Date: Mon, 13 Oct 2025 20:39:58 +0200 Subject: [PATCH 2/5] drivers: video: add encoders related Kconfig entries Add video subsystem related Kconfig in order to allow an application to enable encoder support. This is useful for platforms having several video devices available as well as several video encoders, since it allows to only compile / enable part of those devices depending on their kind. Signed-off-by: Alain Volmat --- drivers/video/Kconfig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 9d7fa8417b35d..e8f7c321cb02e 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -58,6 +58,12 @@ config VIDEO_I2C_RETRY_NUM The default is to not retry. Board configuration files or user project can then use the number of retries that matches their situation. +config VIDEO_ENCODER_H264 + bool "H264 video encoder support" + +config VIDEO_ENCODER_JPEG + bool "JPEG video encoder support" + source "drivers/video/Kconfig.esp32_dvp" source "drivers/video/Kconfig.mcux_csi" From 7b10331cfa8dd719f9297c4f2bc46bc253bdec3e Mon Sep 17 00:00:00 2001 From: Alain Volmat Date: Mon, 13 Oct 2025 20:43:12 +0200 Subject: [PATCH 3/5] drivers: video: stm32-venc: depends on VIDEO_ENCODER_H264 Make the STM32 VENC driver depends on the VIDEO_ENCODER_H264 in order to be compiled only if VIDEO_ENCODER_H264 is enabled by an application. Signed-off-by: Alain Volmat --- drivers/video/Kconfig.stm32_venc | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/video/Kconfig.stm32_venc b/drivers/video/Kconfig.stm32_venc index c0e19575021a8..9c018c97ac285 100644 --- a/drivers/video/Kconfig.stm32_venc +++ b/drivers/video/Kconfig.stm32_venc @@ -7,6 +7,7 @@ config VIDEO_STM32_VENC bool "STM32 video encoder (VENC) driver" default y depends on DT_HAS_ST_STM32_VENC_ENABLED + depends on VIDEO_ENCODER_H264 select HAS_STM32LIB select USE_STM32_LL_VENC select USE_STM32_HAL_RIF if SOC_SERIES_STM32N6X From 260709d334648575a374f474c70497ac98284191 Mon Sep 17 00:00:00 2001 From: Alain Volmat Date: Mon, 13 Oct 2025 20:58:25 +0200 Subject: [PATCH 4/5] Revert "snippets: stm32: addition of video-stm32-venc" This reverts commit 2654845b937c235f07af9b0eeb7a844168f848b4. The conf file embedded within the snippet are setting sample specific Kconfig, making its usage impossible with other application. Remove the snippet and introduce instead board specific config & overlay including venc file_suffix in order to allow future addition of other encoders available on the same board. Signed-off-by: Alain Volmat --- snippets/stm32/index.rst | 10 ---------- snippets/stm32/video-stm32-venc/README.rst | 19 ------------------- snippets/stm32/video-stm32-venc/snippet.yml | 4 ---- .../video-stm32-venc/video-stm32-venc.conf | 9 --------- .../video-stm32-venc/video-stm32-venc.overlay | 14 -------------- 5 files changed, 56 deletions(-) delete mode 100644 snippets/stm32/index.rst delete mode 100644 snippets/stm32/video-stm32-venc/README.rst delete mode 100644 snippets/stm32/video-stm32-venc/snippet.yml delete mode 100644 snippets/stm32/video-stm32-venc/video-stm32-venc.conf delete mode 100644 snippets/stm32/video-stm32-venc/video-stm32-venc.overlay diff --git a/snippets/stm32/index.rst b/snippets/stm32/index.rst deleted file mode 100644 index 0dd321541a724..0000000000000 --- a/snippets/stm32/index.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. _stm32-snippets: - -STM32 snippets -############## - -.. toctree:: - :maxdepth: 1 - :glob: - - **/* diff --git a/snippets/stm32/video-stm32-venc/README.rst b/snippets/stm32/video-stm32-venc/README.rst deleted file mode 100644 index 276ac2ba3cc59..0000000000000 --- a/snippets/stm32/video-stm32-venc/README.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. _snippet-video-stm32-venc: - -STM32 Video ENCoder (VENC) Snippet (video-stm32-venc) -##################################################### - -.. code-block:: console - - west build -S video-stm32-venc [...] - -Overview -******** - -This snippet instantiate the STM32 Video ENCoder (VENC) and set it -as ``zephyr,videoenc`` :ref:`devicetree` chosen node. - -Requirements -************ - -The board must have the hardware support for the Video ENCoder (VENC). diff --git a/snippets/stm32/video-stm32-venc/snippet.yml b/snippets/stm32/video-stm32-venc/snippet.yml deleted file mode 100644 index e026bbed9cb3c..0000000000000 --- a/snippets/stm32/video-stm32-venc/snippet.yml +++ /dev/null @@ -1,4 +0,0 @@ -name: video-stm32-venc -append: - EXTRA_DTC_OVERLAY_FILE: video-stm32-venc.overlay - EXTRA_CONF_FILE: video-stm32-venc.conf diff --git a/snippets/stm32/video-stm32-venc/video-stm32-venc.conf b/snippets/stm32/video-stm32-venc/video-stm32-venc.conf deleted file mode 100644 index 7e386d983c6a7..0000000000000 --- a/snippets/stm32/video-stm32-venc/video-stm32-venc.conf +++ /dev/null @@ -1,9 +0,0 @@ -# VENC output format -CONFIG_VIDEO_ENCODED_PIXEL_FORMAT="H264" - -# Default frame size -CONFIG_VIDEO_FRAME_WIDTH=1920 -CONFIG_VIDEO_FRAME_HEIGHT=1080 - -# VENC default input format -CONFIG_VIDEO_PIXEL_FORMAT="NV12" diff --git a/snippets/stm32/video-stm32-venc/video-stm32-venc.overlay b/snippets/stm32/video-stm32-venc/video-stm32-venc.overlay deleted file mode 100644 index 723762400cf66..0000000000000 --- a/snippets/stm32/video-stm32-venc/video-stm32-venc.overlay +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) 2025 STMicroelectronics - * SPDX-License-Identifier: Apache-2.0 - */ - -/ { - chosen { - zephyr,videoenc = &venc; - }; -}; - -&venc { - status = "okay"; -}; From 7e3f6cb3fdbb8d534c15a96aa53bc7a00ac0c77a Mon Sep 17 00:00:00 2001 From: Alain Volmat Date: Mon, 13 Oct 2025 20:56:54 +0200 Subject: [PATCH 5/5] samples: video: tcpserversink: add STM32N6570_DK VENC support Add STM32N6570_DK specific conf files and overlays in order to enable the VENC encoder. Signed-off-by: Alain Volmat --- samples/drivers/video/tcpserversink/README.rst | 14 +++----------- ...nf => stm32n6570_dk_stm32n657xx_fsbl_venc.conf} | 7 +++++++ .../stm32n6570_dk_stm32n657xx_fsbl_venc.overlay | 10 ++++++++++ ...conf => stm32n6570_dk_stm32n657xx_sb_venc.conf} | 7 +++++++ .../stm32n6570_dk_stm32n657xx_sb_venc.overlay | 10 ++++++++++ ...stm32n657xx_sb.conf => stm32n6570_dk_venc.conf} | 7 +++++++ .../boards/stm32n6570_dk_venc.overlay | 10 ++++++++++ samples/drivers/video/tcpserversink/sample.yaml | 2 +- 8 files changed, 55 insertions(+), 12 deletions(-) rename samples/drivers/video/tcpserversink/boards/{stm32n6570_dk.conf => stm32n6570_dk_stm32n657xx_fsbl_venc.conf} (59%) create mode 100644 samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.overlay rename samples/drivers/video/tcpserversink/boards/{stm32n6570_dk_stm32n657xx_fsbl.conf => stm32n6570_dk_stm32n657xx_sb_venc.conf} (59%) create mode 100644 samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb_venc.overlay rename samples/drivers/video/tcpserversink/boards/{stm32n6570_dk_stm32n657xx_sb.conf => stm32n6570_dk_venc.conf} (59%) create mode 100644 samples/drivers/video/tcpserversink/boards/stm32n6570_dk_venc.overlay diff --git a/samples/drivers/video/tcpserversink/README.rst b/samples/drivers/video/tcpserversink/README.rst index 7caa9a19f6201..3adc6ac6c6b8d 100644 --- a/samples/drivers/video/tcpserversink/README.rst +++ b/samples/drivers/video/tcpserversink/README.rst @@ -58,22 +58,14 @@ a video software pattern generator is supported by using :ref:`snippet-video-sw- :goals: build :compact: -For :zephyr:board:`stm32n6570_dk`, the sample can be built with the following command: +For :zephyr:board:`stm32n6570_dk`, the sample can be built with H264 video compression +support using the venc file_suffix at the end of the following command: .. zephyr-app-commands:: :zephyr-app: samples/drivers/video/tcpserversink :board: stm32n6570_dk :shield: st_b_cams_imx_mb1854 - :goals: build - :compact: - -The same can be built with H264 video compression support using :ref:`snippet-video-stm32-venc`: - -.. zephyr-app-commands:: - :zephyr-app: samples/drivers/video/tcpserversink - :board: stm32n6570_dk - :shield: st_b_cams_imx_mb1854 - :snippets: video-stm32-venc + :gen-args: -DFILE_SUFFIX=venc :goals: build :compact: diff --git a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk.conf b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.conf similarity index 59% rename from samples/drivers/video/tcpserversink/boards/stm32n6570_dk.conf rename to samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.conf index dad55fefaad4d..c27dfcf91d5f4 100644 --- a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk.conf +++ b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.conf @@ -8,7 +8,14 @@ CONFIG_FPU=y CONFIG_VIDEO_CAPTURE_N_BUFFERING=2 # Video encoder +CONFIG_VIDEO_ENCODER_H264=y CONFIG_MAIN_STACK_SIZE=4096 +CONFIG_VIDEO_ENCODED_PIXEL_FORMAT="H264" + +# Default frame size +CONFIG_VIDEO_PIXEL_FORMAT="NV12" +CONFIG_VIDEO_FRAME_WIDTH=1920 +CONFIG_VIDEO_FRAME_HEIGHT=1080 # Network buffers CONFIG_NET_BUF_RX_COUNT=4 diff --git a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.overlay b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.overlay new file mode 100644 index 0000000000000..0d84cfe696ece --- /dev/null +++ b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.overlay @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2025 STMicroelectronics + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,videoenc = &venc; + }; +}; diff --git a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl.conf b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb_venc.conf similarity index 59% rename from samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl.conf rename to samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb_venc.conf index dad55fefaad4d..c27dfcf91d5f4 100644 --- a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl.conf +++ b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb_venc.conf @@ -8,7 +8,14 @@ CONFIG_FPU=y CONFIG_VIDEO_CAPTURE_N_BUFFERING=2 # Video encoder +CONFIG_VIDEO_ENCODER_H264=y CONFIG_MAIN_STACK_SIZE=4096 +CONFIG_VIDEO_ENCODED_PIXEL_FORMAT="H264" + +# Default frame size +CONFIG_VIDEO_PIXEL_FORMAT="NV12" +CONFIG_VIDEO_FRAME_WIDTH=1920 +CONFIG_VIDEO_FRAME_HEIGHT=1080 # Network buffers CONFIG_NET_BUF_RX_COUNT=4 diff --git a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb_venc.overlay b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb_venc.overlay new file mode 100644 index 0000000000000..0d84cfe696ece --- /dev/null +++ b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb_venc.overlay @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2025 STMicroelectronics + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,videoenc = &venc; + }; +}; diff --git a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb.conf b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_venc.conf similarity index 59% rename from samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb.conf rename to samples/drivers/video/tcpserversink/boards/stm32n6570_dk_venc.conf index dad55fefaad4d..c27dfcf91d5f4 100644 --- a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_sb.conf +++ b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_venc.conf @@ -8,7 +8,14 @@ CONFIG_FPU=y CONFIG_VIDEO_CAPTURE_N_BUFFERING=2 # Video encoder +CONFIG_VIDEO_ENCODER_H264=y CONFIG_MAIN_STACK_SIZE=4096 +CONFIG_VIDEO_ENCODED_PIXEL_FORMAT="H264" + +# Default frame size +CONFIG_VIDEO_PIXEL_FORMAT="NV12" +CONFIG_VIDEO_FRAME_WIDTH=1920 +CONFIG_VIDEO_FRAME_HEIGHT=1080 # Network buffers CONFIG_NET_BUF_RX_COUNT=4 diff --git a/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_venc.overlay b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_venc.overlay new file mode 100644 index 0000000000000..0d84cfe696ece --- /dev/null +++ b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_venc.overlay @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2025 STMicroelectronics + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + chosen { + zephyr,videoenc = &venc; + }; +}; diff --git a/samples/drivers/video/tcpserversink/sample.yaml b/samples/drivers/video/tcpserversink/sample.yaml index 76ee4c3db8769..f6f70687d54c9 100644 --- a/samples/drivers/video/tcpserversink/sample.yaml +++ b/samples/drivers/video/tcpserversink/sample.yaml @@ -19,5 +19,5 @@ tests: - stm32n6570_dk/stm32n657xx/sb extra_args: - platform:mimxrt1064_evk/mimxrt1064:SHIELD=dvp_fpc24_mt9m114 - - platform:stm32n6570_dk/stm32n657xx/sb:SNIPPET=video-stm32-venc + - platform:stm32n6570_dk/stm32n657xx/sb:FILE_SUFFIX=venc - platform:stm32n6570_dk/stm32n657xx/sb:SHIELD=st_b_cams_imx_mb1854