當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]H.264視頻編碼器在DSP上的實(shí)現(xiàn)與優(yōu)化

摘要:DM642 EVM平臺(tái)上實(shí)現(xiàn)了 H.264視頻編碼器,并從內(nèi)存分配、Cache優(yōu)化、代碼優(yōu)化以及匯編程序級(jí)優(yōu)化等幾個(gè)方面對(duì)編碼器進(jìn)行了優(yōu)化。實(shí)驗(yàn)結(jié)果表明,優(yōu)化后的編碼器能保持較高的圖象質(zhì)量和壓縮效率,并具有較好的實(shí)時(shí)性能。

1 引言

  H.264/AVC是ITU-T視頻編碼專家組和ISO/IEC運(yùn)動(dòng)圖象專家組聯(lián)合提出的新一代視頻編碼標(biāo)準(zhǔn)。在相同的條件下,與MPEG-1、MPEG-2、H.263、MPEG-4等標(biāo)準(zhǔn)相比,H.264/AVC能夠減少50%的碼流。但是,H.264的高編碼效率是以高運(yùn)算量和高復(fù)雜度為代價(jià)的。

  本文采用具有較高運(yùn)算速度和較強(qiáng)數(shù)據(jù)處理能力的DM642 EVM作為H.264視頻編碼器實(shí)現(xiàn)和優(yōu)化的DSP硬件平臺(tái),實(shí)現(xiàn)了 H.264視頻編碼算法,并對(duì)算法程序進(jìn)行了綜合優(yōu)化。實(shí)驗(yàn)結(jié)果表明,經(jīng)過優(yōu)化的 H.264視頻編碼器能保持較高的圖象質(zhì)量和壓縮效率,并具有較好的實(shí)時(shí)性能。

2 H.264視頻編碼技術(shù)及DM642 EVM開發(fā)平臺(tái)

  2.1 H264視頻編碼技術(shù)

  H.264壓縮算法采用與H.263和MPEG-4類似的基于塊的混和編碼方法,采用幀內(nèi)(Intra)和幀間(Inter)兩種編碼模式。為了提高編碼效率、壓縮比和圖象質(zhì)量,H.264采用了許多新的編碼技術(shù),這些技術(shù)主要有:

 ?、?H.264標(biāo)準(zhǔn)壓縮系統(tǒng)由視頻編碼層(VCL,Video Coding Layer)和網(wǎng)絡(luò)抽象層(NAL,Network Abstraction Layer)兩部分組成。

 ?、?H.264采用幀內(nèi)預(yù)測(cè),昀大程度地減少圖象的空間冗余信息。

 ?、?H.264的幀間預(yù)測(cè)采用多幀參考幀(參考的個(gè)數(shù)為1~5)、高精度的內(nèi)插算法(包括1/4和 1/8精度)、多種變形搜索塊等新的方法,在很大程度上提高運(yùn)動(dòng)估計(jì)與補(bǔ)償?shù)男省?/p>

 ?、?1/4、1/8象素精度的亞象素運(yùn)動(dòng)估計(jì):對(duì)于QCIF視頻格式使用1/4象素精度預(yù)測(cè)方式,對(duì)于CIF視頻格式使用1/8象素精度預(yù)測(cè)方法。

  ⑸ 殘差圖象的4x4整數(shù)DCT變換技術(shù),逆變換過程中沒有匹配錯(cuò)誤問題。

 ?、?新的環(huán)路濾波技術(shù)及熵編碼技術(shù)等。

  2.2 DM642 EVM開發(fā)平臺(tái)DM642

  EVM是TI推出的一款專門面向多媒體應(yīng)用的開發(fā)平臺(tái),板上資源包括:DM642 CPU芯片、4M×64bit同步動(dòng)態(tài)存儲(chǔ)器(SDRAM)、4M×8bit FLASH存儲(chǔ)器和一路視頻編碼和兩路視頻解碼等,其結(jié)構(gòu)如圖1所示。DM642基于C64X內(nèi)核,主頻高達(dá)600MHz,采用超長(zhǎng)指令字(VLIW)結(jié)構(gòu),每個(gè)指令周期可并行處理8條32位的指令,處理能力達(dá)4800MIPS;片上內(nèi)存采用二級(jí)緩存Cache結(jié)構(gòu),L1由16KB的數(shù)據(jù)Cache L1D和16KB的程序Cache L1P組成,256KB的L2可配置成SRAM或Cache,大幅度提高了程序的運(yùn)行性能;片內(nèi)64位的EMIF(External MemoryInterface)接口可以與SDRAM、Flash等存儲(chǔ)器件無縫連接,極大地方便了大量數(shù)據(jù)的搬移;DM642包括了3個(gè)專用的視頻端口(VP0~VP2),用于接收、處理視頻數(shù)據(jù),提高了整個(gè)系統(tǒng)的性能;DM642自帶的EMAC口以及從EMIF口擴(kuò)展出來的ATA口,還為處理完成后產(chǎn)生的海量數(shù)據(jù)提供了存儲(chǔ)通道。因此,實(shí)現(xiàn)H.264的視頻算法,高性能的DM642 EVM是一個(gè)理想的硬件平臺(tái)。

 

 

3 H.264視頻編碼器的實(shí)現(xiàn)與優(yōu)化

  3.1 編碼器的實(shí)現(xiàn)

  H.264視頻編碼器的實(shí)現(xiàn)有多種方法,不過大部分都是進(jìn)行移植、優(yōu)化的操作。H.264代碼要在DSP的軟件平臺(tái)CCS環(huán)境下運(yùn)行,需要注意幾個(gè)問題:如配置文件、庫文件的改動(dòng)、數(shù)據(jù)類型的調(diào)整、匯編程序的處理、內(nèi)存終結(jié)模式的調(diào)整等。

  H.264編碼采用變換和預(yù)測(cè)的混合編碼方法,其原理如圖2所示。輸入幀或者場(chǎng)Fn以宏塊為單位被編碼器處理,即將圖象分成子圖象塊,以子圖象塊作為編碼單元。當(dāng)采用幀內(nèi)預(yù)測(cè)編碼時(shí),預(yù)測(cè)值P是由當(dāng)前片中已編碼的參考圖象經(jīng)過運(yùn)動(dòng)補(bǔ)償(MC)后得出的,其中參考圖象用F1n-1表示;為了提高預(yù)測(cè)精度,從而提高壓縮比,實(shí)際的參考圖象可在過去或未來已編碼解碼重建和濾波的幀中選擇。預(yù)測(cè)值P和當(dāng)前塊相減后,產(chǎn)生一個(gè)殘差塊Dn,經(jīng)塊變換、量化后產(chǎn)生一組量化后的變化系數(shù)X,再經(jīng)過熵編碼,與解碼所需的一些邊信息(如預(yù)測(cè)模式量化參數(shù)、運(yùn)動(dòng)矢量等)一起組成一個(gè)壓縮后的碼流,經(jīng)過NAL供傳輸和存儲(chǔ)用。

[!--empirenews.page--]

      3.2 內(nèi)存分配及Cache優(yōu)化

  與PC機(jī)相比,DSP的程序數(shù)據(jù)存儲(chǔ)空間非常有限。因此,對(duì)于視頻編碼這種需要處理大量數(shù)據(jù)的程序而言,必須合理安排數(shù)據(jù)和程序的存儲(chǔ)方式,實(shí)現(xiàn)對(duì)存儲(chǔ)器的優(yōu)化。實(shí)驗(yàn)表明,合理利用兩級(jí)緩存并配合低工作頻率外部存儲(chǔ)器,系統(tǒng)的效率能達(dá)到全部使用高工作頻率內(nèi)部存儲(chǔ)器的80%~90%。

  本文將占據(jù)較大空間的數(shù)據(jù)或使用頻率不高的程序放在片外存儲(chǔ)器中,啟用L2 Cache,調(diào)用C6000的芯片支持庫CSL中的CACHE-setL2Mode函數(shù),將L2設(shè)置為198KB的SRAM和64KB的Cache模式。并根據(jù)H.264算法本身的結(jié)構(gòu),采取以下方法對(duì)存儲(chǔ)器進(jìn)行優(yōu)化:利用CCS的分析工具Profile分析C代碼,將反復(fù)調(diào)用的程序段(例如DCT變換和IDCT變換)放在片內(nèi)程序存儲(chǔ)區(qū)中,把頻繁用到的數(shù)據(jù)段(如編碼表)放在片內(nèi)數(shù)據(jù)存儲(chǔ)器中,把運(yùn)用次數(shù)較少的程序和數(shù)據(jù)段放在片外存儲(chǔ)器中,避免對(duì)程序或數(shù)據(jù)進(jìn)行不必要的反復(fù)搬移。

  在H.264編碼器運(yùn)行過程中,由于一幀圖象的數(shù)據(jù)量很大,因此將參考幀和當(dāng)前幀數(shù)據(jù)放到片外存儲(chǔ)器中,需要用到時(shí),再將它們從外部存儲(chǔ)器搬到片內(nèi)存儲(chǔ)器中,以提高程序的運(yùn)行效率。

  3.3 代碼優(yōu)化

  進(jìn)行代碼優(yōu)化,先要找出程序的瓶頸,即占用CPU時(shí)間較多的代碼,然后對(duì)其進(jìn)行有針對(duì)性的優(yōu)化。使用CCS提供的代碼剖析工具Profile可以統(tǒng)計(jì)顯示出程序中各個(gè)重要段和函數(shù)的運(yùn)行時(shí)間,找出運(yùn)算量較大的程序段,優(yōu)化這些程序段,對(duì)于提高算法的性能有巨大影響。

 ?、?聯(lián)合使用-pm和-03編譯選項(xiàng),對(duì)代碼進(jìn)行項(xiàng)目級(jí)的優(yōu)化:CCS提供了強(qiáng)大功能的編譯選項(xiàng),從-O0到-O3共四級(jí)優(yōu)化。-O3編譯選項(xiàng)使能軟件流水和其他優(yōu)化方法,-pm選項(xiàng)從程序代碼角度,把整個(gè)項(xiàng)目的所有源程序聯(lián)合起來,作為一個(gè)模塊來處理。-pm和-03兩個(gè)選項(xiàng)聯(lián)合使用,能進(jìn)行一系列的優(yōu)化,并且代碼尺寸變小很多。


 ?、?使用const、restrict 關(guān)鍵字修飾指針:const指示編譯器其修飾的指針?biāo)赶虻膬?nèi)容不能修改;restrict指示編譯器其修飾的指針與其他指針指向的內(nèi)容不會(huì)覆蓋,這些信息使兩個(gè)指針不會(huì)訪問同一存儲(chǔ)器地址,可以消除存儲(chǔ)器之間的相關(guān)性,這樣可以并行執(zhí)行多個(gè)數(shù)據(jù)的讀取和運(yùn)算,使代碼運(yùn)行達(dá)到昀大效率。

 ?、?對(duì)短字長(zhǎng)數(shù)據(jù)使用寬長(zhǎng)度的存儲(chǔ)器訪問(數(shù)據(jù)打包處理):即當(dāng)CPU執(zhí)行一連串短型數(shù)據(jù)(如16bit數(shù)據(jù))操作時(shí),可將數(shù)據(jù)類型設(shè)置為32bit長(zhǎng)度的int型,這樣可以一次性訪問2個(gè)短型數(shù)據(jù),然后使用C6000指令,同時(shí)進(jìn)行兩個(gè)數(shù)據(jù)的操作,減少了對(duì)內(nèi)存的訪問,這比采用16bit長(zhǎng)度short型節(jié)約一半的時(shí)間。

  ⑷ 循環(huán)展開,把C語言中的循環(huán)打開,把多循環(huán)變?yōu)樯傺h(huán),減少循環(huán)嵌套,使得可能并行的指令增加,從而改進(jìn)軟件流水編排,改善代碼性能。

 ?、?減少C函數(shù)的調(diào)用,盡量使用系統(tǒng)提供的內(nèi)聯(lián)函數(shù)(intrinsics函數(shù))代替C函數(shù),C6000編譯器提供了許多intrinsics,是直接與C6000匯編指令映射的在線函數(shù),可以快速優(yōu)化C代碼,這樣減少許多不必要的操作,提高代碼運(yùn)算速度。

 ?、?使用軟件流水技術(shù),軟件流水是一種對(duì)循環(huán)中的指令進(jìn)行調(diào)度優(yōu)化的技術(shù),利用軟件流水可生成非常緊湊的循環(huán)代碼。當(dāng)編譯時(shí)采用-O2或-O3級(jí)別的優(yōu)化選項(xiàng)時(shí),編譯器將對(duì)程序中的循環(huán)進(jìn)行軟件流水。通過軟件流水的優(yōu)化,可以大大提高循環(huán)代碼的效率,極大地實(shí)現(xiàn)指令的并行性。

  3.4 匯編程序級(jí)優(yōu)化

  通過 profile clock工具找出效率很低的部分,使用線形匯編繼續(xù)優(yōu)化。線性匯編語言是 C6000系列 DSP獨(dú)有的一種編程語言,介于高級(jí)語言和低級(jí)語言之間。和標(biāo)準(zhǔn)的匯編語言不同的是,在編寫線性匯編程序時(shí)可不必考慮指令的延時(shí)、指令的并行、寄存器的使用和功能單元的分配等,匯編優(yōu)化器將根據(jù)代碼的情況自動(dòng)確定這些信息。匯編程序優(yōu)化可通過對(duì)自動(dòng)編譯生成的匯編文件進(jìn)行修改而進(jìn)行。匯編優(yōu)化其實(shí)就是根據(jù)以上各個(gè)方面的特點(diǎn),采取針對(duì)性的方法,以獲得盡可能高的程序效率。常用的匯編偽指令如下:

 ?、?定義一個(gè)可被匯編優(yōu)化器優(yōu)化且可被 C/C++當(dāng)做函數(shù)調(diào)用的線性匯編代碼段的偽指令:

  label .cproc [ var1,[var2,…] ]

        .endproc [!--empirenews.page--]

      ⑵ 定義一個(gè)可被匯編優(yōu)化器優(yōu)化的線性匯編代碼段的偽指令:

  label .proc [ reg1,[reg2,…] ]

    .endproc [ reg1,[reg2,…] ]

  線性匯編優(yōu)化時(shí)還需要考慮以下幾個(gè)方面:① 平均分配使用功能單元,提高代碼的并
行度。② 使流水線核心循環(huán)的時(shí)鐘周期數(shù)昀小。

4 實(shí)驗(yàn)結(jié)果

  經(jīng)過以上各種算法優(yōu)化后,基于DSP硬件平臺(tái)DM642 EVM的H.264編碼算法的性能得到了極大提高。實(shí)驗(yàn)中采用Foreman、Container、News三個(gè)H.264標(biāo)準(zhǔn)測(cè)試序列,分別代表高、中、低運(yùn)動(dòng)格式,采用IPP編碼模式,對(duì)優(yōu)化前后的算法進(jìn)行了測(cè)試。

  表3給出了優(yōu)化前后對(duì)各種標(biāo)準(zhǔn)測(cè)試序列進(jìn)行編碼后的測(cè)試結(jié)果,算法優(yōu)化在保證圖象質(zhì)量的前提下,極大提高了編碼速度,視頻圖象較好地實(shí)現(xiàn)了實(shí)時(shí)性編碼要求。


 

  本文重點(diǎn)探討了H.264視頻編碼算法在DM642 EVM硬件平臺(tái)上的實(shí)現(xiàn)和優(yōu)化,經(jīng)過優(yōu)化后算法具有較好的實(shí)現(xiàn)性和實(shí)時(shí)性。在此基礎(chǔ)上,還可以在調(diào)整代碼結(jié)構(gòu)方面進(jìn)行優(yōu)化,使其更加適合DSP的指令系統(tǒng)。此外還可以更合理的利用TMS320DM642芯片的結(jié)構(gòu)和豐富的外部接口,更高效的實(shí)現(xiàn)編解碼器算法。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉