StageFright学习笔记(2)

来源:互联网 发布:java字符串转换10进制 编辑:程序博客网 时间:2024/05/22 22:12

在Stagefright中的编解码功能还是利用openMAX框架,接下来分析一下在StageFright中OMX是如何运用的。

(1)OMX_Init   openMAX的初始化。

AwesomePlayer::AwesomePlayer()
{
  mClient.connect();
}

status_t OMXClient::connect()
{
  mOMX = service->getOMX();
}

sp<IOMX> MediaPlayerService::getOMX()
{
  mOMX = new OMX;
}

OMX::OMX() : mMaster(new OMXMaster)

OMXMaster::OMXMaster()
{
  addPlugin(new OMXPVCodecsPlugin);
}

OMXPVCodecsPlugin::OMXPVCodecsPlugin()
{
  OMX_MasterInit();
}

OMX_ERRORTYPE OMX_MasterInit() <-- under OpenCORE
{
  return OMX_Init();

}


(2)OMX_SendCommand

OMXCodec::function_name()
{
  mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle);
}

status_t OMX::sendCommand(node, cmd, param)
{
  return findInstance(node)->sendCommand(cmd, param);
}

status_t OMXNodeInstance::sendCommand(cmd, param)
{
  OMX_SendCommand(mHandle, cmd, param, NULL);

}


(3)其他作用在OMX元件的指令

OMXOMXNodeInstance useBufferuseBuffer (OMX_UseBuffer) getParametergetParameter (OMX_GetParameter) fillBufferfillBuffer (OMX_FillThisBuffer) emptyBufferemptyBuffer (OMX_EmptyThisBuffer





 (4) Callback Functions回调函数。

OMX_CALLBACKTYPE OMXNodeInstance::kCallbacks =
{
  &OnEvent, <--------------- omx_message::EVENT
  &OnEmptyBufferDone, <----- omx_message::EMPTY_BUFFER_DONE
  &OnFil
lBufferDone<------- omx_message::FILL_BUFFER_DONE
}


原创粉丝点击