视频编码结构体。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | struct VencConfig { uint32_t maxPicWidth = MAX_VENC_WIDTH; uint32_t maxPicHeight = MAX_VENC_HEIGHT; uint32_t width = 0; uint32_t height = 0; // stream format renference acldvppStreamFormat MxbaseStreamFormat outputVideoFormat = MXBASE_STREAM_FORMAT_H264_MAIN_LEVEL; // output format renference acldvppPixelFormat MxbasePixelFormat inputImageFormat = MXBASE_PIXEL_FORMAT_YUV_SEMIPLANAR_420; uint32_t keyFrameInterval = 30; uint32_t deviceId = 0; // device id uint32_t channelId = 0; pthread_t encoderThreadId = 0; bool stopEncoderThread = false; uint32_t srcRate = 0; uint32_t rcMode = 0; uint32_t shortTermStatsTime = 60; uint32_t longTermStatsTime = 120; uint32_t longTermMaxBitRate = 300; uint32_t longTermMinBitRate = 0; uint32_t maxBitRate = 0; uint32_t ipProp = 0; uint32_t sceneMode = 0; uint32_t displayRate = 30; uint32_t statsTime = HI_AENC_CHN_ATTR_STATS_TIME; uint32_t firstFrameStartQp = FIRST_FRAME_START_QP; std::vector<uint32_t> thresholdI = {0, 0, 0, 0, 0, 0, 0, 0, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE}; std::vector<uint32_t> thresholdP = {0, 0, 0, 0, 0, 0, 0, 0, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE}; std::vector<uint32_t> thresholdB = {0, 0, 0, 0, 0, 0, 0, 0, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE, THRESHOLD_OF_ENCODE_RATE}; uint32_t direction = 8; uint32_t rowQpDelta = 1; std::function<void(std::shared_ptr<uint8_t>, uint32_t)>* userData; std::function<void(std::shared_ptr<uint8_t>, uint32_t, void**)>* userDataWithInput; std::function<void(std::shared_ptr<uint8_t>, uint32_t, void**, void*)>* userDataWithInputFor310P; }; |
参数名 |
输入/输出 |
说明 |
---|---|---|
maxPicWidth |
输入 |
设置最大预留的编码通道宽度,默认为MAX_VENC_WIDTH = 4096 |
maxPicHeight |
输入 |
设置最大预留的编码通道高度,默认为MAX_VENC_HEIGHT = 4096 |
width |
输入 |
输入宽度。 |
height |
输入 |
输入高度。 |
outputVideoFormat |
输入 |
输出码流格式。 |
inputImageFormat |
输入 |
输入图片格式。 |
keyFrameInterval |
输入 |
I帧间隔。 |
deviceId |
输入 |
设备编号。 |
channelId |
输入 |
解码通道ID。 |
encoderThreadId |
输入 |
回调线程编号。 |
stopEncoderThread |
输入 |
回调线程是否在运行的标记位。 |
srcRate |
输入 |
输入码流帧率,单位fps。 |
rcMode |
输入 |
指定码率控制模式。 |
shortTermStatsTime |
输入 |
码率短期统计时间,单位为秒,默认值为“60”,取值范围:[1, 120]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 |
longTermStatsTime |
输入 |
码率长期统计时间,单位为分钟,默认值为“120”,取值范围:[1, 1440]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 |
longTermMaxBitRate |
输入 |
编码器输出长期最大码率,单位为kbps,默认值为“300”。取值范围:[2, maxBitRate]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 |
longTermMinBitRate |
输入 |
编码器输出长期最小码率,单位为kbps,默认值为“0”。取值范围:[0, longTermMaxBitRate]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 |
maxBitRate |
输入 |
输出码率,单位kbps。 |
ipProp |
输入 |
一个GOP内单个I帧bit数和单个P帧bit数的比例。 |
sceneMode |
输入 |
场景模式。默认值为“0”。
该参数仅在Atlas 推理系列产品上生效。 说明:
当输出视频格式设置为“H.264”并且“sceneMode”设置为“1”时,由于H.264不支持高码率下运动场景,sceneMode值将自动切换成“0”。 |
displayRate |
输入 |
输出视频的播放帧率,默认值为“30”,取值范围[1, 120]。 该参数仅在Atlas 推理系列产品上生效。 |
statsTime |
输入 |
码率统计时间,以秒为单位,默认值为“1”,取值范围:[1, 60]。 该参数仅在Atlas 推理系列产品上生效。 |
firstFrameStartQp |
输入 |
设置第一帧的起始Qp值,默认值为“32”,取值范围:[0, 47]。 该参数仅在Atlas 推理系列产品上生效。 |
thresholdI |
输入 |
I帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。取值范围:[0,255]。默认值为[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为“0”,表示关闭当前级;加方向的数值设置为“255”,表示关闭当前级。 该参数仅在Atlas 推理系列产品上生效。 |
thresholdP |
输入 |
P帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。取值范围:[0,255]。默认值为:[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为“0”,表示关闭当前级;加方向的数值设置为“255”,表示关闭当前级。 该参数仅在Atlas 推理系列产品上生效。 |
thresholdB |
输入 |
B帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。取值范围:[0,255]。默认值为[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为“0”,表示关闭当前级;加方向的数值设置为“255”,表示关闭当前级。 该参数仅在Atlas 推理系列产品上生效。 |
direction |
输入 |
在基于纹理宏块级码率控制时,用于控制加减方向。默认值为“8”,取值范围:[0, 16]。 该参数仅在Atlas 推理系列产品上生效。 |
rowQpDelta |
输入 |
行级码率控制调节幅度是一帧内行级调节的最大范围,其中行级以宏块行为单位。调节幅度越大,允许行级调整的QP范围越大,码率越平稳。 对于图像复杂度分布不均匀的场景,行级码率控制调节幅度设置过大会带来图像质量不均匀。 默认值为“1”,取值范围:[0, 10],设置为“0”表示关闭基于行的宏块级码率控制。 该参数仅在Atlas 推理系列产品上生效。 |
userData |
输入 |
用户自定义数据。 |
userDataWithInput |
输入 |
用户自定义数据(待输入指针)。 |
userDataWithInputFor310P; |
输入 |
Atlas 推理系列产品上使用的用户自定义数据(待输入指针) |