在完成 MediaCodec 初始化流程的探索后,我们正站在多媒体处理最精妙的核心地带——回调机制。这不仅是简单的异步通知接口,更是连接应用层与底层编解码引擎的智能控制系统。
一、解码回调流程
在上面的 MediaCodec::init() 方法中回调机制建立过程中,会发送一条 kWhatInit 消息,我们这里就从此开始分析。
1、MediaCodec.cpp
源码位置:/frameworks/av/media/libstagefright/MediaCodec.cpp
onMessageReceived
void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
switch (msg->what()) {
……
case kWhatInit:
{
if (mState != UNINITIALIZED) {
PostReplyWithError(msg, INVALID_OPERATION);
break;
}
if (mReplyID) {
mDeferredMessages.push_back(msg);