Google’s Android as an application environment for DTV decoder system 文章简单记录

最近看了一篇International Symposium on Consumer Electronics会议上的文章,标题是Google’s Android as an application environment for DTV decoder system。做一下简单的记录。

文章主要讲述如何使用ANDROID系统作为DTV的软件环境。包括移植ANDROID系统至文中提到的DTV平台,以及怎么在ANDROID系统上实现DTV电视搜索,回放记录等功能。

Android移植

移植Android系统到大端MIPS平台需要三个步骤:

  1. 给平台支持的LINUX内核打PATCH,加入Android框架需要的一些系统驱动。
  2. 扩展Android编译环境支持大端MIPS平台。
  3. 声音驱动集成和DFB支持。

Linux内核移植:

如下驱动必须被集成:

 

ASHMEM(匿名共享内存)同POSIX SHM 但是有不痛的行为,它支持简单的基于文件映射的API

BINDER   类似CORBA的IPC通信机制。

Android event logger LINUX 用于在内核中记录DEBUG消息的LINUX驱动

Android 环境修改

Android系统已经成功移植到小端MIPS平台上(如8655)。但是由于大端小段的区别,修改也是很多的。

  • 涉及到本地和一些使用C/C++的开源库需要修改Android.mk支持大端变量和定义。
  • 编译工具的一些特定代码不是大小端都支持(in-code endian awareness)。这些BUGS会导致Android编译失败,或者启动失败。受到影响的程序包括Android pre-linker Apriori, stripping application Soslim, resource manager aapt (Android Asset Packaging Tool)等
  • 增加对一些在ANDROID系统上跑的程序和库的in-code endian awareness支持。例如Dalvik VM(显式支持大端系统)使用一些数据类型的指针分配在小段系统工作正常,但是很难移植到大端系统。(具体略),其他的一些修改包括矫正颜色等

Android DFB支持

DFB是基于FB的轻量级图形库,提供图形加速及输入设备支持。

Android 支持标准的FB。DTV SOC提供商实现了DFB的硬件加速。ANDROID系统对DFB的支持实现遍及系统不同层次。首先支持UI的绘制,第二,通过图形硬件加速绘制图形。

  • DFB图形分配策略实现了多颜色层次的SURFACE与主视频FB内存分配
  • DFB 支持加速的BLITTER操作。

使用DFB作为UI 图形缓冲的缺点是不支持3D加速。

多媒体及DTV回放支持

这部分解释对ANDROID 运行环境和软件框架的修改区支持DTV和多媒体设备控制。

  1. 修改Android支持硬件声音和视频解码,允许本地多媒体文件重放。
  2. 支持DTV频道的搜索记忆。
  3. 支持DTV频道重放和录放

多媒体回放支持

因为CPU能力不足不直接使用Android 运行库 android.media。为了支持硬件加速多媒体重放,媒体框架将增加选项扩展支持硬件处理。解码和现在的多媒体数据 通过事件通知ANDROID.通过增加额外的硬件插件机制。MMLIB

 

MMLIB为ANDROID多媒体对象和硬件加速平台解码器的粘合层。它位于android_media_MediaPlayer JNI对象中。MMLIB接口的初始化通过硬件平台插件硬件信息并且存储适当的播放接口。

使用提供支持的信息,媒体播放对象发送多媒体指令,MMLIB解释处理命令并且选择接口。如果没有硬件加速支持的命令MMLIB直接将命令传到OPENCORE的库。

因为平台支持多种音视频,所以需要多个插件。

DTV频道记忆及搜索

DTV 包括不同的前端设备提供模拟或者数字频道的再现。采用ANDROID编程的方式,引进两个JAVA类:一个用户接口和一个JNI对象支持本地频道服务。

引进的对象包括:

  • 频道服务线程对象

这个服务线程运行在后台进程中使用了JNI接口。主函数收集修改前端设备平台的信息和能力。第2个函数异步支持手动自动频道搜索等。将信息存储在后台的数据结构中。

  • 频道服务数据(略)
  • 频道服务客户接口

接口作为频道服务子系统的大门。它实现了一些有用的函数和对象。因为同时可以有多个TV程序在跑所以必须设计实现了异步接口。

为了使用这个程序,需要实现这些接口:频道JNI接口。这个接口链接本地平台前端结构和实现的JAVA频道服务。它提供查询平台能力和获取频道前端服务信息的能力。这个借口编译链接成一个共享对象。从JAVA对象中动态打开,检查是否支持已经在平台中的频道消息。

电视频道的回放及录制。

直接实现一个MMLIB DTV PLUG-IN就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章