版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 基于DM642的X264開源代碼實(shí)現(xiàn)的研究摘要:實(shí)現(xiàn)了一種全集成可變帶寬中頻寬帶低通濾波器,討論分析了跨導(dǎo)放大器-電容(OTAC)連續(xù)時間型濾波器的結(jié)構(gòu)、設(shè)計(jì)和具體實(shí)現(xiàn),使用外部可編程電路對所設(shè)計(jì)濾波器帶寬進(jìn)行控制,并利用ADS軟件進(jìn)行電路設(shè)計(jì)和仿真驗(yàn)證。仿真結(jié)果表明,該濾波器帶寬的可調(diào)范圍為126 MHz,阻帶抑制率大于35 dB,帶內(nèi)波紋小于05 dB,采用18 V電源,TSMC 018m CMOS工藝庫仿真,功耗小于21 mW,頻響曲線接近理想狀態(tài)。關(guān)鍵詞:Butte摘要:本文概述了H.264視頻壓縮編碼標(biāo)準(zhǔn)的主要特性,簡要介紹了當(dāng)前H.2
2、64的幾種開源軟件,詳細(xì)分析了其中X264參考程序的具體結(jié)構(gòu),并針對TMS320DM642平臺建議了可能的優(yōu)化方向。關(guān)鍵字:H.264;開源軟件;X264;TMS320DM642;優(yōu)化引言H.264/AVC是ISO/IEC和ITU-T兩大國際標(biāo)準(zhǔn)化組織聯(lián)合制定的新一代視頻編碼標(biāo)準(zhǔn)。它引入多種宏塊劃分、多模式的幀內(nèi)和幀間預(yù)測編碼、高精度亞像素運(yùn)動估計(jì)、多參考幀運(yùn)動補(bǔ)償?shù)燃夹g(shù),提高了壓縮比;采用整數(shù)DCT變換,避免了精度的損失。在碼流結(jié)構(gòu)上,提出VCL層和NAL層的概念,其中增加的NAL層負(fù)責(zé)將編碼器的輸出碼流適配到各種類型的網(wǎng)絡(luò)中,提供了友好的網(wǎng)絡(luò)接口。同時,標(biāo)準(zhǔn)提供的許多工具如參數(shù)集、靈活的宏
3、塊排列次序、冗余片等,使得H.264的碼流在網(wǎng)絡(luò)中傳輸時具有更強(qiáng)的抗誤碼性能?;贖.264的實(shí)時編解碼器設(shè)計(jì)與實(shí)現(xiàn)已經(jīng)成為當(dāng)前視頻通信領(lǐng)域的熱點(diǎn)問題。1、H.264開源代碼簡介 H.264所具有的獨(dú)特優(yōu)勢促進(jìn)了與之對應(yīng)的開源軟件的開發(fā)與應(yīng)用。目前常見的H.264開源軟件編解碼器有以下三種 : 1)JM H.264的官方測試源碼,由德國HHI研究所負(fù)責(zé)開發(fā)。該代碼旨在實(shí)現(xiàn)H.264
4、的所有特性,因而結(jié)構(gòu)冗長,編碼復(fù)雜度極高,多用于學(xué)術(shù)研究,不適于實(shí)際應(yīng)用。 2)X264 X264是由法國巴黎中心學(xué)校的中心研究所于2004年6月發(fā)起,并由許多視頻編碼愛好者共同完成的項(xiàng)目。其目標(biāo)是實(shí)現(xiàn)實(shí)用的264編碼器,所以它引入MMX、SSE等匯編指令來提高編碼速度,同時摒棄了一些耗時但對編碼性能提高微小的模塊,如多參考幀等。 3)T264 &
5、#160; 由中國視頻編碼自由組織聯(lián)合開發(fā)的H.264編解碼器。它和X264一樣注重實(shí)用,吸收了JM、X264、XVID的優(yōu)點(diǎn)。但其解碼器只能解T264編碼器生成的碼流。 2、X264代碼分析 本文所介紹的X264為060418版,下文所提到的程序結(jié)構(gòu)和運(yùn)行結(jié)果如不作特殊說明均針對該版本。 代碼的實(shí)現(xiàn)流程如圖1所示。圖1 X264編碼流程圖
6、0; 整個代碼的執(zhí)行可以分為以下三個部分: 1)數(shù)據(jù)的讀入與存放 X264開辟了unused、next、current、reference等區(qū)域分別保存未處理原始圖片序列、即將編碼幀序列、當(dāng)前編碼幀和參考幀序列,同時還開辟了fenc和fdec區(qū)域用于存放已編碼幀和重構(gòu)幀。 程序按以下順序讀入數(shù)據(jù):首先,從YUV數(shù)據(jù)文件中讀取數(shù)據(jù)存到臨時變量pic_in,同時為unused開辟存儲空間,并用fenc指針指向這個空間。接
7、著,將pic_in中的圖片數(shù)據(jù)拷貝到fenc所指向的區(qū)域,并在拷貝完成后對圖片大小進(jìn)行判斷,如果長寬不為16的整數(shù)倍則進(jìn)行像素?cái)U(kuò)展;將處理后的fenc區(qū)域數(shù)據(jù)放入next區(qū)域。之后,如果存在B幀,則從next區(qū)域取出B幀以后的P幀放到current區(qū)域中,也就是說先編碼I、P幀再編碼之間的B幀;否則,直接從next區(qū)域取出一幀存入current區(qū)域。此時current區(qū)域中存放的就是已經(jīng)過預(yù)處理的即將要編碼的幀數(shù)據(jù)了。最后,由于fenc區(qū)域是編碼的直接對象,再將current區(qū)域中的內(nèi)容拷貝到fenc中正式開始編碼。 2)數(shù)據(jù)的壓縮編碼
8、; 判斷幀類型,初始化相關(guān)參數(shù)如果是IDR幀,意味著是一個新切片的開始。在H.264中為了防止編碼錯誤擴(kuò)散規(guī)定當(dāng)前切片不以本切片以外的其它幀為參考,因而遇到IDR幀需要重置參考幀區(qū)域。同時,將SEI(Sequence Enhancement Information)、SPS(Sequence Parameter Set)和PPS(Picture Parameter Set)分別單獨(dú)寫入NAL單元。這三個參數(shù)集集合了編解碼的核心參數(shù),直接關(guān)系解碼端能否正常解碼。如果不是IDR幀,依據(jù)幀類型設(shè)定當(dāng)前NAL單元的類型和切片類型。接著進(jìn)行一系列初始化參數(shù)的操作,包括建立關(guān)于參考幀的list
9、0和list1,初始化量化參數(shù)QP、MV、參考幀等相關(guān)變量,初始化比特流的起始位置和大小等。 以宏塊為單位對視頻數(shù)據(jù)進(jìn)行編碼 在進(jìn)行預(yù)測編碼之前必須得到周圍塊的相關(guān)信息。在X264中開辟了intra4x4_pred_mode和non_zero_count區(qū)域用來存放當(dāng)前宏塊左側(cè)和上側(cè)相鄰宏塊的預(yù)測模式和非零值個數(shù)。在編碼開始之前通過x264_macroblock_cache_load()函數(shù)將相關(guān)數(shù)據(jù)載入緩存。然后,利用x264_macroblock_analyse()函數(shù)分析參數(shù),確定最佳編碼模式。I片從9種4x4模式和
10、4種16x16模式中選擇模式; P片選擇幀間預(yù)測模式下的宏塊分割方式或幀內(nèi)預(yù)測模式下的4x4模式和16x16模式。接著,用x264_macroblock_encode()函數(shù)對宏塊進(jìn)行編碼。編碼過程嚴(yán)格按照編碼框架中規(guī)定的DCT變換、zigzag掃描和熵編碼的過程以先亮度塊再色度塊的順序進(jìn)行。需要聲明的是編碼過程對DC參數(shù)和AC參數(shù)的處理是分開進(jìn)行的:首先對整個宏塊進(jìn)行DCT變換,然后將亮度塊和色度塊的DC參數(shù)抽出分別組成4×4和2×2的子塊并對剩余AC參數(shù)進(jìn)行量化掃描,接著對DC子塊再進(jìn)行Hadmard變換、量化、zigzag掃描、反變換、反量化,再對剩下的AC參數(shù)進(jìn)行反
11、量化,最后將處理后的DC子塊和AC子塊重新組合并對組合后的宏塊進(jìn)行IDCT變換。 以上過程完畢以后,統(tǒng)計(jì)CBP(Coded Block Pattern)信息。CBP一共6bit,用于表示當(dāng)前宏塊是否存在非零值,主要用于決定熵編碼時采用的碼表。其中,高2bit表示2個8×8色度塊的CBP (2:Cb、Cr中至少一個4×4塊的AC系數(shù)不全為0;1:Cb、Cr中至少一個2×2的DC系數(shù)不全為0;0:所有色度系數(shù)全0)。低4bit分別對應(yīng)4個8×8亮度塊,第i位(= 0、1、2、3)表示一個MB中第i行的4個4×4子
12、塊是否有非零參數(shù)。若存在非零值,則將相應(yīng)位置1。將各子塊的非零值個數(shù)保存到non_zero_count區(qū)域。使用先前得到的CBP查相應(yīng)碼表進(jìn)行熵編碼,將編碼參數(shù)和編碼數(shù)據(jù)寫入比特流。 保存編碼信息 利用x264_macroblock_cache_save()函數(shù)將當(dāng)前MB最下一行和最右一列的子塊的編碼模式保存到intra4x4_pred_mode,將子塊非零參數(shù)的個數(shù)保存到non_zero_count中,以備下一次預(yù)測編碼采用。最后,統(tǒng)計(jì)MB信息,更新參考幀列表,并從unused區(qū)域取出新的幀放入fenc區(qū)域以備下次編碼。
13、 3)數(shù)據(jù)的輸出 對NAL編碼數(shù)據(jù)加上NAL頭信息組成完整的NAL單元,輸出到本地文件。 3、X264在TMS320DM642平臺上的移植與優(yōu)化 原始的X264代碼是基于PC平臺的,程序通過采用MMX和SSE語言編寫SAD、DCT等函數(shù)使X264具有很高的編碼速度。而在實(shí)際應(yīng)用中,要想實(shí)時實(shí)現(xiàn)H.264的復(fù)雜算法,必須借助DSP這樣具有超強(qiáng)運(yùn)算能力的嵌入式平臺。本文采用TMS320DM642開發(fā)板作為實(shí)現(xiàn)和開發(fā)的平臺,并在其上進(jìn)行代碼的移植和
14、優(yōu)化。 1)TMS320DM642硬件平臺簡介 TMS320DM642是一款基于TI 的第二代高性能超長指令字(VLIW) 架構(gòu)VelociTI.2(tm)的高性能DSP,該器件是目前計(jì)算密集型視頻/圖像應(yīng)用領(lǐng)域的理想選擇,其主要特點(diǎn)如下 : 增強(qiáng)功能單元:DM642 的8 個功能單元中的VelociTI.2 擴(kuò)展包括加速視頻與影像應(yīng)用性能的新指令。 L1/L2 分級存儲器結(jié)構(gòu):1
15、6 KB 直接映射的L1P 程序高速緩存,16 KB 雙路關(guān)聯(lián)L1D 數(shù)據(jù)高速緩存,256 KB L2 統(tǒng)一映射RAM/高速緩存(靈活的RAM/緩存分配)。 64 位外部存儲器接口(EMIF):可實(shí)現(xiàn)與異步存儲器和同步存儲器無縫連接。 增強(qiáng)型直接存儲器存取(EDMA)控制器(64個獨(dú)立通道)。 以DM642為硬件平臺開發(fā)視頻編碼器,開發(fā)者可以充分利用其硬件特性,提高視頻編解碼算法的運(yùn)算速度。 &
16、#160; 2)X264的移植 由于適用于PC機(jī)通過MMX和SSE編寫的代碼在DSP上無法運(yùn)行,想要使X264代碼在DM642上運(yùn)行,必須將原來的代碼加以修改使其變成純C語言的代碼。具體做法是:在X264代碼中將HAVE_MMX編譯選項(xiàng)屏蔽,同時將代碼中與該編譯選項(xiàng)相關(guān)的代碼注釋掉。當(dāng)程序成為純C代碼時,就可以開始往DM642上移植了。 然而,DSP開發(fā)工具CCS有自己的ANSI C編譯器和優(yōu)化器,并有自己的語法規(guī)則和定義。所以需要將代碼作相應(yīng)修改,使其完全符合DSP中C的規(guī)則,同時要配
17、置CCS的編譯選項(xiàng),才能使X264在CCS和VC下運(yùn)行產(chǎn)生的結(jié)果一致。這個過程稱為代碼的DSP化。 由于純C語言編寫的程序無法利用DSP的并行處理機(jī)制,此時代碼的運(yùn)行速度非常慢。在DM642平臺上,對相同的YUV數(shù)據(jù)(此處采用container.qcif)進(jìn)行編碼,若采用帶X86匯編的X264代碼(DCT和SAD部分采用匯編代碼)在VC環(huán)境下運(yùn)行,編碼速度能達(dá)到QCIF 60fps;若將代碼改為純C語言仍然在VC下運(yùn)行,則編碼速度馬上降到QCIF 10fps ;將該代碼稍作修改移植到DM642的硬件平臺,用CCS編譯,編碼
18、速度僅能達(dá)到1幀/6秒。這樣的速度離實(shí)時處理的目標(biāo)還非常遙遠(yuǎn)。 所以,必須結(jié)合DSP本身的特點(diǎn),對代碼進(jìn)行優(yōu)化,才能在DM642平臺上實(shí)現(xiàn)X264對視頻圖像的實(shí)時處理。3)X264的優(yōu)化 X264代碼的優(yōu)化分為三個層次:項(xiàng)目級優(yōu)化,算法級優(yōu)化和指令級優(yōu)化。 項(xiàng)目級優(yōu)化:主要通過設(shè)置CCS編譯器的選項(xiàng),調(diào)整代碼結(jié)構(gòu)和合理分配內(nèi)存來實(shí)現(xiàn)。如設(shè)置-o3選項(xiàng),將常用數(shù)據(jù)分配到訪問速度高的片內(nèi)內(nèi)存等。 &
19、#160; 算法級優(yōu)化:提出快速高效算法,從算法上挖掘潛力,提高運(yùn)行速度,達(dá)到優(yōu)化目的。用X264支持的4種運(yùn)動估計(jì)算法(菱形搜索算法、六邊形搜索算法、非對稱十字型多層次六邊形格點(diǎn)搜索算法和連續(xù)消除法)處理同樣的YUV數(shù)據(jù)(此處仍為container.qcif),編碼速度分別為13fps、11fps、9fps和4fps,可見不同的運(yùn)動估計(jì)算法引起的編碼速度的差別非常明顯。 指令級優(yōu)化:這部分又可以分為C語言級的優(yōu)化和匯編級的優(yōu)化。前者主要包括消除冗余代碼、調(diào)整數(shù)據(jù)類型、優(yōu)化程序結(jié)構(gòu)、打開for循環(huán)和充分利用內(nèi)聯(lián)函數(shù)等操作。后者主要是將耗時函數(shù)抽取出來,用線性匯編改寫,充分利用豐富的媒體處理指令,最大限度的利用DSP的并行性,加快編碼速度。匯編級優(yōu)化涉及到的主要部分有SAD計(jì)算、DCT變換、反DCT變換、量化等過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江海洋大學(xué)《電機(jī)學(xué)2》2023-2024學(xué)年第一學(xué)期期末試卷
- 高性能纖維防護(hù)制品研發(fā)生產(chǎn)項(xiàng)目可行性研究報(bào)告寫作模板-備案審批
- 中國計(jì)量大學(xué)現(xiàn)代科技學(xué)院《控制電機(jī)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中央財(cái)經(jīng)大學(xué)《航空自動化控制》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)師生讀書評價(jià)制度
- 昭通職業(yè)學(xué)院《臨床藥理學(xué)(醫(yī)學(xué)檢驗(yàn))》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南現(xiàn)代職業(yè)技術(shù)學(xué)院《大數(shù)據(jù)思維與決策》2023-2024學(xué)年第一學(xué)期期末試卷
- 企業(yè)市值管理中資本結(jié)構(gòu)優(yōu)化的研究
- 合規(guī)性旅游業(yè)務(wù)培訓(xùn)模板
- DB2201T 65.1-2024 肉牛飼養(yǎng)技術(shù)規(guī)范 第1部分:種牛
- 建設(shè)工程質(zhì)量檢測檢測計(jì)劃
- 2025年抗肺纖維化藥物市場分析報(bào)告
- 銀行會計(jì)主管年度工作總結(jié)2024(30篇)
- 教師招聘(教育理論基礎(chǔ))考試題庫(含答案)
- 上海市12校2025屆高三第一次模擬考試英語試卷含解析
- 三年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案集錦
- 長亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
評論
0/150
提交評論