【文章內(nèi)容簡介】
使得開發(fā)人員不需要重新學習新的開發(fā)環(huán)境,因為它的編程環(huán)境基本上沒有變化,在一方面體現(xiàn)了達芬奇技術(shù)的優(yōu)勢,而且開發(fā)人員還能充分利用達芬奇技術(shù)的其他優(yōu)勢。 DaVinci 硬件結(jié)構(gòu)TMS320DM6446 是 TI 公司于 2022 年 12 月推出的高度集成的雙核視頻處理芯片,該芯片是 361 腳(引腳間距是 )BGA 封裝,圖 是它的內(nèi)部功能模塊。DMSoc 包括 ARM 子系統(tǒng)、DSP 子系統(tǒng)、視頻處理子系統(tǒng)(VPSS)和系統(tǒng)控制模塊;另外有交換中心資源(SCR)、外部存儲接口、電源管理和外圍控制模塊等。J T A G 接口C L O C KP O W E R /R e s e t多重管腳系統(tǒng)控制A R M C P UA R M C P U1 6 K B I C a c h e8 K B D C a c h e1 6 K B R A M8 K B R O MA R M 子系統(tǒng)D S P C P U6 4 K B L 2 R A M3 2 K B L 1 P R A M6 4 K B L 1 D R A MD S P 子系統(tǒng)V I C PP r e v i e wH i s t o g r a m / 3 AR e s i z e rC C D 控制器V i d e o 視頻接口在線視頻顯示( O S D )視頻編碼( V E N C )1 0 b D A C1 0 b D A C1 0 b D A CV P F EV P B EV P S S交換中心資源 ( S C R )E D M A音頻串行接口S P I I 2 CU A R Tx 3T i m e rx 2W DT i m e rP W Mx 3U S B 2 . 0P H YV L Y N QE M A C /M D I OD D R 2 CE M I F /N A N D /S m a r t M e d i aA T A /C o m p a c t F l a s hM M C / S D外圍設備串行接口 系統(tǒng)連通性程序 / 數(shù)據(jù)存儲器 TMS320DM6446功能結(jié)構(gòu)圖8 / 48ARM 子系統(tǒng)采用的是工作頻率達到 297MHZ 的 ARM926EJS 內(nèi)核 CPU(管道化流水線 32bit 的 RISC 處理器),ARM 系統(tǒng)相當于整個系統(tǒng)的 HOST,負責控制整體配置及外圍的操作,甚至包括 DSP 端的算法調(diào)用。ARM926EJS 使用協(xié)處理器CP15 和保護模塊增強了體系結(jié)構(gòu),能處理 16bit 或 32bit 的指令和 8bit、i6bit 及32bit 的數(shù)據(jù),同時提供程序和數(shù)據(jù)內(nèi)存管理單元(MMU) 。ARM 用獨立的 16KB 指令存儲和 8KB 數(shù)據(jù)存儲來保證內(nèi)核周期的存取指令和數(shù)據(jù),指令存儲和數(shù)據(jù)存儲都是通過 VIVJ 四路連接。另外,還有一個用來提升內(nèi)核性能的寫緩存,緩存數(shù)據(jù)達17KB。DSP 子系統(tǒng)采用的是工作頻率達到 594MHZ 的 TMS320C64+TMDSP 內(nèi)核的CPU,支持 、 的 I/O 及儲存器接口。DSP 主要是負責視頻處理算法的編碼工作,它 16bitMAC 的處理能力可達 237MMACS(AMCs per Second),而 8bitMAC處理能力可高達到 4752MMACS(AMCs per Second)。DSP 系統(tǒng)具有 64 個 32bit 的通用寄存器和 8 個獨立的功能單元 (包括 6 個算數(shù)邏輯單元及 2 個乘法器)。DM6446 中視頻處理子系統(tǒng)(VPSS)接口分為視頻處理前端(VPFE 主要用于獲取經(jīng)過視頻解碼器處理過后的數(shù)字視頻數(shù)據(jù)信息)和視頻處理后端(VPBE 主要用于壓縮處理后視頻的輸出),視頻處理子系統(tǒng)(VPSS)的視頻處理前端(VPFE )用來連接至前方的視頻解碼芯片 TVP5146,提供數(shù)字視頻的輸入;它的視頻處理后端(VPBE )可以連接至后方的高清顯示器、或者視頻解碼器及網(wǎng)絡傳輸模塊等。在芯片內(nèi)部的公共緩沖區(qū)(通過內(nèi)部的 128 位總線通信)和 DMA 控制器確保了 DDR2 存儲器與視頻處理子系統(tǒng)(VPSS)的高效通信。圖 為視頻處理子系統(tǒng)框圖。視頻處理前端的輸入模式主要包括以下幾種:(1)一般數(shù)字接口模式,該模式主要用于數(shù)字傳感器的接入;(2) 視頻流模式,該模式在視頻流內(nèi)嵌行場同步信號;(3)標準 YUV 模式,該模式兼容 8 位或 16 位的標準 YCbCr4:2:2 格式 ???。9 / 48共享緩沖邏輯S B L圖像縮放引擎預覽H 3 AC C D控制器O S DV E N C時鐘中斷直方圖控制總線接口V P F EV P B E模擬輸出數(shù)字輸出C M O S / C C D /視頻解碼器輸入圖 視頻處理子系統(tǒng)框圖視頻處理后端(VPBE )主要用于數(shù)字視頻數(shù)據(jù)流的輸出,其接口主要由OSD(實現(xiàn)畫中畫并在視頻上疊加音量等信息)引擎和視頻編碼器(支持數(shù)字輸出和模擬輸出)組成。數(shù)字輸出支持 24bit RGB 格式、 8/16bit 以及具有獨立的水平和垂直同步能力的 輸出;模擬輸出支持四路 10bit DAC,均工作于54MHz,支持符合 NTSC/PAL、S 端子和分量視頻。 DaVinci 軟件體系達芬奇參考軟件框架分為應用層(ARM)、信號處理層(DSP)和 I/O 層三部分,如圖 所示,應用層供硬件平臺 ARM 處理器運行,主要負責全局的控制;信號處理層則于 DSP 處理器一側(cè)運行,它主要負責處理視頻圖像信號;I/O 層也就是驅(qū)動,主要負責運行 TMS320DM6446 處理器外圍模塊的驅(qū)動程序,比如我們?yōu)閳D像傳輸系統(tǒng)設計的 EMIF 外設的驅(qū)動。目前 TI 公司已經(jīng)提供了一些常用的外設驅(qū)動程序,如果開發(fā)者自己的研究項目有特殊要求,則需要自己開發(fā)相應的驅(qū)動程序。應用層通過 Codec Engine 的 VISA(視頻,圖像,語音,音頻 )API 來調(diào)用 DSP 處理器的算法,實現(xiàn)圖像、音頻和視頻的各種處理,如壓縮、解壓縮等,比如要實現(xiàn) 算法標準,就必須調(diào)用 相關(guān)的編解碼 API。10 / 48應用層L i n u x 等應用平臺E P S I A P II / O 層針對操作系統(tǒng)的各種驅(qū)動各種輸入輸出的硬件外設信號處理層D S P 部分主要包括 :C o d e c sC o d e c E n g i n eD S P / B I O S內(nèi)部通信協(xié)議VISAAPI圖 達芬奇處理器軟件結(jié)構(gòu)目前,這些 API 函數(shù)已經(jīng)由 TI 公司開發(fā)完畢,開發(fā)者直接調(diào)用他們即可,因此,對于它們的許多細節(jié),開發(fā)者不需要了解。在此,我們只給出 API 函數(shù)實現(xiàn)的步驟,如圖 所示。發(fā)布使用的 C o d e c 包x D M N o n x D M可執(zhí)行應用程序各種不同的 C o d e c 包運行在 D S P 上的可執(zhí)行程序D S P / B I O S F C L I N K X D C各種引擎配置S e r v e r 名稱 C o d e c 列表算法工程師C o d e c S e r v e r 集成工程師應用程序創(chuàng)建者C o d e c E n g i n e 集成工程師* . a 6 4 p* . x 6 4 p* . c f g圖 達芬奇編解碼引擎開發(fā)步驟由圖 可知,達芬奇 API 接口函數(shù)的軟件開發(fā)有以下四個步驟:(1)在 DSP 端,利用 開發(fā)相關(guān)標準的音 /視頻編/解碼算法,并且要編譯生成一個編/解碼算法的庫文件(*.lib) 。另外算法實現(xiàn)必須要符合 xDM 標準;(2)生成一個在 DSP 硬件平臺上運行的可執(zhí)行程序(.out )文件DSP Server;(3)根據(jù) DSP Server 的名字及其包含的音 /視頻編/ 解碼算法創(chuàng)建 Codec Engine的配置文件(*.cfg) 。由這個文件來決定 Engine 里的 codec 運行在哪一側(cè)(ARM 或DSP) ,它還可以定義 Engine 的名字及其包括的 codec,形成相關(guān)的 API 函數(shù);(4)應用工程師收到不同的 codec 包、DSP Server 和 Engine 配置文件(*.cfg) ,把自己的應用程序通過編譯、連接,最終生成 ARM 側(cè)可執(zhí)行文件 ???。11 / 48在視頻處理器中 ARM 是 HOST 負責操作系統(tǒng)的應用,而 DSP 主要運行 codec算法處理,ARM 則是通過 codec engine 機制調(diào)用 DSP 端的 codec 算法,codec engine 是介于應用程(ARM)和信號處理層(DSP)之間的軟件模塊,扮演很重要的角色。它是配置和運行 xDAIS 算法的 API,同時提供 VISA 接口。Codec 引擎的作用結(jié)構(gòu)如圖 。應用開發(fā) 音視頻上層應用程序C o d e c E n g i n e 運行時庫E n g i n e 集成核心 E n g i n e運行時庫S e r v e r 集成核心 E n g i n e A P I sV I S A A P I s音視頻編解碼s t u b s音視頻編解碼s k e l e t o nV I S A S P I s算法創(chuàng)建編碼算法解碼算法Core Engine SPIs圖 Codec 引擎結(jié)構(gòu)圖引入 codec engine 可以克服以下問題:(1)異構(gòu)處理器環(huán)境下很復雜的調(diào)試;(2)相同的算法具有不同的實現(xiàn),如果想轉(zhuǎn)換為更為有效的算法,將會涉及到大量的再次編程;(3)市場上有多種多樣的媒體格式,所以應用程序必須支持多個編解碼器;(4)習慣在 GPP 上編程的程序員要使用 DSP 編程,必須掌握復雜的 DSP 存儲器管理和 DSP 實時問題。 算法 壓縮算法電視信號可以數(shù)字化是在 1948 年提出,到目前為止已經(jīng)有六十多年的歷史,圖像編碼技術(shù)無論是在理論上還是實際應用方面都取得了很大的成果。從最初的 視頻編碼到 、 以及 MPEGMPEG2 、MPEG4(2)等視頻編12 / 48碼標準都有一個在盡量低的碼率/存儲容量下得到最理想圖像的共同目標。另外,隨著 3G 無線網(wǎng)絡的發(fā)展市場對圖像傳輸?shù)男枨笾饾u增加,所以業(yè)界急需解決適應不同信道傳輸特性的問題。為了克服這些難題,國際標準化組織 ISO/IEC 和 ITU 聯(lián)手制定了視頻編解碼新標準——。 它既是 ITU 的 ,又是 ISO/IEC 的 MPEG4 的第 10 部分,也是DPCM 加變換編碼的混合編碼模式。但是它的簡潔設計“回歸基本” ,不僅對信道的適應能力加強,而且還使其壓縮性能比 好很多;為了方便處理誤碼和丟包,“網(wǎng)絡友好”的結(jié)構(gòu)和語法為之所用;而且它能滿足不同解析度、速率和傳輸(存儲)方面的要求,所以擁有更廣泛的應用目標;另外,它還有一大優(yōu)勢是開放的基本系統(tǒng),任何人都可以使用沒有版權(quán)。在技術(shù)方面, 具有的高精度的位移估計、分層的編碼語法等許多閃光點使其編碼效率相當高,在相同比特率情況下 標準重建圖像的質(zhì)量是 標準的 2 倍左右。在網(wǎng)絡適應性方面, 標準增加了差錯回復能力,其碼流結(jié)構(gòu)能夠很好的適應 IP 和無線網(wǎng)絡的應用,也給設計的實現(xiàn)帶來了方便 ???。 標準定義了視頻編碼層(VCL)和網(wǎng)絡抽象層( NAL)兩個層次。視頻編碼層采用基于塊的混合編碼方法,通過幀間預測來減少運動圖像時域上的相關(guān)信息,通過對預測殘差進行正交變換來減少運動圖像空間上的相關(guān)信息。其中視頻編碼層(VCL)盡可能的不依靠任何網(wǎng)絡特性進行視頻壓縮,編碼后輸出 VCL 數(shù)據(jù),傳輸先映射到對數(shù)據(jù)輸出進行適配的網(wǎng)絡抽象層(NAL) 。每個 NAL 單元包含原字節(jié)序列負載(RBSP ) ,接著一組數(shù)據(jù)對應的編碼視頻數(shù)據(jù)或 NAL 頭信息。 的框圖如圖 所示。13 / 48控制數(shù)據(jù)視頻編碼層 ( V A L )數(shù)據(jù)劃分網(wǎng)絡抽象層 ( N A L )H . 3 2 0M P 4 F F M P E G 2 . . .編碼后的宏塊編碼后的片 / 分區(qū)圖 的框架圖編碼器的視頻編碼層(VAL)使用的是混合(變換和預測)編碼方法,幀內(nèi)預測就是利用周圍已經(jīng)編碼的像素進行預測從而減少空間上的冗余,幀間預測則是利用上一時刻編碼的像素進行預測從而減少信息時間上的冗余。 編碼器的結(jié)構(gòu)如圖 所示,在進行壓縮編碼時,首先將原始圖像劃分為 16*16 像素點的宏塊(可以是 8*8) ,在宏塊中進行幀內(nèi)和幀間預測減少信息量。預測以后將預測值(P) 和原生值進行比較得到殘差值 Dn,對殘差值 Dn 進行變換(T) 、量化(Q) 、重排序、熵編碼,形成視頻碼流傳到網(wǎng)絡抽象層(NAL)進行傳輸或者保存解碼。圖 編碼器結(jié)構(gòu)因為幀預測所需要的參考值來自已經(jīng)編碼的宏塊,所以需要對量化后的系數(shù) X進行反量化(Q 1) 、反變換(T 1)操作,得到的值與之前的預測值( P)相加得到粗略的重構(gòu)圖像,再經(jīng)過去塊效應濾波得到最終的重建圖像。 圖像分割算法視頻運動對象分