引言
數字電影,是指以數字技術和設備攝制、制作、存儲,并通過衛星、光纖、磁盤、光盤等物理媒體傳送,將數字信號還原成符合電影技術標準的影像與聲音,放映在銀幕上的影視作品。與傳統電影相比,它具有畫面清晰、穩定性高、節約成本、利于環保等特點。從國際上來看,經過初期階段的摸索,數字電影技術已經相對成熟,創作人員已從過去單純地運用數字特技逐步轉化為將其與傳統攝制、傳統特技融為一體的表現手法。在國內,數字電影經歷了引進、消化、模仿、創新的過程。為了鼓勵和推動我國數字電影的發展進程,國家投入了大量的資金,在全國建設了100多個數字影院。根據我國國情,首先是普及和推進我國社區及農村地區的數字電影的發展,因此,需要大量的低端配置的流動數字電影放映設備。
達芬奇技術是一種內涵豐富的技術綜合體,是美國TI公司推出的針對數字多媒體應用而定制的基于DSP的系統解決方案組件的集合,其為多媒體設備開發者簡化設計并加速產品創新提供了集成的處理器、軟件與工具。TI公司在達芬奇平臺上專門為音視頻編解碼(Codec)多媒體應用精心設計了系統框架,提供了豐富的系統程序接口(SPI)、應用程序接口(API)以及視頻、圖像、話音和音頻千余種流媒體算法組件。應用系統開發者只需將它們封裝成運行包,就能輕松地設計出高可用性和高可靠性的數字視頻產品。
為了滿足我國的實際需求,本文在達芬奇系統硬件平臺的基礎上,利用達芬奇軟件技術,提出了開發數字電影放映系統的方案及其具體實現方法。該方案有利于縮短產品的研發周期,更快地占領市場。
1 硬件設計
數字電影放映系統主要是以數字多媒體處理器TMS320DM6446為核心來實現的。TMS320DM6446是TI公司的高集成度視頻處理芯片,業界稱為達芬奇(DaVinci)數字媒體片上系統(Digital Media system-on-Chip,DMSoC)。圖1為TMS320DM6446功能結構框圖。
如圖1所示,DMSoC包括ARM子系統、DSP子系統、視頻處理子系統(VPSS)、系統控制模塊、電源管理模塊、外部存儲接口、外圍控制模塊和交換中心資源(SCR)等。其中,ARM子系統主要負責TMS320DM6446系統的整體配置和模塊功能控制,以及調用視頻算法。工作頻率近600 MHz的DSP子系統負責視頻算法的執行,其最大處理能力可以達到4800MIPS,極大地增強了音頻和視頻的解碼能力。視頻處理子系統包括1個視頻前端輸入接口(VPFE)和1個視頻末端輸出接口(VPBE),視頻前端輸入接口用于捕獲視頻信號,視頻末端輸出接口將圖像輸出到OSD上顯示。
本系統的結構框圖如圖2所示。系統通過異步外部存儲器接口(EMIF)外接64 MB的NAND Flash,用于存儲啟動代碼和數據,以引導加載ARM Linux操作系統。利用ATA控制器接口外接160 GB 2.5 in的ATA硬盤,主要用于Linux系統的文件系統、應用程序和大量數字影片文件的存儲。由于ATA硬盤輸出的是3.3 V電壓信號,而TMS320DM6446硬盤控制器輸出的電壓信號為1.8 V,為使硬盤與主CPU正常連接,需要電壓轉換芯片來保證硬盤的正常工作。此外,為了方便改變視頻節目及便于實驗的測試,本系統還通過MMC/SD存儲卡接口擴展了2 GB的SD卡和USB2.0接口。利用TMS320DM6446的32位DDR2控制器接256 MB DDR2型SDRAM緩沖視頻輸入圖形數據,作為OSD的緩沖器來存儲ARM和DSP代碼。
系統的視頻前端輸入接口(VPFE)支持復合視頻(CVBS)輸入及S-端子輸入。視頻末端輸出接口VPBE支持模擬視頻輸出,包括復合視頻(CVB-S)輸出、S端子輸出、分量視頻輸出(YPbPr)及VGA輸出;同時,支持數字視頻輸出(DVI)。視頻解碼模塊采用TI公司的高質量視頻解碼芯片TV-P5158,把常見的基帶模擬視頻格式轉換為數字視頻格式。輸入的視頻數據通過TVP5158視頻解碼芯片轉換成10位YUV4:2:2的格式,然后送至視頻前端處理,處理完的數據再經視頻末端處理后保存至硬盤。音頻解碼模塊采用TI公司的低功耗立體聲解碼芯片TLV320AIC33。考慮到系統要接多個模塊,這里利用AIC33串行總線控制支持的I2C協議,通過I2C接口與DSP的音頻端接口相連。另外,為了監控硬件平臺的啟動情況,利用TMS320DM6446集成的UART外設控制器,擴展了UART通用異步串口,配置RS232用于系統啟動時控制臺。
2 軟件設計
數字電影放映系統的軟件設計主要是在Linux系統環境下,利用達芬奇軟件框架結構來完成的。通過將符合數字媒體標準(xDM)的音頻和視頻算法打包在由CodecEngine(代碼引擎)管理的Codec Server(代碼服務器)里,ARM端的應用程序就可以調用集成在Codec Server里的音頻和視頻算法,解碼來自Linux文件系統的音頻、視頻、語音數據,輸出到TMS320DM6446上控制視頻和語音外設的Linux器件驅動器。
2.1 達芬奇軟件開發方法
在進行本系統軟件開發時,軟件開發流程如圖3所示。
軟件開發具體步驟如下:
①DSP端,在TI公司推出的CCS3.3開發環境下,把音視頻解碼算法修改成符合數字媒體標準(xDM)的形式,并編譯生成一個算法的庫文件*.lib(等同于Linux環境下的*.a64P,直接在Linux環境下修改文件后綴名即可)。
②生成一個在DSP上運行的可執行程序*.x64P(即.out文件),也就是Codec Server。本系統的Codec Server里集成了MPEG-2、MPEG-4、H.264、AAC、MP3、G.71l多種形式的音視頻解碼器。
③根據Codec Server的名稱及其中包含的具體的音視頻解碼算法,創建Codec Engine的配置文件*.cfg,包括Engine的不同配置、名稱,每個Engine里包括的Codec以及每個Codec運行在ARM還是DSP端等。例如,在.cfg文件中,可以修改取得Codec模塊的相關語句,按需要引用Codec模塊。取得不同模塊的語句如下;
代碼模塊可以自己開發,也可以充分利用第三方的軟件技術,任何與xDM兼容的算法都可以集成到Codec Server中。這樣就避免了開發的重復性,降低了開發的難度。
④將收集到的不同音視頻Codec包、Codec Server和Engine配置文件*.cfg以及應用程序通過編譯、鏈接,最終生成ARM端可執行文件。
2.2 達芬奇中間框架Codec Engine
Codec Engine是介于應用程序和代碼服務器的中間層,是利用DaVinci技術簡化數字產品開發的關鍵組件。它為應用程序提供了VISA接口,在不必考慮復雜的視頻、圖像、話音和語音處理算法(VISA)的前提下,利用Codec Engine提供的API,應用程序可以方便地調用符合xDM的算法組件。
2.3 ARM端解碼應用程序的設計
本系統的應用程序是在Linux系統環境下,利用DaVinci技術的Codec Engine提供的API來完成的。應用程序運行在TMS320DM6446雙核處理器的ARM端,解碼存儲在硬盤里的音頻、視頻、語音數據,通過視頻末端輸出接口(VPBE)輸出,在OSD上實時顯示。
解碼線程的流程如圖4所示。
應用程序主要包括5個POSIX線程:主線程(控制線程)、視頻線程、顯示線程、語音線程以及音頻線程。從圖4中可以看到,視頻、語音、音頻線程在主線程變成控制線程之前產生。顯示線程由視頻線程產生。“MSP430+IR”用來接收用戶輸入的命令,只有在命令行里提供了一個視頻文件時,才能建立視頻線程。同時,由于音頻和語音要求同樣的外設(AIC33),因此,不能同時解碼音頻和語音文件。此外,所有的線程都是搶占式的,基于優先級的時序(SCHED_FIFO),其中,顯示線程具有最高的優先級,接下來是視頻線程,控制線程的優先級最低。線程的初始化由Rendezvous公用程序模塊來同步。該模塊使用POSIX的條件來同步線程的初始化。每個線程執行其初始化后,通知Rendezvous的對象。所有的線程都結束初始化后,同時解鎖,開始執行主循環。
3 測試結果
本系統的軟件開發是在虛擬機上的Linux操作系統下進行的,Linux操作系統的版本為Monta Vista Linux Professional Edition v4。測試前,用交叉網線將硬件平臺通過交換機與主機相連,并配置NFS(Network File System,網絡文件系統)服務,使得開發板和主機可以互相訪問;同時,在主機的Windows環境下,將開發板與主機用串口線相連,設置超級終端,通過超級終端監控硬件系統的啟動情況,并設置命令參數。
測試時,在超級終端里輸入解碼命令,硬件系統通過MSP430解析輸入的命令,讀取存儲在HDD(硬盤)里的音視頻數據,利用OSD在線顯示解碼的影片。圖5~圖7分別為對MPEG-2、MPEG-4、H.264音視頻的解碼圖像。
結語
本文結合達芬奇數字多媒體技術提出了數字電影放映系統的硬件解決方案及軟件設計方法。利用達芬奇對高層Linux的支持、標準化的API以及產品化的底層驅動器,大大降低了設計數字視頻系統的復雜性,縮短了產品的開發周期。測試表明,所設計的數字電影放映系統支持多種格式的數字影片的高清播放,且具有高穩定性和高可靠性。該設計方案還可以用于其他數字產品的開發,如IP機頂盒、網絡攝像機、醫學圖像處理、視頻會議等。