zephyr/include/drivers/video-controls.h
Loic Poulain 32169886ca drivers: Add video API
This generic video API can be used to capture/output video frames.

Once a video buffer is enqueued to a video device endpoint, device owns
the buffer and can process to capture (camera), output (disk, display),
convert (hw encoder)... User can then call dequeue to retrieve
the processed buffer (video driver ensure cache coherency).

Once dequeued, video buffer is owned by user (e.g. for frame
processing, display buffer update, write to media, etc...).

For each video-buffer, user needs allocate the associated frame buffer
via video_buffer_alloc. Buffer format is defined by video device
endpoint configuration. Video device can be controlled (e.g. contrast,
brightness, flip...) via controls.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2019-10-25 15:13:53 -05:00

60 lines
1.4 KiB
C

/**
* @file
*
* @brief Public APIs for Video.
*/
/*
* Copyright (c) 2019 Linaro Limited.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_VIDEO_CONTROLS_H_
#define ZEPHYR_INCLUDE_VIDEO_CONTROLS_H_
/**
* @brief Video controls
* @defgroup video_controls Video Controls
* @ingroup io_interfaces
* @{
*/
#include <device.h>
#include <stddef.h>
#include <zephyr.h>
#include <zephyr/types.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Control classes */
#define VIDEO_CTRL_CLASS_GENERIC 0x00000000 /* Generic class controls */
#define VIDEO_CTRL_CLASS_CAMERA 0x00010000 /* Camera class controls */
#define VIDEO_CTRL_CLASS_MPEG 0x00020000 /* MPEG-compression controls */
#define VIDEO_CTRL_CLASS_JPEG 0x00030000 /* JPEG-compression controls */
#define VIDEO_CTRL_CLASS_VENDOR 0xFFFF0000 /* Vendor-specific class controls */
/* Generic class control IDs */
#define VIDEO_CID_HFLIP (VIDEO_CTRL_CLASS_GENERIC + 0) /* Mirror the picture horizontally */
#define VIDEO_CID_VFLIP (VIDEO_CTRL_CLASS_GENERIC + 1) /* Mirror the picture vertically */
/* Camera class control IDs */
#define VIDEO_CID_CAMERA_EXPOSURE (VIDEO_CTRL_CLASS_CAMERA + 0)
#define VIDEO_CID_CAMERA_GAIN (VIDEO_CTRL_CLASS_CAMERA + 1)
#define VIDEO_CID_CAMERA_ZOOM (VIDEO_CTRL_CLASS_CAMERA + 2)
#ifdef __cplusplus
}
#endif
/* Controls */
/**
* @}
*/
#endif /* ZEPHYR_INCLUDE_VIDEO_H_ */