OpenMAX是一种跨平台的应用程序接口(API),用来对广泛运用在如MPEG-4、音频和图像编解码器、2D和3D图像等视频编解码器中的多媒体处理进行标准化,便于软件设计者将多媒体应用移植到不同体系结构平台。
Omx_Core、Omx_Img和Omx_Cam模块组成了OMX Integration Layer;
OMX Integration Layer分为两部分:接口层和组件部分。
通常,位于OMX Integration Layer之上有个应用层,统一管理OMX中的各种应用。
接口层
Omx_Core属于OMX Integration Layer中的接口层,提供给应用层标准的接口函数和带参数的宏,以统一应用层对各组件的调用形式。
主要函数:
OMX_ERRORTYPE OMX_GetHandle (OMX_HANDLETYPE* pHandle,
OMX_STRING cComponentName,
OMX_PTR pAppData,
OMX_CALLBACKTYPE* pCallBacks)
功能说明:将组件装载入内存,并产生组件的实例
参数说明:pHandle---指向一个应用实例的句柄指针
cComponentName---组件名
pAppData---指向记录应用属性结构体的指针
pCallBacks---指向组件回调函数的结构体指针
OMX_ERRORTYPE OMX_FreeHandle (OMX_HANDLETYPE hComponent)
功能说明:释放OMX_GetHandle分配的句柄,卸载组件
参数说明:hComponent---指向组件的指针
组件
Omx_Img和Omx_Cam属于OMX Integration Layer的组件,它们再调用对应的功能实现模块,完成具体的功能。
各模块包含以下几个标准的功能函数:
OMX_ERRORTYPE XXXSendCommand( OMX_HANDLETYPE hComponent,
OMX_COMMANDTYPE Cmd,
OMX_U32 nParam,
OMX_PTR pCmdData)
功能说明:向组件发送命令
参数说明:hComponent---指向组件应用实例的指针
Cmd---命令类型
nParam---命令参数
pCmdData---该参数暂时无用
OMX_ERRORTYPE XXXSetConfig(OMX_HANDLETYPE hComponent,
OMX_INDEXTYPE nIndex,
OMX_PTR value)
功能说明:设置参数
参数说明:hComponent---指向组件应用实例的指针
nIndex---参数类型
value---指向记录组件参数结构体的指针
static OMX_ERRORTYPE XXXEmptyThisBuffer(OMX_HANDLETYPE hComponent,
OMX_BUFFERHEADERTYPE* pBuffer)
功能说明:将数据缓冲区传给组件调用的功能模块,由功能模块将数据缓冲区清空
参数说明:hComponent---指向组件应用实例的指针
pBuffer---指向数据缓冲区的指针
static OMX_ERRORTYPE XXXFillThisBuffer(OMX_HANDLETYPE hComponent,
OMX_BUFFERHEADERTYPE* pBuffer)
功能说明:将数据缓冲区传给组件调用的功能模块,由功能模块填充数据缓冲区
参数说明:hComponent---指向组件应用实例的指针
pBuffer---指向数据缓冲区的指针
static OMX_ERRORTYPE XXXSetCallbacks(OMX_HANDLETYPE hComponent,
OMX_CALLBACKTYPE* pCallbacks,
OMX_PTR pAppData)
功能说明:注册组件调用的回调函数
参数说明:hComponent---指向组件应用实例的指针
pCallbacks---指向回调函数结构体的指针
nParam---命令参数
pAppData ---指向记录应用属性结构体的指针
static OMX_ERRORTYPE XXXComponentDeInit(OMX_HANDLETYPE hComponent)
功能说明:释放组件的资源
参数说明:hComponent---指向组件应用实例的指针
OMX_ERRORTYPE XXXComponentInit(OMX_HANDLETYPE hComponent)
功能说明:初始化组件,将组件的状态设为OMX_StateLoaded
参数说明:hComponent---指向组件应用实例的指针
OMX_ERRORTYPE XXXHandleCommand (OMX_HANDLETYPE hComponent,
OMX_U32 newState)
功能说明:执行SendCommand函数发送的命令
参数说明:hComponent---指向组件应用实例的指针
newState---组件的新状态
OMX_ERRORTYPE __OMX_XXX_SendMsgToXXXCore(OMX_HANDLETYPE hComponent, OMX_XXX_CMDTYPE cmdToXXXCore, OMX_PTR tCoreparam)
功能说明:填充消息结构体,并将消息发送到功能模块
参数说明:hComponent---指向组件应用实例的指针
cmdToXXXCore ---向底层模块发送的命令类型
tCoreparam---消息参数
void __OMX_XXX_Callback (OMX_HANDLETYPE hComponent, OMX_ERRORTYPE nErrorStatus, OMX_XXX_CMDTYPE tCommand, OMX_PTR pData )
功能说明:消息的回调函数
参数说明:hComponent---指向组件应用实例的指针
nErrorStatus---该消息的执行结果
tCommand---命令类型
pData---消息参数