的操作,为了更好地在不同操作系统移植。包含了基本数据类型、配置、字符串工具、IO、错误处
理、线程等内 容,类似一个基础的 C++库。
PVMF:PacketVideo Multimedia Framework(PV 多媒体框架),在框架内实现一个文件解析
(parser)和组成(composer)、编解码的 NODE,也可以继承其通用的接口,在用户层实现一些
NODE。
PVPlayer Engine:PVPlayer 引擎。
PVAuthor Engine:PVAuthor 引擎。
事实上,OpenCore 中包含的内容非常多:从播放的角度,PVPlayer 的输入的(Source)是文件或者
网络媒体流,输出(Sink)是 音频视频的输出设备,其基本功能包含了媒体流控制、文件解析、音频视频
流的解码(Decode)等方面的内容。除了从文件中播放媒体文件之外,还包含了与 网络相关的 RTSP 流(Real
Time Stream Protocol,实时流协议)。在媒体流记录的方面,PVAuthor 的输入的(Source)是照相机、麦
克风等设备,输出(Sink)是各种文件, 包含了流的同步、音频视频流的编码(Encode)以及文件的写入
等功能。
在使用OpenCore 的 SDK的时候,有可能需要在应用程序层实现一个适配器(Adaptor),然后在适配
器之上实现具体的功能,对于 PVMF 的 NODE 也可以基于通用的接口,在上层实现,以插件的形式使用。
第二部分 OpenCore 的代码结构
2.1 代码结构
以开源 Android 的代码为例,OpenCore 的代码在以下目录中:external/opencore/。这个目录是
OpenCore 的根目录,其中包含的子目录如下所示:
android:这里面是一个上层的库,它基于PVPlayer 和 PVAuthor 的 SDK 实现了一个为Android 使用
的 Player和 Author。
baselibs:包含数据结构和线程安全等内容的底层库。
codecs_v2:这是一个内容较多的库,主要包含编解码的实现,以及一个 OpenMAX 的实现。
engines:包含 PVPlayer和 PVAuthor 引擎的实现。
extern_libs_v2:包含了 khronos的 OpenMAX 的头文件。
fileformats:文件格式的解析(parser)工具。
nodes:提供一些 PVMF 的 NODE,主要是编解码和文件解析方面的。
oscl:操作系统兼容库。
pvmi: 输入输出控制的抽象接口。
protocols:主要是与网络相关的 RTSP、RTP、HTTP 等协议的相关内容。
pvcommon:pvcommon 库文件的 Android. mk文件,没有源文件。
pvplayer:pvplayer库文件的 Android.mk 文件,没有源文件。
pvauthor:pvauthor库文件的 Android.mk 文件,没有源文件。
tools_v2:编译工具以及一些可注册的模块。
在 external/opencore/目录中还有 2 个文件,如下所示:
Android.mk:全局的编译文件
pvplayer.conf:配置文件
在 external/opencore/的各个子文件夹中包含了众多的Android.mk文件,它们之间还存在着“递归”
的关系。例如根目录下的 Android.mk,就包含了如下的内容片断:
include $(PV_TOP)/pvcommon/Android.mk
include $(PV_TOP)/pvplayer/Android.mk
include $(PV_TOP)/pvauthor/Android. mk
这表示了要引用 pvcommon,pvplayer和 pvauthor等文件夹下面的 Android.mk 文件。
external/opencore/的各个 Android. mk 文件可以按照排列组合进行使用,将几个 Android.mk内容