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