Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Video Interface. More...
Modules | |
Video pixel formats | |
Data Structures | |
struct | video_format |
Video format structure. More... | |
struct | video_format_cap |
Video format capability. More... | |
struct | video_caps |
Video format capabilities. More... | |
struct | video_buffer |
Video buffer structure. More... | |
struct | video_frmival |
Video frame interval structure. More... | |
struct | video_frmival_stepwise |
Video frame interval stepwise structure. More... | |
struct | video_frmival_enum |
Video frame interval enumeration structure. More... | |
struct | video_driver_api |
Macros | |
#define | LINE_COUNT_HEIGHT (-1) |
#define | video_fourcc(a, b, c, d) ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24)) |
Typedefs | |
typedef int(* | video_api_set_format_t) (const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt) |
Set video format. | |
typedef int(* | video_api_get_format_t) (const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt) |
Get current video format. | |
typedef int(* | video_api_set_frmival_t) (const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival) |
Set video frame interval. | |
typedef int(* | video_api_get_frmival_t) (const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival) |
Get current video frame interval. | |
typedef int(* | video_api_enum_frmival_t) (const struct device *dev, enum video_endpoint_id ep, struct video_frmival_enum *fie) |
List all supported frame intervals of a given format. | |
typedef int(* | video_api_enqueue_t) (const struct device *dev, enum video_endpoint_id ep, struct video_buffer *buf) |
Enqueue a buffer in the driver’s incoming queue. | |
typedef int(* | video_api_dequeue_t) (const struct device *dev, enum video_endpoint_id ep, struct video_buffer **buf, k_timeout_t timeout) |
Dequeue a buffer from the driver’s outgoing queue. | |
typedef int(* | video_api_flush_t) (const struct device *dev, enum video_endpoint_id ep, bool cancel) |
Flush endpoint buffers, buffer are moved from incoming queue to outgoing queue. | |
typedef int(* | video_api_stream_start_t) (const struct device *dev) |
Start the capture or output process. | |
typedef int(* | video_api_stream_stop_t) (const struct device *dev) |
Stop the capture or output process. | |
typedef int(* | video_api_set_ctrl_t) (const struct device *dev, unsigned int cid, void *value) |
Set a video control value. | |
typedef int(* | video_api_get_ctrl_t) (const struct device *dev, unsigned int cid, void *value) |
Get a video control value. | |
typedef int(* | video_api_get_caps_t) (const struct device *dev, enum video_endpoint_id ep, struct video_caps *caps) |
Get capabilities of a video endpoint. | |
typedef int(* | video_api_set_signal_t) (const struct device *dev, enum video_endpoint_id ep, struct k_poll_signal *signal) |
Register/Unregister poll signal for buffer events. | |
Enumerations | |
enum | video_frmival_type { VIDEO_FRMIVAL_TYPE_DISCRETE = 1 , VIDEO_FRMIVAL_TYPE_STEPWISE = 2 } |
video_frmival_type enum More... | |
enum | video_endpoint_id { VIDEO_EP_NONE = -1 , VIDEO_EP_ALL = -2 , VIDEO_EP_IN = -3 , VIDEO_EP_OUT = -4 } |
video_endpoint_id enum More... | |
enum | video_signal_result { VIDEO_BUF_DONE , VIDEO_BUF_ABORTED , VIDEO_BUF_ERROR } |
video_event enum More... | |
Functions | |
static int | video_set_format (const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt) |
Set video format. | |
static int | video_get_format (const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt) |
Get video format. | |
static int | video_set_frmival (const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival) |
Set video frame interval. | |
static int | video_get_frmival (const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival) |
Get video frame interval. | |
static int | video_enum_frmival (const struct device *dev, enum video_endpoint_id ep, struct video_frmival_enum *fie) |
List video frame intervals. | |
static int | video_enqueue (const struct device *dev, enum video_endpoint_id ep, struct video_buffer *buf) |
Enqueue a video buffer. | |
static int | video_dequeue (const struct device *dev, enum video_endpoint_id ep, struct video_buffer **buf, k_timeout_t timeout) |
Dequeue a video buffer. | |
static int | video_flush (const struct device *dev, enum video_endpoint_id ep, bool cancel) |
Flush endpoint buffers. | |
static int | video_stream_start (const struct device *dev) |
Start the video device function. | |
static int | video_stream_stop (const struct device *dev) |
Stop the video device function. | |
static int | video_get_caps (const struct device *dev, enum video_endpoint_id ep, struct video_caps *caps) |
Get the capabilities of a video endpoint. | |
static int | video_set_ctrl (const struct device *dev, unsigned int cid, void *value) |
Set the value of a control. | |
static int | video_get_ctrl (const struct device *dev, unsigned int cid, void *value) |
Get the current value of a control. | |
static int | video_set_signal (const struct device *dev, enum video_endpoint_id ep, struct k_poll_signal *signal) |
Register/Unregister k_poll signal for a video endpoint. | |
struct video_buffer * | video_buffer_aligned_alloc (size_t size, size_t align) |
Allocate aligned video buffer. | |
struct video_buffer * | video_buffer_alloc (size_t size) |
Allocate video buffer. | |
void | video_buffer_release (struct video_buffer *buf) |
Release a video buffer. | |
static unsigned int | video_pix_fmt_bpp (uint32_t pixfmt) |
Get number of bytes per pixel of a pixel format. | |
Video Interface.
#define LINE_COUNT_HEIGHT (-1) |
#include <include/zephyr/drivers/video.h>
#define video_fourcc | ( | a, | |
b, | |||
c, | |||
d | |||
) | ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24)) |
#include <include/zephyr/drivers/video.h>
video_api_dequeue_t |
#include <include/zephyr/drivers/video.h>
Dequeue a buffer from the driver’s outgoing queue.
See video_dequeue() for argument descriptions.
video_api_enqueue_t |
#include <include/zephyr/drivers/video.h>
Enqueue a buffer in the driver’s incoming queue.
See video_enqueue() for argument descriptions.
video_api_enum_frmival_t |
#include <include/zephyr/drivers/video.h>
List all supported frame intervals of a given format.
See video_enum_frmival() for argument descriptions.
video_api_flush_t |
#include <include/zephyr/drivers/video.h>
Flush endpoint buffers, buffer are moved from incoming queue to outgoing queue.
See video_flush() for argument descriptions.
video_api_get_caps_t |
#include <include/zephyr/drivers/video.h>
Get capabilities of a video endpoint.
See video_get_caps() for argument descriptions.
video_api_get_ctrl_t |
#include <include/zephyr/drivers/video.h>
Get a video control value.
See video_get_ctrl() for argument descriptions.
video_api_get_format_t |
#include <include/zephyr/drivers/video.h>
Get current video format.
See video_get_format() for argument descriptions.
video_api_get_frmival_t |
#include <include/zephyr/drivers/video.h>
Get current video frame interval.
See video_get_frmival() for argument descriptions.
video_api_set_ctrl_t |
#include <include/zephyr/drivers/video.h>
Set a video control value.
See video_set_ctrl() for argument descriptions.
video_api_set_format_t |
#include <include/zephyr/drivers/video.h>
Set video format.
See video_set_format() for argument descriptions.
video_api_set_frmival_t |
#include <include/zephyr/drivers/video.h>
Set video frame interval.
See video_set_frmival() for argument descriptions.
video_api_set_signal_t |
#include <include/zephyr/drivers/video.h>
Register/Unregister poll signal for buffer events.
See video_set_signal() for argument descriptions.
video_api_stream_start_t |
#include <include/zephyr/drivers/video.h>
Start the capture or output process.
See video_stream_start() for argument descriptions.
video_api_stream_stop_t |
#include <include/zephyr/drivers/video.h>
Stop the capture or output process.
See video_stream_stop() for argument descriptions.
enum video_endpoint_id |
#include <include/zephyr/drivers/video.h>
video_endpoint_id enum
Identify the video device endpoint.
enum video_frmival_type |
#include <include/zephyr/drivers/video.h>
video_frmival_type enum
Supported frame interval type of a video device.
Enumerator | |
---|---|
VIDEO_FRMIVAL_TYPE_DISCRETE | discrete frame interval type |
VIDEO_FRMIVAL_TYPE_STEPWISE | stepwise frame interval type |
enum video_signal_result |
#include <include/zephyr/drivers/video.h>
video_event enum
Identify video event.
Enumerator | |
---|---|
VIDEO_BUF_DONE | |
VIDEO_BUF_ABORTED | |
VIDEO_BUF_ERROR |
struct video_buffer * video_buffer_aligned_alloc | ( | size_t | size, |
size_t | align | ||
) |
#include <include/zephyr/drivers/video.h>
Allocate aligned video buffer.
size | Size of the video buffer (in bytes). |
align | Alignment of the requested memory, must be a power of two. |
pointer | to allocated video buffer |
struct video_buffer * video_buffer_alloc | ( | size_t | size | ) |
#include <include/zephyr/drivers/video.h>
Allocate video buffer.
size | Size of the video buffer (in bytes). |
pointer | to allocated video buffer |
void video_buffer_release | ( | struct video_buffer * | buf | ) |
#include <include/zephyr/drivers/video.h>
Release a video buffer.
buf | Pointer to the video buffer to release. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Dequeue a video buffer.
Dequeue a filled (capturing) or displayed (output) buffer from the driver’s endpoint outgoing queue.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
buf | Pointer a video buffer pointer. |
timeout | Timeout |
0 | Is successful. |
-EINVAL | If parameters are invalid. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Enqueue a video buffer.
Enqueue an empty (capturing) or filled (output) video buffer in the driver’s endpoint incoming queue.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
buf | Pointer to the video buffer. |
0 | Is successful. |
-EINVAL | If parameters are invalid. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
List video frame intervals.
List all supported video frame intervals of a given format.
Applications should fill the pixelformat, width and height fields of the video_frmival_enum struct first to form a query. Then, the index field is used to iterate through the supported frame intervals list.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
fie | Pointer to a video frame interval enumeration struct. |
0 | If successful. |
-ENOSYS | If API is not implemented. |
-EINVAL | If parameters are invalid. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Flush endpoint buffers.
A call to flush finishes when all endpoint buffers have been moved from incoming queue to outgoing queue. Either because canceled or fully processed through the video function.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
cancel | If true, cancel buffer processing instead of waiting for completion. |
0 | Is successful, -ERRNO code otherwise. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Get the capabilities of a video endpoint.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
caps | Pointer to the video_caps struct to fill. |
0 | Is successful, -ERRNO code otherwise. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Get the current value of a control.
This retrieve the value of a video control, value type depends on control ID, and must be interpreted accordingly.
dev | Pointer to the device structure for the driver instance. |
cid | Control ID. |
value | Pointer to the control value. |
0 | Is successful. |
-EINVAL | If parameters are invalid. |
-ENOTSUP | If format is not supported. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Get video format.
Get video device current video format.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
fmt | Pointer to video format struct. |
pointer | to video format |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Get video frame interval.
Get current frame interval of the video device.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
frmival | Pointer to a video frame interval struct. |
0 | If successful. |
-ENOSYS | If API is not implemented. |
-EINVAL | If parameters are invalid. |
-EIO | General input / output error. |
#include <include/zephyr/drivers/video.h>
Get number of bytes per pixel of a pixel format.
pixfmt | FourCC pixel format value (Video pixel formats). |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Set the value of a control.
This set the value of a video control, value type depends on control ID, and must be interpreted accordingly.
dev | Pointer to the device structure for the driver instance. |
cid | Control ID. |
value | Pointer to the control value. |
0 | Is successful. |
-EINVAL | If parameters are invalid. |
-ENOTSUP | If format is not supported. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Set video format.
Configure video device with a specific format.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
fmt | Pointer to a video format struct. |
0 | Is successful. |
-EINVAL | If parameters are invalid. |
-ENOTSUP | If format is not supported. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Set video frame interval.
Configure video device with a specific frame interval.
Drivers must not return an error solely because the requested interval doesn’t match the device capabilities. They must instead modify the interval to match what the hardware can provide.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
frmival | Pointer to a video frame interval struct. |
0 | If successful. |
-ENOSYS | If API is not implemented. |
-EINVAL | If parameters are invalid. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Register/Unregister k_poll signal for a video endpoint.
Register a poll signal to the endpoint, which will be signaled on frame completion (done, aborted, error). Registering a NULL poll signal unregisters any previously registered signal.
dev | Pointer to the device structure for the driver instance. |
ep | Endpoint ID. |
signal | Pointer to k_poll_signal |
0 | Is successful, -ERRNO code otherwise. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Start the video device function.
video_stream_start is called to enter ‘streaming’ state (capture, output...). The driver may receive buffers with video_enqueue() before video_stream_start is called. If driver/device needs a minimum number of buffers before being able to start streaming, then driver set the min_vbuf_count to the related endpoint capabilities.
0 | Is successful. |
-EIO | General input / output error. |
|
inlinestatic |
#include <include/zephyr/drivers/video.h>
Stop the video device function.
On video_stream_stop, driver must stop any transactions or wait until they finish.
0 | Is successful. |
-EIO | General input / output error. |