include: linux: Update kernel headers to version v5.16-rc7
Updated kernel headers to v5.16-rc7 using utils/update-kernel-headers.sh and re-instating libcamera local modifications. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
d769a59566
commit
aa45336399
8 changed files with 625 additions and 40 deletions
|
@ -1,4 +1,4 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
Files in this directory are imported from v5.12-rc1 of the Linux kernel. Do not
|
Files in this directory are imported from v5.16-rc7 of the Linux kernel. Do not
|
||||||
modify them manually.
|
modify them manually.
|
||||||
|
|
|
@ -22,8 +22,56 @@
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
/* begin/end dma-buf functions used for userspace mmap. */
|
/**
|
||||||
|
* struct dma_buf_sync - Synchronize with CPU access.
|
||||||
|
*
|
||||||
|
* When a DMA buffer is accessed from the CPU via mmap, it is not always
|
||||||
|
* possible to guarantee coherency between the CPU-visible map and underlying
|
||||||
|
* memory. To manage coherency, DMA_BUF_IOCTL_SYNC must be used to bracket
|
||||||
|
* any CPU access to give the kernel the chance to shuffle memory around if
|
||||||
|
* needed.
|
||||||
|
*
|
||||||
|
* Prior to accessing the map, the client must call DMA_BUF_IOCTL_SYNC
|
||||||
|
* with DMA_BUF_SYNC_START and the appropriate read/write flags. Once the
|
||||||
|
* access is complete, the client should call DMA_BUF_IOCTL_SYNC with
|
||||||
|
* DMA_BUF_SYNC_END and the same read/write flags.
|
||||||
|
*
|
||||||
|
* The synchronization provided via DMA_BUF_IOCTL_SYNC only provides cache
|
||||||
|
* coherency. It does not prevent other processes or devices from
|
||||||
|
* accessing the memory at the same time. If synchronization with a GPU or
|
||||||
|
* other device driver is required, it is the client's responsibility to
|
||||||
|
* wait for buffer to be ready for reading or writing before calling this
|
||||||
|
* ioctl with DMA_BUF_SYNC_START. Likewise, the client must ensure that
|
||||||
|
* follow-up work is not submitted to GPU or other device driver until
|
||||||
|
* after this ioctl has been called with DMA_BUF_SYNC_END?
|
||||||
|
*
|
||||||
|
* If the driver or API with which the client is interacting uses implicit
|
||||||
|
* synchronization, waiting for prior work to complete can be done via
|
||||||
|
* poll() on the DMA buffer file descriptor. If the driver or API requires
|
||||||
|
* explicit synchronization, the client may have to wait on a sync_file or
|
||||||
|
* other synchronization primitive outside the scope of the DMA buffer API.
|
||||||
|
*/
|
||||||
struct dma_buf_sync {
|
struct dma_buf_sync {
|
||||||
|
/**
|
||||||
|
* @flags: Set of access flags
|
||||||
|
*
|
||||||
|
* DMA_BUF_SYNC_START:
|
||||||
|
* Indicates the start of a map access session.
|
||||||
|
*
|
||||||
|
* DMA_BUF_SYNC_END:
|
||||||
|
* Indicates the end of a map access session.
|
||||||
|
*
|
||||||
|
* DMA_BUF_SYNC_READ:
|
||||||
|
* Indicates that the mapped DMA buffer will be read by the
|
||||||
|
* client via the CPU map.
|
||||||
|
*
|
||||||
|
* DMA_BUF_SYNC_WRITE:
|
||||||
|
* Indicates that the mapped DMA buffer will be written by the
|
||||||
|
* client via the CPU map.
|
||||||
|
*
|
||||||
|
* DMA_BUF_SYNC_RW:
|
||||||
|
* An alias for DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE.
|
||||||
|
*/
|
||||||
__u64 flags;
|
__u64 flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -174,6 +174,13 @@ extern "C" {
|
||||||
#define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */
|
#define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */
|
||||||
#define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */
|
#define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */
|
||||||
|
|
||||||
|
/* 64 bpp RGB */
|
||||||
|
#define DRM_FORMAT_XRGB16161616 fourcc_code('X', 'R', '4', '8') /* [63:0] x:R:G:B 16:16:16:16 little endian */
|
||||||
|
#define DRM_FORMAT_XBGR16161616 fourcc_code('X', 'B', '4', '8') /* [63:0] x:B:G:R 16:16:16:16 little endian */
|
||||||
|
|
||||||
|
#define DRM_FORMAT_ARGB16161616 fourcc_code('A', 'R', '4', '8') /* [63:0] A:R:G:B 16:16:16:16 little endian */
|
||||||
|
#define DRM_FORMAT_ABGR16161616 fourcc_code('A', 'B', '4', '8') /* [63:0] A:B:G:R 16:16:16:16 little endian */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Floating point 64bpp RGB
|
* Floating point 64bpp RGB
|
||||||
* IEEE 754-2008 binary16 half-precision float
|
* IEEE 754-2008 binary16 half-precision float
|
||||||
|
@ -437,6 +444,12 @@ extern "C" {
|
||||||
|
|
||||||
#define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
|
#define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
|
||||||
|
|
||||||
|
#define fourcc_mod_get_vendor(modifier) \
|
||||||
|
(((modifier) >> 56) & 0xff)
|
||||||
|
|
||||||
|
#define fourcc_mod_is_vendor(modifier, vendor) \
|
||||||
|
(fourcc_mod_get_vendor(modifier) == DRM_FORMAT_MOD_VENDOR_## vendor)
|
||||||
|
|
||||||
#define fourcc_mod_code(vendor, val) \
|
#define fourcc_mod_code(vendor, val) \
|
||||||
((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | ((val) & 0x00ffffffffffffffULL))
|
((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | ((val) & 0x00ffffffffffffffULL))
|
||||||
|
|
||||||
|
@ -974,9 +987,9 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The top 4 bits (out of the 56 bits alloted for specifying vendor specific
|
* The top 4 bits (out of the 56 bits alloted for specifying vendor specific
|
||||||
* modifiers) denote the category for modifiers. Currently we have only two
|
* modifiers) denote the category for modifiers. Currently we have three
|
||||||
* categories of modifiers ie AFBC and MISC. We can have a maximum of sixteen
|
* categories of modifiers ie AFBC, MISC and AFRC. We can have a maximum of
|
||||||
* different categories.
|
* sixteen different categories.
|
||||||
*/
|
*/
|
||||||
#define DRM_FORMAT_MOD_ARM_CODE(__type, __val) \
|
#define DRM_FORMAT_MOD_ARM_CODE(__type, __val) \
|
||||||
fourcc_mod_code(ARM, ((__u64)(__type) << 52) | ((__val) & 0x000fffffffffffffULL))
|
fourcc_mod_code(ARM, ((__u64)(__type) << 52) | ((__val) & 0x000fffffffffffffULL))
|
||||||
|
@ -1091,6 +1104,109 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
||||||
*/
|
*/
|
||||||
#define AFBC_FORMAT_MOD_USM (1ULL << 12)
|
#define AFBC_FORMAT_MOD_USM (1ULL << 12)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Arm Fixed-Rate Compression (AFRC) modifiers
|
||||||
|
*
|
||||||
|
* AFRC is a proprietary fixed rate image compression protocol and format,
|
||||||
|
* designed to provide guaranteed bandwidth and memory footprint
|
||||||
|
* reductions in graphics and media use-cases.
|
||||||
|
*
|
||||||
|
* AFRC buffers consist of one or more planes, with the same components
|
||||||
|
* and meaning as an uncompressed buffer using the same pixel format.
|
||||||
|
*
|
||||||
|
* Within each plane, the pixel/luma/chroma values are grouped into
|
||||||
|
* "coding unit" blocks which are individually compressed to a
|
||||||
|
* fixed size (in bytes). All coding units within a given plane of a buffer
|
||||||
|
* store the same number of values, and have the same compressed size.
|
||||||
|
*
|
||||||
|
* The coding unit size is configurable, allowing different rates of compression.
|
||||||
|
*
|
||||||
|
* The start of each AFRC buffer plane must be aligned to an alignment granule which
|
||||||
|
* depends on the coding unit size.
|
||||||
|
*
|
||||||
|
* Coding Unit Size Plane Alignment
|
||||||
|
* ---------------- ---------------
|
||||||
|
* 16 bytes 1024 bytes
|
||||||
|
* 24 bytes 512 bytes
|
||||||
|
* 32 bytes 2048 bytes
|
||||||
|
*
|
||||||
|
* Coding units are grouped into paging tiles. AFRC buffer dimensions must be aligned
|
||||||
|
* to a multiple of the paging tile dimensions.
|
||||||
|
* The dimensions of each paging tile depend on whether the buffer is optimised for
|
||||||
|
* scanline (SCAN layout) or rotated (ROT layout) access.
|
||||||
|
*
|
||||||
|
* Layout Paging Tile Width Paging Tile Height
|
||||||
|
* ------ ----------------- ------------------
|
||||||
|
* SCAN 16 coding units 4 coding units
|
||||||
|
* ROT 8 coding units 8 coding units
|
||||||
|
*
|
||||||
|
* The dimensions of each coding unit depend on the number of components
|
||||||
|
* in the compressed plane and whether the buffer is optimised for
|
||||||
|
* scanline (SCAN layout) or rotated (ROT layout) access.
|
||||||
|
*
|
||||||
|
* Number of Components in Plane Layout Coding Unit Width Coding Unit Height
|
||||||
|
* ----------------------------- --------- ----------------- ------------------
|
||||||
|
* 1 SCAN 16 samples 4 samples
|
||||||
|
* Example: 16x4 luma samples in a 'Y' plane
|
||||||
|
* 16x4 chroma 'V' values, in the 'V' plane of a fully-planar YUV buffer
|
||||||
|
* ----------------------------- --------- ----------------- ------------------
|
||||||
|
* 1 ROT 8 samples 8 samples
|
||||||
|
* Example: 8x8 luma samples in a 'Y' plane
|
||||||
|
* 8x8 chroma 'V' values, in the 'V' plane of a fully-planar YUV buffer
|
||||||
|
* ----------------------------- --------- ----------------- ------------------
|
||||||
|
* 2 DONT CARE 8 samples 4 samples
|
||||||
|
* Example: 8x4 chroma pairs in the 'UV' plane of a semi-planar YUV buffer
|
||||||
|
* ----------------------------- --------- ----------------- ------------------
|
||||||
|
* 3 DONT CARE 4 samples 4 samples
|
||||||
|
* Example: 4x4 pixels in an RGB buffer without alpha
|
||||||
|
* ----------------------------- --------- ----------------- ------------------
|
||||||
|
* 4 DONT CARE 4 samples 4 samples
|
||||||
|
* Example: 4x4 pixels in an RGB buffer with alpha
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DRM_FORMAT_MOD_ARM_TYPE_AFRC 0x02
|
||||||
|
|
||||||
|
#define DRM_FORMAT_MOD_ARM_AFRC(__afrc_mode) \
|
||||||
|
DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFRC, __afrc_mode)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AFRC coding unit size modifier.
|
||||||
|
*
|
||||||
|
* Indicates the number of bytes used to store each compressed coding unit for
|
||||||
|
* one or more planes in an AFRC encoded buffer. The coding unit size for chrominance
|
||||||
|
* is the same for both Cb and Cr, which may be stored in separate planes.
|
||||||
|
*
|
||||||
|
* AFRC_FORMAT_MOD_CU_SIZE_P0 indicates the number of bytes used to store
|
||||||
|
* each compressed coding unit in the first plane of the buffer. For RGBA buffers
|
||||||
|
* this is the only plane, while for semi-planar and fully-planar YUV buffers,
|
||||||
|
* this corresponds to the luma plane.
|
||||||
|
*
|
||||||
|
* AFRC_FORMAT_MOD_CU_SIZE_P12 indicates the number of bytes used to store
|
||||||
|
* each compressed coding unit in the second and third planes in the buffer.
|
||||||
|
* For semi-planar and fully-planar YUV buffers, this corresponds to the chroma plane(s).
|
||||||
|
*
|
||||||
|
* For single-plane buffers, AFRC_FORMAT_MOD_CU_SIZE_P0 must be specified
|
||||||
|
* and AFRC_FORMAT_MOD_CU_SIZE_P12 must be zero.
|
||||||
|
* For semi-planar and fully-planar buffers, both AFRC_FORMAT_MOD_CU_SIZE_P0 and
|
||||||
|
* AFRC_FORMAT_MOD_CU_SIZE_P12 must be specified.
|
||||||
|
*/
|
||||||
|
#define AFRC_FORMAT_MOD_CU_SIZE_MASK 0xf
|
||||||
|
#define AFRC_FORMAT_MOD_CU_SIZE_16 (1ULL)
|
||||||
|
#define AFRC_FORMAT_MOD_CU_SIZE_24 (2ULL)
|
||||||
|
#define AFRC_FORMAT_MOD_CU_SIZE_32 (3ULL)
|
||||||
|
|
||||||
|
#define AFRC_FORMAT_MOD_CU_SIZE_P0(__afrc_cu_size) (__afrc_cu_size)
|
||||||
|
#define AFRC_FORMAT_MOD_CU_SIZE_P12(__afrc_cu_size) ((__afrc_cu_size) << 4)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AFRC scanline memory layout.
|
||||||
|
*
|
||||||
|
* Indicates if the buffer uses the scanline-optimised layout
|
||||||
|
* for an AFRC encoded buffer, otherwise, it uses the rotation-optimised layout.
|
||||||
|
* The memory layout is the same for all planes.
|
||||||
|
*/
|
||||||
|
#define AFRC_FORMAT_MOD_LAYOUT_SCAN (1ULL << 8)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Arm 16x16 Block U-Interleaved modifier
|
* Arm 16x16 Block U-Interleaved modifier
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||||
/* Copyright (C) 2017 - 2018 Intel Corporation */
|
/* Copyright (C) 2017 - 2018 Intel Corporation */
|
||||||
|
|
||||||
#ifndef __IPU3_UAPI_H
|
#ifndef __IPU3_UAPI_H
|
||||||
|
@ -9,8 +9,10 @@
|
||||||
/* from /drivers/staging/media/ipu3/include/videodev2.h */
|
/* from /drivers/staging/media/ipu3/include/videodev2.h */
|
||||||
|
|
||||||
/* Vendor specific - used for IPU3 camera sub-system */
|
/* Vendor specific - used for IPU3 camera sub-system */
|
||||||
#define V4L2_META_FMT_IPU3_PARAMS v4l2_fourcc('i', 'p', '3', 'p') /* IPU3 processing parameters */
|
/* IPU3 processing parameters */
|
||||||
#define V4L2_META_FMT_IPU3_STAT_3A v4l2_fourcc('i', 'p', '3', 's') /* IPU3 3A statistics */
|
#define V4L2_META_FMT_IPU3_PARAMS v4l2_fourcc('i', 'p', '3', 'p')
|
||||||
|
/* IPU3 3A statistics */
|
||||||
|
#define V4L2_META_FMT_IPU3_STAT_3A v4l2_fourcc('i', 'p', '3', 's')
|
||||||
|
|
||||||
/* from include/uapi/linux/v4l2-controls.h */
|
/* from include/uapi/linux/v4l2-controls.h */
|
||||||
#define V4L2_CID_INTEL_IPU3_BASE (V4L2_CID_USER_BASE + 0x10c0)
|
#define V4L2_CID_INTEL_IPU3_BASE (V4L2_CID_USER_BASE + 0x10c0)
|
||||||
|
@ -255,7 +257,9 @@ struct ipu3_uapi_ae_ccm {
|
||||||
* struct ipu3_uapi_ae_config - AE config
|
* struct ipu3_uapi_ae_config - AE config
|
||||||
*
|
*
|
||||||
* @grid_cfg: config for auto exposure statistics grid. See struct
|
* @grid_cfg: config for auto exposure statistics grid. See struct
|
||||||
* &ipu3_uapi_ae_grid_config
|
* &ipu3_uapi_ae_grid_config, as Imgu did not support output
|
||||||
|
* auto exposure statistics, so user can ignore this configuration
|
||||||
|
* and use the RGB table in auto-whitebalance statistics instead.
|
||||||
* @weights: &IPU3_UAPI_AE_WEIGHTS is based on 32x24 blocks in the grid.
|
* @weights: &IPU3_UAPI_AE_WEIGHTS is based on 32x24 blocks in the grid.
|
||||||
* Each grid cell has a corresponding value in weights LUT called
|
* Each grid cell has a corresponding value in weights LUT called
|
||||||
* grid value, global histogram is updated based on grid value and
|
* grid value, global histogram is updated based on grid value and
|
||||||
|
@ -266,8 +270,8 @@ struct ipu3_uapi_ae_ccm {
|
||||||
*/
|
*/
|
||||||
struct ipu3_uapi_ae_config {
|
struct ipu3_uapi_ae_config {
|
||||||
struct ipu3_uapi_ae_grid_config grid_cfg __attribute__((aligned(32)));
|
struct ipu3_uapi_ae_grid_config grid_cfg __attribute__((aligned(32)));
|
||||||
struct ipu3_uapi_ae_weight_elem weights[
|
struct ipu3_uapi_ae_weight_elem weights[IPU3_UAPI_AE_WEIGHTS]
|
||||||
IPU3_UAPI_AE_WEIGHTS] __attribute__((aligned(32)));
|
__attribute__((aligned(32)));
|
||||||
struct ipu3_uapi_ae_ccm ae_ccm __attribute__((aligned(32)));
|
struct ipu3_uapi_ae_ccm ae_ccm __attribute__((aligned(32)));
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
@ -555,6 +559,9 @@ struct ipu3_uapi_ff_status {
|
||||||
*
|
*
|
||||||
* @awb_raw_buffer: auto white balance meta data &ipu3_uapi_awb_raw_buffer
|
* @awb_raw_buffer: auto white balance meta data &ipu3_uapi_awb_raw_buffer
|
||||||
* @ae_raw_buffer: auto exposure raw data &ipu3_uapi_ae_raw_buffer_aligned
|
* @ae_raw_buffer: auto exposure raw data &ipu3_uapi_ae_raw_buffer_aligned
|
||||||
|
* current Imgu does not output the auto exposure statistics
|
||||||
|
* to ae_raw_buffer, the user such as 3A algorithm can use the
|
||||||
|
* RGB table in &ipu3_uapi_awb_raw_buffer to do auto-exposure.
|
||||||
* @af_raw_buffer: &ipu3_uapi_af_raw_buffer for auto focus meta data
|
* @af_raw_buffer: &ipu3_uapi_af_raw_buffer for auto focus meta data
|
||||||
* @awb_fr_raw_buffer: value as specified by &ipu3_uapi_awb_fr_raw_buffer
|
* @awb_fr_raw_buffer: value as specified by &ipu3_uapi_awb_fr_raw_buffer
|
||||||
* @stats_4a_config: 4a statistics config as defined by &ipu3_uapi_4a_config.
|
* @stats_4a_config: 4a statistics config as defined by &ipu3_uapi_4a_config.
|
||||||
|
@ -652,7 +659,7 @@ struct ipu3_uapi_bnr_static_config_wb_gains_thr_config {
|
||||||
* @cg: Gain coefficient for threshold calculation, [0, 31], default 8.
|
* @cg: Gain coefficient for threshold calculation, [0, 31], default 8.
|
||||||
* @ci: Intensity coefficient for threshold calculation. range [0, 0x1f]
|
* @ci: Intensity coefficient for threshold calculation. range [0, 0x1f]
|
||||||
* default 6.
|
* default 6.
|
||||||
* format: u3.2 (3 most significant bits represent whole number,
|
* format: u3.2 (3 most significant bits represent whole number,
|
||||||
* 2 least significant bits represent the fractional part
|
* 2 least significant bits represent the fractional part
|
||||||
* with each count representing 0.25)
|
* with each count representing 0.25)
|
||||||
* e.g. 6 in binary format is 00110, that translates to 1.5
|
* e.g. 6 in binary format is 00110, that translates to 1.5
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#define RKISP1_CIF_ISP_MODULE_BLS (1U << 1)
|
#define RKISP1_CIF_ISP_MODULE_BLS (1U << 1)
|
||||||
/* Sensor De-gamma */
|
/* Sensor De-gamma */
|
||||||
#define RKISP1_CIF_ISP_MODULE_SDG (1U << 2)
|
#define RKISP1_CIF_ISP_MODULE_SDG (1U << 2)
|
||||||
/* Histogram */
|
/* Histogram statistics configuration */
|
||||||
#define RKISP1_CIF_ISP_MODULE_HST (1U << 3)
|
#define RKISP1_CIF_ISP_MODULE_HST (1U << 3)
|
||||||
/* Lens Shade Control */
|
/* Lens Shade Control */
|
||||||
#define RKISP1_CIF_ISP_MODULE_LSC (1U << 4)
|
#define RKISP1_CIF_ISP_MODULE_LSC (1U << 4)
|
||||||
|
@ -31,13 +31,13 @@
|
||||||
#define RKISP1_CIF_ISP_MODULE_GOC (1U << 9)
|
#define RKISP1_CIF_ISP_MODULE_GOC (1U << 9)
|
||||||
/* Color Processing */
|
/* Color Processing */
|
||||||
#define RKISP1_CIF_ISP_MODULE_CPROC (1U << 10)
|
#define RKISP1_CIF_ISP_MODULE_CPROC (1U << 10)
|
||||||
/* Auto Focus Control */
|
/* Auto Focus Control statistics configuration */
|
||||||
#define RKISP1_CIF_ISP_MODULE_AFC (1U << 11)
|
#define RKISP1_CIF_ISP_MODULE_AFC (1U << 11)
|
||||||
/* Auto White Balancing */
|
/* Auto White Balancing statistics configuration */
|
||||||
#define RKISP1_CIF_ISP_MODULE_AWB (1U << 12)
|
#define RKISP1_CIF_ISP_MODULE_AWB (1U << 12)
|
||||||
/* Image Effect */
|
/* Image Effect */
|
||||||
#define RKISP1_CIF_ISP_MODULE_IE (1U << 13)
|
#define RKISP1_CIF_ISP_MODULE_IE (1U << 13)
|
||||||
/* Auto Exposure Control */
|
/* Auto Exposure Control statistics configuration */
|
||||||
#define RKISP1_CIF_ISP_MODULE_AEC (1U << 14)
|
#define RKISP1_CIF_ISP_MODULE_AEC (1U << 14)
|
||||||
/* Wide Dynamic Range */
|
/* Wide Dynamic Range */
|
||||||
#define RKISP1_CIF_ISP_MODULE_WDR (1U << 15)
|
#define RKISP1_CIF_ISP_MODULE_WDR (1U << 15)
|
||||||
|
@ -411,7 +411,7 @@ struct rkisp1_cif_isp_cproc_config {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rkisp1_cif_isp_awb_meas_config - Configuration used by auto white balance
|
* struct rkisp1_cif_isp_awb_meas_config - Configuration for the AWB statistics
|
||||||
*
|
*
|
||||||
* @awb_mode: the awb meas mode. From enum rkisp1_cif_isp_awb_mode_type.
|
* @awb_mode: the awb meas mode. From enum rkisp1_cif_isp_awb_mode_type.
|
||||||
* @awb_wnd: white balance measurement window (in pixels)
|
* @awb_wnd: white balance measurement window (in pixels)
|
||||||
|
@ -550,7 +550,7 @@ struct rkisp1_cif_isp_goc_config {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rkisp1_cif_isp_hst_config - Configuration used by Histogram
|
* struct rkisp1_cif_isp_hst_config - Configuration for Histogram statistics
|
||||||
*
|
*
|
||||||
* @mode: histogram mode (from enum rkisp1_cif_isp_histogram_mode)
|
* @mode: histogram mode (from enum rkisp1_cif_isp_histogram_mode)
|
||||||
* @histogram_predivider: process every stepsize pixel, all other pixels are
|
* @histogram_predivider: process every stepsize pixel, all other pixels are
|
||||||
|
@ -575,7 +575,7 @@ struct rkisp1_cif_isp_hst_config {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rkisp1_cif_isp_aec_config - Configuration used by Auto Exposure Control
|
* struct rkisp1_cif_isp_aec_config - Configuration for Auto Exposure statistics
|
||||||
*
|
*
|
||||||
* @mode: Exposure measure mode (from enum rkisp1_cif_isp_exp_meas_mode)
|
* @mode: Exposure measure mode (from enum rkisp1_cif_isp_exp_meas_mode)
|
||||||
* @autostop: stop mode (from enum rkisp1_cif_isp_exp_ctrl_autostop)
|
* @autostop: stop mode (from enum rkisp1_cif_isp_exp_ctrl_autostop)
|
||||||
|
@ -588,7 +588,7 @@ struct rkisp1_cif_isp_aec_config {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rkisp1_cif_isp_afc_config - Configuration used by Auto Focus Control
|
* struct rkisp1_cif_isp_afc_config - Configuration for the Auto Focus statistics
|
||||||
*
|
*
|
||||||
* @num_afm_win: max RKISP1_CIF_ISP_AFM_MAX_WINDOWS
|
* @num_afm_win: max RKISP1_CIF_ISP_AFM_MAX_WINDOWS
|
||||||
* @afm_win: coordinates of the meas window
|
* @afm_win: coordinates of the meas window
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#ifndef __LINUX_V4L2_CONTROLS_H
|
#ifndef __LINUX_V4L2_CONTROLS_H
|
||||||
#define __LINUX_V4L2_CONTROLS_H
|
#define __LINUX_V4L2_CONTROLS_H
|
||||||
|
|
||||||
|
#include <linux/const.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
/* Control classes */
|
/* Control classes */
|
||||||
|
@ -66,6 +67,7 @@
|
||||||
#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */
|
#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */
|
||||||
#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */
|
#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */
|
||||||
#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000 /* Stateless codecs controls */
|
#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000 /* Stateless codecs controls */
|
||||||
|
#define V4L2_CTRL_CLASS_COLORIMETRY 0x00a50000 /* Colorimetry controls */
|
||||||
|
|
||||||
/* User-class control IDs */
|
/* User-class control IDs */
|
||||||
|
|
||||||
|
@ -213,6 +215,11 @@ enum v4l2_colorfx {
|
||||||
/* The base for the bcm2835-isp driver controls.
|
/* The base for the bcm2835-isp driver controls.
|
||||||
* We reserve 16 controls for this driver. */
|
* We reserve 16 controls for this driver. */
|
||||||
#define V4L2_CID_USER_BCM2835_ISP_BASE (V4L2_CID_USER_BASE + 0x10e0)
|
#define V4L2_CID_USER_BCM2835_ISP_BASE (V4L2_CID_USER_BASE + 0x10e0)
|
||||||
|
/*
|
||||||
|
* The base for Allegro driver controls.
|
||||||
|
* We reserve 16 controls for this driver.
|
||||||
|
*/
|
||||||
|
#define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
|
||||||
|
|
||||||
/* MPEG-class control IDs */
|
/* MPEG-class control IDs */
|
||||||
/* The MPEG controls are applicable to all codec controls
|
/* The MPEG controls are applicable to all codec controls
|
||||||
|
@ -430,6 +437,12 @@ enum v4l2_mpeg_video_multi_slice_mode {
|
||||||
#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_CODEC_BASE+228)
|
#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_CODEC_BASE+228)
|
||||||
#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_CODEC_BASE+229)
|
#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_CODEC_BASE+229)
|
||||||
#define V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (V4L2_CID_CODEC_BASE+230)
|
#define V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (V4L2_CID_CODEC_BASE+230)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_AU_DELIMITER (V4L2_CID_CODEC_BASE+231)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_LTR_COUNT (V4L2_CID_CODEC_BASE+232)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (V4L2_CID_CODEC_BASE+233)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE+234)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE+235)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE+236)
|
||||||
|
|
||||||
/* CIDs for the MPEG-2 Part 2 (H.262) codec */
|
/* CIDs for the MPEG-2 Part 2 (H.262) codec */
|
||||||
#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
|
#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
|
||||||
|
@ -799,6 +812,9 @@ enum v4l2_mpeg_video_frame_skip_mode {
|
||||||
#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 651)
|
#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 651)
|
||||||
#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 652)
|
#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 652)
|
||||||
|
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY (V4L2_CID_CODEC_BASE + 653)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_BASE + 654)
|
||||||
|
|
||||||
/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
|
/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
|
||||||
#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
|
#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
|
||||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+0)
|
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+0)
|
||||||
|
@ -1109,6 +1125,7 @@ enum v4l2_jpeg_chroma_subsampling {
|
||||||
#define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
|
#define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
|
||||||
#define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
|
#define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
|
||||||
#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
|
#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
|
||||||
|
#define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
|
||||||
|
|
||||||
|
|
||||||
/* Image processing controls */
|
/* Image processing controls */
|
||||||
|
@ -1331,7 +1348,7 @@ struct v4l2_ctrl_h264_sps {
|
||||||
* struct v4l2_ctrl_h264_pps - H264 picture parameter set
|
* struct v4l2_ctrl_h264_pps - H264 picture parameter set
|
||||||
*
|
*
|
||||||
* Except where noted, all the members on this picture parameter set
|
* Except where noted, all the members on this picture parameter set
|
||||||
* structure match the sequence parameter set syntax as specified
|
* structure match the picture parameter set syntax as specified
|
||||||
* by the H264 specification.
|
* by the H264 specification.
|
||||||
*
|
*
|
||||||
* In particular, V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT flag
|
* In particular, V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT flag
|
||||||
|
@ -1595,30 +1612,30 @@ struct v4l2_ctrl_h264_decode_params {
|
||||||
#define V4L2_FWHT_VERSION 3
|
#define V4L2_FWHT_VERSION 3
|
||||||
|
|
||||||
/* Set if this is an interlaced format */
|
/* Set if this is an interlaced format */
|
||||||
#define V4L2_FWHT_FL_IS_INTERLACED BIT(0)
|
#define V4L2_FWHT_FL_IS_INTERLACED _BITUL(0)
|
||||||
/* Set if this is a bottom-first (NTSC) interlaced format */
|
/* Set if this is a bottom-first (NTSC) interlaced format */
|
||||||
#define V4L2_FWHT_FL_IS_BOTTOM_FIRST BIT(1)
|
#define V4L2_FWHT_FL_IS_BOTTOM_FIRST _BITUL(1)
|
||||||
/* Set if each 'frame' contains just one field */
|
/* Set if each 'frame' contains just one field */
|
||||||
#define V4L2_FWHT_FL_IS_ALTERNATE BIT(2)
|
#define V4L2_FWHT_FL_IS_ALTERNATE _BITUL(2)
|
||||||
/*
|
/*
|
||||||
* If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this
|
* If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this
|
||||||
* 'frame' is the bottom field, else it is the top field.
|
* 'frame' is the bottom field, else it is the top field.
|
||||||
*/
|
*/
|
||||||
#define V4L2_FWHT_FL_IS_BOTTOM_FIELD BIT(3)
|
#define V4L2_FWHT_FL_IS_BOTTOM_FIELD _BITUL(3)
|
||||||
/* Set if the Y' plane is uncompressed */
|
/* Set if the Y' plane is uncompressed */
|
||||||
#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED BIT(4)
|
#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED _BITUL(4)
|
||||||
/* Set if the Cb plane is uncompressed */
|
/* Set if the Cb plane is uncompressed */
|
||||||
#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED BIT(5)
|
#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED _BITUL(5)
|
||||||
/* Set if the Cr plane is uncompressed */
|
/* Set if the Cr plane is uncompressed */
|
||||||
#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED BIT(6)
|
#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED _BITUL(6)
|
||||||
/* Set if the chroma plane is full height, if cleared it is half height */
|
/* Set if the chroma plane is full height, if cleared it is half height */
|
||||||
#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT BIT(7)
|
#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT _BITUL(7)
|
||||||
/* Set if the chroma plane is full width, if cleared it is half width */
|
/* Set if the chroma plane is full width, if cleared it is half width */
|
||||||
#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH BIT(8)
|
#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH _BITUL(8)
|
||||||
/* Set if the alpha plane is uncompressed */
|
/* Set if the alpha plane is uncompressed */
|
||||||
#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED BIT(9)
|
#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED _BITUL(9)
|
||||||
/* Set if this is an I Frame */
|
/* Set if this is an I Frame */
|
||||||
#define V4L2_FWHT_FL_I_FRAME BIT(10)
|
#define V4L2_FWHT_FL_I_FRAME _BITUL(10)
|
||||||
|
|
||||||
/* A 4-values flag - the number of components - 1 */
|
/* A 4-values flag - the number of components - 1 */
|
||||||
#define V4L2_FWHT_FL_COMPONENTS_NUM_MSK GENMASK(18, 16)
|
#define V4L2_FWHT_FL_COMPONENTS_NUM_MSK GENMASK(18, 16)
|
||||||
|
@ -1659,6 +1676,348 @@ struct v4l2_ctrl_fwht_params {
|
||||||
__u32 quantization;
|
__u32 quantization;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Stateless VP8 control */
|
||||||
|
|
||||||
|
#define V4L2_VP8_SEGMENT_FLAG_ENABLED 0x01
|
||||||
|
#define V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP 0x02
|
||||||
|
#define V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA 0x04
|
||||||
|
#define V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE 0x08
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_vp8_segment - VP8 segment-based adjustments parameters
|
||||||
|
*
|
||||||
|
* @quant_update: update values for the segment quantizer.
|
||||||
|
* @lf_update: update values for the loop filter level.
|
||||||
|
* @segment_probs: branch probabilities of the segment_id decoding tree.
|
||||||
|
* @padding: padding field. Should be zeroed by applications.
|
||||||
|
* @flags: see V4L2_VP8_SEGMENT_FLAG_{}.
|
||||||
|
*
|
||||||
|
* This structure contains segment-based adjustments related parameters.
|
||||||
|
* See the 'update_segmentation()' part of the frame header syntax,
|
||||||
|
* and section '9.3. Segment-Based Adjustments' of the VP8 specification
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
struct v4l2_vp8_segment {
|
||||||
|
__s8 quant_update[4];
|
||||||
|
__s8 lf_update[4];
|
||||||
|
__u8 segment_probs[3];
|
||||||
|
__u8 padding;
|
||||||
|
__u32 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_VP8_LF_ADJ_ENABLE 0x01
|
||||||
|
#define V4L2_VP8_LF_DELTA_UPDATE 0x02
|
||||||
|
#define V4L2_VP8_LF_FILTER_TYPE_SIMPLE 0x04
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_vp8_loop_filter - VP8 loop filter parameters
|
||||||
|
*
|
||||||
|
* @ref_frm_delta: Reference frame signed delta values.
|
||||||
|
* @mb_mode_delta: MB prediction mode signed delta values.
|
||||||
|
* @sharpness_level: matches sharpness_level syntax element.
|
||||||
|
* @level: matches loop_filter_level syntax element.
|
||||||
|
* @padding: padding field. Should be zeroed by applications.
|
||||||
|
* @flags: see V4L2_VP8_LF_FLAG_{}.
|
||||||
|
*
|
||||||
|
* This structure contains loop filter related parameters.
|
||||||
|
* See the 'mb_lf_adjustments()' part of the frame header syntax,
|
||||||
|
* and section '9.4. Loop Filter Type and Levels' of the VP8 specification
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
struct v4l2_vp8_loop_filter {
|
||||||
|
__s8 ref_frm_delta[4];
|
||||||
|
__s8 mb_mode_delta[4];
|
||||||
|
__u8 sharpness_level;
|
||||||
|
__u8 level;
|
||||||
|
__u16 padding;
|
||||||
|
__u32 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_vp8_quantization - VP8 quantizattion indices
|
||||||
|
*
|
||||||
|
* @y_ac_qi: luma AC coefficient table index.
|
||||||
|
* @y_dc_delta: luma DC delta vaue.
|
||||||
|
* @y2_dc_delta: y2 block DC delta value.
|
||||||
|
* @y2_ac_delta: y2 block AC delta value.
|
||||||
|
* @uv_dc_delta: chroma DC delta value.
|
||||||
|
* @uv_ac_delta: chroma AC delta value.
|
||||||
|
* @padding: padding field. Should be zeroed by applications.
|
||||||
|
*
|
||||||
|
* This structure contains the quantization indices present
|
||||||
|
* in 'quant_indices()' part of the frame header syntax.
|
||||||
|
* See section '9.6. Dequantization Indices' of the VP8 specification
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
struct v4l2_vp8_quantization {
|
||||||
|
__u8 y_ac_qi;
|
||||||
|
__s8 y_dc_delta;
|
||||||
|
__s8 y2_dc_delta;
|
||||||
|
__s8 y2_ac_delta;
|
||||||
|
__s8 uv_dc_delta;
|
||||||
|
__s8 uv_ac_delta;
|
||||||
|
__u16 padding;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_VP8_COEFF_PROB_CNT 11
|
||||||
|
#define V4L2_VP8_MV_PROB_CNT 19
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_vp8_entropy - VP8 update probabilities
|
||||||
|
*
|
||||||
|
* @coeff_probs: coefficient probability update values.
|
||||||
|
* @y_mode_probs: luma intra-prediction probabilities.
|
||||||
|
* @uv_mode_probs: chroma intra-prediction probabilities.
|
||||||
|
* @mv_probs: mv decoding probability.
|
||||||
|
* @padding: padding field. Should be zeroed by applications.
|
||||||
|
*
|
||||||
|
* This structure contains the update probabilities present in
|
||||||
|
* 'token_prob_update()' and 'mv_prob_update()' part of the frame header.
|
||||||
|
* See section '17.2. Probability Updates' of the VP8 specification
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
struct v4l2_vp8_entropy {
|
||||||
|
__u8 coeff_probs[4][8][3][V4L2_VP8_COEFF_PROB_CNT];
|
||||||
|
__u8 y_mode_probs[4];
|
||||||
|
__u8 uv_mode_probs[3];
|
||||||
|
__u8 mv_probs[2][V4L2_VP8_MV_PROB_CNT];
|
||||||
|
__u8 padding[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct v4l2_vp8_entropy_coder_state - VP8 boolean coder state
|
||||||
|
*
|
||||||
|
* @range: coder state value for "Range"
|
||||||
|
* @value: coder state value for "Value"
|
||||||
|
* @bit_count: number of bits left in range "Value".
|
||||||
|
* @padding: padding field. Should be zeroed by applications.
|
||||||
|
*
|
||||||
|
* This structure contains the state for the boolean coder, as
|
||||||
|
* explained in section '7. Boolean Entropy Decoder' of the VP8 specification.
|
||||||
|
*/
|
||||||
|
struct v4l2_vp8_entropy_coder_state {
|
||||||
|
__u8 range;
|
||||||
|
__u8 value;
|
||||||
|
__u8 bit_count;
|
||||||
|
__u8 padding;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_VP8_FRAME_FLAG_KEY_FRAME 0x01
|
||||||
|
#define V4L2_VP8_FRAME_FLAG_EXPERIMENTAL 0x02
|
||||||
|
#define V4L2_VP8_FRAME_FLAG_SHOW_FRAME 0x04
|
||||||
|
#define V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF 0x08
|
||||||
|
#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN 0x10
|
||||||
|
#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT 0x20
|
||||||
|
|
||||||
|
#define V4L2_VP8_FRAME_IS_KEY_FRAME(hdr) \
|
||||||
|
(!!((hdr)->flags & V4L2_VP8_FRAME_FLAG_KEY_FRAME))
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_VP8_FRAME (V4L2_CID_CODEC_STATELESS_BASE + 200)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_vp8_frame - VP8 frame parameters
|
||||||
|
*
|
||||||
|
* @segment: segmentation parameters. See &v4l2_vp8_segment for more details
|
||||||
|
* @lf: loop filter parameters. See &v4l2_vp8_loop_filter for more details
|
||||||
|
* @quant: quantization parameters. See &v4l2_vp8_quantization for more details
|
||||||
|
* @entropy: update probabilities. See &v4l2_vp8_entropy for more details
|
||||||
|
* @coder_state: boolean coder state. See &v4l2_vp8_entropy_coder_state for more details
|
||||||
|
* @width: frame width.
|
||||||
|
* @height: frame height.
|
||||||
|
* @horizontal_scale: horizontal scaling factor.
|
||||||
|
* @vertical_scale: vertical scaling factor.
|
||||||
|
* @version: bitstream version.
|
||||||
|
* @prob_skip_false: frame header syntax element.
|
||||||
|
* @prob_intra: frame header syntax element.
|
||||||
|
* @prob_last: frame header syntax element.
|
||||||
|
* @prob_gf: frame header syntax element.
|
||||||
|
* @num_dct_parts: number of DCT coefficients partitions.
|
||||||
|
* @first_part_size: size of the first partition, i.e. the control partition.
|
||||||
|
* @first_part_header_bits: size in bits of the first partition header portion.
|
||||||
|
* @dct_part_sizes: DCT coefficients sizes.
|
||||||
|
* @last_frame_ts: "last" reference buffer timestamp.
|
||||||
|
* The timestamp refers to the timestamp field in struct v4l2_buffer.
|
||||||
|
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
|
||||||
|
* @golden_frame_ts: "golden" reference buffer timestamp.
|
||||||
|
* @alt_frame_ts: "alt" reference buffer timestamp.
|
||||||
|
* @flags: see V4L2_VP8_FRAME_FLAG_{}.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_vp8_frame {
|
||||||
|
struct v4l2_vp8_segment segment;
|
||||||
|
struct v4l2_vp8_loop_filter lf;
|
||||||
|
struct v4l2_vp8_quantization quant;
|
||||||
|
struct v4l2_vp8_entropy entropy;
|
||||||
|
struct v4l2_vp8_entropy_coder_state coder_state;
|
||||||
|
|
||||||
|
__u16 width;
|
||||||
|
__u16 height;
|
||||||
|
|
||||||
|
__u8 horizontal_scale;
|
||||||
|
__u8 vertical_scale;
|
||||||
|
|
||||||
|
__u8 version;
|
||||||
|
__u8 prob_skip_false;
|
||||||
|
__u8 prob_intra;
|
||||||
|
__u8 prob_last;
|
||||||
|
__u8 prob_gf;
|
||||||
|
__u8 num_dct_parts;
|
||||||
|
|
||||||
|
__u32 first_part_size;
|
||||||
|
__u32 first_part_header_bits;
|
||||||
|
__u32 dct_part_sizes[8];
|
||||||
|
|
||||||
|
__u64 last_frame_ts;
|
||||||
|
__u64 golden_frame_ts;
|
||||||
|
__u64 alt_frame_ts;
|
||||||
|
|
||||||
|
__u64 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Stateless MPEG-2 controls */
|
||||||
|
|
||||||
|
#define V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE 0x01
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_MPEG2_SEQUENCE (V4L2_CID_CODEC_STATELESS_BASE+220)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_mpeg2_sequence - MPEG-2 sequence header
|
||||||
|
*
|
||||||
|
* All the members on this structure match the sequence header and sequence
|
||||||
|
* extension syntaxes as specified by the MPEG-2 specification.
|
||||||
|
*
|
||||||
|
* Fields horizontal_size, vertical_size and vbv_buffer_size are a
|
||||||
|
* combination of respective _value and extension syntax elements,
|
||||||
|
* as described in section 6.3.3 "Sequence header".
|
||||||
|
*
|
||||||
|
* @horizontal_size: combination of elements horizontal_size_value and
|
||||||
|
* horizontal_size_extension.
|
||||||
|
* @vertical_size: combination of elements vertical_size_value and
|
||||||
|
* vertical_size_extension.
|
||||||
|
* @vbv_buffer_size: combination of elements vbv_buffer_size_value and
|
||||||
|
* vbv_buffer_size_extension.
|
||||||
|
* @profile_and_level_indication: see MPEG-2 specification.
|
||||||
|
* @chroma_format: see MPEG-2 specification.
|
||||||
|
* @flags: see V4L2_MPEG2_SEQ_FLAG_{}.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_mpeg2_sequence {
|
||||||
|
__u16 horizontal_size;
|
||||||
|
__u16 vertical_size;
|
||||||
|
__u32 vbv_buffer_size;
|
||||||
|
__u16 profile_and_level_indication;
|
||||||
|
__u8 chroma_format;
|
||||||
|
__u8 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_MPEG2_PIC_CODING_TYPE_I 1
|
||||||
|
#define V4L2_MPEG2_PIC_CODING_TYPE_P 2
|
||||||
|
#define V4L2_MPEG2_PIC_CODING_TYPE_B 3
|
||||||
|
#define V4L2_MPEG2_PIC_CODING_TYPE_D 4
|
||||||
|
|
||||||
|
#define V4L2_MPEG2_PIC_TOP_FIELD 0x1
|
||||||
|
#define V4L2_MPEG2_PIC_BOTTOM_FIELD 0x2
|
||||||
|
#define V4L2_MPEG2_PIC_FRAME 0x3
|
||||||
|
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST 0x0001
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT 0x0002
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV 0x0004
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE 0x0008
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_INTRA_VLC 0x0010
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_ALT_SCAN 0x0020
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST 0x0040
|
||||||
|
#define V4L2_MPEG2_PIC_FLAG_PROGRESSIVE 0x0080
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_MPEG2_PICTURE (V4L2_CID_CODEC_STATELESS_BASE+221)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_mpeg2_picture - MPEG-2 picture header
|
||||||
|
*
|
||||||
|
* All the members on this structure match the picture header and picture
|
||||||
|
* coding extension syntaxes as specified by the MPEG-2 specification.
|
||||||
|
*
|
||||||
|
* @backward_ref_ts: timestamp of the V4L2 capture buffer to use as
|
||||||
|
* reference for backward prediction.
|
||||||
|
* @forward_ref_ts: timestamp of the V4L2 capture buffer to use as
|
||||||
|
* reference for forward prediction. These timestamp refers to the
|
||||||
|
* timestamp field in struct v4l2_buffer. Use v4l2_timeval_to_ns()
|
||||||
|
* to convert the struct timeval to a __u64.
|
||||||
|
* @flags: see V4L2_MPEG2_PIC_FLAG_{}.
|
||||||
|
* @f_code: see MPEG-2 specification.
|
||||||
|
* @picture_coding_type: see MPEG-2 specification.
|
||||||
|
* @picture_structure: see V4L2_MPEG2_PIC_{}_FIELD.
|
||||||
|
* @intra_dc_precision: see MPEG-2 specification.
|
||||||
|
* @reserved: padding field. Should be zeroed by applications.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_mpeg2_picture {
|
||||||
|
__u64 backward_ref_ts;
|
||||||
|
__u64 forward_ref_ts;
|
||||||
|
__u32 flags;
|
||||||
|
__u8 f_code[2][2];
|
||||||
|
__u8 picture_coding_type;
|
||||||
|
__u8 picture_structure;
|
||||||
|
__u8 intra_dc_precision;
|
||||||
|
__u8 reserved[5];
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_CID_STATELESS_MPEG2_QUANTISATION (V4L2_CID_CODEC_STATELESS_BASE+222)
|
||||||
|
/**
|
||||||
|
* struct v4l2_ctrl_mpeg2_quantisation - MPEG-2 quantisation
|
||||||
|
*
|
||||||
|
* Quantisation matrices as specified by section 6.3.7
|
||||||
|
* "Quant matrix extension".
|
||||||
|
*
|
||||||
|
* @intra_quantiser_matrix: The quantisation matrix coefficients
|
||||||
|
* for intra-coded frames, in zigzag scanning order. It is relevant
|
||||||
|
* for both luma and chroma components, although it can be superseded
|
||||||
|
* by the chroma-specific matrix for non-4:2:0 YUV formats.
|
||||||
|
* @non_intra_quantiser_matrix: The quantisation matrix coefficients
|
||||||
|
* for non-intra-coded frames, in zigzag scanning order. It is relevant
|
||||||
|
* for both luma and chroma components, although it can be superseded
|
||||||
|
* by the chroma-specific matrix for non-4:2:0 YUV formats.
|
||||||
|
* @chroma_intra_quantiser_matrix: The quantisation matrix coefficients
|
||||||
|
* for the chominance component of intra-coded frames, in zigzag scanning
|
||||||
|
* order. Only relevant for 4:2:2 and 4:4:4 YUV formats.
|
||||||
|
* @chroma_non_intra_quantiser_matrix: The quantisation matrix coefficients
|
||||||
|
* for the chrominance component of non-intra-coded frames, in zigzag scanning
|
||||||
|
* order. Only relevant for 4:2:2 and 4:4:4 YUV formats.
|
||||||
|
*/
|
||||||
|
struct v4l2_ctrl_mpeg2_quantisation {
|
||||||
|
__u8 intra_quantiser_matrix[64];
|
||||||
|
__u8 non_intra_quantiser_matrix[64];
|
||||||
|
__u8 chroma_intra_quantiser_matrix[64];
|
||||||
|
__u8 chroma_non_intra_quantiser_matrix[64];
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
|
||||||
|
#define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
|
||||||
|
|
||||||
|
#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
|
||||||
|
|
||||||
|
struct v4l2_ctrl_hdr10_cll_info {
|
||||||
|
__u16 max_content_light_level;
|
||||||
|
__u16 max_pic_average_light_level;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY (V4L2_CID_COLORIMETRY_CLASS_BASE + 1)
|
||||||
|
|
||||||
|
#define V4L2_HDR10_MASTERING_PRIMARIES_X_LOW 5
|
||||||
|
#define V4L2_HDR10_MASTERING_PRIMARIES_X_HIGH 37000
|
||||||
|
#define V4L2_HDR10_MASTERING_PRIMARIES_Y_LOW 5
|
||||||
|
#define V4L2_HDR10_MASTERING_PRIMARIES_Y_HIGH 42000
|
||||||
|
#define V4L2_HDR10_MASTERING_WHITE_POINT_X_LOW 5
|
||||||
|
#define V4L2_HDR10_MASTERING_WHITE_POINT_X_HIGH 37000
|
||||||
|
#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_LOW 5
|
||||||
|
#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_HIGH 42000
|
||||||
|
#define V4L2_HDR10_MASTERING_MAX_LUMA_LOW 50000
|
||||||
|
#define V4L2_HDR10_MASTERING_MAX_LUMA_HIGH 100000000
|
||||||
|
#define V4L2_HDR10_MASTERING_MIN_LUMA_LOW 1
|
||||||
|
#define V4L2_HDR10_MASTERING_MIN_LUMA_HIGH 50000
|
||||||
|
|
||||||
|
struct v4l2_ctrl_hdr10_mastering_display {
|
||||||
|
__u16 display_primaries_x[3];
|
||||||
|
__u16 display_primaries_y[3];
|
||||||
|
__u16 white_point_x;
|
||||||
|
__u16 white_point_y;
|
||||||
|
__u32 max_display_mastering_luminance;
|
||||||
|
__u32 min_display_mastering_luminance;
|
||||||
|
};
|
||||||
|
|
||||||
/* MPEG-compression definitions kept for backwards compatibility */
|
/* MPEG-compression definitions kept for backwards compatibility */
|
||||||
#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
|
#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
|
||||||
#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
|
#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
|
||||||
|
|
|
@ -44,6 +44,7 @@ enum v4l2_subdev_format_whence {
|
||||||
* @which: format type (from enum v4l2_subdev_format_whence)
|
* @which: format type (from enum v4l2_subdev_format_whence)
|
||||||
* @pad: pad number, as reported by the media API
|
* @pad: pad number, as reported by the media API
|
||||||
* @format: media bus format (format code and frame size)
|
* @format: media bus format (format code and frame size)
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_subdev_format {
|
struct v4l2_subdev_format {
|
||||||
__u32 which;
|
__u32 which;
|
||||||
|
@ -57,6 +58,7 @@ struct v4l2_subdev_format {
|
||||||
* @which: format type (from enum v4l2_subdev_format_whence)
|
* @which: format type (from enum v4l2_subdev_format_whence)
|
||||||
* @pad: pad number, as reported by the media API
|
* @pad: pad number, as reported by the media API
|
||||||
* @rect: pad crop rectangle boundaries
|
* @rect: pad crop rectangle boundaries
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_subdev_crop {
|
struct v4l2_subdev_crop {
|
||||||
__u32 which;
|
__u32 which;
|
||||||
|
@ -78,6 +80,7 @@ struct v4l2_subdev_crop {
|
||||||
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
||||||
* @which: format type (from enum v4l2_subdev_format_whence)
|
* @which: format type (from enum v4l2_subdev_format_whence)
|
||||||
* @flags: flags set by the driver, (V4L2_SUBDEV_MBUS_CODE_*)
|
* @flags: flags set by the driver, (V4L2_SUBDEV_MBUS_CODE_*)
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_subdev_mbus_code_enum {
|
struct v4l2_subdev_mbus_code_enum {
|
||||||
__u32 pad;
|
__u32 pad;
|
||||||
|
@ -90,10 +93,15 @@ struct v4l2_subdev_mbus_code_enum {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct v4l2_subdev_frame_size_enum - Media bus format enumeration
|
* struct v4l2_subdev_frame_size_enum - Media bus format enumeration
|
||||||
* @pad: pad number, as reported by the media API
|
|
||||||
* @index: format index during enumeration
|
* @index: format index during enumeration
|
||||||
|
* @pad: pad number, as reported by the media API
|
||||||
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
||||||
|
* @min_width: minimum frame width, in pixels
|
||||||
|
* @max_width: maximum frame width, in pixels
|
||||||
|
* @min_height: minimum frame height, in pixels
|
||||||
|
* @max_height: maximum frame height, in pixels
|
||||||
* @which: format type (from enum v4l2_subdev_format_whence)
|
* @which: format type (from enum v4l2_subdev_format_whence)
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_subdev_frame_size_enum {
|
struct v4l2_subdev_frame_size_enum {
|
||||||
__u32 index;
|
__u32 index;
|
||||||
|
@ -111,6 +119,7 @@ struct v4l2_subdev_frame_size_enum {
|
||||||
* struct v4l2_subdev_frame_interval - Pad-level frame rate
|
* struct v4l2_subdev_frame_interval - Pad-level frame rate
|
||||||
* @pad: pad number, as reported by the media API
|
* @pad: pad number, as reported by the media API
|
||||||
* @interval: frame interval in seconds
|
* @interval: frame interval in seconds
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_subdev_frame_interval {
|
struct v4l2_subdev_frame_interval {
|
||||||
__u32 pad;
|
__u32 pad;
|
||||||
|
@ -127,6 +136,7 @@ struct v4l2_subdev_frame_interval {
|
||||||
* @height: frame height in pixels
|
* @height: frame height in pixels
|
||||||
* @interval: frame interval in seconds
|
* @interval: frame interval in seconds
|
||||||
* @which: format type (from enum v4l2_subdev_format_whence)
|
* @which: format type (from enum v4l2_subdev_format_whence)
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_subdev_frame_interval_enum {
|
struct v4l2_subdev_frame_interval_enum {
|
||||||
__u32 index;
|
__u32 index;
|
||||||
|
|
|
@ -580,6 +580,7 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */
|
#define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */
|
||||||
#define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */
|
#define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */
|
||||||
#define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */
|
#define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */
|
||||||
|
#define V4L2_PIX_FMT_YUV24 v4l2_fourcc('Y', 'U', 'V', '3') /* 24 YUV-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */
|
#define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V') /* 32 AYUV-8-8-8-8 */
|
#define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V') /* 32 AYUV-8-8-8-8 */
|
||||||
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
|
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
|
||||||
|
@ -594,15 +595,12 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||||
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
||||||
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
||||||
#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
|
|
||||||
|
|
||||||
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
||||||
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||||
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
|
#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
|
||||||
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
||||||
#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||||
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */
|
|
||||||
#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 macroblocks */
|
|
||||||
|
|
||||||
/* three planes - Y Cb, Cr */
|
/* three planes - Y Cb, Cr */
|
||||||
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
||||||
|
@ -620,6 +618,15 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */
|
#define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */
|
||||||
#define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */
|
#define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */
|
||||||
|
|
||||||
|
/* Tiled YUV formats */
|
||||||
|
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */
|
||||||
|
|
||||||
|
/* Tiled YUV formats, non contiguous planes */
|
||||||
|
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
|
||||||
|
#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
||||||
|
|
||||||
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
|
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
|
||||||
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
|
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
|
||||||
#define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */
|
#define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */
|
||||||
|
@ -688,6 +695,7 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
|
#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
|
||||||
#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
|
#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
|
||||||
#define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
|
#define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
|
||||||
|
#define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F') /* VP8 parsed frame */
|
||||||
#define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */
|
#define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */
|
||||||
#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */
|
#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */
|
||||||
#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
|
#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
|
||||||
|
@ -725,8 +733,8 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */
|
#define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */
|
||||||
#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
|
#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
|
||||||
#define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */
|
#define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */
|
||||||
|
#define V4L2_PIX_FMT_MM21 v4l2_fourcc('M', 'M', '2', '1') /* Mediatek 8-bit block mode, two non-contiguous planes */
|
||||||
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
|
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
|
||||||
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */
|
|
||||||
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
|
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
|
||||||
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
|
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
|
||||||
|
|
||||||
|
@ -930,9 +938,12 @@ struct v4l2_requestbuffers {
|
||||||
__u32 type; /* enum v4l2_buf_type */
|
__u32 type; /* enum v4l2_buf_type */
|
||||||
__u32 memory; /* enum v4l2_memory */
|
__u32 memory; /* enum v4l2_memory */
|
||||||
__u32 capabilities;
|
__u32 capabilities;
|
||||||
__u32 reserved[1];
|
__u8 flags;
|
||||||
|
__u8 reserved[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define V4L2_MEMORY_FLAG_NON_COHERENT (1 << 0)
|
||||||
|
|
||||||
/* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */
|
/* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */
|
||||||
#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
|
#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
|
||||||
#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
|
#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
|
||||||
|
@ -954,8 +965,10 @@ struct v4l2_requestbuffers {
|
||||||
* pointing to this plane
|
* pointing to this plane
|
||||||
* @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file
|
* @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file
|
||||||
* descriptor associated with this plane
|
* descriptor associated with this plane
|
||||||
|
* @m: union of @mem_offset, @userptr and @fd
|
||||||
* @data_offset: offset in the plane to the start of data; usually 0,
|
* @data_offset: offset in the plane to the start of data; usually 0,
|
||||||
* unless there is a header in front of the data
|
* unless there is a header in front of the data
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*
|
*
|
||||||
* Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer
|
* Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer
|
||||||
* with two planes can have one plane for Y, and another for interleaved CbCr
|
* with two planes can have one plane for Y, and another for interleaved CbCr
|
||||||
|
@ -997,10 +1010,14 @@ struct v4l2_plane {
|
||||||
* a userspace file descriptor associated with this buffer
|
* a userspace file descriptor associated with this buffer
|
||||||
* @planes: for multiplanar buffers; userspace pointer to the array of plane
|
* @planes: for multiplanar buffers; userspace pointer to the array of plane
|
||||||
* info structs for this buffer
|
* info structs for this buffer
|
||||||
|
* @m: union of @offset, @userptr, @planes and @fd
|
||||||
* @length: size in bytes of the buffer (NOT its payload) for single-plane
|
* @length: size in bytes of the buffer (NOT its payload) for single-plane
|
||||||
* buffers (when type != *_MPLANE); number of elements in the
|
* buffers (when type != *_MPLANE); number of elements in the
|
||||||
* planes array for multi-plane buffers
|
* planes array for multi-plane buffers
|
||||||
|
* @reserved2: drivers and applications must zero this field
|
||||||
* @request_fd: fd of the request that this buffer should use
|
* @request_fd: fd of the request that this buffer should use
|
||||||
|
* @reserved: for backwards compatibility with applications that do not know
|
||||||
|
* about @request_fd
|
||||||
*
|
*
|
||||||
* Contains data exchanged by application and driver using one of the Streaming
|
* Contains data exchanged by application and driver using one of the Streaming
|
||||||
* I/O methods.
|
* I/O methods.
|
||||||
|
@ -1033,7 +1050,7 @@ struct v4l2_buffer {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* v4l2_timeval_to_ns - Convert timeval to nanoseconds
|
* v4l2_timeval_to_ns - Convert timeval to nanoseconds
|
||||||
* @ts: pointer to the timeval variable to be converted
|
* @tv: pointer to the timeval variable to be converted
|
||||||
*
|
*
|
||||||
* Returns the scalar nanosecond representation of the timeval
|
* Returns the scalar nanosecond representation of the timeval
|
||||||
* parameter.
|
* parameter.
|
||||||
|
@ -1093,6 +1110,7 @@ static __inline__ __u64 v4l2_timeval_to_ns(const struct timeval *tv)
|
||||||
* @flags: flags for newly created file, currently only O_CLOEXEC is
|
* @flags: flags for newly created file, currently only O_CLOEXEC is
|
||||||
* supported, refer to manual of open syscall for more details
|
* supported, refer to manual of open syscall for more details
|
||||||
* @fd: file descriptor associated with DMABUF (set by driver)
|
* @fd: file descriptor associated with DMABUF (set by driver)
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*
|
*
|
||||||
* Contains data used for exporting a video buffer as DMABUF file descriptor.
|
* Contains data used for exporting a video buffer as DMABUF file descriptor.
|
||||||
* The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF
|
* The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF
|
||||||
|
@ -1710,6 +1728,10 @@ struct v4l2_ext_control {
|
||||||
struct v4l2_ctrl_h264_slice_params *p_h264_slice_params;
|
struct v4l2_ctrl_h264_slice_params *p_h264_slice_params;
|
||||||
struct v4l2_ctrl_h264_decode_params *p_h264_decode_params;
|
struct v4l2_ctrl_h264_decode_params *p_h264_decode_params;
|
||||||
struct v4l2_ctrl_fwht_params *p_fwht_params;
|
struct v4l2_ctrl_fwht_params *p_fwht_params;
|
||||||
|
struct v4l2_ctrl_vp8_frame *p_vp8_frame;
|
||||||
|
struct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence;
|
||||||
|
struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture;
|
||||||
|
struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
};
|
};
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
@ -1753,6 +1775,9 @@ enum v4l2_ctrl_type {
|
||||||
V4L2_CTRL_TYPE_U32 = 0x0102,
|
V4L2_CTRL_TYPE_U32 = 0x0102,
|
||||||
V4L2_CTRL_TYPE_AREA = 0x0106,
|
V4L2_CTRL_TYPE_AREA = 0x0106,
|
||||||
|
|
||||||
|
V4L2_CTRL_TYPE_HDR10_CLL_INFO = 0x0110,
|
||||||
|
V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 0x0111,
|
||||||
|
|
||||||
V4L2_CTRL_TYPE_H264_SPS = 0x0200,
|
V4L2_CTRL_TYPE_H264_SPS = 0x0200,
|
||||||
V4L2_CTRL_TYPE_H264_PPS = 0x0201,
|
V4L2_CTRL_TYPE_H264_PPS = 0x0201,
|
||||||
V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202,
|
V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202,
|
||||||
|
@ -1761,6 +1786,12 @@ enum v4l2_ctrl_type {
|
||||||
V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205,
|
V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205,
|
||||||
|
|
||||||
V4L2_CTRL_TYPE_FWHT_PARAMS = 0x0220,
|
V4L2_CTRL_TYPE_FWHT_PARAMS = 0x0220,
|
||||||
|
|
||||||
|
V4L2_CTRL_TYPE_VP8_FRAME = 0x0240,
|
||||||
|
|
||||||
|
V4L2_CTRL_TYPE_MPEG2_QUANTISATION = 0x0250,
|
||||||
|
V4L2_CTRL_TYPE_MPEG2_SEQUENCE = 0x0251,
|
||||||
|
V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
||||||
|
@ -2198,6 +2229,7 @@ struct v4l2_mpeg_vbi_fmt_ivtv {
|
||||||
* this plane will be used
|
* this plane will be used
|
||||||
* @bytesperline: distance in bytes between the leftmost pixels in two
|
* @bytesperline: distance in bytes between the leftmost pixels in two
|
||||||
* adjacent lines
|
* adjacent lines
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_plane_pix_format {
|
struct v4l2_plane_pix_format {
|
||||||
__u32 sizeimage;
|
__u32 sizeimage;
|
||||||
|
@ -2216,8 +2248,10 @@ struct v4l2_plane_pix_format {
|
||||||
* @num_planes: number of planes for this format
|
* @num_planes: number of planes for this format
|
||||||
* @flags: format flags (V4L2_PIX_FMT_FLAG_*)
|
* @flags: format flags (V4L2_PIX_FMT_FLAG_*)
|
||||||
* @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding
|
* @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding
|
||||||
|
* @hsv_enc: enum v4l2_hsv_encoding, HSV encoding
|
||||||
* @quantization: enum v4l2_quantization, colorspace quantization
|
* @quantization: enum v4l2_quantization, colorspace quantization
|
||||||
* @xfer_func: enum v4l2_xfer_func, colorspace transfer function
|
* @xfer_func: enum v4l2_xfer_func, colorspace transfer function
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_pix_format_mplane {
|
struct v4l2_pix_format_mplane {
|
||||||
__u32 width;
|
__u32 width;
|
||||||
|
@ -2242,6 +2276,7 @@ struct v4l2_pix_format_mplane {
|
||||||
* struct v4l2_sdr_format - SDR format definition
|
* struct v4l2_sdr_format - SDR format definition
|
||||||
* @pixelformat: little endian four character code (fourcc)
|
* @pixelformat: little endian four character code (fourcc)
|
||||||
* @buffersize: maximum size in bytes required for data
|
* @buffersize: maximum size in bytes required for data
|
||||||
|
* @reserved: drivers and applications must zero this array
|
||||||
*/
|
*/
|
||||||
struct v4l2_sdr_format {
|
struct v4l2_sdr_format {
|
||||||
__u32 pixelformat;
|
__u32 pixelformat;
|
||||||
|
@ -2268,6 +2303,8 @@ struct v4l2_meta_format {
|
||||||
* @vbi: raw VBI capture or output parameters
|
* @vbi: raw VBI capture or output parameters
|
||||||
* @sliced: sliced VBI capture or output parameters
|
* @sliced: sliced VBI capture or output parameters
|
||||||
* @raw_data: placeholder for future extensions and custom formats
|
* @raw_data: placeholder for future extensions and custom formats
|
||||||
|
* @fmt: union of @pix, @pix_mp, @win, @vbi, @sliced, @sdr, @meta
|
||||||
|
* and @raw_data
|
||||||
*/
|
*/
|
||||||
struct v4l2_format {
|
struct v4l2_format {
|
||||||
__u32 type;
|
__u32 type;
|
||||||
|
@ -2436,6 +2473,9 @@ struct v4l2_dbg_chip_info {
|
||||||
* @memory: enum v4l2_memory; buffer memory type
|
* @memory: enum v4l2_memory; buffer memory type
|
||||||
* @format: frame format, for which buffers are requested
|
* @format: frame format, for which buffers are requested
|
||||||
* @capabilities: capabilities of this buffer type.
|
* @capabilities: capabilities of this buffer type.
|
||||||
|
* @flags: additional buffer management attributes (ignored unless the
|
||||||
|
* queue has V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS capability
|
||||||
|
* and configured for MMAP streaming I/O).
|
||||||
* @reserved: future extensions
|
* @reserved: future extensions
|
||||||
*/
|
*/
|
||||||
struct v4l2_create_buffers {
|
struct v4l2_create_buffers {
|
||||||
|
@ -2444,7 +2484,8 @@ struct v4l2_create_buffers {
|
||||||
__u32 memory;
|
__u32 memory;
|
||||||
struct v4l2_format format;
|
struct v4l2_format format;
|
||||||
__u32 capabilities;
|
__u32 capabilities;
|
||||||
__u32 reserved[7];
|
__u32 flags;
|
||||||
|
__u32 reserved[6];
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2552,4 +2593,8 @@ struct v4l2_create_buffers {
|
||||||
|
|
||||||
#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */
|
#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */
|
||||||
|
|
||||||
|
/* Deprecated definitions kept for backwards compatibility */
|
||||||
|
#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
|
||||||
|
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
|
||||||
|
|
||||||
#endif /* __LINUX_VIDEODEV2_H */
|
#endif /* __LINUX_VIDEODEV2_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue