12#ifndef ZEPHYR_INCLUDE_VIDEO_H_
13#define ZEPHYR_INCLUDE_VIDEO_H_
38#define LINE_COUNT_HEIGHT (-1)
526 return api->
enqueue(dev, ep, buf);
553 return api->
dequeue(dev, ep, buf, timeout);
578 return api->
flush(dev, ep, cancel);
646 return api->
get_caps(dev, ep, caps);
672 return api->
set_ctrl(dev, cid, value);
698 return api->
get_ctrl(dev, cid, value);
822#define VIDEO_FOURCC(a, b, c, d) \
823 ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
834#define VIDEO_FOURCC_FROM_STR(str) VIDEO_FOURCC((str)[0], (str)[1], (str)[2], (str)[3])
850#define VIDEO_PIX_FMT_BGGR8 VIDEO_FOURCC('B', 'A', '8', '1')
858#define VIDEO_PIX_FMT_GBRG8 VIDEO_FOURCC('G', 'B', 'R', 'G')
866#define VIDEO_PIX_FMT_GRBG8 VIDEO_FOURCC('G', 'R', 'B', 'G')
874#define VIDEO_PIX_FMT_RGGB8 VIDEO_FOURCC('R', 'G', 'G', 'B')
895#define VIDEO_PIX_FMT_RGB565X VIDEO_FOURCC('R', 'G', 'B', 'R')
906#define VIDEO_PIX_FMT_RGB565 VIDEO_FOURCC('R', 'G', 'B', 'P')
915#define VIDEO_PIX_FMT_XRGB32 VIDEO_FOURCC('B', 'X', '2', '4')
935#define VIDEO_PIX_FMT_YUYV VIDEO_FOURCC('Y', 'U', 'Y', 'V')
944#define VIDEO_PIX_FMT_XYUV32 VIDEO_FOURCC('X', 'Y', 'U', 'V')
958#define VIDEO_PIX_FMT_JPEG VIDEO_FOURCC('J', 'P', 'E', 'G')
#define NSEC_PER_SEC
number of nanoseconds per second
Definition sys_clock.h:113
#define ENOSYS
Function not implemented.
Definition errno.h:82
video_signal_result
video_event enum
Definition video.h:226
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.
Definition video.h:283
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.
Definition video.h:292
struct video_buffer * video_buffer_aligned_alloc(size_t size, size_t align, k_timeout_t timeout)
Allocate aligned video buffer.
int(* video_api_set_stream_t)(const struct device *dev, bool enable)
Start or stop streaming on the video device.
Definition video.h:315
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.
Definition video.h:637
static int video_set_frmival(const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival)
Set video frame interval.
Definition video.h:435
static int video_stream_stop(const struct device *dev)
Stop the video device function.
Definition video.h:613
static int video_get_ctrl(const struct device *dev, unsigned int cid, void *value)
Get the current value of a control.
Definition video.h:690
void video_closest_frmival(const struct device *dev, enum video_endpoint_id ep, struct video_frmival_enum *match)
Find the closest match to a frame interval value within a video device.
video_frmival_type
video_frmival_type enum
Definition video.h:150
static uint64_t video_frmival_nsec(const struct video_frmival *frmival)
Compute the difference between two frame intervals.
Definition video.h:774
static int video_stream_start(const struct device *dev)
Start the video device function.
Definition video.h:593
int(* video_api_get_format_t)(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt)
Get current video format.
Definition video.h:247
static int video_set_ctrl(const struct device *dev, unsigned int cid, void *value)
Set the value of a control.
Definition video.h:664
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.
Definition video.h:544
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.
Definition video.h:348
int(* video_api_get_ctrl_t)(const struct device *dev, unsigned int cid, void *value)
Get a video control value.
Definition video.h:331
static int video_get_frmival(const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival)
Get video frame interval.
Definition video.h:461
int(* video_api_get_frmival_t)(const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival)
Get current video frame interval.
Definition video.h:265
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.
Definition video.h:714
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.
Definition video.h:274
static int video_enum_frmival(const struct device *dev, enum video_endpoint_id ep, struct video_frmival_enum *fie)
List video frame intervals.
Definition video.h:491
static int video_get_format(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt)
Get video format.
Definition video.h:406
static int video_enqueue(const struct device *dev, enum video_endpoint_id ep, struct video_buffer *buf)
Enqueue a video buffer.
Definition video.h:517
int(* video_api_set_frmival_t)(const struct device *dev, enum video_endpoint_id ep, struct video_frmival *frmival)
Set video frame interval.
Definition video.h:256
void video_closest_frmival_stepwise(const struct video_frmival_stepwise *stepwise, const struct video_frmival *desired, struct video_frmival *match)
Find the closest match to a frame interval value within a stepwise frame interval.
void video_buffer_release(struct video_buffer *buf)
Release a video buffer.
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.
Definition video.h:302
int(* video_api_set_ctrl_t)(const struct device *dev, unsigned int cid, void *value)
Set a video control value.
Definition video.h:323
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.
Definition video.h:339
int video_format_caps_index(const struct video_format_cap *fmts, const struct video_format *fmt, size_t *idx)
Search for a format that matches in a list of capabilities.
static int video_set_format(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt)
Set video format.
Definition video.h:383
static int video_flush(const struct device *dev, enum video_endpoint_id ep, bool cancel)
Flush endpoint buffers.
Definition video.h:570
struct video_buffer * video_buffer_alloc(size_t size, k_timeout_t timeout)
Allocate video buffer.
int(* video_api_set_format_t)(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt)
Set video format.
Definition video.h:238
video_endpoint_id
video_endpoint_id enum
Definition video.h:210
@ VIDEO_BUF_ABORTED
Definition video.h:228
@ VIDEO_BUF_DONE
Definition video.h:227
@ VIDEO_BUF_ERROR
Definition video.h:229
@ VIDEO_FRMIVAL_TYPE_DISCRETE
discrete frame interval type
Definition video.h:152
@ VIDEO_FRMIVAL_TYPE_STEPWISE
stepwise frame interval type
Definition video.h:154
@ VIDEO_EP_IN
Targets all input endpoints of the device: those consuming data.
Definition video.h:216
@ VIDEO_EP_NONE
Targets some part of the video device not bound to an endpoint.
Definition video.h:212
@ VIDEO_EP_OUT
Targets all output endpoints of the device: those producing data.
Definition video.h:218
@ VIDEO_EP_ALL
Targets all input or output endpoints of the device.
Definition video.h:214
#define NULL
Definition iar_missing_defs.h:20
sighandler_t signal(int signo, sighandler_t handler)
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
__INT16_TYPE__ int16_t
Definition stdint.h:73
Runtime device structure (in ROM) per driver instance.
Definition device.h:453
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:459
Kernel timeout type.
Definition sys_clock.h:65
Video buffer structure.
Definition video.h:123
uint32_t bytesused
number of bytes occupied by the valid data in the buffer.
Definition video.h:131
uint32_t size
size of the buffer in bytes.
Definition video.h:129
uint8_t * buffer
pointer to the start of the buffer.
Definition video.h:127
void * driver_data
pointer to driver specific data.
Definition video.h:125
uint16_t line_offset
Line offset within frame this buffer represents, from the beginning of the frame.
Definition video.h:142
uint32_t timestamp
time reference in milliseconds at which the last data byte was actually received for input endpoints ...
Definition video.h:136
Video format capabilities.
Definition video.h:92
uint8_t min_vbuf_count
minimal count of video buffers to enqueue before being able to start the stream.
Definition video.h:98
int16_t min_line_count
Denotes minimum line count of a video buffer that this endpoint can fill or process.
Definition video.h:107
int16_t max_line_count
Denotes maximum line count of a video buffer that this endpoint can fill or process.
Definition video.h:114
const struct video_format_cap * format_caps
list of video format capabilities (zero terminated).
Definition video.h:94
video_api_set_ctrl_t set_ctrl
Definition video.h:361
video_api_enqueue_t enqueue
Definition video.h:358
video_api_set_signal_t set_signal
Definition video.h:363
video_api_get_format_t get_format
Definition video.h:354
video_api_enum_frmival_t enum_frmival
Definition video.h:366
video_api_get_caps_t get_caps
Definition video.h:356
video_api_set_format_t set_format
Definition video.h:353
video_api_flush_t flush
Definition video.h:360
video_api_dequeue_t dequeue
Definition video.h:359
video_api_get_ctrl_t get_ctrl
Definition video.h:362
video_api_get_frmival_t get_frmival
Definition video.h:365
video_api_set_stream_t set_stream
Definition video.h:355
video_api_set_frmival_t set_frmival
Definition video.h:364
Video frame interval enumeration structure.
Definition video.h:191
uint32_t index
frame interval index during enumeration
Definition video.h:193
const struct video_format * format
video format for which the query is made
Definition video.h:195
enum video_frmival_type type
frame interval type the device supports
Definition video.h:197
Video frame interval stepwise structure.
Definition video.h:176
struct video_frmival min
minimum frame interval in seconds
Definition video.h:178
struct video_frmival max
maximum frame interval in seconds
Definition video.h:180
struct video_frmival step
frame interval step size in seconds
Definition video.h:182
Video frame interval structure.
Definition video.h:163
uint32_t numerator
numerator of the frame interval
Definition video.h:165
uint32_t denominator
denominator of the frame interval
Definition video.h:167