通过上文我们已经进入到了StagefrightPlayer中,当满心激动的查看代码时发现 Stagefright其实就是个皮包公司
status_t StagefrightPlayer::setDataSource(
const char *url, const KeyedVector<String8, String8> *headers) {
return mPlayer->setDataSource(url, headers);
}
status_t StagefrightPlayer::prepare() {
return mPlayer->prepare();
}
status_t StagefrightPlayer::start() {
ALOGV("start");
return mPlayer->play();
}
status_t StagefrightPlayer::stop() {
ALOGV("stop");
return pause(); // what's the difference?
}
status_t StagefrightPlayer::pause() {
ALOGV("pause");
return mPlayer->pause();
}
功能几乎都是通过调用
AwesomePlayer *mPlayer;
成员变量来实现的,看来真正实现播放器功能的原来是
AwesomePlayer。Stagefright只是做了一层浅浅的封装,革命尚未成功,继续跟进吧。
AwesomePlayer 看看这个棒极了的(Awesome)播放器到底有多牛逼。