在本文中,我们将聚焦于Control API的功能与用法,为实现OMX Core、ComPONEnt打下坚实的基础。
OMX Core在OpenMAX IL架构中的位置位于IL Client与实际的OMX组件之间,OMX Core提供了两组API给IL Client使用,一组API用于管理OMX组件,另一组API用于操作/使用创建的OMX组件。
OMX_Init用来初始化OMX Core,在第一次使用OMX组件前它需要先被调用,并且只被调用一次;初始化可能包含以下几个步骤:分配并初始化使用OMX组件所需的内存和资源;扫描系统中的所有可用OXM组件,并将它们加载到OMX Core中。
与OMX_Init功能相反,OMX_Deinit用作于卸载OMX_Init加载的资源。
OMX_ComponentNameEnum用于枚举OMX Core中可用的所有组件,该API包含三个参数,第一个参数cComponentName用于返回找到的组件名称(输出参数),第二个参数是字符串的长度(输入参数),第三个参数是遍历OMX Core组件列表的索引,通过递增索引并反复调用这个函数,就可以枚举出OMX Core中所有的组件名称。
OMX_GetHandle用于创建一个OMX组件,返回的句柄就是我们前面学过的OMX_COMPONENTTYPE。
OMX_FreeHandle用于销毁创建的OMX组件。
OMX_GetComponentsOfRole用于获取在给定role(角色)下可以使用的所有OMX组件的列表。
OMX_GetRolesOfComponent用于获取一个组件名对应的所有的Role。
在OpenMAX IL框架设计中,IL Client不能直接访问OMX组件的函数,它需要调用OMX Core提供的宏来间接操作OMX组件。
OMX_SendCommand用于发送控制命令到组件,可用命令参考上文的枚举,该方法是非阻塞的,命令执行完成后需要发送callback通知IL Client。
OMX_GetParameter用于从组件获取参数设置,该方法为阻塞调用。
OMX_SetParameter用于给组件设定参数,该方法为阻塞调用,参数功能与OMX_GetParameter类似。
OMX_GetConfig和OMX_SetConfig分别用于从组件获取配置、给组件设定配置,组件加载完成后可以随时调用这两个方法,都是阻塞调用。
OMX_GetExtensionIndex用于将OMX IL或厂商定义的扩展字符串转换为相应的结构体索引,该方法是阻塞的。
OMX_GetState用于获取组件的当前状态。
OMX_UseBuffer用于让组件使用由IL Client已经分配的buffer,或者使用tunneled组件已经提供的buffer。
如果您想获取更多音视频开发内容,可以关注公众号《青山渺渺》。