Stagefright:NuPlayer实现

时间:2014-05-18 16:57:35

标签: android stagefright

我正在浏览Android NuPlayer中的Stagefright个实现。根据我的理解NuPlayerFactory依次创建NuPlayerDriver,它会创建ALooperNuPlayer。我无法理解ALooper以及它做了什么。我可以看到NuPlayer中的所有实现都在调用AMessage调用,如下所示:

NuPlyercpp: new AMessage(kWhatSourceNotify, id());

我不确定它是如何触发NuPlayer::onMessageReceived()的。读者可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

NuPlayerDriver构造函数中,您会看到

mPlayer = new NuPlayer;
mLooper->registerHandler(mPlayer);

ALooper::registerHandler()使用全局ALooperRoster来记住处理程序(mPlayer)和循环器(mLooper)之间的关系。

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

sp<AMessage> msg = new AMessage(..., id());
....
msg->post();

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