| 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 7.0 |