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中改动快捷方式的图标

    1)打开"res/drawable"-->复制一张icon2.jpg图片到该drawable目录,同一时候,也将复制icon2.jpg图片到bin/res/drawable. ...

  4. 使用ffmpeg从mp4文件中提取视频流到h264文件中

    ffmpeg -i 2018.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 tmp. 注释: -i 2018.mp4:  是输入的MP4文件 -code ...

  5. CAN中如何计算波特率并配置波特率

    //设置波特率 CAN_InitStructure.CAN_SJW=tsjw; //同步宽度 CAN_InitStructure.CAN_BS1=tbs1; //时间段1 CAN_InitStruct ...

  6. 在MyEclipse中改动jsp页面的默认打开方式

    在JavaWeb项目中.当然有非常多jsp页面,可是我发现,双击打开jsp页面总是卡机.相对于打开其它java文件而言非常慢,感觉非常不舒服.MyEclipse中默认打开jsp页面是以可视化的形式展现 ...

  7. 在iOS7中改动状态栏字体的颜色

    状态栏的字体为黑色:UIStatusBarStyleDefault 状态栏的字体为白色:UIStatusBarStyleLightContent 一.在info.plist中,将View contro ...

  8. 王立平--eclipse中改动android项目的版本

    改动版本 1.右键-->properties 2.android.改动须要的版本 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTU ...

  9. 状态压缩中常用的位运算(DP)

    面对位运算,一直很无感...可能数学太差,脑洞太小. 1.首先是最基本的: 与&,或|,非~,异或^. 2.获取一个或者多个固定位的值: 假设 x = 1010(二进制),我们要取左数第二位的 ...

随机推荐

  1. 使用php实现权限管理模块

    在说权限管理模块前,应该先知道权限管理模块要有哪些功能: 1.用户只能访问,指定的控制器,指定的方法 2.用户可以存在于多个用户组里 3.用户组可以选择,指定的控制器,指定的方法   4.后台可以添加 ...

  2. QTY N.W G.W

    QTY(Quantity) - 数量 [英文缩写]QTY[英文全称]Quantity[中文解释]数量 A.毛重:Gross Weight是指商品本身的重量加皮重(tare),也即商品连同包装的重量.有 ...

  3. Android开发之bindService()通信

    Service启动方式有两种,startService(intent)和bindService(intent,conn,Context.BIND_AUTO_CREATE) startService(i ...

  4. 逻辑运算符&& 用法解释

    A&&B 首先判断A,A成功然后判断B:A不成功则结束判断,返回false;

  5. CodeForces 450

    A - Jzzhu and Children Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & % ...

  6. Bootstrap中的less基础

    在线编译 因为 less 的语法毕竟相对简单,所以一些在线工具可以很轻松的做到.比如 http://less.cnodejs.net http://www.ostools.net/less  一般都有 ...

  7. asp.net 使用 MongoDB 初体验

    首先:驱动 如果asp.net 想使用MongoDB,.net没有自带的链接类.得用第三方或官方的链接类. 当然有很多种驱动,我就不一一介绍了. 今天我就介绍一个我比较常用的驱动-----MongoD ...

  8. Log4net 写文件日志与数据库日志

    一.数据库日志表结构 CREATE TABLE [dbo].[WebLog_Msg]( [LogID] [int] IDENTITY(1,1) NOT NULL, [Date] [datetime]  ...

  9. java反编译工具

    由于JAVA语言安全性高.代码优化.跨平台等特性,从1995年5月由SUN公司发布后,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位. 不过,JAVA最突出的跨平台优势使得它 ...

  10. 未能找到类型或命名空间“Compare”

    在用vs2012  .net Framework4.5  Mvc3做一个MVCMusicStore 的例子时,遇到这样一个问题 解决办法: 具体原因也不是很清楚,据说是引用Compare做验证时会有二 ...