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就可以了。

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