海思码率控制器各参数说明
开始研究海思码率控制器各个参数对图像质量的影响,这里记录一下,各参数含义如下:
#ifndef __HI_COMM_RC_H__
#define __HI_COMM_RC_H__#include "hi_defines.h"#ifdef __cplusplus
#if __cplusplus
extern "C"{#endif
#endif /* __cplusplus */typedef HI_U32 HI_FR32;typedef enum hiVENC_RC_MODE_E
{VENC_RC_MODE_H264CBR = 1, VENC_RC_MODE_H264VBR, VENC_RC_MODE_H264AVBR, VENC_RC_MODE_H264FIXQP,VENC_RC_MODE_H264QPMAP, VENC_RC_MODE_MJPEGCBR, VENC_RC_MODE_MJPEGVBR, VENC_RC_MODE_MJPEGFIXQP, VENC_RC_MODE_H265CBR, VENC_RC_MODE_H265VBR, VENC_RC_MODE_H265AVBR,VENC_RC_MODE_H265FIXQP,VENC_RC_MODE_H265QPMAP, VENC_RC_MODE_BUTT,}VENC_RC_MODE_E;typedef enum hiVENC_RC_QPMAP_MODE_E
{VENC_RC_QPMAP_MODE_MEANQP= 0, VENC_RC_QPMAP_MODE_MINQP , VENC_RC_QPMAP_MODE_MAXQP, VENC_RC_QPMAP_MODE_BUTT,
}VENC_RC_QPMAP_MODE_E;typedef struct hiVENC_ATTR_H264_FIXQP_S
{HI_U32 u32Gop; /*H264的gop值,范围[1,65536]. */HI_U32 u32SrcFrmRate; /* vi输入帧率 */HI_FR32 fr32DstFrmRate ; /* 编码器输出帧率 */ HI_U32 u32IQp; /* I帧的QP值 */HI_U32 u32PQp; /* P帧的QP值*/HI_U32 u32BQp; /* B帧的QP值 */
} VENC_ATTR_H264_FIXQP_S;typedef struct hiVENC_ATTR_H264_CBR_S
{HI_U32 u32Gop; /*H364 CBR的GOP值 */HI_U32 u32StatTime; /* 码率统计时间 */HI_U32 u32SrcFrmRate; /* VI输入帧率 */HI_FR32 fr32DstFrmRate ; /* 编码器输出帧率 */ HI_U32 u32BitRate; /* 平均码率,[2,102400] */HI_U32 u32FluctuateLevel; /* 最大码率相对于平均码率的波动等级,保留;[1,5] */
} VENC_ATTR_H264_CBR_S; typedef struct hiVENC_ATTR_H264_VBR_S
{HI_U32 u32Gop; /*GOP值 */HI_U32 u32StatTime; /* 码率统计时间 */HI_U32 u32SrcFrmRate; /* vi输出帧率 */HI_FR32 fr32DstFrmRate ; /* 编码器输出帧率 */ HI_U32 u32MaxBitRate; /* 最大码率 */ HI_U32 u32MaxQp; /* P B的最大QP值 */HI_U32 u32MinQp; /* P B的最小QP值 */HI_U32 u32MinIQp; /* I的最小QP值 */
}VENC_ATTR_H264_VBR_S;typedef struct hiVENC_ATTR_H264_AVBR_S
{HI_U32 u32Gop; /*GOP值 */HI_U32 u32StatTime; /* t码率统计时间 */HI_U32 u32SrcFrmRate; /* vi输入帧率 */HI_FR32 fr32DstFrmRate ; /* 编码器输出帧率 */ HI_U32 u32MaxBitRate; /* 最大码率 */
}VENC_ATTR_H264_AVBR_S;typedef struct hiVENC_ATTR_H264_QPMAP_S{HI_U32 u32Gop; /*GOP值 */HI_U32 u32StatTime; /* 码率统计时间 */HI_U32 u32SrcFrmRate; /* vi输入帧率 */HI_FR32 fr32DstFrmRate ; /* 编码器输出帧率 */ VENC_RC_QPMAP_MODE_E enQpMapMode; /* CU32或CU64的QP值的取值方式 */HI_BOOL bQpMapAbsQp; /* CU32或CU64的QP.HI_FALSE: 相对QP.HI_TURE: 绝对QP.*/HI_U32 u32Reserved; /* 保留字段 */ }VENC_ATTR_H264_QPMAP_S;typedef struct hiVENC_ATTR_H264_CBR_S VENC_ATTR_H265_CBR_S;
typedef struct hiVENC_ATTR_H264_VBR_S VENC_ATTR_H265_VBR_S;
typedef struct hiVENC_ATTR_H264_AVBR_S VENC_ATTR_H265_AVBR_S;
typedef struct hiVENC_ATTR_H264_FIXQP_S VENC_ATTR_H265_FIXQP_S;
typedef struct hiVENC_ATTR_H264_QPMAP_S VENC_ATTR_H265_QPMAP_S;typedef struct hiVENC_ATTR_MJPEG_FIXQP_S
{HI_U32 u32SrcFrmRate; /* vi输入帧率*/HI_FR32 fr32DstFrmRate; /* 编码器输出帧率 */HI_U32 u32Qfactor; /* MJPEG的编码的Qfactor:[1,99]*/
}VENC_ATTR_MJPEG_FIXQP_S;typedef struct hiVENC_ATTR_MJPEG_CBR_S
{HI_U32 u32StatTime; /* 编码统计时间 */HI_U32 u32SrcFrmRate; /* vi输入帧率 */HI_FR32 fr32DstFrmRate ; /* 编码器输出帧率 */HI_U32 u32BitRate; /* 平均码率*/HI_U32 u32FluctuateLevel; /* 最大码率相对于平均码率的波动等级,保留; 1-5: 10%-50%. 1: SDK optimized, recommended; */
} VENC_ATTR_MJPEG_CBR_S;typedef struct hiVENC_ATTR_MJPEG_VBR_S
{HI_U32 u32StatTime; /* 码率统计时间 */HI_U32 u32SrcFrmRate; /* vi输入帧率 */HI_FR32 fr32DstFrmRate; /* 编码器输出帧率 */HI_U32 u32MaxBitRate; /* 最大码率*/HI_U32 u32MaxQfactor; /* 最大量化因子[1, 99] */HI_U32 u32MinQfactor; /* 最小量化因子[1, 99] */
}VENC_ATTR_MJPEG_VBR_S;typedef struct hiVENC_RC_ATTR_S
{VENC_RC_MODE_E enRcMode; /*the type of rc*/union{VENC_ATTR_H264_CBR_S stAttrH264Cbr;VENC_ATTR_H264_VBR_S stAttrH264Vbr;VENC_ATTR_H264_AVBR_S stAttrH264AVbr;VENC_ATTR_H264_FIXQP_S stAttrH264FixQp;VENC_ATTR_H264_QPMAP_S stAttrH264QpMap;VENC_ATTR_MJPEG_CBR_S stAttrMjpegeCbr;VENC_ATTR_MJPEG_VBR_S stAttrMjpegeVbr; VENC_ATTR_MJPEG_FIXQP_S stAttrMjpegeFixQp;VENC_ATTR_H265_CBR_S stAttrH265Cbr;VENC_ATTR_H265_VBR_S stAttrH265Vbr;VENC_ATTR_H265_AVBR_S stAttrH265AVbr;VENC_ATTR_H265_FIXQP_S stAttrH265FixQp;VENC_ATTR_H265_QPMAP_S stAttrH265QpMap;}; HI_VOID* pRcAttr ; /*the rc attribute which could be specified by user*/}VENC_RC_ATTR_S;typedef enum hiRC_SUPERFRM_MODE_E
{SUPERFRM_NONE=0, /* 无特殊策略 */SUPERFRM_DISCARD, /* 丢弃超大帧 */SUPERFRM_REENCODE, /* 重编超大帧*/SUPERFRM_BUTT
}VENC_SUPERFRM_MODE_E;typedef struct hiVENC_PARAM_H264_CBR_S
{HI_U32 u32MinIprop; /*最小IP帧码率的比值 */ HI_U32 u32MaxIprop; /* 醉倒IP帧码率的比值 */HI_U32 u32MaxQp; /* PB帧的最大QP */HI_U32 u32MinQp; /* PB帧的最小QP */HI_U32 u32MaxIQp; /* I帧的最大QP*/ HI_U32 u32MinIQp; /* I帧的最小QP*/HI_S32 s32QualityLevel; /* 质量等级。数值越小表示质量越好 */HI_S32 s32MaxReEncodeTimes; /*每帧重复编码次数,0表示不进行。[0, 3]*/ HI_BOOL bQpMapEn;
}VENC_PARAM_H264_CBR_S;typedef struct hiVENC_PARAM_H264_VBR_S
{HI_S32 s32ChangePos; /* VBR开始调整QP时的码率相对于最大码率的比例[50, 100] */HI_U32 u32MinIprop; /* 最小IP帧比例*/ HI_U32 u32MaxIprop; /* 最大IP帧比例 */ HI_S32 s32MaxReEncodeTimes; /* 重复编码的次数 [0, 3]*/ HI_BOOL bQpMapEn; /*是否是能QpMap功能*/
}VENC_PARAM_H264_VBR_S;typedef struct hiVENC_PARAM_H264_AVBR_S
{HI_S32 s32ChangePos; /* AVBR开始调整是的码率相对于最大码率的比值 */HI_U32 u32MinIprop; /* 最小IP帧的比例 */ HI_U32 u32MaxIprop; /* 最大IP帧的比例 */ HI_S32 s32MaxReEncodeTimes; /* 重复编码次数 [0, 3]*/ HI_BOOL bQpMapEn; HI_S32 s32MinStillPercent; /* 静止状态下的目标码率的最小百分比 */HI_U32 u32MaxStillQP; /* 静止状态下的醉的I帧QP值*/HI_U32 u32MinStillPSNR; /* reserved */HI_U32 u32MaxQp; /* PB帧的最大QP */HI_U32 u32MinQp; /* PB帧的最小QP */HI_U32 u32MaxIQp; /* 最大I帧QO */HI_U32 u32MinIQp; /* 最小I帧QP */
} VENC_PARAM_H264_AVBR_S;typedef struct hiVENC_PARAM_MJPEG_CBR_S
{HI_U32 u32MaxQfactor; /* 帧最大Qfactor,用于钳位质量*/HI_U32 u32MinQfactor; /* 帧最小Qfactor,用于钳位质量 */
}VENC_PARAM_MJPEG_CBR_S;typedef struct hiVENC_PARAM_MJPEG_VBR_S
{HI_S32 s32ChangePos; /* VBR 开始调整 Qp 时的码率相对于最大码率的比例 */
}VENC_PARAM_MJPEG_VBR_S;typedef struct hiVENC_PARAM_H265_CBR_S
{HI_U32 u32MinIprop; /* 最小IP帧比例*/ */ HI_U32 u32MaxIprop; /* 最大IP帧比例 */HI_U32 u32MaxQp; /* PB帧的最大QP */HI_U32 u32MinQp; /* PB帧的最小QP*/HI_U32 u32MaxIQp; /* I帧的QP值 */ HI_U32 u32MinIQp; /* I帧的最小QP*/ */HI_S32 s32QualityLevel; /* 图像质量,数值越小质量越好[1,5] */HI_S32 s32MaxReEncodeTimes; /*最大重复编码次数 [0, 3]*/ HI_BOOL bQpMapEn; VENC_RC_QPMAP_MODE_E enQpMapMode;
}VENC_PARAM_H265_CBR_S;typedef struct hiVENC_PARAM_H265_VBR_S
{HI_S32 s32ChangePos; /* VBR 开始调整 Qp 时的码率相对于最大码率的比例 */HI_U32 u32MinIprop; /* 最小IP帧比例*/ */ HI_U32 u32MaxIprop; /* 最大IP帧比例 */ HI_S32 s32MaxReEncodeTimes; /* 重复编码的次数 [0, 3]*/HI_BOOL bQpMapEn; VENC_RC_QPMAP_MODE_E enQpMapMode;
}VENC_PARAM_H265_VBR_S;typedef struct hiVENC_PARAM_H265_AVBR_S
{HI_S32 s32ChangePos; /* AVBR 开始调整 Qp 时的码率相对于最大码率的比例 */HI_U32 u32MinIprop; /* 最小IP帧的比例 */ HI_U32 u32MaxIprop; /* 最大IP帧的比例 */ HI_S32 s32MaxReEncodeTimes; /* 重复编码的次数 [0, 3]*/ HI_BOOL bQpMapEn; VENC_RC_QPMAP_MODE_E enQpMapMode;HI_S32 s32MinStillPercent; /* 静止状态下的目标码率的最小百分比 */HI_U32 u32MaxStillQP; /* 静止状态下的子最大的I帧QP值*/*/HI_U32 u32MinStillPSNR; /* 保留,暂时无效 */HI_U32 u32MaxQp; /* PB帧的最大QP*/HI_U32 u32MinQp; /* PB帧的最小QP */HI_U32 u32MaxIQp; /* I帧的最大QP */HI_U32 u32MinIQp; /* I帧的最小QP*/} VENC_PARAM_H265_AVBR_S;typedef struct hiVENC_RC_PARAM_S
{ HI_U32 u32ThrdI[RC_TEXTURE_THR_SIZE]; /* I帧宏块级码率控制的mad门限*/HI_U32 u32ThrdP[RC_TEXTURE_THR_SIZE]; /* P帧宏块级码率控制的mad门限*/HI_U32 u32ThrdB[RC_TEXTURE_THR_SIZE]; /* B帧宏块级码率控制的mad门限*/HI_U32 u32QpDeltaLevelI[RC_TEXTURE_THR_SIZE]; /* I 帧宏块级码率控制的 mad 每级 QpDelta level 值。 */HI_U32 u32QpDeltaLevelP[RC_TEXTURE_THR_SIZE]; /* P 帧宏块级码率控制的 mad 每级 QpDelta level 值。HI_U32 u32QpDeltaLevelB[RC_TEXTURE_THR_SIZE]; /* B 帧宏块级码率控制的 mad 每级 QpDelta level 值。HI_U32 u32RowQpDelta; /* 在宏块级码率控制时,每一行宏块的起始 Qp 相对于帧起始 Qp 的波动幅度值。[0, 10] */HI_S32 s32FirstFrameStartQp; /* 设置第一帧的起始QO值 */union{VENC_PARAM_H264_CBR_S stParamH264Cbr;VENC_PARAM_H264_VBR_S stParamH264VBR;VENC_PARAM_H264_AVBR_S stParamH264AVbr;VENC_PARAM_MJPEG_CBR_S stParamMjpegCbr;VENC_PARAM_MJPEG_VBR_S stParamMjpegVbr;VENC_PARAM_H265_CBR_S stParamH265Cbr;VENC_PARAM_H265_VBR_S stParamH265Vbr; VENC_PARAM_H265_AVBR_S stParamH265AVbr; };HI_VOID* pRcParam; /*RC parameter which could be specified by usrer*/
}VENC_RC_PARAM_S;typedef enum hiVENC_FRAMELOST_MODE_E
{ FRMLOST_NORMAL=0, /* 瞬时码率超过阈值时正常丢帧 */ FRMLOST_PSKIP, /* 瞬时码率超过阈值时编码pskip帧*/ FRMLOST_BUTT,
}VENC_FRAMELOST_MODE_E;typedef struct hiVENC_PARAM_FRAMELOST_S
{ HI_BOOL bFrmLostOpen; /* 瞬时码率超过阈值时丢帧开关 */HI_U32 u32FrmLostBpsThr; /* 丢帧阈值 */VENC_FRAMELOST_MODE_E enFrmLostMode; /* 瞬时码率超过阈值时的丢帧模式*/HI_U32 u32EncFrmGaps; /*丢帧间隔,默认0*/
}VENC_PARAM_FRAMELOST_S;typedef enum hiVENC_RC_PRIORITY_E
{VENC_RC_PRIORITY_BITRATE_FIRST = 1, /* 目标码率优先 */VENC_RC_PRIORITY_FRAMEBITS_FIRST, /* 超大帧阈值优先 */VENC_RC_PRIORITY_BUTT,
} VENC_RC_PRIORITY_E;typedef struct hiVENC_SUPERFRAME_CFG_S
{ VENC_SUPERFRM_MODE_E enSuperFrmMode; /* 超大帧处理模式, 默认SUPERFRM_NONE;[SUPERFRM_NONE,SUPERFRM_DISCARD,SUPERFRM_REENCODE]*/HI_U32 u32SuperIFrmBitsThr; /* I帧超大阈值;默认500000 */ HI_U32 u32SuperPFrmBitsThr; /* P帧超大阈值;默认500000 */ HI_U32 u32SuperBFrmBitsThr; /* B帧超大阈值;默认500000 */ VENC_RC_PRIORITY_E enRcPriority; /* 码率优先级,默认为VENC_RC_PRIORITY_BITRATE_FIRST */
}VENC_SUPERFRAME_CFG_S;#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */#endif /* __HI_COMM_RC_H__ */
各个参数的具体影响情况还没有实际测试,估计接下来的一周就做这个工作了。
————
版权声明:本文为CSDN博主「sdsszk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:《海思码率控制器各参数说明》
海思码率控制器各参数说明相关推荐
- 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)
目录 前言: 第一部分: 第二部分: 第三部分: 第四部分: 前言: 我在某个海思主控的项目中需要使用SPI接口来驱动一块液晶屏,液晶屏主控为 st7789,分辨率 240x240,图像格式 RGB5 ...
- 海思芯片资料,Hi3518A处理器参数说明
Hi3518A作为新一代HD IP摄像机SOC,集成新一代ISP,优化后的编码前图像处理算法和新一代H.264编码器,同时采用先进低功耗工艺和内部的低功耗架构设计,这一切将使得Hi3518A在低码率, ...
- 海思SDK学习(7)海思媒体处理软件平台MMP(6)视频编码VENC
视频编码 1.概述 VENC模块,即视频编码模块.本模块支持多路实时编码,且每路编码独立,编码协议和编码profile 可以不同.本模块支持视频编码同时,调度Region 模块对编码图像内容进行叠加和 ...
- 52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式)1
52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式) 2021/3/22 18:00 请严重注意: 本文所使用的的SDK是:Hi3516CV500R001C02SP ...
- 海思3559A sample的整体架构
sample的整体架构 1.sample的整体架构: sample中有很多个例程,所以有很多个main函数,common是通用性的主题函数,我们分析的是sample_venc 2.基本的架构是:ven ...
- 海思Hi3511芯片参数和工作原理介绍
Hi3511芯片参数 处理器系统: Hi3511/Hi3512处理器系统是基于高性能的ARM926EJ-S处理器平台搭建,处理器系统主要包含以下几个部分: ARM926 处理器:Hi3511/Hi35 ...
- 1.海思项目整理 编译烧录+启动参数+sample编译+bayeRGBYUV+MPP(VB+VI+VPSS)
1.1.2.检测开发板 (4)SecureCRT监视打开,开发板开机,自动挂载到/home/aston/rootfs中 (5)自动加入/mnt中,执行./sample_venc即可 (6)在vlc中输 ...
- 51-20210316华为海思Hi3516DV300的linux系统编译1(SPI模式)
51-20210316华为海思Hi3516DV300的linux系统编译 2021/3/16 10:42 https://xueqiu.com/7970718062/159110439 官井想开挖掘机 ...
- 海思3518E sample的整体架构venc层源码分析
1.sample的整体架构 -> sample其实是很多个例程,所以有很多个main.sample里面不止一个程序. -> 每一个例程面向一个典型应用,common是通用性主体函数,com ...
- 海思3518E开发笔记2.7——海思VENC(Video Encode)模块详解
目录 海思Video Encode模块架构介绍 海思Video Encode相关概念 码率控制 海思Video Encode模块功能介绍 编码通道 ROI 裁剪编码 函数调用关系 相关数据结构 流程分 ...
最新文章
- Java网页数据采集器[下篇-数据查询]【转载】
- surging 微服务引擎 1.0 正式发布
- fastadmin绑定edit.html,FAST-ADMIN 根据生成命令行修改页面
- hnu 暑期实训之蛇形矩阵
- python半径为2.11的圆球的体积_python 学习笔记 11 -- 使用参数使你的程序变得更性感...
- Win + Appium + Android/IOS + Python环境搭建
- ubuntu-Linux系统读取USB摄像头数据(uvc)
- MAC版文本编辑(记事本),连显示行号的功能都没有
- python爬虫实例项目大全-GitHub 上有哪些优秀的 Python 爬虫项目?
- 学习光线跟踪一样的自3D表征Ego3RT
- 百度爱番番数据分析体系的架构与实践
- 自动统计文件夹下所有音频时长与个数
- 多 UI 版本网页五子棋实现
- 语句摘抄——第13周
- mysql存储手机号
- 聚合广告SDK文档(Kotlin)
- windows虚机环境下,如何快速有效的删除大文件夹?
- <Leetcode>算法初步(回顾)
- 数据结构与算法精选面试50题(附答案)
- 51单片机入门——STC89C52RC控制步进电机进行转动、调速