Android多媒体——媒体解码流程分析(十四)
NuPlayer 的解码模块相对比较简单,统一使用了一个基类 NuPlayerDecoderBase 管理,该类中包含了一个 MediaCodec 的对象,实际解码工作全靠 MediaCodec。
一、解码器创建
解码器创建的入口在 NuPlayer 的 NuPlayer::instantiateDecoder() 函数调用时。NuPlayer 在执行 start() 函数后,上一篇文章分析调用到了 onStart() 函数,在该函数调用了 postScanSources() 函数。我们就从这里开始分析。
1、NuPlayer.cpp
源码位置:/frameworks/av/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
postScanSources
void NuPlayer::postScanSources() {if (mScanSourcesPending) {return;}sp<AMessage> msg = new AMessage(kWhatScanSources, this);msg->setInt32("generation", mScanSourcesGeneration);msg->post();mScanSourcesPending = true;
}void NuPlay