Commit Graph

75 Commits

Author SHA1 Message Date
Phi Bang Nguyen
7a3737b9bb samples: video: capture: Enable deferred logging
Immediate log mode may use a lot of stack and hence may cause some stack
overflow on some boards.

Enable deferred log mode to have the least impact on the application.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-07-03 11:56:30 -05:00
Phi Bang Nguyen
1c9f8904ed samples: video: capture: Add condition for test pattern test
Add condition to do the test pattern fixture test only if the test
pattern control was successfully set.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-07-03 11:56:30 -05:00
Alain Volmat
706895cc27 samples: video: capture_to_lvgl: add crop/compose support
Demonstrate the crop/compose API by introducing 4 new
CONFIG options in order to define the crop area.
Moreover, if the selection API is available and if
the targetted size is different from the current crop
size, then try to apply a compose in order to reach
the targetted format size.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-07-03 11:56:07 -05:00
Alain Volmat
aa345401bb samples: video: capture_to_lvgl: add stm32n6570_dk/fsbl conf
Add the conf file for the stm32n6570_dk in its FSBL variant

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-07-03 11:56:07 -05:00
Alain Volmat
5508534685 samples: video: capture: add conf for stm32n6570_dk fsbl
Add the board conf file for the stm32n6570_dk in its fsbl
variant.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-07-03 11:56:07 -05:00
Josuah Demangeon
28639862ba samples: drivers: video: capture: remove invalid build instruction
Remove the build instruction from README about using the native_sim
without using the video-sw-generator snippet, as it cannot build.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-30 15:24:03 -05:00
Josuah Demangeon
53dfa28367 samples: drivers: video: add DT_HAS_CHOSEN() safeguards
Add macros giving hints to users using #error, about what might be
missing to build and run the samples, such as a missing "chosen"
devicetree node.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-30 15:24:03 -05:00
Alain Volmat
e4348ad877 samples: video: capture: add a stm32mp135f_dk config
Add a configuration file for the stm32mp135f_dk board.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-27 12:25:52 +02:00
Alain Volmat
174dead086 samples: video: capture: add crop/compose support
Demonstrate the crop/compose API by introducing 4 new
CONFIG options in order to define the crop area.
Moreover, if the selection API is available and if
the targetted size is different from the current crop
size, then try to apply a compose in order to reach
the targetted format size.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-25 15:55:24 -10:00
Phi Bang Nguyen
10deca2ef6 drivers: video: Fix skipped CIDs when enumerating controls
When enumerating controls with VIDEO_CTRL_FLAG_NEXT_CTRL, if child devices
have controls with IDs lower or equal to the ones in the parent devices,
those controls will be accidentally skipped.

Fix this by resetting the query's ID and tracking of the queried device in
the query when moving to the next device in the pipeline.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-19 22:37:54 -07:00
Alain Volmat
74f32fada3 samples: video: capture_to_lvgl: add stm32n6570_dk conf files
Add configuration files for the stm32n6570_dk board.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-19 13:57:51 +02:00
Alain Volmat
a558ad25a3 samples: video: capture_to_lvgl: use video_buffer_aligned_alloc
Use video_buffer_aligned_alloc instead of video_buffer_alloc for buffer
allocation in order to be able to enforce required buffer alignment
configured via CONFIG_VIDEO_BUFFER_POOL_ALIGN.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-19 13:57:51 +02:00
Alain Volmat
bb5867d07a samples: video: capture: add stm32n6570_dk config files
Add capture sample config files for the stm32n6570_dk board.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-06-19 13:57:51 +02:00
Davi Herculano
d5bb10bf98 samples: video: Set vertical flip in esp32s3_eye capture config
Add vertical flip to esp32s3_eye capture configuration file.

Signed-off-by: Davi Herculano <herculanodavi@gmail.com>
2025-06-17 16:07:54 +02:00
Davi Herculano
9d62132ef1 samples: video: Add vertical flip option to capture
Add KConfig option in video/capture sample to
vertically flip the image.

Signed-off-by: Davi Herculano <herculanodavi@gmail.com>
2025-06-17 16:07:54 +02:00
Benjamin Cabé
b35ba2d40e drivers: video: adopt SHELL_HELP
Adopt SHELL_HELP macro for video_shell

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-06-13 10:17:08 -07:00
Josuah Demangeon
c00015ded5 samples: drivers: video: tcpserversink: add _dev suffix to variable
Variables that holds pointers to 'const struct device' typically end-up
with '_dev'. The tcpserversink video sample did not have it. Add it.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-02 05:48:21 +02:00
Josuah Demangeon
be5df19664 samples: drivers: video: tcpserversink: sort header alphabetically
Since this sample's headers are now grouped it is possible to sort them
alphabetically.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-02 05:48:21 +02:00
Josuah Demangeon
1b3f96ce3e samples: drivers: video: convert to new LOG_MODULE_REGISTER() syntax
Convert the log module declarationto the new syntax introduced in
5e34681 proposing a more compact syntax.
This fixes the log level not being updated in the "capture" sample.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-02 05:48:21 +02:00
Josuah Demangeon
a3465f8f4d drivers: video: sw_generator: convert to use the devicetree
Make the video software generator a devicetree node, which allows enabling
several instances, and select it as chosen { zephyr,camera = &... }; node.
It can be enabled via a `video-sw-generator` snippet.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-02 05:48:21 +02:00
Josuah Demangeon
cc664676ac samples: drivers: video: fix board definitions
By having an "auto-fallback" mechanism, the VIDEO_SW_GENERATOR did shadow
the fact that "platform:mimxrt1064_evk:SHIELD=dvp_fpc24_mt9m114" was
missing the full specification, and therefore was not matched at all:
the shield was not selected, but the CI still worked.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-06-02 05:48:21 +02:00
Antonino Scarpaci
1508d7ec7e samples: drivers: video: fix capture_to_lvgl statistics
CONFIG_LV_USE_PERF_MONITOR depends on CONFIG_LV_USE_SYSMON.

Signed-off-by: Antonino Scarpaci <antonino.scarpaci@gmail.com>
2025-05-28 16:38:05 +02:00
Josuah Demangeon
b95d7e2a94 samples: drivers: video: capture: logging improvements
Remove trailing spaces at the end of log string.
Move arguments on the next line for readability.
Align arguments to first line.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-05-21 19:56:30 +02:00
Josuah Demangeon
d272c12e01 samples: drivers: video: set an initial video buffer
Provide an initial video buffer in the first call to video_dequeue().
It is used by the driver for choosing between the input or output queue.
Applied to capture, capture_to_lvgl and tcpserversink samples.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-05-21 19:56:30 +02:00
Josuah Demangeon
8248854663 samples: drivers: video: capture: convert #ifdef into if()
Convert #ifdef CONFIG_TEST into if (IS_ENABLED(CONFIG_TEST)) to improve
readability.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-05-20 18:27:43 +02:00
Josuah Demangeon
585ee76425 sample: drivers: video: capture: add support for the video shell
Modify the capture sample to only run the video shell when the user
enables it with -DCONFIG_VIDEO_SHELL=y, as an alternative way to trigger
captures.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-05-20 18:27:43 +02:00
Phi Bang Nguyen
0c1e2c9e6d drivers: video: Move format pitch setting to bridge drivers
The format pitch (bytesperline) field is typically set by the bridge
drivers, i.e. DMA, ISP drivers who actually handle the memory as they
know exactly the memory layout constraints.

Application just set the pixel format and resolution and must always
read back this field to see what the driver actually sets (to allocate
buffers for example).

Also, drop format pitch setting in sensor drivers as this is not needed.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-05-20 18:27:35 +02:00
Phi Bang Nguyen
fcadb792be drivers: video: Compute bits per pixel according to format
Compute bits per pixel according to the pixel format instead of
hardcoding it.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-05-20 18:27:35 +02:00
Phi Bang Nguyen
9fa1aeea32 drivers: video: Add video_buf_type
M2M devices like ISPs or PxP have two separate buffer queues, i.e.
incoming and outcoming queues. For each API, the driver needs to
distinguish on which queue it needs to take action.

Add video buffer type to support this kind of devices.

- get_caps(), set/get_format(), enqueue()/dequeue(): the buffer type
is embeded in the video_caps, video_format and video_buffer structs

- video_stream_start/stop() : buffer type needs is sent as a parameter

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-05-16 19:00:09 +02:00
Phi Bang Nguyen
b63fb91622 drivers: video: Drop video_endpoint_id
The video endpoints are already described in the devicetree. The
video_endpoint_id parameter in each video API is not necessary and has
no usage. Drop it.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-05-16 19:00:09 +02:00
Josuah Demangeon
c2b408df9b samples: drivers: video: capture: fix Arduino Nicla Vision
Since #84446 it became necessary to enqueue a first video buffer before
performing the transfers. Apply this config change to the sample.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-05-09 01:40:47 +02:00
Josuah Demangeon
d4c39f8ebc samples: drivers: video: capture: add FRDM-MCXN947
Add FRDM-MCXN947 to the video capture sample documentation and twister
YAML configuration, using the DVP OV7670 camera module newly introduced.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-05-07 15:13:42 +01:00
Josuah Demangeon
e6517d0c7b boards: nxp: frdm_mcxn947: migrate ov7670 to a shield
The OV7670 was defined as part of the FRDM-MCXN947 board attached to the
SmartDMA and I2C peripheral. Migrate the devicetree to a reusable shield
that can be swapped with other image sensors.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-05-07 15:13:42 +01:00
Alain Volmat
339d7fdb8b samples: video: capture: allow -ENOSYS blanking error
The display blanking API mentions that display_blanking_on
and display_blanking_off should return -ENOSYS if it is not
implemented by the driver. It should not be considered as
an error since it might not be needed in order to have the
display work correctly.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-05-07 08:17:52 +01:00
Phi Bang Nguyen
78b9f25f76 drivers: video: Use video interfaces binding for ov7670 and smartdma
Have ov7670 and video smartdma use video interfaces binding. With
this, we can fix the chicken-egg issue in init priority and don't need
the workaround anymore.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-04-26 11:15:50 -04:00
Phi Bang Nguyen
f363bd6e36 drivers: video: Support controls of 64-bit integer type
Add supports for controls that need 64-bit integer such as pixel rate.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-04-21 20:03:31 +02:00
Phi Bang Nguyen
c95387a815 drivers: video: Add video query control API
Application can query information about a control given the control id,
the framework fill the rest of the structure. Application can also
enumerate all kinds of device's supported controls by iterating with
VIDEO_CTRL_FLAG_NEXT_CTRL on the same API.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-04-21 20:03:31 +02:00
Phi Bang Nguyen
135528a1be drivers: video: Implement video control framework
Implement the video control framework with the following features:

- Drivers initialize the control with a valid value range at boot which
  guides the application developer and the framework. Hence, the video
  framework could do all common works for drivers e.g., sanity check.

- Controls need to be cached to memory. Video framework handles
  get_ctrl(), drivers don't need to implement this API. It is because
  reading control value directly from registers are not only inefficient
  but also sometimes impossible, e.g. controls that scatter through
  several registers. Only "volatile" control needs to be updated at
  runtime.

- Only the devices (e.g., sensors) owning the controls need to
  implement set_ctrl(). Other devices of the pipeline do not need to
  propagate set_ctrl() and hence, do not need to implement this API

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2025-04-21 20:03:31 +02:00
Benjamin Cabé
f7ad282504 boards: arduino: doc: Adopt Sphinx custom board directives
Adds zephyr:board and zephyr:board-supported-hw directives to the
Arduino docs in order to generate more of the boards' documentation
automatically.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-03-18 16:40:59 +01:00
Josuah Demangeon
364322e246 samples: drivers: video: use a macro to simplify format logging
A macro introduced allows to log four-character-codes (FOURCC) as one
string instead of enumerating each individual character. This saves a bit
of room in the code and is less error-prone.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-03-08 03:37:38 +01:00
Lucas Tamborrino
53e62cac49 samples: video: capture: Fix sample for esp32s3_eye
Add proper pixel format support for ST7789V display.

Signed-off-by: Lucas Tamborrino <lucas.tamborrino@espressif.com>
2025-02-13 16:43:52 +01:00
Charles Dias
435b6f6cb9 boards: shields: add suport for st_b_cams_omv_mb1683
Add support for ST B-CAMS-OMV MB1683 shield.

Signed-off-by: Charles Dias <charlesdias.cd@outlook.com>
2025-02-06 14:44:54 +01:00
Josuah Demangeon
a6d68d2166 drivers: video: Make VIDEO_FOURCC() a documented API
Rename video_fourcc() to VIDEO_FOURCC(), differing from the Linux
implementation, but more compliant with the coding style.

Also introduce a VIDEO_FOURCC_FROM_STR() to generate a FOURCC format
code out of a 4-characters string.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2025-01-24 03:22:31 +01:00
Fabian Blatz
472caa96cb samples: drivers: video: capture_to_lvgl: Migrate to LVGL v9.2
Adjust the Kconfig symbols of the capture to lvgl sample. LV_MEM_CUSTOM has
been removed in v9.0 and LV_USE_IMG has been changed to LV_USE_IMAGE.
Fix the changed fields for the image descriptor struct.

Signed-off-by: Fabian Blatz <fabianblatz@gmail.com>
2025-01-04 14:17:10 +01:00
Declan Snyder
8ed80ddb37 boards: mimxrt1060_evk: Convert to variants
Convert qspi and hyperflash to variants instead of revisions by popular
demand.

And convert evkb into a revision instead of a different board.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-12-20 22:59:59 +01:00
Phi Bang Nguyen
a03a32b0ac samples: video: capture: rt10xx: Do hflipping at camera level
Do hflipping at camera level to avoid using PxP which impacts camera
framerates on RT10xx. Moreover, on RT11xx, PxP is already reserved
for 90 CCW image rotation.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2024-12-12 16:21:43 +01:00
Phi Bang Nguyen
8939a6cc7e samples: video: capture: Add hflip option
Add an option to mirror the video image horizontally. This helps
to avoid doing so at the post-processing step by using additional
HW such as PxP on i.MX RT platforms.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2024-12-12 16:21:43 +01:00
Armin Kessler
1baf93b1d1 drivers: video: Add timeout tovideo_buffer_alloc
This PR fixes a blocking call to video_buffer_alloc in case of memory
shortage by addign a timeout parameter to the API.

Signed-off-by: Armin Kessler <ake@espros.com>
2024-12-10 20:39:57 +01:00
Josuah Demangeon
217f053ccd drivers: video: controls: rename controls to Linux-like names
This uses Linux V4L2 controls as a reference to give names to the
CIDs. Apply the renaming down to the drivers that use them.

Signed-off-by: Josuah Demangeon <me@josuah.net>
2024-11-27 10:31:54 +01:00
Martin Stumpf
2e0687cfd2 generic: add frame_incomplete where missing
The newly introduced `frame_incomplete` flag of
`display_buffer_descriptor` needed to be added at several places to
avoid uninitialized memory.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
2024-11-16 13:35:17 -05:00