Jetson Linux API 参考

32.7.4 Release
NvVideoEncoder.h
前往此文件的文档。
1 /*
2  * 版权所有 (c) 2016-2021, NVIDIA CORPORATION。保留所有权利。
3  *
4  * 只要满足以下条件,就允许以源代码和二进制形式重新分发和使用,无论是否经过
5  * 修改:
6  *
7  * * 源代码的重新分发必须保留上述版权声明,
8  * 此条件列表以及以下免责声明。
9  *
10  * * 二进制形式的重新分发必须在随发行版提供的
11  * 文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。
12  *
13  * * 未经事先书面许可,不得使用 NVIDIA CORPORATION 的名称及其
14  * 贡献者的名称来认可或推广源自
15  * 此软件的产品。
16  *
17  * 本软件由版权持有者“按原样”提供,并且不作任何明示或暗示的担保,包括但不限于
18  * 对适销性和特定用途适用性的暗示担保。
19  * 在任何情况下,版权所有者或
20  * 贡献者均不对任何直接、间接、附带、特殊、
21  * 惩戒性或后果性损害(包括但不限于
22  * 替代商品或服务的采购;使用、数据或
23  * 利润损失;或业务中断)承担任何责任,无论其原因和任何责任理论
24  * (包括疏忽或其他原因),无论以合同、严格责任还是侵权行为
25  * (包括疏忽或其他原因)引起,均不承担任何责任,即使已被告知可能发生此类损害。
26  *
27  */
28 
45 #ifndef __NV_VIDEO_ENCODER_H__
46 #define __NV_VIDEO_ENCODER_H__
47 
48 #include "NvV4l2Element.h"
49 
60 {
61 public
76  static NvVideoEncoder *createVideoEncoder(const char *name, int flags = 0);
77 
79 
92  int setOutputPlaneFormat(uint32_t pixfmt, uint32_t width, uint32_t height);
105  int setCapturePlaneFormat(uint32_t pixfmt, uint32_t width,
106  uint32_t height, uint32_t sizeimage);
107 
119  int setFrameRate(uint32_t framerate_num, uint32_t framerate_den);
120 
132  int setBitrate(uint32_t bitrate);
133 
145  int setPeakBitrate(uint32_t peak_bitrate);
146 
159  int setProfile(uint32_t profile);
160 
168  int setEncoderCommand(int cmd, int flags);
169 
182  int setLevel(uint32_t level);
183 
196  int setMaxPerfMode(int flag);
211  int setConstantQp(bool enabled_rc);
212 
226 
238  int setIFrameInterval(uint32_t interval);
239 
251  int setIDRInterval(uint32_t interval);
252 
262  int forceIDR();
263 
277 
291  int setSliceLength(v4l2_enc_slice_length_type type, uint32_t length);
292 
305 
320  int setROIParams(uint32_t buffer_index, v4l2_enc_frame_ROI_params & params);
321 
334 
347 
360 
373 
387 
399  int setAV1SsimRdo(bool enabled);
400 
413  int setAV1DisableCDFUpdate(bool disabled);
414 
429  int SetInputMetaParams(uint32_t buffer_index, v4l2_ctrl_videoenc_input_metadata &params);
430 
441  int setVirtualBufferSize(uint32_t size);
442 
453  int setNumReferenceFrames(uint32_t num_frames);
454 
465  int setSliceIntrarefresh(uint32_t interval);
466 
477  int setNumBFrames(uint32_t num);
478 
490  int setInsertSpsPpsAtIdrEnabled(bool enabled);
491 
503  int setCABAC(bool enabled);
504 
516  int setSliceLevelEncode(bool enabled);
517 
528 
544  int getMetadata(uint32_t buffer_index,
546 
562  int getMotionVectors(uint32_t buffer_index,
564 
580  int setQpRange(uint32_t MinQpI, uint32_t MaxQpI, uint32_t MinQpP,
581  uint32_t MaxQpP, uint32_t MinQpB, uint32_t MaxQpB);
582 
594  int setSampleAspectRatioWidth(uint32_t sar_width);
595 
607  int setSampleAspectRatioHeight(uint32_t sar_height);
608 
620  int setInsertVuiEnabled(bool enabled);
621 
633  int setExtendedColorFormat(bool enabled);
634 
646  int setInsertAudEnabled(bool enabled);
647 
659  int setAlliFramesEncode(bool enabled);
660 
672  int setPocType(uint32_t pocType);
673 
688  int setInitQP(uint32_t IinitQP, uint32_t PinitQP, uint32_t BinitQP);
689 
701  int setFramesToEncode(uint32_t framesToEncode);
702 
714  int setChromaFactorIDC(uint8_t crfactor);
715 
727  int setLossless(bool enabled);
728 
735  int DevicePoll(v4l2_ctrl_video_device_poll *devicepoll);
736 
741  int SetPollInterrupt();
742 
747  int ClearPollInterrupt();
748 
749 private
753  NvVideoEncoder(const char *name, int flags);
754 
755  static const NvElementProfiler::ProfilerField valid_fields =
759 };
762 #endif
NvVideoEncoder::setChromaFactorIDC
int setChromaFactorIDC(uint8_t crfactor)
设置 H.265 编码器的 Chroma Format IDC。
v4l2_enc_enable_roi_param_
保存配置编码器以进行 ROI 参数编码的参数。
定义: v4l2_nv_extensions.h:2163
NvV4l2Element
定义 V4L2 组件的辅助类。
定义: NvV4l2Element.h:65
NvVideoEncoder::setInsertSpsPpsAtIdrEnabled
int setInsertSpsPpsAtIdrEnabled(bool enabled)
启用/禁用在每个 IDR 处插入 SPS PPS。
NvVideoEncoder::setAV1SsimRdo
int setAV1SsimRdo(bool enabled)
启用基于 AV1 方差的 SSIM RDO。
v4l2_enc_frame_ROI_params_
保存要与 V4L2_CID_MPEG_VIDEOENC_ROI_PARAMS IOCTL 一起使用的编码器帧 ROI 参数。
定义: v4l2_nv_extensions.h:1940
v4l2_enc_slice_length_type
v4l2_enc_slice_length_type
枚举指定切片长度的类型。
定义: v4l2_nv_extensions.h:1820
NvVideoEncoder::setROIParams
int setROIParams(uint32_t buffer_index, v4l2_enc_frame_ROI_params &params)
为将在输出端排队的下一个缓冲区设置感兴趣区域 (ROI) 参数 ...
NvVideoEncoder::setInitQP
int setInitQP(uint32_t IinitQP, uint32_t PinitQP, uint32_t BinitQP)
设置 I/P/B 帧的初始 QP。
NvVideoEncoder::setInsertAudEnabled
int setInsertAudEnabled(bool enabled)
启用/禁用插入 AUD。
NvVideoEncoder::setIFrameInterval
int setIFrameInterval(uint32_t interval)
设置编码器 I 帧间隔。
NvVideoEncoder::setSliceLevelEncode
int setSliceLevelEncode(bool enabled)
为 H264 / HEVC 启用/禁用切片级别编码。
NvVideoEncoder::setIDRInterval
int setIDRInterval(uint32_t interval)
设置编码器 IDR 间隔。
NvVideoEncoder::enableExternalRC
int enableExternalRC(v4l2_enc_enable_ext_rate_ctr &params)
启用外部图片 RC。
v4l2_ctrl_videoenc_outputbuf_metadata_
保存帧的编码器输出元数据,以与 V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL 一起使用。
定义: v4l2_nv_extensions.h:2004
NvVideoEncoder::ClearPollInterrupt
int ClearPollInterrupt()
清除轮询中断,现在如果应用程序调用 Poll,设备应阻塞,直到 ev...
NvVideoEncoder::setHWPresetType
int setHWPresetType(v4l2_enc_hw_preset_type type)
设置编码器 HW 预设类型。
NvElementProfiler::ProfilerField
int ProfilerField
定义: NvElementProfiler.h:79
NvVideoEncoder::setSliceIntrarefresh
int setSliceIntrarefresh(uint32_t interval)
设置切片内刷新间隔参数。
v4l2_enc_temporal_tradeoff_level_type
v4l2_enc_temporal_tradeoff_level_type
指定编码器时间权衡级别的类型。
定义: v4l2_nv_extensions.h:1776
_v4l2_ctrl_video_device_poll
轮询设备。
定义: v4l2_nv_extensions.h:2563
NvVideoEncoder::setPeakBitrate
int setPeakBitrate(uint32_t peak_bitrate)
设置编码器峰值比特率。
v4l2_enc_enable_ext_rps_ctrl_
保存配置编码器以进行外部 RPS 控制的参数,以与 V4L2_CID_MPEG_VIDEOENC... 一起使用
定义: v4l2_nv_extensions.h:2081
NvVideoEncoder::setConstantQp
int setConstantQp(bool enabled_rc)
为编码器设置恒定 QP。
NvVideoEncoder::SetInputMetaParams
int SetInputMetaParams(uint32_t buffer_index, v4l2_ctrl_videoenc_input_metadata &params)
为将在输出平面上排队的下一个缓冲区设置输入元数据参数,索引为 buf...
NvVideoEncoder::setVirtualBufferSize
int setVirtualBufferSize(uint32_t size)
设置编码器的虚拟缓冲区大小。
NvVideoEncoder::setFramesToEncode
int setFramesToEncode(uint32_t framesToEncode)
设置要编码的帧数。
NvVideoEncoder::enableMotionVectorReporting
int enableMotionVectorReporting()
启用视频编码器输出运动矢量元数据报告。
NvVideoEncoder::setEncoderCommand
int setEncoderCommand(int cmd, int flags)
设置编码器命令。
NvVideoEncoder::enableROI
int enableROI(v4l2_enc_enable_roi_param &params)
启用外部 ROI。
NvVideoEncoder::enableExternalRPS
int enableExternalRPS(v4l2_enc_enable_ext_rps_ctr &params)
启用外部 RPS。
v4l2_ctrl_videoenc_outputbuf_metadata_MV_
保存完整帧的运动矢量参数。
定义: v4l2_nv_extensions.h:1969
NvVideoEncoder::setProfile
int setProfile(uint32_t profile)
设置编码器配置文件。
NvVideoEncoder::setSampleAspectRatioWidth
int setSampleAspectRatioWidth(uint32_t sar_width)
为 VUI 编码设置样本宽高比宽度。
NvVideoEncoder::setNumBFrames
int setNumBFrames(uint32_t num)
设置 B 帧与 P 帧的数量。
v4l2_mpeg_video_bitrate_mode
v4l2_mpeg_video_bitrate_mode
定义: v4l2-controls.h:353
NvVideoEncoder::setLevel
int setLevel(uint32_t level)
设置编码器级别。
NvVideoEncoder::enableReconCRC
int enableReconCRC(v4l2_enc_enable_reconcrc_param &params)
启用重建 CRC。
NvElementProfiler::PROFILER_FIELD_LATENCIES
static const ProfilerField PROFILER_FIELD_LATENCIES
定义: NvElementProfiler.h:83
NvVideoEncoder::setQpRange
int setQpRange(uint32_t MinQpI, uint32_t MaxQpI, uint32_t MinQpP, uint32_t MaxQpP, uint32_t MinQpB, uint32_t MaxQpB)
设置 I/P/B 帧的 QP 值。
NvVideoEncoder::DevicePoll
int DevicePoll(v4l2_ctrl_video_device_poll *devicepoll)
在设备上发出 Poll,它会阻塞,直到:a) 要从捕获 o 中出队的东西...
NvVideoEncoder::setMaxPerfMode
int setMaxPerfMode(int flag)
将编码器设置为最大性能模式。
NvVideoEncoder::setCapturePlaneFormat
int setCapturePlaneFormat(uint32_t pixfmt, uint32_t width, uint32_t height, uint32_t sizeimage)
在转换器捕获平面上设置格式。
NvVideoEncoder::setSampleAspectRatioHeight
int setSampleAspectRatioHeight(uint32_t sar_height)
为 VUI 编码设置样本宽高比高度。
NvVideoEncoder::getMotionVectors
int getMotionVectors(uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata_MV &enc_mv_metadata)
获取编码捕获平面缓冲区的运动矢量元数据。
NvVideoEncoder::setFrameRate
int setFrameRate(uint32_t framerate_num, uint32_t framerate_den)
设置编码帧率。
NvVideoEncoder::setOutputPlaneFormat
int setOutputPlaneFormat(uint32_t pixfmt, uint32_t width, uint32_t height)
在编码器输出平面上设置格式。
NvVideoEncoder::setAlliFramesEncode
int setAlliFramesEncode(bool enabled)
启用/禁用所有 i 帧编码。
NvVideoEncoder::setTemporalTradeoff
int setTemporalTradeoff(v4l2_enc_temporal_tradeoff_level_type level)
设置编码器时间权衡。
NvVideoEncoder::createVideoEncoder
static NvVideoEncoder * createVideoEncoder(const char *name, int flags=0)
创建一个名为 name 的新 V4L2 视频编码器对象。
NvVideoEncoder::setExtendedColorFormat
int setExtendedColorFormat(bool enabled)
启用/禁用扩展颜色格式。
NvElementProfiler::PROFILER_FIELD_FPS
static const ProfilerField PROFILER_FIELD_FPS
定义: NvElementProfiler.h:84
NvVideoEncoder::setRateControlMode
int setRateControlMode(enum v4l2_mpeg_video_bitrate_mode mode)
设置编码器码率控制模式。
NvVideoEncoder::setSliceLength
int setSliceLength(v4l2_enc_slice_length_type type, uint32_t length)
设置编码器输出切片长度。
NvVideoEncoder::enableAV1Tile
int enableAV1Tile(v4l2_enc_av1_tile_config &params)
启用 AV1 多Tile 配置。
v4l2_enc_hw_preset_type
v4l2_enc_hw_preset_type
指定编码器 HW 预设类型。
定义: v4l2_nv_extensions.h:1792
NvVideoEncoder::setInsertVuiEnabled
int setInsertVuiEnabled(bool enabled)
启用/禁用插入 VUI。
NvV4l2Element.h
NvElementProfiler::PROFILER_FIELD_TOTAL_UNITS
static const ProfilerField PROFILER_FIELD_TOTAL_UNITS
定义: NvElementProfiler.h:81
NvVideoEncoder::SetPollInterrupt
int SetPollInterrupt()
设置轮询中断,现在如果应用程序调用 Poll,设备不应阻塞,...
v4l2_ctrl_videoenc_input_metadata_
保存编码器帧输入元数据参数。
定义: v4l2_nv_extensions.h:2197
v4l2_enc_av1_tile_config_
保存配置 AV1 编码的 Tile 的参数。
定义: v4l2_nv_extensions.h:2267
NvVideoEncoder::~NvVideoEncoder
~NvVideoEncoder()
NvVideoEncoder::setNumReferenceFrames
int setNumReferenceFrames(uint32_t num_frames)
设置编码器的参考帧数。
v4l2_enc_enable_ext_rate_ctrl_
保存配置编码器以进行外部码率控制模式的参数,以与 V4L2_CID_MPEG_VI... 一起使用
定义: v4l2_nv_extensions.h:2132
NvVideoEncoder::setPocType
int setPocType(uint32_t pocType)
设置编码器图片顺序控制类型。
v4l2_enc_enable_reconcrc_param_
保存配置编码器以进行重建 CRC 编码的参数。
定义: v4l2_nv_extensions.h:2174
NvVideoEncoder::forceIDR
int forceIDR()
强制 IDR 帧。
NvVideoEncoder::setLossless
int setLossless(bool enabled)
为 H.264/H.265 设置无损编码。
NvVideoEncoder::setAV1DisableCDFUpdate
int setAV1DisableCDFUpdate(bool disabled)
在符号解码过程中禁用 AV1 CDF 更新。
NvVideoEncoder::setBitrate
int setBitrate(uint32_t bitrate)
设置编码器比特率。
NvVideoEncoder::getMetadata
int getMetadata(uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata &enc_metadata)
获取编码捕获平面缓冲区的元数据。
NvVideoEncoder::setCABAC
int setCABAC(bool enabled)
为 H264 启用/禁用 CABAC 熵编码。
NvVideoEncoder
定义 V4L2 视频编码器的辅助类。
定义: NvVideoEncoder.h:59
. All rights reserved.