| .. _video_api: |
| |
| Video |
| ##### |
| |
| The video driver API offers a generic interface to video devices. |
| |
| Basic Operation |
| *************** |
| |
| Video Device |
| ============ |
| |
| A video device is the abstraction of a hardware or software video function, |
| which can produce, process, consume or transform video data. The video API is |
| designed to offer flexible way to create, handle and combine various video |
| devices. |
| |
| Endpoint |
| ======== |
| |
| Each video device can have one or more endpoints. Output endpoints configure |
| video output function and generate data. Input endpoints configure video input |
| function and consume data. |
| |
| Video Buffer |
| ============ |
| |
| A video buffer provides the transport mechanism for the data. There is no |
| particular requirement on the content. The requirement for the content is |
| defined by the endpoint format. A video buffer can be queued to a device |
| endpoint for filling (input ep) or consuming (output ep) operation, once |
| the operation is achieved, buffer can be dequeued for post-processing, |
| release or reuse. |
| |
| Controls |
| ======== |
| |
| A video control is accessed and identified by a CID (control identifier). It |
| represents a video control property. Different devices will have different |
| controls available which can be generic, related to a device class or vendor |
| specific. The set/get control functions provide a generic scalable interface |
| to handle and create controls. |
| |
| Configuration Options |
| ********************* |
| |
| Related configuration options: |
| |
| * :kconfig:option:`CONFIG_VIDEO` |
| |
| API Reference |
| ************* |
| |
| .. doxygengroup:: video_interface |
| |
| .. doxygengroup:: video_controls |