_OMX_MasterInit(OMXMasterCoreGlobalData *data)

来源:互联网 发布:上海跳跃网络好垃圾 编辑:程序博客网 时间:2024/06/02 01:31

1类OMXMasterCoreGlobalData

成员:

        OMX_U32 iNumMasterOMXInstances;初值为0

        void *iInterface;

        void *iOMXLibrary;

        void *iMasterRegistry; 指向类型PVOMXMasterRegistryStruct,对应每一个组件,保存组件的名字,role,输入第几个core

        void *iOMXCompHandles; 指向每个组件的句柄,初始化空;

        OMX_U32 iTotalNumOMXComponents; 组件的总数

        OMX_U32 iNumOMXCores;core的数目,等于配置文件的数目;

2 函数OMX_ERRORTYPE _OMX_MasterInit(OMXMasterCoreGlobalData *data)

1)根据配置文件获得库的列表;

2)加载库文件:libomx_sharedlibrary.so,有一个类型OsclSharedLibrary的指针lib,包含so库的内容信息,类OsclSharedLibrary就是针对so库抽象出来的的一个对象;

3)根据lib调用函数获取so库的接口指针:根据ID,进入库中,获取指向函数PVGetInterface的指针,再根据此函数获得库的指针,对应libomx_sharedlibrary.so库的代码在文件pv_omx_interface.cpp中,

4)在将指向库的指针lib,保存在一个数组中,而且数组中的顺序号对应的是库的coreNUM,pLibrary[(data->iNumOMXCores)] = lib,同时将库的接口指针也保存到一个数组中,pInterface[(data->iNumOMXCores)] = coreIntPtr;

这两个数组分别对应data中的iOMXLibrary和iInterface;

5)依次(根据core数目)根据库的接口指针调用函数GetpOMX_Init(),初始化对应库的组件;

6)GetpOMX_ComponentNameEnum枚举库中组件的名字;

7)GetpOMX_GetRolesOfComponent根据名字查询组件的role;并保存到role数组(临时数组);

8)最后将组件名和对应的role,放到iMasterRegistry中;

可以看出最后在OMXMasterCoreGlobalData 中保存了:组件名和role名;

原创粉丝点击