OMXNodeInstance.cpp:
OMX_CALLBACKTYPE OMXNodeInstance::kCallbacks = {
&OnEvent, &OnEmptyBufferDone, &OnFillBufferDone
};
OMX.cpp
status_t OMX:allocateNode
...
OMX_ERRORTYPE err = mMaster->makeComponentInstance(name, &OMXNodeInstance::kCallbacks, instance, &handle);
在创建omx component的时候带入kCallbacks,供omx component notify.
当omx component有消息通知的时候,会首先调到OMXNodeInstance.cpp里面的
void OMXNodeInstance::onEvent()
OMX_ERRORTYPE OMXNodeInstance::OnEmptyBufferDone()/OnFillBufferDone()
OMXNodeInstance会再通过instance->owner调到OMX.cpp里面的
OMX_ERRORTYPE OMX::OnEvent()
OMX_ERRORTYPE OMX::OnEmptyBufferDone()/OnFillBufferDone
OMX会再通过dispatcher->post/loop/dispatch再回到OMXNodeInstance.cpp里面的onMessage()
OMXNodeInstance会再通过mObserver->onMessage()回到ACodec中