數(shù)字電影放映系統(tǒng)實(shí)現(xiàn)方案
2.3 ARM端解碼應(yīng)用程序的設(shè)計(jì)
本系統(tǒng)的應(yīng)用程序是在Linux系統(tǒng)環(huán)境下,利用DaVinci技術(shù)的Codec Engine提供的API來完成的。應(yīng)用程序運(yùn)行在TMS320DM6446雙核處理器的ARM端,解碼存儲(chǔ)在硬盤里的音頻、視頻、語音數(shù)據(jù),通過視頻末端輸出接口(VPBE)輸出,在OSD上實(shí)時(shí)顯示。
解碼線程的流程如圖4所示。
應(yīng)用程序主要包括5個(gè)POSIX線程:主線程(控制線程)、視頻線程、顯示線程、語音線程以及音頻線程。從圖4中可以看到,視頻、語音、音頻線程在主線程變成控制線程之前產(chǎn)生。顯示線程由視頻線程產(chǎn)生?!癕SP430+IR”用來接收用戶輸入的命令,只有在命令行里提供了一個(gè)視頻文件時(shí),才能建立視頻線程。同時(shí),由于音頻和語音要求同樣的外設(shè)(AIC33),因此,不能同時(shí)解碼音頻和語音文件。此外,所有的線程都是搶占式的,基于優(yōu)先級的時(shí)序(SCHED_FIFO),其中,顯示線程具有最高的優(yōu)先級,接下來是視頻線程,控制線程的優(yōu)先級最低。線程的初始化由Rendezvous公用程序模塊來同步。該模塊使用POSIX的條件來同步線程的初始化。每個(gè)線程執(zhí)行其初始化后,通知Rendezvous的對象。所有的線程都結(jié)束初始化后,同時(shí)解鎖,開始執(zhí)行主循環(huán)。
3 測試結(jié)果
本系統(tǒng)的軟件開發(fā)是在虛擬機(jī)上的Linux操作系統(tǒng)下進(jìn)行的,Linux操作系統(tǒng)的版本為Monta Vista Linux Professional Edition v4。測試前,用交叉網(wǎng)線將硬件平臺(tái)通過交換機(jī)與主機(jī)相連,并配置NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))服務(wù),使得開發(fā)板和主機(jī)可以互相訪問;同時(shí),在主機(jī)的Windows環(huán)境下,將開發(fā)板與主機(jī)用串口線相連,設(shè)置超級終端,通過超級終端監(jiān)控硬件系統(tǒng)的啟動(dòng)情況,并設(shè)置命令參數(shù)。
測試時(shí),在超級終端里輸入解碼命令,硬件系統(tǒng)通過MSP430解析輸入的命令,讀取存儲(chǔ)在HDD(硬盤)里的音視頻數(shù)據(jù),利用OSD在線顯示解碼的影片。圖5~圖7分別為對MPEG-2、MPEG-4、H.264音視頻的解碼圖像。
結(jié)語
本文結(jié)合達(dá)芬奇數(shù)字多媒體技術(shù)提出了數(shù)字電影放映系統(tǒng)的硬件解決方案及軟件設(shè)計(jì)方法。利用達(dá)芬奇對高層Linux的支持、標(biāo)準(zhǔn)化的API以及產(chǎn)品化的底層驅(qū)動(dòng)器,大大降低了設(shè)計(jì)數(shù)字視頻系統(tǒng)的復(fù)雜性,縮短了產(chǎn)品的開發(fā)周期。測試表明,所設(shè)計(jì)的數(shù)字電影放映系統(tǒng)支持多種格式的數(shù)字影片的高清播放,且具有高穩(wěn)定性和高可靠性。該設(shè)計(jì)方案還可以用于其他數(shù)字產(chǎn)品的開發(fā),如IP機(jī)頂盒、網(wǎng)絡(luò)攝像機(jī)、醫(yī)學(xué)圖像處理、視頻會(huì)議等。
評論