VIDEO(9) | Kernel Developer's Manual | VIDEO(9) |
device_t
video_attach_mi(const struct video_hw_if *hw_if, device_t hw_dev);
void
video_submit_payload(device_t vl_dev, const struct video_payload *payload);
The high level video driver attaches to the low level driver when the latter calls video_attach_mi. The video_hw_if struct is as shown below. dev is the device struct for the hardware device. Return value is the video layer device.
struct video_hw_if { int (*open)(void *, int); /* open hardware */ void (*close)(void *); /* close hardware */ const char * (*get_devname)(void *); int (*enum_format)(void *, uint32_t, struct video_format *); int (*get_format)(void *, struct video_format *); int (*set_format)(void *, struct video_format *); int (*try_format)(void *, struct video_format *); int (*start_transfer)(void *); int (*stop_transfer)(void *); int (*control_iter_init)(void *, struct video_control_iter *); int (*control_iter_next)(void *, struct video_control_iter *); int (*get_control_desc_group)(void *, struct video_control_desc_group *); int (*get_control_group)(void *, struct video_control_group *); int (*set_control_group)(void *, const struct video_control_group *); };
The upper layer of the video driver allocates buffers for video samples. The hardware driver submits data to the video layer with video_submit_payload. vl_dev is the video layer device returned by video_attach_mi.
struct video_payload { const uint8_t *data; size_t size; int frameno; bool end_of_frame; };
July 24, 2008 | NetBSD 6.1 |