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压缩中修改波特率的更多相关文章

  1. hi3531的h264压缩中改动波特率

    typedef struct hiVENC_ATTR_H264_CBR_S { HI_U32 u32Gop; HI_U32 u32StatTime; HI_U32 u32ViFrmRate; HI_F ...

  2. CC2530中串口波特率改为9600时单个数据包来不及接收的解决方案

    在调试CC2530过程中发现波特率改为9600时,单个包仅有3个Byte时,接收DMA就会启动 因而数据包被强迫拆分成多个,显然只要将接收DMA启动延时做到足够大即可. 具体修改内容如下图所示: 经过 ...

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

    本文转载自:http://blog.csdn.net/dddxxxx/article/details/54343976 参照文章:http://blog.csdn.net/a345017062/art ...

  4. 在Xcode5中修改整个项目名

    总会遇到几个项目,在做到一半的时候被要求改项目名,网上找了下相关的资料,大多数是xcode5以前的版本,所以解决好了在这里mark一下,给需要的人. 目标为:将项目名XCD4改成xcd5. 先上结果图 ...

  5. Oracle 11g中修改默认密码过期天数和锁定次数

    Oracle 11g中修改默认密码过期天数和锁定次数 密码过期的原因一般有两种可能: 一.由于Oracle中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180 ...

  6. win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件

    win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...

  7. 在Visio2010中修改默认字体的大小

    由于我常需要在Visio2010中画流程图和UML图,但是Visio2010中的字体默认8px,这对眼睛是个挑战.摸索了好久终于找到在visio2010中修改字体大小的方式. 1.点一下红色箭头所指的 ...

  8. SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)

    前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...

  9. UIStoryBoard 中修改控件borderColor

    storyBoard中直接修改UI控件的边框颜色,可以避免先关联再从控制器中修改属性等繁琐操作 因为layer.borderColor隶属于CALayer对象,且CGColor无法直接在sb中直接使用 ...

随机推荐

  1. springboot(二十):使用spring-boot-admin对spring-boot服务进行监控

    上一篇文章<springboot(十九):使用Spring Boot Actuator监控应用>介绍了Spring Boot Actuator的使用,Spring Boot Actuato ...

  2. 2018/2/11 ELK技术栈之ElasticSearch学习笔记二

    终于有时间记录一下最近学习的知识了,其实除了写下的这些还有很多很多,但懒得一一写下了: ElasticSearch添加修改删除原理:ElasticSearch的倒排索引和文档一旦生成就不允许修改(其实 ...

  3. 为Android添加JNI支持

    起因 今天在进行Android原生开发时,需要通过JNI调用C++代码实现一些处理.以前没有做过类似的东西,在网上找了很久才解决问题,特记录下来以便以后翻阅. Eclipse无cygwin编译so的方 ...

  4. python中的randint,引入模块

    引入模块的方法: from 模块名 import 方法名 范例: from random import randint#使用randint需要加上这句 while True: answer=randi ...

  5. UITableView 的使用小点

    1.系统默认的颜色设置//无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色 cell.selectionStyle = ...

  6. openvpn 客户端一键脚本安装

    #!/bin/bash dir=/etc/openvpn#file=AD00012basepath=$(cd `dirname $0`; pwd)PACKAGE_DIR="${basepat ...

  7. ORACLE数据库SQL优化 not in 与not exits

    各个表的数据量: sys_file_convert_queue 65989sys_att_file 73061sys_att_main 84405sys_att_rtf_data 1507 优化前,执 ...

  8. JavaScript对象创建的几种方式

    1 工厂模式 1.1 创建 function createFruit(name,colors) { var o = new Object(); o.name = name; o.colors = co ...

  9. Android Stdio 中的Rendering Problems Android N requires the IDE to be running with Java 1.8 or later Install a supported JDK解决办法

    出现如下图所示的错误 解决办法为: 然后在里面输入SDK 下载 下载APILevel为23版本的SDK 换成23版本的SDK 完美解决问题

  10. ubuntu上lamp环境搭建

    首先,介绍个彻底删除linux已经安装的软件的方法. sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-5. ...