diff options
Diffstat (limited to 'include/uapi/linux/v4l2-controls.h')
| -rw-r--r-- | include/uapi/linux/v4l2-controls.h | 241 | 
1 files changed, 240 insertions, 1 deletions
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h index 039c0d7add1b..d43bec5f1afd 100644 --- a/include/uapi/linux/v4l2-controls.h +++ b/include/uapi/linux/v4l2-controls.h @@ -66,6 +66,7 @@  #define V4L2_CTRL_CLASS_RF_TUNER	0x00a20000	/* RF tuner controls */  #define V4L2_CTRL_CLASS_DETECT		0x00a30000	/* Detection controls */  #define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000	/* Stateless codecs controls */ +#define V4L2_CTRL_CLASS_COLORIMETRY	0x00a50000	/* Colorimetry controls */  /* User-class control IDs */ @@ -428,6 +429,11 @@ 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_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_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)  /* CIDs for the MPEG-2 Part 2 (H.262) codec */  #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL			(V4L2_CID_CODEC_BASE+270) @@ -797,6 +803,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_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 */  #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) @@ -1329,7 +1338,7 @@ struct v4l2_ctrl_h264_sps {   * struct v4l2_ctrl_h264_pps - H264 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.   *   * In particular, V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT flag @@ -1657,6 +1666,236 @@ struct v4l2_ctrl_fwht_params {  	__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; +}; + +#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 */  #ifndef __KERNEL__  #define V4L2_CTRL_CLASS_MPEG            V4L2_CTRL_CLASS_CODEC  |