VencConfig

功能

视频编码结构体。

结构定义

 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”

  • 0:摄像机不运动或周期性连续运动的场景,支持H.264/H.265。
  • 1:高码率下运动场景,支持H.265。

该参数仅在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 推理系列产品上使用的用户自定义数据(待输入指针)