專利名稱:視頻壓縮/解壓縮系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻壓縮/解壓縮系統(tǒng),并且具體涉及多功能處理器中的數(shù)字視頻系統(tǒng)的壓縮/解壓縮中濾波過(guò)程的實(shí)現(xiàn)。
背景技術(shù):
運(yùn)動(dòng)畫(huà)面的實(shí)時(shí)傳輸被用于若干應(yīng)用,如視頻會(huì)議、網(wǎng)絡(luò)會(huì)議、TV廣播和視頻電話。然而,由于通常用8個(gè)比特(1字節(jié))表示畫(huà)面中的每個(gè)像素來(lái)描述數(shù)字視頻,所以表示運(yùn)動(dòng)畫(huà)面需要大量的信息。這樣的未壓縮的視頻數(shù)據(jù)導(dǎo)致大比特量,并且由于有限的帶寬而導(dǎo)致不能通過(guò)傳統(tǒng)的通信網(wǎng)絡(luò)和傳輸線來(lái)實(shí)時(shí)傳送。因此,為了能夠進(jìn)行實(shí)時(shí)視頻傳輸,需要很大程度的數(shù)據(jù)壓縮。然而,數(shù)據(jù)壓縮可能會(huì)損害畫(huà)面質(zhì)量。因此,做了很多努力來(lái)開(kāi)發(fā)壓縮技術(shù),以使得通過(guò)有限帶寬數(shù)據(jù)連接的高質(zhì)量視頻的實(shí)時(shí)傳輸。在視頻壓縮系統(tǒng)中,主要目標(biāo)是以盡可能少的容量表示視頻信息。容量用比特來(lái)定義為常數(shù)值或者定義為比特/時(shí)間單位。在這兩種情況下,主要目標(biāo)是減少比特的數(shù)目。最常用的視頻編碼方法描述在MPEG*和H. 26*標(biāo)準(zhǔn)中,它們都使用根據(jù)先前編碼和解碼的畫(huà)面的基于塊的預(yù)測(cè)。視頻數(shù)據(jù)在傳輸之前經(jīng)歷四個(gè)主要過(guò)程,即預(yù)測(cè)、變換、量化和熵編碼。預(yù)測(cè)過(guò)程顯著地減少被傳送視頻序列中的每個(gè)畫(huà)面所需要的比特的數(shù)量。它利用了序列的部分與序列的其他部分的相似性。因?yàn)轭A(yù)測(cè)器部分對(duì)于編碼器和解碼器兩者是已知的,所以僅需要傳送差異。該差異的表示通常需要更少的容量。預(yù)測(cè)主要基于來(lái)自先前重構(gòu)畫(huà)面的畫(huà)面內(nèi)容,其中內(nèi)容的位置由運(yùn)動(dòng)向量來(lái)定義。在典型的視頻序列中,當(dāng)前塊M的內(nèi)容會(huì)與先前解碼畫(huà)面中的對(duì)應(yīng)塊類似。如果自該先前解碼的畫(huà)面以后沒(méi)有發(fā)生改變,則M的內(nèi)容可能等同于該先前解碼的畫(huà)面中的相同位置的塊。在其他情況下,畫(huà)面中的對(duì)象可能已經(jīng)被移動(dòng),使得M的內(nèi)容更加等同于該先前解碼的畫(huà)面中的不同位置的塊。這樣的運(yùn)動(dòng)通過(guò)運(yùn)動(dòng)向量(V)來(lái)表示。例如,運(yùn)動(dòng)向量 (3 ;4)是指自該先前解碼的圖像以來(lái),M的內(nèi)容向左移動(dòng)了 3個(gè)像素并且向上移動(dòng)了 4個(gè)像
ο通過(guò)執(zhí)行運(yùn)動(dòng)搜索來(lái)確定與塊相關(guān)聯(lián)的運(yùn)動(dòng)向量。通過(guò)將該塊的內(nèi)容與不同空間偏移的先前畫(huà)面中的塊連續(xù)比較來(lái)執(zhí)行這種搜索。與當(dāng)前塊相比具有最佳匹配的比較塊同該當(dāng)前塊相關(guān)聯(lián),把與之相關(guān)的偏移量確定為關(guān)聯(lián)運(yùn)動(dòng)向量。在最近的視頻編碼標(biāo)準(zhǔn)中,同樣的概念被擴(kuò)展,使得運(yùn)動(dòng)向量還可以具有1/2像素值。向量分量5. 5因此表示該運(yùn)動(dòng)在5個(gè)像素和6個(gè)像素中間。更具體地,通過(guò)取得表示運(yùn)動(dòng)的像素5和表示運(yùn)動(dòng)的像素6之間的平均值來(lái)獲得預(yù)測(cè)。由于在兩個(gè)像素上操作以獲得兩個(gè)像素之間的像素的預(yù)測(cè)而稱其為2抽頭濾波器。這種類型的運(yùn)動(dòng)向量通常被稱作具有分?jǐn)?shù)像素分辨率或分?jǐn)?shù)運(yùn)動(dòng)向量。所有的濾波操作可以通過(guò)脈沖響應(yīng)來(lái)定義。平均2個(gè)像素的操作可以用脈沖響應(yīng)(1/2,1/ 來(lái)表達(dá)。類似地,平均4個(gè)像素是指脈沖響應(yīng)(1/4, 1/4,1/4,1/4)。在H. 264/AVC中,編碼方法已經(jīng)在運(yùn)動(dòng)分辨率和用于每個(gè)內(nèi)插的像素?cái)?shù)目?jī)蓚€(gè)方面上都有改善。這些方法使用具有高達(dá)1/4甚至1/8像素精確度的運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。以下給出了整數(shù)像素位置和分?jǐn)?shù)像素位置的示例(為簡(jiǎn)單起見(jiàn),內(nèi)插僅在A、E、U和Y之間被示出)A” E, AbcdE A, E”fgh ijk1m ηορqr stUνw χYΑ、Ε、U、Y的位置指示整數(shù)像素位置,并且Α”、Ε’、Α’和Ε”指示A-E線上的另外整數(shù)位置。c、k、m、0、w指示半像素位置??梢酝ㄟ^(guò)例如使用具有在整數(shù)像素值上操作的脈沖響應(yīng)(1/32,-5/32,20/32,20/32,-5/32,1/32)的6抽頭濾波器來(lái)獲取這些位置的內(nèi)插值。 例如,這樣c通過(guò)下面的表達(dá)式來(lái)計(jì)算c = 1/32 · Α”-5/32 · Ε,+20/32 · Α+20/32 · Ε-5/32 · A,+1/32 · Ε”水平地或垂直地適當(dāng)操作這種濾波器。當(dāng)視頻幀被編碼為H. 264/AVC比特流時(shí),在編碼未來(lái)的幀時(shí),最后步驟之一通常是為準(zhǔn)備上述運(yùn)動(dòng)搜索而進(jìn)行的半像素內(nèi)插濾波。該步驟是編碼過(guò)程中計(jì)算量需求最大的任務(wù)之一,并且涉及對(duì)整個(gè)幀進(jìn)行濾波。隨著畫(huà)面分辨率的增加,尤其是如果在通用處理器上,例如個(gè)人計(jì)算機(jī)上,實(shí)現(xiàn)編碼過(guò)程,這需要相當(dāng)大量的處理器能力,甚至引入過(guò)多的延遲。
為了使本發(fā)明易于理解,以下的討論將參考附圖,其中圖1是圖示本發(fā)明的一個(gè)示例性實(shí)施例的流程圖。
發(fā)明內(nèi)容
包括在獨(dú)立權(quán)利要求中所定義的特征表征本發(fā)明的方法。具體地,本發(fā)明公開(kāi)了一種計(jì)算機(jī)設(shè)備中視頻編碼或解碼過(guò)程中的方法,該方法通過(guò)預(yù)先定義的濾波操作來(lái)計(jì)算位于視頻畫(huà)面幀中的整數(shù)像素位置之間的內(nèi)插像素位置的像素值,其中,整數(shù)像素位置的像素值被存儲(chǔ)在計(jì)算機(jī)設(shè)備的存儲(chǔ)器中,其中,該方法包括以下步驟確定視頻畫(huà)面適用于若干預(yù)定義的分辨率格式中的哪一個(gè);對(duì)與所確定的分辨率格式相對(duì)應(yīng)的幀,定義固定寬度(W)和固定高度值(H);加載與所述多個(gè)整數(shù)像素位置的像素值相對(duì)應(yīng)的該計(jì)算機(jī)設(shè)備的存儲(chǔ)器的存儲(chǔ)器地址第一集合,其中,存儲(chǔ)器地址的第一集合是根據(jù)固定寬度(W)和固定高度值(H)計(jì)算的或是參照所述固定寬度值(W)和所述固定高度值(H)的;以及通過(guò)使用存儲(chǔ)器地址的第一集合中的一個(gè)或多個(gè)存儲(chǔ)器地址從存儲(chǔ)器連續(xù)加載多個(gè)整數(shù)像素位置的像素值,對(duì)多個(gè)整數(shù)像素位置的像素值執(zhí)行濾波操作以計(jì)算多個(gè)內(nèi)插像素位置的像素值。
具體實(shí)施例方式以下將通過(guò)描述示例性實(shí)施例來(lái)討論本發(fā)明。然而,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到在所包括的獨(dú)立權(quán)利要求中定義了本發(fā)明的范圍內(nèi)的其他的應(yīng)用和修改。當(dāng)視頻幀被編碼為H. 264/AVC比特流時(shí),最后兩個(gè)步驟通常是去塊化濾波和半像素內(nèi)插濾波。這兩個(gè)步驟合起來(lái)是編碼過(guò)程中計(jì)算量需求最大的任務(wù)之一,并且涉及對(duì)整個(gè)幀進(jìn)行濾波。在高級(jí)軟件代碼中,大致按下述來(lái)實(shí)現(xiàn)半像素內(nèi)插濾波DO 1 = 1,HD0J=1,WX(I,J) =F(Y(I, J))ENDDOENDDO這里,H表示幀的高度,W表示幀的寬度,Y表示未濾波的像素,X表示濾波的像素, 并且F表示包含了在背景技術(shù)部分中描述的濾波器抽頭系數(shù)的濾波函數(shù)。如根據(jù)該軟件代碼可解釋的,循環(huán)將從左至右開(kāi)始計(jì)算幀的上線中的1/2像素,并且然后對(duì)其他線連續(xù)地向下進(jìn)行。對(duì)要計(jì)算的每個(gè)內(nèi)插像素值,存儲(chǔ)在存儲(chǔ)器中的一組對(duì)應(yīng)像素與各濾波器抽頭系數(shù)相乘。必須從存儲(chǔ)器中讀取這些像素,因此必須知道存儲(chǔ)器地址。上述的函數(shù)適用于處理所有類型的圖像分辨率,因此H和W是未知的。這樣,要得到獨(dú)立于分辨率的實(shí)現(xiàn)(即,適合于所有類型的分辨率),就必須對(duì)每個(gè)1/2像素計(jì)算導(dǎo)出濾波操作中使用的像素值的存儲(chǔ)器地址。當(dāng)分辨率從 VGA (640x440)增加到 720P (1280x720)和全孔徑 4K (4096x3112)時(shí), 在使用上述循環(huán)時(shí),關(guān)鍵的存儲(chǔ)器計(jì)算成本急劇增加。例如,全孔徑4K涉及12,746,752個(gè)像素的濾波,因此,必須要特別注意以處理比現(xiàn)代處理器的高速緩存更大的數(shù)據(jù)規(guī)模。所有已知的算法都是使用個(gè)單個(gè)函數(shù)來(lái)對(duì)像素做濾波,并且如已經(jīng)指出的,這意味著以上給出的H和W二者都是未知的,并且要即時(shí)計(jì)算存儲(chǔ)器的用于加載和存儲(chǔ)的地址。 它們?cè)诰幾g時(shí)是未知的,而且需要很多額外的存儲(chǔ)器地址的計(jì)算。在每個(gè)加載和存儲(chǔ)之前的地址計(jì)算會(huì)使得處理器流水線拖延,這可能擾亂硬件預(yù)取,并且甚至干擾指令布局和指令緩存行為,并且造成執(zhí)行端口和/或執(zhí)行單元的沖突。因此,即使緩存發(fā)生作用,很多細(xì)節(jié)也可能出錯(cuò),如預(yù)取問(wèn)題,而這可能是造成如全孔徑4K這樣的大數(shù)據(jù)集的大多數(shù)故障的原因。利用偽代碼,根據(jù)上述的現(xiàn)有技術(shù)的高級(jí)軟件代碼可以如下更詳細(xì)地描述,DO 1 = 1,HD0J=1,W加載Y的存儲(chǔ)器地址加載 YX(I,J) =F(Y(I, J))加載X的存儲(chǔ)器地址存儲(chǔ) XENDDO
ENDDO注意,X和Y可以表示向量,并且因此加載和存儲(chǔ)所需要的像素時(shí),要求很多額外的地址計(jì)算。例如,從存儲(chǔ)器一次加載16個(gè)像素,并且然后根據(jù)加載的16像素來(lái)進(jìn)行所有內(nèi)插像素的并行計(jì)算并非罕見(jiàn)。本發(fā)明提供了一種顯著減少存儲(chǔ)器加載/存儲(chǔ)數(shù)目和地址計(jì)算的方法。為了在循環(huán)體內(nèi)實(shí)現(xiàn)已知的存儲(chǔ)器行為,對(duì)每種分辨率實(shí)現(xiàn)一個(gè)濾波器。在濾波之前,確定視頻內(nèi)容適用于哪種格式。根據(jù)本發(fā)明的實(shí)現(xiàn)如下所示,例如已經(jīng)確定了具有每行640像素(幀寬) 和480行(幀高)的VGA分辨率,加載X的存儲(chǔ)器地址加載Y的存儲(chǔ)器地址DO I = 1,480DO J = 1,640加載 YX(I,J) =F(Y(I, J))存儲(chǔ) XENDDOENDDO可以看出,在濾波函數(shù)之前計(jì)算存儲(chǔ)器地址,因此避免了對(duì)每個(gè)循環(huán)步驟的地址計(jì)算。因?yàn)榉直媛适且阎?,所以所有存?chǔ)器加載和存儲(chǔ)僅由循環(huán)內(nèi)的像素標(biāo)號(hào)I和J 來(lái)直接給定,并且可以完全避免在即時(shí)計(jì)算存儲(chǔ)器地址時(shí)所涉及的所有缺點(diǎn)。然而,這需要針對(duì)每種分辨率實(shí)現(xiàn)獨(dú)立的濾波,但由于僅支持有限數(shù)目的分辨率,所以與被濾波的幀的大小相比,可執(zhí)行文件增加的大小可以被忽略不計(jì)。因此,根據(jù)本發(fā)明,針對(duì)當(dāng)前的分辨率,特別地定制例如根據(jù)H. 264的像素濾波以計(jì)算內(nèi)插像素值。本發(fā)明提供了公知存儲(chǔ)器規(guī)模的濾波。對(duì)于給定的分辨率,幀中每個(gè)像素的確切存儲(chǔ)器位置在編譯時(shí)是已知的,并且不需要即時(shí)計(jì)算。因此,加載和存儲(chǔ)變得非常高效。本發(fā)明還提供了指令的有效調(diào)度。當(dāng)在編譯時(shí)已知正在使用的數(shù)據(jù)位置時(shí),編譯器很容易按最有效的順序來(lái)調(diào)度代碼。這將特別促進(jìn)不能對(duì)可執(zhí)行文件中的指令即時(shí)重新排序的順序執(zhí)行機(jī),但它還可以導(dǎo)致非序執(zhí)行處理器的顯著加速,因可以找到能同時(shí)運(yùn)行的更多的獨(dú)立指令。對(duì)照現(xiàn)有技術(shù),這些濾波器的所有其他實(shí)現(xiàn)都使用相同的源代碼來(lái)覆蓋所有的分辨率。這不同于本發(fā)明的方法,此處源代碼適用于每種分辨率,因此通過(guò)已知的存儲(chǔ)器規(guī)模和有效的指令調(diào)度實(shí)現(xiàn)了固定循環(huán)計(jì)算的所有益處。
權(quán)利要求
1.一種計(jì)算機(jī)設(shè)備中視頻編碼或解碼過(guò)程中的方法,所述方法用于通過(guò)預(yù)先定義的濾波操作來(lái)計(jì)算位于視頻畫(huà)面幀中的整數(shù)像素位置之間的內(nèi)插像素位置的像素值,其中,所述整數(shù)像素位置的像素值被存儲(chǔ)在計(jì)算機(jī)設(shè)備的存儲(chǔ)器中,所述方法的特征在于下述步驟確定該視頻畫(huà)面適用于若干預(yù)定義的分辨率格式中的哪一個(gè);對(duì)與所確定的分辨率格式相對(duì)應(yīng)的幀,定義固定寬度值(W)和固定高度值(H);加載與所述多個(gè)整數(shù)像素位置的像素值相對(duì)應(yīng)的該計(jì)算機(jī)設(shè)備的存儲(chǔ)器的存儲(chǔ)器地址第一集合,其中,所述存儲(chǔ)器地址第一集合是根據(jù)所述固定寬度值(W)和所述固定高度值(H)而計(jì)算的或是參照所述固定寬度值(W)和所述固定高度值(H)的;通過(guò)使用來(lái)自所述存儲(chǔ)器地址第一集合的一個(gè)或多個(gè)存儲(chǔ)器地址從所述存儲(chǔ)器連續(xù)加載所述多個(gè)整數(shù)像素位置的像素值,對(duì)所述多個(gè)整數(shù)像素位置的像素值執(zhí)行濾波操作以計(jì)算多個(gè)內(nèi)插像素位置的像素值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于加載與所述多個(gè)內(nèi)插像素位置的像素值相對(duì)應(yīng)的該計(jì)算機(jī)設(shè)備的存儲(chǔ)器的存儲(chǔ)器地址第二集合,其中,所述存儲(chǔ)器地址第二集合是根據(jù)所述固定寬度值(W)和所述固定高度值(H)而計(jì)算的或是參照所述固定寬度值(W)和所述固定高度值(H)的;通過(guò)使用所述存儲(chǔ)器地址第二集合中的一個(gè)或多個(gè)存儲(chǔ)器地址來(lái)把所述多個(gè)內(nèi)插像素位置的像素值連續(xù)存儲(chǔ)到存儲(chǔ)器中。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于執(zhí)行所述濾波操作的步驟還包括根據(jù)要計(jì)算的所述內(nèi)插像素位置的相應(yīng)像素值,使濾波器抽頭系數(shù)乘以整數(shù)像素位置的相應(yīng)加載的像素值。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于所述預(yù)定義的濾波操作對(duì)應(yīng)于具有濾波系數(shù)(1/32,-5/32,20/32,20/32,-5/32,1/32) 的6抽頭濾波器,并且所述內(nèi)插像素位置是1/2像素位置。
5.根據(jù)前述權(quán)利要求之一所述的方法,其特征在于所述若干預(yù)定義的分辨率格式是 SQCIF、QCIF、CIF、SIF、WCIF、25CIF、VGA、4CIF、4SIF、 SVGA、W4CIF、XGA、720P、1080P、Quadl080P 和全孔徑 4K。
6.根據(jù)編碼標(biāo)準(zhǔn)H.264/AVC在像素運(yùn)動(dòng)補(bǔ)償中對(duì)前述權(quán)利要求之一的方法的使用。
全文摘要
本發(fā)明涉及多功能處理器中的數(shù)字視頻系統(tǒng)的壓縮/解壓縮中濾波過(guò)程的實(shí)現(xiàn)。提供了一種顯著減少存儲(chǔ)器加載/存儲(chǔ)次數(shù)和地址計(jì)算的方法。為了在循環(huán)內(nèi)實(shí)現(xiàn)已知存儲(chǔ)器行為,對(duì)每種分辨率實(shí)現(xiàn)一種濾波。在濾波之前,確定視頻內(nèi)容適用于哪一種格式,并且在運(yùn)行循環(huán)之前知道每個(gè)幀的寬度和高度以及要濾波的像素值的存儲(chǔ)器地址。對(duì)給定的分辨率,幀中每個(gè)像素的確切存儲(chǔ)器位置在編譯時(shí)是已知的,并且不需要即時(shí)(即在濾波函數(shù)的每次循環(huán)中)計(jì)算。因此,加載和存儲(chǔ)變得非常有效。這將特別地促進(jìn)不能對(duì)可執(zhí)行文件的指令即時(shí)重新排序的按序執(zhí)行機(jī),還可以導(dǎo)致非序執(zhí)行處理器的顯著加速,因可找到能夠同時(shí)運(yùn)行的更多獨(dú)立指令。
文檔編號(hào)H04N5/14GK102257530SQ200980151652
公開(kāi)日2011年11月23日 申請(qǐng)日期2009年12月17日 優(yōu)先權(quán)日2008年12月19日
發(fā)明者拉斯·皮特·恩勒森 申請(qǐng)人:坦德伯格電信公司