作者:章立(Leon Zhang) ,ARM公司家庭軟件架構師 在上一篇中,我們探討了數字電視/機頂盒軟件架構的現狀與未來,分享了數字家庭軟件平臺未來的發展趨勢和特點(http://bit.ly/jCvlNs)。在本篇中,我們將一起來探討為什么Android能夠成為未來數字家庭軟件平臺的選擇之一;而我們又如何才能將原本為手持設備量身定做的Android移植到電視/機頂盒平臺? 1. 首先,我們需要回答的第一個問題就是: Why Android? 為什么Android能夠成為未來數字家庭軟件平臺的有力競爭者? 先來看看Android自身的天然的優勢: * Android 是一套完整的消費電子設備的軟件解決方案,它包括: o Linux 內核; o 完整的中間件,包括2D/3D圖形,多媒體框架,WebKit,Dalvik虛擬機等等; o 健壯的可以重用的應用程序框架以及便利實用SDK/NDK開發工具。 * Android是個開源項目: o 可以自由的定制和移植;(有碎片化的風險,本文不做討論) o Android基于Apache2.0 license,方便用于商業用途。 * Android的生態系統已經建立: o Google Market上已經有了超過20萬的Android應用 o 每天有超過40萬個Android設備被激活 * Android中集中了大量ARM架構的優化,在ARM上Android可以獲得倍增的性能和用戶體驗。 除了這些優勢,Android移植到電視/機頂盒平臺,劣勢也很明顯: * 沒有TV/STB相關的API,造成Android TV/STB的應用程序框架的非標準化。 * Android不是為TV/STB設計的,需要做大量的定制,移植和優化工作。 * Google完全控制Android,包括新的性能,架構和應用程序框架的變化,路線圖等等。 這對于定制和移植Android的廠商有一定的風險。 * Google官方的GoogleTV 對于AndroidTV的影響: 開發AndroidTV的合作伙伴需要謹慎的考慮GoogleTV對AndroidTV的影響: o 如何兼容GoogleTV? o GoogleTV開源后,如何快速高效的merge到GoogleTV? o 是否可以重用GoogleTV的生態系統? 這些都是需要考慮的問題同時也是風險所在。由于成為GoogleTV Leading Partner有很高門檻,同時GoogleTV開源的時間仍然很難確認,對于希望開發Android TV/STB的合作伙伴,我們建議在軟件架構設計和定制時,考慮到未來兼容GoogleTV的可能性;因為有很多定制和移植工作,即便在GoogleTV 開源后,仍然是需要的。 圖一描述了Google已經發布的針對的不同的目標設備的Android版本。 圖一 Google發布的針對不同設備的Android版本 從圖一我們可以看出GoogleTV是以Android為基礎的一個分支;根據Google最新的路線圖,未來的Android主線會演化成適用于手機,平板和電視三類設備。 2. 那么, 如何才能將Android移植到電視或機頂盒平臺呢?要說清楚這個問題, 首先我們必須明確將Android移植到電視或機頂盒平臺上需要面對哪些挑戰? * 挑戰1 :電視用戶對于用戶界面,圖形的性能以及用戶交互模式有完全不同于手機用戶的體驗。這包括: o TV的分辨率要求至少720p/1080p以及大于30fps的幀率; o TV的OSD要求32位的色彩深度;而android默認的是16bit; o TV的用戶界面,包括界面上內容的組織方式不同于手機; o TV用戶使用遙控器而不是觸摸屏; o TV因為是大屏設備,對2D/3D圖形的性能有更高的要求,需要硬件加速。 * 挑戰 2 : 適合于大屏的豐富的多媒體影音體驗: o 更加優化的多媒體框架; o 支持更多的音視頻文件格式和容器; o 支持更多的音視頻編解碼標準; * 挑戰 3 : 集成DTV/STB功能:集成數字電視協議棧, o 比如DVB-T,DVB-C, ATSC等; o 針對數字電視功能擴展API接口; * 挑戰 4 : 推動應用開發者開發適合于TV的Android應用; * 挑戰 5 : 內容保護 o 如何部署CA? o 如何部署DRM? 接下來我們將來討論如何應對這五大挑戰。由于篇幅關系,本篇將重點討論挑戰1。 在第三篇和第四篇中,我們會依次對其他挑戰展開討論。 首先我們將挑戰1中面臨的問題分為兩類: 第一類:圖形圖像顯示相關的問題: o TV的分辨率要求至少720p/1080p以及大于30fps的幀率; o TV的OSD要求32位的色彩深度;而android默認的是16bit; o TV因為是大屏設備,對2D/3D圖形的性能有更高的要求,需要硬件加速 針對上述問題,需要至少對下列模塊進行修改或集成,如圖二所示: 圖二 應對挑戰1的第一類問題需要涉及的模塊 第二類: 用戶交互模式相關的問題: o TV的用戶界面,包括界面上內容的組織方式不同于手機; o TV用戶使用遙控器而不是觸摸屏; 針對這類問題,需要對Android中的下列模塊進行修改,具體請參見圖三: 圖三 應對挑戰1的第二類問題需要涉及的模塊 3. 2D和3D圖形的性能是Android TV整體性能的關鍵點;在Android中,我們可以通過優化Skia和SurfaceFlinger來加速2D性能。 * 如何優化Skia來加速Full HD的2D體驗? o 重用Skia中大量的Neon優化;或者用Neon進行進一步優化; o 利用GPU(OpenGL ES/OpenVG/…)來做Skia的后端在 o Image Decoder中嵌入硬件decoder。 圖四說明了上述優化可能發生在Skia架構中的哪些模塊? 圖四 Skia優化可能涉及的模塊 * 如何通過優化SurfaceFlinger加速2D? o 在Android1.6(Donut)之前(包含Donut)的版本,需要實現“copybit”的HAL來實現2D硬件加速。 o Android1.6以后的版本,將“Copybit”封裝進了OpenGL ES;通過硬件實現的OpenGL ES 2D API來實現硬件加速。 * Android3.0(Honeycomb)在2D上增加了新的功能,包括: o 通過在AndroidManifest.xml中設置 o 應用開發者可以控制硬件加速的作用域,是全局的還是某個Activity或者某個View o 通過運用GPU可以帶來更加流暢的用戶體驗 在下篇中, 我們將繼續探討如何將Android移植到電視/機頂盒平臺; 同時也會重點介紹GoogleTV以及GoogleTV與AndroidTV之間的對比。 (第二篇完) Leon Zhang, Home Software Architect - Strategic Software Alliance, ARM, Leon has many years of engineer and project leader's experience in a range of products, including DVR, STB, DTV, IPTV and SmartTV(e.g. GoogleTV). Being Home Software Architect, he specializes in the increasingly complex software stacks required to power the next generation of internet connected, smart TV and digital home.And being a member of Strategic Software Alliance, he is helping to build a strong software ecosystem for ARM Home partners. Leon graduated from Tongji University with the degree of Master . He is currently based in Shanghai, China. 章立(Leon Zhang) 是ARM的家庭軟件架構師 ,同時他也是ARM戰略軟件聯盟部門的一員. Leon 擁有多年產品開發和項目管理經驗, 曾經參與了數字錄像機、機頂盒、數字電視,網絡電視以及智能電視(如GoogleTV)等產品的開發。作為家庭軟件架構師,他專注于下一代互聯網智能電視及數字家庭的軟件架構. 而作為戰略軟件聯盟的成員,他致力于為ARM家庭應用市場的合作伙伴建立強大的軟件生態系統。 Leon 碩士畢業于同濟大學。 他的工作地點在中國上海. |