2-2视频缓存池

时间:2019-09-16
本文章向大家介绍2-2视频缓存池,主要包括2-2视频缓存池使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

什么是视频缓存池?

1.视频的本质是多帧图片,图片的本质的是RGB或者rawRGB数据,要占用一段连续内存

2.视频的裁剪、缩放、修正处理等各种操作,本质上就是对内存中的数据进行运算

3.视频缓冲池(VB:video buffer)就是一段很大,又被合理划分和管理的内存,用来做视频数据的暂存和运算场地

4.公共视频缓存池的【公共】可以理解为全局变量,也就是各个模块都能访问的一段内存

5.看似视频缓冲块在各个模块之间流转,实际上并没有内存复制,而是指针在传递

6.视频缓存池的内存有MPP维护,我们在系统启动时就把整个SDRAM分成了2部分:系统部分(由linux kernel来维护管理)和mpp部分(由mpp系统来维护管理)

7.缓存池需要几个,每个包含几个缓存块,每个缓存块多大,都是可以由用户程序设置好参数,然后调用mpp的相关api来向mpp申请分配的

相关数据结构和api

1.VB_CONF_S:定义视频缓存池属性结构体

typedef struct hiVB_CONF_S
{
    HI_U32 u32MaxPoolCnt;     /* max count of pools, (0,VB_MAX_POOLS]  */    
    struct hiVB_CPOOL_S
    {
        HI_U32 u32BlkSize;//每个缓存池的缓存块大小
        HI_U32 u32BlkCnt;//缓存块的数量
        HI_CHAR acMmzName[MAX_MMZ_NAME_LEN];//缓存块的名字
    }astCommPool[VB_MAX_COMM_POOLS];
} VB_CONF_S;

2.HI_MPI_VB_SetConf:设置 MPP 视频缓存池属性

3.HI_MPI_VB_Init

/******************************************************************************
* function : vb init & MPI system init
******************************************************************************/
HI_S32 SAMPLE_COMM_SYS_Init(VB_CONF_S* pstVbConf)
{
    MPP_SYS_CONF_S stSysConf = {0};
    HI_S32 s32Ret = HI_FAILURE;

    HI_MPI_SYS_Exit();
    HI_MPI_VB_Exit();

    if (NULL == pstVbConf)
    {
        SAMPLE_PRT("input parameter is null, it is invaild!\n");
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VB_SetConf(pstVbConf);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_VB_SetConf failed!\n");
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_VB_Init();
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_VB_Init failed!\n");
        return HI_FAILURE;
    }

    stSysConf.u32AlignWidth = SAMPLE_SYS_ALIGN_WIDTH;
    s32Ret = HI_MPI_SYS_SetConf(&stSysConf);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_SYS_SetConf failed\n");
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_SYS_Init();
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_PRT("HI_MPI_SYS_Init failed!\n");
        return HI_FAILURE;
    }

    return HI_SUCCESS;
}

原文地址:https://www.cnblogs.com/muzihuan/p/11527672.html