基于TMS320DM6446的數(shù)字電影放映系統(tǒng)設(shè)計(jì)
2 軟件設(shè)計(jì)
數(shù)字電影放映系統(tǒng)的軟件設(shè)計(jì)主要是在Linux系統(tǒng)環(huán)境下,利用達(dá)芬奇軟件框架結(jié)構(gòu)來(lái)完成的。通過將符合數(shù)字媒體標(biāo)準(zhǔn)(xDM)的音頻和視頻算法打包在由CodecEngine(代碼引擎)管理的Codec Server(代碼服務(wù)器)里,ARM端的應(yīng)用程序就可以調(diào)用集成在Codec Server里的音頻和視頻算法,解碼來(lái)自Linux文件系統(tǒng)的音頻、視頻、語(yǔ)音數(shù)據(jù),輸出到TMS320DM6446上控制視頻和語(yǔ)音外設(shè)的Linux器件驅(qū)動(dòng)器。
2.1 達(dá)芬奇軟件開發(fā)方法
在進(jìn)行本系統(tǒng)軟件開發(fā)時(shí),軟件開發(fā)流程如圖3所示。本文引用地址:http://cafeforensic.com/article/166312.htm
軟件開發(fā)具體步驟如下:
①DSP端,在TI公司推出的CCS3.3開發(fā)環(huán)境下,把音視頻解碼算法修改成符合數(shù)字媒體標(biāo)準(zhǔn)(xDM)的形式,并編譯生成一個(gè)算法的庫(kù)文件*.lib(等同于Linux環(huán)境下的*.a(chǎn)64P,直接在Linux環(huán)境下修改文件后綴名即可)。
②生成一個(gè)在DSP上運(yùn)行的可執(zhí)行程序*.x64P(即.out文件),也就是Codec Server。本系統(tǒng)的Codec Server里集成了MPEG-2、MPEG-4、H.264、AAC、MP3、G.71l多種形式的音視頻解碼器。
③根據(jù)Codec Server的名稱及其中包含的具體的音視頻解碼算法,創(chuàng)建Codec Engine的配置文件*.cfg,包括Engine的不同配置、名稱,每個(gè)Engine里包括的Codec以及每個(gè)Codec運(yùn)行在ARM還是DSP端等。例如,在.cfg文件中,可以修改取得Codec模塊的相關(guān)語(yǔ)句,按需要引用Codec模塊。取得不同模塊的語(yǔ)句如下;
代碼模塊可以自己開發(fā),也可以充分利用第三方的軟件技術(shù),任何與xDM兼容的算法都可以集成到Codec Server中。這樣就避免了開發(fā)的重復(fù)性,降低了開發(fā)的難度。
④將收集到的不同音視頻Codec包、Codec Server和Engine配置文件*.cfg以及應(yīng)用程序通過編譯、鏈接,最終生成ARM端可執(zhí)行文件。
2.2 達(dá)芬奇中間框架Codec Engine
Codec Engine是介于應(yīng)用程序和代碼服務(wù)器的中間層,是利用DaVinci技術(shù)簡(jiǎn)化數(shù)字產(chǎn)品開發(fā)的關(guān)鍵組件。它為應(yīng)用程序提供了VISA接口,在不必考慮復(fù)雜的視頻、圖像、話音和語(yǔ)音處理算法(VISA)的前提下,利用Codec Engine提供的API,應(yīng)用程序可以方便地調(diào)用符合xDM的算法組件。
2.3 ARM端解碼應(yīng)用程序的設(shè)計(jì)
本系統(tǒng)的應(yīng)用程序是在Linux系統(tǒng)環(huán)境下,利用DaVinci技術(shù)的Codec Engine提供的API來(lái)完成的。應(yīng)用程序運(yùn)行在TMS320DM6446雙核處理器的ARM端,解碼存儲(chǔ)在硬盤里的音頻、視頻、語(yǔ)音數(shù)據(jù),通過視頻末端輸出接口(VPBE)輸出,在OSD上實(shí)時(shí)顯示。
解碼線程的流程如圖4所示。
應(yīng)用程序主要包括5個(gè)POSIX線程:主線程(控制線程)、視頻線程、顯示線程、語(yǔ)音線程以及音頻線程。從圖4中可以看到,視頻、語(yǔ)音、音頻線程在主線程變成控制線程之前產(chǎn)生。顯示線程由視頻線程產(chǎn)生。“MSP430+IR”用來(lái)接收用戶輸入的命令,只有在命令行里提供了一個(gè)視頻文件時(shí),才能建立視頻線程。同時(shí),由于音頻和語(yǔ)音要求同樣的外設(shè)(AIC33),因此,不能同時(shí)解碼音頻和語(yǔ)音文件。此外,所有的線程都是搶占式的,基于優(yōu)先級(jí)的時(shí)序(SCHED_FIFO),其中,顯示線程具有最高的優(yōu)先級(jí),接下來(lái)是視頻線程,控制線程的優(yōu)先級(jí)最低。線程的初始化由Rendezvous公用程序模塊來(lái)同步。該模塊使用POSIX的條件來(lái)同步線程的初始化。每個(gè)線程執(zhí)行其初始化后,通知Rendezvous的對(duì)象。所有的線程都結(jié)束初始化后,同時(shí)解鎖,開始執(zhí)行主循環(huán)。
評(píng)論