摘要:在TMS320DM643平臺上實現(xiàn)H.264基檔次編碼器的移植與優(yōu)化顯得格外實用和必要。基于對DSP平臺的結(jié)構(gòu)特性和H.264的計算復(fù)雜度分析,主要從核心算法、數(shù)據(jù)傳輸和存儲器/Cache使用幾方面對H.264編碼器進行了優(yōu)化。實驗結(jié)果表明,對于CIF格式的視頻序列,優(yōu)化后的H.264編碼器能夠達到每秒高于24幀的編碼速度,滿足了視頻處理對于實時性的要求。
關(guān)鍵詞:H.264編碼;TMS320DM643;算法優(yōu)化
0 引言
針對視頻通信中傳輸帶寬或存儲容量與視頻質(zhì)量的矛盾,ITU-T的VCEG和ISO/IEC的MPEG聯(lián)合制定了低碼率視頻壓縮標(biāo)準(zhǔn)H.264。相對于以往的標(biāo)準(zhǔn),H.264除了增強了網(wǎng)絡(luò)適應(yīng)能力外,大幅度提高了壓縮編碼效率,在相同的碼率下能夠獲得更高的主客觀質(zhì)量。2003年5月,H.264/AVC標(biāo)準(zhǔn)正式推出,正式名稱為H.264 MPEG-4 part 10 AVC(Advanced Video Coding),以下簡稱為H.264標(biāo)準(zhǔn)。
1 編碼器
H.264仍采用圖像預(yù)測和變換編碼相結(jié)合的編碼結(jié)構(gòu),編碼器采用的仍是變換和預(yù)測的混合編碼法。輸入的幀或場以宏塊為單位被編碼器處理。首先,按幀內(nèi)或幀間預(yù)測編碼的方法進行處理。如果采用幀內(nèi)預(yù)測編碼,其預(yù)測值PRED是由當(dāng)前片中前面己編碼的參考圖像經(jīng)運動補償(MC)后得出,與解碼所需的一些邊信息(如預(yù)測模式量化參數(shù)、運動矢量等)一起組成一個壓縮后的碼流,經(jīng)NAL(網(wǎng)絡(luò)自適應(yīng)層)供傳輸和存儲用。為了提供進一步預(yù)測用的參考圖像,編碼器必須有重建圖像的功能。因此必須使殘差圖像經(jīng)反量化、反變換后得到。為了去除編碼解碼環(huán)路中產(chǎn)生的噪聲,為了提高參考幀的圖像質(zhì)量,從而提高壓縮圖像性能,設(shè)置了一個環(huán)路濾波器。即重建圖像可用作參考圖像。
1.1 視頻編碼的硬件結(jié)構(gòu)
H.264視頻編碼器硬件結(jié)構(gòu)如圖1所示。FLASH模塊用于存放程序,EEPROM用于存放編碼系統(tǒng)的初始化配置信息和系統(tǒng)MAC層地址。片內(nèi)SRAM用于緩存當(dāng)前正在處理的宏塊數(shù)據(jù),以及一些頻繁調(diào)用的數(shù)據(jù)段和程序段。外接存儲器SDRAM主要用于存儲原始幀、參考幀和重建幀的源數(shù)據(jù)。片內(nèi)、片外存儲器之間的數(shù)據(jù)傳輸借助EDMA在后臺操作,這樣可并行處理數(shù)據(jù)傳輸和運算操作,提高效率。
1.2 DSP芯片簡介
DM643的EDMA可在64個獨立的通路上,提供超過2GB/s的I/O帶寬。此外,運用兩級片內(nèi)高速緩存Cache和64位外部存儲器接口(EMIF),可方便地實現(xiàn)與同步/異步存儲器的無縫連接。DM643還集成了多種新型的片內(nèi)外設(shè),以適應(yīng)于媒體數(shù)字化處理和網(wǎng)絡(luò)通信的應(yīng)用:(1)三個可配置的視頻端口,提供和通用視頻A/D和D/A芯片的無縫接口;(2)壓控晶體振蕩器插值控制端口,用于與MPEG-2傳輸流接口時的系統(tǒng)時鐘恢復(fù);(3)管理數(shù)據(jù)輸入輸出模塊,用于列舉系統(tǒng)中的物理層設(shè)備并監(jiān)視它們的連接狀態(tài)。[!--empirenews.page--]
1.3 H.264編碼算法的主要特征
H.264編碼算法進行了一系列的改進和擴展,明顯改善編碼效率的特征如下:
(1)網(wǎng)絡(luò)適配層NAL:傳統(tǒng)的視頻編碼編完的視頻碼流在任何應(yīng)用領(lǐng)域下都是統(tǒng)一的碼流模式,視頻碼流僅有視頻編碼層。(2)自適應(yīng)塊大小編碼模式:H.264允許使用16×16、16×8、8×16、8×8、8×4、4×8、4×4等子塊預(yù)測和編碼模式,采用更小塊和自適應(yīng)編碼的方式,使預(yù)測殘差的數(shù)據(jù)量減少,進一步降低了碼率。(3)多幀運動補償技術(shù):傳統(tǒng)的視頻壓縮編碼采用一個或兩個解碼幀作為當(dāng)前預(yù)測的參考幀。
2 算法優(yōu)化
如上所述,運動估計,整數(shù)余弦變換/反整數(shù)余弦變換,量化是H.264編碼器中最耗時的部分。因此,這3項是優(yōu)化的主要對象。
2.1 運動估計
視頻序列圖像在時間上存在很強的相關(guān)性,采用運動估計和運動補償技術(shù)可以消除時間冗余以提高編碼效率。運動估計粗略分為全局運動估計、基于像素點運動估計、基于塊運動估計和基于區(qū)域地運動估計。
H.264標(biāo)準(zhǔn)采用塊運動估計匹配算法,它包含匹配原則(主要有MAD、MSE和NCCF三類),搜索范圍,搜索方案等。但是搜索算法是影響塊匹配算法性能的主要因素。在整像素的運動估計中,采用了基于菱形搜索算法。
2.2 CPU與緩存之間的數(shù)據(jù)傳輸
DM643有一個兩級(Level2)高性能Cache結(jié)構(gòu),它們都有16 kB的獨立存儲器,并且均可以被存入兩級Cache中。兩級Cache可以被設(shè)置為Cache,SRAM或者Cache,SRAM的一部分。CPU與Cache之間的數(shù)據(jù)讀取過程如圖3所示。
[!--empirenews.page--]
2.3 ICT/反ICT和量化
原始的ICT/IICT和量化算法不能夠充分發(fā)揮DSP的并行優(yōu)勢,以至于8個功能單元在編碼的過程中都處于閑置狀態(tài),存儲器中的數(shù)據(jù)被頻繁重復(fù)的訪問也導(dǎo)致了DSP運行效率的降低。在圖4所示中,提出對于ICT/IICT和量化部分的算法圖例,一個宏塊中所有基于4×4塊的IC-T/IICT變換都能夠同時執(zhí)行,這充分利用了DSP的8個功能單元。實驗結(jié)果表明,經(jīng)量化后,計算一個ICT/HCT的4×4塊僅僅需要12個平均周期。這一優(yōu)化不但提高了算法的速度又顯著地降低了碼流大小,使視頻信號的實時處理成為可能。
3 實驗結(jié)果分析
在600 MHz的TMS320DM643平臺上,通過開發(fā)軟件CCS載入開源代碼X264構(gòu)架對CIF格式的5個視頻序列(Akiyo,News,F(xiàn)oreman,F(xiàn)ootba-ll,Mobile)進行了相關(guān)實驗。在這5個視頻序列中,Akiyo和News序列有較低的運動級別,背景變化畫面人物運動幅度不大,而Foreman和Fo-otball有高的運動級別,運動劇烈有場景切換,最后一種Mobile序列則有復(fù)雜的背景。表1列出了在量化步長(QP)為25的情況下,原始H.264編碼器和優(yōu)化后的H.264編碼器之間的對比結(jié)果。從中可以看出,原始的編碼器的編碼速度是2~3 f/s,而優(yōu)化后的編碼速度是前者的10倍多。
4 總結(jié)
本系統(tǒng)采用TMS320DM643作為的核心處理器,這款DSP芯片主要是為實現(xiàn)低功耗、高性能而專門設(shè)計的定點DSP芯片。它具有高度靈活的可操作性和高速的處理能力,先進的多總線結(jié)構(gòu),主要應(yīng)用在通信、數(shù)據(jù)采集等系統(tǒng)中,特別在實時性方面效果最佳。
本設(shè)計借助開源代碼X264在CCS開發(fā)平臺進行試驗,測試了編碼優(yōu)化前后的幀率等各種性能,旨在尋求更高效的視屏編碼算法。