• stagefright框架(二)- 和OpenMAX的運作


    Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCOREOMX的實作,我們來看一下StagefrightOMX是如何運作的。

    (1) OMX_Init


    OMXClient mClient;

    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, paramNULL);
    }
     


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

    其他作用在OMX元件的指令也和OMX_SendCommandcall path一樣,請見下表:

    OMXCodec

    OMX

    OMXNodeInstance

     

    useBuffer

    useBuffer (OMX_UseBuffer)

     

    getParameter

    getParameter (OMX_GetParameter)

     

    fillBuffer

    fillBuffer (OMX_FillThisBuffer)

     

    emptyBuffer

    emptyBuffer (OMX_EmptyThisBuffer)










    stagefright框架(二)- <wbr>和OpenMAX的運作



     (4) Callback Functions


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

  • 相关阅读:
    PHP的错误和异常处理
    PHP 页面编码声明方法详解(header或meta)
    Sentinel实现Redis高可用
    Linux学习系列之Iptables
    Python学习系列之logging模块
    [scrapy]Item Loders
    [scrapy]实例:爬取jobbole页面
    mongo开启验证
    python创建虚拟环境
    elastalert邮件报警
  • 原文地址:https://www.cnblogs.com/shakin/p/4097098.html
Copyright © 2020-2023  润新知