Commit Graph

62 Commits

Author SHA1 Message Date
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
Benjamin Cabé
c6cc7a17e5 samples: drivers: video: fix shield name
The capture to LVGL sample is using an incorrect name for the
weact_ov2640_cam_module shield

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-11-07 08:32:33 -06:00
Phi Bang Nguyen
8d1a7026c5 samples: video: capture: Fix floating point logging issue
The default frame rate is printed as a floating point number. Without
enabling CONFIG_REQUIRES_FLOAT_PRINTF, it is not printed at all. Fix it.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2024-10-31 09:22:11 -05:00
Charles Dias
7128e33796 samples: drivers: video: capture_to_lvgl: add menu and update the YAML
Add the Kconfig menu to the sample configuration.
Update sample.yaml by adding the shield configuration.

Signed-off-by: Charles Dias <charlesdias.cd@outlook.com>
2024-10-25 05:12:25 +01:00
Benjamin Cabé
f2c2cc334d boards: weact: adopt new zephyr:board directive and role
This updates the documentation of all the WeAct boards
to use the new `zephyr:board::` directive.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-10-24 17:51:15 +02:00
Benjamin Cabé
d885957fe8 boards: nxp: adopt new zephyr:board directive and role
This updates the documentation of all the NXP boards to use
the new `zephyr:board::` directive.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-10-24 17:51:15 +02:00
Benjamin Cabé
fa0b17e4b1 doc: samples: add target-notes directive where missing
For the "References" section to be useful, it needs to include a call to
the target-notes directive, which is the one that actually generates the
list of references made in the current document.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-10-23 15:30:44 -05:00
Phi Bang Nguyen
e67f2b1a61 samples: video: capture: Enhance fixture test with colorbar checking
Currently, the camera fixture test can only tell whether data are dumped
onto memory. This is to check further if the image content is correct.

The algorithm is rather simple: compare the average color of each bar
of a generated pattern with a predefined target in CIELAB76 color
space (which is nearly perceptually uniform).

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2024-10-18 17:46:38 +01:00
Phi Bang Nguyen
9f97e18ddd samples: video: capture: Fix camera fixture test
The logs that the fixture test are based on are not printed anymore due
to recent changes from "printk" to "LOG_DBG". Change the log level so
that it can work again.

Remove "Capture started" as it is not a relevant test regex. Logs are
sometimes not correctly printed in the console, for example, we can see:

DEBUG   - DEVICE: muart:~$ [mapture started

As "Capture started" is a one-time log, fixture test will then fail due
to timeout.

Also, consolidate other regex.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2024-10-18 17:46:38 +01:00
Phi Bang Nguyen
5e627b64b5 samples: video: capture: Add mimxrt1170_evk@B to test
Add mimxrt1170_evk@B to test platforms.

Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
2024-10-18 17:46:38 +01:00
Daniel DeGrasse
20cce995da samples: drivers: video: capture: don't apply format unless needed
Do not apply format setting unless needed. Also, correct the check for
the RGB565 format setting- the zephyr display API treats RGB565 and
BGR565 as big endian, so the format needed here is BGR565.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-15 04:10:50 -04:00
Daniel DeGrasse
22cb79d221 samples: video: capture: add support for SMARTDMA
Add support for using the SMARTDMA engine on the FRDM-MCXN947 board with
the video capture sample.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-15 04:10:50 -04:00
Daniel DeGrasse
97943295e5 samples: drivers: video: handle line_offset field
Handle line_offset field within video capture sample. Other samples do
not support partial framebuffers and therefore can ignore this field.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-15 04:10:50 -04:00
Daniel DeGrasse
2fb259833f samples: drivers: video: update video samples for min/max line count
Update video samples to use min/max line count capabilities when
allocating video buffers.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2024-10-15 04:10:50 -04:00