Android的多媒体框架OpenCore(PacketVideo)介绍
第一部分 OpenCore概述
????OpenCore的另外一个常用的称呼是PacketVideo,它是Android的多媒体核心。在发展的过程中,PacketVideo是一家公司的名称,而OpenCore是这套多媒体框架的软件层的名称。在Android的开发者中间,二者的含义基本相同。对比Android的其它程序库,OpenCore的代码非常庞大,它是一个基于C++的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。
???? OpenCore是一个多媒体的框架,从宏观上来看,它主要包含了两大方面的内容:
??? * PVPlayer:提供媒体播放器的功能,完成各种音频(Audio)、视频(Video)流的回放(Playback)功能
??? * PVAuthor:提供媒体流记录的功能,完成各种音频(Audio)、视频(Video)流的以及静态图像捕获功能
???? PVPlayer和PVAuthor以SDK的形式提供给开发者,可以在这个SDK之上构建多种应用程序和服务。在移动终端中常常使用的多媒体应用程序,例如媒体播放器、照相机、录像机、录音机等等。
为了更好的组织整体的架构,OpenCore在软件层次在宏观上分成几个层次:

下载 (64 KB)2009-5-13 15:49
事实上,对于Video的输出,基本的功能都是在类AndroidSurfaceOutput中完成的,在这个类当中,主要的工作是将Android的ISurface输出作为PlayerEngine的输出。最后调用了AddDataSink将mVideoSink增加为了PVPlayerInterface的输出。
在android_surface_output.cpp文件中实现了类AndroidSurfaceOutput,这个类相当于一个OpenCore PlayerEngine的Video输出和Android输出的“适配器”。AndroidSurfaceOutput类本身继承了类PvmiMIOControl,而其构造函数又以ISurface类型为参数。这个类的实现是使用ISurface实现PvmiMIOControl的各个接口。
android/author/
|-- Android.mk
|-- android_audio_input.cpp
|-- android_audio_input.h
|-- android_audio_input_threadsafe_callbacks.cpp
|-- android_audio_input_threadsafe_callbacks.h
|-- android_camera_input.cpp
|-- android_camera_input.h
|-- authordriver.cpp
|-- authordriver.h
`-- mediarecorder.cpp
engines/author/
|-- Android.mk
|-- build
| |-- make
| `-- makefile
|-- include
| |-- pvauthorenginefactory.h
| `-- pvauthorengineinterface.h
|-- src
| |-- pvae_tuneables.h
| |-- pvaenodeutility.cpp
| |-- pvaenodeutility.h
| |-- pvauthorengine.cpp
| |-- pvauthorengine.h
| `-- single_core
`-- test
|-- Android.mk
|-- build
|-- config
|-- src
`-- test_input