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"; +}; 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" 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 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/snippets/stm32/video-stm32-venc/video-stm32-venc.overlay b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.overlay similarity index 81% rename from snippets/stm32/video-stm32-venc/video-stm32-venc.overlay rename to samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.overlay index 723762400cf66..0d84cfe696ece 100644 --- a/snippets/stm32/video-stm32-venc/video-stm32-venc.overlay +++ b/samples/drivers/video/tcpserversink/boards/stm32n6570_dk_stm32n657xx_fsbl_venc.overlay @@ -8,7 +8,3 @@ zephyr,videoenc = &venc; }; }; - -&venc { - status = "okay"; -}; 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 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"