include: linux: Update kernel headers to version v5.19
Update kernel headers to v5.19 using utils/update-kernel-headers.sh and re-instating libcamera local modifications. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Tested-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
2e77ccbb93
commit
37e85ff1dd
6 changed files with 418 additions and 23 deletions
|
@ -128,6 +128,7 @@ enum v4l2_colorfx {
|
|||
V4L2_COLORFX_SOLARIZATION = 13,
|
||||
V4L2_COLORFX_ANTIQUE = 14,
|
||||
V4L2_COLORFX_SET_CBCR = 15,
|
||||
V4L2_COLORFX_SET_RGB = 16,
|
||||
};
|
||||
#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
|
||||
#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
|
||||
|
@ -145,9 +146,10 @@ enum v4l2_colorfx {
|
|||
|
||||
#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41)
|
||||
#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42)
|
||||
#define V4L2_CID_COLORFX_RGB (V4L2_CID_BASE+43)
|
||||
|
||||
/* last CID + 1 */
|
||||
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43)
|
||||
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+44)
|
||||
|
||||
/* USER-class private control IDs */
|
||||
|
||||
|
@ -221,6 +223,12 @@ enum v4l2_colorfx {
|
|||
*/
|
||||
#define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
|
||||
|
||||
/*
|
||||
* The base for the isl7998x driver controls.
|
||||
* We reserve 16 controls for this driver.
|
||||
*/
|
||||
#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
|
||||
|
||||
/* MPEG-class control IDs */
|
||||
/* The MPEG controls are applicable to all codec controls
|
||||
* and the 'MPEG' part of the define is historical */
|
||||
|
@ -443,6 +451,11 @@ enum v4l2_mpeg_video_multi_slice_mode {
|
|||
#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)
|
||||
#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE+237)
|
||||
enum v4l2_mpeg_video_intra_refresh_period_type {
|
||||
V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
|
||||
V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
|
||||
};
|
||||
|
||||
/* CIDs for the MPEG-2 Part 2 (H.262) codec */
|
||||
#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
|
||||
|
@ -1563,6 +1576,8 @@ struct v4l2_h264_dpb_entry {
|
|||
#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
|
||||
|
||||
#define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
|
||||
/**
|
||||
|
@ -2018,6 +2033,290 @@ struct v4l2_ctrl_hdr10_mastering_display {
|
|||
__u32 min_display_mastering_luminance;
|
||||
};
|
||||
|
||||
/* Stateless VP9 controls */
|
||||
|
||||
#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1
|
||||
#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE 0x2
|
||||
|
||||
/**
|
||||
* struct v4l2_vp9_loop_filter - VP9 loop filter parameters
|
||||
*
|
||||
* @ref_deltas: contains the adjustment needed for the filter level based on the
|
||||
* chosen reference frame. If this syntax element is not present in the bitstream,
|
||||
* users should pass its last value.
|
||||
* @mode_deltas: contains the adjustment needed for the filter level based on the
|
||||
* chosen mode. If this syntax element is not present in the bitstream, users should
|
||||
* pass its last value.
|
||||
* @level: indicates the loop filter strength.
|
||||
* @sharpness: indicates the sharpness level.
|
||||
* @flags: combination of V4L2_VP9_LOOP_FILTER_FLAG_{} flags.
|
||||
* @reserved: padding field. Should be zeroed by applications.
|
||||
*
|
||||
* This structure contains all loop filter related parameters. See sections
|
||||
* '7.2.8 Loop filter semantics' of the VP9 specification for more details.
|
||||
*/
|
||||
struct v4l2_vp9_loop_filter {
|
||||
__s8 ref_deltas[4];
|
||||
__s8 mode_deltas[2];
|
||||
__u8 level;
|
||||
__u8 sharpness;
|
||||
__u8 flags;
|
||||
__u8 reserved[7];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct v4l2_vp9_quantization - VP9 quantization parameters
|
||||
*
|
||||
* @base_q_idx: indicates the base frame qindex.
|
||||
* @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_ac: indicates the UV AC quantizer relative to base_q_idx.
|
||||
* @reserved: padding field. Should be zeroed by applications.
|
||||
*
|
||||
* Encodes the quantization parameters. See section '7.2.9 Quantization params
|
||||
* syntax' of the VP9 specification for more details.
|
||||
*/
|
||||
struct v4l2_vp9_quantization {
|
||||
__u8 base_q_idx;
|
||||
__s8 delta_q_y_dc;
|
||||
__s8 delta_q_uv_dc;
|
||||
__s8 delta_q_uv_ac;
|
||||
__u8 reserved[4];
|
||||
};
|
||||
|
||||
#define V4L2_VP9_SEGMENTATION_FLAG_ENABLED 0x01
|
||||
#define V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP 0x02
|
||||
#define V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE 0x04
|
||||
#define V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA 0x08
|
||||
#define V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE 0x10
|
||||
|
||||
#define V4L2_VP9_SEG_LVL_ALT_Q 0
|
||||
#define V4L2_VP9_SEG_LVL_ALT_L 1
|
||||
#define V4L2_VP9_SEG_LVL_REF_FRAME 2
|
||||
#define V4L2_VP9_SEG_LVL_SKIP 3
|
||||
#define V4L2_VP9_SEG_LVL_MAX 4
|
||||
|
||||
#define V4L2_VP9_SEGMENT_FEATURE_ENABLED(id) (1 << (id))
|
||||
#define V4L2_VP9_SEGMENT_FEATURE_ENABLED_MASK 0xf
|
||||
|
||||
/**
|
||||
* struct v4l2_vp9_segmentation - VP9 segmentation parameters
|
||||
*
|
||||
* @feature_data: data attached to each feature. Data entry is only valid if
|
||||
* the feature is enabled. The array shall be indexed with segment number as
|
||||
* 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 each segment is a combination of V4L2_VP9_SEGMENT_FEATURE_ENABLED(id)
|
||||
* values where id is one of V4L2_VP9_SEG_LVL_{}.
|
||||
* @tree_probs: specifies the probability values to be used when decoding a
|
||||
* Segment-ID. See '5.15. Segmentation map' section of the VP9 specification
|
||||
* for more details.
|
||||
* @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`
|
||||
* for more details.
|
||||
* @flags: combination of V4L2_VP9_SEGMENTATION_FLAG_{} flags.
|
||||
* @reserved: padding field. Should be zeroed by applications.
|
||||
*
|
||||
* Encodes the quantization parameters. See section '7.2.10 Segmentation params syntax' of
|
||||
* the VP9 specification for more details.
|
||||
*/
|
||||
struct v4l2_vp9_segmentation {
|
||||
__s16 feature_data[8][4];
|
||||
__u8 feature_enabled[8];
|
||||
__u8 tree_probs[7];
|
||||
__u8 pred_probs[3];
|
||||
__u8 flags;
|
||||
__u8 reserved[5];
|
||||
};
|
||||
|
||||
#define V4L2_VP9_FRAME_FLAG_KEY_FRAME 0x001
|
||||
#define V4L2_VP9_FRAME_FLAG_SHOW_FRAME 0x002
|
||||
#define V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT 0x004
|
||||
#define V4L2_VP9_FRAME_FLAG_INTRA_ONLY 0x008
|
||||
#define V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV 0x010
|
||||
#define V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX 0x020
|
||||
#define V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE 0x040
|
||||
#define V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING 0x080
|
||||
#define V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING 0x100
|
||||
#define V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING 0x200
|
||||
|
||||
#define V4L2_VP9_SIGN_BIAS_LAST 0x1
|
||||
#define V4L2_VP9_SIGN_BIAS_GOLDEN 0x2
|
||||
#define V4L2_VP9_SIGN_BIAS_ALT 0x4
|
||||
|
||||
#define V4L2_VP9_RESET_FRAME_CTX_NONE 0
|
||||
#define V4L2_VP9_RESET_FRAME_CTX_SPEC 1
|
||||
#define V4L2_VP9_RESET_FRAME_CTX_ALL 2
|
||||
|
||||
#define V4L2_VP9_INTERP_FILTER_EIGHTTAP 0
|
||||
#define V4L2_VP9_INTERP_FILTER_EIGHTTAP_SMOOTH 1
|
||||
#define V4L2_VP9_INTERP_FILTER_EIGHTTAP_SHARP 2
|
||||
#define V4L2_VP9_INTERP_FILTER_BILINEAR 3
|
||||
#define V4L2_VP9_INTERP_FILTER_SWITCHABLE 4
|
||||
|
||||
#define V4L2_VP9_REFERENCE_MODE_SINGLE_REFERENCE 0
|
||||
#define V4L2_VP9_REFERENCE_MODE_COMPOUND_REFERENCE 1
|
||||
#define V4L2_VP9_REFERENCE_MODE_SELECT 2
|
||||
|
||||
#define V4L2_VP9_PROFILE_MAX 3
|
||||
|
||||
#define V4L2_CID_STATELESS_VP9_FRAME (V4L2_CID_CODEC_STATELESS_BASE + 300)
|
||||
/**
|
||||
* struct v4l2_ctrl_vp9_frame - VP9 frame decoding control
|
||||
*
|
||||
* @lf: loop filter parameters. See &v4l2_vp9_loop_filter for more details.
|
||||
* @quant: quantization parameters. See &v4l2_vp9_quantization for more details.
|
||||
* @seg: segmentation parameters. See &v4l2_vp9_segmentation for more details.
|
||||
* @flags: combination of V4L2_VP9_FRAME_FLAG_{} flags.
|
||||
* @compressed_header_size: compressed 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_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
|
||||
* 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.
|
||||
* @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
|
||||
* to prepare a frame that's ready for scanout.
|
||||
* @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.
|
||||
* The timestamp refers to the timestamp field in struct v4l2_buffer.
|
||||
* Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
|
||||
* @alt_frame_ts: "alt" 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.
|
||||
* @ref_frame_sign_bias: a bitfield specifying whether the sign bias is set for a given
|
||||
* reference frame. Either of V4L2_VP9_SIGN_BIAS_{}.
|
||||
* @reset_frame_context: specifies whether the frame context should be reset to default values.
|
||||
* Either of V4L2_VP9_RESET_FRAME_CTX_{}.
|
||||
* @frame_context_idx: frame context that should be used/updated.
|
||||
* @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
|
||||
* 10 and/or 12 bits depths.
|
||||
* @interpolation_filter: specifies the filter selection used for performing inter prediction.
|
||||
* 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
|
||||
* 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
|
||||
* is measured in units of 8x8 blocks).
|
||||
* @reference_mode: specifies the type of inter prediction to be used.
|
||||
* Set to one of V4L2_VP9_REFERENCE_MODE_{}.
|
||||
* @reserved: padding field. Should be zeroed by applications.
|
||||
*/
|
||||
struct v4l2_ctrl_vp9_frame {
|
||||
struct v4l2_vp9_loop_filter lf;
|
||||
struct v4l2_vp9_quantization quant;
|
||||
struct v4l2_vp9_segmentation seg;
|
||||
__u32 flags;
|
||||
__u16 compressed_header_size;
|
||||
__u16 uncompressed_header_size;
|
||||
__u16 frame_width_minus_1;
|
||||
__u16 frame_height_minus_1;
|
||||
__u16 render_width_minus_1;
|
||||
__u16 render_height_minus_1;
|
||||
__u64 last_frame_ts;
|
||||
__u64 golden_frame_ts;
|
||||
__u64 alt_frame_ts;
|
||||
__u8 ref_frame_sign_bias;
|
||||
__u8 reset_frame_context;
|
||||
__u8 frame_context_idx;
|
||||
__u8 profile;
|
||||
__u8 bit_depth;
|
||||
__u8 interpolation_filter;
|
||||
__u8 tile_cols_log2;
|
||||
__u8 tile_rows_log2;
|
||||
__u8 reference_mode;
|
||||
__u8 reserved[7];
|
||||
};
|
||||
|
||||
#define V4L2_VP9_NUM_FRAME_CTX 4
|
||||
|
||||
/**
|
||||
* struct v4l2_vp9_mv_probs - VP9 Motion vector probability updates
|
||||
* @joint: motion vector joint probability updates.
|
||||
* @sign: motion vector sign probability updates.
|
||||
* @classes: motion vector class probability updates.
|
||||
* @class0_bit: motion vector class0 bit probability updates.
|
||||
* @bits: motion vector bits probability updates.
|
||||
* @class0_fr: motion vector class0 fractional bit probability updates.
|
||||
* @fr: motion vector fractional bit probability updates.
|
||||
* @class0_hp: motion vector class0 high precision fractional bit probability updates.
|
||||
* @hp: motion vector high precision fractional bit probability updates.
|
||||
*
|
||||
* 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.
|
||||
* See `struct v4l2_vp9_prob_updates` for details.
|
||||
*/
|
||||
struct v4l2_vp9_mv_probs {
|
||||
__u8 joint[3];
|
||||
__u8 sign[2];
|
||||
__u8 classes[2][10];
|
||||
__u8 class0_bit[2];
|
||||
__u8 bits[2][10];
|
||||
__u8 class0_fr[2][2][3];
|
||||
__u8 fr[2][3];
|
||||
__u8 class0_hp[2];
|
||||
__u8 hp[2];
|
||||
};
|
||||
|
||||
#define V4L2_CID_STATELESS_VP9_COMPRESSED_HDR (V4L2_CID_CODEC_STATELESS_BASE + 301)
|
||||
|
||||
#define V4L2_VP9_TX_MODE_ONLY_4X4 0
|
||||
#define V4L2_VP9_TX_MODE_ALLOW_8X8 1
|
||||
#define V4L2_VP9_TX_MODE_ALLOW_16X16 2
|
||||
#define V4L2_VP9_TX_MODE_ALLOW_32X32 3
|
||||
#define V4L2_VP9_TX_MODE_SELECT 4
|
||||
|
||||
/**
|
||||
* struct v4l2_ctrl_vp9_compressed_hdr - VP9 probability updates control
|
||||
* @tx_mode: specifies the TX mode. Set to one of V4L2_VP9_TX_MODE_{}.
|
||||
* @tx8: TX 8x8 probability updates.
|
||||
* @tx16: TX 16x16 probability updates.
|
||||
* @tx32: TX 32x32 probability updates.
|
||||
* @coef: coefficient probability updates.
|
||||
* @skip: skip probability updates.
|
||||
* @inter_mode: inter mode probability updates.
|
||||
* @interp_filter: interpolation filter probability updates.
|
||||
* @is_inter: is inter-block probability updates.
|
||||
* @comp_mode: compound prediction mode probability updates.
|
||||
* @single_ref: single ref probability updates.
|
||||
* @comp_ref: compound ref probability updates.
|
||||
* @y_mode: Y prediction mode probability updates.
|
||||
* @uv_mode: UV prediction mode probability updates.
|
||||
* @partition: partition probability updates.
|
||||
* @mv: motion vector probability updates.
|
||||
*
|
||||
* This structure holds the probabilities update as parsed in the compressed
|
||||
* header (Spec 6.3). These values represent the value of probability update after
|
||||
* being translated with inv_map_table[] (see 6.3.5). A value of zero in an array element
|
||||
* means that there is no update of the relevant probability.
|
||||
*
|
||||
* This control is optional and needs to be used when dealing with the hardware which is
|
||||
* not capable of parsing the compressed header itself. Only drivers which need it will
|
||||
* implement it.
|
||||
*/
|
||||
struct v4l2_ctrl_vp9_compressed_hdr {
|
||||
__u8 tx_mode;
|
||||
__u8 tx8[2][1];
|
||||
__u8 tx16[2][2];
|
||||
__u8 tx32[2][3];
|
||||
__u8 coef[4][2][2][6][6][3];
|
||||
__u8 skip[3];
|
||||
__u8 inter_mode[7][3];
|
||||
__u8 interp_filter[4][2];
|
||||
__u8 is_inter[4];
|
||||
__u8 comp_mode[5];
|
||||
__u8 single_ref[5][2];
|
||||
__u8 comp_ref[5];
|
||||
__u8 y_mode[4][9];
|
||||
__u8 uv_mode[10][9];
|
||||
__u8 partition[16][3];
|
||||
|
||||
struct v4l2_vp9_mv_probs mv;
|
||||
};
|
||||
|
||||
/* MPEG-compression definitions kept for backwards compatibility */
|
||||
#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
|
||||
#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue