前言
本文分析ACodec状态机,ACodec是MediaCodec的底层实现,在MediaCodec命令下切换不同状态进行编解码,基于7.0代码。
ACodec状态介绍
-
UninitializedState:未初始化状态。
在业务层调用MediaCodec. createByCodecName
完成后切换到LoadedState。 -
LoadedState:表示解码器已经加载完了;
调用MediaCodec.configure
,和MediaCodec.start
后,在LoadedState::onStart中调用mCodec->mOMX->sendCommand(mCodec->mNode, OMX_CommandStateSet, OMX_StateIdle);
让omx进入可Idel状态,后切换到LoadedToIdleState状态。 -
LoadedToIdleState:初始化Buffer,解码器可用了;
在接收到OMX_StateIdle返回后,并发送mCodec->mOMX->sendCommand(mCodec->mNode, OMX_Comm