定义 V4L2 视频编码器的辅助类。
视频编码器设备节点是 "/dev/nvhost-msenc"。编码器的类别名称是 "NVENC"。
有关编码器的更多信息,请参阅 V4L2 视频编码器。
定义于文件 59 行 NvVideoEncoder.h。


| 公共成员函数 | |
| ~NvVideoEncoder () | |
| int | setOutputPlaneFormat (uint32_t pixfmt, uint32_t width, uint32_t height) | 
| 设置编码器输出平面的格式。 更多... | |
| int | setCapturePlaneFormat (uint32_t pixfmt, uint32_t width, uint32_t height, uint32_t sizeimage) | 
| 设置转换器捕获平面的格式。 更多... | |
| int | setFrameRate (uint32_t framerate_num, uint32_t framerate_den) | 
| 设置编码帧率。 更多... | |
| int | setBitrate (uint32_t bitrate) | 
| 设置编码器比特率。 更多... | |
| int | setPeakBitrate (uint32_t peak_bitrate) | 
| 设置编码器峰值比特率。 更多... | |
| int | setProfile (uint32_t profile) | 
| 设置编码器配置文件。 更多... | |
| int | setEncoderCommand (int cmd, int flags) | 
| 设置编码器命令。 更多... | |
| int | setLevel (uint32_t level) | 
| 设置编码器级别。 更多... | |
| int | setMaxPerfMode (int flag) | 
| 将编码器设置为最大性能模式。 更多... | |
| int | setConstantQp (bool enabled_rc) | 
| 为编码器设置恒定 QP。 更多... | |
| int | setRateControlMode (enum v4l2_mpeg_video_bitrate_mode mode) | 
| 设置编码器码率控制模式。 更多... | |
| int | setIFrameInterval (uint32_t interval) | 
| 设置编码器 I 帧间隔。 更多... | |
| int | setIDRInterval (uint32_t interval) | 
| 设置编码器 IDR 帧间隔。 更多... | |
| int | forceIDR () | 
| 强制生成 IDR 帧。 更多... | |
| int | setTemporalTradeoff (v4l2_enc_temporal_tradeoff_level_type level) | 
| 设置编码器时间权衡。 更多... | |
| int | setSliceLength (v4l2_enc_slice_length_type type, uint32_t length) | 
| 设置编码器输出切片长度。 更多... | |
| int | setHWPresetType (v4l2_enc_hw_preset_type type) | 
| 设置编码器硬件预设类型。 更多... | |
| int | setROIParams (uint32_t buffer_index, v4l2_enc_frame_ROI_params ¶ms) | 
| 为下一个缓冲区设置感兴趣区域 (ROI) 参数,该缓冲区将使用索引 buffer_index 排队到输出平面上。 更多... | |
| int | enableROI (v4l2_enc_enable_roi_param ¶ms) | 
| 启用外部 ROI。 更多... | |
| int | enableReconCRC (v4l2_enc_enable_reconcrc_param ¶ms) | 
| 启用重建 CRC。 更多... | |
| int | enableExternalRPS (v4l2_enc_enable_ext_rps_ctr ¶ms) | 
| 启用外部 RPS。 更多... | |
| int | enableExternalRC (v4l2_enc_enable_ext_rate_ctr ¶ms) | 
| 启用外部图片 RC。 更多... | |
| int | enableAV1Tile (v4l2_enc_av1_tile_config ¶ms) | 
| 启用 AV1 多瓦片配置。 更多... | |
| int | setAV1SsimRdo (bool enabled) | 
| 启用基于 AV1 方差的 SSIM RDO。 更多... | |
| int | setAV1DisableCDFUpdate (bool disabled) | 
| 在符号解码过程中禁用 AV1 CDF 更新。 更多... | |
| int | SetInputMetaParams (uint32_t buffer_index, v4l2_ctrl_videoenc_input_metadata ¶ms) | 
| 为下一个缓冲区设置输入元数据参数,该缓冲区将使用索引 buffer_index 排队到输出平面上。 更多... | |
| int | setVirtualBufferSize (uint32_t size) | 
| 设置编码器的虚拟缓冲区大小。 更多... | |
| int | setNumReferenceFrames (uint32_t num_frames) | 
| 设置编码器的参考帧数量。 更多... | |
| int | setSliceIntrarefresh (uint32_t interval) | 
| 设置切片内刷新间隔参数。 更多... | |
| int | setNumBFrames (uint32_t num) | 
| 设置 B 帧与 P 帧的数量比率。 更多... | |
| int | setInsertSpsPpsAtIdrEnabled (bool enabled) | 
| 启用/禁用在每个 IDR 帧处插入 SPS PPS。 更多... | |
| int | setCABAC (bool enabled) | 
| 为 H264 启用/禁用 CABAC 熵编码。 更多... | |
| int | setSliceLevelEncode (bool enabled) | 
| 为 H264 / HEVC 启用/禁用切片级编码。 更多... | |
| int | enableMotionVectorReporting () | 
| 启用视频编码器输出运动矢量元数据报告。 更多... | |
| int | getMetadata (uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata &enc_metadata) | 
| 获取编码捕获平面缓冲区的元数据。 更多... | |
| int | getMotionVectors (uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata_MV &enc_mv_metadata) | 
| 获取编码捕获平面缓冲区的运动矢量元数据。 更多... | |
| int | setQpRange (uint32_t MinQpI, uint32_t MaxQpI, uint32_t MinQpP, uint32_t MaxQpP, uint32_t MinQpB, uint32_t MaxQpB) | 
| 设置 I/P/B 帧的 QP 值。 更多... | |
| int | setSampleAspectRatioWidth (uint32_t sar_width) | 
| 为 VUI 编码设置样本宽高比宽度。 更多... | |
| int | setSampleAspectRatioHeight (uint32_t sar_height) | 
| 为 VUI 编码设置样本宽高比高度。 更多... | |
| int | setInsertVuiEnabled (bool enabled) | 
| 启用/禁用插入 VUI。 更多... | |
| int | setExtendedColorFormat (bool enabled) | 
| 启用/禁用扩展颜色格式。 更多... | |
| int | setInsertAudEnabled (bool enabled) | 
| 启用/禁用插入 AUD。 更多... | |
| int | setAlliFramesEncode (bool enabled) | 
| 启用/禁用全 I 帧编码。 更多... | |
| int | setPocType (uint32_t pocType) | 
| 设置编码器图像顺序控制类型。 更多... | |
| int | setInitQP (uint32_t IinitQP, uint32_t PinitQP, uint32_t BinitQP) | 
| 设置 I/P/B 帧的初始 QP。 更多... | |
| int | setFramesToEncode (uint32_t framesToEncode) | 
| 设置要编码的帧数。 更多... | |
| int | setChromaFactorIDC (uint8_t crfactor) | 
| 设置 H.265 编码器色度格式 IDC。 更多... | |
| int | setLossless (bool enabled) | 
| 为 H.264/H.265 设置无损编码。 更多... | |
| int | DevicePoll (v4l2_ctrl_video_device_poll *devicepoll) | 
| 在设备上发出轮询,该轮询会阻塞,直到:a) 要从捕获平面或输出平面或任何事件中出队某些内容。 更多... | |
| int | SetPollInterrupt () | 
| 设置轮询中断,现在如果应用程序调用 Poll,设备不应阻塞,换句话说,轮询被禁用。 更多... | |
| int | ClearPollInterrupt () | 
| 清除轮询中断,现在如果应用程序调用 Poll,设备应阻塞,直到事件被触发,换句话说,轮询被启用。 更多... | |
| int | subscribeEvent (uint32_t type, uint32_t id, uint32_t flags) | 
| 订阅 V4L2 事件。 更多... | |
| int | dqEvent (struct v4l2_event &event, uint32_t max_wait_ms) | 
| 从元素中出队一个事件。 更多... | |
| int | setControl (uint32_t id, int32_t value) | 
| 设置控件的值。 更多... | |
| int | getControl (uint32_t id, int32_t &value) | 
| 获取控件的值。 更多... | |
| int | setExtControls (struct v4l2_ext_controls &ctl) | 
| 设置多个控件的值。 更多... | |
| int | getExtControls (struct v4l2_ext_controls &ctl) | 
| 获取多个控件的值。 更多... | |
| virtual int | isInError () | 
| int | abort () | 
| 立即终止排队缓冲区的处理。 更多... | |
| virtual int | waitForIdle (uint32_t max_wait_ms) | 
| 等待直到元素处理完所有输出平面缓冲区。 更多... | |
| void | enableProfiling () | 
| 为 V4l2Element 启用性能分析。 更多... | |
| void | getProfilingData (NvElementProfiler::NvElementProfilerData &data) | 
| 获取元素的性能分析数据。 更多... | |
| void | printProfilingStats (std::ostream &out_stream=std::cout) | 
| 将元素的性能分析数据打印到输出流。 更多... | |
| bool | isProfilingEnabled () | 
| 检查是否为元素启用了性能分析。 更多... | |
| 静态公共成员函数 | |
| static NvVideoEncoder * | createVideoEncoder (const char *name, int flags=0) | 
| 创建一个名为 name 的新 V4L2 视频编码器对象。 更多... | |
| 数据字段 | |
| NvV4l2ElementPlane | output_plane | 
| 设置输出平面。 更多... | |
| NvV4l2ElementPlane | capture_plane | 
| 设置捕获平面。 更多... | |
| void * | app_data | 
| 指向应用程序特定数据的指针。 更多... | |
| 保护属性 | |
| int | fd | 
| 指定使用 v4l2_open打开的设备的文件描述符。 更多... | |
| uint32_t | output_plane_pixfmt | 
| 输出平面缓冲区的像素格式。 更多... | |
| uint32_t | capture_plane_pixfmt | 
| 捕获平面缓冲区的像素格式。 更多... | |
| int | is_in_error | 
| 指示元素操作期间是否遇到错误。 更多... | |
| const char * | comp_name | 
| 指定组件的名称,用于调试。 更多... | |
| NvElementProfiler | profiler | 
| 元素的性能分析器。 更多... | |
| NvVideoEncoder::~NvVideoEncoder | ( | ) | 
| 
 | 继承自 | 
立即终止排队缓冲区的处理。
所有缓冲区都返回给应用程序。
在内部的两个平面上调用 VIDIOC_STREAMOFF IOCTL。
| int NvVideoEncoder::ClearPollInterrupt | ( | ) | 
清除轮询中断,现在如果应用程序调用 Poll,设备应阻塞,直到事件被触发,换句话说,轮询被启用。
| 
 | static | 
创建一个名为 name 的新 V4L2 视频编码器对象。
此方法在内部对编码器设备节点 "/dev/nvhost-msenc" 调用 v4l2_open,并检查设备上的 V4L2_CAP_VIDEO_M2M_MPLANE 功能。此方法允许调用者指定打开设备时要使用的其他标志。
设备在阻塞模式下打开,可以通过将 O_NONBLOCK 标志传递给此方法来修改。
| int NvVideoEncoder::DevicePoll | ( | v4l2_ctrl_video_device_poll * | devicepoll | ) | 
在设备上发出轮询,该轮询会阻塞,直到:a) 要从捕获平面或输出平面或任何事件中出队某些内容。
b) 轮询被使用 V4L2_CID_SET_POLL_INTERRUPT 调用设备中断 c) 应用程序已经通过 V4L2_CID_SET_POLL_INTERRUPT 中断了轮询
| 
 | 继承自 | 
从元素中出队一个事件。
在内部调用 VIDIOC_DQEVENT IOCTL。调用者可以指定出队事件的最大等待时间。该调用会阻塞,直到事件成功出队或达到超时时间。
| [输入,输出] | event | 对要填充的 v4l2_event结构的引用。 | 
| [输入] | max_wait_ms | 指定出队事件的最大等待时间,以毫秒为单位。 | 
| int NvVideoEncoder::enableAV1Tile | ( | v4l2_enc_av1_tile_config & | params | ) | 
启用 AV1 多瓦片配置。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_AV1_TILE_CONFIGURATION 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后以及在任何平面上 requestBuffers 之前调用。
| [输入] | params | 要应用的参数,类型为 #v4l2_enc_av1_tile_config 的结构 | 
| int NvVideoEncoder::enableExternalRC | ( | v4l2_enc_enable_ext_rate_ctr & | params | ) | 
启用外部图片 RC。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RATE_CONTROL 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在请求两个平面上的缓冲区之后调用。
| [输入] | params | 要应用于帧的参数,类型为 #v4l2_enc_enable_ext_rate_ctr 的结构 | 
| int NvVideoEncoder::enableExternalRPS | ( | v4l2_enc_enable_ext_rps_ctr & | params | ) | 
启用外部 RPS。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_ENABLE_EXTERNAL_RPS_CONTROL 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在请求两个平面上的缓冲区之后调用。
| [输入] | params | 要应用于帧的参数,类型为 v4l2_enc_enable_ext_rps_ctr | 
| int NvVideoEncoder::enableMotionVectorReporting | ( | ) | 
启用视频编码器输出运动矢量元数据报告。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_METADATA_MV 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后以及在任何平面上 requestBuffers 之前调用。
| 
 | virtualinherited | 
| int NvVideoEncoder::enableReconCRC | ( | v4l2_enc_enable_reconcrc_param & | params | ) | 
启用重建 CRC。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_ENABLE_RECONCRC_PARAM 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在请求两个平面上的缓冲区之后调用。
| [输入] | params | 要应用于帧的参数,类型为 v4l2_enc_enable_reconcrc_param。 | 
| int NvVideoEncoder::enableROI | ( | v4l2_enc_enable_roi_param & | params | ) | 
启用外部 ROI。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_ENABLE_ROI_PARAM 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在请求两个平面上的缓冲区之后调用。
| [输入] | params | 要应用于帧的参数,类型为 v4l2_enc_enable_roi_param。 | 
| int NvVideoEncoder::forceIDR | ( | ) | 
强制生成 IDR 帧。
在内部使用控件 ID V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后调用。
| 
 | 继承自 | 
获取控件的值。
在内部调用 VIDIOC_G_CTRL IOCTL。
| [输入] | id | 要获取的控件的 ID。 | 
| [输出] | value | 对变量的引用,控件值将读取到该变量中。 | 
| 
 | 继承自 | 
获取多个控件的值。
在内部调用 VIDIOC_G_EXT_CTRLS IOCTL。
| [输入,输出] | ctl | 指向要获取的控件的指针。 | 
| int NvVideoEncoder::getMetadata | ( | uint32_t | buffer_index, | 
| v4l2_ctrl_videoenc_outputbuf_metadata & | enc_metadata | ||
| ) | 
获取编码捕获平面缓冲区的元数据。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_METADATA 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须为已从捕获平面出队的缓冲区调用。返回的元数据对应于索引为 buffer_index 的最后一个出队缓冲区。
| [输入] | buffer_index | 需要其元数据的捕获平面缓冲区的索引。 | 
| [输入,输出] | enc_metadata | 对要填充的元数据结构 v4l2_ctrl_videoenc_outputbuf_metadata 的引用。 | 
| int NvVideoEncoder::getMotionVectors | ( | uint32_t | buffer_index, | 
| v4l2_ctrl_videoenc_outputbuf_metadata_MV & | enc_mv_metadata | ||
| ) | 
获取编码捕获平面缓冲区的运动矢量元数据。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_METADATA_MV 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须为已从捕获平面出队的缓冲区调用。返回的元数据对应于索引为 buffer_index 的最后一个出队缓冲区。
| [输入] | buffer_index | 需要其元数据的捕获平面缓冲区的索引。 | 
| [输入,输出] | enc_mv_metadata | 对要填充的元数据结构 v4l2_ctrl_videoenc_outputbuf_metadata_MV 的引用。 | 
| 
 | 继承自 | 
获取元素的性能分析数据。
| 
 | virtualinherited | 
从 NvElement 重新实现。
| 
 | 继承自 | 
检查是否为元素启用了性能分析。
| 
 | 继承自 | 
将元素的性能分析数据打印到输出流。
| [输入] | out_stream | 要将数据打印到的 std::ostream 类型的输出流。如果未指定,则采用默认值 std::cout。 | 
| int NvVideoEncoder::setAlliFramesEncode | ( | bool | enabled | ) | 
启用/禁用全 I 帧编码。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_ENABLE_ALLIFRAME_ENCODE 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setAV1DisableCDFUpdate | ( | bool | disabled | ) | 
在符号解码过程中禁用 AV1 CDF 更新。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_AV1_DISABLE_CDF_UPDATE 调用 VIDIOC_S_EXT_CTRLS IOCTL。值 true 禁用 CDF 更新。必须在设置两个平面的格式之后调用。
| [输入] | disabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setAV1SsimRdo | ( | bool | enabled | ) | 
启用基于 AV1 方差的 SSIM RDO。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_AV1_ENABLE_SSIMRDO 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setBitrate | ( | uint32_t | bitrate | ) | 
设置编码器比特率。
在内部使用控件 ID V4L2_CID_MPEG_VIDEO_BITRATE 调用 VIDIOC_S_EXT_CTRLS IOCTL。可以在设置两个平面的格式之后的任何时间调用。
| [输入] | bitrate | 编码流的比特率,以比特每秒为单位。 | 
| int NvVideoEncoder::setCABAC | ( | bool | enabled | ) | 
为 H264 启用/禁用 CABAC 熵编码。
在内部使用控件 ID V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setCapturePlaneFormat | ( | uint32_t | pixfmt, | 
| uint32_t | width, | ||
| uint32_t | height, | ||
| uint32_t | sizeimage | ||
| ) | 
设置转换器捕获平面的格式。
在捕获平面上在内部调用 VIDIOC_S_FMT IOCTL。
| [输入] | pixfmt | 编码的 V4L2 像素格式之一。 | 
| [输入] | width | 输入缓冲区的宽度(以像素为单位)。 | 
| [输入] | height | 输入缓冲区的高度(以像素为单位)。 | 
| [输入] | sizeimage | 捕获平面上编码缓冲区的最大大小(以字节为单位) | 
| int NvVideoEncoder::setChromaFactorIDC | ( | uint8_t | crfactor | ) | 
设置 H.265 编码器色度格式 IDC。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_H265_CHROMA_FACTOR_IDC 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后以及在任何平面上 requestBuffers 之前调用。
| [输入] | crfactor | 设置编码器的 chroma_factor_idc。 | 
| int NvVideoEncoder::setConstantQp | ( | bool | enabled_rc | ) | 
为编码器设置恒定 QP。
在内部使用控件 ID V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE 调用 VIDIOC_S_EXT_CTRLS IOCTL 以启用/禁用码率控制。如果给定值 false,则禁用 RC 并设置恒定 QP 参数。必须在设置两个平面的格式之后以及在任何平面上 requestBuffers 之前调用。
| [输入] | enabled_rc | 布尔值,指示是否启用/禁用控件。 | 
| 
 | 继承自 | 
设置控件的值。
在内部调用 VIDIOC_S_CTRL IOCTL。
| [输入] | id | 要设置的控件的 ID。 | 
| [输入] | value | 要在控件上设置的值。 | 
| int NvVideoEncoder::setEncoderCommand | ( | int | cmd, | 
| int | flags | ||
| ) | 
设置编码器命令。
使用编码器命令在内部调用 VIDIOC_ENCODER_CMD。
| 
 | 继承自 | 
设置多个控件的值。
在内部调用 VIDIOC_S_EXT_CTRLS IOCTL。
| [输入] | ctl | 指向要设置的控件的指针。 | 
| int NvVideoEncoder::setExtendedColorFormat | ( | bool | enabled | ) | 
启用/禁用扩展颜色格式。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_EXTEDED_COLORFORMAT 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setFrameRate | ( | uint32_t | framerate_num, | 
| uint32_t | framerate_den | ||
| ) | 
设置编码帧率。
在编码器捕获平面上调用 VIDIOC_S_PARM IOCTL。可以在设置两个平面的格式之后的任何时间调用。
| [输入] | framerate_num | 帧率分数的分子部分。 | 
| [输入] | framerate_den | 帧率分母部分。 | 
| int NvVideoEncoder::setFramesToEncode | ( | uint32_t | framesToEncode | ) | 
设置要编码的帧数。
在内部使用控件 ID #V4L2_CID_MPEG_VIDEO_FRAMES_TO_ENCODE 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后调用。
| [输入] | framesToEncode | 设置要编码的帧数。 | 
| int NvVideoEncoder::setHWPresetType | ( | v4l2_enc_hw_preset_type | type | ) | 
设置编码器硬件预设类型。
在内部使用控件 ID V4L2_CID_MPEG_VIDEOENC_HW_PRESET_TYPE_PARAM 调用 VIDIOC_S_EXT_CTRLS ioctl。必须在设置两个平面上的 setFormat() 之后以及在任何平面上 requestBuffers 之前调用。
| [输入] | type | 硬件预设类型,枚举 v4l2_enc_hw_preset_type_param 之一。 | 
| int NvVideoEncoder::setIDRInterval | ( | uint32_t | interval | ) | 
设置编码器 IDR 帧间隔。
在内部使用控件 ID V4L2_CID_MPEG_VIDEO_IDR_INTERVAL 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后以及在任何平面上 requestBuffers 之前调用。
| [输入] | interval | 两个 IDR 帧之间的间隔,以帧数为单位。 | 
| int NvVideoEncoder::setIFrameInterval | ( | uint32_t | interval | ) | 
设置编码器 I 帧间隔。
在内部使用控件 ID V4L2_CID_MPEG_VIDEO_GOP_SIZE 调用 VIDIOC_S_EXT_CTRLS IOCTL。必须在设置两个平面的格式之后以及在任何平面上 requestBuffers 之前调用。
| [输入] | interval | 两个 I 帧之间的间隔,以帧数为单位。 | 
| int NvVideoEncoder::setInitQP | ( | uint32_t | I帧初始QP, | 
| uint32_t | P帧初始QP, | ||
| uint32_t | B帧初始QP | ||
| ) | 
设置 I/P/B 帧的初始 QP。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_INIT_FRAME_QP。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | I帧初始QP | I 帧的 Qp 值。 | 
| [输入] | P帧初始QP | P 帧的 Qp 值。 | 
| [输入] | BinitQP | B 帧的 Qp 值。 | 
| int NvVideoEncoder::SetInputMetaParams | ( | uint32_t | buffer_index, | 
| v4l2_ctrl_videoenc_input_metadata & | params | ||
| ) | 
为下一个将要在索引为 buffer_index 的输出 plane 上排队的 buffer 设置输入元数据参数。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_INPUT_METADATA。必须在两个 plane 上请求 buffer 之后调用。
| [输入] | buffer_index | 应用外部 RC 参数的输出 plane buffer 的索引。 | 
| [输入] | params | 要应用于帧的参数,类型为 v4l2_ctrl_videoenc_input_metadata 结构的参数。 | 
| int NvVideoEncoder::setInsertAudEnabled | ( | bool | enabled | ) | 
启用/禁用插入 AUD。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_H264_AUD_SAR_ENABLE。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setInsertSpsPpsAtIdrEnabled | ( | bool | enabled | ) | 
启用/禁用在每个 IDR 帧处插入 SPS PPS。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_INSERT_SPS_PPS_AT_IDR。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setInsertVuiEnabled | ( | bool | enabled | ) | 
启用/禁用插入 VUI。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_INSERT_VUI。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setLevel | ( | uint32_t | level | ) | 
设置编码器 level。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_H264_LEVEL 或 V4L2_CID_MPEG_VIDEOENC_H265_LEVEL,具体取决于编码器类型。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | level | 用于编码的 Level。 | 
| int NvVideoEncoder::setLossless | ( | bool | enabled | ) | 
为 H.264/H.265 设置无损编码。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_ENABLE_LOSSLESS。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setMaxPerfMode | ( | int | flag | ) | 
将编码器设置为最大性能模式。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_MAX_PERFORMANCE。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | flag | 指示是否启用/禁用最大性能的整数变量。 | 
| int NvVideoEncoder::setNumBFrames | ( | uint32_t | num | ) | 
设置 P 帧之间的 B 帧数量。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_NUM_BFRAMES。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | num | B 帧的数量。 | 
| int NvVideoEncoder::setNumReferenceFrames | ( | uint32_t | num_frames | ) | 
设置编码器的参考帧数量。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_NUM_REFERENCE_FRAMES。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | num_frames | 参考帧的数量。 | 
| int NvVideoEncoder::setOutputPlaneFormat | ( | uint32_t | pixfmt, | 
| uint32_t | width, | ||
| uint32_t | height | ||
| ) | 
设置编码器输出 plane 的格式。
内部在输出 plane 上调用 VIDIOC_S_FMT IOCTL。
| [输入] | pixfmt | 原始 V4L2 像素格式之一。 | 
| [输入] | width | 输入缓冲区的宽度(以像素为单位)。 | 
| [输入] | height | 输入缓冲区的高度(以像素为单位)。 | 
| int NvVideoEncoder::setPeakBitrate | ( | uint32_t | peak_bitrate | ) | 
设置编码器峰值比特率。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_BITRATE_PEAK。可以在两个 plane 上调用 setFormat 之后的任何时间调用。在 VBR 模式下生效。
| [输入] | peak_bitrate | 编码流的峰值比特率,单位为比特每秒。 | 
| int NvVideoEncoder::setPocType | ( | uint32_t | pocType | ) | 
设置编码器图像顺序控制类型。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_POC_TYPE。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | pocType | 设置编码器的图像顺序计数。 | 
| int NvVideoEncoder::SetPollInterrupt | ( | ) | 
设置轮询中断,现在如果应用程序调用 Poll,设备不应阻塞,换句话说,轮询被禁用。
| int NvVideoEncoder::setProfile | ( | uint32_t | profile | ) | 
设置编码器 profile。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_H264_PROFILE 或 V4L2_CID_MPEG_VIDEO_H265_PROFILE,具体取决于编码器类型。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | profile | 用于编码的 Profile。 | 
| int NvVideoEncoder::setQpRange | ( | uint32_t | MinQpI, | 
| uint32_t | MaxQpI, | ||
| uint32_t | MinQpP, | ||
| uint32_t | MaxQpP, | ||
| uint32_t | MinQpB, | ||
| uint32_t | MaxQpB | ||
| ) | 
设置 I/P/B 帧的 QP 值范围。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_QP_RANGE。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | MinQpI | I 帧的最小 Qp 值。 | 
| [输入] | MaxQpI | I 帧的最小 Qp 值。 | 
| [输入] | MinQpP | P 帧的最小 Qp 值。 | 
| [输入] | MaxQpP | P 帧的最小 Qp 值。 | 
| [输入] | MinQpB | B 帧的最小 Qp 值。 | 
| [输入] | MaxQpB | B 帧的最小 Qp 值。 | 
| int NvVideoEncoder::setRateControlMode | ( | enum v4l2_mpeg_video_bitrate_mode | mode | ) | 
设置编码器码率控制模式。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_BITRATE_MODE。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | mode | 码率控制类型,为 enum v4l2_mpeg_video_bitrate_mode 中的一种。 | 
| int NvVideoEncoder::setROIParams | ( | uint32_t | buffer_index, | 
| v4l2_enc_frame_ROI_params & | params | ||
| ) | 
为下一个将要在索引为 buffer_index 的输出 plane 上排队的 buffer 设置感兴趣区域 (ROI) 参数。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS。必须在两个 plane 上请求 buffer 之后调用。
| [输入] | buffer_index | 应用 ROI 参数的输出 plane buffer 的索引。 | 
| [输入] | params | 要应用于帧的参数,类型为 v4l2_enc_frame_ROI_params 结构的参数。 | 
| int NvVideoEncoder::setSampleAspectRatioHeight | ( | uint32_t | sar_height | ) | 
为 VUI 编码设置 Sample Aspect Ratio 高度。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT 或 V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_HEIGHT,具体取决于编码器类型。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | sar_height | SAR 高度。 | 
| int NvVideoEncoder::setSampleAspectRatioWidth | ( | uint32_t | sar_width | ) | 
为 VUI 编码设置 Sample Aspect Ratio 宽度。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH 或 V4L2_CID_MPEG_VIDEOENC_H265_VUI_EXT_SAR_WIDTH,具体取决于编码器类型。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | sar_width | SAR 宽度。 | 
| int NvVideoEncoder::setSliceIntrarefresh | ( | uint32_t | interval | ) | 
设置 slice 内刷新间隔参数。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_SLICE_INTRAREFRESH_PARAM。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | interval | Slice 内刷新间隔,以 slice 数量为单位。 | 
| int NvVideoEncoder::setSliceLength | ( | v4l2_enc_slice_length_type | type, | 
| uint32_t | length | ||
| ) | 
设置编码器输出 slice 长度。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_SLICE_LENGTH_PARAM。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | type | Slice 长度类型,为 enum v4l2_enc_slice_length_type 中的一种。 | 
| [输入] | length | Slice 的长度,如果类型为 V4L2_ENC_SLICE_LENGTH_TYPE_BITS,则单位为字节;如果类型为 V4L2_ENC_SLICE_LENGTH_TYPE_MBLK,则单位为宏块数量。 | 
| int NvVideoEncoder::setSliceLevelEncode | ( | bool | enabled | ) | 
为 H264 / HEVC 启用/禁用 Slice 级别编码。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_ENABLE_SLICE_LEVEL_ENCODE。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | enabled | 布尔值,指示是否启用/禁用控件。 | 
| int NvVideoEncoder::setTemporalTradeoff | ( | v4l2_enc_temporal_tradeoff_level_type | level | ) | 
设置编码器时间域权衡。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_TEMPORAL_TRADEOFF_LEVEL。必须在两个 plane 上调用 setFormat 之后,以及在任何 plane 上调用 requestBuffers 之前调用。
| [输入] | level | 时间域权衡级别,为 v4l2_enc_temporal_tradeoff_level_type 中的一种。 | 
| int NvVideoEncoder::setVirtualBufferSize | ( | uint32_t | size | ) | 
设置编码器的虚拟 buffer 大小。
内部调用 VIDIOC_S_EXT_CTRLS IOCTL,控制 ID 为 V4L2_CID_MPEG_VIDEOENC_VIRTUALBUFFER_SIZE。必须在两个 plane 上调用 setFormat 之后调用。
| [输入] | size | 虚拟 buffer 大小,单位为字节。 | 
| 
 | 继承自 | 
订阅 V4L2 事件。
内部调用 VIDIOC_SUBSCRIBE_EVENT IOCTL。
| [输入] | type | 事件的类型。 | 
| [输入] | id | 事件源的 ID。 | 
| [输入] | flags | 事件标志。 | 
| 
 | virtualinherited | 
等待直到 element 处理完所有输出 plane buffer。
扩展 V4l2Element 的对象必须实现此方法,因为空闲条件是组件特定的。
| [输入] | max_wait_ms | 最大等待时间,单位为毫秒。 | 
在 NvVideoConverter 中重新实现。
| 
 | 继承自 | 
指向应用程序特定数据的指针。
定义于文件 NvV4l2Element.h 的第 169 行。
| 
 | 继承自 | 
| 
 | protectedinherited | 
Capture plane buffer 的像素格式。
定义于文件 NvV4l2Element.h 的第 182 行。
| 
 | protectedinherited | 
指定组件的名称,用于调试。
定义于文件 NvElement.h 的第 122 行。
| 
 | protectedinherited | 
指定使用 v4l2_open 打开的设备的文件描述符 (FD)。
定义于文件 NvV4l2Element.h 的第 179 行。
| 
 | protectedinherited | 
| 
 | 继承自 | 
| 
 | protectedinherited | 
Output plane buffer 的像素格式。
定义于文件 NvV4l2Element.h 的第 181 行。
| 
 | protectedinherited | 
Element 的 Profiler。
定义于文件 NvElement.h 的第 124 行。