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>元素标签。
       

Media-媒介(媒体、介质)【译】的更多相关文章

  1. 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

    原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..." ...

  2. 与众不同 windows phone (15) - Media(媒体)之后台播放音频

    原文:与众不同 windows phone (15) - Media(媒体)之后台播放音频 [索引页][源码下载] 与众不同 windows phone (15) - Media(媒体)之后台播放音频 ...

  3. 与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成

    原文:与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成 [索引页][源码下载] 与众不同 win ...

  4. Media Formatters媒体格式化器

    Media Formatters媒体格式化器 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/344 ...

  5. media query(媒体查询)和media type(媒体类型)

    media type(媒体类型)是css 2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式,从而实现更丰富的界面.media query(媒体查询)是对media ...

  6. CSS3 之 Media(媒体查询器)

    1.响应式Media(媒体查询器) (1)<link rel=“stylesheet” media=“screen and (max-width: 600px)” href=“small.css ...

  7. css3之Media Queries 媒体查询

    一.初步了解 Media Queries是CSS3新增加的一个模块功能,其最大的特点就是通过css3来查询媒体,然后调用对应的样式. 了解Media Queries之前需要了解媒体类型以及媒体特性: ...

  8. 样式link属性media用法--媒体类型查询

    引用外部样式使用link 你可能想针对将要显示页面的设备类型(桌面PC.笔记本电脑.平板电脑.手机或者甚至页面的印刷版本)来调整页面的样式,可以利用一个media属性, 在<link>元素 ...

  9. Asp.Net Web API 2第十二课——Media Formatters媒体格式化器

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本教程演示如何在ASP.N ...

  10. microsoft azure Media Services 媒体服务解决方案

    用安全的方式为您随时随地跨设备传送媒体内容.提供可伸缩的端到端媒体解决方案 可用于高级视频工作流的云 实现奥运会规模的直播与点播媒体传送 高可用的编码和流式处理 支持 Flash.iOS.Androi ...

随机推荐

  1. [水煮 ASP.NET Web API2 方法论](12-2)管理 OData 路由

    问题 如何控制 OData 路由 解决方案 为了注册路由,可以使用  HttpConfigurationExtension 类中 MapODataServiceRoute 的扩展方法.对于单一路由这样 ...

  2. java 连接 kerberos 认证的 HBase 和 HDFS

    这是两个功能,都很简单就写一块了.. 简单到什么程度呢,简单到只贴代码就可以了... HBase package com.miras.data; import org.apache.hadoop.co ...

  3. Codeforces 429 B. Working out-dp( Codeforces Round #245 (Div. 1))

    B. Working out time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  4. 转:智能模糊测试工具 Winafl 的使用与分析

    本文为 椒图科技 授权嘶吼发布,如若转载,请注明来源于嘶吼: http://www.4hou.com/technology/2800.html 注意: 函数的偏移地址计算方式是以IDA中出现的Imag ...

  5. 如何通过 Redis 实现分布式锁

    分布式锁需要解决的问题: 互斥性:任意时刻只能有一个客户端获取锁 安全性:锁只能被持有该锁的客户端删除 死锁:获取锁的客户端因为意外宕机未能释放锁,其他客户端再也无法获取到该锁导致死锁 容错:宕机后客 ...

  6. Python3 文件读写注意事项(指针问题)

    C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe E:/python/day2/op.py Someho ...

  7. FFT实现高精度乘法

    你应该知道$FFT$是用来处理多项式乘法的吧. 那么高精度乘法和多项式乘法有什么关系呢? 观察这样一个$20$位高精度整数$11111111111111111111$ 我们可以把它处理成这样的形式:$ ...

  8. HZAU 1203 One Stroke(倍增)

    题目链接:http://acm.hzau.edu.cn/problem.php?id=1203 [题意]给你一颗完全二叉树每个节点都有一个权值,然后要你从上往下找一条链,值得链上权值的和<K,且 ...

  9. bWAPP练习--injection篇之HTML Injection - Reflected (GET)

    什么是Injection? injection,中文意思就是注入的意思,常见的注入漏洞就是SQL注入啦,是现在应用最广泛,杀伤力很大的漏洞. 什么是HTML injection? 有交互才会产生漏洞, ...

  10. 认识C++中的bitset类型

    认识标准库bitset类型 位是用来保存一组项或者条件的yes/no(1或者0)信息的一种简洁方法,那么位集就是二进制位的有序集.C++中标准库提供的bitset类在我们程序中就很有效的简化了对于位集 ...