基于RF5框架的視頻處理系統(tǒng)研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著DSP芯片類型的增多和技術(shù)的不斷提高,DSP向著多功能、高性能、低功耗方向發(fā)展,DSP硬件技術(shù)的更新速度也不斷加快,然而相關(guān)軟件技術(shù)的開發(fā)卻遠(yuǎn)遠(yuǎn)落后于硬件的開發(fā)。TMS320 DSP算法參考框架(Reference Framework,RF)的提出就是為了應(yīng)對(duì)這個(gè)難題。RF為一種使用DSP/BIOS內(nèi)核和TMS320 DSP算法標(biāo)準(zhǔn)的通用初始化代碼,用戶可以通過(guò)使用并修改該通用代碼使之符合eXpressDSP標(biāo)準(zhǔn),以實(shí)現(xiàn)特定的應(yīng)用。按復(fù)雜程度,從用于產(chǎn)生緊縮用戶系統(tǒng)的RFl,到可提供多算法多通道和不同運(yùn)行級(jí)別的RF5等,參考框架分為多個(gè)等級(jí),但目前應(yīng)用最廣泛的為RFl、RF3和RF5。所有的參考框架都是應(yīng)用程序可屏蔽的,每個(gè)參考框架可以適用于多種應(yīng)用程序,包括音頻、視頻、網(wǎng)絡(luò)通信等。
實(shí)際上,參考框架是應(yīng)用程序的藍(lán)本。目前,存儲(chǔ)器管理策略、線程模型和通道封裝是開發(fā)者用于構(gòu)建系統(tǒng)的主要通用框架單元。把這些工作移交給參考框架來(lái)做,開發(fā)者可以專注于自身系統(tǒng)的需求。開發(fā)者可以在參考框架的上層來(lái)構(gòu)建自己的應(yīng)用程序,而不用擔(dān)心下層模塊的穩(wěn)健性和對(duì)目標(biāo)應(yīng)用程序特性的適應(yīng)性。參考框架包含了很多已設(shè)計(jì)成型并且可重用的C語(yǔ)言源代碼。當(dāng)然,參考框架也提供了一些其他的調(diào)整入口點(diǎn),以供應(yīng)用程序做調(diào)整。參考框架的結(jié)構(gòu)如圖1所示。左側(cè)的方框是可提供的框架成員。對(duì)于每一個(gè)成員,都有入口點(diǎn),可用于改變相應(yīng)的應(yīng)用程序。右側(cè)的方框與左側(cè)的方框相對(duì)應(yīng),描述了相應(yīng)框架所能做的改變,包括應(yīng)用行為改變、算法替代、驅(qū)動(dòng)改變和硬件改變。
1 RF5框架
參考框架。RF5適用于含有多通道和多算法結(jié)構(gòu)的高密集度應(yīng)用程序。與低等級(jí)參考框架不同,RF5使用線程(任務(wù)TSK)阻塞,可用于包含線程間有復(fù)雜依賴關(guān)系的應(yīng)用程序。另外,RF5還具有可變的通道管理、基于任務(wù)TSK的應(yīng)用程序、高效的任務(wù)間通信,以及結(jié)構(gòu)化的線程安全控制機(jī)制,且易于替換I/O驅(qū)動(dòng)設(shè)備和易于調(diào)試。
參考框架最重要的要求就是保證易于與用戶硬件接口。每一個(gè)參考架構(gòu)均被打包成基于TI DSP開發(fā)工具包或其他板卡的完整的應(yīng)用程序。針對(duì)每一個(gè)板卡,可以提供不同等級(jí)的參考框架。對(duì)應(yīng)用軟件進(jìn)行調(diào)整以適合參考框架,主要有3個(gè)基本要求:調(diào)整算法單元和改變通道數(shù)量;調(diào)整應(yīng)用程序以使其適應(yīng)硬件系統(tǒng);改變驅(qū)動(dòng)以利于運(yùn)行終端硬件。RF5提供了一個(gè)通道基礎(chǔ)框架,使其很容易就可以封裝XDAIS算法。通過(guò)這一封裝,應(yīng)用程序設(shè)計(jì)者可以很容易地使應(yīng)用程序囊括大量的通道和算
法單元。參考框架RF5模塊的拓?fù)浣Y(jié)構(gòu)如圖2所示。
1.1 RF5數(shù)據(jù)處理
RF5共有4個(gè)基本的數(shù)據(jù)處理部件:任務(wù)(task)、通道(channel)、單元(cell)和標(biāo)準(zhǔn)算法(XDAIS algorithm)。它們之間的關(guān)系如圖3所示。
通常,一個(gè)任務(wù)中可以包括一個(gè)或多個(gè)通道,每個(gè)通道中可以包括一個(gè)或多個(gè)單元,而每個(gè)單元中則封裝有一個(gè)XDAIS算法。單元封裝XDAIS算法的作用在于:提供算法與外部世界的一個(gè)標(biāo)準(zhǔn)接口,每個(gè)單元執(zhí)行一個(gè)簡(jiǎn)單的ICELL接口,通過(guò)該接口執(zhí)行算法。利用通道可以按序執(zhí)行多個(gè)單元,在典型應(yīng)用中,多個(gè)通道可能包含一套執(zhí)行功能相同的單元序列。利用任務(wù)可以同時(shí)處理一個(gè)或多個(gè)通道,其目的在于組織任務(wù)間的數(shù)據(jù)通信和設(shè)備驅(qū)動(dòng)會(huì)話等。與通道不同的是,任務(wù)有具體的執(zhí)行代碼,并需要用戶自己編寫。該部分代碼通常是從外界接收數(shù)據(jù)、控制通道執(zhí)行等。每個(gè)任務(wù)總是反復(fù)執(zhí)行自己的代碼,完成檢查控制信息、獲得數(shù)據(jù)、執(zhí)行通道、發(fā)送數(shù)據(jù)等操作。
1.2 RF5中數(shù)據(jù)通信
RF5中的數(shù)據(jù)通信包括task級(jí)通信和cell級(jí)通信。其通信機(jī)理為使用結(jié)構(gòu)體進(jìn)行信息傳遞,而非通過(guò)全局變量傳輸處理數(shù)據(jù)。
1.2.1 task級(jí)通信
任務(wù)級(jí)通信主要用到了SCOM消息隊(duì)列和郵箱(MBX)。
(1)SCOM
SCOM消息是用戶定義的一個(gè)數(shù)據(jù)結(jié)構(gòu),用于任務(wù)之間交換信息。為實(shí)現(xiàn)信息傳遞,某個(gè)任務(wù)申請(qǐng)一定大小的數(shù)據(jù)緩沖區(qū),以供其他任務(wù)讀/寫數(shù)據(jù)。每個(gè)任務(wù)需要知道其他任務(wù)的緩沖區(qū)位置,并阻止多個(gè)任務(wù)同時(shí)訪問(wèn)自己的緩沖區(qū)。為保證這些功能,利用SCOM消息作為緩沖區(qū)描述器,并將其在任務(wù)之間傳遞。因此,SCOM消息相當(dāng)于其所描述緩沖區(qū)的一個(gè)令牌,擁有該消息(令牌)的任務(wù)可以讀/寫對(duì)應(yīng)的緩沖區(qū)。當(dāng)完成讀/寫操作后,消息將傳遞給另一個(gè)任務(wù),如圖4所示。
(2)郵 箱
在RF5中,任務(wù)通過(guò)郵箱(MBX)接收來(lái)自其他任務(wù)的控制消息。以TI公司提供的JPEG_loopback例程為例,來(lái)自用戶視頻端的圖像質(zhì)量參數(shù)可通過(guò)全局變量傳遞到控制任務(wù)中。若該參數(shù)有所改變,則控制任務(wù)將改變值寫入一個(gè)郵箱中,圖像處理任務(wù)每500個(gè)時(shí)鐘周期檢查一次郵箱,并從郵箱中取出圖像質(zhì)量參數(shù)的改變值,然后進(jìn)行相關(guān)處理。
1.2.2 cell級(jí)通信
eell級(jí)通信同樣基于數(shù)據(jù)緩沖區(qū),且存在一個(gè)內(nèi)部cell通信對(duì)象(ICC對(duì)象),用于對(duì)緩沖區(qū)的描述。每個(gè)cell的輸入、輸出隊(duì)列均指向該ICC對(duì)象。圖5為3個(gè)cell通信的結(jié)構(gòu)圖。
通道中有3個(gè)cell和5個(gè)ICC對(duì)象。cell X從任務(wù)中讀取其數(shù)據(jù),經(jīng)處理后,將其輸出發(fā)送到另外的2個(gè)緩沖區(qū)中(Bur2和Bur3);緩沖區(qū)Bur2供cell Y讀??;Bur3供cell Z讀取,同時(shí)cell Z也讀取cell Y的輸出。最后,任務(wù)讀取cell Z的輸出。
2 視頻處理應(yīng)用
基于RF5參考框架的通用視頻處理系統(tǒng)結(jié)構(gòu)如圖6所示。整個(gè)DSP上的系統(tǒng)由4個(gè)任務(wù)線程組成。TSK_Input線程完成從視頻輸入端口讀數(shù)據(jù),TSK_Output線程完成向視頻輸出端口寫數(shù)據(jù),TSK_Process線程完成視頻流中數(shù)據(jù)的處理,三者之間靠SCOM消息隊(duì)列進(jìn)行同步和消息傳遞。TSK_Process線程中包含一個(gè)數(shù)據(jù)處理通道,該通道中包含一個(gè)cell對(duì)象,由該對(duì)象加載和運(yùn)行封裝的視頻處理算法。視頻處理控制算法可以放在TSK_Control線程中運(yùn)行,也可以合并在視頻處理算法中。TSK_Control線程與TSK_Process線程之間通過(guò)消息信箱完成信息傳遞。
實(shí)現(xiàn)不同任務(wù)之間的通信時(shí),采用SCOM消息隊(duì)列。用RF5的SCOM機(jī)制實(shí)現(xiàn)TSK_Input與TSK_Process之間通信的主要程序如下:
結(jié) 語(yǔ)
RF5是一個(gè)擴(kuò)展性很強(qiáng)的軟件參考框架,其設(shè)計(jì)目的是讓開發(fā)人員避開復(fù)雜的底層設(shè)計(jì),創(chuàng)建基于多通道下復(fù)雜算法的應(yīng)用程序。
采用RF5所帶來(lái)的好處是:系統(tǒng)的模塊化功能比較強(qiáng),系統(tǒng)功能的組合比較方便,通過(guò)修改設(shè)備驅(qū)動(dòng)程序就可以直接運(yùn)行到同類型的其他硬件平臺(tái)上;通過(guò)調(diào)整數(shù)據(jù)處理通道的數(shù)量和通道中算法的數(shù)量、種類及排列順序,可以實(shí)現(xiàn)多種不同的系統(tǒng)功能,配置非常靈活。因此該結(jié)構(gòu)具有很好的通用性,可以直接在其他視頻、圖像的產(chǎn)品項(xiàng)目中使用。