1.android中用openmax来干啥?

有了上一篇AwesomePlayer基本框架及播放流程已经很清楚的看到了,android中的AwesomePlayer就是用openmax来做(code)编解码,其实在openmax接口设计中,他不光能用来当编解码。通过他的组件可以组成一个完整的播放器,包括sourc、demux、decode、output。但是为什么android只用他来做code呢?我认为有以下几方面:

1.在整个播放器中,解码器不得不说是最重要的一部分,而且也是最耗资源的一块。如果全靠软解,直接通过cpu来运算,特别是高清视频。别的事你就可以啥都不干了。所以解码器是最需要硬件提供加速的部分。现在的高清解码芯片都是主芯片+DSP结构,解码的工作都是通过DSP来做,不会在过多的占用主芯片。所有将芯片中DSP硬件编解码的能力通过openmax标准接口呈现出来,提供上层播放器来用。我认为这块是openmax最重要的意义。
2.source 主要是和协议打交道,demux 分解容器部分,大多数的容器格式的分解是不需要通过硬件来支持。只是ts流这种格式最可能用到硬件的支持。因为ts格式比较特殊,单包的大小太小了,只有188字节。所以也是为什么现在常见的解码芯片都会提供硬件ts demux 的支持。
3.音视频输出部分video\audio output 这块和操作系统关系十分紧密。可以看看著名开源播放器vlc。vlc 在mac、linux、Windows都有,功能上差别也不大。所以说他是跨平台的,他跨平台跨在哪?主要的工作量还是在音视频解码完之后的输出模块。因为各个系统的图像渲染和音频输出实现方法不同,所以vlc需要针对每个平台实现不同的output。这部分内容放在openmax来显然不合适。
所以openmax 中硬件抽象的编解码是最为常用的,也是为什么android中只用它来抽象code。

2.android中openmax实现框架



1.上面已经说过了,android系统中只用openmax来做code,所以android向上抽象了一层OMXCodec,提供给上层播放器用。 播放器中音视频解码器mVideosource、mAudiosource都是OMXCodec的实例。
2.OMXCodec通过IOMX 依赖binder机制 获得 OMX服务,OMX服务 才是openmax 在android中 实现。
3. OMX把软编解码和硬件编解码统一看作插件的形式管理起来。

更多相关文章

  1. Android媒体文件metadata是如何实现跟解码器结合获取的
  2. Android硬件设备检测
  3. Android硬件入门-照相机
  4. Android 6.0中添加硬件访问服务
  5. Android开启硬件加速
  6. Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原
  7. 英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*

随机推荐

  1. Android AsyncTask介绍
  2. Android四种点击事件方法
  3. 深入浅析Android手机卫士保存密码时进行m
  4. Android集成腾讯X5WebView
  5. 【Android】android模拟器命令详解
  6. Android 4.0 SDK 环境搭建体验(Windows 7
  7. 查看Sqlite 数据库
  8. android merge标签的用法
  9. Android JNI入门第一篇——HelloJni
  10. Android 学习手札(三) 视图(View)