开始研究海思码率控制器各个参数对图像质量的影响,这里记录一下,各参数含义如下:

#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版权协议,转载请附上原文出处链接及本声明。原文链接:《海思码率控制器各参数说明》

海思码率控制器各参数说明相关推荐

  1. 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)

    目录 前言: 第一部分: 第二部分: 第三部分: 第四部分: 前言: 我在某个海思主控的项目中需要使用SPI接口来驱动一块液晶屏,液晶屏主控为 st7789,分辨率 240x240,图像格式 RGB5 ...

  2. 海思芯片资料,Hi3518A处理器参数说明

    Hi3518A作为新一代HD IP摄像机SOC,集成新一代ISP,优化后的编码前图像处理算法和新一代H.264编码器,同时采用先进低功耗工艺和内部的低功耗架构设计,这一切将使得Hi3518A在低码率, ...

  3. 海思SDK学习(7)海思媒体处理软件平台MMP(6)视频编码VENC

    视频编码 1.概述 VENC模块,即视频编码模块.本模块支持多路实时编码,且每路编码独立,编码协议和编码profile 可以不同.本模块支持视频编码同时,调度Region 模块对编码图像内容进行叠加和 ...

  4. 52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式)1

    52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式) 2021/3/22 18:00 请严重注意: 本文所使用的的SDK是:Hi3516CV500R001C02SP ...

  5. 海思3559A sample的整体架构

    sample的整体架构 1.sample的整体架构: sample中有很多个例程,所以有很多个main函数,common是通用性的主题函数,我们分析的是sample_venc 2.基本的架构是:ven ...

  6. 海思Hi3511芯片参数和工作原理介绍

    Hi3511芯片参数 处理器系统: Hi3511/Hi3512处理器系统是基于高性能的ARM926EJ-S处理器平台搭建,处理器系统主要包含以下几个部分: ARM926 处理器:Hi3511/Hi35 ...

  7. 1.海思项目整理 编译烧录+启动参数+sample编译+bayeRGBYUV+MPP(VB+VI+VPSS)

    1.1.2.检测开发板 (4)SecureCRT监视打开,开发板开机,自动挂载到/home/aston/rootfs中 (5)自动加入/mnt中,执行./sample_venc即可 (6)在vlc中输 ...

  8. 51-20210316华为海思Hi3516DV300的linux系统编译1(SPI模式)

    51-20210316华为海思Hi3516DV300的linux系统编译 2021/3/16 10:42 https://xueqiu.com/7970718062/159110439 官井想开挖掘机 ...

  9. 海思3518E sample的整体架构venc层源码分析

    1.sample的整体架构 -> sample其实是很多个例程,所以有很多个main.sample里面不止一个程序. -> 每一个例程面向一个典型应用,common是通用性主体函数,com ...

  10. 海思3518E开发笔记2.7——海思VENC(Video Encode)模块详解

    目录 海思Video Encode模块架构介绍 海思Video Encode相关概念 码率控制 海思Video Encode模块功能介绍 编码通道 ROI 裁剪编码 函数调用关系 相关数据结构 流程分 ...

最新文章

  1. Java网页数据采集器[下篇-数据查询]【转载】
  2. surging 微服务引擎 1.0 正式发布
  3. fastadmin绑定edit.html,FAST-ADMIN 根据生成命令行修改页面
  4. hnu 暑期实训之蛇形矩阵
  5. python半径为2.11的圆球的体积_python 学习笔记 11 -- 使用参数使你的程序变得更性感...
  6. Win + Appium + Android/IOS + Python环境搭建
  7. ubuntu-Linux系统读取USB摄像头数据(uvc)
  8. MAC版文本编辑(记事本),连显示行号的功能都没有
  9. python爬虫实例项目大全-GitHub 上有哪些优秀的 Python 爬虫项目?
  10. 学习光线跟踪一样的自3D表征Ego3RT
  11. 百度爱番番数据分析体系的架构与实践
  12. 自动统计文件夹下所有音频时长与个数
  13. 多 UI 版本网页五子棋实现
  14. 语句摘抄——第13周
  15. mysql存储手机号
  16. 聚合广告SDK文档(Kotlin)
  17. windows虚机环境下,如何快速有效的删除大文件夹?
  18. <Leetcode>算法初步(回顾)
  19. 数据结构与算法精选面试50题(附答案)
  20. 51单片机入门——STC89C52RC控制步进电机进行转动、调速

热门文章

  1. 数据同步工具ETL-kettle使用
  2. windows XP虚拟机安装
  3. 语音提示倒计时小工具
  4. 批量创建文件夹-批处理(一)
  5. Julia Pro国内下载地址
  6. html 点击按钮刷新验证码,HTML点击刷新验证码
  7. win10注册mscomm32.ocx失败解决方法
  8. 文件格式介绍:文本,图片,音频,视频
  9. 最好用的伪原创工具手机app
  10. uigetfile使用方法