一種基于DSP平臺(tái)的快速H.264編碼算法的設(shè)計(jì)
視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC是由ISO/IEC和ITU-T組成的聯(lián)合視頻專家組(JVT)制定的,他引進(jìn)了一系列先進(jìn)的視頻編碼技術(shù),如4×4整數(shù)變換、空域內(nèi)的幀內(nèi)預(yù)測(cè),多參考幀與多種大小塊的幀間預(yù)測(cè)技術(shù)等,標(biāo)準(zhǔn)一經(jīng)推出,就以其高效的壓縮性能和友好的網(wǎng)絡(luò)特性受到業(yè)界的廣泛推崇。特別是在2004年7月JVT組織做了重要的保真度范圍擴(kuò)展的補(bǔ)充后,更加擴(kuò)大了標(biāo)準(zhǔn)的應(yīng)用范圍,但同時(shí)巨大的運(yùn)算量卻成為其廣泛應(yīng)用的瓶頸??紤]到H.264協(xié)議實(shí)現(xiàn)的復(fù)雜度,本文的思路是:一方面提高硬件處理速度和能力,采用TI公司最新的數(shù)字媒體處理器Davinci TMS320DM6446 DSP芯片作為H.264編碼器實(shí)現(xiàn)的硬件平臺(tái),另一方面提高算法效率。最后提出一個(gè)基于這個(gè)芯片的嵌入式H.264編碼器的設(shè)計(jì)方案。
本文引用地址:http://butianyuan.cn/article/84083.htm1 硬件平臺(tái)
1.1 Davinci DM6446芯片介紹
DM6446采用DSP+ARM的雙內(nèi)核結(jié)構(gòu)(內(nèi)核圖見圖1),其中的DSP芯片的CPU時(shí)鐘頻率可達(dá)594 MHz,ARM的引入可以釋放DSP在控制方面的部分功能,使DSP專門進(jìn)行數(shù)據(jù)處理的工作。芯片采用增強(qiáng)型的哈佛結(jié)構(gòu)總線,其CPU內(nèi)部有2個(gè)數(shù)據(jù)通道,8個(gè)32 b的功能單元,2個(gè)通用寄存器組(A和B),可同時(shí)執(zhí)行8條32 b長(zhǎng)指令。如果能充分利用這8個(gè)功能單元,總字長(zhǎng)為256 b的指令包同時(shí)分配到8個(gè)并行處理單元,在完全流水的情況下,該芯片的指令吞吐量將達(dá)到594×8=4 752 MIPS。處理器具有雙16 b擴(kuò)充功能,芯片能在一個(gè)周期內(nèi)完成雙16 b的乘法、加減法、比較、移位等操作。該芯片內(nèi)部支持兩級(jí)Cache,其中第一級(jí)32 kB的程序緩存器L1P,80 kB的數(shù)據(jù)緩存器L1D,而第二級(jí)的Cache大小是可配置的64 kB,芯片自動(dòng)完成這兩級(jí)Cache之間數(shù)據(jù)一致性的維護(hù)。有了這兩級(jí)Cache的支持將使CPU的執(zhí)行速度大大加快。
Davinci DM6446具有專用的視頻圖像處理子系統(tǒng)。視頻處理子系統(tǒng)包括1個(gè)視頻前端和1個(gè)視頻末端,視頻前端的輸入接口用于接受外部傳感器或視頻譯碼器輸出的BT.656等圖像輸入信息;視頻末端輸出接口輸出圖像,實(shí)現(xiàn)圖像本地重現(xiàn)。
視頻前端輸入(VPFE)接口由1個(gè)CCD控制器(CCDC),1個(gè)預(yù)處理器,柱狀模塊,自動(dòng)曝光/白平衡/聚焦模塊(H3A)和寄存器組成。CCD控制器可以與視頻解碼器CMOS傳感器或電荷耦合裝置連接。預(yù)處理器是一個(gè)實(shí)時(shí)的圖形處理器。
1.2 H.264編碼器硬件平臺(tái)
本系統(tǒng)的平臺(tái)核心處理芯片為Davinci DM6446,如圖2所示,片外RAM選取兩片DDR并聯(lián)成32位的數(shù)據(jù)寬度,空間為256 MB。模擬視頻信號(hào)在“VIDEO IN”引入后經(jīng)過解碼芯片TVP5146變換為數(shù)字信號(hào)后輸入TMS320DM6446芯片中進(jìn)行處理,H.264編碼處理后的碼流可以通過視頻末端輸出保存在本地硬盤上,以方便調(diào)試檢查?;蛘呖梢酝ㄟ^10/100 M以太網(wǎng)物理層接口輸出,進(jìn)行網(wǎng)絡(luò)傳輸。同時(shí),本地的重構(gòu)圖像可以通過TMS320DM6446芯片內(nèi)部OSD模塊和編碼模塊D/A變換后直接顯示輸出。
2 H.264編碼器結(jié)構(gòu)與編碼流程
2.1 H.264編碼器結(jié)構(gòu)
如圖3所示輸入的圖像以宏塊為單位進(jìn)入編碼器中,根據(jù)圖像變化的快慢選擇幀內(nèi)或幀間預(yù)測(cè)編碼。如果選擇幀內(nèi)預(yù)測(cè)編碼,首先判斷當(dāng)前待編碼塊中是否包含很多的細(xì)節(jié),再?zèng)Q定是否要把幀進(jìn)行再分割。接著以重建幀μF′n中的塊為參考,結(jié)合當(dāng)前塊周圍塊的預(yù)測(cè)模式,選擇當(dāng)前塊的最佳預(yù)測(cè)模式。最后由重建幀μF′n中相應(yīng)塊和當(dāng)前塊選定的預(yù)測(cè)模式得到當(dāng)前塊的預(yù)測(cè)值。按照上述方法,對(duì)圖像中的每一宏塊作出幀內(nèi)預(yù)測(cè),進(jìn)而得到一幀圖像的預(yù)測(cè)值P。如果選擇幀間預(yù)測(cè)編碼,當(dāng)前輸入幀F(xiàn)n和前一幀(參考幀)Fn-1被送到運(yùn)動(dòng)估計(jì)器(ME),通過塊搜索,匹配可以得到當(dāng)前幀中的各宏塊相對(duì)于參考幀中對(duì)應(yīng)宏塊的偏移量,也就是常說的運(yùn)動(dòng)矢量。接著,參考幀F(xiàn)n-1和剛得到的運(yùn)動(dòng)矢量MV被送到運(yùn)動(dòng)補(bǔ)償器(MC),通過計(jì)算得到幀間預(yù)測(cè)值P;當(dāng)前幀F(xiàn)n和幀預(yù)測(cè)值P相減,得到殘差Dn,經(jīng)過變換,量化后產(chǎn)生一組量化后的變換系數(shù)X,再經(jīng)過熵編碼,與解碼所需的一些邊信息(如預(yù)測(cè)模式量化參數(shù),運(yùn)動(dòng)矢量等)一起組成一個(gè)壓縮后的碼流,經(jīng)NAL(網(wǎng)絡(luò)自適應(yīng)層)供傳輸和存儲(chǔ)。
評(píng)論