Jetson Linux API 参考

32.7.4 版本
V4L2 视频编码器

详细描述

NVIDIA V4L2 视频编码器描述和扩展。

视频编码器设备节点是 "/dev/nvhost-msenc"

支持的像素格式

输出平面捕获平面
V4L2_PIX_FMT_YUV420MV4L2_PIX_FMT_H264
- V4L2_PIX_FMT_H265

支持的内存类型

内存输出平面捕获平面
V4L2_MEMORY_MMAP
V4L2_MEMORY_DMABUF
V4L2_MEMORY_USERPTR
注意
对于视频编码器,必须先设置捕获平面格式,然后才能设置输出平面格式,并且只有这样才能在任何平面上请求缓冲区。

支持的控件

以下章节描述了支持的控件。

来自开源 V4L2-Controls 头的控件

控件 ID用途运行时可配置
V4L2_CID_MPEG_VIDEO_BITRATE比特率
V4L2_CID_MPEG_VIDEO_H264_PROFILEH.264 编码 Profile
V4L2_CID_MPEG_VIDEO_BITRATE_MODE码率控制模式
V4L2_CID_MPEG_VIDEO_GOP_SIZEI 帧间隔
V4L2_CID_MPEG_VIDEO_H264_LEVEL编码 Level
V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE在排队的输出平面缓冲区之一上强制 I 帧

所有非运行时可配置选项必须在设置两个平面的格式之后以及在任一平面上请求缓冲区之前设置。

运行时可配置参数可以在设置两个平面的格式之后的任何时间调用。

NVIDIA 特定控件

设置帧率

编码器帧率可以使用 VIDIOC_S_PARM IOCTL 通过设置 v4l2_streamparm.parm.output.timeperframe 中的分子和分母来设置。

支持的编码器 Profile

H.264

H.265

编码器输出元数据

编码器支持报告帧相关元数据,包括该帧的运动向量。 有关更多信息,请参见 V4L2_CID_MPEG_VIDEOENC_METADATAV4L2_CID_MPEG_VIDEOENC_METADATA_MVV4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV

EOS 处理

必须遵循以下顺序来发送 EOS 和从编码器接收 EOS。

  1. 通过在输出平面上排队一个 0th 平面的 bytesused = 0 的缓冲区(v4l2_buffer.m.planes[0].bytesused = 0)来向编码器发送 EOS。
  2. 在捕获平面上出队缓冲区,直到它获得一个 0th 平面的 bytesused = 0 的缓冲区。
注意
当前,V4L2 插件不支持奇数分辨率。

数据结构

struct  v4l2_enc_hw_preset_type_param_
 保存编码器硬件预设类型参数,以与 V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM IOCTL 一起使用。 更多...
 
struct  v4l2_enc_slice_length_param_
 保存编码器切片长度参数,以与 V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM IOCTL 一起使用。 更多...
 
struct  v4l2_enc_virtual_buffer_size_
 保存编码器虚拟缓冲区大小参数,以与 V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE IOCTL 一起使用。 更多...
 
struct  v4l2_enc_num_ref_frames_
 保存编码器参考帧数量参数,以与 V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES IOCTL 一起使用。 更多...
 
struct  v4l2_enc_slice_intrarefresh_param_
 保存编码器切片内刷新参数,以与 V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM IOCTL 一起使用。 更多...
 
struct  v4l2_enc_ROI_param_
 保存单个 ROI 区域的编码器质量参数。 更多...
 
struct  v4l2_enc_frame_ROI_params_
 保存编码器帧 ROI 参数,以与 V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS IOCTL 一起使用。 更多...
 
struct  MVInfo_
 保存单个块的运动向量参数。 更多...
 
struct  v4l2_ctrl_videoenc_outputbuf_metadata_MV_
 保存一个完整帧的运动向量参数。 更多...
 
struct  v4l2_enc_frame_full_prop_
 保存编码帧的 RPS 列表参数。 更多...
 
struct  v4l2_ctrl_videoenc_outputbuf_metadata_
 保存帧的编码器输出元数据,以与 V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL 一起使用。 更多...
 
struct  v4l2_ctrl_video_metadata_
 保存视频编码器和解码器的元数据参数。 更多...
 
struct  v4l2_enc_gdr_params_
 保存编码器 GDR 参数,以与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL 一起使用。 更多...
 
struct  v4l2_enc_enable_ext_rps_ctrl_
 保存配置编码器以进行外部 rps 控制的参数,以与 V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL IOCTL 一起使用。 更多...
 
struct  _v4l2_enc_frame_prop
 保存编码器帧属性。 更多...
 
struct  v4l2_enc_frame_ext_rps_ctrl_params_
 保存编码器帧外部 rps 控制参数,以与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL 一起使用。 更多...
 
struct  v4l2_enc_enable_ext_rate_ctrl_
 保存配置编码器以进行外部码率控制模式的参数,以与 V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL IOCTL 一起使用。 更多...
 
struct  v4l2_enc_frame_ext_rate_ctrl_params_
 保存编码器帧外部码率控制参数,以与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA ioctl 一起使用。 更多...
 
struct  v4l2_enc_enable_roi_param_
 保存配置编码器以进行 ROI 参数编码的参数。 更多...
 
struct  v4l2_enc_enable_reconcrc_param_
 保存配置编码器以进行重建 CRC 编码的参数。 更多...
 
struct  v4l2_enc_frame_ReconCRC_params_
 保存编码器帧重建 CRC 参数。 更多...
 
struct  v4l2_ctrl_videoenc_input_metadata_
 保存编码器帧输入元数据参数。 更多...
 
struct  _v4l2_ctrl_video_qp_range
 保存编码器帧最小/最大 QP 参数。 更多...
 
struct  _v4l2_ctrl_video_init_qp
 保存编码器初始 QP 参数。 更多...
 
struct  v4l2_enc_av1_tile_config_
 保存配置 AV1 编码图块的参数。 更多...
 

#define V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL   (V4L2_CID_MPEG_BASE+528)
 定义用于配置编码器以在编码时丢帧的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM   (V4L2_CID_MPEG_BASE+529)
 定义用于配置编码器切片长度(以 MB 或比特为单位)的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS   (V4L2_CID_MPEG_BASE+530)
 定义用于配置编码器以高质量编码帧的特定区域的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE   (V4L2_CID_MPEG_BASE+531)
 定义用于指定编码器虚拟缓冲区大小(以比特为单位)的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES   (V4L2_CID_MPEG_BASE+532)
 定义用于指定可以使用的最大参考帧数的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM   (V4L2_CID_MPEG_BASE+533)
 定义用于指定编码器切片内刷新间隔的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES   (V4L2_CID_MPEG_BASE+534)
 定义用于设置在两个 P 帧之间编码的 B 帧数的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR   (V4L2_CID_MPEG_BASE+535)
 定义用于启用/禁用在 IDR 间隔显式插入 SPS 和 PPS 的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_METADATA   (V4L2_CID_MPEG_BASE+536)
 定义用于获取编码器输出元数据的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV   (V4L2_CID_MPEG_BASE+537)
 定义用于启用/禁用编码器运动向量报告的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_METADATA_MV   (V4L2_CID_MPEG_BASE+538)
 定义用于获取编码器输出运动向量元数据的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_QP_RANGE   (V4L2_CID_MPEG_BASE+539)
 定义用于设置 I/P/B 帧的 QP 范围的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM   (V4L2_CID_MPEG_BASE+540)
 定义用于设置编码器硬件预设类型的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA   (V4L2_CID_MPEG_BASE+541)
 定义用于为编码器缓冲区提供输入元数据的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL   (V4L2_CID_MPEG_BASE+542)
 定义用于配置编码器以进行外部 RPS 控制的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL   (V4L2_CID_MPEG_BASE+543)
 定义用于配置编码器以进行外部码率控制的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM   (V4L2_CID_MPEG_BASE+544)
 定义用于配置会话的 ROI 编码的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM   (V4L2_CID_MPEG_BASE+545)
 定义用于配置会话的重建 CRC 的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_INSERT_VUI   (V4L2_CID_MPEG_BASE+546)
 用于启用/禁用在 SPS 中插入 VUI 的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_INSERT_AUD   (V4L2_CID_MPEG_BASE+547)
 用于启用/禁用插入 AUD(访问单元分隔符)的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_EXTEDED_COLORFORMAT   (V4L2_CID_MPEG_BASE+548)
 用于启用/禁用设置扩展颜色格式的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEO_DECODE_INSTANCE   (V4L2_CID_MPEG_BASE+549)
 用于选择要解码的 NVDEC IP 的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEO_DEVICE_POLL   (V4L2_CID_MPEG_BASE+550)
 用于在以非阻塞模式打开的 fd 上发出伪 POLL 调用的控件 ID。 更多...
 
#define V4L2_CID_MPEG_SET_POLL_INTERRUPT   (V4L2_CID_MPEG_BASE+551)
 用于设置/清除轮询中断模式的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_TWO_PASS_CBR   (V4L2_CID_MPEG_BASE+552)
 用于启用/禁用设置码率控制双通道 CBR 的控件 ID。 更多...
 
#define V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD   (V4L2_CID_MPEG_BASE+553)
 定义用于设置转换器 YUV 缩放方法的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEO_MAX_PERFORMANCE   (V4L2_CID_MPEG_BASE+554)
 用于启用最大性能的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_ALLIFRAME_ENCODE   (V4L2_CID_MPEG_BASE+555)
 用于启用/禁用所有 i 帧编码设置的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEO_BUF_API_TYPE   (V4L2_CID_MPEG_BASE+556)
 定义用于设置解码器/编码器要使用的 buf api 的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEO_CUDA_MEM_TYPE   (V4L2_CID_MPEG_BASE+557)
 定义用于设置解码器/编码器要使用的 cuda 内存类型的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEO_CUDA_GPU_ID   (V4L2_CID_MPEG_BASE+558)
 定义用于设置解码器/编码器要使用的 GPU ID 的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEODEC_DROP_FRAME_INTERVAL   (V4L2_CID_MPEG_BASE+559)
 定义用于设置解码器的丢帧间隔的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_VPX_HEADERS_WITH_FRAME   (V4L2_CID_MPEG_BASE+560)
 用于启用/禁用附加 VP8/9 标头的设置的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_H265_LEVEL   (V4L2_CID_MPEG_BASE+561)
 定义用于设置 H.265 编码器级别的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_SLICE_LEVEL_ENCODE   (V4L2_CID_MPEG_BASE+562)
 用于启用/禁用切片级别编码输出的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_POC_TYPE   (V4L2_CID_MPEG_BASE+563)
 定义用于设置帧中图像顺序计数属性的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_WIDTH   (V4L2_CID_MPEG_BASE+564)
 定义用于为 H265 VUI 编码设置样本纵横比宽度的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_HEIGHT   (V4L2_CID_MPEG_BASE+565)
 定义用于为 H265 VUI 编码设置样本纵横比高度的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_FORCE_INTRA_FRAME   (V4L2_CID_MPEG_BASE+566)
 定义用于强制 INTRA 帧的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_FORCE_IDR_FRAME   (V4L2_CID_MPEG_BASE+567)
 定义用于强制 IDR 帧的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEO_CUDA_LOW_LATENCY   (V4L2_CID_MPEG_BASE+568)
 定义用于设置解码器要使用的低延迟的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_AV1_HEADERS_WITH_FRAME   (V4L2_CID_MPEG_BASE+569)
 用于启用/禁用附加 IVF 标头的设置的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION   (V4L2_CID_MPEG_BASE+570)
 定义用于为会话配置 AV1 图块的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_AV1_ENABLE_SSIMRDO   (V4L2_CID_MPEG_BASE+571)
 定义用于为 AV1 启用基于方差的 SSIM RDO 的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_AV1_DISABLE_CDF_UPDATE   (V4L2_CID_MPEG_BASE+572)
 定义用于为 AV1 启用 CDF 更新的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_FRAMES_TO_ENCODE   (V4L2_CID_MPEG_BASE+573)
 定义用于设置要编码的总帧数的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_INIT_FRAME_QP   (V4L2_CID_MPEG_BASE+574)
 定义用于为编码器会话配置初始 QP 参数的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_ENABLE_LOSSLESS   (V4L2_CID_MPEG_BASE+575)
 定义用于启用无损 H.264/H.265 编码的控件 ID。 更多...
 
#define V4L2_CID_MPEG_VIDEOENC_H265_CHROMA_FACTOR_IDC   (V4L2_CID_MPEG_BASE+576)
 定义用于为 H.265 编码设置 chroma_factor_idc 的控件 ID。 更多...
 
#define V4L2_MAX_ROI_REGIONS   8
 定义编码器支持的最大 ROI 区域数。 更多...
 
#define V4L2_MAX_REF_FRAMES   8
 编码器支持的最大参考帧数。 更多...
 
#define QP_RETAIN_VAL   -1
 v4l2_ctrl_video_qp_range 中将 Qp 值设置为 QP_RETAIN_VAL 会保留默认值或先前设置的 QP 值。 更多...
 

类型定义

typedef struct v4l2_enc_hw_preset_type_param_ v4l2_enc_hw_preset_type_param
 保存编码器硬件预设类型参数,以与 V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM IOCTL 一起使用。 更多...
 
typedef struct v4l2_enc_slice_length_param_ v4l2_enc_slice_length_param
 保存编码器切片长度参数,以与 V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM IOCTL 一起使用。 更多...
 
typedef struct v4l2_enc_virtual_buffer_size_ v4l2_enc_virtual_buffer_size
 保存编码器虚拟缓冲区大小参数,以与 V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE IOCTL 一起使用。 更多...
 
typedef struct v4l2_enc_num_ref_frames_ v4l2_enc_num_ref_frames
 保存编码器参考帧数量参数,以与 V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES IOCTL 一起使用。 更多...
 
typedef struct v4l2_enc_slice_intrarefresh_param_ v4l2_enc_slice_intrarefresh_param
 保存编码器切片内刷新参数,以与 V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM IOCTL 一起使用。 更多...
 
typedef struct v4l2_enc_ROI_param_ v4l2_enc_ROI_param
 保存单个 ROI 区域的编码器质量参数。 更多...
 
typedef struct v4l2_enc_frame_ROI_params_ v4l2_enc_frame_ROI_params
 保存编码器帧 ROI 参数,以与 V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS IOCTL 一起使用。 更多...
 
typedef struct MVInfo_ MVInfo
 保存单个块的运动向量参数。 更多...
 
typedef struct v4l2_ctrl_videoenc_outputbuf_metadata_MV_ v4l2_ctrl_videoenc_outputbuf_metadata_MV
 保存一个完整帧的运动向量参数。 更多...
 
typedef struct v4l2_enc_frame_full_prop_ v4l2_enc_frame_full_prop
 保存编码帧的 RPS 列表参数。 更多...
 
typedef struct v4l2_ctrl_videoenc_outputbuf_metadata_ v4l2_ctrl_videoenc_outputbuf_metadata
 保存帧的编码器输出元数据,以与 V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL 一起使用。 更多...
 
typedef struct v4l2_ctrl_video_metadata_ v4l2_ctrl_video_metadata
 保存视频编码器和解码器的元数据参数。 更多...
 
typedef struct v4l2_enc_gdr_params_ v4l2_enc_gdr_params
 保存编码器 GDR 参数,以与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL 一起使用。 更多...
 
typedef struct v4l2_enc_enable_ext_rps_ctrl_ v4l2_enc_enable_ext_rps_ctr
 保存配置编码器以进行外部 rps 控制的参数,以与 V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL IOCTL 一起使用。 更多...
 
typedef struct _v4l2_enc_frame_prop v4l2_enc_frame_prop
 保存编码器帧属性。 更多...
 
typedef struct v4l2_enc_frame_ext_rps_ctrl_params_ v4l2_enc_frame_ext_rps_ctrl_params
 包含编码器帧外部 RPS 控制参数,用于 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL。更多...
 
typedef struct v4l2_enc_enable_ext_rate_ctrl_ v4l2_enc_enable_ext_rate_ctr
 包含配置编码器用于外部速率控制模式的参数,用于 V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL IOCTL。更多...
 
typedef struct v4l2_enc_frame_ext_rate_ctrl_params_ v4l2_enc_frame_ext_rate_ctrl_params
 包含编码器帧外部速率控制参数,用于 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA ioctl。更多...
 
typedef struct v4l2_enc_enable_roi_param_ v4l2_enc_enable_roi_param
 包含配置编码器用于 ROI 参数编码的参数。更多...
 
typedef struct v4l2_enc_enable_reconcrc_param_ v4l2_enc_enable_reconcrc_param
 包含配置编码器用于重建 CRC 编码的参数。更多...
 
typedef struct v4l2_enc_frame_ReconCRC_params_ v4l2_enc_frame_ReconCRC_params
 包含编码器帧重建 CRC 参数。更多...
 
typedef struct v4l2_ctrl_videoenc_input_metadata_ v4l2_ctrl_videoenc_input_metadata
 包含编码器帧输入元数据参数。更多...
 
typedef struct _v4l2_ctrl_video_qp_range v4l2_ctrl_video_qp_range
 包含编码器帧最小/最大 QP 参数。更多...
 
typedef struct _v4l2_ctrl_video_init_qp v4l2_ctrl_video_init_qp
 包含编码器初始 QP 参数。更多...
 
typedef struct v4l2_enc_av1_tile_config_ v4l2_enc_av1_tile_config
 包含配置 AV1 编码图块的参数。更多...
 

枚举

enum  v4l2_enc_temporal_tradeoff_level_type {
  V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROPNONE = 0,
  V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN5,
  V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN3,
  V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN2,
  V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP2IN3
}
 指定编码器时间权衡级别的类型。更多...
 
enum  v4l2_enc_hw_preset_type {
  V4L2_ENC_HW_PRESET_DISABLE = 0,
  V4L2_ENC_HW_PRESET_ULTRAFAST = 1,
  V4L2_ENC_HW_PRESET_FAST,
  V4L2_ENC_HW_PRESET_MEDIUM,
  V4L2_ENC_HW_PRESET_SLOW
}
 指定编码器硬件预设类型。更多...
 
enum  v4l2_enc_slice_length_type {
  V4L2_ENC_SLICE_LENGTH_TYPE_BITS = 0,
  V4L2_ENC_SLICE_LENGTH_TYPE_MBLK
}
 枚举指定切片长度的类型。更多...
 
enum  v4l2_enc_input_metadata_param {
  V4L2_ENC_INPUT_ROI_PARAM_FLAG = 1,
  V4L2_ENC_INPUT_GDR_PARAM_FLAG = 1 << 1,
  V4L2_ENC_INPUT_RPS_PARAM_FLAG = 1 << 2,
  V4L2_ENC_INPUT_RC_PARAM_FLAG = 1 << 3,
  V4L2_ENC_INPUT_RECONCRC_PARAM_FLAG = 1 << 4
}
 指定输入缓冲区元数据标志。更多...
 
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
}
 定义 H.265 编码器的可能级别。更多...
 

宏定义文档

◆ QP_RETAIN_VAL

#define QP_RETAIN_VAL   -1

v4l2_ctrl_video_qp_range 中将 Qp 值设置为 QP_RETAIN_VAL 将保留默认值或先前设置的 QP 值。

定义于文件 2224v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_SET_POLL_INTERRUPT

#define V4L2_CID_MPEG_SET_POLL_INTERRUPT   (V4L2_CID_MPEG_BASE+551)

用于设置/清除轮询中断模式的 Control ID。

当应用程序发出 POLL 但希望等待被中断时很有用。

此控件必须提供一个布尔值,True 表示应启用轮询中断,并且应保持启用状态(即,对 POLL 的调用将立即返回),直到通过传递布尔值 0 值调用相同的 Control ID。

注意
仅当解码器或编码器以 O_NONBLOCK 标志打开时才应调用此方法。

定义于文件 1103v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEO_BUF_API_TYPE

#define V4L2_CID_MPEG_VIDEO_BUF_API_TYPE   (V4L2_CID_MPEG_BASE+556)

定义用于设置解码器/编码器使用的 buf api 的 Control ID。

此控件应提供一个布尔值,默认为 0。必须在任何其他 ioctl 使用之前调用此控件,并且不能更改。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。这是内部 ioctl,稍后将被删除。

定义于文件 1154v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEO_CUDA_GPU_ID

#define V4L2_CID_MPEG_VIDEO_CUDA_GPU_ID   (V4L2_CID_MPEG_BASE+558)

定义用于设置解码器/编码器使用的 GPU ID 的 Control ID。

此控件应提供一个整数值。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1175v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEO_CUDA_LOW_LATENCY

#define V4L2_CID_MPEG_VIDEO_CUDA_LOW_LATENCY   (V4L2_CID_MPEG_BASE+568)

定义用于为解码器设置低延迟的 Control ID。

解码器可以使用此控件为具有 I 和 IPPP 帧的流设置低延迟。

注意
必须在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1281v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEO_CUDA_MEM_TYPE

#define V4L2_CID_MPEG_VIDEO_CUDA_MEM_TYPE   (V4L2_CID_MPEG_BASE+557)

定义用于设置解码器/编码器使用的 cuda 内存类型的 Control ID。

解码器可以使用此控件设置表面的内存类型。值 v4l2_cuda_mem_type 需要使用此控件设置。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1165v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEO_DECODE_INSTANCE

#define V4L2_CID_MPEG_VIDEO_DECODE_INSTANCE   (V4L2_CID_MPEG_BASE+549)

用于选择要解码的 NVDEC IP 的 Control ID。

注意
此功能目前已被弃用,不再起作用。

应为此控件提供 v4l2_decode_instance_type。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1081v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEO_DEVICE_POLL

#define V4L2_CID_MPEG_VIDEO_DEVICE_POLL   (V4L2_CID_MPEG_BASE+550)

用于在以非阻塞模式打开的 fd 上发出伪 POLL 调用的 Control ID。

必须为此控件提供指向有效 v4l2_ctrl_video_device_poll 的指针。

注意
仅当解码器或编码器以 O_NONBLOCK 标志打开时才应调用此方法。

定义于文件 1090v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEO_MAX_PERFORMANCE

#define V4L2_CID_MPEG_VIDEO_MAX_PERFORMANCE   (V4L2_CID_MPEG_BASE+554)

用于启用最大性能的 Control ID。

此控件必须提供一个整数值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1132v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEODEC_DROP_FRAME_INTERVAL

#define V4L2_CID_MPEG_VIDEODEC_DROP_FRAME_INTERVAL   (V4L2_CID_MPEG_BASE+559)

定义用于为解码器设置丢帧间隔的 Control ID。

此控件应提供一个整数值。值 "x" 表示应从解码器输出每 "x" 帧,其余帧应在解码后丢弃。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1187v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_AV1_DISABLE_CDF_UPDATE

#define V4L2_CID_MPEG_VIDEOENC_AV1_DISABLE_CDF_UPDATE   (V4L2_CID_MPEG_BASE+572)

定义用于为 AV1 启用 CDF 更新的 Control ID。

此控件应提供一个布尔值。如果值为 true,则禁用符号解码过程中的 CDF 更新。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1326v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_AV1_ENABLE_SSIMRDO

#define V4L2_CID_MPEG_VIDEOENC_AV1_ENABLE_SSIMRDO   (V4L2_CID_MPEG_BASE+571)

定义用于为 AV1 启用基于方差的 SSIM RDO 的 Control ID。

此控件应提供一个布尔值。如果值为 false,则禁用 SSIM RDO,否则为 true(启用时)。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1315v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_AV1_HEADERS_WITH_FRAME

#define V4L2_CID_MPEG_VIDEOENC_AV1_HEADERS_WITH_FRAME   (V4L2_CID_MPEG_BASE+569)

用于启用/禁用附加 IVF 标头的设置的 Control ID。

仅用于 AV1 编解码器。

此控件应提供一个布尔值。如果值为 false,则禁用标头,true 将启用标头。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1293v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION

#define V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION   (V4L2_CID_MPEG_BASE+570)

定义用于为会话配置 AV1 图块的 Control ID。

必须为此控件提供指向有效 v4l2_enc_av1_tile_config 结构的指针。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1304v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_ALLIFRAME_ENCODE

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_ALLIFRAME_ENCODE   (V4L2_CID_MPEG_BASE+555)

用于启用/禁用全 i 帧编码设置的 Control ID。

此控件应提供一个布尔值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1142v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL   (V4L2_CID_MPEG_BASE+543)

定义用于配置编码器进行外部速率控制的 Control ID。

必须为此控件提供指向有效 v4l2_enc_enable_ext_rate_ctr 结构的指针。

注意
必须在请求两个平面上的缓冲区之后设置此控件。

定义于文件 1015v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL   (V4L2_CID_MPEG_BASE+542)

定义用于配置编码器进行外部 RPS 控制的 Control ID。

必须为此控件提供指向有效 v4l2_enc_enable_ext_rps_ctr 结构的指针。

注意
必须在请求两个平面上的缓冲区之后设置此控件。如果输入 V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES 的值,则必须在此控件之后设置。

定义于文件 1004v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_LOSSLESS

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_LOSSLESS   (V4L2_CID_MPEG_BASE+575)

定义用于启用无损 H.264/H.265 编码的 Control ID。

此控件必须提供一个布尔值。默认为 0。无损编码仅支持 YUV444 8/10 位格式。

注意
在 H.264 YUV444 编码的情况下必须设置此控件,因为它不支持有损编码。
注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1359v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_METADATA_MV   (V4L2_CID_MPEG_BASE+537)

定义用于启用/禁用编码器运动矢量报告的 Control ID。

此控件必须提供一个布尔值。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 945v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM   (V4L2_CID_MPEG_BASE+545)

定义用于为会话配置重建 CRC 的 Control ID。

必须为此控件提供指向有效 v4l2_enc_enable_reconcrc_param 结构的指针。

注意
必须在请求两个平面上的缓冲区之后设置此控件。

定义于文件 1037v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM   (V4L2_CID_MPEG_BASE+544)

定义用于为会话配置 ROI 编码的 Control ID。

必须为此控件提供指向有效 v4l2_enc_enable_roi_param 结构的指针。

注意
必须在请求两个平面上的缓冲区之后设置此控件。

定义于文件 1026v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ENABLE_SLICE_LEVEL_ENCODE

#define V4L2_CID_MPEG_VIDEOENC_ENABLE_SLICE_LEVEL_ENCODE   (V4L2_CID_MPEG_BASE+562)

用于启用/禁用切片级编码输出的 Control ID。

此控件应提供一个布尔值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1216v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_EXTEDED_COLORFORMAT

#define V4L2_CID_MPEG_VIDEOENC_EXTEDED_COLORFORMAT   (V4L2_CID_MPEG_BASE+548)

用于启用/禁用设置扩展颜色格式的 Control ID。

此控件应提供一个布尔值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。此外,只有在设置 V4L2_CID_MPEG_VIDEOENC_INSERT_VUI 后才能启用/禁用此控件

定义于文件 1068v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_FORCE_IDR_FRAME

#define V4L2_CID_MPEG_VIDEOENC_FORCE_IDR_FRAME   (V4L2_CID_MPEG_BASE+567)

定义用于强制 IDR 帧的 Control ID。

编码器可以使用此控件强制编码 idr 帧。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1271v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_FORCE_INTRA_FRAME

#define V4L2_CID_MPEG_VIDEOENC_FORCE_INTRA_FRAME   (V4L2_CID_MPEG_BASE+566)

定义用于强制 INTRA 帧的 Control ID。

编码器可以使用此控件强制编码 intra 帧。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1261v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_FRAMES_TO_ENCODE

#define V4L2_CID_MPEG_VIDEOENC_FRAMES_TO_ENCODE   (V4L2_CID_MPEG_BASE+573)

定义用于设置要编码的总帧数的 Control ID。

此控件应提供一个整数值。值 "x" 表示提供给编码器进行编码的帧数。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1337v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_H265_CHROMA_FACTOR_IDC

#define V4L2_CID_MPEG_VIDEOENC_H265_CHROMA_FACTOR_IDC   (V4L2_CID_MPEG_BASE+576)

定义用于为 H.265 编码设置 chroma_factor_idc 的 Control ID。

此控件必须提供一个整数值。默认为 1,YUV444 8/10 位格式默认为 3。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1370v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_H265_LEVEL

#define V4L2_CID_MPEG_VIDEOENC_H265_LEVEL   (V4L2_CID_MPEG_BASE+561)

定义用于设置 H.265 编码器级别的 control ID。

必须传递 v4l2_mpeg_video_h265_level。

定义于文件 1206v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_HEIGHT

#define V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_HEIGHT   (V4L2_CID_MPEG_BASE+565)

定义用于为 H265 VUI 编码设置样本纵横比高度的 Control ID。

此控件必须提供一个整数值。H265 的 VUI 样本纵横比指示符遵循为 v4l2_mpeg_video_h264_vui_sar_idc 定义的标准枚举。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1251v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_WIDTH

#define V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_WIDTH   (V4L2_CID_MPEG_BASE+564)

定义用于为 H265 VUI 编码设置样本纵横比宽度的 Control ID。

此控件必须提供一个整数值。H265 的 VUI 样本纵横比指示符遵循为 v4l2_mpeg_video_h264_vui_sar_idc 定义的标准枚举。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1239v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM

#define V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM   (V4L2_CID_MPEG_BASE+540)

定义用于设置编码器硬件预设类型的 Control ID。

必须为此控件提供指向有效 v4l2_enc_hw_preset_type_param 结构的指针。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 979v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_INIT_FRAME_QP

#define V4L2_CID_MPEG_VIDEOENC_INIT_FRAME_QP   (V4L2_CID_MPEG_BASE+574)

定义用于为编码器会话配置初始 QP 参数的 Control ID。

必须为此控件提供指向有效 v4l2_ctrl_video_init_qp 结构的指针。

定义于文件 1346v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA

#define V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA   (V4L2_CID_MPEG_BASE+541)

定义用于为编码器缓冲区提供输入元数据的 Control ID。

必须为此控件提供指向有效 v4l2_ctrl_videoenc_input_metadata 结构的指针。

注意
必须在输出平面上排队缓冲区之前调用此控件。在 v4l2_ctrl_videoenc_input_metadata.metadata_flag 中使用 v4l2_enc_input_metadata_param 的按位 OR 运算,以在一个 s_ctrl 调用中提供不同的输入元数据参数。

定义于文件 992v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_INSERT_AUD

#define V4L2_CID_MPEG_VIDEOENC_INSERT_AUD   (V4L2_CID_MPEG_BASE+547)

用于启用/禁用插入 AUD(访问单元分隔符)的 Control ID。

此控件应提供一个布尔值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1057v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR

#define V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR   (V4L2_CID_MPEG_BASE+535)

定义用于启用/禁用在 IDR 间隔显式插入 SPS 和 PPS 的 Control ID。

此控件必须提供一个布尔值。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 923v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_INSERT_VUI

#define V4L2_CID_MPEG_VIDEOENC_INSERT_VUI   (V4L2_CID_MPEG_BASE+546)

用于启用/禁用在 SPS 中插入 VUI 的 Control ID。

此控件应提供一个布尔值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1047v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_METADATA

#define V4L2_CID_MPEG_VIDEOENC_METADATA   (V4L2_CID_MPEG_BASE+536)

定义用于获取编码器输出元数据的 Control ID。

必须为此控件提供指向有效 v4l2_ctrl_video_metadata 结构的指针。

注意
必须在从捕获平面成功出队缓冲区后读取此控件。结构中的值在缓冲区再次排队之前有效。

定义于文件 935v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_METADATA_MV

#define V4L2_CID_MPEG_VIDEOENC_METADATA_MV   (V4L2_CID_MPEG_BASE+538)

定义用于获取编码器输出运动矢量元数据的 Control ID。

必须为此控件提供指向有效 v4l2_ctrl_videoenc_outputbuf_metadata_MV 结构的指针。

注意
必须在从捕获平面成功出队缓冲区后读取此控件。结构中的值在缓冲区再次排队之前有效。

定义于文件 957v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES

#define V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES   (V4L2_CID_MPEG_BASE+534)

定义用于设置要在两个 P 帧之间编码的 B 帧数的 Control ID。

这适用于 H.264 编码器。这也适用于 Jetson Xavier 和 Jetson Xavier NX 平台的 H.265 编码器。此控件必须提供一个整数值。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 913v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES

#define V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES   (V4L2_CID_MPEG_BASE+532)

定义用于指定可以使用的最大参考帧数的 Control ID。

此控件必须提供一个整数值。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 891v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_POC_TYPE

#define V4L2_CID_MPEG_VIDEOENC_POC_TYPE   (V4L2_CID_MPEG_BASE+563)

定义用于设置帧中图片顺序计数属性的 Control ID。

这仅适用于 H.264 编码器。此控件必须提供一个整数值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1227v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_QP_RANGE

#define V4L2_CID_MPEG_VIDEOENC_QP_RANGE   (V4L2_CID_MPEG_BASE+539)

定义用于设置 I/P/B 帧的 QP 范围的 Control ID。

必须为此控件提供指向有效 v4l2_ctrl_video_qp_range 结构的指针。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 968v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS

#define V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS   (V4L2_CID_MPEG_BASE+530)

定义用于配置编码器以高质量编码帧的特定区域的 Control ID。

必须为此控件提供指向有效 v4l2_enc_frame_ROI_params 结构的指针。

注意
必须在请求两个平面上的缓冲区之后设置此控件。

定义于文件 870v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM

#define V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM   (V4L2_CID_MPEG_BASE+533)

定义用于指定编码器切片内刷新间隔的 Control ID。

必须为此控件提供指向有效 v4l2_enc_slice_intrarefresh_param 结构的指针。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 902v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM

#define V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM   (V4L2_CID_MPEG_BASE+529)

定义用于配置编码器切片长度(以 MB 或位为单位)的 Control ID。

必须为此控件提供指向有效 v4l2_enc_slice_length_param 结构的指针。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 858v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL

#define V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL   (V4L2_CID_MPEG_BASE+528)

定义用于配置编码器以在编码时丢帧的 Control ID。

必须为此控件提供 v4l2_enc_temporal_tradeoff_level_type 类型的值。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 847v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_TWO_PASS_CBR

#define V4L2_CID_MPEG_VIDEOENC_TWO_PASS_CBR   (V4L2_CID_MPEG_BASE+552)

用于启用/禁用设置速率控制两遍 CBR 的 Control ID。

此控件应提供一个布尔值。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1113v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE

#define V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE   (V4L2_CID_MPEG_BASE+531)

定义用于指定编码器虚拟缓冲区大小(以位为单位)的 Control ID。

必须为此控件提供指向有效 v4l2_enc_virtual_buffer_size 结构的指针。

注意
必须在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 881v4l2_nv_extensions.h

◆ V4L2_CID_MPEG_VIDEOENC_VPX_HEADERS_WITH_FRAME

#define V4L2_CID_MPEG_VIDEOENC_VPX_HEADERS_WITH_FRAME   (V4L2_CID_MPEG_BASE+560)

用于启用/禁用附加 VP8/9 标头的设置的 Control ID。

仅用于 VP8/9 像素格式,不适用于 H264/5。

此控件应提供一个布尔值。如果值为 false,则禁用标头,true 将启用标头。

注意
应在设置两个平面上的格式之后以及在请求任一平面上的缓冲区之前设置此控件。

定义于文件 1199v4l2_nv_extensions.h

◆ V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD

#define V4L2_CID_VIDEO_CONVERT_YUV_RESCALE_METHOD   (V4L2_CID_MPEG_BASE+553)

定义用于设置转换器 YUV 缩放方法的 Control ID。

必须使用类型为 v4l2_yuv_rescale_method 的值来提供此控件。

注意
必须在请求任一平面上的缓冲区之前设置此控件。

定义位于 1122 行,文件为 v4l2_nv_extensions.h

◆ V4L2_MAX_REF_FRAMES

#define V4L2_MAX_REF_FRAMES   8

编码器支持的最大参考帧数。

定义位于 1979 行,文件为 v4l2_nv_extensions.h

◆ V4L2_MAX_ROI_REGIONS

#define V4L2_MAX_ROI_REGIONS   8

定义编码器支持的最大 ROI 区域数。

定义位于 1923 行,文件为 v4l2_nv_extensions.h

Typedef 文档

◆ MVInfo

typedef struct MVInfo_ MVInfo

保存单个块的运动矢量参数。

对于 H.264,nvenc 为每个 16x16 块(宏块)提供一个运动矢量。对于 H.265,nvenc 为每个 32x32 块(编码树块)提供一个运动矢量。

◆ v4l2_ctrl_video_init_qp

保存编码器初始化 QP 参数。

必须与 V4L2_CID_MPEG_VIDEOENC_INIT_FRAME_QP IOCTL 一起使用。

◆ v4l2_ctrl_video_metadata

保存视频编码器和解码器的元数据参数。

元数据对于具有索引 buffer_index 的缓冲区有效,从缓冲区出队后到再次入队为止。

◆ v4l2_ctrl_video_qp_range

保存编码器帧最小/最大 QP 参数。

必须与 V4L2_CID_MPEG_VIDEOENC_QP_RANGE IOCTL 一起使用。

◆ v4l2_ctrl_videoenc_input_metadata

保存编码器帧输入元数据参数。

必须与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL 一起使用。

◆ v4l2_ctrl_videoenc_outputbuf_metadata

保存帧的编码器输出元数据,与 V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL 一起使用。

◆ v4l2_ctrl_videoenc_outputbuf_metadata_MV

保存完整帧的运动矢量参数。

◆ v4l2_enc_av1_tile_config

保存配置 AV1 编码分块的参数。

必须与 V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION IOCTL 一起使用。

◆ v4l2_enc_enable_ext_rate_ctr

保存为外部速率控制模式配置编码器的参数,与 V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL IOCTL 一起使用。

◆ v4l2_enc_enable_ext_rps_ctr

保存为外部 RPS 控制配置编码器的参数,与 V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL IOCTL 一起使用。

◆ v4l2_enc_enable_reconcrc_param

保存为重建 CRC 编码配置编码器的参数。

必须与 V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM IOCTL 一起使用。

◆ v4l2_enc_enable_roi_param

保存为 ROI 参数编码配置编码器的参数。

必须与 V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM IOCTL 一起使用。

◆ v4l2_enc_frame_ext_rate_ctrl_params

保存编码器帧外部速率控制参数,与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA ioctl 一起使用。

◆ v4l2_enc_frame_ext_rps_ctrl_params

保存编码器帧外部 RPS 控制参数,与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL 一起使用。

◆ v4l2_enc_frame_full_prop

保存编码帧的 RPS 列表参数。

◆ v4l2_enc_frame_prop

保存编码器帧属性。

◆ v4l2_enc_frame_ReconCRC_params

保存编码器帧重建 CRC 参数。

必须与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL 一起使用。

◆ v4l2_enc_frame_ROI_params

保存编码器帧 ROI 参数,与 V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS IOCTL 一起使用。

◆ v4l2_enc_gdr_params

保存编码器 GDR 参数,与 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA IOCTL 一起使用。

◆ v4l2_enc_hw_preset_type_param

保存编码器硬件预设类型参数,与 V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM IOCTL 一起使用。

◆ v4l2_enc_num_ref_frames

保存编码器参考帧数量参数,与 V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES IOCTL 一起使用。

H.265 不支持此功能。

◆ v4l2_enc_ROI_param

保存单个 ROI 区域的编码器质量参数。

◆ v4l2_enc_slice_intrarefresh_param

保存编码器 slice 帧内刷新参数,与 V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM IOCTL 一起使用。

◆ v4l2_enc_slice_length_param

保存编码器 slice 长度参数,与 V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM IOCTL 一起使用。

◆ v4l2_enc_virtual_buffer_size

保存编码器虚拟缓冲区大小参数,与 V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE IOCTL 一起使用。

枚举类型文档

◆ v4l2_enc_hw_preset_type

指定编码器硬件预设类型。

枚举器
V4L2_ENC_HW_PRESET_DISABLE 

编码器硬件预设已禁用。

V4L2_ENC_HW_PRESET_ULTRAFAST 

编码器硬件预设,每帧编码时间为超快。

V4L2_ENC_HW_PRESET_FAST 

编码器硬件预设,每帧编码时间为快。

V4L2_ENC_HW_PRESET_MEDIUM 

编码器硬件预设,每帧编码时间为中等。

V4L2_ENC_HW_PRESET_SLOW 

编码器硬件预设,每帧编码时间为慢。

定义位于 1792 行,文件为 v4l2_nv_extensions.h

◆ v4l2_enc_input_metadata_param

指定输入缓冲区元数据标志。

枚举器
V4L2_ENC_INPUT_ROI_PARAM_FLAG 

输入元数据结构包含 ROI 参数。


V4L2_ENC_INPUT_GDR_PARAM_FLAG 

输入元数据结构包含 GDR 参数。


V4L2_ENC_INPUT_RPS_PARAM_FLAG 

输入元数据结构包含外部 RPS 参数。


V4L2_ENC_INPUT_RC_PARAM_FLAG 

输入元数据结构包含外部 RC 参数。


V4L2_ENC_INPUT_RECONCRC_PARAM_FLAG 

输入元数据结构包含 ReconCRC 参数。


定义位于 1830 行,文件为 v4l2_nv_extensions.h

◆ v4l2_enc_slice_length_type

枚举指定 slice 长度的类型。

枚举器
V4L2_ENC_SLICE_LENGTH_TYPE_BITS 

Slice 大小以字节数指定。

V4L2_ENC_SLICE_LENGTH_TYPE_MBLK 

Slice 大小以宏块数指定。

定义位于 1820 行,文件为 v4l2_nv_extensions.h

◆ v4l2_enc_temporal_tradeoff_level_type

指定编码器时间权衡级别的类型。

枚举器
V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROPNONE 

不丢弃任何缓冲区。

V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN5 

每 5 个缓冲区丢弃 1 个。

V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN3 

每 3 个缓冲区丢弃 1 个。

V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP1IN2 

每 2 个缓冲区丢弃 1 个。

V4L2_ENC_TEMPORAL_TRADEOFF_LEVEL_DROP2IN3 

每 3 个缓冲区丢弃 2 个。

定义位于 1776 行,文件为 v4l2_nv_extensions.h

◆ v4l2_mpeg_video_h265_level

定义 H.265 编码器可能的级别。

枚举器
V4L2_MPEG_VIDEO_H265_LEVEL_1_0_MAIN_TIER 
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 

定义位于 1846 行,文件为 v4l2_nv_extensions.h

. All rights reserved.