diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2019-01-27 16:13:33 +0100 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2019-01-29 15:34:20 +0100 |
commit | 267b91373b86f070b3b19ed1dd5c27d26261e277 (patch) | |
tree | d54eb01bdb7b1d3dacc32e4e392b29ec01f29c82 | |
parent | 4f32a3b408430f9bbbac260e8aedd1b90244639d (diff) |
libcamera: v4l2-format: Add V4L2DeviceFormat
Add a V4L2DeviceFormat class aimed to be used to provide format configuration
requests to a V4L2Device.
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | src/libcamera/include/v4l2_device.h | 14 | ||||
-rw-r--r-- | src/libcamera/v4l2_device.cpp | 56 |
2 files changed, 70 insertions, 0 deletions
diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h index c67ebbff..c70959e6 100644 --- a/src/libcamera/include/v4l2_device.h +++ b/src/libcamera/include/v4l2_device.h @@ -53,6 +53,20 @@ struct V4L2Capability final : v4l2_capability { } }; +class V4L2DeviceFormat +{ +public: + uint32_t width; + uint32_t height; + uint32_t fourcc; + + struct { + uint32_t size; + uint32_t bpl; + } planesFmt[3]; + unsigned int planes; +}; + class MediaEntity; class V4L2Device { diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp index 408f9b93..d6143f2b 100644 --- a/src/libcamera/v4l2_device.cpp +++ b/src/libcamera/v4l2_device.cpp @@ -81,6 +81,62 @@ LOG_DEFINE_CATEGORY(V4L2) */ /** + * \class V4L2DeviceFormat + * \brief The V4L2 device image format and sizes + * + * Describes the image format and image sizes to be programmed on a V4L2 + * video device. The image format is defined by fourcc code as defined by + * the V4L2 APIs with the V4L2_PIX_FMT_ macros, a visible width and height + * and a variable number of planes (1 to 3) with variable sizes and line + * strides. + * + * Formats defined as 'single planar' by the V4L2 APIs are represented with + * V4L2DeviceFormat instances with a single plane + * (V4L2DeviceFormat::planes = 1). Semi-planar and multiplanar formats use + * 2 and 3 planes respectively. + * + * V4L2DeviceFormat defines the exchange format between components that + * receive image configuration requests from applications and a V4L2Device. + * The V4L2Device validates and applies the requested size and format to + * the device driver. + */ + +/** + * \var V4L2DeviceFormat::width + * \brief The image width + */ + +/** + * \var V4L2DeviceFormat::height + * \brief The image height + */ + +/** + * \var V4L2DeviceFormat::fourcc + * \brief The pixel encoding scheme + * + * The fourcc code, as defined by the V4L2 APIs with the V4L2_PIX_FMT_ macros, + * that identifies the image format pixel encoding scheme. + */ + +/** + * \var V4L2DeviceFormat::planesFmt + * \brief The per-plane size information + * + * Images are stored in memory in one or more data planes. Each data plane + * has a specific size and line length, which could differ from the image + * visible sizes to accommodate line or plane padding data. + * + * Only the first V4L2DeviceFormat::planes entries are considered valid. + * + */ + +/** + * \var V4L2DeviceFormat::planes + * \brief The number of valid data planes + */ + +/** * \class V4L2Device * \brief V4L2Device object and API * |