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. 好用的开源库(二)——uCrop 图片裁剪

    最近想要实现图片裁剪的功能,在Github上找到了这个uCrop,star的人挺多的,便是决定入坑,结果长达一个小时的看资料+摸索,终于是在项目中实现了图片裁剪的功能,今天便是来介绍一下uCrop的使 ...

  2. Spring整合JMS(一)-基础篇

    1.基础知识 图1   同步通信和异步通信通信过程示意图 RMI使用的是同步通信,JMS使用的是异步通信.从图1可以看出异步通信的好处就是减少了不必要的等待,提高了效率. JMS中有两个主要的概念:消 ...

  3. CCF NOI plus 201(7)6 初赛题 解题报告

    GTMDCCF. 今年这题怎么评价? 去看我在知乎的回答:https://www.zhihu.com/question/66621360/answer/244222388 挨个说一遍. 单项选择题 T ...

  4. Django搭建博客网站(一)

    Django搭建自己的博客网站(一) 简介 这个系列主要是通过使用Django这个python web框架实现一个简单的个人博客网站.对Django有疑问可以上Django官网查文档. 功能 后台管理 ...

  5. 使用Dockerfile构建镜像

    Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义的镜像.它类似shell脚本,由一行行命令组成,支持以#开头的注释行.一般而言,Dockerfile分为四部 ...

  6. Maven入门知识介绍

    1.1 Maven简介 Apache Maven 是一个软件项目管理工具.基于项目对象模型的概念,Maven可用来管理项目的依赖.编译.文档 等信息. 使用maven管理项目时,项目的依赖的jar包将 ...

  7. C++数据结构学习之顺序表

    顺序表是数据结构中最基本也是应用相当广泛的一种数据结构类型.它通常包含三个私有成分,即指向数据数组的头指针.当前表长以及表的实际容量.表的头指针通常指向数据数组的基地址,通过数组的形式进行访问数据数组 ...

  8. [Python Study Notes]实现对键盘控制与监控

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  9. zabbix如何监控进程

    zabbix中item的配置如下: zabbix中trigger的配置如下:

  10. 使用JS代码实现点击按钮下载文件

    有时候我们在网页上需要增加一个下载按钮,让用户能够点击后下载页面上的资料,那么怎样才能实现功能呢?这里有两种方法: 现在需要在页面上添加一个下载按钮,点击按钮下载文件. 题外话,这个下载图标是引用的 ...