hi3531的h264压缩中修改波特率

typedef struct hiVENC_ATTR_H264_CBR_S

{

HI_U32 u32Gop;

HI_U32 u32StatTime;

HI_U32 u32ViFrmRate;

HI_FR32 fr32TargetFrmRate;

HI_U32 u32BitRate;

HI_U32 u32FluctuateLevel;

} VENC_ATTR_H264_CBR_S;

u32BitRate 平均bitrate,以kbps 为单位。

取值范围:[2, 40960]。

HI_S32 SAMPLE_COMM_VENC_Start(VENC_GRP VencGrp,VENC_CHN VencChn, PAYLOAD_TYPE_E enType, VIDEO_NORM_E enNorm, PIC_SIZE_E enSize, SAMPLE_RC_E enRcMode)

{

HI_S32 s32Ret;

VENC_CHN_ATTR_S stVencChnAttr;

VENC_ATTR_H264_S stH264Attr;

VENC_ATTR_H264_CBR_S    stH264Cbr;

VENC_ATTR_H264_VBR_S    stH264Vbr;

VENC_ATTR_H264_FIXQP_S  stH264FixQp;

VENC_ATTR_MJPEG_S stMjpegAttr;

VENC_ATTR_MJPEG_FIXQP_S stMjpegeFixQp;

VENC_ATTR_JPEG_S stJpegAttr;

SIZE_S stPicSize;

s32Ret = SAMPLE_COMM_SYS_GetPicSize(enNorm, enSize, &stPicSize);

if (HI_SUCCESS != s32Ret)

{

SAMPLE_PRT("Get picture size failed!\n");

return HI_FAILURE;

}

/******************************************

step 1: Greate Venc Group

******************************************/

s32Ret = HI_MPI_VENC_CreateGroup(VencGrp);

if (HI_SUCCESS != s32Ret)

{

SAMPLE_PRT("HI_MPI_VENC_CreateGroup[%d] failed with %#x!\n",\

VencGrp, s32Ret);

return HI_FAILURE;

}

/******************************************

step 2:  Create Venc Channel

******************************************/

stVencChnAttr.stVeAttr.enType = enType;

switch(enType)

{

case PT_H264:

{

stH264Attr.u32MaxPicWidth = stPicSize.u32Width;

stH264Attr.u32MaxPicHeight = stPicSize.u32Height;

stH264Attr.u32PicWidth = stPicSize.u32Width;/*the picture width*/

stH264Attr.u32PicHeight = stPicSize.u32Height;/*the picture height*/

stH264Attr.u32BufSize  = stPicSize.u32Width * stPicSize.u32Height * 2;/*stream buffer size*/

stH264Attr.u32Profile  = 0;/*0: baseline; 1:MP; 2:HP   ? */

stH264Attr.bByFrame = HI_TRUE;/*get stream mode is slice mode or frame mode?*/

stH264Attr.bField = HI_FALSE;  /* surpport frame code only for hi3516, bfield = HI_FALSE */

stH264Attr.bMainStream = HI_TRUE; /* surpport main stream only for hi3516, bMainStream = HI_TRUE */

stH264Attr.u32Priority = 0; /*channels precedence level. invalidate for hi3516*/

stH264Attr.bVIField = HI_FALSE;/*the sign of the VI picture is field or frame. Invalidate for hi3516*/

memcpy(&stVencChnAttr.stVeAttr.stAttrH264e, &stH264Attr, sizeof(VENC_ATTR_H264_S));

if(SAMPLE_RC_CBR == enRcMode)

{

stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264CBR;

stH264Cbr.u32Gop            = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;

stH264Cbr.u32StatTime       = 1; /* stream rate statics time(s) */

stH264Cbr.u32ViFrmRate      = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;/* input (vi) frame rate */

stH264Cbr.fr32TargetFrmRate = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;/* target frame rate */

switch (enSize)

{

case PIC_QCIF:

stH264Cbr.u32BitRate = 256; /* average bit rate */

break;

case PIC_QVGA:    /* 320 * 240 */

case PIC_CIF:

stH264Cbr.u32BitRate = 512;

break;

case PIC_D1:

case PIC_VGA:    /* 640 * 480 */

stH264Cbr.u32BitRate = 1024*2;

                       break;

case PIC_HD720:   /* 1280 * 720 */

stH264Cbr.u32BitRate = 1024*3;

break;

case PIC_HD1080:  /* 1920 * 1080 */

stH264Cbr.u32BitRate = 1024*6;

break;

default :

stH264Cbr.u32BitRate = 1024*4;

break;

}

hi3531的h264压缩中修改波特率

时间: 2024-10-08 20:29:24

hi3531的h264压缩中修改波特率的相关文章

源码中修改Android的开机画面和动画【转】

本文转载自:http://blog.csdn.net/dddxxxx/article/details/54343976 参照文章:http://blog.csdn.net/a345017062/article/details/6222962.http://bbs.gfan.com/android-146253-1-1.html. Android系统开机显示画面分成两个过程,第一个过程从按电源键到Frameworks启动为止.第二个过程从Frameworks启动完成到Launcher程序启动完成.

windows 7中修改用户配置文件的路径

在windows 7中用户配置文件的默认位置是在c:\users文件夹中.我建议最好在安装完操作系统之后就将用户配置文件的默认位置改变到其他分区. Warning在视图更改注册表之前,请备份好注册表相关键值. 1. 将c:\user文件夹Copy到新的位置(默认情况下 "Default" directory 是隐藏的,请到 Tools > Folder Options > View (tab) > Show Hidden files, folders, and dri

在Exchange 2013 OWA登录页面中修改密码

透过OWA登录界面改密码对于使用Exchange的用户来说是一个很有有用的功能. 因为如果用户不在公司域环境中,当密码已经到期登录不了OWA,就没有办法通过OWA中的[选项]来改密码,当开启这项功能后,管理员和用户都可以很方便的处理密码到期的case. 早在Exchange2010的时候,我们需要通过修改CAS服务器的注册表项来实现这个功能.现在的Exchange2013已经内置了该功能,使用前只需要确认该功能属性的状态就可以了. 在最新的Exchange2013 SP1和CU5版本中,此功能在

MySQL在windows系统中修改datadir路径后无法启动问题,报错1067

windows server2008下如何更改MySQL数据库的目录的帖子已经很多了,这里简单介绍一个步骤,如果不成功请先查看其它帖子. 更改默认的mysql数据库目录 将 C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data 改到 D:\MysqlData 1. 建立文件夹 D:\MysqlData 2. 停止 mysql 服务,将 "C:\Documents and Settings\

Ubuntu中修改设备的名字

在虚拟机中装的Ubuntu,开机发现名字很长一串.virtual-还有什么 一串 sudo gedit /etc/hostname sudo gedit /etc/hosts 用这两条命令,把那一串字符修改成你想改的名称,比如Ubuntu. 重启. 解决. Ubuntu中修改设备的名字,布布扣,bubuko.com

MyEclipse中修改servlet模板

1.在MyEclipse目录下搜索com.genuitec.eclipse.wizards,得到搜索结果 com.genuitec.eclipse.wizards_8.4.100.me200912131330.jar(我的位置是:C:\Users\Administrator\AppData\Local\Genuitec\Common\plugins): 2.备份,复制粘贴一份,完全关闭MyEclipse: 3.使用winrar打开com.genuitec.eclipse.wizards_8.4.

Linux系统中修改/etc/profile文件的方法

在Linux系统中etc/profile文件一般是不能更改的,想要更改etc/profile文件就要用一些特殊的技巧进行Linux文件修改.本文就来介绍一下Linux系统中修改/etc/profile文件的方法: etc/profile文件是只读的,直接用vi或gedit打开修改后是无法保存的.要修改profile,需要取得root权限,(使用gedit编辑) $sudo gedit /etc/profile 或者 $sudo -s $gedit /etc/profile 这样打开profile

在Android中修改快捷方式的图标

最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySql所以在配置的时候出现了一些问题,该篇文章就主要针对MySql绿色版的配置及其使用进行讨论. 一.MySql概述 MySql数据库是有瑞典MySql AB公司开发,现在该公司被Oracle收购属于Oracle所有.同SQL Server类似,它也是基于关系型数据库的数据库管理系统,在Web应用方面MySQL是最好的RDBMS之一,因为它

linux中修改ssh端口和禁止root远程登陆设置

linux中修改ssh端口和禁止root远程登陆设置 查看下系统版本 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 修改配置文件 linux修改端口22vim /etc/ssh/sshd_config找到#port 22将前面的#去掉,然后修改端口 port 1234重启服务就OK了service sshd restart或/etc/init.d/ssh restart为增强安全先增加一个普通权