Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。
(1) OMX_Init
AwesomePlayer::AwesomePlayer() status_t OMXClient::connect() sp<IOMX> MediaPlayerService::getOMX() OMX::OMX() : mMaster(new OMXMaster) OMXMaster::OMXMaster() OMXPVCodecsPlugin::OMXPVCodecsPlugin() OMX_ERRORTYPE OMX_MasterInit() <-- under OpenCORE |
(2) OMX_SendCommand
|
(3) 其他作用在 OMX 元件的指令
其他作用在OMX元件的指令也和OMX_SendCommand的call path一樣,請見下表:
OMXCodec |
OMX |
OMXNodeInstance |
useBuffer |
useBuffer (OMX_UseBuffer) |
|
getParameter |
getParameter (OMX_GetParameter) |
|
fillBuffer |
fillBuffer (OMX_FillThisBuffer) |
|
emptyBuffer |
emptyBuffer (OMX_EmptyThisBuffer) |
(4) Callback Functions
|