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

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 用數(shù)字信號(hào)處理器優(yōu)化視頻編碼器

          用數(shù)字信號(hào)處理器優(yōu)化視頻編碼器

          作者: 時(shí)間:2009-01-06 來(lái)源:網(wǎng)絡(luò) 收藏
          比標(biāo)準(zhǔn)的各種特性為技術(shù)人員提供了廣闊的空間,在復(fù)雜性、延遲以及其他約束實(shí)時(shí)性能的因素之間獲得最佳平衡。

          編碼進(jìn)行能夠在盡可能降低容量的同時(shí)保持可接受的視頻質(zhì)量。但是,為便于傳輸和存儲(chǔ)而降低大小的視頻可能會(huì)犧牲一些圖像質(zhì)量。此外,視頻壓縮還要求處理器具備較高性能,并且在設(shè)計(jì)中要支持豐富的功能,因?yàn)椴煌愋偷囊曨l應(yīng)用在分辨率、帶寬以及靈活性方面都有著不同的要求。具有更高靈活性的(DSP)不僅能夠充分滿足上述需求,而且還可充分發(fā)揮高級(jí)視頻壓縮標(biāo)準(zhǔn)提供的豐富選項(xiàng)來(lái)幫助系統(tǒng)開(kāi)發(fā)人員實(shí)現(xiàn)產(chǎn)品。

          本文引用地址:http://www.ex-cimer.com/article/167091.htm

          視頻編解碼()算法的固有結(jié)構(gòu)和復(fù)雜性促使我們必須采用方案。非常重要,因?yàn)樗鼈儾坏仨殱M足應(yīng)用要求,而且也是視頻應(yīng)用進(jìn)行大量處理任務(wù)的主要部分。雖然是基于信息理論之上的,但在實(shí)施過(guò)程中仍需要在不同因素間權(quán)衡取舍,因此會(huì)非常復(fù)雜。應(yīng)當(dāng)具有高度的可配置性,并能針對(duì)各種視頻應(yīng)用提供簡(jiǎn)單易用的系統(tǒng)接口且實(shí)現(xiàn)性能最佳化,從而使開(kāi)發(fā)人員受益匪淺。

          視頻壓縮的特性

          原始視頻的傳輸或存儲(chǔ)需要占用大量空間。像H.264/MPEG-4 AVC等高級(jí)視頻能實(shí)現(xiàn)高達(dá)60:1到100:1的壓縮比并確保持續(xù)不變的吞吐量,這使我們能夠利用較窄的傳輸通道實(shí)現(xiàn)傳輸,并能減少視頻存儲(chǔ)所占的空間。

          與靜態(tài)影像領(lǐng)域的JPEG標(biāo)準(zhǔn)一樣,ITU與MPEG視頻編碼算法也需要結(jié)合采用離散轉(zhuǎn)換編碼(DCT或類似技術(shù))、量化和可變長(zhǎng)度編碼等技術(shù)來(lái)壓縮幀中的宏塊。一旦算法建立了基線編碼內(nèi)(I幀),只需通過(guò)視覺(jué)內(nèi)容的差值或它們之間的殘留值進(jìn)行編碼,就可建立眾多的后續(xù)預(yù)測(cè)幀(P幀)。我們可用所謂運(yùn)動(dòng)補(bǔ)償技術(shù)來(lái)實(shí)現(xiàn)這種幀間差值。該算法首先估算前一參考幀宏塊移入到當(dāng)前幀的位置,然后再消除冗余并壓縮剩余部分。

          圖1給出了一般性運(yùn)動(dòng)補(bǔ)償視頻編碼器的結(jié)構(gòu)圖。運(yùn)動(dòng)矢量(MV)數(shù)據(jù)描述了各塊的移動(dòng)位置,該數(shù)據(jù)在估算階段創(chuàng)建,這通常是算法中計(jì)算強(qiáng)度最大的階段。

          圖1:一般性運(yùn)動(dòng)補(bǔ)償視頻編碼器的結(jié)構(gòu)圖。
          圖1:一般性運(yùn)動(dòng)補(bǔ)償視頻編碼器的結(jié)構(gòu)圖。

          圖2顯示了P幀(右)及其參考幀(左)。在P幀下方,剩余部分(黑色部分)顯示了計(jì)算出運(yùn)動(dòng)矢量(藍(lán)色部分)后剩余的編碼量。

          圖2:顯示計(jì)算運(yùn)動(dòng)矢量后剩余編碼量的P 幀及參考幀。
          圖2:顯示計(jì)算運(yùn)動(dòng)矢量后剩余編碼量的P 幀及參考幀。

          視頻壓縮標(biāo)準(zhǔn)僅指定位流語(yǔ)法與解碼進(jìn)程,從而使編碼器擁有很大的創(chuàng)新空間。速率控制也是一個(gè)可以創(chuàng)新的領(lǐng)域,使編碼器能分配量化參數(shù),從而以適當(dāng)?shù)姆绞酱_定視頻信號(hào)中的噪聲。此外,高級(jí)H.264/MPEG-4 AVC標(biāo)準(zhǔn)還可提供宏塊大小、運(yùn)動(dòng)補(bǔ)償四分之一像素分辨率(quarter-pel resolution)、多參考幀、雙向幀預(yù)測(cè)(B幀)以及自適應(yīng)環(huán)內(nèi)去塊濾波(in-loop deblocking)等多種選擇,從而既提高了靈活性同時(shí)還增強(qiáng)了功能。

          多樣化的應(yīng)用需求

          視頻應(yīng)用要求差異很大。高級(jí)壓縮標(biāo)準(zhǔn)的各種特性為技術(shù)人員提供了廣闊的空間,在復(fù)雜性、延遲以及其他約束實(shí)時(shí)性能的因素之間獲得最佳平衡。例如,我們可以設(shè)想,視頻電話、視頻會(huì)議以及數(shù)碼攝像機(jī)(DVR)對(duì)視頻就有著不同的要求。

          視頻電話與視頻會(huì)議

          就視頻電話與視頻會(huì)議應(yīng)用而言,傳輸帶寬通常是最重要的問(wèn)題。根據(jù)鏈接的不同,帶寬傳輸?shù)姆秶山橛诿棵霐?shù)十到數(shù)千KB之間。在某些情況下,我們可以確保傳輸速度,但對(duì)于互聯(lián)網(wǎng)及眾多企業(yè)內(nèi)部網(wǎng)而言,傳輸速度會(huì)有很大差異。因此,視頻會(huì)議編碼器通常需要滿足不同類型的鏈路,并應(yīng)實(shí)時(shí)適應(yīng)不斷變化的可用帶寬。發(fā)送系統(tǒng)收到接收端條件后,應(yīng)不斷調(diào)節(jié)編碼輸出,以確保盡可能以最少的視頻中斷提供最佳的視頻質(zhì)量。如果條件較差,則編碼器可以采取降低平均比特率、跳幀或更改圖像組(GoP,即I幀與P幀相混合)等方法來(lái)應(yīng)對(duì)。I幀的壓縮程度低于P幀,因此帶有較少I幀的GoP所需的整體帶寬較低。由于視頻會(huì)議的可視內(nèi)容通常不會(huì)變化,因此可減少I幀的使用數(shù)量,使其低于娛樂(lè)應(yīng)用的水平。

          H.264采用自適應(yīng)環(huán)路內(nèi)去塊濾波器處理塊的邊緣,以保持視頻在當(dāng)前幀與后續(xù)幀之間的平滑,從而提高視頻編碼質(zhì)量,這點(diǎn)在低比特率時(shí)尤其有效。此外,關(guān)閉過(guò)濾器也能提高在既定比特率下可視化數(shù)據(jù)的數(shù)量,并可將運(yùn)動(dòng)估算分辨率從四分之一像素精度提高到二分之一乃至更高。在某些情況下,我們可能需要降低去塊濾波質(zhì)量或降低分辨率,從而減小編碼工作的復(fù)雜性。

          由于互聯(lián)網(wǎng)的分組提供不能確保質(zhì)量,因此視頻會(huì)議通常能從可提高容錯(cuò)率的編碼機(jī)制中受益。如圖3所示,P幀的連續(xù)圖像條(progressive strip)可用做幀內(nèi)編碼(I圖像條),這樣在初始幀之后就不再需要完整的I幀了,并能減少整個(gè)I幀被丟棄和圖像破損的問(wèn)題。

          圖3:P 幀的連續(xù)條狀圖像可用做幀內(nèi)編碼。
          圖3:P 幀的連續(xù)條狀圖像可用做幀內(nèi)編碼。

          數(shù)字錄像

          適用于家庭娛樂(lè)的數(shù)碼攝像機(jī)(DVR)可能是使用范圍最廣的實(shí)時(shí)視頻編碼器應(yīng)用了。對(duì)于這種系統(tǒng)來(lái)說(shuō),如何實(shí)現(xiàn)存儲(chǔ)容量和畫質(zhì)之間的最佳平衡是一大問(wèn)題。與不能容忍延遲的視頻會(huì)議不同,如果系統(tǒng)緩沖可用的存儲(chǔ)器足夠的話,則視頻錄制的壓縮可以承受一定的實(shí)時(shí)延遲。要滿足實(shí)際要求的設(shè)計(jì)意味著讓輸出緩沖器可以處理數(shù)個(gè)幀,這樣才足以保持磁盤能獲得穩(wěn)定持續(xù)的數(shù)據(jù)流。不過(guò),在某些情況下,由于可視信息變化非???,導(dǎo)致算法產(chǎn)生大量P幀數(shù)據(jù),這時(shí)緩沖器就可能出現(xiàn)阻塞。只要解決了阻塞問(wèn)題,圖像質(zhì)量就能重新提升。

          有效進(jìn)行權(quán)衡取舍的機(jī)制之一就是即時(shí)改變量化參數(shù)Qp。量化是壓縮數(shù)據(jù)算法最后階段的步驟之一。提高量化可減少算法的比特率輸出,但圖像失真會(huì)與Qp的平方成正比增長(zhǎng)。提高Qp會(huì)降低算法的比特率輸出,但同時(shí)也會(huì)影響畫質(zhì)。不過(guò),由于這種變化是實(shí)時(shí)發(fā)生的,因此有助于減少跳幀或畫面破損的現(xiàn)象。如果可視內(nèi)容更改非???,例如緩沖器擁塞時(shí),那么這時(shí)雖然畫質(zhì)降低,但卻不會(huì)像內(nèi)容緩慢變化時(shí)那樣引人注意。可視內(nèi)容返回較低比特率且緩沖器清空后,就能將Qp重設(shè)為正常值。

          編碼器的靈活性

          由于開(kāi)發(fā)人員可在各種視頻應(yīng)用中使用DSP,因此DSP編碼器在設(shè)計(jì)時(shí)就應(yīng)當(dāng)考慮到要發(fā)揮自身在壓縮標(biāo)準(zhǔn)方面的靈活性優(yōu)勢(shì)。例如,基于德州儀器(TI)移動(dòng)應(yīng)用領(lǐng)域OMAP媒體處理器、TMS320C64x+DSP或達(dá)芬奇(DaVinci?)處理器的編碼器就具備高度靈活性。為了最大限度地提高壓縮性能,每個(gè)編碼器都可用于充分利用其平臺(tái)的DSP架構(gòu),其中包括某些處理器中內(nèi)置的視頻與圖像協(xié)處理器(VICP)。

          所有編碼器均使用一套采用默認(rèn)參數(shù)的基本API,因此無(wú)論使用何種類型的系統(tǒng),系統(tǒng)接口都不會(huì)改變。擴(kuò)展的API參數(shù)可使編碼器滿足特定應(yīng)用的要求。默認(rèn)情況下,可將參數(shù)預(yù)設(shè)為高質(zhì)量,此外還提供高速預(yù)設(shè)設(shè)置。程序使用擴(kuò)展參數(shù)可以覆蓋所有預(yù)設(shè)參數(shù)。

          擴(kuò)展參數(shù)使應(yīng)用能滿足H.264或MPEG-4的要求。編碼器可支持若干選項(xiàng),如YUV 4:2:2與YUV 4:2:0輸入格式、最小四分之一像素分辨率的運(yùn)動(dòng)補(bǔ)償、各種I幀間隔(從每幀都為I幀到首個(gè)I幀后無(wú)后續(xù)I幀)、Qp比特率控制、存取運(yùn)動(dòng)矢量、去塊濾波器控制、同時(shí)編碼兩個(gè)或更多通道以及I圖像條(strip)等等。編碼器可動(dòng)態(tài)不受限制地確定默認(rèn)運(yùn)動(dòng)矢量的搜索范圍,這種技術(shù)相對(duì)于固定范圍搜索而言是一個(gè)進(jìn)步。

          此外,通常都會(huì)存在最佳操作點(diǎn)(sweet spot),也就是既定輸入分辨率和每秒幀數(shù)(fps)情況下最佳的輸出比特率。開(kāi)發(fā)人員應(yīng)當(dāng)認(rèn)識(shí)到編碼器的這個(gè)最佳點(diǎn),從而在設(shè)計(jì)方案中實(shí)現(xiàn)系統(tǒng)傳輸與畫質(zhì)的最佳設(shè)計(jì)平衡。



          評(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); })();