.. _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: * :option:`CONFIG_VIDEO` API Reference ************* .. doxygengroup:: video_interface :project: Zephyr .. doxygengroup:: video_controls :project: Zephyr