專利名稱:用于快速執(zhí)行子像素內(nèi)插的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本公開總的來說涉及視頻壓縮系統(tǒng),并且更具體來說,涉及用于快速執(zhí)行子像素內(nèi)插(interpolation)的方法和系統(tǒng)。
背景技術(shù):
圖像壓縮系統(tǒng)在各種應(yīng)用中變得越來越有用。例如,視頻壓縮經(jīng)常用于壓縮視頻信息以存儲在數(shù)字通用光盤(DVD)或硬盤驅(qū)動器(HDD)上。作為另一個例子,在諸如互聯(lián)網(wǎng)、數(shù)字用戶線(DSL)、直播衛(wèi)星(DBS)系統(tǒng)、分組網(wǎng)絡(luò)上的多媒體服務(wù)(MSPN)和有線電視(CATV)網(wǎng)絡(luò)的網(wǎng)絡(luò)或通信信道上進(jìn)行視頻信息的實時流式傳輸?shù)倪^程中經(jīng)常使用視頻壓縮。另外,視頻壓縮用于許多其它應(yīng)用,比如計算機游戲、視頻游戲、視頻會議系統(tǒng)、視頻電話、交互式存儲媒體(ISM)和遠(yuǎn)程視頻監(jiān)視系統(tǒng)(RVS)。
過去的二十年已經(jīng)發(fā)展了幾種視頻壓縮標(biāo)準(zhǔn)。其中最新的標(biāo)準(zhǔn)是國際電信聯(lián)盟-電信(ITU-T)H.264標(biāo)準(zhǔn)。H.264標(biāo)準(zhǔn)也被稱為先進(jìn)的視頻編碼(AVC)或運動圖像專家組4(MPEG-4)的第10部分。H.264標(biāo)準(zhǔn)與以前的標(biāo)準(zhǔn)相比提供了很多的優(yōu)點,包括改進(jìn)的速率失真和更低的比特率。在它的特征中,H.264標(biāo)準(zhǔn)支持子像素運動補償。
子像素運動補償經(jīng)常在計算上是復(fù)雜而且在計算上是密集的。因為這個原因,作為H.264標(biāo)準(zhǔn)或其它標(biāo)準(zhǔn)的一部分,子像素運動補償?shù)膽?yīng)用經(jīng)常需要大量的處理時間和資源。結(jié)果,它的應(yīng)用一般使視頻壓縮和/或解壓縮系統(tǒng)的性能變慢。
發(fā)明內(nèi)容
本公開提供一種用于快速執(zhí)行子像素內(nèi)插的方法和系統(tǒng)。
在第一實施方式中,該方法包括接收包含全像素的視頻信息。該方法還包括執(zhí)行子像素內(nèi)插以并行地產(chǎn)生半像素和四分之一像素。在子像素內(nèi)插期間多個半像素和多個四分之一像素同時產(chǎn)生。
在第二實施方式中,子像素內(nèi)插器包括可以存儲由全像素形成的視頻信息的輸入存儲器。子像素內(nèi)插器還包括至少一個可以執(zhí)行子像素內(nèi)插以并行地產(chǎn)生半像素和四分之一像素的內(nèi)插單元。在子像素內(nèi)插期間多個半像素和多個四分之一像素同時產(chǎn)生。另外,子像素內(nèi)插器包括可以存儲全像素、半像素和四分之一像素中的至少一些的輸出存儲器。
在第三實施方式中,一種系統(tǒng)包括包含全像素的視頻信息的源和子像素內(nèi)插器。子像素內(nèi)插器包括可以存儲全像素的輸入存儲器。子像素內(nèi)插器還包括至少一個可以執(zhí)行子像素內(nèi)插以并行地產(chǎn)生半像素和四分之一像素的內(nèi)插單元。在子像素內(nèi)插期間多個半像素和多個四分之一像素同時被產(chǎn)生。另外,子像素內(nèi)插器包括可以存儲全像素、半像素和四分之一像素中的至少一些的輸出存儲器。
根據(jù)下面的附圖、描述和權(quán)利要求,其它的技術(shù)特征對于本領(lǐng)域的技術(shù)人員來說可以是明顯的。
為了更完整的理解本公開及其特點,現(xiàn)在將下面的說明與附圖結(jié)合在一起進(jìn)行參考,其中圖1舉例說明了依照本公開的一種實施方式的示例性視頻系統(tǒng);圖2舉例說明了依照本公開的一種實施方式的示例性子像素內(nèi)插器;圖3舉例說明了依照本公開的一種實施方式的示例性水平半像素內(nèi)插器;圖4A和4B舉例說明了依照本公開的一種實施方式的示例性垂直半像素內(nèi)插器和垂直半像素內(nèi)插器排列;圖5舉例說明了依照本公開的一種實施方式的示例性四分之一像素內(nèi)插器;圖6舉例說明了依照本公開的一種實施方式的包括圖像宏塊的示例性半像素內(nèi)插;圖7舉例說明了依照本公開的一種實施方式的包括圖像宏塊的示例性四分之一像素內(nèi)插;圖8舉例說明了依照本公開的一種實施方式的包括圖像宏塊的示例性半像素和四分之一像素內(nèi)插;圖9舉例說明了依照本公開的一種實施方式的包括圖像宏塊的示例性八分之一像素內(nèi)插;以及圖10舉例說明了依照本公開的一種實施方式的用于快速執(zhí)行子像素內(nèi)插的一種示例性方法。
具體實施例方式
圖1舉例說明了依照本公開的一種實施方式的示例性視頻系統(tǒng)100。在該舉例說明的示例中,系統(tǒng)100包括視頻編碼器102、視頻解碼器104和顯示設(shè)備106。在圖1中所示的視頻系統(tǒng)100僅用于舉例說明。視頻系統(tǒng)100的其它實施方式可以在不脫離本公開的范圍的條件下使用。
在一種操作情況中,視頻編碼器102壓縮視頻信息,并且視頻解碼器104接收并解壓縮視頻信息。例如,視頻編碼器102和視頻解碼器104可以各自支持國際電信聯(lián)盟-電信(ITU-T)H.264標(biāo)準(zhǔn)。為實現(xiàn)H.264標(biāo)準(zhǔn)或其它壓縮方案,視頻編碼器102和視頻解碼器104可以執(zhí)行子像素內(nèi)插。子像素內(nèi)插允許視頻編碼器102和視頻解碼器104對被壓縮或解壓縮的圖像在子像素或部分像素上進(jìn)行識別和操作。使用包含在被壓縮或解壓縮的圖像內(nèi)的像素來識別該子像素或部分像素。
在一些實施方式中,視頻編碼器102和視頻解碼器104各自包括一個或多個子像素內(nèi)插單元和存儲器裝置。內(nèi)插單元通過使用原始圖像像素執(zhí)行內(nèi)插而產(chǎn)生子像素,存儲器裝置存儲不同的像素和子像素的值。內(nèi)插單元可以并行操作,這有助于減少執(zhí)行內(nèi)插處理所需的時間量。另外,存儲器裝置有助于減少在內(nèi)插處理期間的加載和存儲操作的次數(shù),這還有助于減少執(zhí)行內(nèi)插處理所需的時間量。
在舉例說明的示例中,視頻編碼器102產(chǎn)生壓縮的視頻信息。在本文件中,短語“視頻信息”指的是表示視頻圖像序列的信息。視頻編碼器102表示用于產(chǎn)生或另外提供壓縮的視頻信息的任何適當(dāng)?shù)难b置、系統(tǒng)或機械裝置。例如,視頻編碼器102可以表示可以通過諸如互聯(lián)網(wǎng)、數(shù)字用戶線(DSL)、無線網(wǎng)絡(luò)、直播衛(wèi)星(DBS)系統(tǒng)、分組網(wǎng)絡(luò)上的多媒體服務(wù)(MSPN)和有線電視網(wǎng)絡(luò)(CATV)的數(shù)據(jù)網(wǎng)絡(luò)108發(fā)送流式視頻到視頻解碼器104的流式視頻發(fā)送器。視頻編碼器102還可以表示數(shù)字通用光盤(DVD)刻錄機(burner)或其它可以在DVD或其它光盤110上存儲壓縮的視頻信息的光盤刻錄機。視頻編碼器102還可以表示可以壓縮用于存儲在硬盤驅(qū)動器(HDD)112上的視頻信息的數(shù)字視頻錄像機。視頻編碼器102包括用于壓縮視頻信息的任何硬件、軟件、固件或它們的組合。
視頻解碼器104解壓縮由視頻編碼器102提供的壓縮的視頻信息。視頻解碼器104表示用于解壓縮視頻信息的任何適當(dāng)?shù)难b置、系統(tǒng)或機械裝置。例如,視頻解碼器104可以表示可以通過網(wǎng)絡(luò)108從視頻編碼器102接收流式視頻的流式視頻接收器。視頻解碼器104還可以表示可以從光盤110檢索(retrieve)壓縮的視頻信息的DVD播放器或其它光盤播放器。視頻解碼器104還可以表示可以解壓縮存儲在硬盤驅(qū)動器112上的視頻信息的數(shù)字視頻錄像機。視頻解碼器104包括用于解壓縮視頻信息的任何硬件、軟件、固件或它們的組合。
在舉例說明的示例中,視頻解碼器104解壓縮壓縮的視頻信息并且提供解壓縮的視頻信息給顯示設(shè)備106以顯示給觀眾。顯示設(shè)備106表示用于顯示視頻信息給一個或多個觀眾的任何適當(dāng)?shù)脑O(shè)備、系統(tǒng)或結(jié)構(gòu)。顯示設(shè)備106例如可以表示電視機、計算機顯示器或投影儀。視頻解碼器104可以提供解壓縮的視頻信息給任何其它或另外的目標(biāo),例如視頻磁帶錄像機(VCR)或其它記錄設(shè)備。
盡管在圖1中作為分離的部件被示出,但是視頻編碼器102和視頻解碼器104可以運行在單個設(shè)備或裝置內(nèi)。例如,視頻編碼器102和視頻解碼器104可以運行在數(shù)字視頻錄像機或其它設(shè)備內(nèi)。視頻編碼器102可以接收并壓縮視頻信息來存儲在硬盤驅(qū)動器112上,而視頻解碼器104可以檢索并解壓縮視頻信息來顯示。
在舉例說明的實施方式中,視頻編碼器102包括視頻源114。視頻源114提供包含將被視頻編碼器102壓縮的視頻信息的視頻信息信號116。視頻數(shù)據(jù)源114表示可以產(chǎn)生或另外提供未壓縮的視頻信息的任何設(shè)備、系統(tǒng)或結(jié)構(gòu)。視頻數(shù)據(jù)源114例如可以包括電視接收機、VCR、攝影機、可以存儲未加工的視頻數(shù)據(jù)的存儲設(shè)備或者任何其它適當(dāng)?shù)囊曨l信息源。盡管圖1中舉例說明了視頻數(shù)據(jù)源114構(gòu)成視頻編碼器102的一部分,但是視頻數(shù)據(jù)源114也可以存在于視頻編碼器102之外。
合并器118被耦合到視頻數(shù)據(jù)源114中。在本文件中,術(shù)語“耦合”及其派生詞指的是任何在兩個或更多元件之間的直接或間接的通信,無論那些元件在物理上是否相連。合并器118從視頻數(shù)據(jù)源114接收包含未壓縮的視頻信息的視頻信息信號116。合并器118還從視頻編碼器102中的其它部件中接收反饋視頻信號148。反饋視頻信號148與已經(jīng)被視頻編碼器102壓縮的視頻信息相關(guān)聯(lián)。合并器118識別視頻信息信號116與反饋視頻信號148之間的任何差異。然后合并器118把識別后的差異作為殘留信號120輸出。合并器118表示用于合并信號的任何硬件、軟件、固件或它們的組合,例如減法器。
殘留信號120提供給變換/量化單元122。變換/量化單元122執(zhí)行處理殘留信號120的各種功能。例如,變換/量化單元122可以執(zhí)行變換功能以使殘留信號120(在空間域)變換為離散余弦變換(DCT)系數(shù)(在頻率域)。變換/量化單元122還可以量化DCT系數(shù)并且輸出量化的DCT系數(shù)124。在一些實施方式中,變換/量化單元122在來自被壓縮的圖像的像素的塊(例如16×16的宏塊)上進(jìn)行操作并且產(chǎn)生量化的DCT系數(shù)124的塊。變換/量化單元122包括用于變換和量化視頻信息的任何硬件、軟件、固件或它們的組合。
量化的DCT系數(shù)124提供給熵編碼器126。熵編碼器126編碼量化的DCT系數(shù)124(以及其它信息)以產(chǎn)生壓縮的視頻信息128。熵編碼器126可以實現(xiàn)任何適當(dāng)?shù)木幋a技術(shù),比如基于上下文自適應(yīng)的算法編碼(CABAC)和/或上下文自適應(yīng)的可變長度編碼(CAVLC)。熵編碼器126包括用于編碼量化的DCT系數(shù)124和其它信息的任何硬件、軟件、固件或它們的組合。
量化的DCT系數(shù)124提供給逆變換/量化單元130。逆變換/量化單元130處理量化的DCT系數(shù)124并且試圖逆轉(zhuǎn)由變換/量化單元122執(zhí)行的處理。例如,逆變換/量化單元130可以實現(xiàn)逆量化功能以產(chǎn)生DCT系數(shù)。逆變換/量化單元130還可以實現(xiàn)逆DCT變換以產(chǎn)生重構(gòu)的殘留信號132。該重構(gòu)的殘留信號132可以匹配于原始的殘留信號120,或者重構(gòu)的殘留信號132可以是與殘留信號120相似但有一些差別。逆變換/量化單元130包括用于執(zhí)行逆變換和逆量化功能的任何硬件、軟件、固件或它們的組合。
重構(gòu)的殘留信號132提供給合并器134。合并器134還接收反饋視頻信號148。然后合并器134合并重構(gòu)的殘留信號132和反饋視頻信號148以產(chǎn)生合并的信號136。合并器134表示用于合并信號的任何硬件、軟件、固件或它們的組合,例如加法器。
合并的信號136提供給解塊過濾器(filter)138。解塊過濾器138減少被解壓縮的圖像中的分塊偽像,例如位于沿著不同16×16的宏塊的邊界的分塊偽像。這將產(chǎn)生過濾后的視頻信息140。解塊過濾器138表示用于減少分塊偽像的任何硬件、軟件、固件或它們的組合。
過濾后的視頻信息140提供給運動估計器142和運動補償器144。運動估計器142還接收原始視頻信息信號116和反饋視頻信號148。運動估計器142使用接收到的信息來識別被壓縮的視頻圖像內(nèi)的運動。例如,運動估計器142可以執(zhí)行基于場或基于幀的運動估計以識別運動。然后運動估計器142輸出運動矢量146,其代表圖像內(nèi)被識別的運動。運動矢量146提供給熵編碼器126用于作為壓縮的視頻信息128的一部分進(jìn)行編碼并且提供給運動補償器144。運動估計器142包括用于估計視頻圖像中的運動的任何硬件、軟件、固件或它們的組合。
運動補償器144接收過濾后的視頻信息140和運動矢量146。運動補償器144使用運動矢量146來改變過濾后的視頻信息140并且將運動重新引入到過濾后的視頻信息140中。這會產(chǎn)生反饋視頻信號148,它可以精確地匹配于原始的視頻信息信號116,但是也可以不這樣。運動補償器144包括用于改變視頻信息以將運動引入到視頻圖像中的任何硬件、軟件、固件或它們的組合。
在舉例說明的示例中,當(dāng)使用內(nèi)部預(yù)測模式時,使用內(nèi)部預(yù)測單元150來處理視頻信息。內(nèi)部預(yù)測模式在H.264中定義,并以4×4的塊或分區(qū)的方式分析16×16的宏塊。在一些實施方式中,當(dāng)使用內(nèi)部預(yù)測模式時,變換/量化單元122在4×4的分區(qū)上實現(xiàn)內(nèi)部預(yù)測機制。當(dāng)視頻編碼器102以內(nèi)部預(yù)測模式操作時,內(nèi)部預(yù)測單元150執(zhí)行這一處理的逆處理并且產(chǎn)生反饋視頻信號148。
視頻解碼器104可以包括許多和圖1中所示的視頻編碼器102相似的部件。例如視頻解碼器104可以包括逆變換/量化單元130、合并器134、解塊過濾器138、運動補償器144和內(nèi)部預(yù)測單元150。視頻解碼器104還可以包括逆熵編碼器,該逆熵編碼器執(zhí)行由熵編碼器126使用的編碼功能的逆功能。逆熵編碼器可以接收壓縮的視頻信息128,提供量化的DCT系數(shù)124給逆變換/量化單元130,并且提供運動矢量146給運動補償器144。這樣,視頻解碼器104解壓縮視頻信息128,并恢復(fù)視頻信息信號116以顯示給觀眾。
在一種操作情況中,視頻編碼器102和視頻解碼器104執(zhí)行子像素內(nèi)插。例如,在視頻編碼器102和視頻解碼器104中的運動補償器144可以執(zhí)行子像素運動補償,這個操作就使用了子像素內(nèi)插。子像素內(nèi)插一般在計算上是復(fù)雜而且在計算上是密集的。如在下面將更加詳細(xì)的說明的那樣,視頻編碼器102和/或視頻解碼器104包括一個或多個子像素內(nèi)插單元和存儲器裝置,這有助于降低子像素內(nèi)插的復(fù)雜性和提高子像素內(nèi)插的速度。
在特定的實施方式中,視頻編碼器102和視頻解碼器104執(zhí)行H.264壓縮方案。H.264壓縮方案支持幾種先進(jìn)的視頻編碼技術(shù),例如方向空間預(yù)測、多幀參考、加權(quán)預(yù)測、解塊過濾、可變塊尺寸和四分之一取樣精確運動補償。H.264壓縮方案還支持一種小的、基于塊的、整數(shù)的和分級的變換,以及CABAC和CAVLC編碼。
H.264標(biāo)準(zhǔn)使用樹型結(jié)構(gòu)運動補償方法。該方法支持從4×4到16×16范圍內(nèi)的可變運動補償塊或分區(qū)尺寸。對亮度取樣來說,每個16×16的宏塊是由一個或多個16×16、16×8、8×16、或8×8的塊形成的。每個8×8的塊能夠進(jìn)一步分割成8×4、4×8或4×4的塊。這就在運動補償塊的選擇上提供更多的靈活性并且允許很多可變塊尺寸的組合用于匹配在視頻圖像中的不同物體的形狀。
在互編碼的(inter-coded)宏塊中的每個塊或分區(qū)由運動矢量146來描述。在當(dāng)前幀中的分區(qū)的運動矢量146從參考幀中相同尺寸的區(qū)域來預(yù)測。兩個運動矢量146之間的偏移量被編碼并與分區(qū)的選擇一起被發(fā)送。在H.264標(biāo)準(zhǔn)中,兩個運動矢量146之間的偏移量具有四分之一像素的分辨率。該分辨率允許運動矢量146用更高的精度來計算,提高了編碼效率。
盡管圖1舉例說明了視頻系統(tǒng)100的一個示例,但是,還可以對圖1做出各種變化。例如,圖1舉例說明了壓縮的視頻信息可以通過網(wǎng)絡(luò)108、使用光盤110或在硬盤驅(qū)動器112上提供給視頻解碼器104。視頻編碼器102可以將壓縮的視頻信息放在任何適當(dāng)?shù)拇鎯γ襟w上或者以任何適當(dāng)?shù)姆绞絺魉驮撔畔⒔o視頻解碼器104。而且,圖1舉例說明了視頻編碼器102的一個示例性實施方式。視頻編碼器102的其它實施方式可以使用。另外,視頻編碼器102和視頻解碼器104可以合并到單個設(shè)備或裝置中。
圖2舉例說明了依照本公開的一種實施方式的示例性子像素內(nèi)插器200。圖2中所示的子像素內(nèi)插器200僅用于舉例說明。子像素內(nèi)插器200的其它實施方式可以在不脫離本公開的范圍的條件下使用。而且,為便于說明,圖2的子像素內(nèi)插器200被描述為在圖1的系統(tǒng)100內(nèi)部運行。子像素內(nèi)插器200可以在任何其他系統(tǒng)或設(shè)備中使用。
子像素內(nèi)插器200支持子像素內(nèi)插并因此支持在圖1的視頻編碼器102和/或視頻解碼器104內(nèi)的子像素運動補償。子像素內(nèi)插器200例如可以用在圖1的視頻編碼器102或視頻解碼器104中的運動補償器144之內(nèi)。
在這個示例中,子像素內(nèi)插器200包括用于接收并且存儲將被處理的視頻信息的輸入緩沖器202。例如,輸入緩沖器202可以從圖1的解塊過濾器138接收16×16宏塊。該16×16宏塊包含表示圖像中的像素的16×16塊的數(shù)據(jù)值。原始圖像像素可以被稱作“全”像素(與“部分”像素相對,例如半像素和四分之一像素)。圖2中示出的輸入緩沖器202的尺寸僅用于舉例說明。輸入緩沖器202可以存儲任何其它適當(dāng)數(shù)量的信息,例如多個16×16宏塊或其它數(shù)據(jù)塊。輸入緩沖器202表示任何適當(dāng)?shù)拇鎯υO(shè)備或設(shè)備。
存儲在輸入緩沖器202中的數(shù)據(jù)的子集或一部分被傳遞到矢量寄存器204的組。矢量寄存器204存儲來自存儲在輸入緩沖器202中的宏塊的全像素值的子集。例如,矢量寄存器204可以表示九組的六個寄存器,其中每組存儲六個來自在輸入緩沖器202中的宏塊的單個行的全像素值。這樣,矢量寄存器204可以包含五十四個在子像素內(nèi)插處理期間使用的全像素值。矢量寄存器204表示任何適當(dāng)?shù)拇鎯υO(shè)備或設(shè)備。
存儲在矢量寄存器204中的全像素值提供給水平半像素內(nèi)插單元206。水平半像素內(nèi)插單元206使用全像素值來內(nèi)插半像素的值,該半像素值水平定位于圖像中的全像素對之間。在一些實施方式中,水平半像素內(nèi)插單元206針對輸入宏塊的多行并行地內(nèi)插半像素值,這有助于減少產(chǎn)生半像素值所需的時間。水平半像素內(nèi)插單元206包括用于在水平方向上內(nèi)插半像素值的任何硬件、軟件、固件或它們的組合。水平半像素內(nèi)插單元206的一部分的一個示例在圖3中示出,下面將說明它。
水平半像素內(nèi)插單元206提供已識別的半像素值給垂直半像素內(nèi)插單元208a。矢量寄存器204提供全像素值給垂直半像素內(nèi)插單元208b。垂直半像素內(nèi)插單元208a-208b用這些像素值來內(nèi)插垂直地定位于全像素對之間或半像素對(由水平半像素內(nèi)插單元206產(chǎn)生的)之間的半像素值。在一些實施方式中,垂直半像素內(nèi)插單元208a-208b并行地對輸入宏塊的多列內(nèi)插半像素值,這有助于減少識別半像素值所需的時間。垂直半像素內(nèi)插單元208a-208b中的每一個包括用于在垂直方向上內(nèi)插半像素值的任何硬件、軟件、固件或它們的組合。垂直半像素內(nèi)插單元208a-208b的一部分的一個示例在圖4A和4B中示出,下面將說明它。
來自水平半像素內(nèi)插單元206和垂直半像素內(nèi)插單元208a-208b的半像素值存儲在中間緩沖器210中。來自矢量寄存器204的全像素值也存儲在中間緩沖器210中。中間緩沖器210表示任何可以存儲像素數(shù)據(jù)的適當(dāng)?shù)拇鎯υO(shè)備或設(shè)備。
存儲在中間緩沖器210中的全像素值和半像素值被提供給四分之一像素內(nèi)插單元212。四分之一像素內(nèi)插單元212使用該像素值來內(nèi)插用于四分之一像素的值。四分之一像素水平地、垂直地和對角地定位于全像素和半像素之間或半像素之間。在一些實施方式中,四分之一像素內(nèi)插單元212并行地對輸入宏塊的多個行和列內(nèi)插四分之一像素值,這有助于減少識別四分之一像素值所需的時間。四分之一像素內(nèi)插單元212包括用于內(nèi)插四分之一像素值的任何硬件、軟件、固件或它們的組合。四分之一像素內(nèi)插單元212的一部分的一個示例在圖5中示出,下面將說明它。
存儲在中間緩沖器210中的全像素值和半像素值被提供給輸出緩沖單元214。來自四分之一像素內(nèi)插單元212的四分之一像素值也提供給輸出緩沖器214。輸出緩沖器214存儲用于子像素內(nèi)插器200外部的部件進(jìn)行檢索的像素數(shù)據(jù)。例如,輸出緩沖器214可以存儲像素數(shù)據(jù)以便運動補償器144可以檢索和分析像素數(shù)據(jù)。輸出緩沖器214表示任何可以存儲像素數(shù)據(jù)的適當(dāng)?shù)拇鎯υO(shè)備或設(shè)備。
圖2中示出的子像素內(nèi)插器200有助于降低子像素內(nèi)插的復(fù)雜性和提高子像素內(nèi)插的速度。例如,矢量寄存器204和緩沖器202、210、214可以存儲(全、半和/或四分之一)像素值的組。這有助于減少在內(nèi)插處理期間所需的加載和存儲操作的數(shù)量。同樣,執(zhí)行H.264標(biāo)準(zhǔn)的常規(guī)設(shè)備通常在水平內(nèi)插之后執(zhí)行轉(zhuǎn)置操作,以便將數(shù)據(jù)從行轉(zhuǎn)移到列,用于垂直內(nèi)插。子像素內(nèi)插器200使用矢量寄存器204來消除對轉(zhuǎn)置操作的需要,這也有助于減少執(zhí)行內(nèi)插處理所需的時間。此外,來自矢量寄存器204的數(shù)據(jù)直接供應(yīng)給內(nèi)插單元206、208b,并且來自內(nèi)插單元206的數(shù)據(jù)直接供應(yīng)給內(nèi)插單元208a。而且,象下面更詳細(xì)說明的那樣,子像素內(nèi)插器200的結(jié)構(gòu)以流水線方式被設(shè)計,以允許在最初的等待時間后的每個時鐘周期產(chǎn)生多個子像素。
另外,垂直和水平內(nèi)插二者可以同時執(zhí)行。在這個實施方式中,子像素內(nèi)插器200處理九個像素行,并且并行地產(chǎn)生四組輸出。例如,這允許子像素內(nèi)插器200產(chǎn)生第一半像素集合、第二半像素集合和第三半像素集合。子像素內(nèi)插器200還使用第一半像素集合來產(chǎn)生第一四分之一像素集合,其中第一四分之一像素集合與第二半像素集合同時產(chǎn)生。子像素內(nèi)插器200還使用第二半像素集合產(chǎn)生第二四分之一像素集合,其中第二四分之一像素集合與第三半像素集合同時產(chǎn)生。在特定的實施方式中,半像素和四分之一像素內(nèi)插是在適當(dāng)?shù)奈恢脠?zhí)行的,并且每個周期計算十七個半像素和四十八個四分之一像素。這有助于增加子像素內(nèi)插器200的吞吐量。在本文件中,術(shù)語“同時”及其派生詞和短語“并行地”指的是在兩個或多個動作的實施時的重疊,無論該重疊是完整的還是部分的。
在特定的實施方式中,每個16×16輸入宏塊通過子像素內(nèi)插器200來處理,然后子像素內(nèi)插器200輸出十五個16×16宏塊。該十五個16×16輸出宏塊包含全像素、半像素和四分之一像素。同樣,在特定的實施方式中,在圖2中示出的子像素內(nèi)插器200可以實現(xiàn)為一個協(xié)處理器來和執(zhí)行視頻壓縮或解壓縮的處理器一起使用。協(xié)處理器可以表示四路超長指令字(VLIW)處理器,其可以每個指令執(zhí)行一個加載、一個存儲和兩個運算操作。該指令可以表示單指令多數(shù)據(jù)(SIMD)指令。
盡管圖2舉例說明了子像素內(nèi)插器200的一個示例,但還是可以對圖2做各種的變化。例如,輸入宏塊的尺寸(16×16)和矢量寄存器204的組的尺寸(9×6)僅用于舉例說明。
圖3舉例說明了依照本公開的一種實施方式的水平半像素內(nèi)插器300的一個示例。圖3中示出的水平半像素內(nèi)插器300的實施方式僅用于舉例說明。水平半像素內(nèi)插器300的其它實施方式可以在不脫離本公開的范圍的條件下使用。同樣,為便于說明,水平半像素內(nèi)插器300被描述為形成圖2的子像素內(nèi)插器200中的水平半像素內(nèi)插單元206的一部分。水平半像素內(nèi)插器300可以用在任何其它系統(tǒng)或設(shè)備中。
在這個示例中,水平半像素內(nèi)插器300包括六個輸入寄存器302a-302f。輸入寄存器302a-302f可以存儲六個不同的像素值,例如從矢量寄存器204接收到的全像素值。輸入寄存器302a-302f形成分級-移位寄存器304,其中全像素值從一個寄存器移位到另一個。第一輸入寄存器302a從矢量寄存器204之一接收全像素值。剩下的每個輸入寄存器302b-302f分別從它前面的輸入寄存器302a-302e中接收全像素值。輸入寄存器302a-302f包括任何可以存儲像素值的結(jié)構(gòu)。
水平半像素內(nèi)插器300還包括八個加法器306a-306h和四個移位器308a-308d。加法器306a-306h中的每個包括用于將兩個或多個輸入值相加的任何硬件、軟件、固件或它們的組合。移位器308a-308d中的每個包括用于以一個或多個方向?qū)⒅狄莆灰粋€或多個比特位的任何硬件、軟件、固件或它們的組合。
加法器306a-306c中的每個從輸入寄存器302a-302f中的兩個接收兩個全像素值并對它們求和。加法器306d接收加法器306a的輸出和常數(shù)值310并對它們求和。加法器306e接收加法器306b的輸出和移位器308a的輸出并對它們求和。移位器308a將加法器306b的輸出向左移動兩個比特位(相當(dāng)于將加法器306b的輸出乘以4)。實際上,加法器306e輸出等于加法器306b的輸出的五倍的值。
加法器306f接收移位器308b-308c的輸出并對它們求和。移位器308b-308c分別將加法器306c的輸出向左移位四個比特位(相當(dāng)于將加法器306c的輸出乘以16)和兩個比特位。實際上,加法器306f輸出等于加法器306c的輸出的二十倍的值。
加法器306g接收加法器306e和加法器306f的輸出。加法器306g從加法器306f的輸出中減去加法器306e的輸出。加法器306h接收加法器306d和306g的輸出并對它們求和。移位器308d將加法器306h的輸出向右移位五個比特位(相當(dāng)于將加法器306h的輸出除以32)。移位器308d的輸出表示用存儲在輸入寄存器302a-302f中的六個全像素值計算得出的一個半像素值。
在舉例說明的實施方式中,加法器306a-306h和移位器308a-308d形成四級流水線結(jié)構(gòu)。第一級由加法器306a-306c表示。第二級由加法器306d-306f和移位器308a-308c表示。第三級由加法器306g表示。第四級由加法器306h和移位器308d表示。因為這里有四級,所以,水平半像素內(nèi)插器300有三個周期的等待時間,并在這之后每個時鐘周期產(chǎn)生一個半像素。這個水平半像素內(nèi)插器300的實施方式不需要使用乘法器,使用乘法器可能使水平半像素內(nèi)插器300的操作變慢。
在圖2中示出的子像素內(nèi)插器200的實施方式中,九個水平半像素內(nèi)插器300可以用在水平半像素內(nèi)插單元206中。在這個實施方式中,這九個水平半像素內(nèi)插器300從矢量寄存器204中的九個不同的行接收全像素值。然后這九個水平半像素內(nèi)插器300同時計算九個不同的水平半像素值。使用其它數(shù)量的水平半像素內(nèi)插器300的水平半像素內(nèi)插單元206的其它實施方式可以使用。
盡管圖3舉例說明了水平半像素內(nèi)插器300的一個示例,還是可以對圖3做各種的變化。例如,提供與在圖3中示出的水平半像素內(nèi)插器300的功能相同的功能的其它結(jié)構(gòu)可以使用。
圖4A和4B舉例說明了依照本公開的一種實施方式的垂直半像素內(nèi)插器400和垂直半像素內(nèi)插器400的排列450的示例。圖4A中示出的垂直半像素內(nèi)插器400和圖4B中示出的排列450僅用于舉例說明。垂直半像素內(nèi)插器400的其它實施方式和其它排列450可以在不脫離本公開的范圍的條件下使用。同樣,為便于說明,垂直半像素內(nèi)插器400和排列450被描述為形成圖2的子像素內(nèi)插器200中的垂直半像素內(nèi)插單元208a-208b的一部分。垂直半像素內(nèi)插器400和排列450可以用在任何其它系統(tǒng)或設(shè)備中。
在圖4A中,垂直半像素內(nèi)插器400包括六個輸入寄存器402a-402f。輸入寄存器402a-402f可以存儲六個用于產(chǎn)生半像素值的不同的像素值。例如,如果垂直半像素內(nèi)插器400在圖2的垂直半像素內(nèi)插單元208a中使用,則存儲在輸入寄存器402a-402f中的像素值表示由水平半像素內(nèi)插單元206產(chǎn)生的半像素值。如果垂直半像素內(nèi)插器400在圖2的垂直半像素內(nèi)插單元208b中使用,存儲在輸入寄存器402a-402f中的像素值表示來自矢量寄存器204的全像素值。輸入寄存器402a-402f包括可以存儲像素值的任何結(jié)構(gòu)。
垂直半像素內(nèi)插器400還包括八個加法器404a-404h和四個移位器406a-406d。加法器404a-404h中的每個包括用于將兩個或多個輸入值相加的任何硬件、軟件、固件或它們的組合。移位器406a-406d中的每個包括用于以一個或多個方向?qū)?shù)值移位一個或多個比特位的任何硬件、軟件、固件或它們的組合。
加法器404a-404c中的每個從輸入寄存器402a-402f中的兩個接收像素值并對它們求和。加法器404d接收加法器404a的輸出和常數(shù)值408并對它們求和。加法器404e接收加法器404b的輸出和移位器406a的輸出并對它們求和,移位器406a將加法器404b的輸出向左移位兩個比特位。加法器404f接收移位器406b-406c的輸出并對它們求和,移位器406b-406c分別將加法器404c的輸出向左移位四個比特位和兩個比特位。加法器404g接收加法器404e和加法器404f的輸出并從加法器404f的輸出中減去加法器404e的輸出。加法器404h接收加法器404d和404g的輸出并對它們求和。移位器406d將加法器404h的輸出向右移位五個比特位。移位器406d的輸出表示用存儲在輸入寄存器402a-402f中的六個像素值(全像素值或半像素值)計算得出的一個半像素值。
在舉例說明的實施方式中,加法器404a-404h和移位器406a-406d形成四級流水線結(jié)構(gòu)。垂直半像素內(nèi)插器400有三個周期的等待時間,并在這之后每個時鐘周期產(chǎn)生一個半像素。這個垂直半像素內(nèi)插器400的實施方式也不需要使用乘法器。
在圖2中示出的子像素內(nèi)插器200的實施方式中,四個垂直半像素內(nèi)插器400可以在垂直半像素內(nèi)插單元208a-208b的每一個中使用,從而有總共八個垂直半像素內(nèi)插器400。這允許垂直半像素內(nèi)插單元208a-208b同時計算八個不同的垂直半像素。使用其它數(shù)量的垂直半像素內(nèi)插器400的垂直半像素內(nèi)插單元208a-208b的其它實施方式可以使用。
在圖4B中,舉例說明了一種排列450,該排列可以用在垂直半像素內(nèi)插單元208b中。象下面說明的一樣,類似的排列可以用在垂直半像素內(nèi)插單元208a中。
在這個示例中,排列450包括四個垂直半像素內(nèi)插單元400(VHIU0-VHIU3)。其中的每個可以具有象圖4A中示出的相同或相似的結(jié)構(gòu)。排列450還包括矢量寄存器204的列502,在之前圖2中的示例中其包括九個矢量寄存器。排列450還包括置換(permutation)單元504,該置換單元504從矢量寄存器204的列502發(fā)送數(shù)據(jù)到垂直半像素內(nèi)插單元400。
在圖2中示出的示例中,矢量寄存器204包括六行和九列寄存器。用R0到R53表示五十四個矢量寄存器204。在這個示例中,第一行包括R0-R5,第二行包括R6-R11,最后一行包括R48-R53。來自矢量寄存器204的數(shù)據(jù)按行提供給水平半像素內(nèi)插單元206,并且來自矢量寄存器204的數(shù)據(jù)按列提供給垂直半像素內(nèi)插單元208b。
為能夠按列提供數(shù)據(jù)給垂直半像素內(nèi)插器400,排列450使用了置換單元504。置換單元504表示嵌入在垂直半像素內(nèi)插單元208b中的單指令多數(shù)據(jù)(SIMD)置換單元。置換單元504為四個垂直半像素內(nèi)插器400中的每一個選擇適當(dāng)?shù)妮斎搿L貏e的是,第一個和最后一個寄存器值R1和R49每個提供給單獨的垂直半像素內(nèi)插器。第二個和第八個寄存器值R7和R43每個提供給兩個垂直半像素內(nèi)插器。第三個和第七個寄存器值R13和R37每個提供給三個垂直半像素內(nèi)插器。第四個、第五個和第六個寄存器值R19、R25和R31每個提供給四個垂直半像素內(nèi)插器。單個SIMD指令用于激活垂直半像素內(nèi)插單元208b,并且從寄存器的502列提供數(shù)據(jù)給垂直半像素內(nèi)插器400。于是并行地計算出四個半像素。
圖4B中示出的矢量寄存器的502列表示在矢量寄存器204的組中的第二列。在一個隨后的時鐘周期期間,置換單元504可以從在矢量寄存器204的組中的第三列檢索并提供數(shù)據(jù)。在其它隨后的時鐘周期期間,置換單元504可以從矢量寄存器204的組中的其它列檢索和提供數(shù)據(jù)。這樣,垂直半像素內(nèi)插單元208b避免了使用轉(zhuǎn)置操作。
象上文指出的那樣,類似的排列可以用在垂直半像素內(nèi)插單元208a中。如圖4B所示,提供給垂直半像素內(nèi)插單元208b的數(shù)據(jù)來自矢量寄存器204。如圖2所示,提供給垂直半像素內(nèi)插單元208a的數(shù)據(jù)來自水平半像素內(nèi)插單元206。結(jié)果,相同或類似的置換單元504可以用在具有不同的輸入數(shù)據(jù)源的垂直半像素內(nèi)插單元208a中。
盡管圖4A和4B舉例說明了垂直半像素內(nèi)插器400和垂直半像素內(nèi)插器400的排列450的一個示例,但還是可以對圖4A和4B做各種的變化。例如,提供與在圖4A中示出的垂直半像素內(nèi)插器400的功能相同的功能的其它裝置可以使用。同樣,可以使用其它發(fā)送像素數(shù)據(jù)到垂直半像素內(nèi)插器400的排列。
圖5舉例說明了依照本公開的一種實施方式的示例性四分之一像素內(nèi)插器500。圖5中示出的四分之一像素內(nèi)插器500的實施方式僅用于舉例說明。四分之一像素內(nèi)插器500的其它實施方式可以在不脫離本公開的范圍的條件下使用。同樣,為便于說明,四分之一像素內(nèi)插器500被描述為形成在圖2的子像素內(nèi)插器200中的四分之一像素內(nèi)插單元212的一部分。四分之一像素內(nèi)插器500可以用在任何其它系統(tǒng)或設(shè)備中。
在這個示例中,四分之一像素內(nèi)插器500包括兩個輸入寄存器502a-502b。輸入寄存器502a-502b可以存儲兩個不同的像素值。該像素值可以表示全像素值和半像素值或兩個半像素值。輸入寄存器502a-502b包括任何可以存儲像素值的結(jié)構(gòu)。
四分之一像素內(nèi)插器500還包括兩個加法器504a-504b和移位器506。加法器504a-504b中的每一個包括用于將兩個或多個象素值相加的任何硬件、軟件、固件或它們的組合。移位器506包括用于以一個或多個方向?qū)⒅狄莆灰粋€或多個比特位的任何硬件、軟件、固件或它們的組合。
加法器504a從輸入寄存器502a-502b接收像素值并對它們求和。加法器504b接收加法器504a的輸出和常數(shù)值508并對它們求和。移位器506將加法器504b的輸出向右移位一個比特位(相當(dāng)于將加法器504b的輸出除以2)。移位器506的輸出表示用存儲在輸入寄存器502a-502b中的兩個像素值計算得到的一個四分之一像素值。
在舉例說明的實施方式中,加法器504a-504b和移位器506形成二級流水線結(jié)構(gòu)。四分之一像素內(nèi)插器500有一個周期的等待時間,并在此之后每個時鐘周期產(chǎn)生一個四分之一像素。四分之一像素內(nèi)插器500的這個實施方式不需要使用乘法器。
在圖2中示出的子像素內(nèi)插器200的實施方式中,四十八個四分之一像素內(nèi)插器500可以用在四分之一像素內(nèi)插單元212中。這允許四分之一像素內(nèi)插單元212同時計算四十八個不同的四分之一像素。使用其它數(shù)量的四分之一像素內(nèi)插器500的四分之一像素內(nèi)插單元212的其它實施方式也可以被使用。
總的來說,子像素內(nèi)插器200每個時鐘周期最多產(chǎn)生九個水平半像素、八個垂直半像素和四十八個四分之一像素。如果作為輸入接收到16×16宏塊,則子像素內(nèi)插器200的輸出可以組織為64×64宏塊。令64×64輸出塊的左上角的像素為O0,0,右下角的像素為O63,63。表1舉例說明了子像素內(nèi)插器200執(zhí)行子像素內(nèi)插的過程。在這個表中,輸出值Ov,h首先通過其垂直下標(biāo)v然后通過其水平下標(biāo)h來索引。
表1如表1中所示和上文中討論的,在產(chǎn)生第一半像素值之前有三個周期的等待時間。此后,每個時鐘周期可以產(chǎn)生九個水平半像素和八個垂直半像素,以及要用十五個周期來處理在16×16宏塊的每一條線中剩余的像素。同樣,需要兩個額外的時鐘周期來完成四分之一像素計算。結(jié)果,對于16×16宏塊的每一條線的四分之一像素的計算要用二十一個時鐘周期。因為16×16宏塊的四條線可以同時處理,對于16×16宏塊的所有部分像素的計算要用八十四個時鐘周期。
盡管圖5舉例說明了四分之一像素內(nèi)插器500的一個示例,但還是可以對圖5做各種的變化。例如,提供與在圖5中示出的四分之一像素內(nèi)插器500的功能相同的功能的其它結(jié)構(gòu)可以使用。
圖6舉例說明了依照本公開的一種實施方式的包括圖像宏塊的示例性半像素內(nèi)插600。特別是,圖6舉例說明了由圖2的子像素內(nèi)插器200中的水平半像素內(nèi)插單元206和垂直半像素內(nèi)插單元208a-208b執(zhí)行的示例性半像素內(nèi)插600。圖2的子像素內(nèi)插器200可以以不脫離本公開的范圍的任何適當(dāng)?shù)姆绞讲僮鳌?br>
在子像素內(nèi)插器200中的矢量寄存器204存儲九行的六個全像素值。在這個示例中,在圖6中,全像素被表示為灰色的像素,例如像素602。在圖6中,通過子像素內(nèi)插器200在第一個迭代/時鐘周期期間內(nèi)插的半像素被表示為有陰影線的像素,例如像素604。在圖6中,通過子像素內(nèi)插器200在第二迭代/時鐘周期期間內(nèi)插的半像素被表示為黑色的像素,例如像素606。
以第二迭代為例。在內(nèi)插單元206中的每個水平半像素內(nèi)插器300接收在圖6中的一行中的六個全像素602的值。使用這些全像素602,九個水平半像素內(nèi)插器300產(chǎn)生在圖6的列608中示出的半像素606。
在內(nèi)插單元208b中的每個垂直半像素內(nèi)插器400接收在圖6的列610中的九個全像素602中的六個。這些垂直半像素內(nèi)插器400隨后產(chǎn)生在圖6的列610中示出的四個半像素606。同樣,在內(nèi)插單元208a中的每個垂直半像素內(nèi)插器400接收在圖6的列612中的九個半像素604中的六個。列612中的半像素604是由水平半像素內(nèi)插單元206在第一迭代期間產(chǎn)生的。這些垂直半像素內(nèi)插器400隨后產(chǎn)生在圖6的列612中示出的四個半像素606。
這樣,水平半像素內(nèi)插單元206和垂直半像素內(nèi)插單元208a-208b可以并行地產(chǎn)生十七個半像素值。這種結(jié)構(gòu)有助于減少與子像素內(nèi)插處理相關(guān)聯(lián)的延時并且增加子像素內(nèi)插器200的吞吐量。
盡管圖6舉例說明了包括圖像宏塊的半像素內(nèi)插600的一個示例,但還是可以對圖6做各種的變化。例如,半像素內(nèi)插可以以任何其它適當(dāng)?shù)姆绞匠霈F(xiàn),比如當(dāng)每個迭代產(chǎn)生更多或更少半像素時。
圖7舉例說明了依照本公開的一種實施方式的包括圖像宏塊的示例性四分之一像素內(nèi)插700。特別是,圖7舉例說明了由圖2的子像素內(nèi)插器200中的四分之一像素內(nèi)插單元212執(zhí)行的示例性四分之一像素內(nèi)插700。圖2的子像素內(nèi)插器200可以以不脫離本公開的范圍的任何適當(dāng)?shù)姆绞讲僮鳌?br>
在這個示例中,在圖7中,全像素還被表示為灰色的像素,例如像素702。在圖7中,通過子像素內(nèi)插器200(垂直和水平)內(nèi)插的半像素被表示為有陰影線的像素,例如像素704。在圖7中,通過子像素內(nèi)插器200內(nèi)插的四分之一像素被表示為有交叉陰影的像素,例如像素706。
如圖7中所示出的,每個四分之一像素706水平地、垂直地或?qū)堑囟ㄎ挥谌袼?02和半像素704之間或兩個半像素704之間。每個四分之一像素706通過使用這兩個在其周圍的像素值來確定。
四分之一像素內(nèi)插單元212在四分之一像素內(nèi)插單元212的每個時鐘周期/迭代期間可以計算四十八個不同的四分之一像素值。這可以并行地通過半像素內(nèi)插單元206、208a-208b實現(xiàn)。例如,半像素內(nèi)插單元206、208a-208b可以產(chǎn)生十七個半像素。四分之一像素內(nèi)插單元212接收所述半像素并產(chǎn)生四十八個四分之一像素。在四分之一像素內(nèi)插單元212產(chǎn)生所述四分之一像素時,半像素內(nèi)插單元206、208a-208b可以產(chǎn)生另外十七個半像素,它們稍后被四分之一像素內(nèi)插單元212接收。這樣,內(nèi)插單元206、208a-208b、212可以同時運行以快速地產(chǎn)生部分像素。
如圖7中示出的,子像素內(nèi)插器200為圖像中的每個全像素702計算三個半像素704和十二個四分之一像素706。對16×16宏塊來說,這意味著子像素產(chǎn)生器200為每個宏塊輸出3,840(16*16*15)個全像素和部分像素。這些半像素704和四分之一像素706可以用于在壓縮/解壓縮視頻信息時提供改良的運動補償。使用在圖2-5中示出的結(jié)構(gòu),可以用比常規(guī)的H.264和其它視頻編碼器/解碼器更少的延時和更低的計算開銷來產(chǎn)生這些半像素704和四分之一像素706。
盡管圖7舉例說明了包括圖像宏塊的四分之一像素內(nèi)插700的一個示例,但還是可以對圖7做各種的變化。例如,四分之一像素內(nèi)插可以以任何其它適當(dāng)?shù)姆绞匠霈F(xiàn),例如在每個迭代產(chǎn)生更多或更少四分之一像素時。
圖8舉例說明了依照本公開的一種實施方式的包括圖像宏塊的半像素和四分之一像素內(nèi)插800的一個示例的附加的細(xì)節(jié)。圖8使用與圖7相同的明暗法來區(qū)別全像素、半像素和四分之一像素。
在圖8中,大寫字母表示全像素(例如亮度像素),而小寫字母表示半像素和四分之一像素。半像素,例如像素b和h,是通過水平半像素內(nèi)插器300和垂直半像素內(nèi)插器400來計算的。在圖3和4示出的實施方式中,每個內(nèi)插器300、400充當(dāng)一個六抽頭有限沖擊響應(yīng)(FIR)過濾器。在H.264標(biāo)準(zhǔn)中,六抽頭FIR過濾器的系數(shù)是(1、-5、20、20、-5、1)/32。水平半像素內(nèi)插器300使用在一行中的六個全像素值來計算每個半像素。垂直半像素內(nèi)插器400使用在一列中的六個全像素值或六個半像素值來計算每個半像素。
在這種實施方式中,半像素b和h的值可以用下面的公式表示b=(E-5F+20G+20H-5I+J+16)/32 (1)h=(A-5C+20G+20M-5R+T+16)/32. (2)每一個結(jié)果四舍五入到最近的整數(shù)。半像素aa、bb、s、gg和hh的值用和b同樣的方法計算。cc、dd、m、ee和ff的值用和h同樣的方法計算。半像素j的值通過水平地(使用cc、dd、h、m、ee和ff)或垂直地(使用aa、bb、b、s、gg和hh)應(yīng)用六抽頭過濾器來計算,其用下面地公式表示j=(cc-5dd+20h+20m-5ee+ff+16)/32 (3)j=(aa-5bb+20b+20s-5gg+hh+16)/32. (4)一旦半像素值可用,四分之一像素內(nèi)插器500就計算四分之一像素值。該四分之一像素值是使用線性內(nèi)插法計算的,并且結(jié)果四舍五入到最接近的整數(shù)。例如,四分之一像素a、d和e的值可以用下面的公式表示a=(G+b+1)/2 (5)d=(G+h+1)/2 (6)e=(b+h+1)/2. (7)剩余的四分之一像素的值可以用類似的方式來計算。
盡管圖8舉例說明了包括圖像宏塊的半像素和四分之一像素內(nèi)插的一個示例的附加的細(xì)節(jié),但還是可以對圖8做各種的變化。例如,更多或更少的半像素和四分之一像素可以被產(chǎn)生并被用在子像素內(nèi)插器200的每個迭代中。
圖9舉例說明了依照本公開的一種實施方式的包括圖像宏塊的一個示例性八分之一像素內(nèi)插900。在一些實施方式中,圖2的子像素內(nèi)插器200可能需要確定八分之一像素值,例如當(dāng)使用4:2:0取樣以及四分之一象素亮度值需要八分之一象素色度值時。
在這個示例中,在圖9中,全像素還被表示為灰色的像素,例如像素902。在圖9中,八分之一像素被表示為有交叉陰影的像素,例如像素904。在這個示例中,八分之一像素904使用包括四個周圍全像素902的線性內(nèi)插來計算。然而,八分之一像素904可以以任何其它適當(dāng)?shù)姆绞絹碛嬎恪@?,八分之一像?04可以使用鄰近的半像素或四分之一像素或全像素、半像素和/或四分之一像素的組合來計算。
盡管圖9舉例說明了包括圖像宏塊的一個示例性的八分之一像素內(nèi)插900,但還是可以對圖9做各種的變化。例如,八分之一像素904可以以任何其它適當(dāng)?shù)姆绞疆a(chǎn)生。
圖10舉例說明了依照本公開的一種實施方式的用于快速執(zhí)行子像素內(nèi)插的一個示例性方法1000。為便于說明,通過圖2的子像素內(nèi)插器200來描述方法1000。該方法1000可以由任何其它的設(shè)備并在任何其它的系統(tǒng)中被使用。
子像素內(nèi)插器200在步驟1002接收包含視頻信息的宏塊。這個步驟可以包括,例如,子像素內(nèi)插器200接收16×16宏塊,并把該宏塊存儲在輸入緩沖器202中。該16×16宏塊可以包含256個全像素值。
子像素內(nèi)插器200在步驟1004中選擇在宏塊中的全像素值的子集。這個步驟可以包括,例如,子像素內(nèi)插器200把來自宏塊的九行中的每一行的六個全像素值存儲在矢量寄存器204中。
子像素內(nèi)插器200在步驟1006使用全像素的子集來產(chǎn)生水平半像素。這個步驟可以包括,例如,在內(nèi)插單元206中的每一個水平半像素內(nèi)插器300接收來自矢量寄存器204的全像素值。這也可以包括水平半像素內(nèi)插器300的各個級將值相加和移位以產(chǎn)生水平半像素。這個步驟還可以包括在中間緩沖器210中存儲水平半像素。
子像素內(nèi)插器200在步驟1008使用全像素的子集產(chǎn)生垂直半像素。這個步驟可以包括,例如,在內(nèi)插單元208b中的每一個垂直半像素內(nèi)插器400接收來自矢量寄存器204的全像素值。這也可以包括垂直半像素內(nèi)插器400的各個級將值相加和移位以產(chǎn)生垂直半像素。這個步驟還可以包括在中間緩沖器210中存儲垂直半像素。
子像素內(nèi)插器200在步驟1010使用水平半像素產(chǎn)生垂直半像素。這個步驟可以包括,例如,在內(nèi)插單元208a中的每一個垂直半像素內(nèi)插器400接收來自內(nèi)插單元206的水平半像素。這也可以包括垂直半像素內(nèi)插器400的各個級將值相加和移位以產(chǎn)生垂直半像素。這個步驟還可以包括在中間緩沖器210中存儲垂直半像素。
子像素內(nèi)插器200在步驟1012使用全像素和半像素產(chǎn)生四分之一像素。這個步驟可以包括,例如,在內(nèi)插單元212中的每一個四分之一像素內(nèi)插器500接收來自中間緩沖器210的全像素和半像素或兩個半像素。這也可以包括四分之一像素內(nèi)插器500的各個級將值相加和移位以產(chǎn)生四分之一像素。
子像素內(nèi)插器200在步驟1014存儲不同的全像素、半像素和四分之一像素。這個步驟可以包括,例如,將全像素、半像素和四分之一像素存儲在輸出緩沖器214中。在這時,在輸出緩沖器214中的像素數(shù)據(jù)可以被檢索并以任可適當(dāng)?shù)姆绞奖皇褂谩@?,像素?shù)據(jù)可以被檢索并用于執(zhí)行運動補償。不過,像素數(shù)據(jù)可以被用于任何其它適當(dāng)?shù)哪康摹?br>
子像素內(nèi)插器200在步驟1016判斷宏塊的處理是否完成。如果沒有完成,子像素內(nèi)插器200回到步驟1004以便從當(dāng)前的宏塊中選擇另一個像素的子集。否則,宏塊的處理完成,并且該方法1000結(jié)束。在這時,任何適當(dāng)?shù)膭幼鞫伎梢园l(fā)生,例如對新的宏塊重復(fù)所述方法1000。
盡管圖10舉例說明了一種用于快速實現(xiàn)子像素內(nèi)插的方法1000的一個示例,但還是可以對圖10做各種的變化。例如,盡管圖10舉例說明了方法1000連續(xù)發(fā)生的步驟,但是,在圖10中示出的各個步驟可以并行地執(zhí)行。作為一個特定的示例,步驟1006-1010可以在子像素內(nèi)插器200的每個迭代期間使用先前的半像素集合而并行地被執(zhí)行,以產(chǎn)生新的半像素集合并且產(chǎn)生四分之一像素的集合。
闡明在本專利文件中使用的某些詞和短語的定義可能是有利的。術(shù)語“包括”和“包含”及其派生詞意味著非限制性的包括。術(shù)語“或”是包括性的,意味著和/或。術(shù)語“每個”指的是所標(biāo)識的項的至少一個子集中的每一個。短語“與...相關(guān)聯(lián)的”和“與之相關(guān)聯(lián)的”及其派生詞可以是指包括、被包括在內(nèi)、與...互連、包含、被包含在內(nèi)、連接到...或與...相連、耦合到...或與...耦合、與...通信、與...協(xié)作、交織、并列、與...接近、一定或與...密切關(guān)聯(lián)的、具有、有某種性質(zhì)的、等等。術(shù)語“控制器”是指控制至少一種操作的任何設(shè)備、系統(tǒng)或其一部分。控制器可以在硬件、固件或軟件中實現(xiàn),或者在其至少兩個的組合中實現(xiàn)。應(yīng)指出的是,與任何特定的控制器相關(guān)聯(lián)的功能性可以是集中的或分布式的,本地地或遠(yuǎn)程地。
盡管本公開描述了某些實施方式和通常關(guān)聯(lián)的方法,但是,這些實施方式和方法的替換和改變對本領(lǐng)域的技術(shù)人員來說是顯而易見的。因此,示例性實施方式的上述描述沒有限定或約束本公開。在不脫離如權(quán)利要求中所定義的本公開的精神和范圍的條件下,其它改變、置換和替換也是可能的。
權(quán)利要求
1.一種方法,包括接收包含全像素的視頻信息;執(zhí)行子像素內(nèi)插以并行地產(chǎn)生半像素和四分之一像素,其中多個半像素和多個四分之一像素在子像素內(nèi)插期間同時產(chǎn)生;并且使用半像素和四分之一像素中的至少一些來執(zhí)行運動補償。
2.按權(quán)利要求1所述的方法,其中執(zhí)行子像素內(nèi)插的步驟包括使用全像素中的至少一些來產(chǎn)生水平半像素,每個水平半像素水平地位于兩個全像素之間;使用全像素中的至少一些來產(chǎn)生第一垂直半像素,每個第一垂直半像素垂直地位于兩個全像素之間;并且使用水平半像素中的至少一些來產(chǎn)生第二垂直半像素,每個第二垂直半像素垂直地位于兩個水平半像素之間。
3.按權(quán)利要求2所述的方法,其中第一和第二垂直半像素同時產(chǎn)生。
4.按權(quán)利要求2所述的方法,其中執(zhí)行子像素內(nèi)插的步驟還包括使用全像素和半像素中的至少一些來產(chǎn)生四分之一像素,每個四分之一像素水平地、垂直地或?qū)堑匚挥谝粋€全像素和一個半像素之間或兩個半像素之間。
5.按權(quán)利要求1所述的方法,其中執(zhí)行子像素內(nèi)插的步驟包括產(chǎn)生第一半像素集合、第二半像素集合和第三半像素集合;使用第一半像素集合產(chǎn)生第一四分之一像素集合,該第一四分之一像素集合在產(chǎn)生第二半像素集合的同時產(chǎn)生;并且使用第二半像素集合產(chǎn)生第二四分之一像素集合,該第二四分之一像素集合在產(chǎn)生第三半像素集合的同時產(chǎn)生。
6.按權(quán)利要求5所述的方法,其中產(chǎn)生半像素和四分之一像素的步驟包括使用多個加法器和多個移位器而不使用任何乘法器來產(chǎn)生半像素和四分之一像素。
7.按權(quán)利要求1所述的方法,其中;視頻信息包含16×16宏塊;并且執(zhí)行子像素內(nèi)插的步驟包括同時產(chǎn)生十七個半像素和四十八個四分之一像素,其中每個全像素產(chǎn)生三個半像素和十二個四分之一像素。
8.一種子像素內(nèi)插器,包括輸入存儲器,可存儲包含全像素的視頻信息;至少一個內(nèi)插單元,可執(zhí)行子像素內(nèi)插以并行地產(chǎn)生半像素和四分之一像素,其中多個半像素和多個四分之一像素在子像素內(nèi)插期間同時產(chǎn)生;和輸出存儲器,可存儲全像素、半像素和四分之一像素中的至少一些。
9.按權(quán)利要求8所述的子像素內(nèi)插器,其中至少一個內(nèi)插單元包括水平半像素內(nèi)插單元,可使用全像素中的至少一些來產(chǎn)生水平半像素,每個水平半像素水平地位于兩個全像素之間;第一垂直半像素內(nèi)插單元,可使用全像素中的至少一些來產(chǎn)生第一垂直半像素,每個第一垂直半像素垂直地位于兩個全像素之間;第二垂直半像素內(nèi)插單元,可使用水平半像素中的至少一些來產(chǎn)生第二垂直半像素,每個第二垂直半像素垂直地位于兩個水平半像素之間;和四分之一像素內(nèi)插單元,可使用全像素和半像素中的至少一些來產(chǎn)生四分之一像素,每個四分之一像素水平地、垂直地或?qū)堑匚挥谝粋€全像素和一個半像素之間或兩個半像素之間。
10.按權(quán)利要求9所述的子像素內(nèi)插器,其中每個內(nèi)插單元包括多個內(nèi)插器,每個內(nèi)插器包括多個輸入寄存器,可存儲多個像素值;和多個加法器和一個或多個移位器,形成多級流水線,可處理存儲在輸入寄存器中的多個像素值。
11.按權(quán)利要求10所述的子像素內(nèi)插器,其中多個加法器和一個或多個移位器可產(chǎn)生半像素,該半像素由以下公式定義半象素=(A-5B+20C+20D-5E+F+16)/32其中A、B、C、D、E和F表示存儲在輸入寄存器中的多個像素值。
12.按權(quán)利要求10所述的子像素內(nèi)插器,其中多個加法器和一個或多個移位器可產(chǎn)生四分之一像素,該四分之一像素由以下公式定義四分之一象素=(A+B+1)/2其中A和B表示存儲在輸入寄存器中的多個像素值。
13.按權(quán)利要求9所述的子像素內(nèi)插器,還包括寄存器組,可存儲來自輸入存儲器的全像素的子集,該寄存器組還可提供全像素中的至少一些給水平半像素內(nèi)插單元,以及提供全像素中的至少一些給第二垂直半像素內(nèi)插單元。
14.按權(quán)利要求13所述的子像素內(nèi)插器,還包括中間存儲器,可接收來自寄存器組的全像素和來自半像素內(nèi)插單元的半像素,該中間存儲器還可提供全像素和半像素給四分之一像素內(nèi)插單元。
15.按權(quán)利要求14所述的子像素內(nèi)插器,其中輸入存儲器包括緩沖器,其可存儲全像素的16×16宏塊;寄存器組包括9×6的寄存器組;水平半像素內(nèi)插單元包括九個半像素內(nèi)插器;第一垂直像素內(nèi)插單元包括四個半像素內(nèi)插器;第二垂直像素內(nèi)插單元包括四個半像素內(nèi)插器;四分之一像素內(nèi)插單元包括四十八個四分之一像素內(nèi)插器;中間存儲器包括緩沖器;并且輸出存儲器包括緩沖器,其可存儲全像素、半像素和四分之一像素的64×64塊。
16.一種系統(tǒng),包括包含全像素的視頻信息的源;和子像素內(nèi)插器,其包括輸入存儲器,可存儲全像素;至少一個內(nèi)插單元,可執(zhí)行子像素內(nèi)插以并行地產(chǎn)生半像素和四分之一像素,其中多個半像素和多個四分之一像素在子像素內(nèi)插期間同時產(chǎn)生;和輸出存儲器,可存儲全像素、半像素和四分之一像素中的至少一些。
17.按權(quán)利要求16所述的系統(tǒng),其中至少一個內(nèi)插單元包括水平半像素內(nèi)插單元,可使用全像素中的至少一些來產(chǎn)生水平半像素,每個水平半像素水平地位于兩個全像素之間;第一垂直半像素內(nèi)插單元,可使用全像素中的至少一些來產(chǎn)生第一垂直半像素,每個第一垂直半像素垂直地位于兩個全像素之間;第二垂直半像素內(nèi)插單元,可使用水平半像素中的至少一些來產(chǎn)生第二垂直半像素,每個第二垂直半像素垂直地位于兩個水平半像素之間;和四分之一像素內(nèi)插單元,可使用全像素和半像素中的至少一些來產(chǎn)生四分之一像素,每個四分之一像素水平地、垂直地或?qū)堑匚挥谝粋€全像素和一個半像素之間或兩個半像素之間。
18.按權(quán)利要求17所述的系統(tǒng),其中每個內(nèi)插單元包括多個內(nèi)插器,每個內(nèi)插器包括多個輸入寄存器,可存儲多個像素值;和多個加法器和一個或多個移位器,形成多級流水線,可處理存儲在輸入寄存器中的多個像素值。
19.按權(quán)利要求17所述的系統(tǒng),其中子像素內(nèi)插器還包括寄存器組,可存儲來自輸入存儲器的全像素的子集,該寄存器組還可提供全像素中的至少一些給水平半像素內(nèi)插單元,以及提供全像素中的至少一些給第二垂直半像素內(nèi)插單元。
20.按權(quán)利要求16所述的系統(tǒng),其中視頻信息的源包含解塊過濾器,該解塊過濾器在視頻編碼器和視頻解碼器中的一個里;并且視頻編碼器或視頻解碼器還包括逆量化/變換單元,可接收量化的離散余弦變換(DCT)系數(shù),并且使用該DCT系數(shù)執(zhí)行逆量化和逆DCT變換功能以產(chǎn)生第一信號;合并器,可合并第一信號和第二信號以產(chǎn)生包含全像素的視頻信息,并且提供該視頻信息給解塊過濾器;和運動補償器,可接收運動矢量與半像素和四分之一像素,該運動補償器還可產(chǎn)生第二信號。
全文摘要
一種子像素內(nèi)插器包括可存儲由全像素形成的視頻信息的輸入存儲器。該子像素內(nèi)插器還包括至少一個可執(zhí)行子像素內(nèi)插以并行地產(chǎn)生半像素和四分之一像素的內(nèi)插單元。多個半像素和多個四分之一像素在子像素內(nèi)插期間同時產(chǎn)生。另外,該子像素內(nèi)插器包括可存儲全像素、半像素和四分之一像素中的至少一些的輸出存儲器。在一些實施方式中,至少一個內(nèi)插單元包括水平半像素內(nèi)插單元、兩個垂直半像素內(nèi)插單元和四分之一像素內(nèi)插單元,所有這些單元可以并行地操作。在特定的實施方式中,該內(nèi)插單元由加法器和移位器形成,而且不包括任何乘法器。
文檔編號G06T3/40GK1835585SQ20051012176
公開日2006年9月20日 申請日期2005年12月21日 優(yōu)先權(quán)日2004年12月21日
發(fā)明者菲利普·P.·黨 申請人:St微電子公司