<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DSP H.264編碼器的電路設(shè)計(jì)

          DSP H.264編碼器的電路設(shè)計(jì)

          作者: 時(shí)間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          3.3 代碼優(yōu)化

          純C版本的X264程序并沒有利用DM6446的資源和并行機(jī)制,代碼運(yùn)行速度極低。因此必須對(duì)代碼進(jìn)行優(yōu)化,提高處理性能。X264代碼優(yōu)化有以下3個(gè)層次:項(xiàng)目級(jí)優(yōu)化、算法級(jí)優(yōu)化和指令級(jí)優(yōu)化:

          (1)項(xiàng)目級(jí)優(yōu)化項(xiàng)目級(jí)優(yōu)化主要是對(duì)CCS提供的各種編譯參數(shù)進(jìn)行選擇、搭配、調(diào)整,如本文使用的選項(xiàng)-o3、-pm等;利用CCS編譯器提供的優(yōu)化功能,改善循環(huán)及多重循環(huán)體性能,進(jìn)行軟件流水,提高軟件的并行性;改寫不適合編譯器優(yōu)化的語句,使CCS能夠?qū)Τ绦蜻M(jìn)行更好的優(yōu)化。

          3.jpg

          (2)算法級(jí)優(yōu)化進(jìn)行算法級(jí)優(yōu)化時(shí)。應(yīng)使VC環(huán)境下的純C版本與CCS下的版本同步更新,VC版本運(yùn)行正確,既可以保證算法理論上的正確,又可以加快工作速度并減少問題的產(chǎn)生。該算法優(yōu)化工作主要有以下幾點(diǎn):①運(yùn)動(dòng)估算法的選擇:X264提供3種可選的整像素運(yùn)動(dòng)估算法:X264_ME_ESA(全搜索法)、X264_ME_HEX(六邊形搜索法)、X264_ME_DIA(小菱形搜索法)。在VC環(huán)境下使用純C版本代碼對(duì)同一視頻序列使用3種不同的搜索方法進(jìn)行編碼。對(duì)比3種搜索方法在編碼速度、峰值信噪比(PSNR)、碼率方面的性能。對(duì)比之下 X264_ME_ESA算法的峰值信噪比最高,X264_ME_HEX次之,X264_ME_DIA最低,但相互之間的質(zhì)量差別并不大,碼率差別也很小,但編碼速度卻有明顯差距,X264_ME_DIA較前兩者在編碼速度上有明顯的優(yōu)勢(shì)。經(jīng)比較,選擇使用X264_ME_DIA運(yùn)動(dòng)估計(jì)算法。②幀內(nèi)預(yù)測(cè)模式的改進(jìn):在X264的幀內(nèi)預(yù)測(cè)流程中加入提前終止模式選擇的條件,改進(jìn)算法的流程。進(jìn)行16×16宏塊幀內(nèi)模式搜索時(shí),在當(dāng)前模式的開銷小于已搜索過的模式的最小開銷的一半時(shí),終止16×16幀內(nèi)預(yù)測(cè)模式選擇,以當(dāng)前模式為最佳16×16幀內(nèi)預(yù)測(cè)模式。對(duì)4×4塊也加入相同的條件,并且若當(dāng)前4×4塊幀內(nèi)預(yù)測(cè)模式的預(yù)測(cè)開銷比相應(yīng)的最佳16×16塊幀內(nèi)預(yù)測(cè)模式的開銷的1/16還要小,則終止4×4塊的幀內(nèi)預(yù)測(cè)模式選擇,以當(dāng)前預(yù)測(cè)模式作為最佳4×4塊的幀內(nèi)預(yù)測(cè)模式。改進(jìn)后的幀內(nèi)預(yù)測(cè)主體流程如圖3所示,灰色部分為加入的判定條件。

          幀間預(yù)測(cè)模式的改進(jìn):將當(dāng)前的16×16宏塊劃分為4個(gè)8×8宏塊,分別預(yù)測(cè)其運(yùn)動(dòng)矢量,然后以左右相鄰、上下相鄰的2個(gè)8×8塊的運(yùn)動(dòng)矢量的差值和閾值相比較為依據(jù),判定是否進(jìn)行16×8、8×16等分塊模式的預(yù)測(cè),最后選擇開銷最小的劃分模式為最佳幀間劃分模式。

          (3)指令級(jí)優(yōu)化 DM6446一個(gè)時(shí)鐘周期內(nèi)可并行運(yùn)行8條指令,一次可存取64位數(shù)據(jù),內(nèi)部擁有64個(gè)32位通用寄存器,并且支持對(duì)寄存器中的4個(gè)8位字節(jié)或2個(gè)16位字節(jié)分別進(jìn)行運(yùn)算處理,這些使得DM6446具有很強(qiáng)的并行運(yùn)算能力。視頻圖像的像素尺寸一般是4的倍數(shù),X264中像素的值是用8位或16位數(shù)據(jù)按矩陣形式有規(guī)律的存儲(chǔ),這種數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與DM6446的并行處理方式很契合。因此對(duì)X264程序進(jìn)行指令優(yōu)化充分發(fā)揮DM6446的并行運(yùn)算能力,是提高速度的關(guān)鍵。主要分為以下兩部分:①使用內(nèi)聯(lián)函數(shù)優(yōu)化;C6000編譯器提供了許多內(nèi)聯(lián)函數(shù)intrinsics,它們是匯編指令映射的在線函數(shù),不宜用C語言實(shí)現(xiàn)其功能的匯編指令都有對(duì)應(yīng)的intrinsics函數(shù)。這樣就可在C語言結(jié)構(gòu)中直接使用內(nèi)聯(lián)函數(shù)實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)的并行運(yùn)算操作。如:未使用內(nèi)聯(lián)函數(shù)優(yōu)化前X264程序調(diào)用一次雙線性內(nèi)插函數(shù)只能計(jì)算一個(gè)亞像素點(diǎn)的值,而使用內(nèi)聯(lián)函數(shù)_mem4()、_avgu4()等進(jìn)行優(yōu)化后,一次可以計(jì)算4個(gè)亞像素點(diǎn)的值,大大提高了運(yùn)算速度。②使用線性匯編語言優(yōu)化:由于線性匯編不需要考慮寄存器分配、指令延遲、并行指令安排等因素。因此可以利用 CCS提供的profile分析工具將使用頻率高、耗時(shí)多的函數(shù)抽取出來,根據(jù)事先已知的數(shù)據(jù)間的相關(guān)性等信息,在程序中直接改寫函數(shù)匯編,人工優(yōu)化。涉及的算法有:SAD、SSD的計(jì)算;DCT變換;反DCT變換、亞像素搜索等。

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

          選取具有代表性的視頻序列carphone(人物運(yùn)動(dòng)幅度較大)、news(背景變化,人物運(yùn)動(dòng)幅度不大)、container(背景簡(jiǎn)單,景物運(yùn)動(dòng)緩慢)進(jìn)行編碼。視頻為YUV 4:2:0格式.QCIF,量化步長(zhǎng)定為26,共50幀,采用IPPP…編碼模式。DM6446的時(shí)鐘頻率為600 MHz。表1為優(yōu)化前后編碼時(shí)鐘周期對(duì)比,I幀編碼速度平均提高了9倍,P幀編碼速度平均提高了11倍。

          6.jpg

          以視頻Miss-America為例,研究、對(duì)比移植優(yōu)化后的在不同的量化步長(zhǎng)值(QP)下,圖像的壓縮質(zhì)量,如圖4所示。

          7.jpg

          5 結(jié)論

          移植優(yōu)化后的X264編碼器在CCS環(huán)境下可正確編碼,在量化步長(zhǎng)值26下編碼圖像質(zhì)量較高,優(yōu)化后編碼速度較優(yōu)化前有明顯提升。介紹的H.264視頻編碼系統(tǒng)的硬件設(shè)計(jì),和X264編碼器針對(duì)DM6446平臺(tái)移植、優(yōu)化的思路和方法,對(duì)構(gòu)建高效的視頻應(yīng)用平臺(tái)具有一定的參考價(jià)值。


          上一頁 1 2 下一頁

          關(guān)鍵詞: DSP H.264 編碼器 電路

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();