專利名稱:解碼流水線中的第二去塊器的制作方法
技術(shù)領(lǐng)域:
根據(jù)本發(fā)明的實施例總體涉及視頻解碼(視頻解壓縮)。
背景技術(shù):
H. 264,也即已知的活動圖像專家組4(MPEG-4)的第10部分或MPEG-4高級視頻編碼(AVC),是一種視頻壓縮的標(biāo)準(zhǔn)。視頻包括一系列圖片(或幀),每個幀包括二維陣列的像素。像素被劃分為宏塊(16x16的像素陣列)。每個宏塊具有宏塊編號;通常,宏塊從幀的左上開始連續(xù)編號,并從左至右和從上至下單調(diào)遞增。宏塊可以分組為片(slice),片可以分組為片組。片內(nèi)的宏塊以宏塊編號遞增的次序排列。片可以包括任意數(shù)量的宏塊,這些宏塊可以連續(xù)或可以不連續(xù);即,一個片中的宏塊可以散布于其他片組中的一個或多個其他片中的宏塊之間,但是相同片組中的片中的宏塊彼此不互相散布。
剛剛描述的11.264的允許將宏塊分組成片的特點通常被稱為靈活宏塊排序(FMO)。 FMO是一種誤碼彈性工具,其可以由解碼器使用以在傳輸期間當(dāng)片丟失或毀壞時隱藏錯誤。丟失或毀壞的片中的宏塊可以通過對來自另一片的宏模塊信息進(jìn)行內(nèi)插或外推運算來重建。 H. 264的另一個特點通常被稱為任意片排序(ASO)。使用ASO,片可以以任意次序傳送。例如,片可以在一準(zhǔn)備好時就傳送,即當(dāng)組成該片的所有宏塊都已編碼時,該片就可以以數(shù)據(jù)流的方式傳送到解碼器。結(jié)果,可以發(fā)送來自 一個片組的片,跟著發(fā)送來自另一片組中的片,再跟著發(fā)送來自第一片組的另一片,以此類推。 這樣,總的來說,11.264允許編碼的宏塊"無序地"發(fā)送。即,宏塊可以以特定次序編碼(例如,從上至下和從左至右地根據(jù)宏塊編號以升序),但是宏塊發(fā)送給解碼設(shè)備的次序和相應(yīng)地由解碼設(shè)備接收的次序可以與編碼次序不同。 除了基本解碼操作之外,解碼設(shè)備還執(zhí)行去塊(deblocking)操作。在去塊中,去塊過濾器應(yīng)用于已解碼的宏塊以使相鄰宏塊之間的邊界平滑。 參考圖l,為了對宏塊Ml進(jìn)行去塊操作,需要宏塊M2(宏塊M1左邊最近的鄰居)的信息,還可能需要宏塊M3(宏塊M1上面最近的鄰居)的信息。但是,宏塊M1可能在一個片(例如片S2)中,鄰近的宏塊M2和M3可能在不同的片(例如片S1)或多個片中。當(dāng)AS0啟用時,片S2可以在片Sl之前被發(fā)送給解碼器。這樣,宏塊M1可能已準(zhǔn)備好進(jìn)行去塊操作,但如果片SI還沒有到達(dá)解碼器,則去塊操作也不得不延遲。 結(jié)果,H. 264解碼典型地使用雙通道方法來實現(xiàn)。在第一通道中執(zhí)行基本解碼(去塊之前的解碼),且解碼后的數(shù)據(jù)被保存為已解碼的形式。在第二通道中,解碼后的數(shù)據(jù)被重新載入并執(zhí)行去塊操作。不幸的是,這種類型的實現(xiàn)方式會給解碼裝置帶來額外的負(fù)擔(dān)。更具體地,解碼設(shè)備可能需要更高的數(shù)據(jù)總線帶寬以適應(yīng)將數(shù)據(jù)傳輸?shù)酱鎯ζ髦幸约皬拇鎯ζ髦袀鬏敂?shù)據(jù),需要額外的存儲器以在去塊操作之前存儲解碼后的數(shù)據(jù),以及由于第一和第二通道順序執(zhí)行而需要更長的計算時間。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的實施例,一種解碼器包括能被用于對已編碼數(shù)據(jù)幀進(jìn)行解碼的第一
(去塊之前進(jìn)行解碼)級。該解碼器還包括第一級下游的第二(去塊)級。該第二級包括能用于并行地對已解碼的幀進(jìn)行去塊操作的第一去塊器和第二去塊器。 該第一和第二去塊器可以彼此并行地運行,并相對該解碼級并行地運行。例如,該第一去塊器可以去塊一個幀,同時該第二去塊器去塊另一幀,同時解碼級對又一幀進(jìn)行操作。進(jìn)一步地,在一些例子中,去塊器可以對幀的一部分機(jī)械操作,同時解碼級對同一幀的后續(xù)部分進(jìn)行操作。 通常,已編碼的幀被接收作為解碼器的第一級(基本解碼級)的輸入并進(jìn)行解碼。已解碼的幀被轉(zhuǎn)發(fā)給第一去塊器或者第二去塊器以便對其進(jìn)行去塊。在一個實施例中,基于該已解碼的幀如何分類而將該已解碼的幀轉(zhuǎn)發(fā)給第一去塊器或者第二去塊器。如果已解碼的幀被分類為第一類型幀,那么它被發(fā)送給第一去塊器;否則,已解碼的幀被分類為第二類型幀并被發(fā)送給第二去塊器。 第二去塊器的引入意味著對一些幀的去塊操作可以從主要路徑中卸下給并行的次要路徑。降低了處理時間,改善了總體性能。 本領(lǐng)域中的普通技術(shù)人員在閱讀通過各種附圖示出的詳細(xì)說明的實施例后,將理解本發(fā)明的各種實施例的這些和其他的目的和優(yōu)點。
本發(fā)明通過附圖中的例子以示意性的方式而非限制性的方式示出,在附圖中相同
附圖標(biāo)記表示相似元素。 圖l示出了宏塊陣列; 圖2是可以實現(xiàn)根據(jù)本發(fā)明實施例的解碼器的系統(tǒng)示例的框 圖3是示出根據(jù)本發(fā)明一個實施例的解碼流水線的元件的框 圖4是示出根據(jù)本發(fā)明實施例的解碼器的元件的框圖; 圖5是使用根據(jù)本發(fā)明實施例的第二去塊器處理數(shù)據(jù)的計算機(jī)實現(xiàn)方法例子的流程圖; 圖6是以適應(yīng)性方式使用根據(jù)本發(fā)明實施例的第二去塊器以處理數(shù)據(jù)的計算機(jī)實現(xiàn)方法例子的流程圖; 圖7A,7B,7C和7D示出了根據(jù)本發(fā)明實施例的能用于追蹤宏塊狀態(tài)的陣列的例子;
5
圖8是根據(jù)本發(fā)明實施例的用于對宏塊進(jìn)行去塊操作的計算機(jī)實現(xiàn)方法的例子的流程圖; 圖9是根據(jù)本發(fā)明實施例的用于識別適合進(jìn)行去塊操作的宏塊的計算機(jī)實現(xiàn)方法例子的流程圖; 圖10是根據(jù)本發(fā)明實施例的可以被去塊的無序幀的例子。
具體實施例方式
現(xiàn)在將詳細(xì)參考根據(jù)本發(fā)明的實施例,其例子示出在附圖中。雖然本發(fā)明將結(jié)合這些實施例描述,但可以理解的是它們并不是為了將本發(fā)明限定于這些實施例。相反,本發(fā)明意味著覆蓋為所附權(quán)利要求限定的本發(fā)明的精神和范圍所包括的替換、修改和等同物。另外,下面對于本發(fā)明的實施例的詳細(xì)描述中,數(shù)個特定的詳細(xì)描述的闡明是為了提供對本發(fā)明的徹底的理解。但是,本領(lǐng)域的普通技術(shù)人員可以認(rèn)識到,本發(fā)明可以省去這些詳細(xì)描述而實施。在其他例子中,為了避免不必要地模糊本發(fā)明的實施例的各個方面,公知的方法、程序、組件和電路沒有詳細(xì)描述。 接著詳細(xì)描述的一些部分用程序、步驟、邏輯框圖、流程和其他計算機(jī)存儲器中對數(shù)據(jù)位的操作其他符號表示法來表示。這些描述和表示法是數(shù)據(jù)處理領(lǐng)域的普通技術(shù)人員最有效地向本領(lǐng)域的其他普通技術(shù)人員傳達(dá)他們工作的實質(zhì)所使用的手段。這里的程序、計算機(jī)可執(zhí)行步驟、邏輯框圖、流程等通常被認(rèn)為是通往所需結(jié)果的自相容的步驟或指令序列。這些步驟是需要物理量的物理操作。通常,盡管不是必須的,但這些量仍以能在計算機(jī)系統(tǒng)中存儲、轉(zhuǎn)移、結(jié)合、比較或其他操作的電或磁信號的形式出現(xiàn)。主要為了通用的原因,用位、值、元件、標(biāo)識、字符、術(shù)語、數(shù)字等來表明這些信號被多次證明是方便的。
但是應(yīng)當(dāng)記住的是,所有這些和相似的術(shù)語是和合適的物理量聯(lián)系的,并僅僅是適用于這些量的方便的標(biāo)記。除非下面的討論中明顯特別地做其他說明,可以理解的是貫穿本發(fā)明中,利用術(shù)語例如"編碼"、"解碼"、"去塊"、"接收"、"發(fā)送"、"轉(zhuǎn)送"、"識別"、"確定"、"分類"、"比較"、"選擇"、"存儲"、"處理"、"使用"、"初始化"、"設(shè)置"、"標(biāo)識"、"訪問"、"聯(lián)合"等的討論,指的是計算機(jī)系統(tǒng)或類似電子計算設(shè)備的動作和處理,其將以物理(電子)量代表的在計算機(jī)系統(tǒng)的寄存器和存儲器中的數(shù)據(jù)操作和轉(zhuǎn)換為在計算機(jī)系統(tǒng)的存儲器和寄存器或其他這類信息存儲、傳送或顯示設(shè)備中的以物理量相似地代表的其他數(shù)據(jù)。
圖5、6、8和9是根據(jù)本發(fā)明實施例的用于處理數(shù)據(jù)的計算機(jī)實現(xiàn)方法的例子的流程圖。雖然在流程圖中公開了特定的步驟,但這些步驟只是示例性的。即,本發(fā)明的實施例非常適合于執(zhí)行各種其他步驟或流程圖中列舉的步驟的變型。 圖5、6、8和9的流程圖可以實現(xiàn)為駐留在一些計算機(jī)可使用介質(zhì)形式上的由一個或多個計算機(jī)或其他設(shè)備執(zhí)行的計算機(jī)可執(zhí)行的指令,例如程序模塊。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、目標(biāo)、組件、數(shù)據(jù)結(jié)構(gòu)等。在各種實施例中程序模塊的功能可以根據(jù)需要結(jié)合或者分配。 通過示例的方式而非限制性的方式,計算機(jī)可使用介質(zhì)可以包括計算機(jī)存儲介質(zhì)和通訊介質(zhì)。計算機(jī)存儲介質(zhì)包括以諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等的任何信息存儲的方法或技術(shù)實現(xiàn)的易失和非易失、可移除和非可移除介質(zhì)。計算機(jī)存儲介質(zhì)包括但不限于隨機(jī)訪問存儲器(RAM)、只讀存儲器(R0M)、電擦除可編程ROM (EEPROM)、閃存或其他存儲器技術(shù)、壓縮盤ROM (CD-ROM)、數(shù)字通用盤(DVD)或其他光存 儲器、磁錄音帶、磁帶、磁盤存儲器或其他磁存儲設(shè)備或任何其他可用于存儲所需信息的介 質(zhì)。 通訊介質(zhì)可具體化為計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或在調(diào)制數(shù)據(jù)信號中 的其他數(shù)據(jù),例如載波或其他運輸機(jī)制,并包括任何信息傳輸介質(zhì)。術(shù)語"調(diào)制數(shù)據(jù)信號"意 思是具存一個或多個自身特征集合的信號或者以在該信號中編碼信息形式改變的信號。通 過示例的方式而非限制性的方式,通訊介質(zhì)包括有線介質(zhì),例如有線網(wǎng)絡(luò)或直接有線連接, 和無線介質(zhì),例如聲的、射頻(RF)、紅外和其他無線介質(zhì)。任何上述的組合也應(yīng)當(dāng)包括在計 算機(jī)可讀介質(zhì)范圍內(nèi)。 圖2是可以實現(xiàn)根據(jù)本發(fā)明的解碼器的系統(tǒng)20的例子的框圖。在圖2的例子中, 該系統(tǒng)包括通過總線25與圖形處理單元(GPU)22耦合的主機(jī)中央處理單元(CPU) 21。 GPU 也可以被稱為媒體處理單元(MPU)。 CPU和GPU都與存儲器24耦合。在圖2的例子中,存 儲器是共享存儲器,憑借該存儲器為CPU和GPU存儲指令和數(shù)據(jù)。作為替換,CPU和GPU可 以分別有專有的單獨的存儲器。存儲器也可以包括視頻幀緩沖器以存儲驅(qū)動耦合的顯示器 23的像素數(shù)據(jù)。 —般來說,系統(tǒng)20包括實現(xiàn)根據(jù)本發(fā)明實施例的功能的計算機(jī)系統(tǒng)平臺的基本 組件。系統(tǒng)20可以實現(xiàn)為例如任意多個不同類型的計算機(jī)系統(tǒng)(例如膝上電腦,桌上電腦 和筆記本電腦),以及家庭娛樂系統(tǒng)(例如DVD播放器),諸如機(jī)頂盒或數(shù)字電視、便攜式或 手持電子設(shè)備(例如便攜電話、個人數(shù)字助理或手持游戲設(shè)備)或?qū)嶋H上任何其他具有顯 示能力的設(shè)備類型。 圖3是顯示根據(jù)本發(fā)明一個實施例的解碼器30的元件的框圖。通常,解碼器接收 編碼的位流31,對位流中的數(shù)據(jù)進(jìn)行解碼,并產(chǎn)生可顯示的圖像數(shù)據(jù)34。
在一個實施例中,使用一些類型的壓縮方案來壓縮原始圖像數(shù)據(jù)(例如視頻數(shù) 據(jù))以產(chǎn)生一組編碼參數(shù),例如但并不限于幀類型(例如,幀內(nèi)編碼的I幀,預(yù)測的P幀或 者雙向預(yù)測的B幀)、宏塊預(yù)測模式(例如塊間對塊內(nèi))、變換(例如離散余弦變換)系數(shù)、 紋理系數(shù)和運動矢量信息。然后使用例如Huffman編碼將編碼參數(shù)翻譯為可變長度代碼 (VLC)。編碼位流是包含VLC的序列化的位流。 解碼器本質(zhì)上是將編碼過程逆轉(zhuǎn)以重建圖像數(shù)據(jù)。在圖3的例子中,解碼器包括 解碼流水線36,解碼流水線36包括解碼級32和去塊級33。 解碼級執(zhí)行基本解碼操作,例如可變長度解碼、逆量化、逆變換和運動補(bǔ)償。通常, 解碼級解析已編碼的位流以提取VLC,再將VLC翻譯以再現(xiàn)上面指出的編碼參數(shù)。編碼參數(shù) 接著用于重建原始視頻數(shù)據(jù)(更具體地,構(gòu)建原始視頻數(shù)據(jù)的版本形式)。
去塊級應(yīng)用去塊過濾器來對宏塊進(jìn)行解碼,以當(dāng)呈現(xiàn)(顯示)重建的圖像時使相 鄰宏塊之間的邊界平滑。例如,去塊過濾器可以利用相鄰宏塊邊界處或附近的加權(quán)平均像 素值來沿著邊界混合宏塊,因此去除了在壓縮(編碼)過程中可能引入的偽像,該偽像如果 沒有去除,可能會造成重建的圖像顯示為塊狀。在一個實施例中,去塊級包括兩個去塊器, 這將在下面結(jié)合圖4做進(jìn)一步描述。 在下面的討論中,除非另外注明,"解碼器"指的是執(zhí)行解碼和去塊操作的元件(例 如,獨立的或外圍的設(shè)備或集成系統(tǒng))。除非另外注明,"解碼"指的是上面指出的基本解碼
7操作(例如,可變長度解碼、逆量化、逆變換和運動補(bǔ)償)。除非另外注明,術(shù)語"全部解碼
的數(shù)據(jù)"和"完全解碼的數(shù)據(jù)"指的是既進(jìn)行了解碼和也進(jìn)行了去塊操作的數(shù)據(jù)。 解碼流水線中的第二去塊器 圖4是顯示根據(jù)本發(fā)明一個實施例的與幀緩沖器45和顯示器46耦合的解碼器的元件的框圖。在圖4的例子中,解碼器包括解碼級32和去塊級33。去塊級包括第一去塊器41和第二去塊器42。從解碼級經(jīng)過第一去塊器的路徑可以在本文中被稱為經(jīng)過去塊流水線的主要路徑,而從解碼級經(jīng)過第二去塊器的路徑可以在本文被稱為經(jīng)過去塊流水線的次要路徑。在一個實施例中,存儲元件43耦合在解碼級的輸出和第二去塊器的輸入之間,并與第一去塊器的輸入耦合。 第一和第二去塊器的輸出存儲在幀緩沖器中。幀緩沖器的內(nèi)容可以隨后呈現(xiàn)在顯示器上和/或用于解碼另一幀。在后者的情況下,一旦幀(例如,諸如I幀或P幀或可能是B幀的參考幀,根據(jù)H. 264,B幀可以用做參考幀)被解碼,則可以依靠它對一個或多個隨后的幀(例如另外的P幀或B幀)解碼。每個由其他幀依賴用以解碼的幀可以保持在幀緩沖器中,這樣當(dāng)其他那些幀解碼時,該幀是可用的。在一些實施中,可以使用幀緩沖器以外的存儲器來存儲被依賴用于解碼其他幀的幀。 第一和第二去塊器可以彼此并行地運行,并且和解碼級并行地運行。例如,第一去塊器可以去塊一個幀,而第二去塊器去塊另一幀,同時解碼級對另外的幀進(jìn)行操作。進(jìn)一步地,在一些例子中,去塊器可以對幀的一部分操作,同時解碼級對同一幀的后續(xù)部分操作。換句話說,在一些情況下,幀中的宏塊可以被解碼,被直接輸入到第一去塊器并立即去塊,這些操作與該幀中的其他宏塊的解碼并行進(jìn)行。結(jié)合圖6,8和9來提供與立即去塊相關(guān)的附加信息。 在下面詳細(xì)說明的情況下,第二獨立的去塊器的引入意味著一些幀的去塊可以從主要路徑中卸下給并行的次要路徑。這降低了處理時間,改善了總體性能。
通常,圖4的解碼器以圖5描述的流程圖工作,圖5示出了使用根據(jù)本發(fā)明實施例的第二去塊器處理數(shù)據(jù)的計算機(jī)實現(xiàn)的方法。在圖5的塊51,已編碼的幀被接收作為解碼器的第一級(基本解碼級)的輸入。在塊52,已編碼的幀被解碼以產(chǎn)生解碼的幀(去塊之前的解碼)。 在塊53中,已解碼的幀被轉(zhuǎn)發(fā)給第一去塊器或者第二去塊器以對其去塊。在一個實施例中,基于已解碼的幀怎樣被分類而將已解碼的幀轉(zhuǎn)發(fā)給第一去塊器或者第二去塊器。如果已解碼的幀被分類為第一類型的幀,那么它被發(fā)送給第一去塊器;否則,已解碼的幀被分類為第二類型的幀并被發(fā)送給第二去塊器。結(jié)合圖6提供與幀分類有關(guān)的附件信息。 在圖5的塊54中,完全解碼(既解碼又去塊的)的幀被轉(zhuǎn)發(fā)給幀緩沖器,這樣它可以用于重建隨后的幀和/或呈現(xiàn)以觀看。
解碼流水線中的適應(yīng)性去塊 在一個實施例中,圖4的解碼器按如圖6的流程圖描述的適應(yīng)性方式運行,圖6示出了使用根據(jù)本發(fā)明實施例的第二去塊器處理數(shù)據(jù)的計算機(jī)實現(xiàn)的方法。在塊61,解碼器訪問已編碼的幀。 在塊62中,確定該幀是"有序幀"還是"無序幀"。如本文使用的,有序幀是包含按規(guī)定次序排列的宏塊的幀,如果幀中的宏塊排列滿足特定預(yù)定的次序,那么幀被分類為有 序幀;否則,幀被分類為無序幀。使用本文前述的靈活宏塊排序(FM0)和/或任意片排序 (AS0)進(jìn)行編碼的幀是無序幀的例子。 幀頭中可以不包括用于識別幀是FM0/AS0幀或是相對于無序幀的有序幀的信息。 但是,在一個實施例中,與幀中每個宏塊相關(guān)的宏塊編號可以以將要描述的方式用于推導(dǎo) 幀是有序幀還是無序幀。 —般來說,宏塊編號與宏塊編碼的次序一致。例如,宏塊可以從幀中最左上的宏塊 開始,從左至右和從上至下單調(diào)遞增地連續(xù)編號。宏塊也通常從幀中最左上的宏塊開始,從 左至右和從上至下(有時稱為"光柵掃描次序")進(jìn)行編碼。因此,如果已編碼幀中的宏塊 由解碼器按它們編碼的次序接收,那么幀中的宏塊編號將是有序的。 因此,在一個實施例中,如果幀的編碼版本形式(相應(yīng)地幀的解碼版本形式)中的 宏塊編號是按數(shù)字次序的,那么幀是有序幀;否則,幀是無序幀。在一個實施例中,當(dāng)解碼器 接收幀中的宏塊("目標(biāo)宏塊",也在本文中稱為"當(dāng)前宏塊")時,解碼器將目標(biāo)宏塊的宏 塊編號與在目標(biāo)宏塊之前剛剛接收的宏塊的宏塊編號比較。換句話說,解碼器可以以解碼 器接收宏塊的次序來比較宏塊的宏塊編號,如下 如果對于所有i = 0, 1,......, N-l, MB_IDi+1 = MB_IDi+l,那么幀是有序的; 否則,幀是無序的; 其中"MB_ID"是宏塊編號,"i "對應(yīng)宏塊接收的次序,"N"是該幀中的宏塊編號。
繼續(xù)參考圖6,如果幀被分類為無序幀,那么流程圖進(jìn)行到塊63 ;否則,流程圖前 進(jìn)到塊64。 在塊63中,確定無序幀是"參考幀"或"非參考幀"。如本文使用的,參考幀是由另 外幀依賴得以解碼的幀。I幀和P幀(有時稱為I圖片和P圖片)是參考幀的例子。根據(jù) 11.264,8幀可以用作參考幀。如本文使用的,非參考幀是不作為參考幀的幀。B幀(或B圖 片)是非參考幀的一個例子。與每個幀相關(guān)的幀頭通常包括識別一個幀是I幀,P幀還是B 幀的信息。 如果幀被分類為參考幀,那么流程圖進(jìn)行到塊64 ;否則,流程圖進(jìn)行到塊65。
在塊64中,使用圖4的第一去塊器對有序的參考幀或有序的非參考幀完全解碼 (基本解碼外加去塊操作)。即,該幀被"立刻"去塊,相比無序的非參考幀的處理方式(參 看圖6的塊65,66和67),該幀不需要在去塊前存儲在存儲器中。 如果該幀是有序的參考幀或有序的非參考幀,那么隨著幀被解碼,去塊操作也發(fā) 生。 一般來說,為了被分類為有序幀,幀中的所有宏塊都是如上所述的有序的。返回來參考 圖1 ,為了對宏塊Ml進(jìn)行去塊操作,來自宏塊M2和M3 (例如,該宏塊左邊最近的鄰居和/或 該宏塊上面最近的鄰居)的信息被利用。作為普遍規(guī)則,在有序幀中,在宏塊Ml準(zhǔn)備好進(jìn) 行去塊操作前,宏塊M2和宏塊M3將被解碼和去塊,而不管幀中宏塊Ml的位置如何。
—般來說,在有序幀中,對特定宏塊進(jìn)行去塊操作所依賴的該宏塊將被及時解碼 和去塊,以對該特定宏塊進(jìn)行去塊操作。因此,有序幀可以立即去塊——這是由于該幀中的 每個宏塊被解碼,已解碼的宏塊可以直接轉(zhuǎn)發(fā)給第一去塊器并在基本解碼后主即去塊。
當(dāng)處理有序幀時,可以對一個宏塊進(jìn)行去塊操作同時對下一宏塊進(jìn)行解碼。相似 地,一旦一個幀中所有的宏塊已被解碼,即使當(dāng)前一幀的宏塊正在進(jìn)行去塊操作,流水線的解碼級也可以開始對下個幀中的宏塊進(jìn)行解碼。即,去塊級可以處理一個幀中后面的宏塊,同時解碼級正在處理下一幀的第一個宏塊。 在圖6的塊65中,無序的非參考幀被解碼(僅進(jìn)行基本解碼)。在這一點上,圖4中的解碼級變?yōu)榭梢杂糜陂_始解碼下一幀。 在圖6的塊66中,已解碼的無序的非參考幀可選擇地存儲在圖4的存儲元件43中。當(dāng)該幀是無序的非參考幀時,需要將該幀中的一些或所有已解碼的宏塊進(jìn)行存儲,直到對這些宏塊進(jìn)行去塊操作所需的其他宏塊也被解碼。另外,不用依賴非參考幀來解碼另一幀,因此如果基于一些原因是有利的話,也可以推遲去塊操作。在塊67中,使用圖4的第二去塊器對無序的非參考幀進(jìn)行去塊操作。 這樣,在對無序的非參考幀的基本解碼完成后,將已解碼的數(shù)據(jù)傳送給第二去塊器以進(jìn)行去塊操作。同時,主要解碼路徑可用于解碼下一幀。即,當(dāng)無序的非參考幀進(jìn)行去塊操作時,下一幀可以與該去塊操作并行地(時間上重疊)被解碼。通過這種方式,非參考幀的解碼,甚至是啟用了 FM0/AS0,也可以和有序幀解碼一樣快地執(zhí)行。通常,視頻序列中的大部分幀是非參考幀。因此,通過以可與有序解碼相比的速率來處理非參考幀,可以顯著提高解碼流水線的總體性能。 總結(jié)圖6的實施例,如果已解碼的幀被分類為參考幀(不管該幀中的宏塊是有序的還是無序的),那么已解碼的幀被直接發(fā)送給第一去塊器以立刻進(jìn)行去塊操作。如果已解碼的幀被分類為有序的非參考幀,那么已解碼的幀也被直接發(fā)送給第一去塊器以立刻進(jìn)行去塊操作。此外,如果已解碼的幀被分類為無序的非參考幀,那么它將被發(fā)送給第二去塊器。換句話說,根據(jù)剛剛描述的實施例,第一去塊器對參考幀(有序或無序)和有序的非參考幀進(jìn)行去塊操作,第二去塊器對無序的非參考幀進(jìn)行去塊操作。 這樣,根據(jù)本發(fā)明的實施例,除了區(qū)分參考和非參考幀外,還可能區(qū)分有序和無序幀。換句話說,基于實時輸入數(shù)據(jù),檢測(更具體地,推導(dǎo))運行中的AS0/FM0編碼并適用相應(yīng)的解碼方法(具體地,去塊方法)是可能的。在幀中的片的到達(dá)次序不能保證的通訊應(yīng)用中,AS0/FM0的實時檢測對于在通訊應(yīng)用中獲得低延遲處理是尤其重要的。本文描述的實施例可以當(dāng)不使用AS0/FM0時執(zhí)行有序解碼,并在使用AS0/FM0時降低處理延遲,而無需提前知道是否使用AS0/FM0。 根據(jù)本發(fā)明的實施例,在解碼流水線中引入了第二去塊器,因此對一些類型的幀,去塊任務(wù)可以從主要解碼路徑(包括第一去塊器的路徑)中卸下給并行的次要路徑(包括第二去塊器的路徑)。結(jié)果,第一去塊器被有效地預(yù)留以對更重要的幀(例如參考幀)進(jìn)行去塊操作。結(jié)果,對更重要幀進(jìn)行的去塊操作可以更快地執(zhí)行。另外,第一去塊器也有效地被預(yù)留以對可以立即去塊的幀(例如有序幀)進(jìn)行去塊操作。由于立即去塊是隨著宏塊被解碼而完成的,因此使用第一去塊器來立即去塊不會給解碼流水線帶來任何延遲。
通過利用兩個去塊器來處理不同類型的幀,由于解碼和去塊可以使用對每個特定幀類型來說最快的流水線路徑來完成,因此幀解碼和去塊操作可以總體上更快地完成。另外,對參考幀和有序幀使用立即去塊操作,由于不需要像常規(guī)雙通道實現(xiàn)方式那樣來存儲和取出數(shù)據(jù),因此降低了數(shù)據(jù)總線的通訊量并降低了存儲數(shù)據(jù)的量。 一般來說,第二去塊器的使用改善了總體解碼器性能。 第二去塊器并非必須使用專用處理器或其他專用硬件資源來實現(xiàn)。第二去塊器可以使用例如空閑的GPU或CPU來實現(xiàn)。換句話說,如果不是在大多數(shù)場合下而僅僅是在某
些場合下,第二去塊器可以不作用于關(guān)鍵時間幀,因此當(dāng)現(xiàn)存的硬件資源可用時,它的功能
可以使用這些資源來提供。 幀中宏塊的立即去塊操作 在上面圖6的討論中,參考幀和有序的非參考幀可以立即(緊接在解碼之后)進(jìn) 行去塊操作,但是無序的非參考幀在隨后的時間被解碼、存儲并去塊。但是,在被分類為無 序幀的幀中,可以有有序的宏塊序列。在一些情況下,無序幀中的有序宏塊序列可以立即進(jìn) 行去塊操作。 具體地,當(dāng)幀中的特定宏塊之前的所有宏塊已經(jīng)被解碼和去塊(完全解碼)時,該 幀中的該特定宏塊可以被去塊。另一方面,如果特定宏塊之前的宏塊不是所有都被完全解 碼,那么該特定宏塊被存儲并隨后重載,以便當(dāng)之前所有的宏塊已完全解碼時對該特定宏 塊以相似于上述的幀水平的方式進(jìn)行去塊操作。在宏塊被去塊后,它能接著用于對跟隨的 已經(jīng)解碼但沒有去塊的宏塊進(jìn)行去塊操作,該跟隨的宏塊接著用于對另外的跟隨的已經(jīng)解 碼但沒有去塊的宏塊進(jìn)行去塊操作,以此類推,直到所有適合去塊的宏塊被去塊為止。
圖7A是能用于追蹤幀中宏塊的去塊狀態(tài)的陣列70的例子。該陣列包括該幀中每 個宏塊的位值。位值設(shè)置為識別哪些宏塊已經(jīng)解碼但沒有去塊。如果宏塊的該位沒有被設(shè) 置,那么該宏塊要么還沒有被解碼,要么還沒有被解碼和去塊。換句話說,將該位設(shè)置為識 別作為進(jìn)行去塊操作的候選者的宏塊。 在圖7A的例子中,該陣列包括4x3的位值陣列。圖7A只表示了視頻數(shù)據(jù)幀的一 部分;通常,幀包括多于12個宏塊。首先,將所有位值設(shè)置為相同的二進(jìn)位值(例如零)。 在幀已完全解碼后,將該陣列重新初始化。 圖7B是在稍后當(dāng)宏塊M0,M1,M2和M3已經(jīng)解碼和去塊后該陣列的例子。在圖7B 的例子中,宏塊MO, Ml, M2和M3在相同的片(片Sl)中,并由解碼器以它們被編碼的次序 (例如,以下列次序M0,M1,M2,M3)接收。由于宏塊MO不依賴當(dāng)前幀的另一宏塊進(jìn)行去塊 操作,因此它可以被解碼并立即去塊。使用圖4的第一去塊器沿著通過解碼流水線的主要 路徑來執(zhí)行立即去塊操作。 因為在當(dāng)前幀中宏塊M1只依賴宏塊MO以進(jìn)行去塊操作,因此宏塊M1可以被解碼 并使用第一去塊器立即去塊。 一般來說,對宏塊M1進(jìn)行去塊操作所需的所有宏塊已被解碼 和去塊。換句話說,在編碼次序中所有先于宏塊M1的宏塊已被接收和去塊。相同的概括也 適用于宏塊M2和M3,因此這些宏塊也被解碼并使用第一去塊器立即去塊。在圖中,星號用 于表示宏塊M0,M1,M2和M3已經(jīng)被解碼和去塊。在實際應(yīng)用中,無需做這樣的區(qū)分。
跟隨片Sl,包括宏塊M6和M7的片S2在解碼器處被接收。即,宏塊沒有按次序接 收。由于在編碼次序中并不是所有先于宏塊M6和M7的宏塊(例如宏塊M4和M5)都已被 接收和去塊,因此宏塊M6和M7可以被解碼但不能去塊。相應(yīng)地,對應(yīng)于宏塊M6和M7的位 值在陣列中被設(shè)置(例如設(shè)置為值1),如圖7C所示。此外,已解碼的宏塊M6和M7存儲在 存儲器(例如圖4的存儲元件43)中。 跟隨片S2,包括宏塊M8和M9的片S3在解碼器處被接收。由于并不是所有先于 宏塊M8和M9的宏塊都已被接收和去塊(在這點上,宏塊M4和M5還沒有被去塊),因此宏 塊M8和M9可以被解碼但不能去塊。相應(yīng)地,對應(yīng)于宏塊M8和M9的位值在陣列中被設(shè)置
11(例如設(shè)置為值1),如圖7D所示。 跟隨片S3,包括宏塊M4和M5的片S4在解碼器處被接收。由于在編碼次序中所有 先于宏塊M4的宏塊(即宏塊M0,M1,M2和M3)已被解碼和去塊,因此宏塊M4可以被解碼并 由第一去塊器立即去塊。在宏塊M4被去塊后,宏塊M5可以被解碼并由第一去塊器立即去 塊。 另外,一旦宏塊M5被去塊,所有先于宏塊M6的宏塊現(xiàn)在都已被去塊,因此宏塊M6 可以從存儲器中取出并被去塊。在這種情況下,宏塊M6使用圖4的第一去塊器沿著通過解 碼流水線的主要路徑進(jìn)行去塊操作。 一旦宏塊M6被去塊,宏塊M7可以從存儲器中取出并 使用第二去塊器去塊,以此類推直到宏塊M9。在這個例子中,由于宏塊M10和M11本身還沒 有被接收和解碼,因此盡管所有在先宏塊斗已經(jīng)被解碼和去塊,宏塊M10和Ml 1此時也還沒 有被去塊。 一旦接收到宏塊M10和Ml 1 ,它們可以被解碼并使用圖4中的第一去塊器立即去 塊。 根據(jù)剛剛討論的實施例,宏塊可以具有以下三種狀態(tài)中的一種沒有被解碼(不 完全的基本解碼);已解碼但沒有去塊;以及已解碼和去塊。但是,由于使用陣列來識別作 為去塊操作候選的宏塊(已經(jīng)解碼但沒有去塊的那些宏塊),因此只需要具有兩個狀態(tài)的 一個二進(jìn)制位來指示每個宏塊的狀態(tài)。為了識別要進(jìn)行去塊操作的宏塊,沒有必要在已經(jīng) 解碼和去塊的宏塊中區(qū)分沒有解碼的宏塊。 圖8是根據(jù)本發(fā)明實施例的對宏塊進(jìn)行立即去塊操作的計算機(jī)實現(xiàn)的方法的流 程圖。在塊81中,變量"Last—Db—MB"(最后去塊的宏塊)被初始化為值-l(負(fù)1)。圖7A 的陣列也如本文前述被初始化。 在塊82中,取得當(dāng)前宏塊M的宏塊編號("MB_ID")。在塊83中,將MB_ID的值與 Last_Db_MB的值加1 (Last_Db_MB+l)相比較。實際上,塊83用于確定該宏塊是有序接收還 是無序接收,如果是有序,則確定之前緊鄰的宏塊M-l是否完全解碼(解碼并去塊)。如果 MB_ID的值和Last_Db_MB+l的值相等,那么當(dāng)前宏塊M是跟隨被去塊了的最后宏塊Last_ Db_MB的下個宏塊,即當(dāng)前宏塊M的宏塊編號和最后去塊的宏塊Last_Db_MB的宏塊編號是 連續(xù)編號,流程圖進(jìn)行到塊87。否則,宏塊是無序接收或者當(dāng)前宏塊M不是跟隨最后去塊的 宏塊Last_Db_MB的下個宏塊,即當(dāng)前宏塊M與最后去塊的宏塊Last_Db_MB隔開一個或多 個沒有被去塊的宏塊,流程圖進(jìn)行到塊84。 在塊84中,當(dāng)前宏塊M被解碼(但沒有被去塊),解碼數(shù)據(jù)被保存(例如在圖4的 存儲元件43中)。在塊85中,當(dāng)前宏塊M被標(biāo)記為正在被解碼但沒有去塊。在一個實施例 中,如上面結(jié)合圖7A-7D描述的,對應(yīng)于當(dāng)前宏塊M的位值在陣列中被設(shè)置。
在圖8的塊86中,如果當(dāng)前宏塊M不是該幀中的最后宏塊,那么流程圖返回到塊 82(除非有某種錯誤,在這點上,圖8的流程圖將始終返回到塊82)。 在塊87中,當(dāng)前宏塊M被解碼并使用圖4的第一去塊器立即去塊。如上面討論的, 如果在編碼次序中該宏塊先前的所有宏塊已被去塊,則該宏塊可以被去塊。如果當(dāng)前宏塊 M之前緊鄰的宏塊M-1已經(jīng)被去塊(如流程圖的塊83所確定的),那么當(dāng)前宏塊M可以被 去塊。換句話說,為了去塊,宏塊M-1將要滿足所有在先的宏塊都已經(jīng)去塊的條件;由于當(dāng) 前宏塊M緊跟隨宏塊M-l,因此它也將滿足該條件。 在圖8的塊88中,其他符合條件的宏塊從存儲器中取出并使用圖4的第二去塊器
12去塊。即,如果宏塊M+1先前已經(jīng)被解碼和存儲,則在編碼次序中緊跟隨當(dāng)前宏塊M的宏塊
M+l也可以被去塊。 一旦宏塊M+1被去塊,在編碼次序中緊跟隨宏塊M+1的宏塊M+2如果先
前已經(jīng)被解碼和存儲,則宏塊M+2可以被去塊,以此類推。在一個實施例中,每個適合去塊
的宏塊在陣列中被標(biāo)識,如圖7A-7D的陣列。結(jié)合圖9在下面提供另外的信息。 在圖8的塊89中,如果當(dāng)前宏塊M(現(xiàn)在等同于最后已去塊的宏塊Last_Db_MB)
不是幀中的最后宏塊,那么流程圖返回到塊82。否則,該幀被完全解碼。 圖9是根據(jù)本發(fā)明的實施例對適合的宏塊進(jìn)行去塊操作的計算機(jī)實現(xiàn)的方法的
流程圖。在塊91中,該幀中的第N個宏塊被去塊,其他適合去塊的宏塊被識別。在一個實
施例中,訪問如圖7A-7D所示陣列的陣列以識別適合的宏塊。 在圖9的塊92中,將最后(最近的)已去塊的宏塊(塊91中已去塊的宏塊)的 宏塊編號加l(N = N+l)。在塊93中,如果當(dāng)前N的值大于該幀中最后宏塊的宏塊編號,那 么流程圖前進(jìn)到塊95 ;否則,流程圖進(jìn)行到塊94。 在塊94中,讀取陣列中對應(yīng)于當(dāng)前宏塊的位值。如果該位值被設(shè)置(例如等于 1),那么當(dāng)前宏塊可以被去塊,流程圖返回到塊91,當(dāng)前宏塊被去塊。否則,流程圖進(jìn)行到塊 95。 在塊95中,Last_Db_MB(如上定義)的值設(shè)置為當(dāng)前N的值減1 (N_l) , Last_Db_ MB的值被返回并如結(jié)合圖8描述的那樣被利用。 因此,根據(jù)本發(fā)明的實施例,宏塊在它們一適合去塊時就可以被去塊。對于在無序 幀中(例如AS0/FM0)的一些宏塊,可以實現(xiàn)立即去塊。相應(yīng)地,由于不必要將這樣的幀中 的所有宏塊都轉(zhuǎn)移到存儲器中或從存儲器中轉(zhuǎn)移出來,因此可以降低總線通訊量,也可以 降低消耗的存儲器量。另外,由于解碼和去塊可以并行完成,即當(dāng)一個宏塊解碼時,另一宏 塊可以去塊,因此可以降低計算時間。 例如,圖IO示出了一部分幀,其中第一片(使用陰影塊表示)中的宏塊與第二片 (使用非陰影塊表示)中的宏塊以棋盤式樣分布。首先將第一片發(fā)送到解碼器,接著發(fā)送 第二片——因此該幀是AS0/FM0幀。在解碼期間,第一 (左上)宏塊Ma可以立即去塊,但 是其他陰影塊在去塊之前被存儲。當(dāng)?shù)诙?(非陰影)片中的宏塊被解碼時,第二片中的每 個宏塊可以在其被解碼后立即被去塊,第一片中的每個宏塊可以從存儲器中按次序取出并 去塊。更具體地,由于宏塊Mb僅依賴正被去塊的宏塊Ma,因此宏塊Mb可以被立即去塊;然 后可以從存儲器中取出宏塊Mc并去塊;宏塊Md可以立即去塊,以此類推。因此,在去塊之 前,不需要存儲第二片中的宏塊;只有第一片中的宏塊(除了宏塊Ma)在去塊之前被存儲。 因此,在這個例子中,該幀中少于一半的宏塊在去塊之前被存儲,沿著總線來回存儲器的通 訊量也降低了大約一半。 由于完成運動補(bǔ)償會比去塊消耗更多的時間,因此解碼流水線的去塊級有時可能
是空閑的(例如,它可能缺乏數(shù)據(jù))。但是,由于實現(xiàn)了立即去塊,去塊級可以使用空閑時間
來處理存儲的宏塊,相比慣常的雙通道實現(xiàn)方式,降低了總的解碼時間。 另外,AS0/FM0幀可以在運行中被檢測。在解碼有序幀時獲得了至少與慣常實現(xiàn)方
式相同性能的同時,也顯著改進(jìn)了對無序幀的解碼。此外,單解碼器架構(gòu)可以用于處理有序
/無序的參考/非參考幀——基于要處理的幀的類型來適應(yīng)性地選擇經(jīng)過解碼器的路徑。 為了示例和描述的目的,本發(fā)明已經(jīng)通過上述特定實施例進(jìn)行了展示。它們并非意在詳盡地和限定本發(fā)明的公開的精確的形式,根據(jù)上述教導(dǎo)還可以做出更多種的變型和 修改。選擇和描述的實施例是為了最好地解釋本發(fā)明的原理和它的實際應(yīng)用,并使其他本 領(lǐng)域的普通技術(shù)人員最好地利用本發(fā)明和各種具有各種適用于特定使用目的改變的實施 例。本發(fā)明的保護(hù)范圍由附屬的權(quán)利要求書及其等效范圍所界定。
權(quán)利要求
一種用于對已編碼的數(shù)據(jù)幀進(jìn)行解碼的解碼器,所述解碼器包括解碼器第一級,可操作對已編碼的第一幀進(jìn)行解碼以產(chǎn)生解碼的第一幀;和解碼器第二級,耦合于所述第一級的下游,所述第二級包括可操作用于并行地對已編碼的幀進(jìn)行去塊操作的第一去塊器和第二去塊器。
2. 根據(jù)權(quán)利要求1所述的解碼器,其中幀類型與所述已解碼的第一幀關(guān)聯(lián),其中基于 所述幀類型,將所述已解碼的第一幀發(fā)送給所述第一去塊器和第二去塊器其中之一。
3. 根據(jù)權(quán)利要求2所述的解碼器,其中如果所述已編碼的第一幀中的宏塊以特定次序 到達(dá)所述解碼器,那么所述已解碼的第一幀被識別為有序幀,否則所述已解碼的第一幀被 識別為無序幀;并且其中如果另一幀依賴所述已解碼的第一幀的信息進(jìn)行解碼,那么所述 已解碼的第一幀被識別為參考幀,否則所述已解碼的第一幀被識別為非參考幀;另外其中 如果所述已解碼的第一幀被分類為無序的非參考幀,那么將所述已解碼的第一幀發(fā)送給所 述第二去塊器,否則將所述已解碼的第一幀發(fā)送給所述第一去塊器。
4. 根據(jù)權(quán)利要求3所述的解碼器,其中所述已編碼的第一幀包括多個宏塊,所述宏塊 具有分別與其關(guān)聯(lián)的宏塊編號,其中如果所述宏塊以所述宏塊編號連續(xù)且增加的次序到達(dá)所述解碼器,那么所述已解碼的第一幀被識別為有序幀。
5. 根據(jù)權(quán)利要求1所述的解碼器,進(jìn)一步包括存儲元件,所述存儲元件與所述第二去 塊器耦合并可操作以在去塊之前存儲已解碼的幀。
6. 根據(jù)權(quán)利要求1所述的解碼器,其中所述解碼器第一級可操作以與所述已解碼的第 一幀的去塊操作并行地來對已編碼的第二幀進(jìn)行解碼。
7. 根據(jù)權(quán)利要求1所述的解碼器,其中所述解碼器第一級可操作以執(zhí)行選自下列中的 操作可變長度解碼、逆量化、逆變換和運動補(bǔ)償。
8. —種處理已編碼的數(shù)據(jù)幀的計算機(jī)實施的方法,所述方法包括 接收已編碼的第一幀作為解碼器的第一級的輸入;在所述第一級中對所述已編碼的第一幀進(jìn)行解碼以產(chǎn)生解碼的第一幀; 將已解碼的第一幀從所述第一級轉(zhuǎn)發(fā)給所述解碼器的第二級,其中所述第二級包括可操作用于并行地對已解碼的幀進(jìn)行去塊操作的第一去塊器和第二去塊器;在所述第二級中對所述已解碼的第一幀進(jìn)行去塊操作,以產(chǎn)生適合呈現(xiàn)在顯示設(shè)備上的已解碼并已去塊的第一幀。
9. 根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括如果所述已編碼的第一幀中的宏塊是按照規(guī)定的次序,那么識別所述已解碼的第一幀 為有序幀,否則識別所述已解碼的第一幀為無序幀;如果另一幀依賴所述已解碼的第一幀的信息進(jìn)行解碼,那么識別所述已解碼的第一幀 為參考幀,否則識別所述已解碼的第一幀為非參考幀;禾口如果所述已解碼的第一幀被分類為無序的非參考幀,那么將所述已解碼的第一幀轉(zhuǎn)發(fā) 給所述第二去塊器,否則將所述已解碼的第一幀轉(zhuǎn)發(fā)給所述第一去塊器。
10. 根據(jù)權(quán)利要求8所述的方法,其中所述已編碼的第一幀包括多個以特定次序編碼 的宏塊,其中所述方法進(jìn)一步包括如果所述宏塊以不同于該編碼的特定次序到達(dá)所述解碼器,且如果所述已解碼的第一 幀被識別為非參考幀,那么將所述已解碼的第一幀發(fā)送給所述第二去塊器,其中如果一幀不被另一幀所依賴用于解碼,那么該幀被識別為非參考幀;禾口 否則,將所述已解碼的第一幀發(fā)送給所述第一去塊器。
11. 根據(jù)權(quán)利要求io所述的方法,其中所述宏塊的每個具有分別與其關(guān)聯(lián)的宏塊編號,其中該多個所述宏塊以宏塊編號增加的次序進(jìn)行編碼。
12. 根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括在進(jìn)行去塊之前存儲一個或多個已解碼 的幀。
13. 根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括與所述已解碼的第一幀的去塊操作并行 地對已編碼的第二幀進(jìn)行解碼。
14. 根據(jù)權(quán)利要求8所述的方法,其中所述解碼包括選自下列中的操作可變長度解 碼、逆量化、逆變換和運動補(bǔ)償。
15. —種用于對已編碼的數(shù)據(jù)幀進(jìn)行解碼的解碼器流水線,所述解碼器流水線包括 解碼級,可操作以對已編碼的幀進(jìn)行解碼;禾口去塊級,所述去塊級與所述解碼級耦合,并包括可操作以對已解碼的幀進(jìn)行去塊操作 的第一去塊器和第二去塊器,其中已解碼的參考幀使用所述第一去塊器而不是所述第二去 塊器進(jìn)行去塊操作,其中基于已解碼的非參考幀的所述編碼版本形式中的宏塊次序來選擇 所述第一去塊器和所述第二去塊器中之一,用于對所述已解碼的非參考幀進(jìn)行去塊操作, 其中如果一幀被另一幀所依賴用于解碼,那么該幀被分類為參考幀,否則該幀被分類為非 參考幀。
16. 根據(jù)權(quán)利要求15所述的解碼器流水線,其中如果以所述已編碼版本形式的所述宏 塊是按照特定的次序,那么所述已解碼的非參考幀被識別為有序幀,否則所述已解碼的非 參考幀被識別為無序幀,其中如果所述已解碼的非參考幀被分類為有序幀,那么將所述已 解碼的非參考幀發(fā)送給所述第一去塊器,如果所述已解碼的非參考幀被分類為無序幀,那 么將所述已解碼的非參考幀發(fā)送給所述第二去塊器。
17. 根據(jù)權(quán)利要求15所述的解碼器流水線,其中如果以所述編碼版本形式的所述宏塊 按照所述宏塊編號連續(xù)且增加的次序到達(dá)所述解碼器,那么所述已解碼的非參考幀被識別 為有序幀,否則所述已解碼的非參考幀被識別為無序幀,其中如果所述已解碼的非參考幀 被分類為有序幀,那么將所述已解碼的非參考幀發(fā)送給所述第一去塊器,如果所述已解碼 的非參考幀被分類為無序幀,那么將所述已解碼的非參考幀發(fā)送給所述第二去塊器。
18. 根據(jù)權(quán)利要求15所述的解碼器流水線,進(jìn)一步包括存儲元件,所述存儲元件與所 述第二去塊器耦合并可操作以在去塊之前存儲已解碼的幀。
19. 根據(jù)權(quán)利要求15所述的解碼器流水線,其中所述解碼級可操作以處理已編碼的 幀,同時并行的,所述去塊級可操作以處理已解碼的幀。
20. 根據(jù)權(quán)利要求15所述的解碼器流水線,其中所述解碼級可操作以執(zhí)行選自下列中 的操作可變長度解碼、逆量化、逆變換和運動補(bǔ)償。
全文摘要
本發(fā)明公開了解碼流水線中的第二去塊器。解碼器可以包括能用于解碼(先于去塊)編碼的數(shù)據(jù)幀的第一級。給解碼器也可以包括在該第一級下游的第二級。該第二級包括第一去塊器和能用于并行地去塊已解碼的幀的第二去塊器。
文檔編號H04N7/26GK101729895SQ200910180428
公開日2010年6月9日 申請日期2009年10月14日 優(yōu)先權(quán)日2008年10月14日
發(fā)明者賈瑋 申請人:輝達(dá)公司