首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stagefright: NuPlayer实现

Stagefright: NuPlayer实现
EN

Stack Overflow用户
提问于 2014-05-18 16:57:35
回答 1查看 2K关注 0票数 0

我正在研究Android Stagefright中的Stagefright实现。根据我的理解,NuPlayerFactory正在创建NuPlayerDriver,而它又创建了ALooperNuPlayer。我无法理解ALooper以及它是做什么的。我可以看到NuPlayer中的所有实现都在调用AMessage调用,例如如下所示:

代码语言:javascript
复制
NuPlyercpp: new AMessage(kWhatSourceNotify, id());

我不知道它如何触发NuPlayer::onMessageReceived()。读者们能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-18 21:01:37

NuPlayerDriver构造函数中,您可以看到

代码语言:javascript
复制
mPlayer = new NuPlayer;
mLooper->registerHandler(mPlayer);

这个ALooper::registerHandler()使用全局ALooperRoster来记住处理程序(mPlayer)和活套(mLooper)之间的关系。

在NuPlyer.cpp中,一般模式是:

代码语言:javascript
复制
sp<AMessage> msg = new AMessage(..., id());
....
msg->post();

AMessage::post()调用全局ALooperRoster,使用在NuPlayerDriver构造函数中建立的关系,使用0延迟发布消息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23724514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档