海思编码:2、初始化系统需要的一些值

本文根据Hi3518ESDK中的mpp的sample中的venc进行的总结
首先贴出代码,然后一步步分析这一部分

/******************************************
     step  1: init sys variable 
    ******************************************/
    memset(&stVbConf,0,sizeof(VB_CONF_S));
    // 获取摄像头传进的图像的分辨率大小,也可能是VGA等的视频输入,功能就是获取出传入的图像的分辨率,用来对VB缓存池进行初始化每个块的大小,比如720P
	SAMPLE_COMM_VI_GetSizeBySensor(&enSize[0]);
    if (PIC_HD1080 == enSize[0])
    {
        enSize[1] = PIC_VGA;
		s32ChnNum = 2;
    }
    else if (PIC_HD720 == enSize[0])
    {
        enSize[1] = PIC_VGA;			
		enSize[2] = PIC_QVGA;

        //几路视频流,这里就是VPSS输出了几路,摄像头输入只有一路,传入VPSS后可以缩放,比如可以从VPSS传出原有的视频流,还可以传出缩小后的VGA和QVGA
        //还有一种可能就是VPSS的这几路流用于不同地方,比如可能放到编码器编码,可能推到VO进行输出显示
		s32ChnNum = 3;
    }
    else
    {
        printf("not support this sensor\n");
        return HI_FAILURE;
    }
#ifdef hi3518ev201
	s32ChnNum = 1;
#endif
	printf("s32ChnNum = %d\n",s32ChnNum);


    //MPP系统配置其实主要就是配置VB缓存,其他海思都做了

    stVbConf.u32MaxPoolCnt = 128;  //设置缓存池最大的个数为128

    /*video buffer*/
    // 根据不同个数的视频流进行配置缓存池,每一路流至少要有一个缓冲池  
	if(s32ChnNum >= 1) // 第一路视频流的VB缓存池配置
    {
        //根据分辨率算出缓存池中的缓存块应该开辟多大的空间,参数SAMPLE_SYS_ALIGN_WIDTH就是对齐
	    u32BlkSize = SAMPLE_COMM_SYS_CalcPicVbBlkSize(gs_enNorm,\
	                enSize[0], SAMPLE_PIXEL_FORMAT, SAMPLE_SYS_ALIGN_WIDTH);
	    stVbConf.astCommPool[0].u32BlkSize = u32BlkSize;

	    stVbConf.astCommPool[0].u32BlkCnt = g_u32BlkCnt;  //一个缓冲池有多少个块,这个是自己配
	}
	if(s32ChnNum >= 2)
    {
	    u32BlkSize = SAMPLE_COMM_SYS_CalcPicVbBlkSize(gs_enNorm,\
	                enSize[1], SAMPLE_PIXEL_FORMAT, SAMPLE_SYS_ALIGN_WIDTH);
	    stVbConf.astCommPool[1].u32BlkSize = u32BlkSize;
	    stVbConf.astCommPool[1].u32BlkCnt =g_u32BlkCnt;
	}
	if(s32ChnNum >= 3)
    {
		u32BlkSize = SAMPLE_COMM_SYS_CalcPicVbBlkSize(gs_enNorm,\
                enSize[2], SAMPLE_PIXEL_FORMAT, SAMPLE_SYS_ALIGN_WIDTH);
		stVbConf.astCommPool[2].u32BlkSize = u32BlkSize;
		stVbConf.astCommPool[2].u32BlkCnt = g_u32BlkCnt;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值