1)由于opencore中的omx是PV自己做的omx,core和component之间的一些API是"internal, implementation specific, not prescribed by OMX specification”,而且PV可能随时对其更改,所以在向opencore中加入新的组件时必须要提供相应的core。
2)这样就要解决多个core的共存问题,PV公司提供了一层封装:MasterCore,最后在生成so库时,有两种方式来添加这层封装:
A:先构建没有封装的so库,再添加封装,最终生成带有封装的so库;
B:同时编译,直接生成带有封装的so库。
3)建议在omx中添加API接口:opencore通过此API来获取音视频的相关信息;
OMX_BOOL OMXConfigParser ( OMX_PTR aInputParameters, OMX_PTR aOutputParameters);
4)对于生成的so库要在配置文件中注册,格式如下:
(OMX Core API OsclUuid), “shared library name.so”
其中UUID为:(0xa054369c,0x22c5,0x412e,0x19,0x17,0x87,0x4c,0x1a,0x19,0xd4,0x5f),唯一确定不可更改;
5)输入buffer中如果包含一个frame结尾,则要将flag:OMX_BUFFERFLAG_ENDOFFRAME设置为真,标志一帧的结束;
6)帧在buffer中的存储情况:一个buffer中存有:
a 多个完整的frame;
b 一个完整的frame;
c 一个frame的一部分,OMX_BUFFERFLAG_ENDOFFRAME只能在包含frame最后一部分的buffer中设置为真,注意一个buffer只能包含一个frame的一部分。