1.. _video_api:
2
3Video
4#####
5
6The video driver API offers a generic interface to video devices.
7
8Basic Operation
9***************
10
11Video Device
12============
13
14A video device is the abstraction of a hardware or software video function,
15which can produce, process, consume or transform video data. The video API is
16designed to offer flexible way to create, handle and combine various video
17devices.
18
19Endpoint
20========
21
22Each video device can have one or more endpoints. Output endpoints configure
23video output function and generate data. Input endpoints configure video input
24function and consume data.
25
26Video Buffer
27============
28
29A video buffer provides the transport mechanism for the data. There is no
30particular requirement on the content. The requirement for the content is
31defined by the endpoint format. A video buffer can be queued to a device
32endpoint for filling (input ep) or consuming (output ep) operation, once
33the operation is achieved, buffer can be dequeued for post-processing,
34release or reuse.
35
36Controls
37========
38
39A video control is accessed and identified by a CID (control identifier). It
40represents a video control property. Different devices will have different
41controls available which can be generic, related to a device class or vendor
42specific. The set/get control functions provide a generic scalable interface
43to handle and create controls.
44
45Configuration Options
46*********************
47
48Related configuration options:
49
50* :kconfig:option:`CONFIG_VIDEO`
51
52API Reference
53*************
54
55.. doxygengroup:: video_interface
56
57.. doxygengroup:: video_controls
58