亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于有效過(guò)濾數(shù)字信號(hào)的方法和系統(tǒng)的制作方法

文檔序號(hào):7505222閱讀:206來(lái)源:國(guó)知局
專利名稱:用于有效過(guò)濾數(shù)字信號(hào)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及用于執(zhí)行整數(shù)運(yùn)算的技術(shù),尤其涉及用于在視頻編碼器和解碼器中執(zhí)行量化和預(yù)測(cè)計(jì)算的技術(shù)。
背景技術(shù)
在視頻通信(例如電視、電視會(huì)議、流媒體等等)中,圖像幀流是經(jīng)由傳輸信道傳送到接收機(jī)的。根據(jù)特定應(yīng)用,還可以傳送與視頻相關(guān)聯(lián)的音頻信息。視頻數(shù)據(jù)通常很大。例如,典型的電視圖像具有每幀大約720×480個(gè)像素的空間分辨率。如果使用8個(gè)比特來(lái)以數(shù)字方式表示一個(gè)像素并以每秒30幀的速度傳送視頻,則需要大約83Mb/s的數(shù)據(jù)速率。然而,傳輸信道的帶寬通常是有限的。因此,原始數(shù)字視頻數(shù)據(jù)的實(shí)時(shí)傳輸通常是不可行的。同樣,由于用來(lái)存儲(chǔ)的存儲(chǔ)器數(shù)量通常也是有限的,因此原始數(shù)字視頻數(shù)據(jù)的存儲(chǔ)同樣受到抑制。
這樣一來(lái),在傳輸和/或存儲(chǔ)視頻數(shù)據(jù)之前通常會(huì)對(duì)其進(jìn)行壓縮。目前已經(jīng)出現(xiàn)了多種視頻壓縮標(biāo)準(zhǔn),例如H.261、MPEG-1、MPEG-2、MPEG-4、H.263等等。這些壓縮技術(shù)通常利用了視頻流每個(gè)畫(huà)面內(nèi)部以及視頻流畫(huà)面之間的信息冗余度。例如,一種通常用于壓縮視頻數(shù)據(jù)的技術(shù)包含了對(duì)畫(huà)面數(shù)據(jù)執(zhí)行一種將其變換到二維空間頻域中的數(shù)學(xué)轉(zhuǎn)換(例如離散余弦變換)。然后則對(duì)經(jīng)過(guò)變換的畫(huà)面進(jìn)行量化(也就是降低數(shù)據(jù)的分辨率,從而只需要較少的比特就能表示數(shù)據(jù)),從而利用了人類視覺(jué)通常較少感測(cè)到較高空間頻率這一事實(shí)(也就是說(shuō),與那些對(duì)應(yīng)于較低空間頻率的已變換視頻數(shù)據(jù)相比,那些與更高空間頻率相對(duì)應(yīng)的已變換畫(huà)面數(shù)據(jù)將會(huì)受到更嚴(yán)格的量化)。在接收機(jī)上則對(duì)接收到的視頻數(shù)據(jù)施加逆變換,以便再現(xiàn)視頻。
在另一種常規(guī)技術(shù)中,所傳送的是新畫(huà)面與先前畫(huà)面之間的差值,而不是視頻流中的新畫(huà)面。由于一個(gè)視頻流中的連續(xù)畫(huà)面通常是相似的,因此可以使用遠(yuǎn)遠(yuǎn)少于傳送畫(huà)面自身所需要的比特來(lái)傳送這些差值信息。
通過(guò)在編碼器和解碼器上使用預(yù)測(cè)技術(shù),可以進(jìn)一步減少傳送視頻所需要的比特?cái)?shù)目。例如,編碼器可以基于先前畫(huà)面來(lái)“預(yù)測(cè)”視頻流中的當(dāng)前畫(huà)面,然后對(duì)其預(yù)測(cè)畫(huà)面與實(shí)際畫(huà)面之間的誤差進(jìn)行計(jì)算。預(yù)測(cè)畫(huà)面與實(shí)際畫(huà)面之間的誤差往往小于實(shí)際畫(huà)面與先前畫(huà)面之間的誤差。由于誤差較小,因此只需要較少的比特來(lái)表示誤差,從而減少了需要傳送的比特的數(shù)目。在接收機(jī)上,解碼器產(chǎn)生一個(gè)預(yù)測(cè)畫(huà)面并將其與接收到的誤差信息相結(jié)合,從而產(chǎn)生實(shí)際畫(huà)面。
此外,在一種用于產(chǎn)生視頻流中的畫(huà)面預(yù)測(cè)的技術(shù)中包含了運(yùn)動(dòng)估計(jì)。在一種運(yùn)動(dòng)估計(jì)技術(shù)中,當(dāng)前畫(huà)面劃分為8×8的像素塊。對(duì)每個(gè)塊來(lái)說(shuō),在一個(gè)基準(zhǔn)畫(huà)面內(nèi)部搜索所述塊的最佳適配,其中舉例來(lái)說(shuō),所述基準(zhǔn)畫(huà)面可以是視頻流中與當(dāng)前畫(huà)面相鄰的另一個(gè)實(shí)際或預(yù)測(cè)畫(huà)面。一旦發(fā)現(xiàn)最佳適配,則確定一個(gè)主要表示最佳適配塊在基準(zhǔn)畫(huà)面中的位置的運(yùn)動(dòng)矢量。然后則將涉及每個(gè)幀塊的運(yùn)動(dòng)矢量和誤差都傳送到接收機(jī)。而在接收機(jī)上則是使用基準(zhǔn)畫(huà)面、運(yùn)動(dòng)矢量和誤差信息來(lái)重建當(dāng)前畫(huà)面的。
與上述及其他技術(shù)相類似的技術(shù)可以結(jié)合起來(lái),以便在沒(méi)有將視頻質(zhì)量降低到預(yù)期等級(jí)之外的情況下實(shí)現(xiàn)更高的壓縮度。例如,在MPEG-1、MPEG-2和MPEG-4標(biāo)準(zhǔn)中預(yù)測(cè)了視頻流中的畫(huà)面,并且計(jì)算了實(shí)際畫(huà)面與預(yù)測(cè)畫(huà)面之間的差值。然后則是對(duì)所述差值的離散余弦變換(DCT)進(jìn)行計(jì)算并對(duì)DCT系數(shù)進(jìn)行量化。
在典型的視頻系統(tǒng)中,視頻數(shù)據(jù)是作為整數(shù)來(lái)進(jìn)行表示和處理的。而目前需要的則是那些能夠更有效地處理定點(diǎn)數(shù)據(jù)的技術(shù)。

發(fā)明內(nèi)容
在依照本發(fā)明的一個(gè)實(shí)施例中,提供了一種用于在信號(hào)處理器中對(duì)數(shù)字信號(hào)中的取樣進(jìn)行過(guò)濾的方法。該方法包括依照一個(gè)少于四個(gè)數(shù)字信號(hào)取樣的函數(shù)產(chǎn)生近似過(guò)濾取樣。此外,該方法還依照一個(gè)少于四個(gè)取樣的函數(shù)產(chǎn)生校正值,并且通過(guò)使用該校正值來(lái)修改近似過(guò)濾取樣,以便產(chǎn)生一個(gè)已過(guò)濾取樣。
在依照本發(fā)明的另一個(gè)實(shí)施例中,提供了一個(gè)包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,其中所述介質(zhì)包含了用于量化數(shù)字信號(hào)的計(jì)算機(jī)程序代碼。所述計(jì)算機(jī)程序代碼包括用于依照一個(gè)少于四個(gè)數(shù)字信號(hào)取樣的函數(shù)產(chǎn)生近似過(guò)濾取樣。所述計(jì)算機(jī)程序代碼還包括用于依照一個(gè)少于四個(gè)取樣的函數(shù)產(chǎn)生校正值的代碼,以及通過(guò)使用所述校正值修改近似過(guò)濾取樣,從而產(chǎn)生一個(gè)已過(guò)濾樣本的代碼。
在依照本發(fā)明的另一個(gè)實(shí)施例中,提供了一個(gè)用于過(guò)濾數(shù)字信號(hào)中的取樣的系統(tǒng)。該系統(tǒng)包括一個(gè)保存了數(shù)字信號(hào)中的取樣的存儲(chǔ)器以及一個(gè)與存儲(chǔ)器相耦合的處理器。該處理器可以進(jìn)行操作,以便執(zhí)行步驟A)依照一個(gè)少于四個(gè)數(shù)字信號(hào)取樣的函數(shù)產(chǎn)生近似過(guò)濾取樣。所述處理器還可以進(jìn)行操作,以便執(zhí)行步驟B)依照一個(gè)少于四個(gè)取樣的函數(shù)產(chǎn)生校正值,以及C)通過(guò)使用校正值來(lái)修改近似過(guò)濾取樣,以便產(chǎn)生一個(gè)已過(guò)濾取樣。
依照本發(fā)明的第二個(gè)方面,提供了一種在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法。該方法包括依照一個(gè)第一取樣A、第二取樣B、第三取樣C和第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣,其中A、B、C和D都是定點(diǎn)數(shù)。該方法還包括依照((AB)AND(CD))OR(MN)來(lái)產(chǎn)生一個(gè)校正值,其中M=A+B+1>>1并且N=C+D+1>>1,此外還包括遮蔽所述校正值。此外,該方法還包括使用校正值來(lái)修改近似過(guò)濾取樣,以便產(chǎn)生一個(gè)已過(guò)濾取樣。
在根據(jù)本發(fā)明的另一個(gè)實(shí)施例中,提供了一種包含計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,其中該介質(zhì)包含了用于量化數(shù)字信號(hào)的計(jì)算機(jī)程序代碼。所述計(jì)算機(jī)程序代碼包括用于依照一個(gè)第一取樣A、第二取樣B、第三取樣C和第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣的代碼,其中A、B、C和D都是定點(diǎn)數(shù),此外還包括依照((AB)AND(CD))OR(MN)來(lái)產(chǎn)生一個(gè)校正值的代碼,其中M=A+B+1>>1并且N=C+D+1>>1。此外,所述計(jì)算機(jī)程序代碼還包括用于遮蔽所述校正值的代碼,以及通過(guò)使用校正值來(lái)修改近似過(guò)濾取樣,從而產(chǎn)生一個(gè)已過(guò)濾取樣的代碼。
根據(jù)本發(fā)明的第三個(gè)方面,提供了另一種在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法。該方法包括依照一個(gè)與第一取樣A、第二取樣B、第三取樣C和第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣,其中A、B、C和D都是整數(shù)。該方法還包括依照((AB)OR(CD)OR(MN)來(lái)產(chǎn)生一個(gè)校正值,其中M=A+B+1>>1并且N=C+D+1>>1,并且該方法遮蔽所述校正值。此外,所述方法還包括通過(guò)使用所述校正值來(lái)修改近似過(guò)濾取樣,從而產(chǎn)生一個(gè)已過(guò)濾取樣。
根據(jù)本發(fā)明的第四個(gè)方面,提供了另一種在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法。該方法包括產(chǎn)生M1=(A+B+1)>>1,其中A和B都是數(shù)字信號(hào)中的取樣,以及產(chǎn)生M2=(C+D+1)>>1,其中C和D也是數(shù)字信號(hào)中的取樣。該方法還包括產(chǎn)生M3=(E+F+1)>>1,其中E和F是數(shù)字信號(hào)中的取樣,以及產(chǎn)生M4=(G+H+1)>>1,其中G和H也是數(shù)字信號(hào)中的取樣。所述方法還包括產(chǎn)生N1=(M1+(M3>>1)+(M3>>2))>>2,以及產(chǎn)生N2=(M2+(M2>>1)+(M4>>2))>>2。此外,該方法還包括產(chǎn)生一個(gè)如M1+N1-N2所示的已過(guò)濾取樣。
借助于本發(fā)明,可以實(shí)現(xiàn)很多益處。例如,在一個(gè)特定實(shí)施例中,與常規(guī)的過(guò)濾技術(shù)相比,數(shù)字取樣過(guò)濾是以較少的計(jì)算費(fèi)用來(lái)執(zhí)行的。從以下的詳細(xì)描述和附圖中很容易了解本發(fā)明的其他特征和優(yōu)點(diǎn)。


圖1是一個(gè)視頻編碼器實(shí)例的簡(jiǎn)化數(shù)據(jù)流程圖;圖2是一個(gè)描述了可以實(shí)施依照本發(fā)明不同實(shí)施例的方法的典型計(jì)算機(jī)系統(tǒng)中的基礎(chǔ)子系統(tǒng)的簡(jiǎn)化框圖;圖3是一個(gè)描述了帶有流式SIMD擴(kuò)展(SSE)或流式SIMD擴(kuò)展2(SSE2)的IntelTM處理器的緊縮平均指令操作的簡(jiǎn)化圖示;圖4是一個(gè)描述了用于對(duì)運(yùn)算指令(A+B)>>1進(jìn)行計(jì)算的常規(guī)方法的簡(jiǎn)化流程圖,其中A和B都是無(wú)符號(hào)的八比特整數(shù);圖5是一個(gè)根據(jù)本發(fā)明實(shí)施例而在兩個(gè)值A(chǔ)和B之間插值的方法的簡(jiǎn)化流程圖;圖6是一個(gè)根據(jù)本發(fā)明實(shí)施例而在兩個(gè)整數(shù)A和B之間產(chǎn)生一個(gè)插值的方法的簡(jiǎn)化流程圖;圖7是一個(gè)描述了用于對(duì)運(yùn)算指令(A+B)>>2進(jìn)行計(jì)算的常規(guī)方法的簡(jiǎn)化流程圖,其中A、B、C和D都是無(wú)符號(hào)八比特整數(shù);圖8是一個(gè)根據(jù)本發(fā)明實(shí)施例而在四個(gè)定點(diǎn)值A(chǔ)、B、C和D之間產(chǎn)生一個(gè)插值的方法的簡(jiǎn)化流程圖;圖9是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例而在四個(gè)整數(shù)A、B、C和D之間產(chǎn)生一個(gè)插值的方法的簡(jiǎn)化流程圖;圖10是一個(gè)根據(jù)本發(fā)明實(shí)施例而對(duì)數(shù)字取樣進(jìn)行過(guò)濾的方法的簡(jiǎn)化流程圖;圖11是一個(gè)根據(jù)本發(fā)明另一種實(shí)施例而對(duì)數(shù)字取樣進(jìn)行過(guò)濾的方法的簡(jiǎn)化流程圖;圖12是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例而對(duì)數(shù)字取樣進(jìn)行過(guò)濾的方法的簡(jiǎn)化流程圖;圖13是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例以及依照函數(shù)(A+B+2)>>1來(lái)過(guò)濾數(shù)字取樣的方法的簡(jiǎn)化流程圖;圖14是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例以及依照函數(shù)(2A+B+C+1)>>2來(lái)過(guò)濾數(shù)字取樣的方法的簡(jiǎn)化流程圖;圖15是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例以及依照函數(shù)(3A+B+1)>>2來(lái)過(guò)濾數(shù)字取樣的方法的簡(jiǎn)化流程圖;圖16是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例以及依照函數(shù)(A+B+C+1)>>2來(lái)過(guò)濾數(shù)字取樣的方法的簡(jiǎn)化流程圖;圖17是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例以及依照函數(shù)(2A+B+C)>>2來(lái)過(guò)濾數(shù)字取樣的方法的簡(jiǎn)化流程圖;圖18是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例以及依照函數(shù)(3A+B)>>2來(lái)過(guò)濾數(shù)字取樣的方法的簡(jiǎn)化流程圖;以及圖19是一個(gè)根據(jù)本發(fā)明另一個(gè)實(shí)施例以及依照函數(shù)(A+B+C)>>2來(lái)過(guò)濾數(shù)字取樣的方法的簡(jiǎn)化流程圖。
具體實(shí)施例方式
系統(tǒng)概述圖1是可以使用本發(fā)明某些實(shí)施例的視頻編碼器100的一個(gè)實(shí)例的簡(jiǎn)化數(shù)據(jù)流程圖。視頻編碼器100接收那些將要編碼的視頻數(shù)據(jù)并且產(chǎn)生經(jīng)過(guò)編碼的視頻。所要編碼的視頻包含了多個(gè)畫(huà)面,并且視頻編碼器100產(chǎn)生一系列經(jīng)過(guò)編碼的畫(huà)面。舉例來(lái)說(shuō),一個(gè)畫(huà)面可以是一個(gè)非交織視頻幀(有時(shí)也稱為非交織視頻場(chǎng)),一個(gè)交織視頻幀,一個(gè)交織視頻場(chǎng)等等。每一個(gè)輸入畫(huà)面都包含了一個(gè)像素陣列,并且通常使用了16個(gè)比特的8比特而將每一個(gè)像素表示成一個(gè)無(wú)符號(hào)整數(shù)。此外,每一個(gè)輸入畫(huà)面都提供到一個(gè)減法器110,該減法器通過(guò)從輸入畫(huà)面中減去一個(gè)預(yù)測(cè)畫(huà)面來(lái)產(chǎn)生一個(gè)預(yù)測(cè)誤差。而預(yù)測(cè)畫(huà)面則是由預(yù)測(cè)器132產(chǎn)生的。
正如本領(lǐng)域技術(shù)人員公知的那樣,并非視頻流中的所有畫(huà)面都要通過(guò)使用預(yù)測(cè)來(lái)進(jìn)行編碼。因此預(yù)測(cè)器132并沒(méi)有為某些畫(huà)面產(chǎn)生一個(gè)預(yù)測(cè)畫(huà)面。在下文中,在沒(méi)有進(jìn)行預(yù)測(cè)的情況下進(jìn)行編碼的畫(huà)面稱為“幀內(nèi)”畫(huà)面,而通過(guò)使用預(yù)測(cè)來(lái)進(jìn)行編碼的畫(huà)面則稱為“非幀內(nèi)”畫(huà)面。因此,對(duì)幀內(nèi)畫(huà)面來(lái)說(shuō),所述預(yù)測(cè)誤差僅僅是輸入畫(huà)面。
然后,預(yù)測(cè)誤差被提供到一個(gè)生成預(yù)測(cè)誤差的離散余弦變換(DCT)系數(shù)的DCT計(jì)算器112。而DCT系數(shù)則被提供到一個(gè)量化DCT系數(shù)的量化器114。對(duì)典型的視頻信息來(lái)說(shuō),量化器114產(chǎn)生的很多量化DCT系數(shù)通常都為零。經(jīng)過(guò)量化的DCT系數(shù)則提供到一個(gè)可變長(zhǎng)度編碼器116,其中舉例來(lái)說(shuō),該編碼器使用了霍夫曼編碼等方法來(lái)對(duì)經(jīng)過(guò)量化的DCT系數(shù)進(jìn)行編碼,以便產(chǎn)生一個(gè)經(jīng)過(guò)編碼的畫(huà)面。
此外,量化器114產(chǎn)生的經(jīng)過(guò)量化的DCT系數(shù)還被提供給一個(gè)逆量化器120,而逆量化器輸出則提供到一個(gè)逆DCT計(jì)算器122。逆DCT計(jì)算器122產(chǎn)生一個(gè)經(jīng)過(guò)解碼的預(yù)測(cè)誤差,該預(yù)測(cè)誤差則被提供到一個(gè)加法器124。加法器124向經(jīng)過(guò)解碼的預(yù)測(cè)誤差中添加一個(gè)相應(yīng)的預(yù)測(cè)畫(huà)面,以便產(chǎn)生一個(gè)經(jīng)過(guò)解碼的畫(huà)面。此外,輸入畫(huà)面還被提供給一個(gè)運(yùn)動(dòng)估計(jì)器130,其中所述運(yùn)動(dòng)估計(jì)器產(chǎn)生的是提供給預(yù)測(cè)器132的運(yùn)動(dòng)矢量和模式信息。而預(yù)測(cè)器132則是根據(jù)運(yùn)動(dòng)矢量、模式信息和解碼畫(huà)面來(lái)產(chǎn)生預(yù)測(cè)畫(huà)面的。
如圖1所述編碼器100之類的視頻編碼器可以用硬件、軟件或是硬件與軟件相結(jié)合的方式來(lái)實(shí)施。圖2是一個(gè)典型計(jì)算機(jī)系統(tǒng)150的簡(jiǎn)化框圖,其中在所述計(jì)算機(jī)系統(tǒng)上可以執(zhí)行那些實(shí)現(xiàn)了某些或所有那些如圖1所述的編碼器部件的軟件。這個(gè)圖示只是一個(gè)例示并且不對(duì)權(quán)利要求的范圍構(gòu)成限制。而本領(lǐng)域普通技術(shù)人員則可以想到其他的變化、修改和替換。
在某些實(shí)施例中,子系統(tǒng)是經(jīng)由系統(tǒng)總線152相互連接的。在這里顯示的是打印機(jī)、鍵盤,硬盤154等附加子系統(tǒng)。外部設(shè)備和輸入/輸出(I/O)設(shè)備可以通過(guò)本領(lǐng)域已知的多種方式與計(jì)算機(jī)系統(tǒng)相連,例如串行端口156。舉例來(lái)說(shuō),在這里可以使用串行端口156將計(jì)算機(jī)系統(tǒng)與一個(gè)調(diào)制解調(diào)器相連,該調(diào)制解調(diào)器轉(zhuǎn)而連接到因特網(wǎng)之類的廣域網(wǎng)。經(jīng)由系統(tǒng)總線152的相互連接則允許中央處理器160與每一個(gè)子系統(tǒng)進(jìn)行通信,并且允許中央處理器對(duì)來(lái)自系統(tǒng)存儲(chǔ)器162或硬盤154的指令的執(zhí)行以及子系統(tǒng)之間的信息交換進(jìn)行控制。本領(lǐng)域普通技術(shù)人員很容易就能實(shí)現(xiàn)這些子系統(tǒng)以及相互連接的其他方案。系統(tǒng)存儲(chǔ)器162和硬盤154則是用于保存計(jì)算機(jī)程序的有形介質(zhì)實(shí)例。其它類型的有形介質(zhì)還包括軟盤,可卸載硬盤,CD-ROM與條形碼之類的光存儲(chǔ)介質(zhì),以及半導(dǎo)體存儲(chǔ)器,例如閃速存儲(chǔ)器、只讀存儲(chǔ)器(ROM)以及由電池支持的存儲(chǔ)器。
中央處理器160可以是任何一種適于處理特定視頻編碼實(shí)施方式所需要的吞吐量的處理器。舉例來(lái)說(shuō),中央處理器160可以是單指令多數(shù)據(jù)(SIMD)處理器,例如具有MMXTM媒體增強(qiáng)技術(shù)以及流式SIMD擴(kuò)展(SSE)或流式SIMD擴(kuò)展2(SSE2)的IntelTM處理器(下文中將其稱為“具有MMXTM/SSE的IntelTM處理器”),NEC VR5234處理器,Equator MAP-CATM處理器以及菲利浦公司的TM-1300處理器等等。
運(yùn)動(dòng)估計(jì)/補(bǔ)償運(yùn)動(dòng)估計(jì)/補(bǔ)償是在利用視頻流畫(huà)面之間的相似性而對(duì)視頻數(shù)據(jù)進(jìn)行壓縮/解壓縮的過(guò)程中使用的一系列技術(shù)。通常,運(yùn)動(dòng)估計(jì)指的是在編碼過(guò)程中應(yīng)用的技術(shù),而運(yùn)動(dòng)補(bǔ)償則是在解碼過(guò)程中應(yīng)用的技術(shù)。在這些技術(shù)中,當(dāng)前畫(huà)面是使用一個(gè)或多個(gè)先前或后續(xù)畫(huà)面來(lái)“預(yù)測(cè)”的。
在運(yùn)動(dòng)估計(jì)中,通常把那些將要“預(yù)測(cè)”的畫(huà)面劃分成了名為宏塊的像素塊。對(duì)每個(gè)宏塊來(lái)說(shuō),在這里將會(huì)選擇相鄰畫(huà)面(稱為基準(zhǔn)畫(huà)面)中與所述宏塊相類似的一個(gè)像素塊(稱為基準(zhǔn)塊)。在基準(zhǔn)畫(huà)面內(nèi)部,這個(gè)相似的像素塊的位置是由一個(gè)運(yùn)動(dòng)矢量來(lái)表示的。然后則將該宏塊與基準(zhǔn)塊之間的差值以及運(yùn)動(dòng)矢量一起發(fā)送到接收機(jī),而不是發(fā)送宏塊自身。在接收機(jī)上則可以通過(guò)使用運(yùn)動(dòng)矢量來(lái)定位基準(zhǔn)塊,隨后則使用差值信息來(lái)對(duì)其進(jìn)行修改,從而重建所述宏塊。
目前已經(jīng)開(kāi)發(fā)出多種用于在基準(zhǔn)畫(huà)面內(nèi)部選擇基準(zhǔn)塊的技術(shù)。通常,基準(zhǔn)塊是通過(guò)嘗試將一個(gè)對(duì)宏塊與基準(zhǔn)塊之間的失配進(jìn)行測(cè)量的價(jià)值函數(shù)(cost function)減至最小來(lái)進(jìn)行選擇的。在很多技術(shù)中也可以對(duì)一個(gè)以子像素精度進(jìn)行定位的基準(zhǔn)塊加以選擇。例如,在半像素運(yùn)動(dòng)估計(jì)中(有時(shí)也稱為半取樣模式),可以使用半像素的分辨率來(lái)定位基準(zhǔn)塊。在半取樣模式中,如果基準(zhǔn)塊位于半像素邊界,則構(gòu)成基準(zhǔn)塊的像素是通過(guò)在基準(zhǔn)圖像的像素之間進(jìn)行插值來(lái)加以確定的。舉例來(lái)說(shuō),如果基準(zhǔn)塊中的像素處于兩個(gè)實(shí)際像素之間,則可以選擇基準(zhǔn)決中的像素值作為這兩個(gè)實(shí)際像素的平均值。如果基準(zhǔn)塊中的像素處于四個(gè)實(shí)際像素中心,則可以選擇基準(zhǔn)塊中的像素值作為這四個(gè)實(shí)際像素的平均值。因此,在半取樣模式中,構(gòu)成基準(zhǔn)塊的像素是通過(guò)在基準(zhǔn)畫(huà)面中的像素之間進(jìn)行插值來(lái)確定的。
在四分之一像素運(yùn)動(dòng)估計(jì)中(有時(shí)也稱為四分之一取樣模式),基準(zhǔn)塊可以使用一個(gè)四分之一像素的分辨率來(lái)進(jìn)行定位。與半取樣模式一樣,如果基準(zhǔn)塊位于半像素或四分之一像素邊界,則構(gòu)成基準(zhǔn)塊的像素是通過(guò)在基準(zhǔn)畫(huà)面中的像素之間插值來(lái)確定的。正如本領(lǐng)域技術(shù)人員已知的那樣,通常通過(guò)對(duì)基準(zhǔn)畫(huà)面中的多個(gè)像素進(jìn)行過(guò)濾而產(chǎn)生一個(gè)位于四分之一像素邊界的像素。
全局運(yùn)動(dòng)補(bǔ)償(GMC)是另一種用于運(yùn)動(dòng)估計(jì)/補(bǔ)償?shù)募夹g(shù)。正如本領(lǐng)域技術(shù)人員已知的那樣,GMC使用全局空間變換來(lái)產(chǎn)生一個(gè)基于基準(zhǔn)畫(huà)面的預(yù)測(cè)宏塊。并且正如本領(lǐng)域技術(shù)人員已知的那樣,GMC變換通常包括對(duì)基準(zhǔn)畫(huà)面中的多個(gè)像素進(jìn)行過(guò)濾,以便產(chǎn)生一個(gè)預(yù)測(cè)像素。
在本公開(kāi)中描述的是能夠用于有效插值和/或過(guò)濾像素的技術(shù)。
有效求取兩個(gè)像素的平均值如上所述,視頻編碼和解碼通常要對(duì)兩個(gè)或更多像素之間的插值和/或多個(gè)像素的過(guò)濾進(jìn)行計(jì)算。具有MMXTM/SSE的IntelTM處理器提供了可以用于有效計(jì)算這種插值的指令緊縮(packed)平均指令PAVGB(八比特?cái)?shù))以及PAVGW(十六比特?cái)?shù))。緊縮平均指令對(duì)“緊縮”64位或128位寄存器或存儲(chǔ)器位置的操作數(shù)執(zhí)行運(yùn)算。這些指令計(jì)算的是如(A+B+1)>>1所示的兩個(gè)無(wú)符號(hào)整數(shù)A和B的平均值,其中運(yùn)算符“>>1”表示右移一位。因此,緊縮平均指令求取A、B和1的和,然后將結(jié)果右移一位。
的結(jié)果可以用n個(gè)比特來(lái)表示,其中A和B都是n比特整數(shù)。然而,n比特定點(diǎn)數(shù)A和B之和可能會(huì)產(chǎn)生一個(gè)溢出(也就是需要n+1個(gè)比特來(lái)表示這個(gè)總和)。如果先計(jì)算了和數(shù)(A+B+1)并且然后才進(jìn)行右移,則這個(gè)溢出將會(huì)導(dǎo)致在計(jì)算(A+B+1)>>1的過(guò)程中出現(xiàn)錯(cuò)誤。因此,具有MMXTM/SSE的IntelTM處理器在執(zhí)行緊縮平均指令的過(guò)程中對(duì)這種情況進(jìn)行了考慮,由此即使A+B+1之和會(huì)產(chǎn)生溢出,也能夠產(chǎn)生正確的結(jié)果。特別地,通過(guò)使用PAVGB指令,中間和數(shù)(A+B+1)是作為一個(gè)九比特?cái)?shù)字來(lái)計(jì)算的,此外,通過(guò)使用PAVGW指令,中間和數(shù)(A+B+1)是作為一個(gè)十七比特?cái)?shù)來(lái)計(jì)算的。
通過(guò)在右移一位之前向A與B的和中加一,可以將操作結(jié)果四舍五入到最接近的整數(shù)。舉例來(lái)說(shuō),如果A是3并且B是4,那么平均A和B的浮點(diǎn)結(jié)果將是3.5。而緊縮平均指令將會(huì)產(chǎn)生一個(gè)結(jié)果4。因此,緊縮平均指令將浮點(diǎn)結(jié)果3.5四舍五入成4。
圖3是描述PAVGW指令操作的簡(jiǎn)化圖示。在這個(gè)實(shí)例中,涉及PAVGW指令的操作數(shù)保存在64位寄存器180和182中,操作結(jié)果則保存到寄存器180中。在執(zhí)行指令之前,寄存器180包括“緊縮”到寄存器的四個(gè)無(wú)符號(hào)定點(diǎn)十六比特?cái)?shù)A1、A2、A3和A4。同樣,寄存器182包含了四個(gè)緊縮的無(wú)符號(hào)定點(diǎn)十六比特?cái)?shù)字B1、B2、B3和B4。然后如圖3所示,在寄存器180和182中對(duì)各個(gè)相應(yīng)數(shù)字對(duì)計(jì)算函數(shù)(A+B+1)>>1,隨后則將結(jié)果保存在寄存器180中,以此作為緊縮的無(wú)符號(hào)定點(diǎn)十六比特?cái)?shù)字,如圖3所示。
然而在某些情況下,將兩個(gè)整數(shù)平均值的浮點(diǎn)結(jié)果四舍五入成零(也就是計(jì)算(A+B)>>1)有可能才是合乎需要的。諸如IntelTM處理器這樣的通用處理器并未提供執(zhí)行這種操作的指令。因此,這種計(jì)算必須使用多個(gè)指令來(lái)完成。圖4是一個(gè)描述了用于對(duì)運(yùn)算指令(A+B)>>1進(jìn)行計(jì)算的常規(guī)方法的簡(jiǎn)化流程圖,其中A和B都是無(wú)符號(hào)八比特整數(shù)。首先在步驟202中將值A(chǔ)和B移入16比特存儲(chǔ)位置,由此可以使用16個(gè)比特來(lái)執(zhí)行它們的加法。如上所述,這兩個(gè)八比特整數(shù)之和可能會(huì)產(chǎn)生溢出。因此,在這里使用了十六個(gè)比特來(lái)避免出現(xiàn)溢出錯(cuò)誤。隨后,在步驟204對(duì)數(shù)字對(duì)A和B進(jìn)行求和。接下來(lái)在步驟206中將所述和數(shù)右移一位。最終在步驟208將結(jié)果保存在一個(gè)八比特存儲(chǔ)位置。
在下文中提供了依照常規(guī)方法(也就是圖4流程)來(lái)執(zhí)行(A+B)>>1的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。在這個(gè)實(shí)例中,計(jì)算機(jī)代碼、定點(diǎn)八比特值A(chǔ)1、A2、......都緊縮到寄存器mm0中,而定點(diǎn)八比特值B1、B2、......則緊縮到寄存器mm1中。此外在這里還對(duì)(A1+B1)>>1、(A2+B2)>>1、......的值進(jìn)行了計(jì)算并將其作為緊縮定點(diǎn)八比特值而加以保存

可以看出的是,在這個(gè)實(shí)例中使用了11條指令來(lái)計(jì)算(A+B)>>1。
圖5是一個(gè)描述了根據(jù)本發(fā)明的方法的一個(gè)實(shí)施例的簡(jiǎn)化流程圖。特別地,圖5描述的是一種能夠用于依照某些預(yù)期函數(shù)而在A和B這兩個(gè)值之間產(chǎn)生一個(gè)插值的方法252。其中舉例來(lái)說(shuō),預(yù)期函數(shù)可以是(A+B)>>1。在步驟252中,基于A和B而產(chǎn)生了一個(gè)插值近似。在步驟254中,基于A和B而產(chǎn)生校正值。然后在步驟256中使用步驟254中生成的校正值來(lái)修改步驟252中產(chǎn)生的近似值,從而根據(jù)預(yù)期函數(shù)來(lái)產(chǎn)生插值。
圖6是一個(gè)描述了依照本發(fā)明的特定實(shí)施例的簡(jiǎn)化流程圖。特別地,圖6描述的是一種用于依照預(yù)期函數(shù)(A+B)>>1而在兩個(gè)整數(shù)A和B之間產(chǎn)生一個(gè)插值的方法300。在步驟302中產(chǎn)生如(A+B+1)>>1所示的(A+B)>>1的近似值X。在步驟304中則通過(guò)按位異或(在下文中稱為“XOR”或“”)A和B以及按位與掩碼0x01進(jìn)行“與”(AND)運(yùn)算而產(chǎn)生校正值Q。本領(lǐng)域技術(shù)人員可以了解,根據(jù)A和B的值,步驟304中產(chǎn)生的校正值為0或1。然后則在步驟306中從近似值X中減去校正值Q,以便依照預(yù)期函數(shù)(A+B)>>1來(lái)產(chǎn)生插值。
如上所述,IntelTMIA-32處理器提供用于計(jì)算(A+B+1)>>1的緊縮平均指令。因此,在使用IA-32處理器的實(shí)施方式中可以使用一個(gè)緊縮平均指令來(lái)執(zhí)行圖6的步驟302。在下文中提供了實(shí)施圖6所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。在這個(gè)例示計(jì)算機(jī)代碼中,八比特整數(shù)A1、A2、......緊縮到寄存器mm0中,而8比特整數(shù)B1、B2、......則緊縮到寄存器mm1中。此外還計(jì)算(A1+B1)>>1、(A2+B2)>>1、......的值并將其存儲(chǔ)為緊縮的八比特整數(shù)

其中mm_0101是包含緊縮八比特值0x01的常數(shù),舉例來(lái)說(shuō),對(duì)于八個(gè)緊縮整數(shù),mm_0101則是0x0101010101010101。此外還可以看出,在這個(gè)實(shí)例中使用了5條指令來(lái)計(jì)算(A+B)>>1。與之相比,以上參考圖4所描述的常規(guī)計(jì)算機(jī)代碼則需要用到11條指令。因此,這個(gè)特定實(shí)施例在近似速度方面提升了120%(11條指令/5條指令)。
有效求取四個(gè)像素的平均值上述實(shí)施例提供的是用于對(duì)兩個(gè)像素值進(jìn)行有效插值或求取平均值的方法。在視頻編碼和解碼中,通常還要對(duì)四個(gè)像素值求平均值。例如在運(yùn)動(dòng)估計(jì)/補(bǔ)償中,有可能需要在2×2的像素矩陣中心內(nèi)插一個(gè)像素值。例如,依照函數(shù)(A+B+C+D)>>2,有可能希望在四個(gè)定點(diǎn)像素值A(chǔ)、B、C和D之間計(jì)算插值。這個(gè)函數(shù)則將這四個(gè)值的浮點(diǎn)平均值四舍五入為零。同樣,依照函數(shù)(A+B+C+D+1)>>2,有可能希望計(jì)算四個(gè)定點(diǎn)像素值A(chǔ)、B、C和D之間的插值。如果浮點(diǎn)平均值小于一個(gè)整數(shù)0.75,則該函數(shù)將這四個(gè)值的浮點(diǎn)平均值四舍五入為零。否則對(duì)這個(gè)浮點(diǎn)平均值進(jìn)行四舍五入,使之不為零。例如,浮點(diǎn)平均值3.5將會(huì)四舍五入為3,而浮點(diǎn)平均值3.75則四舍五入為4。
圖7是一個(gè)描述了用于對(duì)運(yùn)算指令(A+B+C+D)>>2進(jìn)行計(jì)算的常規(guī)方法的簡(jiǎn)化流程圖、其中A、B、C和D都是無(wú)符號(hào)八比特整數(shù)。首先在步驟402中將值A(chǔ)、B、C和D移入16比特存儲(chǔ)位置,由此可以使用十六個(gè)比特來(lái)計(jì)算其加法,以免出現(xiàn)溢出錯(cuò)誤。然后則在步驟404中對(duì)數(shù)字A、B、C以及D進(jìn)行求和。接下來(lái)在步驟406中將這個(gè)和數(shù)右移一位。最終則在步驟408中將結(jié)果存入一個(gè)八比特存儲(chǔ)位置。
在下文中提供了依照常規(guī)方法(也就是圖7)來(lái)執(zhí)行函數(shù)(A+B+C+D)>>2的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。在這個(gè)例示計(jì)算機(jī)代碼中,八比特整數(shù)A1、A2、......緊縮到寄存器mm0中,八比特整數(shù)B1、B2、......緊縮到寄存器mm1中,八比特整數(shù)C1、C2、......緊縮到寄存器mm2中,八比特整數(shù)D1、D2、......緊縮到寄存器mm3中。此外還對(duì)數(shù)值(A1+B1+C1+D1)>>2、(A2+B2+C2+D2)>>2、.....進(jìn)行計(jì)算并且將其存儲(chǔ)為緊縮的八比特整數(shù)

可以看出,在這個(gè)實(shí)例中使用了21條指令來(lái)計(jì)算(A+B+C+D)>>2。
同樣,在下文中提供了依照常規(guī)方法來(lái)實(shí)施函數(shù)(A+B+C+D+1)>>2的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。這其中對(duì)數(shù)值(A1+B1+C1+D1+1)>>2、(A2+B2+C2+D2+1)>>2、......進(jìn)行計(jì)算并且將其存儲(chǔ)為緊縮的八比特整數(shù)

可以看出,在這個(gè)實(shí)例中使用了23條指令來(lái)計(jì)算(A+B+C+D+1)>>2。
圖8是一個(gè)描述了依照本發(fā)明的另一個(gè)實(shí)施例的簡(jiǎn)化流程圖。特別地,圖8描述的是一種用于根據(jù)預(yù)期函數(shù)(A+B+C+D)>>2而在四個(gè)整數(shù)A、B、C和D之間產(chǎn)生一個(gè)插值的方法450。在步驟452中根據(jù)(A+B+1)>>1產(chǎn)生值M,并且在步驟454根據(jù)(C+D+1)>>1產(chǎn)生值N。然后在步驟456中則根據(jù)(M+N+1)>>1來(lái)計(jì)算預(yù)期平均值的近似值X。并且在步驟458中如下產(chǎn)生一個(gè)校正值Q
Q=((AB)OR(CD)OR(MN))AND(0x01) (1)其中“OR”表示一個(gè)按位的OR(或)操作。然后在步驟460中從近似值X中減去校正值Q,以便依照預(yù)期函數(shù)(A+B+C+D)>>1來(lái)產(chǎn)生插值。
在下文中提供了用于執(zhí)行圖8所述流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。在這個(gè)例示計(jì)算機(jī)代碼中,將八比特整數(shù)A1、A2、......緊縮到寄存器mm0中,將八比特整數(shù)B1、B2、......緊縮到寄存器mm1,將八比特整數(shù)C1、C2、......緊縮到寄存器mm2,以及將八比特整數(shù)D1、D2、......緊縮到寄存器mm3。此外還對(duì)數(shù)值(A1+B1+C1+D1)>>2、(A2+B2+C2+D2)>>2、......進(jìn)行計(jì)算并且將其存儲(chǔ)為緊縮的八比特整數(shù)

其中mm_0101是包含了用于八個(gè)緊縮整數(shù)的緊縮八比特值0x01的常數(shù),mm_0101是0x0101010101010101。可以看出,在這個(gè)實(shí)例中使用了13條指令來(lái)計(jì)算(A+B+C+D)>>1。與之相比,上文中參考圖7所描述的常規(guī)計(jì)算機(jī)代碼則需要用到21條指令。因此,這個(gè)特定實(shí)施例在近似速度方面提升了60%(21條指令/13條指令)。
圖9是一個(gè)描述了依照本發(fā)明的另一個(gè)實(shí)施例的簡(jiǎn)化流程圖。特別地,圖9描述的是一種用于根據(jù)預(yù)期函數(shù)(A+B+C+D+1)>>2而在四個(gè)整數(shù)A、B、C和D之間產(chǎn)生一個(gè)插值的方法480。在步驟482中根據(jù)(A+B+1)>>1來(lái)產(chǎn)生值M,并且在步驟454中根據(jù)(C+D+1)>>1來(lái)產(chǎn)生值N。然后在步驟486中根據(jù)(M+N+1)>>1來(lái)計(jì)算預(yù)期平均值的近似值X。并且在步驟488中如下產(chǎn)生一個(gè)校正值QQ=(((AB)AND(CD))OR(MN))AND(0x01)(2)其中“OR”表示的是一個(gè)按位OR(或)操作。然后則在步驟490中從近似值X中減去校正值Q,以便依照預(yù)期函數(shù)(A+B+C+D+1)>>1來(lái)產(chǎn)生插值。
在下文中提供了用于執(zhí)行圖9所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。在這個(gè)例示計(jì)算機(jī)代碼中,將八比特整數(shù)A1、A2、......緊縮到寄存器mm0,將八比特整數(shù)B1、B2、......緊縮到寄存器mm1,將八比特整數(shù)C1、C2、......緊縮到寄存器mm2,以及將八比特整數(shù)D1、D2、......緊縮到寄存器mm3。此外還對(duì)數(shù)值(A1+B1+C1+D1+1)>>2、(A2+B2+C2+D2+2)>>2、......進(jìn)行計(jì)算并將其存儲(chǔ)為緊縮的八比特整數(shù)

其中mm_0101是包含了緊縮八比特值0x01的常數(shù)。可以看出,在這個(gè)實(shí)例中使用了13條指令來(lái)計(jì)算(A+B+C+D+1)>>1。與之相比,以上參考圖7所描述的常規(guī)計(jì)算機(jī)代碼需要用到23條指令。因此,這個(gè)特定實(shí)施例在近似速度方面提升了80%(23條指令/13條指令)。
其它過(guò)濾函數(shù)的有效實(shí)施方式在內(nèi)插像素值的環(huán)境中已經(jīng)對(duì)上述實(shí)施例進(jìn)行了描述。然而應(yīng)該了解,上述實(shí)施例也可以用于其他環(huán)境。例如,上述實(shí)施可以用于為不同類型的數(shù)據(jù)(例如視頻、音頻、地震數(shù)據(jù)、通信數(shù)據(jù)等等)實(shí)施不同的過(guò)濾函數(shù)。
1.F=K(A+B+1)>>N其他實(shí)施例提供了用于過(guò)濾數(shù)據(jù)的其他函數(shù)的有效實(shí)施方式。其中一個(gè)函數(shù)是F=K(A+B+1)>>N (3)其中A和B是無(wú)符號(hào)整數(shù),K和N是無(wú)符號(hào)定點(diǎn)過(guò)濾參數(shù)。舉例來(lái)說(shuō),這個(gè)函數(shù)可以在視頻過(guò)濾和插值、調(diào)整圖像大小等應(yīng)用中使用。
圖10是一個(gè)描述了依照本發(fā)明的另一個(gè)實(shí)施例的簡(jiǎn)化流程圖。特別地,圖10描述的是一種用于實(shí)施等式(3)中闡述的函數(shù)的方法500,其中K可以表示為2S+2R,S和R則是無(wú)符號(hào)整數(shù)并且S>R。目前已經(jīng)用實(shí)驗(yàn)方法確定,當(dāng)值A(chǔ)、B、K均為范圍
以內(nèi)的整數(shù)時(shí),并且在N是處于范圍
以內(nèi)的定點(diǎn)數(shù)字的情況下,這個(gè)實(shí)施例將會(huì)產(chǎn)生沒(méi)有差錯(cuò)的結(jié)果。然而應(yīng)該了解,這個(gè)實(shí)施例同樣可以為不同的范圍產(chǎn)生精確的結(jié)果。
在步驟504中依照函數(shù)M=(A+B+1)>>1來(lái)產(chǎn)生值M。在使用IA-32處理器的實(shí)施方式中,可以通過(guò)使用一個(gè)PAVGB或PAVGW指令來(lái)產(chǎn)生M。并且在步驟506中如下產(chǎn)生值QQ=(~(AB))AND(0x01) (4)其中符號(hào)“~”表示的是按位補(bǔ)碼。
在步驟508中,值E是根據(jù)M<<S來(lái)產(chǎn)生的,其中“<<S”表示左移S位。同樣,在步驟510中,值F是根據(jù)M<<R而產(chǎn)生的。在步驟512,值G是根據(jù)Q<<(S-1)而產(chǎn)生的,并且在步驟514,值H是根據(jù)Q<<(R-1)而產(chǎn)生的。然后在步驟516中則根據(jù)E、F、G和H之和來(lái)計(jì)算X。最終,在步驟518,通過(guò)將X右移(N-1)位而產(chǎn)生預(yù)期結(jié)果。
圖11是一個(gè)描述了依照本發(fā)明的另一個(gè)實(shí)施例的簡(jiǎn)化流程圖。與圖10相似,圖11描述的是一種用于實(shí)施等式(3)中所闡述的函數(shù)的方法550,其中K可以表示為2S+2R,S和R則是無(wú)符號(hào)整數(shù)并且S>R。此外與圖10相似的是,值A(chǔ)、B、K都是處于范圍
以內(nèi)的整數(shù),并且N是一個(gè)處于范圍
以內(nèi)的定點(diǎn)數(shù)。但是,圖11描述的是在(A+B+1)<256且S≤N時(shí)實(shí)施等式(3)中所描述的函數(shù)的另一種更有效的方法550。
在步驟552和554中分別如參考圖10的步驟504和506所述而產(chǎn)生值M和Q。在步驟556中判定(N-1-S)是否小于零。如果不小于零,則流程進(jìn)行到步驟558,其中根據(jù)M>>(N-1-S)來(lái)產(chǎn)生值E。如果小于零,則流程進(jìn)行到步驟560,其中根據(jù)M<<1來(lái)產(chǎn)生值E。接著則是在步驟562中根據(jù)M>>(N-1-R)來(lái)產(chǎn)生值F。在步驟568中則根據(jù)Q>>(N-S)來(lái)產(chǎn)生值G,并且在步驟570中根據(jù)Q>>(N-R)來(lái)產(chǎn)生值H。最終在步驟572根據(jù)E、F、G、H之和來(lái)計(jì)算X。
在使用IA-32處理器的實(shí)施方式中發(fā)現(xiàn),與傳統(tǒng)的實(shí)施方式相比,參考圖11描述的方法提供了140%的近似速度優(yōu)勢(shì)。
2.F=(40(A+B+1)-12(C+D+1)+6(E+F+1)-2(G+H+1))>>6通常用于在MPEG-4視頻編碼中實(shí)施四分之一像素插值的另一個(gè)有效函數(shù)是F=(40(A+B+1)-12(C+D+1)+6(E+F+1)-2(G+H+1))>>6(5)其中A、B、C、D、E、F、G、H都是無(wú)符號(hào)整數(shù)。
圖12是一個(gè)描述了依照本發(fā)明的另一個(gè)實(shí)施例的簡(jiǎn)化流程圖。特別地,圖12描述的是一種用于實(shí)施等式(5)中所描述的函數(shù)的方法600。通過(guò)實(shí)驗(yàn)確定,方法600為八比特值產(chǎn)生了60%的正確時(shí)間結(jié)果,30.5%的時(shí)間值一的誤差以及0.5%的時(shí)間值二的誤差。
在步驟602、604,606和608中,值M1、M2、M3、M4分別是依照(A+B+1)>>1、(C+D+1)>>1、(E+F+1)>>1和(G+H+1)>>1而產(chǎn)生的。如果方法600是在一個(gè)IA-32處理器中執(zhí)行的,那么舉例來(lái)說(shuō),可以使用緊縮平均指令來(lái)執(zhí)行步驟602、604、606和608。
接下來(lái)在步驟610中依照(M1+(M3>>1)+(M3>>2))>>2來(lái)產(chǎn)生值N1。在步驟612中依照(M2+(M2>>1)+(M4>>2))>>2來(lái)產(chǎn)生值N2。最終在步驟614依照M1+N1-N2來(lái)產(chǎn)生近似結(jié)果X。如上所述,由于X可能不同于某些值A(chǔ)、B、C、D、E、F、G和H的預(yù)期結(jié)果,因此X是近似值。在附錄中提供了用于執(zhí)行參考圖12所描述的實(shí)施例的IA-32匯編語(yǔ)言代碼的一個(gè)實(shí)例。
3.F=(A+B+2)>>1圖13是一個(gè)描述了依照本發(fā)明的另一個(gè)特定實(shí)施例的簡(jiǎn)化流程圖。特別地,圖13描述的是一種基于兩個(gè)整數(shù)A和B并且依照預(yù)期函數(shù)(A+B+2)>>1來(lái)產(chǎn)生一個(gè)值的方法650。其中舉例來(lái)說(shuō),該實(shí)施例可以作為實(shí)施更復(fù)雜過(guò)濾函數(shù)的過(guò)程中的一個(gè)步驟來(lái)加以使用。
在步驟652中,(A+B+2)>>1的近似值X是依照(A+B+1)>>1產(chǎn)生的。在步驟654中,校正值Q是依照AB的按位補(bǔ)碼(下文中稱為“~”)以及與掩碼0x01所進(jìn)行的按位AND(與)運(yùn)算而產(chǎn)生的。然后,在步驟656中將校正值Q添加給近似值X,以便產(chǎn)生預(yù)期函數(shù)(A+B+2)>>1的結(jié)果。
在附錄中提供了用于實(shí)施圖13所述流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。與常規(guī)技術(shù)相比,這個(gè)特定實(shí)施例在近似速度方面提升了大約160%(13條指令/5條指令)。
4.F=(2A+2B+1)>>2目前已經(jīng)發(fā)現(xiàn),可以依照參考圖6所描述的實(shí)施例(也就是對(duì)值(A+B)>>1進(jìn)行計(jì)算)來(lái)對(duì)值(2A+2B+1)>>2進(jìn)行計(jì)算。其中舉例來(lái)說(shuō),該實(shí)施例可以被用作是執(zhí)行更復(fù)雜過(guò)濾函數(shù)的一個(gè)步驟。
5.F=(2A+B+C+1)>>2
圖14是一個(gè)描述了根據(jù)本發(fā)明的另一個(gè)特定實(shí)施例的簡(jiǎn)化流程圖。特別地,圖14描述的是一種基于三個(gè)整數(shù)A、B、C并且依照預(yù)期函數(shù)(2A+B+C+1)>>2來(lái)產(chǎn)生一個(gè)值的方法700。其中舉例來(lái)說(shuō),該實(shí)施例可以用作是執(zhí)行更復(fù)雜的過(guò)濾函數(shù)的過(guò)程中的一個(gè)步驟。
在步驟702中,值M是依照(B+C+1)>>1而產(chǎn)生的。在步驟704,近似值X是依照(A+M+1)>>1產(chǎn)生的。在步驟706,校正值Q是依照AM并與掩碼0x01進(jìn)行按位AND(與)運(yùn)算而產(chǎn)生的。接著,在步驟708中從近似值X中減去校正值Q,從而產(chǎn)生預(yù)期函數(shù)(2A+B+C+1)>>2的結(jié)果。
在附錄中提供了用于實(shí)施圖14所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。與常規(guī)技術(shù)相比,這個(gè)特定實(shí)施例在近似速度方面提升了大約230%(20條指令/6條指令)。
6.F=(3A+B+1)>>2圖15是一個(gè)描述了依照本發(fā)明的另一個(gè)特定實(shí)施例的簡(jiǎn)化流程圖。特別地,圖15描述的是一種基于整數(shù)A和B并且依照預(yù)期函數(shù)(3A+B+1)>>2來(lái)產(chǎn)生一個(gè)值的方法750。其中舉例來(lái)說(shuō),該實(shí)施例可被用作是執(zhí)行更復(fù)雜的過(guò)濾函數(shù)的過(guò)程中的一個(gè)步驟。
在步驟752中,值M是依照(A+B+1)>>1而產(chǎn)生的。然后在步驟704中,近似值X是依照(A+M+1)>>1而產(chǎn)生的。在步驟756中,校正值Q是依照AM以及與掩碼0x01進(jìn)行按位AND(與)運(yùn)算而產(chǎn)生的。接著在步驟758中從近似值X中減去校正值Q,以便產(chǎn)生預(yù)期函數(shù)(3A+B+1)>>2的結(jié)果。
在附錄中提供了用于實(shí)施圖15所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。與常規(guī)技術(shù)相比,這個(gè)特定實(shí)施例在近似速度方面提升了220%(19條指令/6條指令)。
7.F=(A+B+C+1)>>2圖16是一個(gè)描述了依照本發(fā)明的另一個(gè)實(shí)施例的簡(jiǎn)化流程圖。特別地,圖16描述的是一種基于三個(gè)整數(shù)A、B、C并且根據(jù)預(yù)期函數(shù)(A+B+C+1)>>2來(lái)產(chǎn)生一個(gè)值的方法800。其中舉例來(lái)說(shuō),該實(shí)施例可被用作是執(zhí)行更復(fù)雜的過(guò)濾函數(shù)的過(guò)程的一個(gè)步驟。
在步驟802中,值M是依照(A+B+1)>>1而產(chǎn)生的。在步驟804中,值N是依照(C+0+1)>>1而產(chǎn)生的。然后在步驟806中,近似值X是依照(M+N+1)>>1而產(chǎn)生的。并且在步驟800中,校正值Q是如下產(chǎn)生Q=(((AB)AND(C))OR(MN))AND(0x01)(6)接下來(lái)則在步驟810中從近似值X中減去校正值Q,以便產(chǎn)生預(yù)期函數(shù)(A+B+C+1)>>2的結(jié)果。
在附錄中提供了用于實(shí)施圖16所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。與常規(guī)技術(shù)相比,這個(gè)特定實(shí)施例在近似速度方面提升了60%(18條指令/11條指令)。
8.F=(2A+2B)>>2目前已經(jīng)發(fā)現(xiàn),可以依照參考圖6所描述的實(shí)施例(也就是對(duì)值(A+B)>>1進(jìn)行計(jì)算)來(lái)對(duì)值(2A+2B)>>2進(jìn)行計(jì)算。舉例來(lái)說(shuō),該實(shí)施例可被用作是執(zhí)行更復(fù)雜的過(guò)濾函數(shù)的過(guò)程的一個(gè)步驟。
9.F=(2A+B+C)>>2圖17是一個(gè)描述了依照本發(fā)明的另一個(gè)特定實(shí)施例的簡(jiǎn)化流程圖。特別地,圖17描述的是一種基于三個(gè)整數(shù)A、B、C并且依照預(yù)期函數(shù)(2A+B+C)>>2來(lái)產(chǎn)生一個(gè)值的方法850。其中舉例來(lái)說(shuō),該實(shí)施例可被用作是執(zhí)行更復(fù)雜的過(guò)濾函數(shù)的過(guò)程的一個(gè)步驟。
在步驟852中,值M是依照(B+C+1)>>1而產(chǎn)生的。然后在步驟854中,近似值X是依照(A+M+1)>>1而產(chǎn)生的。并且在步驟856中,校正值Q則是如下產(chǎn)生的Q=((BC)OR(AM))AND(0x01) (7)接下來(lái)則在步驟858中從近似值X中減去校正值Q,以便產(chǎn)生預(yù)期函數(shù)(2A+B+C)>>2的結(jié)果。
在附錄中提供了用于實(shí)施圖17所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。與常規(guī)技術(shù)相比,這個(gè)特定實(shí)施例在近似速度上提升了大約100%(18條指令/9條指令)。
10.F=(3A+B)>>2圖18是一個(gè)描述了依照本發(fā)明的另一個(gè)特定實(shí)施例的簡(jiǎn)化流程圖。特別地,圖18描述的是一種基于整數(shù)A和B并且依照預(yù)期函數(shù)(3A+B)>>2來(lái)產(chǎn)生一個(gè)值的方法900。其中舉例來(lái)說(shuō),該實(shí)施例可被用作是執(zhí)行更復(fù)雜的過(guò)濾函數(shù)的過(guò)程的一個(gè)步驟。
在步驟902中,值M是依照(A+B+1)>>1而產(chǎn)生的。然后在步驟904中,近似值X是依照(A+M+1)>>1而產(chǎn)生的。并且在步驟906中,校正值Q是如下產(chǎn)生的Q=((AB)OR(AM))AND(0x01) (8)接下來(lái)則在步驟908中從近似值X中減去校正值Q,以便產(chǎn)生預(yù)期函數(shù)(3A+B)>>2的結(jié)果。
在附錄中提供了用于實(shí)施圖18所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。與常規(guī)技術(shù)相比,這個(gè)特定實(shí)施例在近似速度方面提升了40%(13條指令/9條指令)。
11.F=(A+B+C)>>2圖19是一個(gè)描述了依照本發(fā)明的另一個(gè)特定實(shí)施例的簡(jiǎn)化流程圖。特別地,圖19描述的是一種基于三個(gè)整數(shù)A、B、C并且依照預(yù)期函數(shù)(A+B+C)>>2來(lái)產(chǎn)生一個(gè)值的方法950。其中舉例來(lái)說(shuō),該實(shí)施例可被用作是執(zhí)行更復(fù)雜的過(guò)濾函數(shù)的過(guò)程的一個(gè)步驟。
在步驟952中,值M是依照(A+B+1)>>1而產(chǎn)生的。在步驟954中,值N是依照(C+0+1)>>1而產(chǎn)生的。然后,在步驟956中,近似值X是依照(M+N+1)>>1而產(chǎn)生的。并且在步驟958,校正值Q是如下產(chǎn)生Q=((AB)OR C OR(MN))AND(0x01) (9)接下來(lái)則在步驟960中從近似值X中減去校正值Q,以便產(chǎn)生預(yù)期函數(shù)(A+B+C)>>2的結(jié)果。
在附錄中提供了用于實(shí)施圖19所描述的流程的計(jì)算機(jī)代碼(IntelTMIA-32匯編語(yǔ)言)的一個(gè)實(shí)例。與常規(guī)技術(shù)相比,這個(gè)特定實(shí)施例在近似速度方面提升了大約50%(16條指令/11條指令)。
變化在這里已經(jīng)參考那些使用了帶有MMXTM/SSE的IntelTM處理器的具體實(shí)施方式
而對(duì)上述實(shí)施例進(jìn)行了描述。然而應(yīng)該了解,在這里也可以使用其他處理器來(lái)實(shí)施不同的實(shí)施例。例如,在這里可以使用任何一種提供了用于計(jì)算(A+B+1)>>1的指令的處理器。此外還可以用硬件方式來(lái)實(shí)施特定實(shí)施例的某些或全部步驟。另外,盡管在整數(shù)環(huán)境中對(duì)依照本發(fā)明的實(shí)施例進(jìn)行了描述,但是應(yīng)該理解,也可以將其他實(shí)施例與整數(shù)結(jié)合使用。而本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到多種其他的變化、替換和等價(jià)物。
在本發(fā)明的其他實(shí)施例中可以對(duì)以上公開(kāi)的發(fā)明進(jìn)行有利組合或子組合。為了便于理解,在這里對(duì)架構(gòu)框圖和流程圖步驟進(jìn)行了聚合。然而應(yīng)該了解,在本發(fā)明的替換實(shí)施例中還預(yù)期對(duì)塊進(jìn)行組合、添加新塊以及重新調(diào)整所述塊等等。
當(dāng)前已經(jīng)參考具體實(shí)施例而對(duì)本發(fā)明進(jìn)行了說(shuō)明。對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),其他實(shí)施例同樣是顯而易見(jiàn)的。因此除了附加權(quán)利要求所指示的限制之外,在這里并沒(méi)有意圖對(duì)本發(fā)明進(jìn)行限制。
附錄源代碼列表Ftnction(40(A+B+1)-12(C+D+1)+6(E+F+1)-2(G+H+1))>>6


Function(A+B+2)>>1

Function(3A+B+1)>>2


Function(A+B+C+1)>>2

Function(2A+B+C)>>2

Function(3A+B)>>2


Function(A+B+C)>>2

權(quán)利要求
1.一種用于在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法,所述方法包括依照一個(gè)少于四個(gè)數(shù)字信號(hào)取樣的函數(shù)產(chǎn)生近似過(guò)濾取樣;依照一個(gè)少于四個(gè)取樣的函數(shù)產(chǎn)生校正值;以及通過(guò)使用該校正值來(lái)修改近似過(guò)濾取樣,以便產(chǎn)生一個(gè)已過(guò)濾取樣。
2.權(quán)利要求1的方法,其中少于四個(gè)的取樣僅僅是兩個(gè)取樣。
3.權(quán)利要求2的方法,其中這兩個(gè)取樣是第一定點(diǎn)數(shù)A以及第二定點(diǎn)數(shù)B,并且其中產(chǎn)生近似過(guò)濾取樣包括計(jì)算(A+B+1)>>1。
4.權(quán)利要求3的方法,其中信號(hào)處理器是一個(gè)具有用于計(jì)算函數(shù)(X+Y+1)>>1的指令的微處理器,并且其中使用該指令來(lái)執(zhí)行計(jì)算A+B+1>>1。
5.權(quán)利要求4的方法,其中微處理器是帶有SSE或SSE2的IntelTM微處理器,并且其中該指令是PAVGB指令。
6.權(quán)利要求4的方法,其中微處理器是帶有SSE或SSE2的IntelTM微處理器,并且其中該指令是PAVGW指令。
7.權(quán)利要求3的方法,其中產(chǎn)生近似過(guò)濾取樣還包括計(jì)算(A+((A+B+1)>>1)+1)>>1。
8.權(quán)利要求3的方法,其中產(chǎn)生近似過(guò)濾取樣還包括計(jì)算E=((A+B+1)>>1)<<S;計(jì)算F=((A+B+1)>>1)<<R;以及依照E+F來(lái)計(jì)算近似過(guò)濾取樣;其中S和R是正定點(diǎn)數(shù)。
9.權(quán)利要求8的方法,其中產(chǎn)生校正值包括計(jì)算Q=~(AB);使用數(shù)字1來(lái)遮蔽Q;計(jì)算G=Q<<(S-1);計(jì)算H=Q<<(R-1);以及依照G+H來(lái)計(jì)算校正值。
10.權(quán)利要求9的方法,其中產(chǎn)生已過(guò)濾取樣包括依照添加了校正值的近似過(guò)濾取樣來(lái)計(jì)算已過(guò)濾取樣;以及將已過(guò)濾取樣右移N-1位,其中N是一個(gè)正定點(diǎn)數(shù)。
11.權(quán)利要求3的方法,其中產(chǎn)生近似過(guò)濾取樣還包括計(jì)算E=((A+B+1)>>1)>>(N-1-S);計(jì)算F=((A+B+1)>>1)>>(N-1-R);以及將E與F相加;其中N、S、R都是正定點(diǎn)數(shù)并且其中N≥S>R。
12.權(quán)利要求11的方法,其中產(chǎn)生校正值包括計(jì)算Q=~(AB);使用數(shù)字1來(lái)遮蔽Q;計(jì)算G=Q>>(N-S);計(jì)算H=Q>>(N-R);以及依照G+H來(lái)計(jì)算校正值。
13.權(quán)利要求12的方法,其中產(chǎn)生已過(guò)濾取樣包括依照添加了校正值的近似過(guò)濾取樣來(lái)計(jì)算已過(guò)濾取樣。
14.權(quán)利要求2的方法,其中這兩個(gè)取樣是定點(diǎn)數(shù)并且產(chǎn)生校正值包括依照對(duì)這兩個(gè)取樣執(zhí)行異或(XOR)運(yùn)算來(lái)計(jì)算校正值;以及使用整數(shù)1來(lái)遮蔽校正值。
15.權(quán)利要求14的方法,其中產(chǎn)生校正值還包括在遮蔽步驟之前產(chǎn)生所述校正值的按位補(bǔ)碼。
16.權(quán)利要求2的方法,其中這兩個(gè)取樣是定點(diǎn)數(shù)A、B,并且其中產(chǎn)生校正值包括依照(AB)OR(A(A+B>>1))來(lái)計(jì)算校正值;以及使用數(shù)字1來(lái)遮蔽校正值。
17.權(quán)利要求2的方法,其中這兩個(gè)校正值是定點(diǎn)數(shù)A、B,并且其中產(chǎn)生校正值包括依照(A(A+B>>1))來(lái)計(jì)算校正值;以及對(duì)校正值與數(shù)字1執(zhí)行按位的“與”運(yùn)算。
18.權(quán)利要求1的方法,其中產(chǎn)生已過(guò)濾取樣包括將校正值添加給近似過(guò)濾取樣。
19.權(quán)利要求1的方法,其中產(chǎn)生已過(guò)濾取樣包括從近似插值取樣中減去校正值。
20.權(quán)利要求2的方法,其中微處理器是一個(gè)具有MMXTM/SSE的微處理器,并且其中這兩個(gè)取樣是八比特定點(diǎn)數(shù),此外,產(chǎn)生近似過(guò)濾取樣、產(chǎn)生校正值以及產(chǎn)生已過(guò)濾取樣的步驟包括執(zhí)行以下指令Pxor C_REG,A_REG;pand C_REG,CONST;pavgb A_REG,B_REG;psubb A_REG,C_REG;其中A_REG是初始包含了兩個(gè)取樣之一的寄存器,B_REG是包含了兩個(gè)取樣中的另一個(gè)取樣的寄存器,C_REG是初始包含了兩個(gè)取樣中的另一個(gè)取樣的寄存器,以及CONST是一個(gè)包含了八比特?cái)?shù)字0x01的常數(shù)。
21.權(quán)利要求2的方法,其中微處理器是一個(gè)具有MMXTM/SSE的微處理器,并且其中這兩個(gè)取樣是八比特整數(shù),此外,產(chǎn)生近似過(guò)濾取樣、產(chǎn)生校正值以及產(chǎn)生已過(guò)濾取樣的步驟包括執(zhí)行以下指令Pxor C_REG,A_REG;pandn C_REG,CONST;pavgb A_REG,B_REG;paddb A_REG,C_REG;其中A_REG是初始包含了兩個(gè)取樣之一的寄存器,B_REG是包含了兩個(gè)取樣中的另一個(gè)取樣的寄存器,C_REG是初始包含了兩個(gè)取樣中的另一個(gè)取樣的寄存器,以及CONST是一個(gè)包含了八比特?cái)?shù)字0x01的常數(shù)。
22.權(quán)利要求1的方法,其中少于四個(gè)的取樣僅僅是三個(gè)取樣。
23.權(quán)利要求22的方法,其中這兩個(gè)取樣是第一定點(diǎn)數(shù)A,第二定點(diǎn)數(shù)B以及第三定點(diǎn)數(shù)C,其中產(chǎn)生近似過(guò)濾取樣包括計(jì)算M=(A+B+1)>>1;計(jì)算N=(C+0+1)>>1;以及依照X=(M+N+1)>>1來(lái)計(jì)算近似過(guò)濾取樣。
24.權(quán)利要求23的方法,其中產(chǎn)生校正值包括依照((AB)AND(C))OR(MN)來(lái)計(jì)算校正值;以及使用數(shù)字1來(lái)遮蔽校正值。
25.權(quán)利要求23的方法,其中產(chǎn)生校正值包括依照(AB)OR C OR(MN)來(lái)計(jì)算校正值;以及使用數(shù)字1來(lái)遮蔽校正值。
26.權(quán)利要求22的方法,其中這兩個(gè)取樣是第一定點(diǎn)數(shù)A、第二定點(diǎn)數(shù)B以及第三定點(diǎn)數(shù)C,其中產(chǎn)生近似過(guò)濾取樣包括計(jì)算M=(B+C+1)>>1;以及依照X=(A+M+1)>>1來(lái)計(jì)算近似過(guò)濾取樣。
27.權(quán)利要求26的方法,其中產(chǎn)生校正值包括依照AM來(lái)計(jì)算校正值;以及使用數(shù)字1來(lái)遮蔽校正值。
28.權(quán)利要求26的方法,其中產(chǎn)生校正值包括依照(BC)OR(AM)來(lái)計(jì)算校正值;以及使用數(shù)字1來(lái)遮蔽校正值。
29.一種用于在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法,所述方法包括依照一個(gè)第一取樣A、第二取樣B、第三取樣C以及第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣,其中A、B、C和D是定點(diǎn)數(shù);依照((AB)AND(CD))OR(MN)來(lái)產(chǎn)生一個(gè)校正值,其中M=A+B+1>>1并且N=C+D+1>>1;遮蔽校正值;以及通過(guò)使用校正值修改近似過(guò)濾取樣來(lái)產(chǎn)生一個(gè)已過(guò)濾取樣。
30.權(quán)利要求29的方法,其中產(chǎn)生近似過(guò)濾取樣包括計(jì)算M=A+B+1>>1;計(jì)算N=C+D+1>>1;以及依照M+N+1>>1來(lái)計(jì)算近似過(guò)濾取樣。
31.權(quán)利要求30的方法,其中信號(hào)處理器是一個(gè)具有用于計(jì)算函數(shù)X+Y+1>>1的指令的微處理器,其中計(jì)算M的步驟是使用這個(gè)指令執(zhí)行的,計(jì)算N的步驟是使用這個(gè)指令執(zhí)行的,以及計(jì)算近似過(guò)濾取樣的步驟是使用這個(gè)指令執(zhí)行的。
32.權(quán)利要求31的方法,其中微處理器是帶有SSE或SSE2的IntelTM微處理器,并且其中該指令是PAVGB指令。
33.權(quán)利要求31的方法,其中微處理器是帶有SSE或SSE2的IntelTM微處理器,并且其中該指令是PAVGW指令。
34.權(quán)利要求29的方法,其中微處理器是一個(gè)具有MMXTM/SSE的微處理器,并且其中A、B、C、D是八比特定點(diǎn)數(shù),其中產(chǎn)生近似過(guò)濾取樣、產(chǎn)生校正值、遮蔽校正值以及產(chǎn)生已過(guò)濾取樣的步驟包括執(zhí)行以下指令pxor A_REG,B_REG;pxor C_REG,D_REG;pand A_REG,C_REG;pavgb M_REG,B_REG;pavgb N_REG,D_REG;movq B_REG,M_REG;pxor B_REG,N_REG;pand B-REG,CONST;pavgb M_REG,N_REG;psubb M_REG,B_REG;其中A_REG是一個(gè)初始包含A的寄存器,B_REG是初始包含B的寄存器,C_REG是初始包含C的寄存器,D_REG是包含D的寄存器,CONST是包含八比特?cái)?shù)字0x01的常數(shù),M_REG是初始包含A的寄存器,N_REG是初始包含C的寄存器。
35.一種用于在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法,所述方法包括依照一個(gè)第一取樣A、第二取樣B、第三取樣C和第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣,其中A、B、C和D都是整數(shù);依照((AB)OR(CD)OR(MN)來(lái)產(chǎn)生一個(gè)校正值,其中,M=A+B>>1以及N=C+D+1>>1;遮蔽該校正值;以及通過(guò)使用校正值修改近似過(guò)濾取樣來(lái)產(chǎn)生一個(gè)已過(guò)濾取樣。
36.權(quán)利要求35的方法,其中產(chǎn)生近似過(guò)濾取樣包括計(jì)算M=A+B+1>>1;計(jì)算N=C+D+1>>1;以及依照計(jì)算M+N+1>>1來(lái)計(jì)算近似插值取樣。
37.權(quán)利要求36的方法,其中信號(hào)處理器是一個(gè)具有用于計(jì)算函數(shù)X+Y+1>>1的指令的微處理器,其中計(jì)算M的步驟是使用這個(gè)指令執(zhí)行的,計(jì)算N的步驟是使用這個(gè)指令執(zhí)行的,以及計(jì)算近似過(guò)濾取樣的步驟是使用這個(gè)指令執(zhí)行的。
38.權(quán)利要求37的方法,其中微處理器是帶有SSE或SSE2的IntelTM微處理器,并且其中該指令是PAVGB指令。
39.權(quán)利要求37的方法,其中微處理器是帶有SSE或SSE2的IntelTM微處理器,并且其中該指令是PAVGW指令。
40.權(quán)利要求35的方法,其中微處理器是一個(gè)具有MMXTM/SSE的微處理器,并且其中A、B、C、D是八比特?cái)?shù),其中產(chǎn)生近似過(guò)濾取樣、產(chǎn)生校正值、遮蔽校正值以及產(chǎn)生已過(guò)濾取樣的步驟包括執(zhí)行以下指令pxor A_REG,B_REG;pxor C_REG,D_REG;por A_REG,C_REG;pavgb M_REG,B_REG;pavgb N_REG,D_REG;movq B_REG,M_REG;pxor B_REG,N_REG;pand B_REG,CONST;pavgb M_REG,N_REG;psubb M_REG,B_REG;其中A_REG是初始包含A的寄存器,B_REG是初始包含B的寄存器,C_REG是初始包含C的寄存器,D_REG是包含D的寄存器,CONST是包含八比特整值數(shù)一的常數(shù),M_REG是初始包含A的寄存器,N_REG是初始包含C的寄存器。
41.一種用于在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法,所述方法包括依照一個(gè)第一取樣A、第二取樣B、第三取樣C和第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣,其中A、B、C和D都是定點(diǎn)數(shù);依照(AB)OR(CD)OR(MN)而產(chǎn)生一個(gè)校正值,其中M=A+B+1>>1并且N=C+D+1>>1;遮蔽該校正值;以及通過(guò)使用該校正值來(lái)修改近似過(guò)濾取樣,從而產(chǎn)生一個(gè)已過(guò)濾取樣。
42.一種用于在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法,該方法包括產(chǎn)生M1=(A+B+1)>>1,其中A和B是數(shù)字信號(hào)中的取樣;產(chǎn)生M2=(C+D+1)>>1,其中C和D是數(shù)字信號(hào)中的取樣;產(chǎn)生M3=(E+F+1)>>1,其中E和F是數(shù)字信號(hào)中的取樣;產(chǎn)生M4=(G+H+1)>>1,其中G和H是數(shù)字信號(hào)中的取樣;產(chǎn)生N1=(M1+(M3>>1)+(M3>>2))>>2;產(chǎn)生N2=(M2+(M2>>1)+(M4>>2))>>2;以及依照M1+N1-N2來(lái)產(chǎn)生一個(gè)已過(guò)濾取樣。
43.一種計(jì)算機(jī)程序產(chǎn)品,包括一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中包含了用于量化數(shù)字信號(hào)的計(jì)算機(jī)程序代碼,所述計(jì)算機(jī)程序代碼包括用于依照一個(gè)少于四個(gè)數(shù)字信號(hào)取樣的函數(shù)產(chǎn)生近似過(guò)濾取樣的代碼;用于依照一個(gè)少于四個(gè)取樣的函數(shù)產(chǎn)生校正值的代碼;以及通過(guò)使用校正值修改近似過(guò)濾取樣來(lái)產(chǎn)生已過(guò)濾取樣的代碼。
44.一種用于過(guò)濾數(shù)字信號(hào)中的取樣的系統(tǒng),該系統(tǒng)包括一個(gè)保存數(shù)字信號(hào)中的取樣的存儲(chǔ)器;以及一個(gè)與存儲(chǔ)器耦合并且能夠執(zhí)行以下步驟的處理器A)依照一個(gè)少于四個(gè)數(shù)字信號(hào)取樣的函數(shù)產(chǎn)生近似過(guò)濾取樣;B)依照一個(gè)少于四個(gè)取樣的函數(shù)產(chǎn)生校正值,以及C)通過(guò)使用所述校正值來(lái)修改近似過(guò)濾取樣,以便產(chǎn)生一個(gè)已過(guò)濾取樣。
45.一種計(jì)算機(jī)程序產(chǎn)品,包括一個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中包含了用于量化數(shù)字信號(hào)的計(jì)算機(jī)程序代碼,所述計(jì)算機(jī)程序代碼包括用于依照一個(gè)第一取樣A、第二取樣B、第三取樣C和第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣的代碼,其中A、B、C和D都是定點(diǎn)數(shù);用于依照((AB)AND(CD))OR(MN)來(lái)產(chǎn)生一個(gè)校正值的代碼,其中M=A+B+1>>1并且N=C+D+1>>1;用于遮蔽所述校正值的代碼,以及;通過(guò)用所述校正值修改近似過(guò)濾取樣來(lái)產(chǎn)生一個(gè)已過(guò)濾取樣的代碼。
46.一種用于過(guò)濾數(shù)字信號(hào)中的取樣的系統(tǒng),該系統(tǒng)包括一個(gè)保存數(shù)字信號(hào)中的取樣的存儲(chǔ)器;以及一個(gè)與存儲(chǔ)器耦合并且能夠執(zhí)行以下步驟的處理器A)依照一個(gè)第一取樣A、第二取樣B、第三取樣C和第四取樣D的函數(shù)產(chǎn)生近似過(guò)濾取樣,其中A、B、C和D都是定點(diǎn)數(shù);B)依照((AB)AND(CD))OR(MN)來(lái)產(chǎn)生一個(gè)校正值,其中M=A+B+1>>1并且N=C+D+1>>1;C)遮蔽所述校正值;以及D)通過(guò)使用該校正值來(lái)修改近似過(guò)濾取樣,以便產(chǎn)生一個(gè)已過(guò)濾取樣。
全文摘要
本發(fā)明涉及一種用于在信號(hào)處理器中過(guò)濾數(shù)字信號(hào)中的取樣的方法。依照一個(gè)少于四個(gè)數(shù)字信號(hào)取樣的函數(shù)產(chǎn)生近似過(guò)濾取樣。此外還依照一個(gè)少于四個(gè)取樣的函數(shù)產(chǎn)生校正值,并且通過(guò)使用該校正值來(lái)修改近似過(guò)濾取樣,從而產(chǎn)生一個(gè)已過(guò)濾取樣。
文檔編號(hào)H03H17/02GK1778042SQ03803630
公開(kāi)日2006年5月24日 申請(qǐng)日期2003年1月23日 優(yōu)先權(quán)日2002年1月23日
發(fā)明者暢查爾·查特吉 申請(qǐng)人:通用儀器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1