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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
This updates the documentation of all the WeAct boards
to use the new `zephyr:board::` directive.
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
This updates the documentation of all the NXP boards to use
the new `zephyr:board::` directive.
Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
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>
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>
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>
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>
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>
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>