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