34 #ifndef __V4L2_NV_EXTENSIONS_H__
35 #define __V4L2_NV_EXTENSIONS_H__
56 #define V4L2_PIX_FMT_H265 v4l2_fourcc('H', '2', '6', '5')
60 #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '4', '4')
61 #define V4L2_PIX_FMT_YUV422M v4l2_fourcc('4', '2', '2', 'M')
62 #define V4L2_PIX_FMT_YUV422RM v4l2_fourcc('4', '2', 'R', 'M')
64 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
65 #define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F')
67 #define V4L2_CTRL_FLAG_CAN_STORE 0x0200
74 #define V4L2_EVENT_RESOLUTION_CHANGE 5
80 #define V4L2_CID_MPEG_VIDEO_H264_SPS (V4L2_CID_MPEG_BASE+383)
81 #define V4L2_CID_MPEG_VIDEO_H264_PPS (V4L2_CID_MPEG_BASE+384)
82 #define V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX (V4L2_CID_MPEG_BASE+385)
83 #define V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAM (V4L2_CID_MPEG_BASE+386)
84 #define V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAM (V4L2_CID_MPEG_BASE+387)
86 #define V4L2_CID_MPEG_VIDEO_VP8_FRAME_HDR (V4L2_CID_MPEG_BASE+512)
95 #define V4L2_CID_MPEG_VIDEO_H265_PROFILE (V4L2_CID_MPEG_BASE+513)
113 #define V4L2_CID_MPEG_VIDEO_IDR_INTERVAL (V4L2_CID_MPEG_BASE+514)
119 #define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG 0x01
120 #define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG 0x02
121 #define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG 0x04
122 #define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG 0x08
123 #define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG 0x10
124 #define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG 0x20
126 #define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE 0x01
127 #define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS 0x02
128 #define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO 0x04
129 #define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED 0x08
130 #define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
131 #define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
132 #define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
133 struct v4l2_ctrl_h264_sps {
135 __u8 constraint_set_flags;
137 __u8 seq_parameter_set_id;
138 __u8 chroma_format_idc;
139 __u8 bit_depth_luma_minus8;
140 __u8 bit_depth_chroma_minus8;
141 __u8 log2_max_frame_num_minus4;
142 __u8 pic_order_cnt_type;
143 __u8 log2_max_pic_order_cnt_lsb_minus4;
144 __s32 offset_for_non_ref_pic;
145 __s32 offset_for_top_to_bottom_field;
146 __u8 num_ref_frames_in_pic_order_cnt_cycle;
147 __s32 offset_for_ref_frame[255];
148 __u8 max_num_ref_frames;
149 __u16 pic_width_in_mbs_minus1;
150 __u16 pic_height_in_map_units_minus1;
154 #define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
155 #define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
156 #define V4L2_H264_PPS_FLAG_WEIGHTED_PRED 0x0004
157 #define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT 0x0008
158 #define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED 0x0010
159 #define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
160 #define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
161 #define V4L2_H264_PPS_FLAG_PIC_SCALING_MATRIX_PRESENT 0x0080
162 struct v4l2_ctrl_h264_pps {
163 __u8 pic_parameter_set_id;
164 __u8 seq_parameter_set_id;
165 __u8 num_slice_groups_minus1;
166 __u8 num_ref_idx_l0_default_active_minus1;
167 __u8 num_ref_idx_l1_default_active_minus1;
168 __u8 weighted_bipred_idc;
169 __s8 pic_init_qp_minus26;
170 __s8 pic_init_qs_minus26;
171 __s8 chroma_qp_index_offset;
172 __s8 second_chroma_qp_index_offset;
176 struct v4l2_ctrl_h264_scaling_matrix {
177 __u8 scaling_list_4x4[6][16];
178 __u8 scaling_list_8x8[6][64];
181 struct v4l2_h264_weight_factors {
182 __s8 luma_weight[32];
183 __s8 luma_offset[32];
184 __s8 chroma_weight[32][2];
185 __s8 chroma_offset[32][2];
188 struct v4l2_h264_pred_weight_table {
189 __u8 luma_log2_weight_denom;
190 __u8 chroma_log2_weight_denom;
191 struct v4l2_h264_weight_factors weight_factors[2];
194 #define V4L2_SLICE_FLAG_FIELD_PIC 0x01
195 #define V4L2_SLICE_FLAG_BOTTOM_FIELD 0x02
196 #define V4L2_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x04
197 #define V4L2_SLICE_FLAG_SP_FOR_SWITCH 0x08
198 struct v4l2_ctrl_h264_slice_param {
202 __u32 header_bit_size;
204 __u16 first_mb_in_slice;
206 __u8 pic_parameter_set_id;
207 __u8 colour_plane_id;
210 __u16 pic_order_cnt_lsb;
211 __s32 delta_pic_order_cnt_bottom;
212 __s32 delta_pic_order_cnt0;
213 __s32 delta_pic_order_cnt1;
214 __u8 redundant_pic_cnt;
216 struct v4l2_h264_pred_weight_table pred_weight_table;
218 __u32 dec_ref_pic_marking_bit_size;
220 __u32 pic_order_cnt_bit_size;
225 __u8 disable_deblocking_filter_idc;
226 __s8 slice_alpha_c0_offset_div2;
227 __s8 slice_beta_offset_div2;
228 __u32 slice_group_change_cycle;
230 __u8 num_ref_idx_l0_active_minus1;
231 __u8 num_ref_idx_l1_active_minus1;
234 __u8 ref_pic_list0[32];
235 __u8 ref_pic_list1[32];
241 #define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x01
242 #define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x02
243 struct v4l2_h264_dpb_entry {
248 __s32 top_field_order_cnt;
249 __s32 bottom_field_order_cnt;
253 struct v4l2_ctrl_h264_decode_param {
257 __s32 top_field_order_cnt;
258 __s32 bottom_field_order_cnt;
259 __u8 ref_pic_list_p0[32];
260 __u8 ref_pic_list_b0[32];
261 __u8 ref_pic_list_b1[32];
262 struct v4l2_h264_dpb_entry dpb[16];
265 #define V4L2_VP8_SEGMNT_HDR_FLAG_ENABLED 0x01
266 #define V4L2_VP8_SEGMNT_HDR_FLAG_UPDATE_MAP 0x02
267 #define V4L2_VP8_SEGMNT_HDR_FLAG_UPDATE_FEATURE_DATA 0x04
268 struct v4l2_vp8_sgmnt_hdr {
269 __u8 segment_feature_mode;
271 __s8 quant_update[4];
273 __u8 segment_probs[3];
278 #define V4L2_VP8_LF_HDR_ADJ_ENABLE 0x01
279 #define V4L2_VP8_LF_HDR_DELTA_UPDATE 0x02
280 struct v4l2_vp8_loopfilter_hdr {
283 __u8 sharpness_level;
284 __s8 ref_frm_delta_magnitude[4];
285 __s8 mb_mode_delta_magnitude[4];
290 struct v4l2_vp8_quantization_hdr {
297 __u16 dequant_factors[4][3][2];
300 struct v4l2_vp8_entropy_hdr {
301 __u8 coeff_probs[4][8][3][11];
302 __u8 y_mode_probs[4];
303 __u8 uv_mode_probs[3];
304 __u8 mv_probs[2][19];
307 #define V4L2_VP8_FRAME_HDR_FLAG_EXPERIMENTAL 0x01
308 #define V4L2_VP8_FRAME_HDR_FLAG_SHOW_FRAME 0x02
309 #define V4L2_VP8_FRAME_HDR_FLAG_MB_NO_SKIP_COEFF 0x04
310 struct v4l2_ctrl_vp8_frame_hdr {
317 __u8 horizontal_scale;
321 struct v4l2_vp8_sgmnt_hdr sgmnt_hdr;
322 struct v4l2_vp8_loopfilter_hdr lf_hdr;
323 struct v4l2_vp8_quantization_hdr quant_hdr;
324 struct v4l2_vp8_entropy_hdr entropy_hdr;
326 __u8 sign_bias_golden;
327 __u8 sign_bias_alternate;
329 __u8 prob_skip_false;
334 __u32 first_part_size;
335 __u32 first_part_offset;
340 __u32 macroblock_bit_offset;
343 __u32 dct_part_sizes[8];
436 #define V4L2_CID_MPEG_VIDEO_DISABLE_COMPLETE_FRAME_INPUT (V4L2_CID_MPEG_BASE+515)
448 #define V4L2_CID_MPEG_VIDEO_DISABLE_DPB (V4L2_CID_MPEG_BASE+516)
458 #define V4L2_CID_MPEG_VIDEO_ERROR_REPORTING (V4L2_CID_MPEG_BASE+517)
470 #define V4L2_CID_MPEG_VIDEO_SKIP_FRAMES (V4L2_CID_MPEG_BASE+518)
485 #define V4L2_CID_MPEG_VIDEODEC_METADATA (V4L2_CID_MPEG_BASE+519)
556 #define V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT (V4L2_CID_MPEG_BASE+520)
565 #define V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT (V4L2_CID_MPEG_BASE+521)
574 #define V4L2_CID_VIDEO_CONVERT_FLIP_METHOD (V4L2_CID_MPEG_BASE+522)
583 #define V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD (V4L2_CID_MPEG_BASE+523)
594 #define V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM (V4L2_CID_MPEG_BASE+524)
700 #define V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL (V4L2_CID_MPEG_BASE+525)
711 #define V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM (V4L2_CID_MPEG_BASE+526)
723 #define V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS (V4L2_CID_MPEG_BASE+527)
734 #define V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE (V4L2_CID_MPEG_BASE+528)
744 #define V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES (V4L2_CID_MPEG_BASE+529)
755 #define V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM (V4L2_CID_MPEG_BASE+530)
766 #define V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES (V4L2_CID_MPEG_BASE+531)
776 #define V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR (V4L2_CID_MPEG_BASE+532)
788 #define V4L2_CID_MPEG_VIDEOENC_METADATA (V4L2_CID_MPEG_BASE+533)
798 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV (V4L2_CID_MPEG_BASE+534)
810 #define V4L2_CID_MPEG_VIDEOENC_METADATA_MV (V4L2_CID_MPEG_BASE+535)
821 #define V4L2_CID_MPEG_VIDEOENC_QP_RANGE (V4L2_CID_MPEG_BASE+536)
1045 #define V4L2_MAX_ROI_REGIONS 8
1152 #define QP_RETAIN_VAL -1
__s32 mv_y
Number of pixels the macro block moved in vertical direction.
Holds the motion vector parameters for a single macro block.
struct v4l2_ctrl_videodec_statusmetadata_ v4l2_ctrl_videodec_statusmetadata
Holds the decoder error status metadata for the frame.
Indoor Low Light TNR algorithm.
Holds the encoder frame ROI parameters.
__u32 MaxQpI
Maximum QP value for I frame.
v4l2_nv_buffer_layout
Enum specifying types of buffer layouts.
Drop 1 in every 3 buffers.
__u32 MinQpB
Minimum QP value for B frame.
struct v4l2_ctrl_videodec_dpbinfometadata_ v4l2_ctrl_videodec_dpbinfometadata
Holds the decoder DPB info metadata.
struct v4l2_rect ROIRect
Region of interest rectangle.
v4l2_enc_temporal_tradeoff_level_type
Enum specifying the types of encoder temporal tradeoff levels.
v4l2_tnr_algorithm
Enum specifying types of TNR algorithms.
Slice size is specified in terms of number of macroblocks.
__u32 MinQpI
Minimum QP value for I frame.
struct v4l2_ctrl_videoenc_outputbuf_metadata_ v4l2_ctrl_videoenc_outputbuf_metadata
Holds the encoder output metadata for a frame, to be used with V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL...
Drop 2 in every 3 buffers.
Flip across upper left/lower right diagonal.
v4l2_mpeg_video_h265_profile
Holds the possible profiles for H.265 encoder.
__u32 weight
Temporal hints used by hardware for Motion Estimation.
struct v4l2_ctrl_videodec_outputbuf_metadata_ v4l2_ctrl_videodec_outputbuf_metadata
Holds the video decoder output metadata for a frame.
v4l2_enc_slice_length_type
Enum specifying the type of slice length.
Skip all frames except IDR.
Drop 1 in every 5 buffers.
Drop 1 in every 2 buffers.
Holds encoder virtual buffer size parameters, to be used with V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SI...
__u32 MinQpP
Minimum QP value for P frame.
struct MVInfo_ MVInfo
Holds the motion vector parameters for a single macro block.
Holds the encoder quality parameters for a single ROI region.
Indoor Medium Light TNR algorithm.
Holds encoder number of reference frame parameters, to be used with V4L2_CID_MPEG_VIDEOENC_NUM_REFERE...
struct v4l2_enc_num_ref_frames_ v4l2_enc_num_ref_frames
Holds encoder number of reference frame parameters, to be used with V4L2_CID_MPEG_VIDEOENC_NUM_REFERE...
struct _v4l2_ctrl_video_qp_range v4l2_ctrl_video_qp_range
Holds the encoder frame min/max QP parameters.
__u32 slice_length
Size of the slice in either number of bytes or number of macro blocks.
__u32 frames
Number of reference frames.
Linear interpolation method.
v4l2_enc_ROI_param ROI_params[V4L2_MAX_ROI_REGIONS]
Array of indiviudal ROI parameters.
Rotate counter-clockwise 90 degrees.
v4l2_skip_frames_type
Enum v4l2_skip_frames_type, possible methods for decoder skip frames.
struct v4l2_enc_virtual_buffer_size_ v4l2_enc_virtual_buffer_size
Holds encoder virtual buffer size parameters, to be used with V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SI...
struct _v4l2_ctrl_video_metadata v4l2_ctrl_video_metadata
Holds the metadata parameters for video encoder and decoder.
struct v4l2_enc_slice_length_param_ v4l2_enc_slice_length_param
Holds encoder slice length parameters, to be used with V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM IOCT...
v4l2_interpolation_method
Enum specifying types of interpolation methods.
struct v4l2_ctrl_hevcdec_bufmetadata_ v4l2_ctrl_hevcdec_bufmetadata
Holds H.265 specific decoder metadata for the frame.
Rotate clockwise 90 degrees.
struct v4l2_ctrl_videoenc_outputbuf_metadata_MV_ v4l2_ctrl_videoenc_outputbuf_metadata_MV
Holds the motion vector parameters for one complete frame.
Smart interpolation method.
H.265 MainStillPicture profile.
Nearest interpolation method.
Outdoor Low Light TNR algorithm.
Flip across upper right/lower left diagonal.
Bi-Linear interpolation method.
Holds the encoder frame min/max QP parameters.
Skip all non-reference frames.
struct v4l2_ctrl_videodec_refframe_metadata_ v4l2_ctrl_videodec_refframe_metadata
Holds the the frame specific metadata for a reference frame.
#define V4L2_MAX_ROI_REGIONS
Maximum number of ROI regions supported by the encoder.
__u32 config_store
Config store integer to which this control is to be applied.
Outdoor High Light TNR algorithm.
__u32 size
Size of the virtual buffer, in bits.
Slice size is specified in terms of number of bytes.
struct v4l2_enc_slice_intrarefresh_param_ v4l2_enc_slice_intrarefresh_param
Holds encoder slice intrareferesh parameters, to be used with V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRE...
__s32 QPdelta
QP delta for the region.
__u32 MaxQpB
Maximum QP value for B frame.
__s32 mv_x
Number of pixels the macro block moved in horizontal direction.
enum v4l2_enc_slice_length_type slice_length_type
Type in which the slice length is specified, one of type v4l2_enc_slice_length_type.
Holds encoder slice length parameters, to be used with V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM IOCT...
Holds encoder slice intrareferesh parameters, to be used with V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRE...
v4l2_flip_method
Enum specifying types of rotation/flip algorithms.
struct v4l2_enc_ROI_param_ v4l2_enc_ROI_param
Holds the encoder quality parameters for a single ROI region.
__u32 interval
Slice intrarefresh interval, in number of slices.
Outdoor Medium Light TNR algorithm.
struct v4l2_ctrl_h264dec_bufmetadata_ v4l2_ctrl_h264dec_bufmetadata
Holds H.264 specific decoder metadata for the frame.
__u32 MaxQpP
Maximum QP value for P frame.
struct v4l2_ctrl_videodec_currentframe_metadata_ v4l2_ctrl_videodec_currentframe_metadata
Holds the the frame specific metadata for the current frame.
Indoor High Light TNR algorithm.
struct v4l2_enc_frame_ROI_params_ v4l2_enc_frame_ROI_params
Holds the encoder frame ROI parameters.
__u32 num_ROI_regions
Number of regions.