{"profile","Set the encoding profile",OFFSET(profile),AV_OPT_TYPE_INT,{.i64=NV_ENC_H264_PROFILE_MAIN},NV_ENC_H264_PROFILE_BASELINE,NV_ENC_H264_PROFILE_HIGH_444P,VE,"profile"},
{"level","Set the encoding level restriction",OFFSET(level),AV_OPT_TYPE_INT,{.i64=NV_ENC_LEVEL_AUTOSELECT},NV_ENC_LEVEL_AUTOSELECT,NV_ENC_LEVEL_H264_51,VE,"level"},
{"vbr_minqp","Variable bitrate mode with MinQP",0,AV_OPT_TYPE_CONST,{.i64=NV_ENC_PARAMS_RC_VBR_MINQP},0,0,VE,"rc"},
{"ll_2pass_quality","Multi-pass optimized for image quality (only for low-latency presets)",0,AV_OPT_TYPE_CONST,{.i64=NV_ENC_PARAMS_RC_2_PASS_QUALITY},0,0,VE,"rc"},
{"ll_2pass_size","Multi-pass optimized for constant frame size (only for low-latency presets)",0,AV_OPT_TYPE_CONST,{.i64=NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP},0,0,VE,"rc"},
{"gpu","Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on.",OFFSET(device),AV_OPT_TYPE_INT,{.i64=ANY_DEVICE},-2,INT_MAX,VE,"gpu"},
{"any","Pick the first device available",0,AV_OPT_TYPE_CONST,{.i64=ANY_DEVICE},0,0,VE,"gpu"},
{"list","List the available devices",0,AV_OPT_TYPE_CONST,{.i64=LIST_DEVICES},0,0,VE,"gpu"},
{"delay","Delay frame output by the given amount of frames",OFFSET(async_depth),AV_OPT_TYPE_INT,{.i64=INT_MAX},0,INT_MAX,VE},
{"no-scenecut","When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts",OFFSET(no_scenecut),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"b_adapt","When lookahead is enabled, set this to 0 to disable adaptive B-frame decision",OFFSET(b_adapt),AV_OPT_TYPE_INT,{.i64=1},0,1,VE},
{"spatial-aq","set to 1 to enable Spatial AQ",OFFSET(aq),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"temporal-aq","set to 1 to enable Temporal AQ",OFFSET(temporal_aq),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"zerolatency","Set 1 to indicate zero latency operation (no reordering delay)",OFFSET(zerolatency),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"nonref_p","Set this to 1 to enable automatic insertion of non-reference P-frames",OFFSET(nonref_p),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"strict_gop","Set 1 to minimize GOP-to-GOP rate fluctuations",OFFSET(strict_gop),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"aq-strength","When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive)",OFFSET(aq_strength),AV_OPT_TYPE_INT,{.i64=8},1,15,VE},
{"cq","Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control",OFFSET(quality),AV_OPT_TYPE_INT,{.i64=0},0,51,VE},
{"preset","Set the encoding preset",OFFSET(preset),AV_OPT_TYPE_INT,{.i64=PRESET_MEDIUM},PRESET_DEFAULT,PRESET_LOSSLESS_HP,VE,"preset"},
{"profile","Set the encoding profile",OFFSET(profile),AV_OPT_TYPE_INT,{.i64=NV_ENC_H264_PROFILE_MAIN},NV_ENC_H264_PROFILE_BASELINE,NV_ENC_H264_PROFILE_HIGH_444P,VE,"profile"},
{"level","Set the encoding level restriction",OFFSET(level),AV_OPT_TYPE_INT,{.i64=NV_ENC_LEVEL_AUTOSELECT},NV_ENC_LEVEL_AUTOSELECT,NV_ENC_LEVEL_H264_51,VE,"level"},
{"profile","Set the encoding profile",OFFSET(profile),AV_OPT_TYPE_INT,{.i64=NV_ENC_HEVC_PROFILE_MAIN},NV_ENC_HEVC_PROFILE_MAIN,FF_PROFILE_HEVC_REXT,VE,"profile"},
{"level","Set the encoding level restriction",OFFSET(level),AV_OPT_TYPE_INT,{.i64=NV_ENC_LEVEL_AUTOSELECT},NV_ENC_LEVEL_AUTOSELECT,NV_ENC_LEVEL_HEVC_62,VE,"level"},
{"vbr_minqp","Variable bitrate mode with MinQP",0,AV_OPT_TYPE_CONST,{.i64=NV_ENC_PARAMS_RC_VBR_MINQP},0,0,VE,"rc"},
{"ll_2pass_quality","Multi-pass optimized for image quality (only for low-latency presets)",0,AV_OPT_TYPE_CONST,{.i64=NV_ENC_PARAMS_RC_2_PASS_QUALITY},0,0,VE,"rc"},
{"ll_2pass_size","Multi-pass optimized for constant frame size (only for low-latency presets)",0,AV_OPT_TYPE_CONST,{.i64=NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP},0,0,VE,"rc"},
{"gpu","Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on.",OFFSET(device),AV_OPT_TYPE_INT,{.i64=ANY_DEVICE},-2,INT_MAX,VE},
{"any","Pick the first device available",0,AV_OPT_TYPE_CONST,{.i64=ANY_DEVICE},0,0,VE,"device"},
{"list","List the available devices",0,AV_OPT_TYPE_CONST,{.i64=LIST_DEVICES},0,0,VE,"device"},
{"delay","Delay frame output by the given amount of frames",OFFSET(async_depth),AV_OPT_TYPE_INT,{.i64=INT_MAX},0,INT_MAX,VE},
{"no-scenecut","When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts",OFFSET(no_scenecut),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"spatial_aq","set to 1 to enable Spatial AQ",OFFSET(aq),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"zerolatency","Set 1 to indicate zero latency operation (no reordering delay)",OFFSET(zerolatency),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"nonref_p","Set this to 1 to enable automatic insertion of non-reference P-frames",OFFSET(nonref_p),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"strict_gop","Set 1 to minimize GOP-to-GOP rate fluctuations",OFFSET(strict_gop),AV_OPT_TYPE_INT,{.i64=0},0,1,VE},
{"aq-strength","When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive)",OFFSET(aq_strength),AV_OPT_TYPE_INT,{.i64=8},1,15,VE},
{"cq","Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control",OFFSET(quality),AV_OPT_TYPE_INT,{.i64=0},0,51,VE},
{"preset","Set the encoding preset",OFFSET(preset),AV_OPT_TYPE_INT,{.i64=PRESET_MEDIUM},PRESET_DEFAULT,PRESET_LOSSLESS_HP,VE,"preset"},
{"profile","Set the encoding profile",OFFSET(profile),AV_OPT_TYPE_INT,{.i64=NV_ENC_HEVC_PROFILE_MAIN},NV_ENC_HEVC_PROFILE_MAIN,FF_PROFILE_HEVC_REXT,VE,"profile"},
{"level","Set the encoding level restriction",OFFSET(level),AV_OPT_TYPE_INT,{.i64=NV_ENC_LEVEL_AUTOSELECT},NV_ENC_LEVEL_AUTOSELECT,NV_ENC_LEVEL_HEVC_62,VE,"level"},