L4T Multimedia API Reference

32.3.1 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
v4l2_nv_extensions.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016-2019, NVIDIA CORPORATION. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in
11  * the documentation and/or other materials provided with the
12  * distribution.
13  * 3. The names of its contributors may not be used to endorse or promote
14  * products derived from this software without specific prior written
15  * permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
23  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 /* This file contains amendments to the V4L2 headers made after the
31  * supported kernel version and NVIDIA extensions.
32  */
33 
34 #ifndef __V4L2_NV_EXTENSIONS_H__
35 #define __V4L2_NV_EXTENSIONS_H__
36 
55 #define V4L2_PIX_FMT_DIVX4 v4l2_fourcc('D', 'V', 'X', '4')
56 
57 #define V4L2_PIX_FMT_DIVX5 v4l2_fourcc('D', 'V', 'X', '5')
58 
61 #define V4L2_PIX_FMT_H265 v4l2_fourcc('H', '2', '6', '5')
62 
66 #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0')
67 
71 #define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* Y/CbCr 4:2:0, 10 bits per channel */
72 
76 #define V4L2_PIX_FMT_P010M v4l2_fourcc('P', 'M', '1', '0') /* Y/CbCr 4:2:0, 10 bits per channel */
77 
81 #define V4L2_PIX_FMT_P012 v4l2_fourcc('P', '0', '1', '2') /* Y/CbCr 4:2:0, 12 bits per channel */
82 
86 #define V4L2_PIX_FMT_P012M v4l2_fourcc('P', 'M', '1', '2') /* Y/CbCr 4:2:0, 12 bits per channel */
87 
88 
90 /* >> The declarations from here to the next endcond statement are not
91  * >> currently implemented. DO NOT USE. */
92 
93 #define V4L2_PIX_FMT_YUV422RM v4l2_fourcc('4', '2', 'R', 'M')
94 
95 
96 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
97 #define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F')
99 #define V4L2_CTRL_FLAG_CAN_STORE 0x0200
100 
106 #define V4L2_EVENT_RESOLUTION_CHANGE 5
107 
109 /* >> The declarations from here to the next endcond statement are not
110  * >> currently implemented. DO NOT USE. */
111 
112 /*---------------Below are changes from the v4l2-controls.h----------------------*/
113 
114 #define V4L2_CID_MPEG_VIDEO_H264_SPS (V4L2_CID_MPEG_BASE+383)
115 #define V4L2_CID_MPEG_VIDEO_H264_PPS (V4L2_CID_MPEG_BASE+384)
116 #define V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX (V4L2_CID_MPEG_BASE+385)
117 #define V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAM (V4L2_CID_MPEG_BASE+386)
118 #define V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAM (V4L2_CID_MPEG_BASE+387)
119 
120 #define V4L2_CID_MPEG_VIDEO_VP8_FRAME_HDR (V4L2_CID_MPEG_BASE+512)
121 
129 #define V4L2_CID_MPEG_VIDEO_H265_PROFILE (V4L2_CID_MPEG_BASE+513)
130 
141 };
142 
147 #define V4L2_CID_MPEG_VIDEO_IDR_INTERVAL (V4L2_CID_MPEG_BASE+514)
148 
150 /* >> The declarations from here to the next endcond statement are not
151  * >> currently implemented. DO NOT USE. */
152 
153 /* Complex controls */
154 
155 #define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG 0x01
156 #define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG 0x02
157 #define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG 0x04
158 #define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG 0x08
159 #define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG 0x10
160 #define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG 0x20
161 
162 #define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE 0x01
163 #define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS 0x02
164 #define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO 0x04
165 #define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED 0x08
166 #define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
167 #define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
168 #define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
169 struct v4l2_ctrl_h264_sps {
170  __u8 profile_idc;
171  __u8 constraint_set_flags;
172  __u8 level_idc;
173  __u8 seq_parameter_set_id;
174  __u8 chroma_format_idc;
175  __u8 bit_depth_luma_minus8;
176  __u8 bit_depth_chroma_minus8;
177  __u8 log2_max_frame_num_minus4;
178  __u8 pic_order_cnt_type;
179  __u8 log2_max_pic_order_cnt_lsb_minus4;
180  __s32 offset_for_non_ref_pic;
181  __s32 offset_for_top_to_bottom_field;
182  __u8 num_ref_frames_in_pic_order_cnt_cycle;
183  __s32 offset_for_ref_frame[255];
184  __u8 max_num_ref_frames;
185  __u16 pic_width_in_mbs_minus1;
186  __u16 pic_height_in_map_units_minus1;
187  __u8 flags;
188 };
189 
190 #define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
191 #define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
192 #define V4L2_H264_PPS_FLAG_WEIGHTED_PRED 0x0004
193 #define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT 0x0008
194 #define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED 0x0010
195 #define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
196 #define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
197 #define V4L2_H264_PPS_FLAG_PIC_SCALING_MATRIX_PRESENT 0x0080
198 struct v4l2_ctrl_h264_pps {
199  __u8 pic_parameter_set_id;
200  __u8 seq_parameter_set_id;
201  __u8 num_slice_groups_minus1;
202  __u8 num_ref_idx_l0_default_active_minus1;
203  __u8 num_ref_idx_l1_default_active_minus1;
204  __u8 weighted_bipred_idc;
205  __s8 pic_init_qp_minus26;
206  __s8 pic_init_qs_minus26;
207  __s8 chroma_qp_index_offset;
208  __s8 second_chroma_qp_index_offset;
209  __u8 flags;
210 };
211 
212 struct v4l2_ctrl_h264_scaling_matrix {
213  __u8 scaling_list_4x4[6][16];
214  __u8 scaling_list_8x8[6][64];
215 };
216 
217 struct v4l2_h264_weight_factors {
218  __s8 luma_weight[32];
219  __s8 luma_offset[32];
220  __s8 chroma_weight[32][2];
221  __s8 chroma_offset[32][2];
222 };
223 
224 struct v4l2_h264_pred_weight_table {
225  __u8 luma_log2_weight_denom;
226  __u8 chroma_log2_weight_denom;
227  struct v4l2_h264_weight_factors weight_factors[2];
228 };
229 
230 #define V4L2_SLICE_FLAG_FIELD_PIC 0x01
231 #define V4L2_SLICE_FLAG_BOTTOM_FIELD 0x02
232 #define V4L2_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x04
233 #define V4L2_SLICE_FLAG_SP_FOR_SWITCH 0x08
234 struct v4l2_ctrl_h264_slice_param {
236  __u32 size;
238  __u32 header_bit_size;
239 
240  __u16 first_mb_in_slice;
241  __u8 slice_type;
242  __u8 pic_parameter_set_id;
243  __u8 colour_plane_id;
244  __u16 frame_num;
245  __u16 idr_pic_id;
246  __u16 pic_order_cnt_lsb;
247  __s32 delta_pic_order_cnt_bottom;
248  __s32 delta_pic_order_cnt0;
249  __s32 delta_pic_order_cnt1;
250  __u8 redundant_pic_cnt;
251 
252  struct v4l2_h264_pred_weight_table pred_weight_table;
253  /* Size in bits of dec_ref_pic_marking() syntax element. */
254  __u32 dec_ref_pic_marking_bit_size;
255  /* Size in bits of pic order count syntax. */
256  __u32 pic_order_cnt_bit_size;
257 
258  __u8 cabac_init_idc;
259  __s8 slice_qp_delta;
260  __s8 slice_qs_delta;
261  __u8 disable_deblocking_filter_idc;
262  __s8 slice_alpha_c0_offset_div2;
263  __s8 slice_beta_offset_div2;
264  __u32 slice_group_change_cycle;
265 
266  __u8 num_ref_idx_l0_active_minus1;
267  __u8 num_ref_idx_l1_active_minus1;
268  /* Entries on each list are indices
269  * into v4l2_ctrl_h264_decode_param.dpb[]. */
270  __u8 ref_pic_list0[32];
271  __u8 ref_pic_list1[32];
272 
273  __u8 flags;
274 };
275 
278 #define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x01
279 #define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x02
280 struct v4l2_h264_dpb_entry {
281  __u32 buf_index;
282  __u16 frame_num;
283  __u16 pic_num;
285  __s32 top_field_order_cnt;
286  __s32 bottom_field_order_cnt;
287  __u8 flags; /* V4L2_H264_DPB_ENTRY_FLAG_* */
288 };
289 
290 struct v4l2_ctrl_h264_decode_param {
291  __u32 num_slices;
292  __u8 idr_pic_flag;
293  __u8 nal_ref_idc;
294  __s32 top_field_order_cnt;
295  __s32 bottom_field_order_cnt;
296  __u8 ref_pic_list_p0[32];
297  __u8 ref_pic_list_b0[32];
298  __u8 ref_pic_list_b1[32];
299  struct v4l2_h264_dpb_entry dpb[16];
300 };
301 
302 #define V4L2_VP8_SEGMNT_HDR_FLAG_ENABLED 0x01
303 #define V4L2_VP8_SEGMNT_HDR_FLAG_UPDATE_MAP 0x02
304 #define V4L2_VP8_SEGMNT_HDR_FLAG_UPDATE_FEATURE_DATA 0x04
305 struct v4l2_vp8_sgmnt_hdr {
306  __u8 segment_feature_mode;
307 
308  __s8 quant_update[4];
309  __s8 lf_update[4];
310  __u8 segment_probs[3];
311 
312  __u8 flags;
313 };
314 
315 #define V4L2_VP8_LF_HDR_ADJ_ENABLE 0x01
316 #define V4L2_VP8_LF_HDR_DELTA_UPDATE 0x02
317 struct v4l2_vp8_loopfilter_hdr {
318  __u8 type;
319  __u8 level;
320  __u8 sharpness_level;
321  __s8 ref_frm_delta_magnitude[4];
322  __s8 mb_mode_delta_magnitude[4];
323 
324  __u8 flags;
325 };
326 
327 struct v4l2_vp8_quantization_hdr {
328  __u8 y_ac_qi;
329  __s8 y_dc_delta;
330  __s8 y2_dc_delta;
331  __s8 y2_ac_delta;
332  __s8 uv_dc_delta;
333  __s8 uv_ac_delta;
334  __u16 dequant_factors[4][3][2];
335 };
336 
337 struct v4l2_vp8_entropy_hdr {
338  __u8 coeff_probs[4][8][3][11];
339  __u8 y_mode_probs[4];
340  __u8 uv_mode_probs[3];
341  __u8 mv_probs[2][19];
342 };
343 
344 #define V4L2_VP8_FRAME_HDR_FLAG_EXPERIMENTAL 0x01
345 #define V4L2_VP8_FRAME_HDR_FLAG_SHOW_FRAME 0x02
346 #define V4L2_VP8_FRAME_HDR_FLAG_MB_NO_SKIP_COEFF 0x04
347 struct v4l2_ctrl_vp8_frame_hdr {
349  __u8 key_frame;
350  __u8 version;
351 
353  __u16 width;
354  __u8 horizontal_scale;
355  __u16 height;
356  __u8 vertical_scale;
357 
358  struct v4l2_vp8_sgmnt_hdr sgmnt_hdr;
359  struct v4l2_vp8_loopfilter_hdr lf_hdr;
360  struct v4l2_vp8_quantization_hdr quant_hdr;
361  struct v4l2_vp8_entropy_hdr entropy_hdr;
362 
363  __u8 sign_bias_golden;
364  __u8 sign_bias_alternate;
365 
366  __u8 prob_skip_false;
367  __u8 prob_intra;
368  __u8 prob_last;
369  __u8 prob_gf;
370 
371  __u32 first_part_size;
376  __u32 first_part_offset;
377  __u32 macroblock_bit_offset;
378 
379  __u8 num_dct_parts;
380  __u32 dct_part_sizes[8];
381 
382  __u8 bool_dec_range;
383  __u8 bool_dec_value;
384  __u8 bool_dec_count;
385 
387  __u32 last_frame;
389  __u32 golden_frame;
391  __u32 alt_frame;
392 
393  __u8 flags;
394 };
395 
398 /*---------------Add below NVIDIA specific extensions ----------------------*/
399 
486 #define V4L2_CID_MPEG_VIDEO_DISABLE_COMPLETE_FRAME_INPUT (V4L2_CID_MPEG_BASE+515)
487 
498 #define V4L2_CID_MPEG_VIDEO_DISABLE_DPB (V4L2_CID_MPEG_BASE+516)
499 
508 #define V4L2_CID_MPEG_VIDEO_ERROR_REPORTING (V4L2_CID_MPEG_BASE+517)
509 
520 #define V4L2_CID_MPEG_VIDEO_SKIP_FRAMES (V4L2_CID_MPEG_BASE+518)
521 
535 #define V4L2_CID_MPEG_VIDEODEC_METADATA (V4L2_CID_MPEG_BASE+519)
536 
550 #define V4L2_CID_MPEG_VIDEODEC_INPUT_METADATA (V4L2_CID_MPEG_BASE+520)
551 
558 #define V4L2_CID_VIDEODEC_DISPLAYDATA_PRESENT (V4L2_CID_MPEG_BASE+521)
559 
567 #define V4L2_CID_VIDEODEC_HDR_MASTERING_DISPLAY_DATA (V4L2_CID_MPEG_BASE+522)
568 
639 #define V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT (V4L2_CID_MPEG_BASE+523)
640 
648 #define V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT (V4L2_CID_MPEG_BASE+524)
649 
657 #define V4L2_CID_VIDEO_CONVERT_FLIP_METHOD (V4L2_CID_MPEG_BASE+525)
658 
666 #define V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD (V4L2_CID_MPEG_BASE+526)
667 
677 #define V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM (V4L2_CID_MPEG_BASE+527)
678 
793 #define V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL (V4L2_CID_MPEG_BASE+528)
794 
804 #define V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM (V4L2_CID_MPEG_BASE+529)
805 
816 #define V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS (V4L2_CID_MPEG_BASE+530)
817 
827 #define V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE (V4L2_CID_MPEG_BASE+531)
828 
837 #define V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES (V4L2_CID_MPEG_BASE+532)
838 
848 #define V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM (V4L2_CID_MPEG_BASE+533)
849 
859 #define V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES (V4L2_CID_MPEG_BASE+534)
860 
869 #define V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR (V4L2_CID_MPEG_BASE+535)
870 
881 #define V4L2_CID_MPEG_VIDEOENC_METADATA (V4L2_CID_MPEG_BASE+536)
882 
891 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV (V4L2_CID_MPEG_BASE+537)
892 
903 #define V4L2_CID_MPEG_VIDEOENC_METADATA_MV (V4L2_CID_MPEG_BASE+538)
904 
914 #define V4L2_CID_MPEG_VIDEOENC_QP_RANGE (V4L2_CID_MPEG_BASE+539)
915 
925 #define V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM (V4L2_CID_MPEG_BASE+540)
926 
938 #define V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA (V4L2_CID_MPEG_BASE+541)
939 
949 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL (V4L2_CID_MPEG_BASE+542)
950 
960 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL (V4L2_CID_MPEG_BASE+543)
961 
971 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM (V4L2_CID_MPEG_BASE+544)
972 
982 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM (V4L2_CID_MPEG_BASE+545)
983 
992 #define V4L2_CID_MPEG_VIDEOENC_INSERT_VUI (V4L2_CID_MPEG_BASE+546)
993 
1002 #define V4L2_CID_MPEG_VIDEOENC_INSERT_AUD (V4L2_CID_MPEG_BASE+547)
1003 
1013 #define V4L2_CID_MPEG_VIDEOENC_EXTEDED_COLORFORMAT (V4L2_CID_MPEG_BASE+548)
1014 
1026 #define V4L2_CID_MPEG_VIDEO_DECODE_INSTANCE (V4L2_CID_MPEG_BASE+549)
1027 
1035 #define V4L2_CID_MPEG_VIDEO_DEVICE_POLL (V4L2_CID_MPEG_BASE+550)
1036 
1048 #define V4L2_CID_MPEG_SET_POLL_INTERRUPT (V4L2_CID_MPEG_BASE+551)
1049 
1058 #define V4L2_CID_MPEG_VIDEOENC_TWO_PASS_CBR (V4L2_CID_MPEG_BASE+552)
1059 
1067 #define V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD (V4L2_CID_MPEG_BASE+553)
1068 
1077 #define V4L2_CID_MPEG_VIDEO_MAX_PERFORMANCE (V4L2_CID_MPEG_BASE+554)
1078 
1087 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_ALLIFRAME_ENCODE (V4L2_CID_MPEG_BASE+555)
1088 
1099 #define V4L2_CID_MPEG_VIDEO_BUF_API_TYPE (V4L2_CID_MPEG_BASE+556)
1100 
1110 #define V4L2_CID_MPEG_VIDEO_CUDA_MEM_TYPE (V4L2_CID_MPEG_BASE+557)
1111 
1120 #define V4L2_CID_MPEG_VIDEO_CUDA_GPU_ID (V4L2_CID_MPEG_BASE+558)
1121 
1132 #define V4L2_CID_MPEG_VIDEODEC_DROP_FRAME_INTERVAL (V4L2_CID_MPEG_BASE+559)
1133 
1144  #define V4L2_CID_MPEG_VIDEOENC_VPX_HEADERS_WITH_FRAME (V4L2_CID_MPEG_BASE+560)
1145 
1151 #define V4L2_CID_MPEG_VIDEOENC_H265_LEVEL (V4L2_CID_MPEG_BASE+561)
1152 
1161 #define V4L2_CID_MPEG_VIDEOENC_ENABLE_SLICE_LEVEL_ENCODE (V4L2_CID_MPEG_BASE+562)
1162 
1167 
1194 };
1195 
1209 };
1210 
1220 };
1221 
1231 };
1232 
1248 };
1249 
1254 {
1262  __u32 DecodedMBs;
1270 
1275 {
1277  __u32 bPresent;
1279  __u32 bIdrFrame;
1283  __u32 bPredicted;
1287  __u32 nFrameNum;
1291 
1296 {
1298  __u32 bRefFrame;
1300  __u32 bIdrFrame;
1306  __u32 nFrameNum;
1310 
1315 {
1324 
1329 {
1336  __u32 FrameType;
1340 
1345 {
1352  __u32 FrameType;
1356 
1361 {
1366 
1371 {
1383  union {
1388  }CodecParams;
1409 };
1410 
1425 };
1426 
1432 {
1438 
1447 };
1448 
1463 };
1464 
1470 {
1476 
1482 {
1484  __u32 size;
1486 
1494 {
1496  __u32 frames;
1498 
1504 {
1506  __u32 interval;
1508 
1512 #define V4L2_MAX_ROI_REGIONS 8
1513 
1517 typedef struct v4l2_enc_ROI_param_
1518 {
1520  struct v4l2_rect ROIRect;
1522  __s32 QPdelta;
1524 
1530 {
1540 
1546 typedef struct MVInfo_ {
1548  __s32 mv_x : 16;
1550  __s32 mv_y : 14;
1552  __u32 weight : 2;
1553 } MVInfo;
1554 
1560  __u32 bufSize;
1564 
1568 #define V4L2_MAX_REF_FRAMES 8
1569 
1574 {
1576  __u32 nFrameId;
1584  __u32 nFrameNum;
1588 
1594 {
1596  __u8 KeyFrame;
1600  __u16 AvgQP;
1614  __u32 FrameMinQP;
1616  __u32 FrameMaxQP;
1627 
1635 {
1655 
1660 typedef struct v4l2_enc_gdr_params_
1661 {
1663  __u32 nGDRFrames;
1665 
1671 {
1676  /* TODO : Check for field details. */
1678  /* TODO : Check for field details. */
1681 
1682 
1686 typedef struct _v4l2_enc_frame_prop
1687 {
1689  __u32 nFrameId;
1693 
1699 {
1701  __u32 nFrameId;
1711  __u32 nCurrentRefFrameId;
1715 
1716 
1722 {
1728 
1734 {
1738  __u32 nFrameQP;
1746 
1753 {
1757 
1764 {
1768 
1775 {
1778  struct v4l2_rect ReconCRCRect;
1780 
1787 {
1789  __u32 flag;
1808 
1813 #define QP_RETAIN_VAL -1
1814 
1821 {
1823  __u32 MinQpI;
1825  __u32 MaxQpI;
1827  __u32 MinQpP;
1829  __u32 MaxQpP;
1831  __u32 MinQpB;
1833  __u32 MaxQpB;
1846 };
1847 
1860 };
1861 
1872 };
1873 
1885 };
1886 
1897 };
1898 
1900 {
1903 
1909 {
1910  // idx 0 : G, 1 : B, 2 : R
1911  __u16 display_primaries_x[3]; // normalized x chromaticity cordinate. It shall be in the range of 0 to 50000
1912  __u16 display_primaries_y[3]; // normalized y chromaticity cordinate. It shall be in the range of 0 to 50000
1913  __u16 white_point_x; // normalized x chromaticity cordinate of white point of mastering display
1914  __u16 white_point_y; // normalized y chromaticity cordinate of white point of mastering display
1915  __u32 max_display_parameter_luminance; // nominal maximum display luminance in units of 0.0001 candelas per square metre
1916  __u32 min_display_parameter_luminance; // nominal minimum display luminance in units of 0.0001 candelas per square metre
1918 
1919 
1924 {
1925  __u16 req_events; // Requested events, a bitmask of POLLIN, POLLOUT, POLLERR, POLLPRI.
1926  __u16 resp_events; // Returned events a similar bitmask of above events.
1928 
1930 #endif /*__V4L2_NV_EXTENSIONS_H__*/
__u32 FrameDecodeTime
Time required to decode the frame, in microseconds.
__u32 nLTRFrameIdx
Long Term Frame Index of the frame.
__s32 mv_y
Number of pixels the macro block moved in vertical direction.
__u16 AvgQP
Average QP value of the frame.
v4l2_dec_instance_type
Enum v4l2_dec_instanceid, possible methods for decode instances.
__u8 bEnableExternalPictureRC
Boolean value indicating if enabled External Picture RC.
Encoder HWPreset DISABLED.
Holds the motion vector parameters for a single block.
struct v4l2_ctrl_videodec_statusmetadata_ v4l2_ctrl_videodec_statusmetadata
Holds the decoder error status metadata for the frame.
Holds the decoder DPB info metadata.
Rotate 180 degrees.
Indoor Low Light TNR algorithm.
Holds the encoder frame ROI parameters to be used with V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS IOCTL...
10-Tap interpolation method
__u32 MaxQpI
Maximum QP value for I frame.
struct v4l2_ctrl_videoenc_input_metadata_ v4l2_ctrl_videoenc_input_metadata
Holds the encoder frame input metadata parameters.
v4l2_nv_buffer_layout
Enum specifying types of buffer layouts.
__u32 nActiveRefFrames
Number of active frames present in the DPB.
__u32 nLTRFrameIdx
LongTermFrameIdx of a picture.
Holds the encoder frame property.
Holds the encoder output metadata for a frame, to be used with V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL...
__u32 MinQpB
Minimum QP value for B frame.
MVInfo * pMVInfo
Pointer to the buffer containing the motion vectors.
__u32 nConcealedFromPOC
POC of the reference frame used for concealment.
Holds encoder HW Preset type parameters to be used with V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM I...
struct v4l2_ctrl_videodec_dpbinfometadata_ v4l2_ctrl_videodec_dpbinfometadata
Holds the decoder DPB info metadata.
v4l2_ctrl_videodec_statusmetadata FrameDecStats
Frame decode statistics.
Encoder HWPreset with per frame encode time Medium.
v4l2_ctrl_videodec_outputbuf_metadata * VideoDecMetadata
A pointer to v4l2_ctrl_videodec_outputbuf_metadata structure.
struct v4l2_rect ROIRect
Region of interest rectangle.
__u8 bLTRefFrame
Boolean value indicating if current frame long Term Ref Flag.
__u32 nsessionMaxQP
Max QP per session when external picture RC enabled.
__u8 bEnableROI
Boolean value to indicating ROI param encoding.
v4l2_enc_temporal_tradeoff_level_type
Specifies the types of encoder temporal tradeoff levels.
__u32 nPictureOrderCnt
Picture Order Count.
v4l2_tnr_algorithm
Specifies the 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...
__u8 bIdrFrame
Boolean value indicating if current frame is an IDR.
__u8 KeyFrame
Boolean value indicating if current frame is a key frame.
__u8 bValidReconCRC
CRC for Reconstructed frame.
__u8 bIsGoldenOrAlternateFrame
Boolean value indicating if current frame is a golden or alternate frame.
5-Tap interpolation method
Flip across upper left/lower right diagonal.
Holds the RPS List parameters of encoded frame.
Holds the video decoder input header error metadata for a frame.
Select NVDEC 1 IP.
v4l2_mpeg_video_h265_profile
Defines the possible profiles for H.265 encoder.
__u32 weight
Temporal hints used by hardware for Motion Estimation.
struct v4l2_enc_frame_ext_rps_ctrl_params_ v4l2_enc_frame_ext_rps_ctrl_params
Holds the encoder frame external rps control parameters to be used with V4L2_CID_MPEG_VIDEOENC_INPUT_...
__u32 nFrameId
unique Id.
__u32 nFrameNumBits
Holds the number of bits in the frame.
__u32 nMaxQPDeviation
Frame min QP deviation.
struct _v4l2_ctrl_video_device_poll v4l2_ctrl_video_device_poll
Poll device.
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.
v4l2_ctrl_videodec_refframe_metadata RPSList[16]
An array of metadatas for the active frames in the DPB.
__u32 bPresent
Boolean value indicating if the frame is present in DPB.
__u32 FrameType
Type of frame: 0 = B 1 = P 2 = I.
v4l2_enc_gdr_params * VideoEncGDRParams
Pointer to the GDR params structure when GDR param is in metadata_flag.
Holds the the frame specific metadata for a reference frame.
Holds encoder virtual buffer size parameters, to be used with V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SI...
__u32 bLTRefFrame
Boolean value indicating if the frame is a long term reference frame.
Holds the the frame specific metadata for the current frame.
__u32 bPredicted
Boolean value indicating if it is a predicted frame.
__u32 MinQpP
Minimum QP value for P frame.
struct v4l2_enc_enable_roi_param_ v4l2_enc_enable_roi_param
Holds the params to configure encoder for ROI parameters encoding.
struct _v4l2_enc_frame_prop v4l2_enc_frame_prop
Holds the encoder frame property.
__u32 EncodedFrameBits
Number of bits needed to encode the frame.
Holds the params to configure encoder for external rps control to be used with V4L2_CID_MPEG_VIDEOENC...
struct MVInfo_ MVInfo
Holds the motion vector parameters for a single block.
struct v4l2_enc_enable_reconcrc_param_ v4l2_enc_enable_reconcrc_param
Holds the params to configure encoder for Reconstructed CRC encoding.
__u32 nFrameId
unique Id of current frame.
v4l2_ctrl_videodec_dpbinfometadata dpbInfo
Holds the current DPB information of the decoder.
v4l2_ctrl_hevcdec_bufmetadata HEVCDecParams
H.265 specific metadata.
__u8 bLTRefFrame
Boolean value indicating if set Long Term Ref Flag.
Holds the params to configure encoder for external rate control mode to be used with V4L2_CID_MPEG_VI...
v4l2_cuda_mem_type
Enum v4l2_cuda_mem_type, possible methods for cuda memory tpye.
Identity (no rotation).
Encoder HWPreset with per frame encode time Slow.
__u8 bEnableExternalRPS
Boolean value indicating if enabled External RPS control.
Holds the encoder quality parameters for a single ROI region.
Nicest interpolation method.
Indoor Medium Light TNR algorithm.
v4l2_enc_frame_ReconCRC_params * VideoReconCRCParams
Pointer to the Reconstructed CRC parameter structure when ReconCRC param is in metadata flag...
__u32 DecodedMBs
Number of macro blocks decoded without error.
Holds the encoder frame external rate control parameters to be used with V4L2_CID_MPEG_VIDEOENC_INPUT...
__u32 flag
Flag to indicate which inputbuffer metadata is valid.
__u32 nFrameId
Unique frame ID.
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_enc_frame_ext_rate_ctrl_params_ v4l2_enc_frame_ext_rate_ctrl_params
Holds the encoder frame external rate control parameters to be used with V4L2_CID_MPEG_VIDEOENC_INPUT...
__u32 nCurrentRefFrameId
Reference frame ID used for Motion Estimation of current frame, ignored for IDR.
Holds the encoder GDR parameters to be used with V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL...
Holds the metadata parameters for video encoder and decoder.
struct _v4l2_ctrl_video_qp_range v4l2_ctrl_video_qp_range
Holds the encoder frame min/max QP parameters.
__u32 nPictureOrderCnt
Picture order count of the current frame.
__u32 nPictureOrderCnt
Picture order count of the frame.
struct _v4l2_ctrl_video_hdrmasteringdisplaydata v4l2_ctrl_video_hdrmasteringdisplaydata
HDR Metadata.
Extension(full range [0 255] to standard(limited range [16 235])
Holds the encoder frame external rps control parameters to be used with V4L2_CID_MPEG_VIDEOENC_INPUT_...
__u8 bLTRefFrame
Long Term Ref Flag.
__u32 slice_length
Size of the slice in either number of bytes or number of macro blocks.
v4l2_enc_frame_full_prop RPSList[V4L2_MAX_REF_FRAMES]
RPS List including most recent frame if it is reference frame.
__u32 frames
Number of reference frames.
__u32 nBitStreamError
Bits represent types of error as defined with v4l2_videodec_input_error_type.
v4l2_enc_ROI_param ROI_params[V4L2_MAX_ROI_REGIONS]
Array of indiviudal ROI parameters.
Rotate counter-clockwise 90 degrees.
struct v4l2_rect ReconCRCRect
Rectangle to specify the co-ordinates of the input frame used to calculate reconstructed picture CRC...
__u8 set_max_enc_clock
Boolean value indicating if encoder set to max clock.
__u8 bRefFrame
Boolean value indicating if current frame referenced or non-referenced.
__u32 nCurrentRefFrameId
frame id of reference frame to be used for motion search, ignored for IDR.
Holds H.264 specific decoder metadata for the frame.
Default TNR algorithm.
v4l2_skip_frames_type
Enum v4l2_skip_frames_type, possible methods for decoder skip frames.
Encoder HWPreset with per frame encode time UltraFast.
__u8 ucMatrixCoefficients
Matrix coefficients.
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...
__u32 FrameMaxQP
Maximum QP value in the frame.
Input metadata structure contains External RC parameters.
struct v4l2_enc_frame_full_prop_ v4l2_enc_frame_full_prop
Holds the RPS List parameters of encoded frame.
v4l2_yuv_rescale_method
Specifies the types of YUV rescale methods.
Holds the params to configure encoder for ROI parameters encoding.
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...
__u32 nLTRFrameIdx
Long Term Frame Index of the current frame.
struct v4l2_ctrl_video_displaydata_ v4l2_ctrl_video_displaydata
v4l2_interpolation_method
Specifies the types of interpolation methods.
struct v4l2_ctrl_hevcdec_bufmetadata_ v4l2_ctrl_hevcdec_bufmetadata
Holds H.265 specific decoder metadata for the frame.
enum v4l2_enc_hw_preset_type hw_preset_type
Type in which the encoder hw preset is specified, one of type v4l2_enc_hw_preset_type.
__u32 nActiveRefFrames
Number of active reference frames.
Rotate clockwise 90 degrees.
Holds the motion vector parameters for one complete frame.
__u32 bufSize
Size of the pMVInfo buffer, in bytes.
Input metadata structure contains GDR parameters.
struct v4l2_ctrl_videoenc_outputbuf_metadata_MV_ v4l2_ctrl_videoenc_outputbuf_metadata_MV
Holds the motion vector parameters for one complete frame.
struct v4l2_enc_enable_ext_rate_ctrl_ v4l2_enc_enable_ext_rate_ctr
Holds the params to configure encoder for external rate control mode to be used with V4L2_CID_MPEG_VI...
Smart interpolation method.
Input metadata structure contains ReconCRC parameters.
__u32 bRefFrame
Boolean value indicating if the current frame is a reference frame.
__u32 FrameMinQP
Minumum QP value in the frame.
v4l2_videodec_input_error_type
Enum v4l2_videodec_input_error_type, possible error types for input stream.
__u32 bLTRefFrame
Boolean value indicating if the current frame is a long term reference frame.
Holds the encoder frame Reconstructed CRC parameters.
Holds the video decoder output metadata for a frame.
Nearest interpolation method.
__u8 bGapsInFrameNumAllowed
Boolean value indicating if allowed gap in frame number.
Encoder HWPreset with per frame encode time Fast.
v4l2_enc_hw_preset_type
Specifies the encoder HW Preset type.
Input metadata structure contains ROI parameters.
Outdoor Low Light TNR algorithm.
v4l2_ctrl_videoenc_outputbuf_metadata * VideoEncMetadata
A pointer to v4l2_ctrl_videoenc_outputbuf_metadata structure.
v4l2_enc_frame_ext_rps_ctrl_params * VideoEncRPSParams
Pointer to the External RPL control parameter structure when RPS param is in metadata flag...
Flip across upper right/lower left diagonal.
Bi-Linear interpolation method.
Holds the encoder frame min/max QP parameters.
struct v4l2_enc_hw_preset_type_param_ v4l2_enc_hw_preset_type_param
Holds encoder HW Preset type parameters to be used with V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM I...
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
Defines the maximum number of ROI regions supported by the encoder.
struct v4l2_ctrl_video_metadata_ v4l2_ctrl_video_metadata
Holds the metadata parameters for video encoder and decoder.
missing reference frame error.
Holds H.265 specific decoder metadata for the frame.
__u32 config_store
Config store integer to which this control is to be applied.
__u32 ConcealedMBs
Number of macro blocks where error was concealed.
__u32 bIdrFrame
Boolean value indicating if the frame is an IDR.
Holds the decoder error status metadata for the frame.
Outdoor High Light TNR algorithm.
v4l2_ctrl_videodec_dpbinfometadata dpbInfo
Holds the current DPB information of the decoder.
__u32 size
Size of the virtual buffer, in bits.
Slice size is specified in terms of number of bytes.
union v4l2_ctrl_videodec_outputbuf_metadata_::@1 CodecParams
Codec specific metadata for the frame.
struct v4l2_enc_enable_ext_rps_ctrl_ v4l2_enc_enable_ext_rps_ctr
Holds the params to configure encoder for external rps control to be used with V4L2_CID_MPEG_VIDEOENC...
__u32 nTargetFrameBits
Target frame bits.
__u32 nGDRFrames
Parameter for GDR (Intra Refresh) for specified number of frames.
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...
struct v4l2_enc_gdr_params_ v4l2_enc_gdr_params
Holds the encoder GDR parameters to be used with V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL...
__s32 QPdelta
QP delta for the region.
__u32 bValidFrameStatus
Boolean value indicating if FrameDecStats has valid contents.
v4l2_enc_frame_ext_rate_ctrl_params * VideoEncExtRCParams
Pointer to the External Rate control parameter structure when RC param is in metadata flag...
__u32 bIdrFrame
Boolean value indicating if the current frame is an IDR.
__u32 buffer_index
Index of the buffer whose metadata is required.
__u32 MaxQpB
Maximum QP value for B frame.
v4l2_ctrl_videoenc_outputbuf_metadata_MV * VideoEncMetadataMV
A pointer to v4l2_ctrl_videoenc_outputbuf_metadata_MV structure.
__s32 mv_x
Number of pixels the macro block moved in horizontal direction.
v4l2_enc_input_metadata_param
Specifies the input buffer metadata flag.
v4l2_ctrl_h264dec_bufmetadata H264DecParams
H.264 specific metadata.
v4l2_mpeg_video_h265_level
Defines the possible levels for H.265 encoder.
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.
__u8 ucTransferCharacteristics
Transfer characteristics.
Holds the encoder frame input metadata parameters.
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_enc_frame_prop RPSList[V4L2_MAX_REF_FRAMES]
Array of RPS.
__u32 nActiveRefFrames
of valid entries in RPS, 0 means IDR.
__u32 DecodeError
Error types: bit 0: Fatal bit 1: MB level syntax bit 2: Missing Slice(s) bit 3: PrevFrameLostFlag.
v4l2_flip_method
Specifies the types of rotation/flip algorithms.
v4l2_ctrl_videodec_inputbuf_metadata * VideoDecHeaderErrorMetadata
A pointer to v4l2_ctrl_videodec_inputbuf_metadata structure.
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.
Do not skip any frame.
Outdoor Medium Light TNR algorithm.
struct v4l2_ctrl_h264dec_bufmetadata_ v4l2_ctrl_h264dec_bufmetadata
Holds H.264 specific decoder metadata for the frame.
#define V4L2_MAX_REF_FRAMES
Maximum number of reference frames supported by the encoder.
__u32 MaxQpP
Maximum QP value for P frame.
__u32 config_store
Config store integer to which these parameters are to be applied.
__u8 bEnableReconCRC
Boolean value to indicating Reconstructed CRC encoding.
Input metadata structure contains External RPS parameters.
Select NVDEC 0 IP.
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.
__u32 nPocLsbBits
Holds the number of bits in the frame.
v4l2_ctrl_videodec_currentframe_metadata currentFrame
Metadata for the current decoded frame.
struct v4l2_enc_frame_ROI_params_ v4l2_enc_frame_ROI_params
Holds the encoder frame ROI parameters to be used with V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS IOCTL...
__u8 EndofFrame
Boolean value indicating end of frame in case of multi slice encoding.
Holds the params to configure encoder for Reconstructed CRC encoding.
struct v4l2_enc_frame_ReconCRC_params_ v4l2_enc_frame_ReconCRC_params
Holds the encoder frame Reconstructed CRC parameters.
v4l2_enc_frame_ROI_params * VideoEncROIParams
Pointer to the ROI params structure when ROI param is in metadata_flag.
__u32 nMaxRefFrames
Max Number of reference frames to use for inter-motion search.
__u32 FrameType
Type of frame: 0 = B 1 = P 2 = I.
__u32 num_ROI_regions
Number of regions.
struct v4l2_ctrl_videodec_inputbuf_metadata_ v4l2_ctrl_videodec_inputbuf_metadata
Holds the video decoder input header error metadata for a frame.