Media-媒介(媒体、介质)


转载请注明来源:http://blog.csdn.net/lifeshow 
          Android支持定制的媒介解码器,需要将定制的解码器接口暴露给框架。             Android针对集中常见的媒介格式,提供一套本地的解码引擎-    Stagefright。Stagefright提供音频和视频播放功能,包括OpenMax解码交互、会话管理、时间同步渲染、传输控制和DRM。此外,Stagefright可以集成针对特定硬件的解码器。事实上,Android针对定制的解码器,并没有提供HAL实现,但提供了加码和解码的标准和途径。客户需要自己实现硬件解码器,把他作为OpenMax IL的附件。          

综述

下图显示了媒介类应用与Android本地多媒体框架交互过程。
应用框架 应用框架包含用户APP代码,通过调用android.media API来与多媒体硬件实现交互。 Binder IPC Binder IPC实现跨进程通信机制,接口位于frameworks/av/media/libmedia目录,以“I”字母打头。 本地多媒体框架 Android提供本地的多媒体框架,通过Stagefright引擎,实现音频和视频的摄录和回放功能。Stagefright包含默认的常见类型的软解码器,你可以通过扩展OpenMax IL层接口来定制自己的硬件解码器。要了解更多信息,可以参看各类型媒体播放器源码,同时可参考Stagefright组件目录(frameworks/av/media)。 OpenMAX Integration Layer (IL) OpenMax IL为Stagefright提供一套标准的用于识别和使用特定多媒体解码组件的方式。针对自定义解码器,你必须提供一个叫libstagefrighthw.so的共享插件库。改链接库,将定制的解码器链接到Stagefright。定制的解码器必须符合OpenMax IL组件标准。 解码器定制 Stagefright内置一套标准的软解码器,也可以针对特定要求定制自己的硬件解码器。需要创建一个OMX组件,并将组件以Hook方式链接到解码器和Stagefright框架。例如,针对Galaxy Nexus机型,你可以参考hardware/ti/omap4xxx/domx/和hardware/ti/omap4xx/libstagefrighthw的组件及插件实现。 要定制解码器分一下几步: 1)依据OpenMax IL标准,创建解码组件,该组件接口定义位于frameworks/native/include/media/OpenMAX/OMX_Component.h头文件。 2)创建一个OMX插件,用于链接到Stagefright服务。插件接口定义位于frameworks/native/include/media/hardware目录的OMXPluginBase.h和HardwareAPI.h头文件中。 3)将插件编译成共享链接库,命名为libstagefrighthw.so。如:LOCAL_MODULE := libstagefrighthw 4)将插件链接库加入设备makefile中。PRODUCT_PACKAGES += \
libstagefrighthw \
... 5)将解码器暴露给框架。Stagefright服务首先解析system/etc/media_codecs.xml和system/etc/media_profiles.xml 文件,来确定支持的解码格式,暴露的接口可以通过 android.media.MediaCodecList和android.media.CamcorderProfile类调用。需要在device/<company_name>/<device_name>/目录创建上面的两个xml,同时复制到system/etc目录。如: PRODUCT_COPY_FILES += \
device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \
device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \
可以参看device/samsung/tuna/media_codecs.xml和device/samsung/tuna/media_profiles.xm具体实现。 注: 自Jelly Bean开始,Android不再支持<Quirk>元素标签。

更多相关文章

  1. Android系统架构和四大组件
  2. 定制dialog的方式
  3. android学习-组件中的layout-weight属性
  4. Android系统应用框架篇:Activity启动流程(三)
  5. Android(安卓)架构组件之 Lifecycle 使用详解
  6. Android(安卓)UI (include的使用)
  7. android常用属性的学习
  8. 2018 I/O Android(安卓)详解
  9. Android定制组件之TitleBar之涂鸦

随机推荐

  1. Android-透明状态栏
  2. android jni (jni_onload方式)
  3. Android中使用SQLite数据库详解
  4. Android之Activity概述
  5. 为什么要在 Windows 10 系统上运行 Andro
  6. Android 中文API:Signing Your Applicatio
  7. 初探Android Scroll——scrollTo()与scro
  8. 向Android社区贡献代码过程详解
  9. Android中的线程模型
  10. Building TensorFlow on Android