1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644 |
- /*
- * Copyright (c) 2016-2022, NVIDIA CORPORATION. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. The names of its contributors may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /* This file contains amendments to the V4L2 headers made after the
- * supported kernel version and NVIDIA extensions.
- */
- #ifndef __V4L2_NV_EXTENSIONS_H__
- #define __V4L2_NV_EXTENSIONS_H__
- /**
- * @file
- * <b>NVIDIA V4L2 API Extensions</b>
- *
- * @b Description: This file declares NVIDIA V4L2 extensions,
- * controls and structures.
- */
- /**
- *
- * @defgroup ee_extensions_group V4L2 NV Extensions API
- *
- * This file declares NVIDIA V4L2 extensions, controls, and structures.
- *
- */
- /**
- * Defines V4L2 pixel format for DIVX.
- */
- #define V4L2_PIX_FMT_DIVX4 v4l2_fourcc('D', 'V', 'X', '4')
- #define V4L2_PIX_FMT_DIVX5 v4l2_fourcc('D', 'V', 'X', '5')
- /**
- * Defines V4L2 pixel format for H.265.
- */
- #define V4L2_PIX_FMT_H265 v4l2_fourcc('H', '2', '6', '5')
- /**
- * Defines the V4L2 pixel format for VP9.
- */
- #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0')
- /**
- * Defines the V4L2 pixel format for AV1.
- */
- #define V4L2_PIX_FMT_AV1 v4l2_fourcc('A', 'V', '1', '0')
- /**
- * Defines the V4L2 pixel format for representing single plane 10-bit Y/CbCr 4:2:0 decoder data.
- */
- #define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* Y/CbCr 4:2:0, 10 bits per channel */
- /**
- * Defines the V4L2 pixel format for representing semi-planar 10-bit Y/CbCr 4:2:0 decoder data.
- */
- #define V4L2_PIX_FMT_P010M v4l2_fourcc('P', 'M', '1', '0') /* Y/CbCr 4:2:0, 10 bits per channel */
- /**
- * Defines the V4L2 pixel format for representing single plane 12-bit Y/CbCr 4:2:0 decoder data.
- */
- #define V4L2_PIX_FMT_P012 v4l2_fourcc('P', '0', '1', '2') /* Y/CbCr 4:2:0, 12 bits per channel */
- /**
- * Defines the V4L2 pixel format for representing semi-planar 12-bit Y/CbCr 4:2:0 decoder data.
- */
- #define V4L2_PIX_FMT_P012M v4l2_fourcc('P', 'M', '1', '2') /* Y/CbCr 4:2:0, 12 bits per channel */
- /**
- * Defines the V4L2 pixel format for representing semi-planar 8-bit Y/CbCr 4:4:4 decoder data.
- */
- #define V4L2_PIX_FMT_NV24M v4l2_fourcc('N', 'M', '2', '4') /* Y/CbCr 4:4:4, 8 bits per channel */
- /**
- * Defines the V4L2 pixel format for representing semi-planar 10-bit Y/CbCr 4:4:4 decoder data.
- */
- #define V4L2_PIX_FMT_NV24_10LE v4l2_fourcc('N', 'V', '1', '0') /* Y/CbCr 4:4:4, 10 bits per channel */
- /** @cond UNUSED */
- /* >> The declarations from here to the next endcond statement are not
- * >> currently implemented. DO NOT USE. */
- #define V4L2_PIX_FMT_YUV422RM v4l2_fourcc('4', '2', 'R', 'M')
- #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /** H264 parsed slices. */
- #define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F') /** VP8 parsed frames. */
- #define V4L2_CTRL_FLAG_CAN_STORE 0x0200
- /** @endcond */
- /**
- * Defines the V4L2 event type for decoder resolution event change.
- */
- #define V4L2_EVENT_RESOLUTION_CHANGE 5
- /** @cond UNUSED */
- /* >> The declarations from here to the next endcond statement are not
- * >> currently implemented. DO NOT USE. */
- /*---------------Below are changes from the v4l2-controls.h----------------------*/
- #define V4L2_CID_MPEG_VIDEO_H264_SPS (V4L2_CID_MPEG_BASE+383)
- #define V4L2_CID_MPEG_VIDEO_H264_PPS (V4L2_CID_MPEG_BASE+384)
- #define V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX (V4L2_CID_MPEG_BASE+385)
- #define V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAM (V4L2_CID_MPEG_BASE+386)
- #define V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAM (V4L2_CID_MPEG_BASE+387)
- #define V4L2_CID_MPEG_VIDEO_VP8_FRAME_HDR (V4L2_CID_MPEG_BASE+512)
- /** @endcond */
- /**
- * Defines the control ID to set the H.265 encoder profile.
- *
- * A v4l2_mpeg_video_h265_profile must be passed.
- */
- #define V4L2_CID_MPEG_VIDEO_H265_PROFILE (V4L2_CID_MPEG_BASE+513)
- /**
- * Defines the possible profiles for H.265 encoder.
- */
- enum v4l2_mpeg_video_h265_profile {
- /** H.265 Main profile. */
- V4L2_MPEG_VIDEO_H265_PROFILE_MAIN = 0,
- /** H.265 Main10 profile. */
- V4L2_MPEG_VIDEO_H265_PROFILE_MAIN10 = 1,
- /** H.265 MainStillPicture profile. */
- V4L2_MPEG_VIDEO_H265_PROFILE_MAINSTILLPICTURE = 2,
- };
- /**
- * Defines the control ID to set the encoder IDR frame interval.
- * Must be used with \c VIDIOC_S_EXT_CTRLS IOCTL.
- */
- #define V4L2_CID_MPEG_VIDEO_IDR_INTERVAL (V4L2_CID_MPEG_BASE+514)
- /** @cond UNUSED */
- /* >> The declarations from here to the next endcond statement are not
- * >> currently implemented. DO NOT USE. */
- /* Complex controls */
- #define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG 0x01
- #define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG 0x02
- #define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG 0x04
- #define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG 0x08
- #define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG 0x10
- #define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG 0x20
- #define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE 0x01
- #define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS 0x02
- #define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO 0x04
- #define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED 0x08
- #define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
- #define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
- #define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
- struct v4l2_ctrl_h264_sps {
- __u8 profile_idc;
- __u8 constraint_set_flags;
- __u8 level_idc;
- __u8 seq_parameter_set_id;
- __u8 chroma_format_idc;
- __u8 bit_depth_luma_minus8;
- __u8 bit_depth_chroma_minus8;
- __u8 log2_max_frame_num_minus4;
- __u8 pic_order_cnt_type;
- __u8 log2_max_pic_order_cnt_lsb_minus4;
- __s32 offset_for_non_ref_pic;
- __s32 offset_for_top_to_bottom_field;
- __u8 num_ref_frames_in_pic_order_cnt_cycle;
- __s32 offset_for_ref_frame[255];
- __u8 max_num_ref_frames;
- __u16 pic_width_in_mbs_minus1;
- __u16 pic_height_in_map_units_minus1;
- __u8 flags;
- };
- #define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
- #define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
- #define V4L2_H264_PPS_FLAG_WEIGHTED_PRED 0x0004
- #define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT 0x0008
- #define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED 0x0010
- #define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
- #define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
- #define V4L2_H264_PPS_FLAG_PIC_SCALING_MATRIX_PRESENT 0x0080
- struct v4l2_ctrl_h264_pps {
- __u8 pic_parameter_set_id;
- __u8 seq_parameter_set_id;
- __u8 num_slice_groups_minus1;
- __u8 num_ref_idx_l0_default_active_minus1;
- __u8 num_ref_idx_l1_default_active_minus1;
- __u8 weighted_bipred_idc;
- __s8 pic_init_qp_minus26;
- __s8 pic_init_qs_minus26;
- __s8 chroma_qp_index_offset;
- __s8 second_chroma_qp_index_offset;
- __u8 flags;
- };
- struct v4l2_ctrl_h264_scaling_matrix {
- __u8 scaling_list_4x4[6][16];
- __u8 scaling_list_8x8[6][64];
- };
- struct v4l2_h264_weight_factors {
- __s8 luma_weight[32];
- __s8 luma_offset[32];
- __s8 chroma_weight[32][2];
- __s8 chroma_offset[32][2];
- };
- struct v4l2_h264_pred_weight_table {
- __u8 luma_log2_weight_denom;
- __u8 chroma_log2_weight_denom;
- struct v4l2_h264_weight_factors weight_factors[2];
- };
- #define V4L2_SLICE_FLAG_FIELD_PIC 0x01
- #define V4L2_SLICE_FLAG_BOTTOM_FIELD 0x02
- #define V4L2_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x04
- #define V4L2_SLICE_FLAG_SP_FOR_SWITCH 0x08
- struct v4l2_ctrl_h264_slice_param {
- /** Holds the size in bytes, including the header. */
- __u32 size;
- /** Holds the offset in bits to slice_data() from the beginning of this slice. */
- __u32 header_bit_size;
- __u16 first_mb_in_slice;
- __u8 slice_type;
- __u8 pic_parameter_set_id;
- __u8 colour_plane_id;
- __u16 frame_num;
- __u16 idr_pic_id;
- __u16 pic_order_cnt_lsb;
- __s32 delta_pic_order_cnt_bottom;
- __s32 delta_pic_order_cnt0;
- __s32 delta_pic_order_cnt1;
- __u8 redundant_pic_cnt;
- struct v4l2_h264_pred_weight_table pred_weight_table;
- /* Size in bits of dec_ref_pic_marking() syntax element. */
- __u32 dec_ref_pic_marking_bit_size;
- /* Size in bits of pic order count syntax. */
- __u32 pic_order_cnt_bit_size;
- __u8 cabac_init_idc;
- __s8 slice_qp_delta;
- __s8 slice_qs_delta;
- __u8 disable_deblocking_filter_idc;
- __s8 slice_alpha_c0_offset_div2;
- __s8 slice_beta_offset_div2;
- __u32 slice_group_change_cycle;
- __u8 num_ref_idx_l0_active_minus1;
- __u8 num_ref_idx_l1_active_minus1;
- /* Entries on each list are indices
- * into v4l2_ctrl_h264_decode_param.dpb[]. */
- __u8 ref_pic_list0[32];
- __u8 ref_pic_list1[32];
- __u8 flags;
- };
- /** Defines whether the v4l2_h264_dpb_entry structure is used.
- If not set, this entry is unused for reference. */
- #define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x01
- #define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x02
- struct v4l2_h264_dpb_entry {
- __u32 buf_index; /**< v4l2_buffer index. */
- __u16 frame_num;
- __u16 pic_num;
- /** @note `v4l2_buffer.field` specifies this field. */
- __s32 top_field_order_cnt;
- __s32 bottom_field_order_cnt;
- __u8 flags; /* V4L2_H264_DPB_ENTRY_FLAG_* */
- };
- struct v4l2_ctrl_h264_decode_param {
- __u32 num_slices;
- __u8 idr_pic_flag;
- __u8 nal_ref_idc;
- __s32 top_field_order_cnt;
- __s32 bottom_field_order_cnt;
- __u8 ref_pic_list_p0[32];
- __u8 ref_pic_list_b0[32];
- __u8 ref_pic_list_b1[32];
- struct v4l2_h264_dpb_entry dpb[16];
- };
- #define V4L2_VP8_SEGMNT_HDR_FLAG_ENABLED 0x01
- #define V4L2_VP8_SEGMNT_HDR_FLAG_UPDATE_MAP 0x02
- #define V4L2_VP8_SEGMNT_HDR_FLAG_UPDATE_FEATURE_DATA 0x04
- struct v4l2_vp8_sgmnt_hdr {
- __u8 segment_feature_mode;
- __s8 quant_update[4];
- __s8 lf_update[4];
- __u8 segment_probs[3];
- __u8 flags;
- };
- #define V4L2_VP8_LF_HDR_ADJ_ENABLE 0x01
- #define V4L2_VP8_LF_HDR_DELTA_UPDATE 0x02
- struct v4l2_vp8_loopfilter_hdr {
- __u8 type;
- __u8 level;
- __u8 sharpness_level;
- __s8 ref_frm_delta_magnitude[4];
- __s8 mb_mode_delta_magnitude[4];
- __u8 flags;
- };
- struct v4l2_vp8_quantization_hdr {
- __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 dequant_factors[4][3][2];
- };
- struct v4l2_vp8_entropy_hdr {
- __u8 coeff_probs[4][8][3][11];
- __u8 y_mode_probs[4];
- __u8 uv_mode_probs[3];
- __u8 mv_probs[2][19];
- };
- #define V4L2_VP8_FRAME_HDR_FLAG_EXPERIMENTAL 0x01
- #define V4L2_VP8_FRAME_HDR_FLAG_SHOW_FRAME 0x02
- #define V4L2_VP8_FRAME_HDR_FLAG_MB_NO_SKIP_COEFF 0x04
- struct v4l2_ctrl_vp8_frame_hdr {
- /** 0: keyframe, 1: not a keyframe. */
- __u8 key_frame;
- __u8 version;
- /** Populated also if not a key frame. */
- __u16 width;
- __u8 horizontal_scale;
- __u16 height;
- __u8 vertical_scale;
- struct v4l2_vp8_sgmnt_hdr sgmnt_hdr;
- struct v4l2_vp8_loopfilter_hdr lf_hdr;
- struct v4l2_vp8_quantization_hdr quant_hdr;
- struct v4l2_vp8_entropy_hdr entropy_hdr;
- __u8 sign_bias_golden;
- __u8 sign_bias_alternate;
- __u8 prob_skip_false;
- __u8 prob_intra;
- __u8 prob_last;
- __u8 prob_gf;
- __u32 first_part_size;
- /**
- * Holds the offset in bits of the MB data in the first partition,
- * i.e. bit offset starting from first_part_offset.
- */
- __u32 first_part_offset;
- __u32 macroblock_bit_offset;
- __u8 num_dct_parts;
- __u32 dct_part_sizes[8];
- __u8 bool_dec_range;
- __u8 bool_dec_value;
- __u8 bool_dec_count;
- /** Holds the v4l2_buffer index of the last reference frame. */
- __u32 last_frame;
- /** Holds the v4l2_buffer index of the golden reference frame. */
- __u32 golden_frame;
- /** Holds the v4l2_buffer index of the alt reference frame. */
- __u32 alt_frame;
- __u8 flags;
- };
- /** @endcond */
- /*---------------Add below NVIDIA specific extensions ----------------------*/
- /**
- * @defgroup V4L2Dec V4L2 Video Decoder
- *
- * @brief NVIDIA V4L2 Video Decoder Description and Extensions
- *
- * The video decoder device node is
- *
- * /dev/nvhost-nvdec
- *
- * ### Supported Pixel Formats
- * OUTPUT PLANE | CAPTURE PLANE | PLATFORM
- * :----------------: | :----------------: | :--------------------:
- * V4L2_PIX_FMT_H264 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_H265 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_VP8 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_VP9 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_MPEG1 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_MPEG2 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_MPEG4 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_DIVX4 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_DIVX5 | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_JPEG | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_MJPEG | V4L2_PIX_FMT_NV12M | T210, T186, T194, T234
- * V4L2_PIX_FMT_AV1 | V4L2_PIX_FMT_NV12M | T234
- *
- * ### Supported Memory Types
- * MEMORY | OUTPUT PLANE | CAPTURE PLANE
- * :------------------: | :----------: | :-----------:
- * V4L2_MEMORY_MMAP | Y | Y
- * V4L2_MEMORY_DMABUF | N | Y
- * V4L2_MEMORY_USERPTR | Y | N
- *
- * ### Supported Controls
- * - #V4L2_CID_MPEG_VIDEO_DISABLE_COMPLETE_FRAME_INPUT
- * - #V4L2_CID_MPEG_VIDEO_DISABLE_DPB
- * - #V4L2_CID_MPEG_VIDEO_ERROR_REPORTING
- * - #V4L2_CID_MPEG_VIDEO_SKIP_FRAMES
- * - V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (Get the minimum buffers to be allocated on capture plane.
- * Read only. Valid after #V4L2_EVENT_RESOLUTION_CHANGE)
- * - #V4L2_CID_MPEG_VIDEODEC_INPUT_METADATA
- * - #V4L2_CID_MPEG_VIDEODEC_METADATA
- * - #V4L2_CID_MPEG_VIDEO_BUF_API_TYPE
- * - #V4L2_CID_MPEG_VIDEO_CUDA_MEM_TYPE
- * - #V4L2_CID_MPEG_VIDEO_CUDA_GPU_ID
- * - #V4L2_CID_MPEG_VIDEODEC_DROP_FRAME_INTERVAL
- *
- * ### Supported Events
- * Event | Purpose
- * ----------------------------- | :----------------------------:
- * #V4L2_EVENT_RESOLUTION_CHANGE | Resolution of the stream has changed.
- *
- * ### Handling Resolution Change Events
- * When the decoder generates a \c V4L2_EVENT_RESOLUTION_CHANGE event, the
- * application calls \c STREAMOFF on the capture plane to tell the decoder to
- * deallocate the current buffers by calling REQBUF with count zero, get
- * the new capture plane format, and then proceed with setting up the buffers
- * for the capture plane.
- *
- * In case of decoder, the buffer format might differ from the display resolution.
- * The application must use \c VIDIOC_G_CROP to get the display resolution.
- *
- * ### EOS Handling
- * The following sequence must be followed for sending EOS and recieving EOS
- * from the decoder.
- * -# Send EOS to decoder by queueing on the output plane a buffer with
- * bytesused = 0 for the 0th plane (`v4l2_buffer.m.planes[0].bytesused = 0`).
- * -# Dequeues buffers on the output plane until it gets a buffer with bytesused = 0
- * for the 0th plane (`v4l2_buffer.m.planes[0].bytesused == 0`)
- * -# Dequeues buffers on the capture plane until it gets a buffer with bytesused = 0
- * for the 0th plane.
- *
- * ### Decoder Input Frame Metadata
- * Decoder supports reporting stream header parsing error info as input frame metadata.
- * See \c V4L2_CID_MPEG_VIDEO_ERROR_REPORTING, \c V4L2_CID_MPEG_VIDEODEC_INPUT_METADATA
- * and \c v4l2_ctrl_video_metadata for more information.
- *
- * ### Decoder Output Frame Metadata
- * Decoder supports reporting frame related metadata, including error reports and
- * DPB info. See \c V4L2_CID_MPEG_VIDEO_ERROR_REPORTING, \c V4L2_CID_MPEG_VIDEODEC_METADATA
- * and \c v4l2_ctrl_video_metadata for more information.
- *
- * @note Currently, V4L2 plugins do not support odd resolution.
- * @{
- * @ingroup ee_extensions_group
- */
- /**
- * Defines the Control ID to indicate to the decoder that the input
- * buffers do not contain complete buffers.
- *
- * @note This control must be set in case of frames containing multiple slices
- * when the input buffers do not contain all the slices of the frame.
- *
- * A boolean value must be supplied with this control.
- *
- */
- #define V4L2_CID_MPEG_VIDEO_DISABLE_COMPLETE_FRAME_INPUT (V4L2_CID_MPEG_BASE+515)
- /**
- * Defines the Control ID to disable decoder DPB management.
- *
- * @note This only works for streams having a single reference frame.
- *
- * A boolean value must be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEO_DISABLE_DPB (V4L2_CID_MPEG_BASE+516)
- /**
- * Defines the Control ID to enable decoder error and metadata reporting.
- *
- * A boolean value must be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEO_ERROR_REPORTING (V4L2_CID_MPEG_BASE+517)
- /**
- * Defines the Control ID to set the skip frames property of the decoder.
- *
- * Decoder must be configured to skip certain types of frames. One
- * \c v4l2_skip_frames_type must be passed.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- * This control ID is supported only for H264.
- */
- #define V4L2_CID_MPEG_VIDEO_SKIP_FRAMES (V4L2_CID_MPEG_BASE+518)
- /**
- * Defines the Control ID to get the decoder output metadata.
- *
- * @note Metadata reporting must be enabled using
- * #V4L2_CID_MPEG_VIDEO_ERROR_REPORTING IOCTL for this.
- *
- * A pointer to a valid \c v4l2_ctrl_video_metadata structure must be supplied
- * with this control.
- *
- * @attention This control must be read after dequeueing a buffer successfully from
- * the capture plane. The values in the structure are valid until the buffer is queued
- * again.
- */
- #define V4L2_CID_MPEG_VIDEODEC_METADATA (V4L2_CID_MPEG_BASE+519)
- /**
- * Defines the Control ID to get the decoder input header error metadata.
- *
- * @note Metadata reporting must be enabled using
- * #V4L2_CID_MPEG_VIDEO_ERROR_REPORTING IOCTL for this.
- *
- * A pointer to a valid \c v4l2_ctrl_video_metadata structure must be supplied
- * with this control.
- *
- * @attention This control must be read after dequeueing a buffer successfully from
- * the output plane. The values in the structure are valid until the buffer is queued
- * again.
- */
- #define V4L2_CID_MPEG_VIDEODEC_INPUT_METADATA (V4L2_CID_MPEG_BASE+520)
- /**
- * Defines the Control ID to check if display data is present.
- *
- * This control returns true if HDR metadata is present in the stream.
- *
- */
- #define V4L2_CID_VIDEODEC_DISPLAYDATA_PRESENT (V4L2_CID_MPEG_BASE+521)
- /**
- * Defines the Control ID to get display data if V4L2_CID_VIDEODEC_DISPLAYDATA_PRESENT returns true.
- *
- * This control returns display data such as display_primaries, white_point and
- * display_parameter_luminance required for display module.
- *
- */
- #define V4L2_CID_VIDEODEC_HDR_MASTERING_DISPLAY_DATA (V4L2_CID_MPEG_BASE+522)
- /**
- * Defines the Control ID to get Sample Aspect Ratio width for decoding.
- *
- * This control returns unsigned integer of Sample Aspect Ratio width.
- *
- * @attention This control must be set after receiving V4L2_EVENT_RESOLUTION_CHANGE.
- *
- */
- #define V4L2_CID_MPEG_VIDEODEC_SAR_WIDTH (V4L2_CID_MPEG_BASE+569)
- /**
- * Defines the Control ID to get Sample Aspect Ratio height for decoding.
- *
- * This control returns unsigned integer of Sample Aspect Ratio height.
- *
- * @attention This control must be set after receiving V4L2_EVENT_RESOLUTION_CHANGE.
- *
- */
- #define V4L2_CID_MPEG_VIDEODEC_SAR_HEIGHT (V4L2_CID_MPEG_BASE+570)
- /**
- * Defines the Control ID to embed the SEI data coming from upstream plugins.
- *
- * This control sets the SEI payload size and SEI data pointer for encoder.
- *
- * @attention This control must be set after receiving V4L2_EVENT_RESOLUTION_CHANGE.
- *
- */
- #define V4L2_CID_MPEG_VIDEOENC_DS_SEI_DATA (V4L2_CID_MPEG_BASE+571)
- /** @} */
- /**
- * @defgroup V4L2Conv V4L2 Video Converter
- *
- * @brief NVIDIA V4L2 Video Converter Description and Extensions
- *
- * Use the video converter for color space conversion, scaling, and
- * conversion between hardware buffer memory (\c V4L2_MEMORY_MMAP/\c
- * V4L2_MEMORY_DMABUF), software buffer memory (\c V4L2_MEMORY_USERPTR), and
- * other operations such as cropping, flipping/rotating, and
- * temporal noise reduction (TNR).
- * The video converter device node is \c "/dev/nvhost-vic".
- *
- * ### Supported Pixelformats
- * PIXEL FORMAT | PIXEL FORMAT
- * :---------------------: | :--------------:
- * V4L2_PIX_FMT_YUV444M | V4L2_PIX_FMT_YVU422M
- * V4L2_PIX_FMT_YUV420M | V4L2_PIX_FMT_YVU420M
- * V4L2_PIX_FMT_NV12M | V4L2_PIX_FMT_GREY
- * V4L2_PIX_FMT_YUYV | V4L2_PIX_FMT_YVYU
- * V4L2_PIX_FMT_UYVY | V4L2_PIX_FMT_VYUY
- * V4L2_PIX_FMT_ABGR32 | V4L2_PIX_FMT_XBGR32
- *
- * ### Supported Pixel Formats for TNR
- * PIXEL FORMAT | PIXEL FORMAT
- * :---------------------: | :--------------:
- * V4L2_PIX_FMT_YUV420M | V4L2_PIX_FMT_NV12M
- * V4L2_PIX_FMT_UYVY | V4L2_PIX_FMT_YUYV
- *
- * ### Supported Memory Types
- * MEMORY | OUTPUT PLANE | CAPTURE PLANE
- * :------------------: | :----------: | :-----------:
- * V4L2_MEMORY_MMAP | Y | Y
- * V4L2_MEMORY_DMABUF | Y | Y
- * V4L2_MEMORY_USERPTR | Y | Y
- *
- * ### Supported Controls
- * - #V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT
- * - #V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT
- * - #V4L2_CID_VIDEO_CONVERT_FLIP_METHOD
- * - #V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD
- * - #V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM
- * - #V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD
- *
- * ### Cropping
- * Video converter supports cropping using \c VIDIOC_S_SELECTION IOCTL with type
- * \c V4L2_BUF_TYPE_VIDEO_CAPTURE and target \c V4L2_SEL_TGT_CROP. This must
- * be set before requesting buffers on either plane.
- *
- * ### EOS Handling
- * The following sequence must be followed for sending EOS and recieving EOS
- * from the converter.
- * -# Send EOS to converter by queueing on the output plane a buffer with
- * bytesused = 0 for the 0th plane (`v4l2_buffer.m.planes[0].bytesused = 0`).
- * -# Dequeues buffers on the capture plane until it gets a buffer with bytesused = 0
- * for the 0th plane.
- *
- * @note Currently, V4L2 plugins do not support odd resolution.
- * @{
- * @ingroup ee_extensions_group
- */
- /**
- * Defines the Control ID to set converter output plane buffer layout.
- *
- * A value of type \c v4l2_nv_buffer_layout must be supplied with this control.
- *
- * @attention This control must be set before requesting buffers on the output plane.
- */
- #define V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT (V4L2_CID_MPEG_BASE+523)
- /**
- * Defines the Control ID to set converter capture plane buffer layout.
- *
- * A value of type \c v4l2_nv_buffer_layout must be supplied with this control.
- *
- * @attention This control must be set before requesting buffers on the capture plane.
- */
- #define V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT (V4L2_CID_MPEG_BASE+524)
- /**
- * Defines the Control ID to set the converter flip/rotation method.
- *
- * A value of type \c v4l2_flip_method must be supplied with this control.
- *
- * @attention This control must be set before requesting buffers on either plane.
- */
- #define V4L2_CID_VIDEO_CONVERT_FLIP_METHOD (V4L2_CID_MPEG_BASE+525)
- /**
- * Defines the Control ID to set the converter interpolation method.
- *
- * A value of type \c v4l2_interpolation_method must be supplied with this control.
- *
- * @attention This control must be set before requesting buffers on either plane.
- */
- #define V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD (V4L2_CID_MPEG_BASE+526)
- /**
- * Defines the Control ID to set the converter Temporal Noise Reduction (TNR) algorithm.
- *
- * A value of type \c v4l2_tnr_algorithm must be supplied with this control.
- *
- * @attention This control must be set before requesting buffers on either plane.
- * @attention TNR algorithms are not supported with YUV422 and YUV444 capture
- * plane formats.
- */
- #define V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM (V4L2_CID_MPEG_BASE+527)
- /** @} */
- /**
- * @defgroup V4L2Enc V4L2 Video Encoder
- *
- * @brief NVIDIA V4L2 Video Encoder Description and Extensions
- *
- * The video encoder device node is \c "/dev/nvhost-msenc".
- *
- * ### Supported Pixelformats
- * OUTPUT PLANE | CAPTURE PLANE | PLATFORM
- * :---------------------: | :-----------------: | :--------------------:
- * V4L2_PIX_FMT_YUV420M | V4L2_PIX_FMT_H264 | T210, T186, T194, T234
- * V4L2_PIX_FMT_NV12M | |
- * V4L2_PIX_FMT_YUV444M | |
- * V4L2_PIX_FMT_NV24M | |
- * | |
- * V4L2_PIX_FMT_YUV420M | V4L2_PIX_FMT_H265 | T210, T186, T194, T234
- * V4L2_PIX_FMT_NV12M | |
- * V4L2_PIX_FMT_YUV444M | |
- * V4L2_PIX_FMT_NV24M | |
- * V4L2_PIX_FMT_P010M | |
- * V4L2_PIX_FMT_NV24_10LE | |
- * | |
- * V4L2_PIX_FMT_YUV420M | V4L2_PIX_FMT_VP8 | T210, T186
- * V4L2_PIX_FMT_NV12M | |
- * | |
- * V4L2_PIX_FMT_YUV420M | V4L2_PIX_FMT_VP9 | T186, T194
- * V4L2_PIX_FMT_NV12M | |
- * | |
- * V4L2_PIX_FMT_YUV420M | V4L2_PIX_FMT_AV1 | T234
- * V4L2_PIX_FMT_NV12M | |
- *
- * ### Supported Memory Types
- * MEMORY | OUTPUT PLANE | CAPTURE PLANE
- * :------------------: | :----------: | :-----------:
- * V4L2_MEMORY_MMAP | Y | Y
- * V4L2_MEMORY_DMABUF | Y | N
- * V4L2_MEMORY_USERPTR | N | N
- * \attention For the video encoder, it is necessary that the capture plane
- * format be set before the output plane format and only then request buffers on
- * any of the planes.
- *
- * ### Supported Controls
- * The following sections describe the supported controls.
- *
- * #### Controls From the Open Source V4L2-Controls Header
- * Control ID | Purpose | Runtime Configurable
- * -------------------------------- | -------------------- | :------------------:
- * V4L2_CID_MPEG_VIDEO_BITRATE | Bitrate | Y
- * V4L2_CID_MPEG_VIDEO_H264_PROFILE | H.264 Encode Profile | N
- * V4L2_CID_MPEG_VIDEO_BITRATE_MODE | Rate Control Mode | N
- * V4L2_CID_MPEG_VIDEO_GOP_SIZE | I-frame Interval | N
- * V4L2_CID_MPEG_VIDEO_H264_LEVEL | Encode Level | N
- * V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE | Force I-frame on one of queued output plane buffer | Y
- *
- * All non-runtime configurable options must be set after setting formats on
- * both the planes and before requesting buffers on either plane.
- *
- * The runtime configurable parameters can be called anytime after setting
- * formats on both the planes.
- *
- * #### NVIDIA-Specific Controls
- * - #V4L2_CID_MPEG_VIDEO_H265_PROFILE
- * - #V4L2_CID_MPEG_VIDEO_IDR_INTERVAL
- * - #V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL
- * - #V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM
- * - #V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS
- * - #V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE
- * - #V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES
- * - #V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM
- * - #V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES
- * - #V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR
- * - #V4L2_CID_MPEG_VIDEOENC_METADATA
- * - #V4L2_CID_MPEG_VIDEOENC_METADATA_MV
- * - #V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV
- * - #V4L2_CID_MPEG_VIDEOENC_QP_RANGE
- * - #V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM
- * - #V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA
- * - #V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL
- * - #V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL
- * - #V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM
- * - #V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM
- * - #V4L2_CID_MPEG_VIDEOENC_INSERT_VUI
- * - #V4L2_CID_MPEG_VIDEOENC_INSERT_AUD
- * - #V4L2_CID_MPEG_VIDEOENC_EXTEDED_COLORFORMAT
- * - #V4L2_CID_MPEG_VIDEOENC_ENABLE_ALLIFRAME_ENCODE
- * - #V4L2_CID_MPEG_VIDEOENC_H265_LEVEL
- * - #V4L2_CID_MPEG_VIDEOENC_ENABLE_SLICE_LEVEL_ENCODE
- * - #V4L2_CID_MPEG_VIDEOENC_POC_TYPE
- * - #V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_WIDTH
- * - #V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_HEIGHT
- * - #V4L2_CID_MPEG_VIDEOENC_FORCE_INTRA_FRAME
- * - #V4L2_CID_MPEG_VIDEOENC_FORCE_IDR_FRAME
- * - #V4L2_CID_MPEG_VIDEOENC_AV1_HEADERS_WITH_FRAME
- * - #V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION
- * - #V4L2_CID_MPEG_VIDEOENC_AV1_ENABLE_SSIMRDO
- * - #V4L2_CID_MPEG_VIDEOENC_AV1_DISABLE_CDF_UPDATE
- * - #V4L2_CID_MPEG_VIDEOENC_PPE_INIT_PARAMS
- *
- * #### Setting Framerate
- * The encoder framerate can be set with \c VIDIOC_S_PARM IOCTL by setting the numerator
- * and denominator in `v4l2_streamparm.parm.output.timeperframe`.
- *
- * ### Supported Encoder Profiles
- * #### H.264
- * - V4L2_MPEG_VIDEO_H264_PROFILE_MAIN
- * - V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE
- * - V4L2_MPEG_VIDEO_H264_PROFILE_HIGH
- *
- * #### H.265
- * - V4L2_MPEG_VIDEO_H265_PROFILE_MAIN
- * - V4L2_MPEG_VIDEO_H265_PROFILE_MAIN10
- *
- * ### Encoder Output Metadata
- * The encoder supports reporting frame related metadata, including motion vectors
- * for that frame. See \c V4L2_CID_MPEG_VIDEOENC_METADATA,
- * \c V4L2_CID_MPEG_VIDEOENC_METADATA_MV and \c V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV
- * for more information.
- *
- * ### EOS Handling
- * The following sequence must be followed for sending EOS and recieving EOS
- * from the encoder.
- * -# Send EOS to encoder by queueing on the output plane a buffer with
- * bytesused = 0 for the 0th plane (`v4l2_buffer.m.planes[0].bytesused = 0`).
- * -# Dequeues buffers on the capture plane until it gets a buffer with bytesused = 0
- * for the 0th plane.
- *
- * @note Currently, V4L2 plugins do not support odd resolution.
- * @{
- * @ingroup ee_extensions_group
- */
- /**
- * Defines the Control ID to configure encoder to drop frames while encoding.
- *
- * A value of type \c v4l2_enc_temporal_tradeoff_level_type must be supplied
- * with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL (V4L2_CID_MPEG_BASE+528)
- /**
- * Defines the Control ID to configure encoder slice length either in terms of MBs or bits.
- *
- * A pointer to a valid \c v4l2_enc_slice_length_param structure must be supplied
- * with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM (V4L2_CID_MPEG_BASE+529)
- /**
- * Defines the Control ID to configure encoder to encode particular region of frame in high
- * quality.
- *
- * A pointer to a valid \c v4l2_enc_frame_ROI_params structure must be supplied
- * with this control.
- *
- * @attention This control must be set after requesting buffers on both the
- * planes.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS (V4L2_CID_MPEG_BASE+530)
- /**
- * Defines the Control ID to specify virtual buffer size in bits for encoder.
- *
- * A pointer to a valid \c v4l2_enc_virtual_buffer_size structure must be
- * supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE (V4L2_CID_MPEG_BASE+531)
- /**
- * Defines the Control ID to specify maximum number of reference frames that can be used.
- *
- * An integer value must be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES (V4L2_CID_MPEG_BASE+532)
- /**
- * Defines the Control ID to specify the encoder slice intra refresh interval.
- *
- * A pointer to a valid \c v4l2_enc_slice_intrarefresh_param structure must be
- * supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM (V4L2_CID_MPEG_BASE+533)
- /**
- * Defines the Control ID to set number of B frames to be encoded between two P frames.
- *
- * This works with H.264 encoder. This also works with H.265 encoder for Jetson Xavier and
- * Jetson Xavier NX platforms. An integer value must be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES (V4L2_CID_MPEG_BASE+534)
- /**
- * Defines the Control ID to enable/disable inserting SPS and PPS explicitly at IDR interval.
- *
- * A boolean value must be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR (V4L2_CID_MPEG_BASE+535)
- /**
- * Defines the Control ID to get encoder output metadata.
- *
- * A pointer to valid #v4l2_ctrl_video_metadata structure must be supplied with
- * this control.
- *
- * @attention This control must be read after dequeueing a buffer successfully from
- * the capture plane. The values in the structure are valid until the buffer is queued
- * again.
- */
- #define V4L2_CID_MPEG_VIDEOENC_METADATA (V4L2_CID_MPEG_BASE+536)
- /**
- * Defines the Control ID to enable/disable encoder motion vector reporting.
- *
- * A boolean value must be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV (V4L2_CID_MPEG_BASE+537)
- /**
- * Defines the Control ID to get encoder output motion vector metadata.
- *
- * A pointer to valid \c v4l2_ctrl_videoenc_outputbuf_metadata_MV structure must
- * be supplied with this control.
- *
- * @attention This control must be read after dequeueing a buffer successfully from
- * the capture plane. The values in the structure are valid until the buffer is queued
- * again.
- */
- #define V4L2_CID_MPEG_VIDEOENC_METADATA_MV (V4L2_CID_MPEG_BASE+538)
- /**
- * Defines the Control ID to set QP range for I/P/B frames.
- *
- * A pointer to a valid \c v4l2_ctrl_video_qp_range structure must
- * be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_QP_RANGE (V4L2_CID_MPEG_BASE+539)
- /**
- * Defines the Control ID to set encoder HW Preset type.
- *
- * A pointer to valid #v4l2_enc_hw_preset_type_param structure must
- * be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM (V4L2_CID_MPEG_BASE+540)
- /**
- * Defines the Control ID to provide input metadata for encoder buffer.
- *
- * A pointer to valid #v4l2_ctrl_videoenc_input_metadata structure must be
- * supplied with this control.
- *
- * @attention This control must be called before queueing a buffer on the output
- * plane. Use the bitwise OR of v4l2_enc_input_metadata_param in the
- * v4l2_ctrl_videoenc_input_metadata.metadata_flag to provide different input
- * metadata parameters in one s_ctrl call.
- */
- #define V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA (V4L2_CID_MPEG_BASE+541)
- /**
- * Defines the Control ID to configure encoder for external RPS control.
- *
- * A pointer to a valid #v4l2_enc_enable_ext_rps_ctr structure must be supplied
- * with this control.
- *
- * @attention This control must be set after requesting buffers on both the
- * planes. The value for V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES, if being entered,
- * must be set after this control.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL (V4L2_CID_MPEG_BASE+542)
- /**
- * Defines the Control ID to configure encoder for external rate control.
- *
- * A pointer to a valid #v4l2_enc_enable_ext_rate_ctr structure must be supplied
- * with this control.
- *
- * @attention This control must be set after requesting buffers on both the
- * planes.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL (V4L2_CID_MPEG_BASE+543)
- /**
- * Defines the Control ID to configure ROI encoding for a session.
- *
- * A pointer to a valid #v4l2_enc_enable_roi_param structure must be supplied
- * with this control.
- *
- * @attention This control must be set after requesting buffers on both the
- * planes.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM (V4L2_CID_MPEG_BASE+544)
- /**
- * Defines the Control ID to configure Reconstructed CRC for a session.
- *
- * A pointer to a valid #v4l2_enc_enable_reconcrc_param structure must be supplied
- * with this control.
- *
- * @attention This control must be set after requesting buffers on both the
- * planes.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM (V4L2_CID_MPEG_BASE+545)
- /**
- * Control ID to enable/disable inserting VUI in SPS.
- *
- * A boolean value should be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_INSERT_VUI (V4L2_CID_MPEG_BASE+546)
- /**
- * Control ID to enable/disable inserting AUD(Access Unit Delimiter).
- *
- * A boolean value should be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_INSERT_AUD (V4L2_CID_MPEG_BASE+547)
- /**
- * Control ID to enable/disable setting extended color format.
- *
- * A boolean value should be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane. Also this control should be
- * enabled/disabled only after V4L2_CID_MPEG_VIDEOENC_INSERT_VUI is set
- */
- #define V4L2_CID_MPEG_VIDEOENC_EXTEDED_COLORFORMAT (V4L2_CID_MPEG_BASE+548)
- /**
- * Control ID to select which NVDEC IP to decode.
- *
- * @note This functionality is currently being deprecated and no longer
- * functional.
- *
- * A v4l2_decode_instance_type should be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEO_DECODE_INSTANCE (V4L2_CID_MPEG_BASE+549)
- /**
- * Control ID to issue a pseudo POLL call on the fd opened in non blocking mode.
- *
- * A pointer to a valid #v4l2_ctrl_video_device_poll must be supplied with this control.
- *
- * @attention This should only be called when the Decoder or Encoder is opened with
- * O_NONBLOCK flag.
- */
- #define V4L2_CID_MPEG_VIDEO_DEVICE_POLL (V4L2_CID_MPEG_BASE+550)
- /**
- * Control ID to set/clear the polling interrupt mode. Useful when a POLL issued from the
- * application but wants the wait to be interrupted.
- *
- * A boolean value must be supplied with this control, True indicates polling interrupt shall be
- * enabled and it shall stay enabled (i.e calls to POLL will return immediately) until a call to
- * same control ID is made by passing a boolean 0 value.
- *
- * @attention This should only be called when the Decoder or Encoder is opened with
- * O_NONBLOCK flag.
- */
- #define V4L2_CID_MPEG_SET_POLL_INTERRUPT (V4L2_CID_MPEG_BASE+551)
- /**
- * Control ID to enable/disable setting rate control two pass CBR.
- *
- * A boolean value should be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_TWO_PASS_CBR (V4L2_CID_MPEG_BASE+552)
- /**
- * Defines the Control ID to set the converter YUV Rescale method.
- *
- * A value of type \c v4l2_yuv_rescale_method must be supplied with this control.
- *
- * @attention This control must be set before requesting buffers on either plane.
- */
- #define V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD (V4L2_CID_MPEG_BASE+553)
- /**
- * Control ID to enable maximum Performance.
- *
- * An integer value must be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEO_MAX_PERFORMANCE (V4L2_CID_MPEG_BASE+554)
- /**
- * Control ID to enable/disable setting for all i-Frame encoding.
- *
- * A boolean value should be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_ALLIFRAME_ENCODE (V4L2_CID_MPEG_BASE+555)
- /**
- * Defines the Control ID to set buf api to be used by decoder/encoder.
- *
- * A boolean value should be supplied with this control, default is 0
- * This has to be called before any other ioctls are used and cannot be changed.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- * This is internal ioctl due to be removed later.
- */
- #define V4L2_CID_MPEG_VIDEO_BUF_API_TYPE (V4L2_CID_MPEG_BASE+556)
- /**
- * Defines the Control ID to set cuda memory type to be used by decoder/encoder.
- *
- * This control can be used by the decoder to set the memory type for surfaces.
- * A value of \c v4l2_cuda_mem_type needs to be set with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEO_CUDA_MEM_TYPE (V4L2_CID_MPEG_BASE+557)
- /**
- * Defines the Control ID to set GPU ID to be used by decoder/encoder.
- *
- * An integer value should be supplied with this control.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEO_CUDA_GPU_ID (V4L2_CID_MPEG_BASE+558)
- /**
- * Defines the Control ID to set drop frames interval for decoder.
- *
- * An integer value should be supplied with this control. A value of "x"
- * indicates every "x"th frame should be given out from the decoder, rest shall
- * dropped after decoding.
- *
- * @attention This control must be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEODEC_DROP_FRAME_INTERVAL (V4L2_CID_MPEG_BASE+559)
- /**
- * Control ID to enable/disable setting for attaching VP8/9 headers.
- * Only to be used for VP8/9 pixel format not for H264/5.
- *
- * A boolean value should be supplied with this control.
- * If value is false headers will be disabled and true will enable the headers.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_VPX_HEADERS_WITH_FRAME (V4L2_CID_MPEG_BASE+560)
- /**
- * Defines the control ID to set the H.265 encoder level.
- *
- * A v4l2_mpeg_video_h265_level must be passed.
- */
- #define V4L2_CID_MPEG_VIDEOENC_H265_LEVEL (V4L2_CID_MPEG_BASE+561)
- /**
- * Control ID to enable/disable slice level encode output.
- *
- * A boolean value should be supplied with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_SLICE_LEVEL_ENCODE (V4L2_CID_MPEG_BASE+562)
- /**
- * Defines the Control ID to set Picture Order Count property in frames.
- *
- * This works only with H.264 encoder. An integer value must be supplied with this
- * control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_POC_TYPE (V4L2_CID_MPEG_BASE+563)
- /**
- * Defines the Control ID to set Sample Aspect Ratio width for H265 VUI encoding.
- *
- * An integer value must be supplied with this control.
- * The VUI Sample Aspect Ratio indicator for H265 follows the standard enum defined for
- * v4l2_mpeg_video_h264_vui_sar_idc.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE+564)
- /**
- * Defines the Control ID to set Sample Aspect Ratio height for H265 VUI encoding.
- *
- * An integer value must be supplied with this control.
- * The VUI Sample Aspect Ratio indicator for H265 follows the standard enum defined
- * for v4l2_mpeg_video_h264_vui_sar_idc.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE+565)
- /**
- * Defines the Control ID to force INTRA frame.
- *
- * This control can be used by encoder to force encoding an intra frame.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_FORCE_INTRA_FRAME (V4L2_CID_MPEG_BASE+566)
- /**
- * Defines the Control ID to force IDR frame.
- *
- * This control can be used by encoder to force encoding an idr frame.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_FORCE_IDR_FRAME (V4L2_CID_MPEG_BASE+567)
- /**
- * Defines the Control ID to set low latency to be used by decoder.
- *
- * This control can be used by decoder to set low latency for streams having
- * I and IPPP frames.
- *
- * @attention This control must be set before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEO_CUDA_LOW_LATENCY (V4L2_CID_MPEG_BASE+568)
- /**
- * Control ID to enable/disable setting for attaching IVF headers.
- * Only to be used for AV1 codec.
- *
- * A boolean value should be supplied with this control.
- * If value is false headers will be disabled and true will enable the headers.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_AV1_HEADERS_WITH_FRAME (V4L2_CID_MPEG_BASE+569)
- /**
- * Defines the Control ID to configure AV1 tile for a session.
- *
- * A pointer to a valid #v4l2_enc_av1_tile_config structure must be supplied
- * with this control.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- **/
- #define V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION (V4L2_CID_MPEG_BASE+570)
- /**
- * Defines the Control ID to enable variance based SSIM RDO for AV1.
- *
- * A boolean value should be supplied with this control.
- * If value is false SSIM RDO is disabled else true when enabled.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- **/
- #define V4L2_CID_MPEG_VIDEOENC_AV1_ENABLE_SSIMRDO (V4L2_CID_MPEG_BASE+571)
- /**
- * Defines the Control ID to enable CDF update for AV1.
- *
- * A boolean value should be supplied with this control.
- * If value is true the CDF update in the symbol decoding process is disabled.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- **/
- #define V4L2_CID_MPEG_VIDEOENC_AV1_DISABLE_CDF_UPDATE (V4L2_CID_MPEG_BASE+572)
- /**
- * Defines the Control ID to set total frames to encode.
- *
- * An integer value should be supplied with this control. A value of "x"
- * indicates the number of frames that are given to encoder for encoding.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- **/
- #define V4L2_CID_MPEG_VIDEOENC_FRAMES_TO_ENCODE (V4L2_CID_MPEG_BASE+573)
- /**
- * Defines the Control ID to configure initial QP parameters for a encoder session.
- *
- * A pointer to a valid #v4l2_ctrl_video_init_qp structure must be supplied
- * with this control.
- *
- **/
- #define V4L2_CID_MPEG_VIDEOENC_INIT_FRAME_QP (V4L2_CID_MPEG_BASE+574)
- /**
- * Defines the Control ID to enable lossless H.264/H.265 encoding.
- *
- * An boolean value must be supplied with this control. Default is 0.
- * Lossless encoding is supported only for YUV444 8/10-bit format.
- * @note This control must be set in case of H.264 YUV444 encoding as
- * it does not support lossy encoding.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_ENABLE_LOSSLESS (V4L2_CID_MPEG_BASE+575)
- /**
- * Defines the Control ID to set chroma_factor_idc for H.265 encoding.
- *
- * An integer value must be supplied with this control. Default is 1, and
- * 3 for YUV444 8/10-bit format.
- *
- * @attention This control should be set after setting formats on both the planes
- * and before requesting buffers on either plane.
- */
- #define V4L2_CID_MPEG_VIDEOENC_H265_CHROMA_FACTOR_IDC (V4L2_CID_MPEG_BASE+576)
- /**
- * Defines the Control ID to configure preprocessing enhancement for a session.
- *
- * A pointer to a valid #v4l2_enc_ppe_init_params structure must be supplied
- * with this control.
- *
- * @attention This control must be set after requesting buffers on both the
- * planes.
- */
- #define V4L2_CID_MPEG_VIDEOENC_PPE_INIT_PARAMS (V4L2_CID_MPEG_BASE+577)
- /** @} */
- /**
- * @defgroup V4L2Argus V4L2 Video Camera
- *
- * @brief NVIDIA V4L2 Camera Description and Extensions
- *
- * The camera device node is \c "/dev/video%d".
- *
- * ### Supported Pixelformats
- * CAPTURE PLANE
- * :---------------------
- * V4L2_PIX_FMT_NV12M
- * -
- *
- * ### Supported Memory Types
- * MEMORY | CAPTURE PLANE
- * :------------------: | :-----------:
- * V4L2_MEMORY_MMAP | Y
- * V4L2_MEMORY_DMABUF | Y
- * V4L2_MEMORY_USERPTR | N
- * \attention For the camera, it is necessary that the capture plane
- * format be set and only then request buffers.
- *
- * ### Supported Controls
- * The following sections describe the supported controls.
- *
- * #### Controls From the Open Source V4L2-Controls Header
- * Control ID | Purpose | Runtime Configurable
- * -------------------------------- | -------------------- | :------------------:
- * - #V4L2_CID_3A_LOCK | AWB/AE Lock | Y
- *
- * All non-runtime configurable options must be set after setting format on
- * the capture planes and before requesting buffers.
- *
- *
- * ### NVIDIA-Specific Controls
- * - #V4L2_CID_ARGUS_AUTO_WHITE_BALANCE_MODE
- * - #V4L2_CID_ARGUS_SENSOR_MODE
- * - #V4L2_CID_ARGUS_DENOISE_STRENGTH
- * - #V4L2_CID_ARGUS_DENOISE_MODE
- * - #V4L2_CID_ARGUS_EE_STRENGTH
- * - #V4L2_CID_ARGUS_EE_MODE
- * - #V4L2_CID_ARGUS_AE_ANTIBANDING_MODE
- * - #V4L2_CID_ARGUS_ISP_DIGITAL_GAIN_RANGE
- * - #V4L2_CID_ARGUS_COLOR_SATURATION
- * - #V4L2_CID_ARGUS_GAIN_RANGE
- * - #V4L2_CID_ARGUS_EXPOSURE_TIME_RANGE
- * - #V4L2_CID_ARGUS_METADATA
- *
- * ### Setting Framerate
- * The camera framerate can be set with \c VIDIOC_S_PARM IOCTL by setting the numerator
- * and denominator in `v4l2_streamparm.parm.output.timeperframe`.
- * Selection of camera mode can override this setting. If the camera mode is to be
- * selected along with the specified framerate, then camera mode must be selected before
- * setting the framerate.
- *
- * ### Camera Capture Metadata
- * The camera can be queried to report frame related metadata. See \c V4L2_CID_ARGUS_METADATA
- * for more information.
- *
- * ### EOS Handling
- * Camera outputs all the queued empty buffers with data and TIME_OUT if no more empty buffers
- * are queued. If error is encountered, am empty buffer is queued to the output with
- * V4L2_BUF_FLAG_LAST flag.
- * @{
- * @ingroup ee_extensions_group
- */
- /**
- * Defines the Control ID to set auto white balance mode for camera.
- *
- * A value of type \c v4l2_argus_ac_awb_mode must be supplied
- * with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_AUTO_WHITE_BALANCE_MODE (V4L2_CID_CAMERA_CLASS_BASE+20)
- /**
- * Defines the Control ID to set sensor mode for camera.
- *
- * A non-negative integer value must be supplied with this control.
- *
- * @attention This control should be set after setting format
- * and before requesting buffers on the capture plane.
- */
- #define V4L2_CID_ARGUS_SENSOR_MODE (V4L2_CID_CAMERA_CLASS_BASE+32)
- /**
- * Defines the Control ID to set denoise strength for camera.
- *
- * A pointer to a valid structure \c v4l2_argus_denoise_strength must be
- * supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_DENOISE_STRENGTH (V4L2_CID_CAMERA_CLASS_BASE+33)
- /**
- * Defines the Control ID to set denoise mode for camera.
- *
- * A value of type \c v4l2_argus_denoise_mode must be
- * supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_DENOISE_MODE (V4L2_CID_CAMERA_CLASS_BASE+34)
- /**
- * Defines the Control ID to set edge enhancement strength for camera.
- *
- * A pointer to a valid structure \c v4l2_argus_edge_enhance_strength
- * must be supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_EE_STRENGTH (V4L2_CID_CAMERA_CLASS_BASE+35)
- /**
- * Defines the Control ID to set edge enhancement mode for camera.
- *
- * A value of type \c v4l2_argus_edge_enhance_mode
- * must be supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_EE_MODE (V4L2_CID_CAMERA_CLASS_BASE+36)
- /**
- * Defines the Control ID to set Auto Exposure antibanding mode for camera.
- *
- * A value of type \c v4l2_argus_ac_ae_antibanding_mode must be supplied
- * with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_AE_ANTIBANDING_MODE (V4L2_CID_CAMERA_CLASS_BASE+37)
- /**
- * Defines the Control ID to set edge enhancement settings for camera.
- *
- * A pointer to a valid structure \c v4l2_argus_exposure_compensation
- * must be supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_EXPOSURE_COMPENSATION (V4L2_CID_CAMERA_CLASS_BASE+38)
- /**
- * Defines the Control ID to set edge enhancement settings for camera.
- *
- * A pointer to a valid structure \c v4l2_argus_ispdigital_gainrange
- * must be supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_ISP_DIGITAL_GAIN_RANGE (V4L2_CID_CAMERA_CLASS_BASE+39)
- /**
- * Defines the Control ID to set sensor mode for camera.
- *
- * A pointer to a valid structure \c v4l2_argus_color_saturation
- * must be supplied with this control.
- * The flag `EnableSaturation` must be set to true to enable setting
- * the specified color saturation
- *
- * @attention This control should be set after setting format
- * and before requesting buffers on the capture plane.
- */
- #define V4L2_CID_ARGUS_COLOR_SATURATION (V4L2_CID_CAMERA_CLASS_BASE+40)
- /**
- * Defines the Control ID to set edge enhancement settings for camera.
- *
- * A pointer to a valid structure \c v4l2_argus_gainrange
- * must be supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_GAIN_RANGE (V4L2_CID_CAMERA_CLASS_BASE+41)
- /**
- * Defines the Control ID to set edge enhancement settings for camera.
- *
- * A pointer to a valid structure \c v4l2_argus_exposure_timerange
- * must be supplied with this control.
- *
- * @attention This control should be set after setting format
- * on the capture plane.
- */
- #define V4L2_CID_ARGUS_EXPOSURE_TIME_RANGE (V4L2_CID_CAMERA_CLASS_BASE+42)
- /**
- * Defines the Control ID to get the camera argus output metadata.
- *
- * A pointer to a valid structure \c v4l2_argus_ctrl_metadata must be supplied
- * with this control.
- *
- * @attention This control must be read after dequeueing a buffer successfully from
- * the capture plane. The values in the structure are valid until the buffer is queued
- * again.
- */
- #define V4L2_CID_ARGUS_METADATA (V4L2_CID_CAMERA_CLASS_BASE+43)
- /** @} */
- /** @addtogroup V4L2Dec */
- /** @{ */
- /**
- * Enum v4l2_skip_frames_type, possible methods for decoder skip frames. */
- enum v4l2_skip_frames_type {
- /** Do not skip any frame. */
- V4L2_SKIP_FRAMES_TYPE_NONE = 0,
- /** Skip all non-reference frames. */
- V4L2_SKIP_FRAMES_TYPE_NONREF = 1,
- /** Skip all frames except IDR */
- V4L2_SKIP_FRAMES_TYPE_DECODE_IDR_ONLY = 2,
- };
- /**
- * Enum v4l2_cuda_mem_type, possible methods for cuda memory tpye. */
- enum v4l2_cuda_mem_type {
- /** Memory type device. */
- V4L2_CUDA_MEM_TYPE_DEVICE = 0,
- /** Memory type host. */
- V4L2_CUDA_MEM_TYPE_PINNED = 1,
- /** Memory type unified. */
- V4L2_CUDA_MEM_TYPE_UNIFIED = 2,
- };
- /**
- * Enum v4l2_videodec_input_error_type, possible error types for input stream. */
- enum v4l2_videodec_input_error_type {
- /** no error. */
- V4L2_DEC_ERROR_NONE = 0x0,
- /** sps error. */
- V4L2_DEC_ERROR_SPS = 0x1,
- /** pps error. */
- V4L2_DEC_ERROR_PPS = 0x2,
- /** slice header error. */
- V4L2_DEC_ERROR_SLICE_HDR = 0x4,
- /** missing reference frame error. */
- V4L2_DEC_ERROR_MISSING_REF_FRAME = 0x8,
- /** VPS error. */
- V4L2_DEC_ERROR_VPS = 0x10,
- };
- /**
- * Holds the decoder error status metadata for the frame.
- */
- typedef struct v4l2_ctrl_videodec_statusmetadata_
- {
- /** Error types:
- * bit 0: Fatal
- * bit 1: MB level syntax
- * bit 2: Missing Slice(s)
- * bit 3: PrevFrameLostFlag */
- __u32 DecodeError;
- /** Number of macro blocks decoded without error. */
- __u32 DecodedMBs;
- /** Number of macro blocks where error was concealed. */
- __u32 ConcealedMBs;
- /** POC of the reference frame used for concealment. */
- __u32 nConcealedFromPOC;
- /** Time required to decode the frame, in microseconds. */
- __u32 FrameDecodeTime;
- }v4l2_ctrl_videodec_statusmetadata;
- /**
- * Holds the the frame specific metadata for a reference frame.
- */
- typedef struct v4l2_ctrl_videodec_refframe_metadata_
- {
- /** Boolean value indicating if the frame is present in DPB. */
- __u32 bPresent;
- /** Boolean value indicating if the frame is an IDR. */
- __u32 bIdrFrame;
- /** Boolean value indicating if the frame is a long term reference frame. */
- __u32 bLTRefFrame;
- /** Boolean value indicating if it is a predicted frame. */
- __u32 bPredicted;
- /** Picture order count of the frame. */
- __u32 nPictureOrderCnt;
- /** Frame number. Resets to zero for an IDR frame. */
- __u32 nFrameNum;
- /** Long Term Frame Index of the frame. */
- __u32 nLTRFrameIdx;
- } v4l2_ctrl_videodec_refframe_metadata;
- /**
- * Holds the the frame specific metadata for the current frame.
- */
- typedef struct v4l2_ctrl_videodec_currentframe_metadata_
- {
- /** Boolean value indicating if the current frame is a reference frame. */
- __u32 bRefFrame;
- /** Boolean value indicating if the current frame is an IDR. */
- __u32 bIdrFrame;
- /** Boolean value indicating if the current frame is a long term reference frame. */
- __u32 bLTRefFrame;
- /** Picture order count of the current frame. */
- __u32 nPictureOrderCnt;
- /** Frame number. Resets to zero for an IDR frame. */
- __u32 nFrameNum;
- /** Long Term Frame Index of the current frame. */
- __u32 nLTRFrameIdx;
- } v4l2_ctrl_videodec_currentframe_metadata;
- /**
- * Holds the decoder DPB info metadata.
- */
- typedef struct v4l2_ctrl_videodec_dpbinfometadata_
- {
- /** Metadata for the current decoded frame. */
- v4l2_ctrl_videodec_currentframe_metadata currentFrame;
- /** Number of active frames present in the DPB. */
- __u32 nActiveRefFrames;
- /** An array of metadatas for the active frames in the DPB. Only
- * nActiveRefFrames elements in the array are valid. */
- v4l2_ctrl_videodec_refframe_metadata RPSList[16];
- } v4l2_ctrl_videodec_dpbinfometadata;
- /**
- * Holds H.264 specific decoder metadata for the frame.
- */
- typedef struct v4l2_ctrl_h264dec_bufmetadata_
- {
- /** Holds the number of bits in the frame. */
- __u32 nFrameNumBits;
- /** Type of frame:
- * 0 = B
- * 1 = P
- * 2 = I */
- __u32 FrameType;
- /** Holds the current DPB information of the decoder. */
- v4l2_ctrl_videodec_dpbinfometadata dpbInfo;
- }v4l2_ctrl_h264dec_bufmetadata;
- /**
- * Holds H.265 specific decoder metadata for the frame.
- */
- typedef struct v4l2_ctrl_hevcdec_bufmetadata_
- {
- /** Holds the number of bits in the frame. */
- __u32 nPocLsbBits;
- /** Type of frame:
- * 0 = B
- * 1 = P
- * 2 = I */
- __u32 FrameType;
- /** Holds the current DPB information of the decoder. */
- v4l2_ctrl_videodec_dpbinfometadata dpbInfo;
- }v4l2_ctrl_hevcdec_bufmetadata;
- /**
- * Holds the video decoder input header error metadata for a frame.
- */
- typedef struct v4l2_ctrl_videodec_inputbuf_metadata_
- {
- /** Bits represent types of error as defined
- * with v4l2_videodec_input_error_type. */
- __u32 nBitStreamError;
- } v4l2_ctrl_videodec_inputbuf_metadata;
- /**
- * Holds the video decoder output metadata for a frame.
- */
- typedef struct v4l2_ctrl_videodec_outputbuf_metadata_
- {
- /** Color primaries. */
- __u8 ucColorPrimaries;
- /** Transfer characteristics. */
- __u8 ucTransferCharacteristics;
- /** Matrix coefficients. */
- __u8 ucMatrixCoefficients;
- /** Boolean value indicating if \c FrameDecStats has valid contents. */
- __u32 bValidFrameStatus;
- /** Frame decode statistics. */
- v4l2_ctrl_videodec_statusmetadata FrameDecStats;
- /** Codec specific metadata for the frame. */
- union {
- /** H.264 specific metadata. */
- v4l2_ctrl_h264dec_bufmetadata H264DecParams;
- /** H.265 specific metadata. */
- v4l2_ctrl_hevcdec_bufmetadata HEVCDecParams;
- }CodecParams;
- } v4l2_ctrl_videodec_outputbuf_metadata;
- /** @} */
- /** @addtogroup V4L2Enc */
- /** @{ */
- /**
- * Specifies the types of encoder temporal tradeoff levels
- */
- enum v4l2_enc_temporal_tradeoff_level_type {
- /** Do not drop any buffers. */
- V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROPNONE = 0,
- /** Drop 1 in every 5 buffers. */
- V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN5,
- /** Drop 1 in every 3 buffers. */
- V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN3,
- /** Drop 1 in every 2 buffers. */
- V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN2,
- /** Drop 2 in every 3 buffers. */
- V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP2IN3,
- };
- /**
- * Specifies the encoder HW Preset type.
- */
- enum v4l2_enc_hw_preset_type {
- /** Encoder HWPreset DISABLED. */
- V4L2_ENC_HW_PRESET_DISABLE = 0,
- /** Encoder HWPreset with per frame encode time UltraFast. */
- V4L2_ENC_HW_PRESET_ULTRAFAST = 1,
- /** Encoder HWPreset with per frame encode time Fast. */
- V4L2_ENC_HW_PRESET_FAST,
- /** Encoder HWPreset with per frame encode time Medium. */
- V4L2_ENC_HW_PRESET_MEDIUM,
- /** Encoder HWPreset with per frame encode time Slow. */
- V4L2_ENC_HW_PRESET_SLOW,
- };
- /**
- * Holds encoder HW Preset type parameters
- * to be used with #V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM IOCTL.
- */
- typedef struct v4l2_enc_hw_preset_type_param_
- {
- /** Type in which the encoder hw preset is specified, one of type #v4l2_enc_hw_preset_type. */
- enum v4l2_enc_hw_preset_type hw_preset_type;
- /** Boolean value indicating if encoder set to max clock. */
- __u8 set_max_enc_clock;
- }v4l2_enc_hw_preset_type_param;
- /**
- * Enum specifying the type of slice length.
- */
- enum v4l2_enc_slice_length_type {
- /** Slice size is specified in terms of number of bytes. */
- V4L2_ENC_SLICE_LENGTH_TYPE_BITS = 0,
- /** Slice size is specified in terms of number of macroblocks. */
- V4L2_ENC_SLICE_LENGTH_TYPE_MBLK,
- };
- /**
- * Specifies the input buffer metadata flag.
- */
- enum v4l2_enc_input_metadata_param {
- /** Input metadata structure contains ROI parameters. */
- V4L2_ENC_INPUT_ROI_PARAM_FLAG = 1,
- /** Input metadata structure contains GDR parameters. */
- V4L2_ENC_INPUT_GDR_PARAM_FLAG = 1 << 1,
- /** Input metadata structure contains External RPS parameters. */
- V4L2_ENC_INPUT_RPS_PARAM_FLAG = 1 << 2,
- /** Input metadata structure contains External RC parameters. */
- V4L2_ENC_INPUT_RC_PARAM_FLAG = 1 << 3,
- /** Input metadata structure contains ReconCRC parameters. */
- V4L2_ENC_INPUT_RECONCRC_PARAM_FLAG = 1 << 4,
- };
- /**
- * Defines the possible levels for H.265 encoder.
- */
- enum v4l2_mpeg_video_h265_level {
- V4L2_MPEG_VIDEO_H265_LEVEL_1_0_MAIN_TIER = 0,
- V4L2_MPEG_VIDEO_H265_LEVEL_1_0_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_2_0_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_2_0_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_2_1_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_2_1_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_3_0_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_3_0_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_3_1_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_3_1_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_4_0_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_4_0_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_4_1_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_4_1_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_5_0_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_5_0_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_5_1_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_5_1_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_5_2_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_5_2_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_6_0_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_6_0_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_6_1_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_6_1_HIGH_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_6_2_MAIN_TIER,
- V4L2_MPEG_VIDEO_H265_LEVEL_6_2_HIGH_TIER,
- };
- /**
- * Holds encoder slice length parameters, to be used with
- * \c V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM IOCTL.
- */
- typedef struct v4l2_enc_slice_length_param_
- {
- /** Type in which the slice length is specified, one of type \c v4l2_enc_slice_length_type. */
- enum v4l2_enc_slice_length_type slice_length_type;
- /** Size of the slice in either number of bytes or number of macro blocks. */
- __u32 slice_length;
- }v4l2_enc_slice_length_param;
- /**
- * Holds encoder virtual buffer size parameters, to be used with
- * \c V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE IOCTL.
- */
- typedef struct v4l2_enc_virtual_buffer_size_
- {
- /** Size of the virtual buffer, in bits. */
- __u32 size;
- }v4l2_enc_virtual_buffer_size;
- /**
- * Holds encoder number of reference frame parameters, to be used with
- * \c V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES IOCTL.
- *
- * This is not supported for H.265.
- */
- typedef struct v4l2_enc_num_ref_frames_
- {
- /** Number of reference frames. */
- __u32 frames;
- }v4l2_enc_num_ref_frames;
- /**
- * Holds encoder slice intrareferesh parameters, to be used with
- * \c V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM IOCTL.
- */
- typedef struct v4l2_enc_slice_intrarefresh_param_
- {
- /** Slice intrarefresh interval, in number of slices. */
- __u32 interval;
- }v4l2_enc_slice_intrarefresh_param;
- /**
- * Defines the maximum number of ROI regions supported by the encoder.
- */
- #define V4L2_MAX_ROI_REGIONS 8
- /**
- * Holds the encoder quality parameters for a single ROI region.
- */
- typedef struct v4l2_enc_ROI_param_
- {
- /** Region of interest rectangle. */
- struct v4l2_rect ROIRect;
- /** QP delta for the region. */
- __s32 QPdelta;
- } v4l2_enc_ROI_param;
- /**
- * Holds the encoder frame ROI parameters
- * to be used with #V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS IOCTL.
- */
- typedef struct v4l2_enc_frame_ROI_params_
- {
- /** Number of regions. */
- __u32 num_ROI_regions;
- /** Array of indiviudal ROI parameters. */
- v4l2_enc_ROI_param ROI_params[V4L2_MAX_ROI_REGIONS];
- /** Config store integer to which this control is to be applied.
- * This must be same as the value of config store of \c v4l2_buffer to which
- * the ROI params is applied. */
- __u32 config_store;
- }v4l2_enc_frame_ROI_params;
- /**
- * Defines the available features for preprocessing enhancement (PPE) module
- */
- enum v4l2_ppe_feature {
- /** Default value for no feature enabled */
- V4L2_PPE_FEATURE_NONE = 0,
- /** Temporal Adaptive Quantization (TAQ) */
- V4L2_PPE_FEATURE_TAQ = (1 << 0),
- };
- /**
- * Holds the preprocessing enhancement initialization parameters
- * to be used with #V4L2_CID_MPEG_VIDEOENC_PPE_INIT_PARAMS IOCTL.
- */
- typedef struct v4l2_enc_ppe_init_params_
- {
- /** Boolean value indicating if PPE module should be enabled */
- __u8 enable_ppe;
- /** Bit flags to enable/disable each individual feature */
- __u32 feature_flags;
- /** Boolean value indicating if profiler should be enabled */
- __u8 enable_profiler;
- /** The max number of milliseconds that Nvmedia should wait for each frame processing */
- __s32 wait_time_ms;
- /** Width of the frame */
- __u32 width;
- /** Height of the frame */
- __u32 height;
- /** Boolean value indicating if VIC should be used for frame downsampling */
- __u8 taq_vic_downsampling;
- /** Maximum strength of QP delta map for TAQ */
- __u8 taq_max_qp_delta;
- }v4l2_enc_ppe_init_params;
- /**
- * Holds the motion vector parameters for a single block.
- * For H.264, nvenc provides one motion vector per 16x16 block(Macroblock).
- * For H.265, nvenc provides one motion vector per 32x32 block(Coded Tree Block).
- */
- typedef struct MVInfo_ {
- /** Number of pixels the macro block moved in horizontal direction. */
- __s32 mv_x : 16;
- /** Number of pixels the macro block moved in vertical direction. */
- __s32 mv_y : 14;
- /** Temporal hints used by hardware for Motion Estimation. */
- __u32 weight : 2;
- } MVInfo;
- /**
- * Holds the motion vector parameters for one complete frame.
- */
- typedef struct v4l2_ctrl_videoenc_outputbuf_metadata_MV_ {
- /** Size of the pMVInfo buffer, in bytes. */
- __u32 bufSize;
- /** Pointer to the buffer containing the motion vectors. */
- MVInfo *pMVInfo;
- } v4l2_ctrl_videoenc_outputbuf_metadata_MV;
- /**
- * Maximum number of reference frames supported by the encoder.
- */
- #define V4L2_MAX_REF_FRAMES 8
- /**
- * Holds the RPS List parameters of encoded frame.
- */
- typedef struct v4l2_enc_frame_full_prop_
- {
- /** Unique frame ID. */
- __u32 nFrameId;
- /** Boolean value indicating if current frame is an IDR. */
- __u8 bIdrFrame;
- /** Boolean value indicating if set Long Term Ref Flag. */
- __u8 bLTRefFrame;
- /** Picture Order Count. */
- __u32 nPictureOrderCnt;
- /** FrameNum. */
- __u32 nFrameNum;
- /** LongTermFrameIdx of a picture. */
- __u32 nLTRFrameIdx;
- } v4l2_enc_frame_full_prop;
- /**
- * Holds the encoder output metadata for a frame, to be used with
- * \c V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL.
- */
- typedef struct v4l2_ctrl_videoenc_outputbuf_metadata_
- {
- /** Boolean value indicating if current frame is a key frame. */
- __u8 KeyFrame;
- /** Boolean value indicating end of frame in case of multi slice encoding. */
- __u8 EndofFrame;
- /** Average QP value of the frame. */
- __u16 AvgQP;
- /** Boolean value indicating if current frame is a golden or alternate frame. */
- __u8 bIsGoldenOrAlternateFrame;
- /** CRC for Reconstructed frame. */
- __u8 bValidReconCRC;
- /** Recon Y-frame CRC */
- __u32 ReconFrame_Y_CRC;
- /** Recon U-frame CRC */
- __u32 ReconFrame_U_CRC;
- /** Recon V-frame CRC */
- __u32 ReconFrame_V_CRC;
- /** Number of bits needed to encode the frame. */
- __u32 EncodedFrameBits;
- /** Minumum QP value in the frame. */
- __u32 FrameMinQP;
- /** Maximum QP value in the frame. */
- __u32 FrameMaxQP;
- /** RPS Feedback. */
- __u32 bRPSFeedback_status;
- /** Reference frame ID used for Motion Estimation of current frame,
- ignored for IDR */
- __u32 nCurrentRefFrameId;
- /** Number of active reference frames. */
- __u32 nActiveRefFrames;
- /** RPS List including most recent frame if it is reference frame. */
- v4l2_enc_frame_full_prop RPSList[V4L2_MAX_REF_FRAMES];
- } v4l2_ctrl_videoenc_outputbuf_metadata;
- /**
- * Holds the metadata parameters for video encoder and decoder.
- *
- * The metadata is valid for the buffer with index \c buffer_index after the
- * buffer is dequeued until it is queued again.
- */
- typedef struct v4l2_ctrl_video_metadata_
- {
- /** A pointer to #v4l2_ctrl_videodec_inputbuf_metadata structure.
- * This must be a valid pointer when used with #V4L2_CID_MPEG_VIDEODEC_INPUT_METADATA
- * IOCTL. */
- v4l2_ctrl_videodec_inputbuf_metadata *VideoDecHeaderErrorMetadata;
- /** A pointer to #v4l2_ctrl_videodec_outputbuf_metadata structure.
- * This must be a valid pointer when used with #V4L2_CID_MPEG_VIDEODEC_METADATA
- * IOCTL. */
- v4l2_ctrl_videodec_outputbuf_metadata *VideoDecMetadata;
- /** A pointer to #v4l2_ctrl_videoenc_outputbuf_metadata structure.
- * This must be a valid pointer when used with #V4L2_CID_MPEG_VIDEOENC_METADATA
- * IOCTL. */
- v4l2_ctrl_videoenc_outputbuf_metadata *VideoEncMetadata;
- /** A pointer to #v4l2_ctrl_videoenc_outputbuf_metadata_MV structure.
- * This must be a valid pointer when used with #V4L2_CID_MPEG_VIDEOENC_METADATA_MV
- * IOCTL. */
- v4l2_ctrl_videoenc_outputbuf_metadata_MV *VideoEncMetadataMV;
- /** Index of the buffer whose metadata is required. */
- __u32 buffer_index;
- } v4l2_ctrl_video_metadata;
- /**
- * Holds the encoder GDR parameters
- * to be used with #V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL.
- */
- typedef struct v4l2_enc_gdr_params_
- {
- /** Parameter for GDR (Intra Refresh) for specified number of frames. */
- __u32 nGDRFrames;
- } v4l2_enc_gdr_params;
- /**
- * Holds the params to configure encoder for external rps control
- * to be used with #V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL IOCTL.
- */
- typedef struct v4l2_enc_enable_ext_rps_ctrl_
- {
- /** Boolean value indicating if enabled External RPS control. */
- __u8 bEnableExternalRPS;
- /** Boolean value indicating if allowed gap in frame number. */
- __u8 bGapsInFrameNumAllowed;
- /* TODO : Check for field details. */
- __u32 nH264FrameNumBits;
- /* TODO : Check for field details. */
- __u32 nH265PocLsbBits;
- }v4l2_enc_enable_ext_rps_ctr;
- /**
- * Holds the encoder frame property.
- */
- typedef struct _v4l2_enc_frame_prop
- {
- /** unique Id. */
- __u32 nFrameId;
- /** Long Term Ref Flag. */
- __u8 bLTRefFrame;
- } v4l2_enc_frame_prop;
- /**
- * Holds the encoder frame external rps control parameters
- * to be used with #V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL.
- */
- typedef struct v4l2_enc_frame_ext_rps_ctrl_params_
- {
- /** unique Id of current frame. */
- __u32 nFrameId;
- /** Boolean value indicating if current frame referenced or non-referenced. */
- __u8 bRefFrame;
- /** Boolean value indicating if current frame long Term Ref Flag. */
- __u8 bLTRefFrame;
- /** Max Number of reference frames to use for inter-motion search. */
- __u32 nMaxRefFrames;
- /** # of valid entries in RPS, 0 means IDR. */
- __u32 nActiveRefFrames;;
- /** frame id of reference frame to be used for motion search, ignored for IDR. */
- __u32 nCurrentRefFrameId;
- /** Array of RPS */
- v4l2_enc_frame_prop RPSList[V4L2_MAX_REF_FRAMES];
- }v4l2_enc_frame_ext_rps_ctrl_params;
- /**
- * Holds the params to configure encoder for external rate control mode
- * to be used with #V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL IOCTL.
- */
- typedef struct v4l2_enc_enable_ext_rate_ctrl_
- {
- /** Boolean value indicating if enabled External Picture RC. */
- __u8 bEnableExternalPictureRC;
- /** Max QP per session when external picture RC enabled. */
- __u32 nsessionMaxQP;
- }v4l2_enc_enable_ext_rate_ctr;
- /**
- * Holds the encoder frame external rate control parameters
- * to be used with #V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA ioctl.
- */
- typedef struct v4l2_enc_frame_ext_rate_ctrl_params_
- {
- /** Target frame bits. */
- __u32 nTargetFrameBits;
- /** Frame start QP. */
- __u32 nFrameQP;
- /** Frame min QP. */
- __u32 nFrameMinQp;
- /** Frame max QP. */
- __u32 nFrameMaxQp;
- /** Frame min QP deviation. */
- __u32 nMaxQPDeviation;
- }v4l2_enc_frame_ext_rate_ctrl_params;
- /**
- * Holds the params to configure encoder for ROI parameters encoding
- *
- * Must be used with #V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM IOCTL.
- */
- typedef struct v4l2_enc_enable_roi_param_
- {
- /** Boolean value to indicating ROI param encoding. */
- __u8 bEnableROI;
- }v4l2_enc_enable_roi_param;
- /**
- * Holds the params to configure encoder for Reconstructed CRC encoding
- *
- * Must be used with #V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM IOCTL.
- */
- typedef struct v4l2_enc_enable_reconcrc_param_
- {
- /** Boolean value to indicating Reconstructed CRC encoding. */
- __u8 bEnableReconCRC;
- }v4l2_enc_enable_reconcrc_param;
- /**
- * Holds the encoder frame Reconstructed CRC parameters.
- *
- * Must be used with #V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL.
- */
- typedef struct v4l2_enc_frame_ReconCRC_params_
- {
- /** Rectangle to specify the co-ordinates of the input frame
- * used to calculate reconstructed picture CRC. */
- struct v4l2_rect ReconCRCRect;
- }v4l2_enc_frame_ReconCRC_params;
- /**
- * Holds the encoder frame input metadata parameters.
- *
- * Must be used with #V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL.
- */
- typedef struct v4l2_ctrl_videoenc_input_metadata_
- {
- /** Flag to indicate which inputbuffer metadata is valid. */
- __u32 flag;
- /** Pointer to the ROI params structure when ROI param is in metadata_flag. */
- v4l2_enc_frame_ROI_params *VideoEncROIParams;
- /** Pointer to the Reconstructed CRC parameter structure when ReconCRC param is in
- * metadata flag. */
- v4l2_enc_frame_ReconCRC_params *VideoReconCRCParams;
- /** Pointer to the GDR params structure when GDR param is in metadata_flag. */
- v4l2_enc_gdr_params *VideoEncGDRParams;
- /** Pointer to the External RPL control parameter structure when RPS param is in
- * metadata flag. */
- v4l2_enc_frame_ext_rps_ctrl_params *VideoEncRPSParams;
- /** Pointer to the External Rate control parameter structure when RC param is in
- * metadata flag. */
- v4l2_enc_frame_ext_rate_ctrl_params *VideoEncExtRCParams;
- /** Config store integer to which these parameters are to be applied.
- * This must be same as the value of config store of queued v4l2_buffer
- * for which these parameters are valid. */
- __u32 config_store;
- } v4l2_ctrl_videoenc_input_metadata;
- /**
- * Setting Qp values in #v4l2_ctrl_video_qp_range to QP_RETAIN_VAL
- * retains default or previously set QP values.
- */
- #define QP_RETAIN_VAL -1
- /**
- * Holds the encoder frame min/max QP parameters.
- *
- * Must be used with #V4L2_CID_MPEG_VIDEOENC_QP_RANGE IOCTL.
- */
- typedef struct _v4l2_ctrl_video_qp_range
- {
- /** Minimum QP value for I frame. */
- __u32 MinQpI;
- /** Maximum QP value for I frame. */
- __u32 MaxQpI;
- /** Minimum QP value for P frame. */
- __u32 MinQpP;
- /** Maximum QP value for P frame. */
- __u32 MaxQpP;
- /** Minimum QP value for B frame. */
- __u32 MinQpB;
- /** Maximum QP value for B frame. */
- __u32 MaxQpB;
- } v4l2_ctrl_video_qp_range;
- /**
- * Holds the encoder init QP parameters.
- *
- * Must be used with #V4L2_CID_MPEG_VIDEOENC_INIT_FRAME_QP IOCTL.
- */
- typedef struct _v4l2_ctrl_video_init_qp
- {
- /** Initial QP value for I frame. */
- __u32 IInitQP;
- /** Initial QP value for P frame. */
- __u32 PInitQP;
- /** Initial QP value for B frame. */
- __u32 BInitQP;
- } v4l2_ctrl_video_init_qp;
- /**
- * Holds the params to configure tiles for AV1 encoding
- *
- * Must be used with #V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION IOCTL.
- */
- typedef struct v4l2_enc_av1_tile_config_
- {
- /** Boolean value to enable multi-tile */
- __u8 bEnableTile;
- /** Log2 Tile Rows */
- __u32 nLog2RowTiles;
- /** Log2 Tile Columns */
- __u32 nLog2ColTiles;
- }v4l2_enc_av1_tile_config;
- /** @} */
- /** @addtogroup V4L2Argus */
- /** @{ */
- /**
- * Enum specifying types of denoise modes.
- */
- enum v4l2_argus_denoise_mode {
- V4L2_ARGUS_DENOISE_MODE_UNKNOWN = 0,
- V4L2_ARGUS_DENOISE_MODE_OFF = 1,
- V4L2_ARGUS_DENOISE_MODE_FAST = 2,
- V4L2_ARGUS_DENOISE_MODE_HIGH_QUALITY = 3,
- };
- /**
- * Enum specifying types of edge enhancement modes.
- */
- enum v4l2_argus_edge_enhance_mode {
- V4L2_ARGUS_EDGE_ENHANCE_MODE_UNKNOWN = 0,
- V4L2_ARGUS_EDGE_ENHANCE_MODE_OFF = 1,
- V4L2_ARGUS_EDGE_ENHANCE_MODE_FAST = 2,
- V4L2_ARGUS_EDGE_ENHANCE_MODE_HIGH_QUALITY = 3,
- };
- /**
- * Enum specifying types of AE antibanding modes.
- */
- enum v4l2_argus_ac_ae_antibanding_mode {
- V4L2_ARGUS_AE_ANTIBANDING_MODE_UNKNOWN = 0,
- V4L2_ARGUS_AE_ANTIBANDING_MODE_OFF = 1,
- V4L2_ARGUS_AE_ANTIBANDING_MODE_AUTO = 2,
- V4L2_ARGUS_AE_ANTIBANDING_MODE_50HZ = 3,
- V4L2_ARGUS_AE_ANTIBANDING_MODE_60HZ = 4,
- };
- /**
- * Enum specifying types of AC AWB modes.
- */
- enum v4l2_argus_ac_awb_mode {
- V4L2_ARGUS_AWB_MODE_OFF = 1,
- V4L2_ARGUS_AWB_MODE_AUTO = 2,
- V4L2_ARGUS_AWB_MODE_INCANDESCENT = 3,
- V4L2_ARGUS_AWB_MODE_FLUORESCENT = 4,
- V4L2_ARGUS_AWB_MODE_WARM_FLUORESCENT = 5,
- V4L2_ARGUS_AWB_MODE_DAYLIGHT = 6,
- V4L2_ARGUS_AWB_MODE_CLOUDY_DAYLIGHT = 7,
- V4L2_ARGUS_AWB_MODE_TWILIGHT = 8,
- V4L2_ARGUS_AWB_MODE_SHADE = 9,
- V4L2_ARGUS_AWB_MODE_MANUAL = 10,
- };
- /**
- * Enum specifying types of AE states.
- */
- enum v4l2_argus_ae_state {
- V4L2_ARGUS_AeState_Unknown = 0,
- V4L2_ARGUS_AE_STATE_INACTIVE = 1,
- V4L2_ARGUS_AE_STATE_SEARCHING = 2,
- V4L2_ARGUS_AE_STATE_CONVERGED = 3,
- V4L2_ARGUS_AE_STATE_FLASH_REQUIRED = 4,
- V4L2_ARGUS_AE_STATE_TIMEOUT = 5,
- };
- /**
- * Enum specifying types of AWB states.
- */
- enum v4l2_argus_awb_state {
- V4L2_ARGUS_AwbState_Unknown = 0,
- V4L2_ARGUS_AWB_STATE_INACTIVE = 1,
- V4L2_ARGUS_AWB_STATE_SEARCHING = 2,
- V4L2_ARGUS_AWB_STATE_CONVERGED = 3,
- V4L2_ARGUS_AWB_STATE_LOCKED = 4,
- };
- /**
- * Holds the strength value for denoise operation.
- *
- * Must be used with #V4L2_CID_ARGUS_DENOISE_STRENGTH ioctl.
- */
- typedef struct _v4l2_argus_denoise_strength
- {
- /** Denoise Strength. Range: {-1.0f, 1.0f} **/
- float DenoiseStrength;
- }v4l2_argus_denoise_strength;
- /**
- * Holds the strength value for edge enhancement operation.
- *
- * Must be used with #V4L2_CID_ARGUS_EE_STRENGTH ioctl.
- */
- typedef struct _v4l2_argus_edge_enhance_strength
- {
- /** Edge Enhance Strength. Range: {-1.0f, 1.0f} **/
- float EdgeEnhanceStrength;
- }v4l2_argus_edge_enhance_strength;
- /**
- * Holds the value for exposure compensation.
- *
- * Must be used with #V4L2_CID_ARGUS_EXPOSURE_COMPENSATION ioctl.
- */
- typedef struct _v4l2_argus_exposure_compensation
- {
- /** Exposure Compensation. Range: {-2.0f, 2.0f} **/
- float ExposureCompensation;
- }v4l2_argus_exposure_compensation;
- /**
- * Holds the value for Isp Digital gain range.
- *
- * Must be used with #V4L2_CID_ARGUS_ISP_DIGITAL_GAIN_RANGE ioctl.
- */
- typedef struct _v4l2_argus_ispdigital_gainrange
- {
- /** Range: {1, 256} **/
- /** Digital Gain Range start limit **/
- float MinISPDigitalGainRange;
- /** Digital Gain Range end limit **/
- float MaxISPDigitalGainRange;
- }v4l2_argus_ispdigital_gainrange;
- /**
- * Holds the value for absolute color saturation.
- *
- * Must be used with #V4L2_CID_ARGUS_COLOR_SATURATION ioctl.
- */
- typedef struct _v4l2_argus_color_saturation
- {
- /** Boolean value to indicate enable of user-specified absolute color saturation **/
- __u8 EnableSaturation;
- /** Specified absolute color saturation **/
- float ColorSaturation;
- }v4l2_argus_color_saturation;
- /**
- * Holds the value for gain range.
- *
- * Must be used with #V4L2_CID_ARGUS_GAIN_RANGE ioctl.
- */
- typedef struct _v4l2_argus_gainrange
- {
- /** Analog Gain Range start limit **/
- float MinGainRange;
- /** Analog Gain Range end limit **/
- float MaxGainRange;
- }v4l2_argus_gainrange;
- /**
- * Holds the value for exposure range.
- *
- * Must be used with #V4L2_CID_ARGUS_EXPOSURE_TIME_RANGE ioctl.
- */
- typedef struct _v4l2_argus_exposure_timerange
- {
- /** Exposure Time Range start limit **/
- __u64 MinExposureTimeRange;
- /** Exposure Time Range end limit **/
- __u64 MaxExposureTimeRange;
- }v4l2_argus_exposure_timerange;
- /**
- * Holds the value for camera output metadata.
- *
- * Must be used with #V4L2_CID_ARGUS_METADATA ioctl.
- */
- typedef struct _v4l2_argus_ctrl_metadata
- {
- /** Boolean value to indicate if AE was locked for this capture **/
- __u8 AeLocked;
- /** Boolean value to indicate if metadata has valid contents **/
- __u8 ValidFrameStatus;
- /** Index of the buffer captured **/
- __u32 BufferIndex;
- /** Focuser Position used for capture**/
- __u32 FocuserPosition;
- /** CCT value calculated by AWB **/
- __u32 AwbCCT;
- /** ISO value used for capture **/
- __u32 SensorSensitivity;
- /** Time (nanoseconds) taken to integrate the capture **/
- __u64 FrameDuration;
- /** Frame readout time for the capture **/
- __u64 FrameReadoutTime;
- /** Sensor Exposure time value for the capture **/
- __u64 SensorExposureTime;
- /** ISP Digital gain value for the capture **/
- float IspDigitalGain;
- /** Estimated scene brightness for the capture **/
- float SceneLux;
- /** Sensor analog gain for the capture **/
- float SensorAnalogGain;
- /** AE state ran for capture **/
- enum v4l2_argus_ae_state AEState;
- /** AWB state ran for capture **/
- enum v4l2_argus_awb_state AWBState;
- }v4l2_argus_ctrl_metadata;
- /** @} */
- /** @addtogroup V4L2Conv */
- /** @{ */
- /**
- * Enum specifying types of buffer layouts.
- */
- enum v4l2_nv_buffer_layout {
- V4L2_NV_BUFFER_LAYOUT_PITCH = 0, /**< Pitch Linear Layout. */
- V4L2_NV_BUFFER_LAYOUT_BLOCKLINEAR = 1, /**< Block Linear Layout. */
- };
- /**
- * Specifies the types of rotation/flip algorithms.
- */
- enum v4l2_flip_method {
- V4L2_FLIP_METHOD_IDENTITY = 0, /**< Identity (no rotation). */
- V4L2_FLIP_METHOD_90L = 1, /**< Rotate counter-clockwise 90 degrees. */
- V4L2_FLIP_METHOD_180 = 2, /**< Rotate 180 degrees. */
- V4L2_FLIP_METHOD_90R = 3, /**< Rotate clockwise 90 degrees. */
- V4L2_FLIP_METHOD_HORIZ = 4, /**< Flip horizontally. */
- V4L2_FLIP_METHOD_INVTRANS = 5, /**< Flip across upper right/lower left diagonal. */
- V4L2_FLIP_METHOD_VERT = 6, /**< Flip vertically. */
- V4L2_FLIP_METHOD_TRANS = 7, /**< Flip across upper left/lower right diagonal. */
- };
- /**
- * Specifies the types of interpolation methods.
- */
- enum v4l2_interpolation_method {
- V4L2_INTERPOLATION_NEAREST = 1, /**< Nearest interpolation method */
- V4L2_INTERPOLATION_BILINEAR = 2, /**< Bi-Linear interpolation method */
- V4L2_INTERPOLATION_5_TAP = 3, /**< 5-Tap interpolation method */
- V4L2_INTERPOLATION_10_TAP = 4, /**< 10-Tap interpolation method */
- V4L2_INTERPOLATION_SMART = 5, /**< Smart interpolation method */
- V4L2_INTERPOLATION_NICEST = 6, /**< Nicest interpolation method */
- };
- /**
- * Specifies the types of TNR algorithms.
- */
- enum v4l2_tnr_algorithm {
- V4L2_TNR_ALGO_ORIGINAL = 0, /**< Default TNR algorithm. */
- V4L2_TNR_ALGO_OUTDOOR_LOW_LIGHT = 1, /**< Outdoor Low Light TNR algorithm. */
- V4L2_TNR_ALGO_OUTDOOR_MEDIUM_LIGHT = 2, /**< Outdoor Medium Light TNR algorithm. */
- V4L2_TNR_ALGO_OUTDOOR_HIGH_LIGHT = 3, /**< Outdoor High Light TNR algorithm. */
- V4L2_TNR_ALGO_INDOOR_LOW_LIGHT = 4, /**< Indoor Low Light TNR algorithm. */
- V4L2_TNR_ALGO_INDOOR_MEDIUM_LIGHT = 5, /**< Indoor Medium Light TNR algorithm. */
- V4L2_TNR_ALGO_INDOOR_HIGH_LIGHT = 6, /**< Indoor High Light TNR algorithm. */
- };
- /**
- * Specifies the types of YUV rescale methods.
- */
- enum v4l2_yuv_rescale_method {
- /**< Disable */
- V4L2_YUV_RESCALE_NONE = 0,
- /**< Standard(limited range [16 235]) to extension(full range [0 255]) */
- V4L2_YUV_RESCALE_STD_TO_EXT = 1,
- /**< Extension(full range [0 255] to standard(limited range [16 235]) */
- V4L2_YUV_RESCALE_EXT_TO_STD = 2,
- };
- typedef struct v4l2_ctrl_video_displaydata_
- {
- __u32 masteringdisplaydatapresent;
- }v4l2_ctrl_video_displaydata;
- /**
- * HDR Metadata.
- */
- typedef struct _v4l2_ctrl_video_hdrmasteringdisplaydata
- {
- // idx 0 : G, 1 : B, 2 : R
- __u16 display_primaries_x[3]; // normalized x chromaticity cordinate. It shall be in the range of 0 to 50000
- __u16 display_primaries_y[3]; // normalized y chromaticity cordinate. It shall be in the range of 0 to 50000
- __u16 white_point_x; // normalized x chromaticity cordinate of white point of mastering display
- __u16 white_point_y; // normalized y chromaticity cordinate of white point of mastering display
- __u32 max_display_parameter_luminance; // nominal maximum display luminance in units of 0.0001 candelas per square metre
- __u32 min_display_parameter_luminance; // nominal minimum display luminance in units of 0.0001 candelas per square metre
- } v4l2_ctrl_video_hdrmasteringdisplaydata;
- /**
- * Poll device
- */
- typedef struct _v4l2_ctrl_video_device_poll
- {
- __u16 req_events; // Requested events, a bitmask of POLLIN, POLLOUT, POLLERR, POLLPRI.
- __u16 resp_events; // Returned events a similar bitmask of above events.
- } v4l2_ctrl_video_device_poll;
- /** @} */
- #endif /*__V4L2_NV_EXTENSIONS_H__*/
|