文獻標識碼: A
文章編號: 0258-7998(2013)07-0124-03
全球信息娛樂技術(shù)的快速發(fā)展以及現(xiàn)代消費娛樂對車載娛樂的沖擊和滲透,給汽車娛樂業(yè)帶了前所未有的機遇和挑戰(zhàn)。依靠傳統(tǒng)DVD播放機已很難滿足未來高端車系的娛樂需求,因此,集成高端消費娛樂電子產(chǎn)品的先進技術(shù)構(gòu)建車載娛樂系統(tǒng),以及實現(xiàn)高端便攜設(shè)備與車載娛樂系統(tǒng)互連等新型設(shè)計理念,將成為車載娛樂系統(tǒng)未來新的發(fā)展趨勢。為此,本研究采用當前先進的硬實時系統(tǒng)QNX為軟件平臺,提出一種新型的車載立體播放系統(tǒng)方案,以實現(xiàn)微型3D影院的車載化。該方案在提升汽車娛樂性的基礎(chǔ)上,對于提高汽車高端品味方面也具有極其重要的意義。
娛樂系統(tǒng)作為區(qū)分所有車系品味高低的重要單元,乘客不僅能體驗到高品質(zhì)的視覺沖擊感,而且有助于減輕旅途疲勞。目前車載播放系統(tǒng)主要有以下3種模式:(1)完全采用DVD播放機進行音視頻解碼播放;(2)車載終端集成音視頻解碼芯片和存儲卡,實現(xiàn)硬解碼播放;(3)采用便攜設(shè)備與車載終端互連實現(xiàn)音視頻播放。傳統(tǒng)低中檔汽車內(nèi)部一般采用第一種模式構(gòu)建其娛樂系統(tǒng),由于傳輸?shù)囊粢曨l數(shù)據(jù)量龐大,極易造成視頻幀丟失和播放延時?,F(xiàn)代汽車播放系統(tǒng)設(shè)計突破傳統(tǒng)模式束縛,引進高性能音視頻解碼芯片實現(xiàn)網(wǎng)絡(luò)互連,使車載娛樂系統(tǒng)發(fā)生了質(zhì)的飛躍。2007年浙江大學(xué)的崔山在車載電腦DVD播放器系統(tǒng)軟件設(shè)計中[1],詳細闡述了傳統(tǒng)車載DVD播放系統(tǒng)的應(yīng)用現(xiàn)狀,并提出一種基于WinCE5.0的終端集成型DVD播放控制模塊,雖有效提高了音視頻播放質(zhì)量,但該系統(tǒng)平臺實時性較差。針對這些不足,2012年QNX軟件系統(tǒng)公司在互連汽車參考計劃一文中[2],前瞻性地提出便攜設(shè)備與車載終端互連的發(fā)展計劃,并為下一代車載娛樂系統(tǒng)設(shè)計了各種外圍接口,但該計劃成本龐大,仍處于評估和實驗階段。
綜上,針對車載播放控制單元傳統(tǒng)應(yīng)用的問題,鑒于及現(xiàn)代應(yīng)用的混雜現(xiàn)狀,提出基于微型立體影院的智能車載播放系統(tǒng)架構(gòu)方案,采用分層邏輯和立體渲染模型的設(shè)計策略,不僅從系統(tǒng)原型和軟件建模方面進行了規(guī)范化的設(shè)計,而且引用成熟的開源庫進行解碼和渲染,有效降低了研發(fā)成本,提高了產(chǎn)品的市場競爭力。
1 系統(tǒng)分層邏輯架構(gòu)
整個系統(tǒng)方案采用分層邏輯的設(shè)計策略,上層負責(zé)接口邏輯調(diào)度,下層負責(zé)接口功能實現(xiàn)。主要由解碼模塊、渲染模塊和人機交互模塊組成,模塊間以消息觸發(fā)方式實現(xiàn)通信邏輯。其核心處理流程如下:
(1)解碼視頻流:調(diào)用FFMPEG庫函數(shù),打開源視頻流文件,根據(jù)頭信息判斷視頻流的有效性。若為可識別視頻流,以時間戳為單位實時讀取包數(shù)據(jù),并以國際規(guī)范組幀到緩存區(qū)。
(2)渲染圖形幀:以幀為單位,采用GLES圖形渲染函數(shù)實時繪制左右視頻圖形幀數(shù)據(jù),并按時間戳顯示圖形到車載終端界面。
(3)播放控制:用戶通過終端播放控制界面,觸發(fā)各功能按鈕指令,實現(xiàn)對整個播放系統(tǒng)的功能控制和狀態(tài)監(jiān)測。
整套播放系統(tǒng)分層邏輯架構(gòu)原型如圖1所示。
另外,該播放控制系統(tǒng)設(shè)計了專門的消息處理機制來協(xié)同播放控制指令和內(nèi)部消息,以保證系統(tǒng)消息的實時處理和用戶指令的快速響應(yīng)。消息處理機制如圖2所示。
由于車載播放控制單元對軟件系統(tǒng)平臺的實時性和可靠性有較高的要求,本方案選用實時性在微秒級的QNX軟件系統(tǒng)平臺,其調(diào)度策略采用高優(yōu)先級搶占模式,確保任何時刻占用CPU都是優(yōu)先級最高的任務(wù)。同時,所有運行于該系統(tǒng)的進程都采用內(nèi)存空間保護策略,獨立于其他進程單獨執(zhí)行,進而保證一個進程的崩潰不會影響其他空間執(zhí)行的進程??梢?,選用的軟件系統(tǒng)平臺不僅以微秒級的延遲提高了視頻圖形幀渲染的實時性,而且充分利用現(xiàn)代新型技術(shù)來保證其內(nèi)核的穩(wěn)定性和安全性。
綜合以上幾方向,該播放控制系統(tǒng)方案不僅從軟件平臺上保證了系統(tǒng)的實時性和可靠性,而且采用分層邏輯和渲染模型構(gòu)建系統(tǒng)原型,有效提升了整個系統(tǒng)的模塊獨立性。
2 系統(tǒng)功能模塊
針對當前車載播放控制系統(tǒng)高昂的開發(fā)成本和較長的開發(fā)周期,本系統(tǒng)選用當前成熟的FFMPEG開源庫作為視頻源的解碼模塊,采用底層圖形渲染庫GLES完成視頻圖形幀的高效渲染。
2.1 視頻源解碼模塊
視頻源解碼模塊作為整個播放控制系統(tǒng)的核心處理單元,主要負責(zé)解析已編碼壓縮的視頻源文件。解碼后的包數(shù)據(jù)以幀為單位保存到緩存區(qū),供后端圖形渲染模型實時提取繪制。其核心處理流程如下:
(1)注冊所有容器格式和編解碼器類型;(2)打開視頻流源文件;(3)從文件中提取流信息;(4)窮舉所有流,查找其中的視頻流類型;(5)查找視頻流對應(yīng)的解碼器;(6)打開編解碼器,并為解碼幀分配內(nèi)存;(7)從碼流中循環(huán)提取幀數(shù)據(jù);(8)判斷圖形幀類型,并送入視頻解碼器;(9)解碼完后,釋放解碼器; (10)關(guān)閉視頻流源文件。
整個視頻流解碼邏輯的偽代碼如下:
void Video_decode_process()
{
av_register_all(); //注冊可用的文件和解碼器
av_open_input_file(); //打開視頻文件
av_find_stream_info(); //取出流信息
for(i=0; i< nb_streams; i++); //遍歷所有流
{
if(codec_type==CODEC_TYPE_VIDEO)
//找到視頻流,音頻流類
break;
}
avcodec_find_decoder(); //尋找相應(yīng)的解碼器
avcodec_open(); //打開解碼器
avcodec_alloc_frame(); //給視頻幀分配空間
while(av_read_frame()>=0) //讀數(shù)據(jù)
{
if(stream_index==videoStream) //判斷流
{
avcodec_decode_video(); //解碼
if(frameFinished)
{
img_convert(); //轉(zhuǎn)換圖像數(shù)據(jù) SaveFrame(); //保存數(shù)據(jù)
}
}
av_free_packet(&packet); //釋放分配給包的空間
}
av_free(pFrame); //釋放已分配的內(nèi)存
avcodec_close(pCodecCtx); //關(guān)閉編解碼器
av_close_input_file(pFormatCtx); //關(guān)閉視頻文件
}
可見,系統(tǒng)視頻解碼邏輯裁剪了大部分冗余處理流程,有效避免了因解碼繁雜而造成的延時和丟幀現(xiàn)象,真正做到了解碼幀率可控的目的。另外,在設(shè)計早期即可通過幀率測試器充分論證圖形渲染效率的高低,為快速研發(fā)高性能車載視頻解碼器提供有力的技術(shù)保障。
2.2 視頻圖形渲染模型
系統(tǒng)設(shè)計基于GLES2.0的立體渲染模型對視頻圖形幀進行實時渲染,主要功能邏輯模塊包括紋理處理、圖形渲染和視域設(shè)置,以完成圖形數(shù)據(jù)的預(yù)處理、視頻幀的渲染和圖形顯示域的設(shè)定。其核心處理流程如下:
(1)開啟圖形渲染專用線程,并行渲染解碼圖形幀數(shù)據(jù);
(2)初始化圖形庫相關(guān)參數(shù)并獲取渲染參數(shù);
(3)不斷向立體渲染模型輸入圖形幀數(shù)據(jù),完成圖形的實時繪制;
(4)收到結(jié)束指令后,退出渲染模型;
(5)釋放已申請的所有內(nèi)存資源。
由于3D立體視頻源包括多碼流圖形幀數(shù)據(jù),渲染模型根據(jù)源碼流頭信息確定分配的渲染模型個數(shù),每個模型以輸入的渲染參數(shù)組織圖形數(shù)據(jù),以同步的方式進行輪詢實時渲染,進而滿足3D眼鏡對多碼流視頻源的同步實時聚焦,單個模型邏輯結(jié)構(gòu)如圖3所示。
從渲染邏輯模型可見,該設(shè)計理念以模塊的獨立性和復(fù)用性為基礎(chǔ),實時獲取當前播放器的各項參數(shù)信息,并根據(jù)當前系統(tǒng)屬性,傳遞最新參數(shù)到渲染容器,以保證用戶和系統(tǒng)消息的快速響應(yīng),并提高渲染容器對龐大圖形數(shù)據(jù)的處理效率。
渲染模塊以GLES2.0為基礎(chǔ),融入實時邏輯設(shè)計理念,封裝了一個高效的立體渲染模型,把復(fù)雜的計算過程分解到GPU中,顯著提高了模塊的實時性和復(fù)用性。
3 實驗結(jié)果及評價
本系統(tǒng)采用飛思卡爾車規(guī)級新型處理器i.MX6Q系列作為硬件平臺,該芯片技術(shù)參數(shù)為:1 GHz CPU主頻,1 GB×32 DDR3(400 MHz),32 MB 16 bit 并行NOR Flash,可擴充的NAND Flash接口,LVDS數(shù)字圖形輸出接口,并集成了基于GLES2.0的GPU圖形硬加速處理單元。軟件平臺選用加拿大哈曼公司開發(fā)的QNX硬實時操作系統(tǒng),并利用其最新的IDE6.5嵌入式開發(fā)套件進行邏輯設(shè)計和代碼測試。
實驗采用德爾福集團公司某車型提供的車載信息娛樂終端系統(tǒng),集成了所研究的立體播放控制單元。立體播放控制單元作為整個娛樂系統(tǒng)終端的一個節(jié)點,乘客可通過佩戴特定立體眼鏡實現(xiàn)對3D視頻的欣賞。輸入的多碼流視頻源經(jīng)立體播放控制單元解碼、渲染、顯示等處理邏輯后,左右眼畫面同步疊加輸出。經(jīng)立體眼鏡過濾,左眼只能看到左放映畫面,右眼只能看到右放映畫面,這些畫面經(jīng)大腦綜合后,即可產(chǎn)生立體視覺。其界面顯示效果如圖4所示。
本研究針對2D和3D兩類車載視頻播放單元進行實驗對比及社會調(diào)查分析,實驗結(jié)果如表1所示。當其他條件完全相同時,3D模塊播放幀率略低于2D模塊,但在人的視感范圍內(nèi),畫面質(zhì)量幾乎不受影響;在CPU占用率方面,3D模塊近似于2D模塊,對整個系統(tǒng)的負載不造成任何影響。另外,社會抽樣調(diào)查結(jié)果顯示,人們普遍青睞于3D的超炫視覺體驗,在條件許可的情況下,近80%的人更愿意配備3D播放控制單元。因此,所做研究和實驗不僅大膽改變傳統(tǒng)設(shè)計理念,而且以先進的立體科技為依托,為未來車載娛樂的發(fā)展提供了重要參考依據(jù)。
在現(xiàn)代車載娛樂系統(tǒng)向立體化、集成化、智能化快速轉(zhuǎn)型的背景下,以探索現(xiàn)代高端汽車娛樂系統(tǒng)的高品質(zhì)、高科技和人性化為研究目標,設(shè)計了一套以微型立體影院為基礎(chǔ)的智能車載3D播放系統(tǒng)。采用以實時性和安全性著稱的QNX系統(tǒng)為軟件運行平臺,提出分層邏輯方案構(gòu)建系統(tǒng)原型;引入FFMPEG解碼庫對多碼流視頻源進行同步實時解碼;設(shè)計基于GLES2.0的多碼流渲染模型,實現(xiàn)圖形幀的實時渲染和顯示。下一步工作是豐富立體顯示模式,滿足更多3D片源格式。
參考文獻
[1] 崔山.車載電腦DVD播放器系統(tǒng)軟件設(shè)計[D].杭州:浙江大學(xué), 2007.
[2] QNX軟件系統(tǒng)公司. QNX互連汽車參考(CAR)計劃[EB/OL]. [2012-06]. http://www.qnx.com.