通过上文我们已经进入到了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)播放器到底有多牛逼。

本文深入剖析了StagefrightPlayer的工作原理,揭示其实际仅作为封装层,并指出了真正的核心组件AwesomePlayer,同时提供了关键代码片段以帮助理解。
1223

被折叠的 条评论
为什么被折叠?



