v4l2codecs: Sync kernel headers against 5.16.0

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/965>
This commit is contained in:
Nicolas Dufresne 2022-01-21 14:13:39 -05:00 committed by GStreamer Marge Bot
parent ecfbd33dbe
commit a67e9fb05f
2 changed files with 132 additions and 90 deletions

View file

@ -127,6 +127,7 @@ enum v4l2_colorfx {
V4L2_COLORFX_SOLARIZATION = 13, V4L2_COLORFX_SOLARIZATION = 13,
V4L2_COLORFX_ANTIQUE = 14, V4L2_COLORFX_ANTIQUE = 14,
V4L2_COLORFX_SET_CBCR = 15, V4L2_COLORFX_SET_CBCR = 15,
V4L2_COLORFX_SET_RGB = 16,
}; };
#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32) #define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33) #define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
@ -144,9 +145,10 @@ enum v4l2_colorfx {
#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41) #define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41)
#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42) #define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42)
#define V4L2_CID_COLORFX_RGB (V4L2_CID_BASE+43)
/* last CID + 1 */ /* last CID + 1 */
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43) #define V4L2_CID_LASTP1 (V4L2_CID_BASE+44)
/* USER-class private control IDs */ /* USER-class private control IDs */
@ -210,6 +212,11 @@ enum v4l2_colorfx {
* We reserve 128 controls for this driver. * We reserve 128 controls for this driver.
*/ */
#define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0) #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
/*
* 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
@ -1115,6 +1122,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 */
@ -2009,23 +2017,21 @@ struct v4l2_ctrl_hdr10_mastering_display {
/* Stateless VP9 controls */ /* Stateless VP9 controls */
/**
*/
#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1 #define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1
#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE 0x2 #define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE 0x2
/** /**
* struct v4l2_vp9_loop_filter - VP9 loop filter parameters * struct v4l2_vp9_loop_filter - VP9 loop filter parameters
* *
* @ref_deltas: contains the adjustment needed for the filter level based on the chosen * @ref_deltas: contains the adjustment needed for the filter level based on the
* reference frame. If this syntax element is not present in the bitstream, users * chosen reference frame. If this syntax element is not present in the bitstream,
* should pass its last value. * users should pass its last value.
* @mode_deltas: contains the adjustment needed for the filter level based on the chosen mode. * @mode_deltas: contains the adjustment needed for the filter level based on the
* If this syntax element is not present in the bitstream, users * chosen mode. If this syntax element is not present in the bitstream, users should
* should pass its last value. * pass its last value.
* @level: indicates the loop filter strength * @level: indicates the loop filter strength.
* @sharpness: indicates the sharpness level * @sharpness: indicates the sharpness level.
* @flags: combination of V4L2_VP9_LOOP_FILTER_FLAG_* flags * @flags: combination of V4L2_VP9_LOOP_FILTER_FLAG_{} flags.
* @reserved: padding field. Should be zeroed by applications. * @reserved: padding field. Should be zeroed by applications.
* *
* This structure contains all loop filter related parameters. See sections * This structure contains all loop filter related parameters. See sections
@ -2043,10 +2049,10 @@ struct v4l2_vp9_loop_filter {
/** /**
* struct v4l2_vp9_quantization - VP9 quantization parameters * struct v4l2_vp9_quantization - VP9 quantization parameters
* *
* @base_q_idx: indicates the base frame qindex * @base_q_idx: indicates the base frame qindex.
* @delta_q_y_dc: indicates the Y DC quantizer relative to base_q_idx * @delta_q_y_dc: indicates the Y DC quantizer relative to base_q_idx.
* @delta_q_uv_dc: indicates the UV DC quantizer relative to base_q_idx * @delta_q_uv_dc: indicates the UV DC quantizer relative to base_q_idx.
* @delta_q_uv_ac: indicates the UV AC quantizer relative to base_q_idx * @delta_q_uv_ac: indicates the UV AC quantizer relative to base_q_idx.
* @reserved: padding field. Should be zeroed by applications. * @reserved: padding field. Should be zeroed by applications.
* *
* Encodes the quantization parameters. See section '7.2.9 Quantization params * Encodes the quantization parameters. See section '7.2.9 Quantization params
@ -2078,19 +2084,19 @@ struct v4l2_vp9_quantization {
/** /**
* struct v4l2_vp9_segmentation - VP9 segmentation parameters * struct v4l2_vp9_segmentation - VP9 segmentation parameters
* *
* @feature_data: data attached to each feature. Data entry is only valid if the feature is enabled. * @feature_data: data attached to each feature. Data entry is only valid if
* The array shall be indexed with segment number as the first dimension (0..7) and one of * the feature is enabled. The array shall be indexed with segment number as
* V4L2_VP9_SEG_* as the second dimension. * the first dimension (0..7) and one of V4L2_VP9_SEG_{} as the second dimension.
* @feature_enabled: bitmask defining which features are enabled in each segment. The value for * @feature_enabled: bitmask defining which features are enabled in each segment.
* each segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) values where id is one * The value for each segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id)
* of V4L2_VP9_SEG_* * values where id is one of V4L2_VP9_SEG_LVL_{}.
* @tree_probs: specifies the probability values to be used when * @tree_probs: specifies the probability values to be used when decoding a
* decoding a Segment-ID. See '5.15. Segmentation map' section of the VP9 specification * Segment-ID. See '5.15. Segmentation map' section of the VP9 specification
* for more details. * for more details.
* @pred_probs: specifies the probability values to be used when decoding a * @pred_probs: specifies the probability values to be used when decoding a
* Predicted-Segment-ID. See '6.4.14. Get segment id syntax' section of :ref:`vp9` * Predicted-Segment-ID. See '6.4.14. Get segment id syntax' section of :ref:`vp9`
* for more details. * for more details.
* @flags: combination of V4L2_VP9_SEGMENTATION_FLAG_* flags * @flags: combination of V4L2_VP9_SEGMENTATION_FLAG_{} flags.
* @reserved: padding field. Should be zeroed by applications. * @reserved: padding field. Should be zeroed by applications.
* *
* Encodes the quantization parameters. See section '7.2.10 Segmentation params syntax' of * Encodes the quantization parameters. See section '7.2.10 Segmentation params syntax' of
@ -2140,20 +2146,20 @@ struct v4l2_vp9_segmentation {
/** /**
* struct v4l2_ctrl_vp9_frame - VP9 frame decoding control * struct v4l2_ctrl_vp9_frame - VP9 frame decoding control
* *
* @lf: loop filter parameters. See &v4l2_vp9_loop_filter for more details * @lf: loop filter parameters. See &v4l2_vp9_loop_filter for more details.
* @quant: quantization parameters. See &v4l2_vp9_quantization for more details * @quant: quantization parameters. See &v4l2_vp9_quantization for more details.
* @seg: segmentation parameters. See &v4l2_vp9_segmentation for more details * @seg: segmentation parameters. See &v4l2_vp9_segmentation for more details.
* @flags: combination of V4L2_VP9_FRAME_FLAG_* flags * @flags: combination of V4L2_VP9_FRAME_FLAG_{} flags.
* @compressed_header_size: compressed header size in bytes * @compressed_header_size: compressed header size in bytes.
* @uncompressed_header_size: uncompressed header size in bytes * @uncompressed_header_size: uncompressed header size in bytes.
* @frame_width_minus_1: add 1 to it and you'll get the frame width expressed in pixels * @frame_width_minus_1: add 1 to it and you'll get the frame width expressed in pixels.
* @frame_height_minus_1: add 1 to it and you'll get the frame height expressed in pixels * @frame_height_minus_1: add 1 to it and you'll get the frame height expressed in pixels.
* @render_width_minus_1: add 1 to it and you'll get the expected render width expressed in * @render_width_minus_1: add 1 to it and you'll get the expected render width expressed in
* pixels. This is not used during the decoding process but might be used by HW scalers * pixels. This is not used during the decoding process but might be used by HW scalers
* to prepare a frame that's ready for scanout * to prepare a frame that's ready for scanout.
* @render_height_minus_1: add 1 to it and you'll get the expected render height expressed in * @render_height_minus_1: add 1 to it and you'll get the expected render height expressed in
* pixels. This is not used during the decoding process but might be used by HW scalers * pixels. This is not used during the decoding process but might be used by HW scalers
* to prepare a frame that's ready for scanout * to prepare a frame that's ready for scanout.
* @last_frame_ts: "last" reference buffer timestamp. * @last_frame_ts: "last" reference buffer timestamp.
* The timestamp refers to the timestamp field in struct v4l2_buffer. * The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64. * Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
@ -2164,21 +2170,21 @@ struct v4l2_vp9_segmentation {
* The timestamp refers to the timestamp field in struct v4l2_buffer. * The timestamp refers to the timestamp field in struct v4l2_buffer.
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64. * Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
* @ref_frame_sign_bias: a bitfield specifying whether the sign bias is set for a given * @ref_frame_sign_bias: a bitfield specifying whether the sign bias is set for a given
* reference frame. Either of V4L2_VP9_SIGN_BIAS_*. * reference frame. Either of V4L2_VP9_SIGN_BIAS_{}.
* @reset_frame_context: specifies whether the frame context should be reset to default values. * @reset_frame_context: specifies whether the frame context should be reset to default values.
* Either of V4L2_VP9_RESET_FRAME_CTX_*. * Either of V4L2_VP9_RESET_FRAME_CTX_{}.
* @frame_context_idx: frame context that should be used/updated * @frame_context_idx: frame context that should be used/updated.
* @profile: VP9 profile. Can be 0, 1, 2 or 3 * @profile: VP9 profile. Can be 0, 1, 2 or 3.
* @bit_depth: bits per components. Can be 8, 10 or 12. Note that not all profiles support * @bit_depth: bits per components. Can be 8, 10 or 12. Note that not all profiles support
* 10 and/or 12 bits depths * 10 and/or 12 bits depths.
* @interpolation_filter: specifies the filter selection used for performing inter prediction. * @interpolation_filter: specifies the filter selection used for performing inter prediction.
* Either of V4L2_VP9_INTERP_FILTER_* * Set to one of V4L2_VP9_INTERP_FILTER_{}.
* @tile_cols_log2: specifies the base 2 logarithm of the width of each tile (where the width * @tile_cols_log2: specifies the base 2 logarithm of the width of each tile (where the width
* is measured in units of 8x8 blocks). Shall be less than or equal to 6 * is measured in units of 8x8 blocks). Shall be less than or equal to 6.
* @tile_rows_log2: specifies the base 2 logarithm of the height of each tile (where the height * @tile_rows_log2: specifies the base 2 logarithm of the height of each tile (where the height
* is measured in units of 8x8 blocks) * is measured in units of 8x8 blocks).
* @reference_mode: specifies the type of inter prediction to be used. See * @reference_mode: specifies the type of inter prediction to be used.
* Either of V4L2_VP9_REFERENCE_MODE_* * Set to one of V4L2_VP9_REFERENCE_MODE_{}.
* @reserved: padding field. Should be zeroed by applications. * @reserved: padding field. Should be zeroed by applications.
*/ */
struct v4l2_ctrl_vp9_frame { struct v4l2_ctrl_vp9_frame {
@ -2211,15 +2217,15 @@ struct v4l2_ctrl_vp9_frame {
/** /**
* struct v4l2_vp9_mv_probs - VP9 Motion vector probability updates * struct v4l2_vp9_mv_probs - VP9 Motion vector probability updates
* @joint: motion vector joint probability updates * @joint: motion vector joint probability updates.
* @sign: motion vector sign probability updates * @sign: motion vector sign probability updates.
* @classes: motion vector class probability updates * @classes: motion vector class probability updates.
* @class0_bit: motion vector class0 bit probability updates * @class0_bit: motion vector class0 bit probability updates.
* @bits: motion vector bits probability updates * @bits: motion vector bits probability updates.
* @class0_fr: motion vector class0 fractional bit probability updates * @class0_fr: motion vector class0 fractional bit probability updates.
* @fr: motion vector fractional bit probability updates * @fr: motion vector fractional bit probability updates.
* @class0_hp: motion vector class0 high precision fractional bit probability updates * @class0_hp: motion vector class0 high precision fractional bit probability updates.
* @hp: motion vector high precision fractional bit probability updates * @hp: motion vector high precision fractional bit probability updates.
* *
* This structure contains new values of motion vector probabilities. * This structure contains new values of motion vector probabilities.
* A value of zero in an array element means there is no update of the relevant probability. * A value of zero in an array element means there is no update of the relevant probability.
@ -2247,22 +2253,22 @@ struct v4l2_vp9_mv_probs {
/** /**
* struct v4l2_ctrl_vp9_compressed_hdr - VP9 probability updates control * struct v4l2_ctrl_vp9_compressed_hdr - VP9 probability updates control
* @tx_mode: specifies the TX mode. Either of V4L2_VP9_TX_MODE_*. * @tx_mode: specifies the TX mode. Set to one of V4L2_VP9_TX_MODE_{}.
* @tx8: TX 8x8 probability updates * @tx8: TX 8x8 probability updates.
* @tx16: TX 16x16 probability updates * @tx16: TX 16x16 probability updates.
* @tx32: TX 32x32 probability updates * @tx32: TX 32x32 probability updates.
* @coef: coefficient probability updates * @coef: coefficient probability updates.
* @skip: skip probability updates * @skip: skip probability updates.
* @inter_mode: inter mode probability updates * @inter_mode: inter mode probability updates.
* @interp_filter: interpolation filter probability updates * @interp_filter: interpolation filter probability updates.
* @is_inter: is inter-block probability updates * @is_inter: is inter-block probability updates.
* @comp_mode: compound prediction mode probability updates * @comp_mode: compound prediction mode probability updates.
* @single_ref: single ref probability updates * @single_ref: single ref probability updates.
* @comp_ref: compound ref probability updates * @comp_ref: compound ref probability updates.
* @y_mode: Y prediction mode probability updates * @y_mode: Y prediction mode probability updates.
* @uv_mode: UV prediction mode probability updates * @uv_mode: UV prediction mode probability updates.
* @partition: partition probability updates * @partition: partition probability updates.
* @mv: motion vector probability updates * @mv: motion vector probability updates.
* *
* This structure holds the probabilities update as parsed in the compressed * This structure holds the probabilities update as parsed in the compressed
* header (Spec 6.3). These values represent the value of probability update after * header (Spec 6.3). These values represent the value of probability update after

View file

@ -509,7 +509,7 @@ struct v4l2_pix_format {
/* Pixel format FOURCC depth Description */ /* Pixel format FOURCC depth Description */
/* RGB formats */ /* RGB formats (1 or 2 bytes per pixel) */
#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */ #define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
@ -518,12 +518,6 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */ #define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */
#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */ #define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */
#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */ #define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */
/*
* Originally this had 'BA12' as fourcc, but this clashed with the older
* V4L2_PIX_FMT_SGRBG12 which inexplicably used that same fourcc.
* So use 'GA12' instead for V4L2_PIX_FMT_BGRA444.
*/
#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */ #define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */
#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */ #define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */
#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
@ -540,6 +534,8 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */ #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */
#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */ #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */
#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */ #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
/* RGB formats (3 or 4 bytes per pixel) */
#define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */ #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */
#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
@ -584,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 */
@ -598,16 +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 */
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 8 YUV 4:2:0 4x4 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 */
@ -625,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.. */
@ -732,8 +734,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 */
@ -935,9 +937,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)
@ -959,8 +964,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
@ -1002,10 +1009,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.
@ -1038,7 +1049,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.
@ -1098,6 +1109,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
@ -1715,6 +1727,7 @@ 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_sequence *p_mpeg2_sequence;
struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture; struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture;
struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation; struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation;
@ -1737,7 +1750,9 @@ struct v4l2_ext_controls {
}; };
#define V4L2_CTRL_ID_MASK (0x0fffffff) #define V4L2_CTRL_ID_MASK (0x0fffffff)
#ifndef __KERNEL__
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
#endif
#define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL) #define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
#define V4L2_CTRL_MAX_DIMS (4) #define V4L2_CTRL_MAX_DIMS (4)
@ -1763,6 +1778,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,
@ -1774,6 +1792,10 @@ enum v4l2_ctrl_type {
V4L2_CTRL_TYPE_VP8_FRAME = 0x0240, V4L2_CTRL_TYPE_VP8_FRAME = 0x0240,
V4L2_CTRL_TYPE_MPEG2_QUANTISATION = 0x0250,
V4L2_CTRL_TYPE_MPEG2_SEQUENCE = 0x0251,
V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260, V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
V4L2_CTRL_TYPE_VP9_FRAME = 0x0261, V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
}; };
@ -2213,6 +2235,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;
@ -2231,8 +2254,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;
@ -2257,6 +2282,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;
@ -2283,6 +2309,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;
@ -2451,6 +2479,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 {
@ -2459,7 +2490,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];
}; };
/* /*
@ -2567,4 +2599,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 */