对于android的播放引擎stagefright中关键成分OMX理解

来源:互联网 发布:苏州爱知电机 编辑:程序博客网 时间:2024/06/01 11:34

    文件播放的实质就是通过对文件识别,文件解析,文件解码后输出数据流。android在2.3以上版本中都使用stagefright作为播放引擎实现播放。在这里值得关注的是stagefright以OMX插件完成主要的文件解码任务,从而完成播放工作。

    OMX中的三层结构中重点关注的是OMX_IL,向上,OMX_AL这层的接口是随时可以变化的,向下OMX_DL这个是供应商根据下层硬件的接口设计,硬件更新的话这层也是很容易变化的,相对不变的是OMX_IL,这个框架,这样的话在这层使用OMX标准供Clients调用是很合理的。也是基于此,在实现播放时是调用的OMX_IL层的标准接口实现的。

    其实,在文件录制中也使用的是OMX插件,有一点是录制编码的格式支持远不及播放解码支持的格式多。

    1. 既然使用的其实是OMX_IL,首先应该认识OMX_IL的结构:

     第一层:OMX_IL——Core(核心内容)

     第二层:组件component:主要是4个组件,这4个组件分别对用完成各自的功能,但是完成具体的播放或者录制任务时是协同工作的。

     第三层:LCML:各个组件是通过调用这层的接口完成真正分工作。

     第四层:DSPBridge:连接下层驱动。

     第五层:DSPBridge的驱动。

   这里的使用是OMX_IL是作为第三方的插件供我们使用,它会以.so供程序使用。包括在使用component时也是以.so的形式出现。

    2. 开启动态库的一个常用函数:

    void* dlsym(void*  handle, char*  symbol); // 打开对应库,找到对应的函数名。

   3. 所有组件都是使用统一的接口标准:

   (1) OMX_Decder.c: 用于解码

  (2)  OMX_Dec_CompThread.c:解码的线程循环

   (3) OMX_Dec_Util.c:相关解码工具,功能调用LCML实现解码功能

    这个对组件的操作对外接口函数就是标准的使用两个:在(1)中,函数为:OMX_ComponentInit(); (2)中调用****Dec_StartThread()这个函数内部调用的是

nRet = pthread_create(参数1,参数2,参数3,参数4);

   4. OMX的核心Core设计完成的工作是将和component相关的属性跟操作都放在一个结构体中,这样就很方便了,clients直接就调用的是这个结构体中的函数指针,就可以和components交互,clients使用命令操作组件这样就正确流向了。

    5. stagefright类的调用关系是:OMXNodeInstance代表OMX的具体实例,完成components的调用,OMXMaster是管理OMX插件。在工作过程中内部类CallbackDispatcher作用是用来接收回调函数的消息。OMXNodeInstance + CallbackDispatcher = 合作才完成不同实例的消息处理任务。

                                

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在家有人在撬门怎么办 6个月的宝宝腹泻怎么办 六个月大的宝宝拉肚子怎么办 六个月宝宝着凉拉肚子怎么办 六个月婴儿着凉拉肚子怎么办 怀孕六个月着凉拉肚子怎么办 六个月的婴儿消化不好怎么办 六个月婴儿不好好吃奶怎么办 六个月婴儿消化不好怎么办 六个月婴儿肠胃不好怎么办 受了惊吓后睡眠不好怎么办 宝宝夏季吃饭不爱带围嘴怎么办 3岁宝宝爱看电视怎么办 新生儿晚上哭闹不睡觉怎么办 档案丢了怎么办失业证 三岁宝宝不合群怎么办 阴唇手术半月了疤痕增生怎么办 宝宝小阴唇黏连怎么办 6个月宝宝阴唇粘连怎么办? 高一孩子不爱上学怎么办 3岁宝宝外阴发红怎么办 40爸妈离婚我该怎么办 小儿吃糖卡住了怎么办 额头撞墙上肿了怎么办 宝宝额头撞肿了怎么办 小孩额头撞肿了怎么办 宝宝撞到额头肿了怎么办 小孩子上一年级语文很差了怎么办? 楼下说小孩太吵怎么办 托班的小孩太吵怎么办 宝宝两岁只会简单的词怎么办 我儿子的视力低怎么办 小孩子课文看书都不会读怎么办 宝宝衣服买小了怎么办 拉拉裤腰围小了怎么办 一周九个月宝宝发烧怎么办 8个月的婴儿37.7怎么办 宝宝发烧37度3怎么办 2岁宝宝发烧37度怎么办 3个月新生儿发烧怎么办 生完孩子肚子松弛怎么办