Dec 9, 2008

OpenCore分析

Android的MediaPlayer部分功能是基于Opencore的。
MediaPlayer调用MediaPlayerService使用到OpenCore内容
在MediaPlayerService:createPlayer的时候有三种player的type:
switch (playerType) {
case PV_PLAYER:
LOGV(" create PVPlayer");
p = new PVPlayer();
break;
case SONIVOX_PLAYER:
LOGV(" create MidiFile");
p = new MidiFile();
break;
case VORBIS_PLAYER:
LOGV(" create VorbisPlayer");
p = new VorbisPlayer();
break;
其中PVPlayer是调用OpenCore实现的
在阅读OpenCore的代码的时候,曾经走了一个弯路,就是在读代码的时候没有考虑向上调用的相关性,只看OpenCore内部的代码。
在读OpenCore的代码时opencore\Engines下封装了player和author,而且这两部分在pv提供的文档OpenCORE_brochure.pdf里也是描述成了主要的两个多媒体的处理引擎。
但是在实际的Android调用时,提供上层多媒体处理引擎接口的并不是player和author,而是在opencore/android/中的playerdriver(playerdriver.cpp)。
在分析代码是发现playerdriver的代码和opencore\Engines里的player基本是一样的。可以看出OpenCore集成入Android的时候,开发人员参考原有的引擎重写了接口。

0 评论: