本申請是申請日為2011年12月28日、題為“使用列的圖像分割方法和系統(tǒng)”的發(fā)明專利申請201180062299.8的分案申請。
本申請要求2010年12月28日提交的、標(biāo)題為"picturesegmentationusinggeneralizedslices”的美國臨時專利申請序列號61/427,569以及2011年12月23日提交的、標(biāo)題為“methodandsystemforpicturesegmentationusingcolumns”的美國專利申請?zhí)?3/336,675的優(yōu)先權(quán),以引用的方式將以上每個申請的全文并入本申請中。
本發(fā)明的實施方式涉及視頻編碼,并且更具體而言涉及將編碼圖像分割成一個或多個列或片。
背景技術(shù):
可以將數(shù)字視頻能力包括在范圍廣泛的設(shè)備中,包括數(shù)字電視機、數(shù)字直接廣播系統(tǒng)、無線廣播系統(tǒng)、個人數(shù)字助理(pda)、膝上型計算機或桌上型計算機、攝像機、數(shù)字記錄設(shè)備、視頻游戲設(shè)備、視頻游戲控制臺、蜂窩或衛(wèi)星無線電話等等。數(shù)字視頻設(shè)備可以實現(xiàn)視頻壓縮技術(shù),如諸如mpeg-2、mpeg-4的標(biāo)準中所述的那些視頻壓縮技術(shù),其中,可以從位于瑞士ch—1211日內(nèi)瓦20,郵政信箱56,voie-creuse第一大道的國際標(biāo)準組織(“iso”)或www.iso.org或itu-th.264/mpeg-4第十部分,高級視頻編碼(“avc”)獲得,從位于瑞士ch-1211日內(nèi)瓦20萬國宮廣場的國際電信聯(lián)盟(“itu'’)或www.im.int獲得mpeg-2、mpeg-4標(biāo)準,以引用的方式將以上每個標(biāo)準的全文并入本申請中,或者根據(jù)其他標(biāo)準或非標(biāo)準規(guī)范實現(xiàn)視頻壓縮技術(shù),以有效地編碼并且/或者解碼數(shù)字視頻信息。
視頻編碼器可以接收未編碼視頻信息以便處理成任意合適的格式,該格式可以是符合(可從位于瑞士ch-1211日內(nèi)瓦20萬國宮廣場的國際電信聯(lián)盟(“itu'’)或wvw.訌u.int獲得的并且以引用的方式全文并入本申請的)itu-rbt6016勺數(shù)字格式或者一些其他數(shù)字格式。可以將未編碼視頻在空間上組織成配置在一個或多個二維矩陣中的像素值并且在時間上組織成一系列未編碼圖像,其中,每個未編碼圖像包括一個或多個上述提到的二維像素值矩陣。此外,每個像素可以包括用于以數(shù)字格式表示色彩的多個獨立的分量。用于被輸入到視頻編碼器的未編碼視頻的一個常用格式對于具有四個像素的每個分組具有四個輝度樣本和兩個色度樣本,其中,該輝度樣本包括關(guān)于像素的亮度/光亮或黑暗的信息,該色度樣本包括顏色信息(例如ycrcb4:2:0)。
視頻編碼器的一種功能是將未編碼圖像轉(zhuǎn)譯(更普遍而言“轉(zhuǎn)換”)成比特流、分組流、nal單元流或其他合適的傳輸格式(全都被在今后稱為“比特流”),其目標(biāo)在于例如降低編碼到比特流中的冗余的數(shù)量以由此增加傳輸速率,增加比特流的恢復(fù)能力以抑制在傳輸期間可能發(fā)生的比特錯誤或分組擦除(統(tǒng)稱為“差錯恢復(fù)能力”)或其他專用目標(biāo)。本發(fā)明的實施方式具備以下之中的至少一個:冗余的去除或降低、差錯恢復(fù)能力的增加以及并行處理架構(gòu)中的視頻編碼器和/或相關(guān)解碼器的實現(xiàn)。
視頻解碼器的一個功能在于接收由符合相同的視頻壓縮標(biāo)準的視頻編碼器產(chǎn)生的比特流形式的編碼視頻作為它的輸入。視頻編碼器然后將接收編碼比特流轉(zhuǎn)譯(更普遍而言“轉(zhuǎn)換”)成可以被顯示、存儲或以其它方式處理的未編碼視頻信息。
可以使用包括硬件和軟件的組合的硬件和/或軟件配置實現(xiàn)視頻編碼器和視頻解碼器。視頻編碼器和視頻解碼器中的任意一個或兩個的實現(xiàn)可以包括可編程硬件組件如(如個人計算機(pc)中發(fā)現(xiàn)的那些)通用中央處理器cpu、嵌入式處理器、圖形卡處理器、數(shù)字信號處理器(dsp)、現(xiàn)場可編程門陣列(fpga)等等的使用。為了實現(xiàn)視頻編碼或解碼的至少一部分,可能需要指令,并且可以使用一個或多個非瞬態(tài)的計算機可讀介質(zhì)存儲并且分配那些指令。計算機可讀介質(zhì)選擇包括壓縮盤只讀存儲器(cd-rom)、數(shù)字視頻盤只讀存儲器(dvd-rom)、記憶棒、嵌入式rom等等。
在下文中,將描述與視頻壓縮和解壓縮的至少一個廣義方案(即視頻編碼器和/或解碼器中執(zhí)行的操作)關(guān)聯(lián)的特定系統(tǒng)、方法和/或方案。視頻解碼器可以執(zhí)行與編碼操作相逆的操作的全部或子集。若非另外注釋,則本文所述的視頻編碼技術(shù)還適用于包括所述視頻編碼技術(shù)的逆向(即與視頻解碼相關(guān)聯(lián))。
可以將未壓縮的數(shù)字表示的視頻視為樣本流,其中,可以由視頻顯示器在掃描次序中處理樣本。在該樣本流中通常出現(xiàn)的一種類型的邊界是樣本流的圖像之間的邊界。許多視頻壓縮標(biāo)準識別該邊界并且通常例如通過在每個未編碼圖像的開頭插入圖像報頭或其他元數(shù)據(jù)來分割在這些邊界上的編碼比特流。
對于一些應(yīng)用,將編碼圖像分割成更小的數(shù)據(jù)塊可能是有利的,其中,該分割可以發(fā)生在編碼之前或期間。下文描述了可以受益于圖像分割的兩個使用情況。
第一種該使用情況涉及并行處理。在以前,標(biāo)清視頻(例如720x480或720x576個像素)是廣泛的商業(yè)使用中的最大格式。最近,出現(xiàn)并且在各種各樣的應(yīng)用空間使用(高達1920x1080個像素的)hd格式以及4k(4096x2048個像素)、8k(8192x4096個像素)以及更大的格式。盡管近些年來可負擔(dān)的計算能力增加,但是由于與這些更新的或更大的格式中的一些格式相關(guān)聯(lián)的的非常大的圖像尺寸,調(diào)節(jié)并行處理的效率對編碼并且解碼過程通常是有利的。并行編碼和解碼可以發(fā)生在指令等級(例如使用simd)、在可以在不同階段上同時處理多個視頻編碼單元的流水線中或者在由獨立的計算引擎作為獨立的實體(例如多核通用處理器)來處理視頻編碼子單元的集合的大型結(jié)構(gòu)基礎(chǔ)上。并行處理的最后一個形式需要圖像分割。
第二種該使用情況涉及圖像分割以便創(chuàng)建適用于在分組網(wǎng)絡(luò)上的有效傳輸?shù)谋忍亓鳌;趇p或其他分組網(wǎng)絡(luò)協(xié)議來傳輸編碼視頻的編解碼器可能受到最大傳輸單元(“mtu”)尺寸限制。對于編碼片尺寸而言,有時候包括編碼片的結(jié)果分組盡可能地接近mtu尺寸而不超過該尺寸是有利的,以便保持高的有效載荷/分組化開銷比率,同時避免被網(wǎng)絡(luò)分段(以及結(jié)果導(dǎo)致的更高的損失概率)。
mtu尺寸在一個網(wǎng)絡(luò)到另一個網(wǎng)絡(luò)之間變化很大。例如,可以由通常用于因特網(wǎng)的網(wǎng)絡(luò)基礎(chǔ)設(shè)施的最小mtu尺寸設(shè)置許多因特網(wǎng)連接的mtu尺寸,其中,該最小mtu尺寸通常對應(yīng)于以太網(wǎng)中的極限并且可以大致為1500個字節(jié)。
編碼圖像中的比特的數(shù)量依賴于許多因素如源圖像的尺寸、希望的質(zhì)量、就預(yù)測適宜性而言的內(nèi)容復(fù)雜度、視頻編碼標(biāo)準的編碼效率以及其他因素。然而,即使在適中的設(shè)置質(zhì)量和內(nèi)容復(fù)雜度上,對于hd分辨率以及更高分辨率的序列,平均編碼圖像的尺寸輕易地超過mtu尺寸。視頻會議編碼器可能例如需要大約2mbit/sec,以編碼720p60視頻序列。這導(dǎo)致大致33000比特或4215字節(jié)的平均編碼圖像尺寸,這比因特網(wǎng)的mtu尺寸的近似1500個字節(jié)多相當(dāng)多。在更高的分辨率上,平均圖像尺寸增加到顯著高于因特網(wǎng)的mtu尺寸的值。假設(shè)與以上720p60中類似的壓縮比,60fps上的4096x2048(4k)視頻(4kp60)可能對于每個編碼視頻圖像需要超過300000個比特或25個mut大小的分組。
在許多視頻編碼標(biāo)準中,圖像段(或至少一種形式的圖像段)被稱為“片”。在下文的描述中,可以將用于破壞任意形式的圖像內(nèi)預(yù)測或其他編碼機制的任意類型的(例如基于視頻編碼標(biāo)準的)編碼圖像分段概括地稱為“片”。就這點而言,諸如(從見以上用于h.264的itu可得的)itu.trec.h.261或iturec.h.263中的塊組(“gob”)、h.264或mpeg標(biāo)準族中的片之類的結(jié)構(gòu)中的每一個結(jié)構(gòu)可以構(gòu)成遍及本文所使用的術(shù)語“片”。然而,rfc3984的分段單元或h.264的數(shù)據(jù)劃分片段即使將編碼圖像的比特流細分成更小的數(shù)據(jù)塊也不能構(gòu)成遍及本文所使用的術(shù)語“片”,因為他們沒有破壞圖像預(yù)測或另外的編碼機制。
在媒體未知的分割機制例如由路由層的ip提供的那些分割機制上使用片的一個優(yōu)點在于片至少在一定程度上可獨立地解碼(如下文更詳細地討論的)。一個片的損失因此不會必然致使編碼圖像的其他片不可用或不可解碼。根據(jù)分段機制的實現(xiàn),分段的損失可能相反地致使許多其他分段不可用。
可以通過圖像報頭(或等效物)的解碼破壞許多或全部圖像內(nèi)預(yù)測機制或編碼機制。那些預(yù)測機制是否還被片報頭的檢測破壞取決于視頻壓縮標(biāo)準和使用的片的類型。
在h.264中,可以將單獨的視頻圖像分割成一個或多個片,由此適應(yīng)需要或另外利用這樣一種圖像的應(yīng)用,其中,該圖像被分割成編碼/解碼過程的一部分??梢韵鄬τ谶\動向量預(yù)測、內(nèi)部預(yù)測、ca-vlc和cabac狀態(tài)和h.264標(biāo)準的其他方案獨立地解碼h.264中的片。雖然該解碼獨立性可以實現(xiàn)差錯恢復(fù)能力的增加,但是不允許前述的跨片邊界的預(yù)測可能易于降低編碼效率。
在h.263中,視頻編碼器在選擇通過片或帶有非空gob報頭的gob的使用來破壞哪些預(yù)測機制方面具有更大的彈性。例如存在這樣一種比特,其中,該比特被包括在圖像報頭中,當(dāng)附件r被使用時可選擇該比特,該比特向解碼器發(fā)信號通知跨片/gob邊界沒有發(fā)生任何預(yù)測。如果未設(shè)置該比特,則運動向量可以指向到當(dāng)前片之外,因而潛在地“輸入”用于當(dāng)前片內(nèi)部的運動補償?shù)臉颖局?。此外,環(huán)路濾波可以包括片外部的樣本值。
在大部分或全部現(xiàn)有視頻編碼標(biāo)準中,除了用作h.264的一部分的靈活宏塊排序(“fmo”)的可能的例外之外,按照光柵掃描次序來排序片中的宏塊。結(jié)果,當(dāng)將具有大的圖像尺寸的視頻序列分割成僅包括該圖像中的全部宏塊的相對小的百分比時,片在空間上被觀察時往往被拉長。
圖1顯示了根據(jù)現(xiàn)有技術(shù)被分解成片的示例性圖像100。示例性圖像100具有6x4個宏塊的矩陣101,通過細線指示它們的邊界。圖像100被分割成兩個片102、103,其中,由粗線指示兩個片102、103之間的片邊界104。第一片102按照掃描次序包括10個宏塊,具體而言宏塊1到10。第二片103包括矩陣101中的其余14個宏塊(即宏塊11到24)。宏塊中的數(shù)字(例如宏塊105中的數(shù)字“11”)是根據(jù)掃描次序的宏塊地址。
比特流106表示與圖像100相對應(yīng)的編碼圖像并且可以包括一個或多個參數(shù)集合107作為高級語法結(jié)構(gòu)的一個實例,其中,該高級語法結(jié)構(gòu)可以包括與圖像100的多個編碼片相關(guān)的語法元素。參數(shù)集合107之后可以緊接著一個或多個片,其中,每個該片分別包括對應(yīng)的片報頭108、110和對應(yīng)的片數(shù)據(jù)109、111。因此,在該實例中,片報頭108可能與片數(shù)據(jù)109相關(guān)聯(lián)并且可能對應(yīng)于矩陣101中的片102,同時片報頭110可能與片數(shù)據(jù)111相關(guān)聯(lián)并且可能對應(yīng)于片103。片報頭108、110可以根據(jù)掃描次序包括諸如各自的片的第一宏塊的地址之類的信息。例如當(dāng)?shù)诙?03被編碼到比特流106中時從包括用于指定宏塊105的地址的第一宏塊地址“11”的片報頭110開始。
如圖1中可以看出的,片102和103有點被拉長,在某種意義上而言片102和103中的每一個在水平上(即6個宏塊)比在垂直上(即2到3個宏塊)跨越更多宏塊。由于在水平上從一端到另一端的大的距離的結(jié)果,拉長的片如片102和103往往包括不同的圖像內(nèi)容。此外,拉長的片往往具有低的片面積對片周長/邊界比率。當(dāng)與包括更多正方形圖像區(qū)域如正方形或其他接近正方形的幾何圖形的片相比時,從編碼效率觀點而言,包括不同的圖像內(nèi)容的片與相對低的面積對周長/邊界比率的組合可能是不利的。在本說明書的下文中可以將具有該幾何特性的片稱為“緊湊”片。
還可以對于正方形圖像縱橫比優(yōu)化許多具有二維特性的熵編碼工具如運動向量或內(nèi)部預(yù)測模式的編碼。例如在h.264中,給定長度的水平運動向量的編碼與相同長度的垂直運動向量的編碼大致花費相同的比特數(shù)量。因此,這些編碼工具可以對于緊湊片產(chǎn)生比“拉長”片如圖1中顯示的片102和103更好的壓縮。
與在拉長片中更有可能發(fā)現(xiàn)的相對不同的內(nèi)容相比可以更有效地編碼在緊湊片中更有可能發(fā)現(xiàn)的同質(zhì)內(nèi)容的事實可能進一步產(chǎn)生對于緊湊片的改善的編碼效率。作為一種普遍的但不必絕對的規(guī)則,在緊湊片中圖像內(nèi)容更有可能是同質(zhì)的,因為平均而言,緊湊片的從片的中心到邊界的空間距離比拉長片更小。此外,對于緊湊片具有更大的片面積對片邊界比率意味著在給定圖像中通??梢云茐母俚念A(yù)測機制,由此導(dǎo)致更高的編碼效率。
在h.264中,fmo通過定義矩形片組,允許視頻編碼器有效地產(chǎn)生矩形片。fmo是為了解決視頻編碼中遇到的多個問題而設(shè)計的高度概括的編碼工具。然而,從實際觀點看來,往往發(fā)覺fmo具有相對高的實現(xiàn)復(fù)雜度,導(dǎo)致作為標(biāo)準視頻壓縮的方案有點受限??梢岳酶纳频木幋a效率以及并行編碼和解碼的更簡單的編碼工具可以解決或減輕與完全fmo實現(xiàn)相關(guān)聯(lián)的的一個或多個復(fù)雜度問題。
在許多基于mepg-2的編碼方案的極端情況中也可能出現(xiàn)拉長片的問題。例如在mpeg-2編碼中,通常的情況是將圖像之中的每行宏塊編碼到片中,由此有效地破壞圖像中的垂直維度中的任意圖像中預(yù)測機制。
矩形片模式是h.263的附件k中規(guī)定的兩種子模式中的一種子模式,另一種子模式是“掃描次序片模式”,掃描次序片模式具有與上文所討論的h.264的片相似的特性。h.263中規(guī)定的矩形片可以提供一個或多個前文所述的由緊湊片提供的優(yōu)點。然而,h.263要求必須在每個片的對應(yīng)的報頭中傳遞該片的維度(具體而言寬度),這例如在水平維度中的片尺寸從一個圖像到另一個圖像不改變的應(yīng)用中導(dǎo)致編碼低效率。另外,h.263的附件k沒有規(guī)定將有效地防止使用垂直拉長的片的最小片寬度。垂直拉長的片可能引起實現(xiàn)困難,并且,由于上文針對水平拉長的片所討論的原因,將不會在每個情況中提供通過更緊湊的片的使用而可以提供的希望的編碼效率優(yōu)點。
在某些情況中限制片具有矩形形狀也可能是不利的。首先,矩形片可以在這樣一種應(yīng)用中次優(yōu)地執(zhí)行,其中,比特流對于該應(yīng)用使用受制于mtu的傳輸協(xié)議。例如,如果給定分組中的比特的數(shù)量超過比特流上強制的mtu限制,則可以對該分組進行分裂,這從最小網(wǎng)絡(luò)性能和差錯恢復(fù)能力觀點而言是不希望的。相反,如果給定分組中的比特的數(shù)量遠低于該mtu限制,則傳輸和片報頭中的比特數(shù)量的比率與分組有效載荷中的比特數(shù)量相比變得比較大,由此導(dǎo)致編碼低效率。在形狀上要求片矩形限制了編碼器精確地控制編碼片中的比特數(shù)量以避免上述缺點的能力。
其次,矩形片可以在利用并行編碼和/或解碼的應(yīng)用中也次優(yōu)地執(zhí)行。當(dāng)進行并行編碼和/或解碼時,將圖像分割成不同的部分以使得該圖像的每個部分需要近似相同的計算量來編碼是特別有利的。通過按照該方式分割圖像,因此可以用幾乎相同的延遲來編碼圖像的每個部分,以由此降低或最小化圖像的不同部分的編碼時間之間的滯后。限于使用矩形片的編碼器可能無法精確地控制解碼和/或編碼每個片所需要的cpu容量的數(shù)量并且由此避免該潛在的缺點。
為了有助于屬于同一編碼圖像的片的并行解碼,解碼器通常將編碼圖像段分配給各種各樣的處理器、處理器內(nèi)核或?qū)τ谟糜诓⑿薪獯a的解碼器可用的其他獨立地操作的解碼機制。對于以前的視頻編碼標(biāo)準而言,在不使用fmo的情況下,這通常在一些極難的情況中是難以處理的任務(wù),因為那些以前的標(biāo)準將在比特流的生成中允許過多的彈性。例如在h.264中,也可能是在同一比特流中將一個圖像編碼在單個片中并且將另一個圖像編碼在數(shù)打片中。如果并行化發(fā)生在片等級上,則當(dāng)將圖像編碼在單個片中時,將需要提供為了解碼該圖像而分配的處理器,以完整地處理它的解碼。結(jié)果,在不強制視頻編碼標(biāo)準的外部限制的前提下,如果每個解碼處理器需要被配備為能夠在任意情況中處理整個圖像,則通過建立并行解碼器所實現(xiàn)的優(yōu)點將比較少。
普遍地將在許多mepg-2編碼器中使用的片編碼視為同意利用非正式的纜線實驗室規(guī)范的結(jié)果,其中,該規(guī)范建議每個宏塊行分割為一個片的方案。該非正式規(guī)范最終獲得了廣泛的接受。盡管當(dāng)?shù)谝粋€mpeg-2產(chǎn)品在大約1995年變得可用時在該分割方案中可能具有價值,但是即使(至少所謂的sd)圖像的解碼的并行化在近十年來已經(jīng)相對不是問題,如今與歷史規(guī)范相關(guān)聯(lián)的的各種各樣的約束也可能顯著地限制編碼效率。
因此需要一種在mtu尺寸匹配和并行解碼兩方面解決、減輕視頻編碼器的現(xiàn)有缺點或提供有用的備選的改進的圖像分割方法和系統(tǒng)。因此,需要一種至少部分地解決以上以及其他缺點的技術(shù)方案。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施方式在一個或多個廣義的方案中涉及用于將編碼圖像分割成列或片的技術(shù)。
在一些實施方式中,可以在位于一個或多個高級語法結(jié)構(gòu)(如片報頭或參數(shù)集合)中的一個或多個語法元素中定義多個列。如此定義的列可以是例如一個編碼樹塊(如例如wd4(從http://wftp3.itu.int/av-arch/jctvc-sit/2011_07_f_forino/可獲得的、由b.bross等人所著的“wd4:workingdraft4ofhigh-efficiencyvideocoding”)中所定義的ctb)與ctb中測量的圖像的整個水平尺寸之間的任意寬度。
在一些實施方式中,相鄰列之間的列邊界可能破壞視頻編解碼器的一個或多個預(yù)測機制或環(huán)路濾波機制。被列邊界破壞的預(yù)測或環(huán)路濾波器機制可以與被片邊界破壞的那些預(yù)測或環(huán)路濾波器機制相同或不同。
在一些實施方式中,用于計算并且指定列寬度的粒度可以是最大編碼單元(lcu),并且編碼樹塊(ctb)可以與lcu具有相同的尺寸。
在一些實施方式中,可以由語法元素n定義n個列,其中,該語法元素n指示圖像中的列的數(shù)量,并且該語法元素n之后緊接著n-1個用于指示該n個列中的每個列的對應(yīng)的寬度的n-1個語法元素??梢岳缤ㄟ^從圖像的寬度減去最左邊的n-1個列的寬度的和來計算指定的列(例如最右邊的列)的寬度。
在一些實施方式中,(除了或許對于一個預(yù)定義的列(如最右邊的列)之外,其中,該預(yù)定義的列可能具有更小的寬度)圖像中的每個列可以具有相等的寬度,并且語法元素w可用于指示(除了一個預(yù)定義的列之外的)每個列的該相等的寬度??梢詫⒄Z法元素w例如放置到高級語法元素結(jié)構(gòu)(如參數(shù)集合)中。在該情況中,可以基于涉及w與由n所表示的圖像寬度的除法運算來確定該一個預(yù)定義的列的寬度,從而可以將該一個預(yù)定義的列的寬度作為當(dāng)n被w除時的余數(shù)。
|在一些實施方式中,(除了或許以ctb為單位的圖像寬度不能被n整除的情況中對于一個預(yù)定義的列(如最右邊的列)之外,其中,該預(yù)定義的列可能具有更小的寬度)圖像中的每個列可以具有相等的寬度,并且語法元素n可用于指示(除了一個預(yù)定義的列之外的)寬度相等的列的數(shù)量。在該情況中,可以通過將以ctb為單位的圖像寬度除以n來確定全部n個列的寬度,其中,該預(yù)定義的列的寬度然后等于該除法運算的余數(shù)。
在一些實施方式中,語法元素n可用于指示圖像中的列的數(shù)量。以lcu為單位的相等的列寬度w等于以lcu為單位的圖像寬度除以n。
在一些實施方式中,如果圖像寬度不能被相等的列寬度w整除,則一個預(yù)定義的列(例如最右邊的列)的寬度可能是圖像寬度(例如以ctb測量的)與w-1之間的除法運算的余數(shù)。
在一些實施方式中,片可以包括一個或多個ctb,其中,每個ctb位于單個列中,由此使得mtu尺寸匹配,同時仍然允許通過列的并行化。
在一些實施方式中,片可以包括位于大于一個列中的ctb。
在一些實施方式中,可以在片報頭或類似的語法結(jié)構(gòu)中調(diào)整列的寬度,由此允許“負載平衡”編碼器中的計算資源。如果在源圖像順序中不同水平區(qū)域中的內(nèi)容復(fù)雜度不同,則列寬度的這種調(diào)整可能是有利的。
在一些實施方式中,高級語法元素可用于固定圖像的全部列的尺寸,由此在并行編碼或解碼情況中允許每個列到單個處理器或等效物的有效的分配。
在一些實施方式中,可以強制對于列的最小和/或最大水平寬度的限制。該限制可以在一些情況中輔助并行化并且可以改善編碼效率??梢岳鐚⒃撓拗凭幋a到標(biāo)準的等級規(guī)范中或高級語法元素中,或者可以通過優(yōu)化可能涉及mtu尺寸和每ctb的平均比特(其可以源自比特率、幀速率和以ctb為單位的幀尺寸)的功能來調(diào)整該限制。
在一些實施方式中,ctb的掃描次序可用于解碼和/或編碼,根據(jù)該掃描次序,可以在第一等級上按列從左到右經(jīng)過圖像中的所有列并且在該第一等級之下的第二等級上按ctb從左到右并且從上到下經(jīng)過給定列中的全部ctb,按照排序次序處理ctb。
在一個廣義的方案中,提供了一種用于編碼包括多個編碼樹塊(ctb)的視頻圖像的方法,其中,該ctb被配置成至少兩個ctb行和至少一個ctb列。該方法可以涉及編碼至少一個列中的每個列的對應(yīng)的列寬度,每個列寬度大于零并且所有列寬度的和等于該視頻圖像的水平尺寸,并且編碼該視頻圖像的至少一個片。在一些情況中,該至少一個片可以包括位于至少兩個ctb行中的至少兩個ctb。
在另一個廣義的方案中,提供了一個或多個非瞬態(tài)計算機可讀介質(zhì),其中,在該非瞬態(tài)計算機可讀介質(zhì)上存儲指令,該指令被配置為使得一個或多個處理器能夠執(zhí)行一種用于視頻編碼包括多個編碼樹塊(ctb)的視頻圖像的方法,其中,該ctb被配置成至少兩個ctb行和至少一個ctb列。該方法可以包括編碼至少一個列中的每個列的對應(yīng)的列寬度,每個列寬度大于零并且所有列寬度的和等于該視頻圖像的水平尺寸,并且編碼該視頻圖像的至少一個片。在一些情況中,該至少一個片可以包括位于至少兩個ctb行中的至少兩個ctb。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,該方法可以進一步包括在ctb的相鄰列之間的列邊界處破壞至少一個形式的預(yù)測或環(huán)路濾波。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,該方法可以進一步包括將列的數(shù)量和列的寬度中的至少一個編碼到參數(shù)集合中。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,至少一個列的對應(yīng)的列寬度在該視頻圖像的至少兩個ctb行之間可能是可變的。在該實施方式中,可以通過編碼片報頭中的對應(yīng)的列寬度來控制這種可變性。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,該方法可以進一步包括按照該多個ctb的掃描次序編碼該多個ctb,其中,根據(jù)該多個ctb的掃描次序,按列從左到右經(jīng)過多個列并且在該多個列的每個列中按ctb從左到右并且從上到下順序地編碼該多個ctb。
在另一個廣義的方案中,提供了一種用于解碼包括多個編碼樹塊(ctb)的編碼視頻圖像的方法,其中,該ctb被配置成至少兩個ctb行和至少一個ctb列。該方法可以包括獲得(i)至少一個列中的每個列的對應(yīng)的列寬度和(ii)列數(shù)量中的至少一個,(如果未從該編碼視頻圖像獲得至少一個列中的每個列的對應(yīng)的列寬度則)導(dǎo)出至少一個列中的每個列的對應(yīng)的列寬度,并且解碼編碼視頻圖像的至少一個片。在一些情況中,該至少一個片可以包括位于至少兩個ctb行中的至少兩個ctb。
在另一個廣義的方案中,提供了一個或多個非瞬態(tài)計算機可讀介質(zhì),其中,在該非瞬態(tài)計算機可讀介質(zhì)上存儲指令,該指令被配置為使得一個或多個處理器能夠執(zhí)行一種用于視頻解碼包括多個編碼樹塊(ctb)的編碼視頻圖像的方法,其中,該ctb被配置成至少兩個ctb行和至少一個ctb列。該方法可以包括獲得(i)至少一個列中的每個列的對應(yīng)的列寬度和(ii)列數(shù)量中的至少一個,(如果未從編碼視頻圖像獲得至少一個列中的每個列的對應(yīng)的列寬度則)導(dǎo)出至少一個列中的每個列的對應(yīng)的列寬度,并且解碼編碼視頻圖像的至少一個片。在一些情況中,該至少一個片可以包括位于至少兩個ctb行中的至少兩個ctb。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,該方法可以進一步包括在ctb的相鄰列之間的列邊界處破壞至少一個形式的預(yù)測或環(huán)路濾波。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,可以從參數(shù)集合獲得該至少一個列中對應(yīng)的列寬度和列數(shù)量。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,至少一個列的對應(yīng)的列寬度在編碼視頻圖像的至少兩個ctb行之間可能是可變的。在該實施方式中,可以通過編碼片報頭中的列寬度來控制這種可變性。
在一些實施方式中,根據(jù)以上兩個方案中的任意一個,該方法可以進一步包括按照該多個ctb的掃描次序解碼該多個ctb,其中,根據(jù)該多個ctb的掃描次序,按列從左到右經(jīng)過多個列并且在該多個列的每個列中按ctb從左到右并且從上到下順序地解碼該多個ctb。
在一個廣義的方案中,提供了一種用于包括多個編碼樹塊(ctb)的編碼視頻圖像的視頻解碼器,其中,該ctb被配置成至少兩個ctb行和至少一個ctb列。該視頻解碼器可以包括多個列解碼器,其中,每個列解碼器被配置為解碼編碼視頻圖像的位于被分配給該列解碼器的至少一個ctb列中的片。
在一些實施方式中,根據(jù)以上方案,每個片可以完全確切地位于一個列中。
在一些實施方式中,根據(jù)以上方案,每個列解碼器可以是運行在多核處理器內(nèi)核或多處理器中的至少一個上的過程。
根據(jù)所述實施方式的進一步的方案,提供了一種裝置如數(shù)據(jù)處理系統(tǒng)、一種用于調(diào)整該裝置的方法以及制品如非瞬態(tài)計算機可讀存儲介質(zhì)或者其上記錄用于實施本文所述的方法的程序指令的產(chǎn)品。
附圖說明
本發(fā)明的實施方式的各種特征和優(yōu)點將從結(jié)合附圖所進行的下文的詳細描述變得顯而易見,其中,:
圖1是示出了具有掃描次序片和宏塊地址的一個示例性圖像的圖示;
圖2是示出了根據(jù)本發(fā)明的一個實施方式的列和片的圖示;
圖3是示出了根據(jù)本發(fā)明的一個實施方式的列和(給定列本地的)片的圖示;
圖4是示出了根據(jù)本發(fā)明的一個實施方式的示例性解碼器的操作的流程圖;
圖5是示出了根據(jù)本發(fā)明的一個實施方式的列寬度的修改的圖示;
圖6是示出了根據(jù)本發(fā)明的一個實施方式當(dāng)解碼片時示例性解碼器的操作的流程圖。
圖7是根據(jù)本發(fā)明的一個實施方式具有兩個列處理器的解碼器的方框圖;以及
圖8是示出了根據(jù)本發(fā)明的一個實施方式的基于數(shù)據(jù)處理系統(tǒng)(例如個人計算機(“pc”))的實現(xiàn)的方框圖。
應(yīng)當(dāng)注意的是,在整個附圖中由相同的參考數(shù)字識別相同的特征。
具體實施方式
在下面的描述中,闡述了細節(jié)以提供對本發(fā)明的理解。在一些實例中,未詳細地描述或示出特定的軟件、電路、結(jié)構(gòu)和方法,以免模糊本發(fā)明。在本文中使用術(shù)語“數(shù)據(jù)處理系統(tǒng)”來指代用于處理數(shù)據(jù)的任意機器,包括本文所述的計算機系統(tǒng)、無線設(shè)備和網(wǎng)絡(luò)配置。可以用任意計算機編程語言來實現(xiàn)本發(fā)明的實施方式,只要數(shù)據(jù)處理系統(tǒng)的操作系統(tǒng)提供可以支持這些實施方式的要求的設(shè)施。也可以用硬件或用硬件和軟件的組合實現(xiàn)本發(fā)明的實施方式。
本發(fā)明的實施方式涉及視頻壓縮中使用列和片的圖像分割。
參考圖2,圖2顯示了根據(jù)本發(fā)明的實施方式的圖像201的示例性的分割200。圖像201被分割成多個編碼樹塊或宏塊(在后文中被稱為“ctb”)。在該實例中,圖像201具有6x4個ctb的尺度。通常將ctb的邊界顯示為細線。ctb的屬性以及他們的具體尺度是可變的并且可以根據(jù)不同的實施方式而改變。雖然下文的描述假設(shè)被包括在圖像201中的ctb是正方形的并且具有相等的尺寸(例如如同通常用于h.264中的宏塊一樣),但是本發(fā)明的特定實施方式可能不需要該特性并且可以利用具有不同尺寸的ctb來操作,只要在該實施方式中能夠使用那些不均勻尺寸的ctb來定義一個或多個水平列??梢岳缋萌鏷.264交織編碼中所使用的宏塊對或者利用h.263的降低分辨率的最新模式來操作本發(fā)明的實施方式。如果在同一圖像中存在例如32x32、16x16和8x8的樣本,則也可以操作該實施方式。
在圖像201中定義了兩個列202、203,并且圖中顯示由黑體實心線204所示的列邊界分割兩個列202、203。任意列的寬度可以是圖像201中所使用的ctb的尺寸的整數(shù)倍數(shù)(或者最小可能ctb尺寸的整數(shù)倍數(shù))。在圖像201中列可以具有相等或不相等的寬度。如圖所示,列202包括ctb1到8,并且列203包括ctb9到24。列202的寬度為兩個ctb,并且列203的寬度為四個ctb。然而,所述實施方式不限于該列數(shù)量也不限于圖1中所顯示的示例性列寬度。
圖2還顯示了在圖像201中定義的并且有黑體斷續(xù)線205劃定的兩個片。第一片包括ctb地址為1到14的ctb。第二片包括地址為15到24的ctb。第一片的ctb1-8位于列202中,而第一片的ctb9-14位于列203中。因此,第一片覆蓋作為列202和203中的任意一個的一部分的ctb。第二片包括全部位于列203中的ctb15-24。因此,圖像201中的ctb的掃描次序已經(jīng)從如圖1中所示的按圖像掃描次序改變?yōu)槿鐖D2中所示的按列掃描次序。根據(jù)該按列掃描次序,首先按列本地的掃描次序(從左到右,從上到下貫穿列202)枚舉列202的ctb,之后才(按以類似的方式定義的按列本地的掃描次序)枚舉列203的ctb。如果合適的話/在合適的情況中,可以將圖2中所顯示的按列掃描次序擴展到已經(jīng)針對其定義了多于兩個列的圖像。
編碼比特流206表示圖像201并且可以包括參數(shù)集合207(或者可以包括到以前已解碼的參數(shù)集合的參考,因為多個圖像可以涉及同一參數(shù)集合)。參數(shù)集合207可以包括列邊界信息208,用于直接地或間接地識別一個或多個列(例如如稍后所述的列202和203)的寬度。每個編碼片可以分別包括對應(yīng)的片報頭209、211和對應(yīng)的片數(shù)據(jù)210、212。
如圖2所示,具有跨越列邊界的片的圖像分割可以提供一個或多個優(yōu)點例如(除了給定圖像的最后一個片的可能的例外之外)可以調(diào)整所有編碼片的尺寸以盡可能緊密地匹配mtu尺寸213,這至少部分地由于編碼片可能不包括編碼ctb部分。在圖2的該實例中,將兩個編碼片(每個編碼片包括各自的片報頭209、211和片數(shù)據(jù)210、212)顯示為尺寸大致相同,以便指示這些編碼片攜帶大致相同數(shù)量的比特,其中,該數(shù)量可以是小于但是接近mtu尺寸213的數(shù)量。將mtu尺寸213顯示為時間間隔,該時間間隔在該實例中對于兩個片是恒定的。在大部分情況中,雖然mtu尺寸213是網(wǎng)絡(luò)特性并且對于任意分組是恒定的以便通過片的使用優(yōu)化分組有效載荷,但是其他考慮可能迫切要求對于編碼片采用可變目標(biāo)尺寸。例如對于差錯恢復(fù)能力而言,一些分組除了它們的片有效載荷之外還攜帶參數(shù)集合的冗余版本是有用的。在該情況中,從一個分組到另一個分組因此同樣從一個編碼片到另一個編碼片,該mtu尺寸213可以不同。貫穿本說明書在廣義的意義上使用術(shù)語“mtu尺寸”。
允許片跨越跨多個列之間的邊界的該多個列的一個優(yōu)點在于考慮到良好的mtu尺寸匹配。隨著片能夠跨越多個列,由于列邊界的出現(xiàn),沒有任意一個列的尺寸將受到人工限制。另一個優(yōu)點可以是能夠?qū)⒄麄€圖像表示成單個片(例如在大多數(shù)情況中mtu尺寸大于已編碼圖像尺寸),同時仍然考慮到并行化。為了方便起見,可以假設(shè)列邊界破壞所有形式的預(yù)測或環(huán)內(nèi)濾波。在該假設(shè)之下,并行編碼器的一個示例性配置可以如下。并行解碼器的每個處理器/內(nèi)核可以開始編碼列的空間區(qū)域,從該列中的左上端的ctb開始并且按照掃描次序順序地運行到右下端的宏塊即從左到右并且從上到下。假設(shè)圖像中有n個列并且并行解碼器有n個處理器/內(nèi)核,該編碼方法可能導(dǎo)致生成n個子比特流,每個子比特流來自每個處理器/內(nèi)核。然后可以組合該n個子比特流以形成用于表示整個圖像的單個比特流。接收該比特流的解碼器可以從(例如被包括在該比特流中的)參數(shù)集合確定它的任務(wù)在于n個列中的并行解碼。該解碼器然后可以通過首先僅解碼該比特流中所包括的語法元素(而不執(zhí)行ctb的任意計算密集的重構(gòu))來預(yù)處理該組合比特流,以便識別比特流區(qū)域中的列之間的邊界。作為一個實例,一個該邊界將位于圖像201的編碼ctb8與編碼ctb9之間。此后,解碼器可以提取并且/或者將在預(yù)識別的邊界處在組合比特流之中分解的子比特流復(fù)制到處理器/內(nèi)核中以便處理。解碼器中的處理器/內(nèi)核可以在像素域中獨立地重構(gòu)它們的指定列,然后可以一起復(fù)制它們的指定列,以重構(gòu)完整的圖像。在下文中更詳細地解釋了其他可能的實現(xiàn)。
由于例如當(dāng)預(yù)測和/或環(huán)路濾波機制的(小的)子集被列邊界破壞時,并行化實現(xiàn)困難,所以使得片跨越列邊界可能引起一個潛在缺點。例如如果將要在第一處理器上解碼列202并且將要在第二處理器上解碼列203,則解碼引擎的狀態(tài)(包括諸如cabac狀態(tài)、運動預(yù)測狀態(tài)之類的信息)或者至少解碼引擎的與未被列邊界破壞的預(yù)測或環(huán)路濾波工具有關(guān)的那些部分將至少在一些情況中必須在ctb8的解碼之后從第一處理器切換到第二處理器,其中,ctb8按列本地的掃描次序是列202中的最后一個宏塊。該切換的實現(xiàn)和計算復(fù)雜度可能依賴于例如被該列邊界的出現(xiàn)破壞的預(yù)測或環(huán)路濾波器工具。如果例如列邊界破壞除了熵編碼中的預(yù)測之外的任意形式的預(yù)測,則僅需要切換與熵編碼引擎相關(guān)的信息。被整體并入本文的、2011年12月23日提交的、標(biāo)題為“methodandsystemforselectivelybreakingpredictioninvideocoding”的共同未決的美國專利申請序列號13/336,475披露了用于當(dāng)片跨越列邊界時控制需要切換的數(shù)據(jù)的數(shù)量的技術(shù)以及其他。
圖3示出了以損失最佳可能mtu尺寸匹配為代價,在具體而言針對相等能力處理器(或其他并行處理實體如處理器內(nèi)核)的并行處理而優(yōu)化的較不普遍的情況300中在視頻圖像的片與列之間的交互。(該優(yōu)化還可以依賴于通過列的使用而破壞的預(yù)測和環(huán)路濾波工具;共同未決的美國專利申請序列號13/336,475披露了用于控制受列邊界影響的工具的技術(shù)以及其他。)
如在圖3中可以看出的,圖像301被分割成等寬度(在該實例中三個ctb寬)的兩個列302、303,導(dǎo)致向列302、303中的每一個分配相似數(shù)量的ctb。在由給定處理器或內(nèi)核處理給定列的假設(shè)之下,圖像301到等寬度的列302、303的分割還可能導(dǎo)致對于每個處理器或內(nèi)核的大致相等的負載。將列302與303之間的列邊界304顯示為黑體線。將列302的所有ctb編碼到單個片305中。然而在列303中定義了兩個片306、307并且兩個片306、307一起包括列303的全部ctb,其中,片306、307中的每一個片被定義為保持在mtu尺寸限制之內(nèi)。片305、306和307中的每一個可以例如滿足mtu尺寸限制,而不管包括不同的宏塊數(shù)量(分別是十二個、八個和四個),其中,對于列303的ctb需要比列302的ctb更高的平均比特數(shù)量,這可以發(fā)生在如果/當(dāng)圖像201的一個部分比另一個部分更“復(fù)雜”時的情況中。由黑體斷續(xù)線指示列303之中的片306與片307之間的片邊界308。應(yīng)該注意到,片305和306比包括相似數(shù)量ctb但是按照圖像掃描次序來排列的片更加“緊湊”得多。因此,列302和303的使用可能不僅助于(如下文將更詳細地描述的)并行處理的使用,而還可以有助于編碼效率。在該實例中,片307盡管與片305和306比不是非常緊湊,但是仍然可能比沒使用列302和303更緊湊。如前所述,ctb的掃描次序再次被改變。
編碼比特流309可以包括參數(shù)集合310,參數(shù)集合310包括列邊界信息311。雖然在圖3中可以將參數(shù)集合310顯示為與編碼圖像的編碼片相鄰,但是在各種各樣的實施方式中,參數(shù)集合可能位于比特流309中的別處或者甚至在一些情況中從帶外傳遞。
該編碼圖像包括三個編碼片(即片0、片1和片2),每個編碼片分別包括對應(yīng)的片報頭312、314、316和對應(yīng)的片數(shù)據(jù)313、315、317。編碼片0包括編碼片報頭312和編碼片數(shù)據(jù)313,編碼片數(shù)據(jù)313包括片305的編碼信息,并且編碼片數(shù)據(jù)313被描述為具有略低于mtu尺寸318的尺寸(單位為編碼比特)。編碼片1包括(對應(yīng)于片306的)編碼片報頭314和編碼片數(shù)據(jù)315。在該實例中,當(dāng)對片1進行編碼時,編碼器能夠用片報頭314和片數(shù)據(jù)315填充幾乎像mtu尺寸318一樣大的分組。注意到,填充到多達mtu尺寸318的最后一個比特可能不總是可行的,因為不能將ctb分段成超過一個片。因此,受制于該限制,在片中的最后一個ctb的編碼之后可能剩下額外比特。最后,片2包括(對應(yīng)于片307的)片報頭316和片數(shù)據(jù)317,并且比mtu尺寸318小得多,因為與片0和片1相比在該片中存在更少要被編碼的ctb。
可以在序列等級(例如在序列參數(shù)集合中)、在圖像等級(例如在圖像參數(shù)集合中)或者在覆蓋至少一個編碼圖像的比特流中的其他數(shù)據(jù)結(jié)構(gòu)中指定圖像中的列的靜態(tài)寬度。一次性對于序列或圖像中的所以片指定列邊界對于片寬度從一個圖像到另一個圖像不改變的應(yīng)用而言有優(yōu)點,因為對于每個圖像不需要與指定不同的片結(jié)果相關(guān)聯(lián)的的開銷。其進一步具有在并行解碼的情況中有效地允許編碼比特在多個處理器或等效物之間的分配的優(yōu)點。稍后描述動態(tài)列寬度調(diào)整。
可以使用一個或多個不同的數(shù)據(jù)結(jié)構(gòu)、參數(shù)、規(guī)則、標(biāo)志位或其他合適的語法指定列邊界。使用序列參數(shù)集合(sps)作為示例性高級語法結(jié)構(gòu)來傳遞列邊界,sps可以例如包括:
(1)變量n,通過該變量來編碼每個圖像的列數(shù)量。在該情況中,如果/當(dāng)必要并且/或者合適時,如果圖像的寬度(以ctb為單位)可被n除盡,則可以通過將圖像的寬度除以n來導(dǎo)出每個列的寬度(以ctb為單位)。否則,可以通過將圖像的寬度除以n-1來計算n-1個列的寬度,從而最后的列(例如圖像中的最右邊的列)的寬度將是該除法運算的余數(shù)。
(2)變量w,通過該變量來編碼列的最大寬度(以ctb為單位)。在該情況中,令n為圖像的寬度除以w。則前n個列的寬度等于w,并且最后的列的寬度將是該除法運算的余數(shù)。
(3)變量n包括列數(shù)量,并且整數(shù)n-1的字段長久地包括用于表示每個該列的寬度的值。該選擇考慮到如圖2中所顯示的不均勻的列寬度。
在熟悉了本文的公開內(nèi)容之后,適用于不同應(yīng)用的列邊界信息的其他表示將可以顯而易見并且旨在被覆蓋在所述實施方式的范圍中。
視頻編碼標(biāo)準可以有利地設(shè)置用于可以出現(xiàn)在比特流中的最小或最大列寬度的極限。可以例如在配置文件和等級規(guī)范中指定該極限。對于高分辨率視頻解碼情況中的高級并行處理所設(shè)計的配置文件可能例如要求列必須與不大于例如1920個樣本(通??稍趩蝹€內(nèi)核中被解碼的1080p分辨率具有1920個水平樣本的分辨率)的寬度一起使用。另一方面,配置文件可能例如要求最小列寬度不小于640個樣本。下限可以有助于避免最壞情況和y維度中的“拉長”片。上限可用于大量不同的原因。首先,如前所述,由于更少并且更小的拉長片,可以改善編碼效率。其次,編碼器可以基于子圖像解碼器,其中,每個子圖像解碼器能夠解碼單個列(在下文中被稱為“列解碼器”)而無需能夠處理完整的圖像。再次,由于行緩沖器不需要跨越完整圖像寬度而僅需要跨越列寬度,所以可以降低列解碼器中的存儲器要求(加上有可能的依賴于實現(xiàn)的邊距)。關(guān)于列寬度的該上限的其他優(yōu)點也可以顯而易見。
接下來描述解碼器在包括片和列的比特流上的操作,注意該操作與不使用列所生成的比特流的解碼過程有何不同。為了方便起見,在下文的描述中,將假設(shè)根據(jù)以上選擇(3)來執(zhí)行列寬度的編碼。然而,不應(yīng)該將該描述理解為僅限于該類型的編碼,并且如果必要/在必要的情況中,通過對該描述進行合適的修改和/或替換,該描述還將適用于以上所述的其他兩個選擇。
在現(xiàn)代視頻編碼標(biāo)準中,可以將與超過一個片相關(guān)的參數(shù)存儲在被稱為參數(shù)集合的更高級的語法結(jié)構(gòu)中。在更舊的標(biāo)準中,可以將這些參數(shù)存儲在報頭如圖像、gop或序列報頭中。為了有助于下文的描述,今后假設(shè)為參數(shù)集合,但是本發(fā)明的實施方式可以等效地利用其它形式的高級語法結(jié)構(gòu)。
圖4顯示了用于示出根據(jù)本發(fā)明的實施方式的示例性解碼器的操作的方法400。首先,為了能夠解碼片數(shù)據(jù),可以將一個或多個參數(shù)集合解碼(401)為存儲在參數(shù)集合中并且可以通過存儲在片報頭中的參考來訪問的參數(shù)。在一些實施方式中,參數(shù)集合可以包括與將要被解碼的圖像中所使用的列機制相關(guān)并且足以完整地定義與將要被解碼的圖像中所使用的列機制的信息。參數(shù)集合可以例如包括用于指示列數(shù)量(即圖4中的“num_column_minus_1”)和除了最后一個列之外的每個該列的寬度(即圖4中的“columnwidth[]”)的參數(shù)。編碼圖像中的最后一個列的寬度可以等于最右邊的列邊界與右手邊的圖像邊界之間的距離。
可以作為參數(shù)集合解碼(401)的一部分來解碼(402)存儲參數(shù)(例如“num_column_minus_1”和“columnwidth[]”)。解碼(402)可以是解碼(401)的子步驟并且可以在參數(shù)集合解碼(401)期間的任意合適時間執(zhí)行??梢岳缬蓞?shù)集合自身的語法(其可能強制在402中解碼的信息相對于參數(shù)集合中的其他條目的位置)限制確切的次序。
如共同未決的美國專利申請序列號13/336,475中進一步所述的,在參數(shù)集合解碼(401)期間,還可以解碼與預(yù)測和/或環(huán)內(nèi)濾波工具相關(guān)的信息。與預(yù)測和/或環(huán)內(nèi)濾波工具相關(guān)的信息的解碼在圖4中通常被指示在403處并且也可以被視為參數(shù)集合解碼(401)的一部分。
在方法400中的參數(shù)集合信息的解碼(401)之后,片解碼和重構(gòu)可以開始。
首先,可以解碼(404)片報頭。在片報頭中,可以獲得允許解碼器將給定片與包括該給定片的列相關(guān)聯(lián)的的信息。片報頭可以例如包括用于表示片中所包括的第一ctb的地址的ctb地址(即如圖4中的“first_dtb_address”所指示的)。編碼ctb地址可以被解碼(405)并且用作在解碼過程期間被解碼器用于追蹤當(dāng)前ctb地址(即圖4中的“currentctb”)的參數(shù)的初始值。然后,可以基于片中所包括的第一ctb的地址,通過將該第一ctb與編碼圖像中所定義的特定的列相關(guān)聯(lián),識別(406)該片所位于的列。
例如往回參考圖1,ctb地址(它的一個實例是在405處解碼的ctb地址)可以是圖像中按掃描次序的每個給定ctb的位置的熵編碼表示,如圖1的ctb中央的數(shù)字所示的。為了將片與列相關(guān)聯(lián),可以將給定片中的第一ctb的ctb地址的水平分量與對于編碼圖像所定義的列邊界相比較,其中,可以從在參數(shù)集合的解碼期間獲得的(并且如下文所述有可能在稍后的片解碼期間被修改的)列寬度信息導(dǎo)出該列邊界。在本發(fā)明的一些實施方式中,如果可以限制每個給定片以存在于給定列內(nèi)的整體中,則可以通過識別該給定片中的第一ctb所存在的列來將片與列相關(guān)聯(lián)(因為通過定義可知,片中的所有剩余ctb將位于同一列中)。可以根據(jù)下文更詳細地討論的圖6的方框611和612來進行該識別。
再次參考圖4,識別(406)將要被解碼的片的第一(初始)列。然后可以如一個或多個ctb解碼可能符合的用于ctb解碼的視頻壓縮標(biāo)準中所指定地那樣,進行片中的編碼ctb的解碼,其中,該解碼可以包括多個步驟如除了ctb地址處理和基于片外部的數(shù)據(jù)的預(yù)測可用性來使用該數(shù)據(jù)之外的熵解碼、運動補償以形成預(yù)測器、系數(shù)的反量化和反變換以計算殘差、向運動補償預(yù)測器增加殘差、對結(jié)果樣本進行ctb內(nèi)去塊濾波等等。在下文中,概述了一個用于概述一個可能的實現(xiàn)策略的實例,但是在熟悉了本文的公開內(nèi)容之后,其他策略也可以顯而易見。
首先,可以解碼ctb質(zhì)地、運動和其他信息,并且可以重構(gòu)(407)正在由解碼器處理的當(dāng)前ctb,其可以涉及以上在ctb解碼的環(huán)境中所示的不同步驟中的任意一個或全部,然而還有注意到片或列邊界外部的信息的預(yù)測能力。
然后可以將當(dāng)前ctb地址增加(408)。如果確定(409)已增加ctb地址仍然在列的右手邊界的左邊,則不需要ctb地址的進一步的更新(在圖4中通過將方框410直接繞到方框411的箭頭來指示)。然而,如果確定(409)已增加ctb地址在該列之外(即等于或在列的右手邊界的右邊),則將ctb地址復(fù)位(410)成該列中的下一個ctb行中的第一ctb的地址。換句話說,將ctb地址的水平分量設(shè)置為該列的最左邊的ctb(如圖6中的參數(shù)“colbound[]”所指示的)并且將ctb地址的垂直分量增加一。
如果在執(zhí)行方框408到410之后,ctb地址的垂直分量超過該圖像的垂直尺寸,則片可能跨越超過一個列。在該情況中,可以例如將ctb地址復(fù)位到以前的列的左邊的列中的左上端的ctb地址。在該列中繼續(xù)解碼和ctb地址改變。
此時,確定(411)在將要解碼的片中是否可獲得更多(用于指示一個或多個ctb的)數(shù)據(jù)。如果確定(411)在將要解碼的片中剩余更多數(shù)據(jù),則方法400回到(412)方框407,并且繼續(xù)對該片中的下一個ctb解碼。然而,如果確定在將要解碼的片中不剩任何數(shù)據(jù),則方法400回到(413)方框404,并且繼續(xù)對該圖像中的下一個片解碼。
根據(jù)本發(fā)明的實施方式,解碼器可以從高級結(jié)構(gòu)(如圖像或序列參數(shù)集合)讀取(初始)列邊界信息。這可以例如在用于從比特流解析第一語法元素(即“num_column_minus_1”)的機制中實現(xiàn)。該語法元素可以有利地是圖像(或更高的)語法結(jié)構(gòu)(如圖像參數(shù)集合、序列參數(shù)集合、圖像報頭或類似的結(jié)構(gòu))的一部分。如果“num_column_minus_1”的值大于0,則可以推斷出現(xiàn)在一致性(conformant)比特流中的列邊界的數(shù)量等于在該參數(shù)中存儲的值,并且可以解析num_column_minus_1的列寬度。可以用ctb的方式指示對應(yīng)地解析的列的寬度。以h.264語法規(guī)范的風(fēng)格指定上述語法,為了方便起見在下文中概述了該語法的一部分。
具體而言,在下文提供的語法描述中,與無格式行相比的黑體變量(即下文的第一行到第四行)可以表示作為確定變量值的副作用或者否則結(jié)合確定變量值而從比特流獲取的比特。在讀取該值之后,該值可用于解碼過程,然而不再將該變量設(shè)置為黑體,因為該變量的使用從該時刻開始不再與比特流獲取相關(guān)聯(lián)。
如果根據(jù)給定的壓縮標(biāo)準可以在超過一個等級處指定列邊界,則列邊界的語法可以在各種各樣的等級(例如序列和/或圖像等級)上相同。在該情況中,在相對較低的等級(即圖像等級)上指示的列邊界可以優(yōu)先于在在相對較高的等級(即序列等級)上指示的列邊界。
已解析columnwidth[]值可用于如下所示地導(dǎo)出列邊界:
在下文中,描述可以在圖像的編碼期間(即在片等級上)調(diào)整列邊界的本發(fā)明的實施方式。
參考圖5,圖5顯示了用于示出根據(jù)本發(fā)明的實施方式的列寬度修改500的圖示。在圖5中,可以在片等級上(例如基于來自片報頭的信息)修改列邊界的位置。修改500可能僅與當(dāng)前圖像有關(guān)并且與編碼比特流中的其他圖像無關(guān)。當(dāng)涉及編碼處理并行化并且可以由獨立的處理器或類似的單元處理列時,修改500可以提供這樣一種優(yōu)點,其中,該優(yōu)點在于可以根據(jù)有可能來自外部負載因子(其它過程與視頻編碼不相關(guān))的處理器負載、內(nèi)容復(fù)雜度(從一個列到另一個列其可以改變)或其他因子,調(diào)整每列的ctb數(shù)量。
在下文的描述中,為了方便起見,使用片報頭傳遞修改信息,因為在特定環(huán)境中片報頭可能是在h.264中最適合用于該目的的語法結(jié)構(gòu)。用于與超過一個片相關(guān)的信息的片報頭的使用不必符合h.264的語法模型(例如,在h.264中,與超過一個片相關(guān)的全部信息應(yīng)當(dāng)僅被包括在參數(shù)集合中),但是符合某些比較舊的視頻壓縮標(biāo)準(例如,在h.261中,可以從以前的gob報頭預(yù)測gob報頭信息,并且gob至少在一些方案中類似于或等效于h.264片)。與此同時,如果要在較新的視頻壓縮標(biāo)準中包括這樣一種機制,其中,該機制將允許在不僅與當(dāng)前片相關(guān)的片等級上的特性的編碼,則該語法結(jié)構(gòu)可能在一些情況中對于出現(xiàn)在片報頭本身之下的信息處于更合適的位置。例如在wd4中包括自適應(yīng)參數(shù)集合(aps),該aps被設(shè)計為攜帶有可能從一個圖像到另一個圖像改變的信息(與用于攜帶不可能從一個圖像到另一個圖像改變的信息的圖像參數(shù)集合相反)。在jct-vc中還考慮允許在片邊界“更新”aps的提案,該提案如果被接受則還將使得aps成為用于如下所述的列寬度更新信息的合適的語法結(jié)構(gòu)。
在本發(fā)明的一些實施方式中,當(dāng)當(dāng)前圖像的編碼/解碼完成時,已通過下文所討論的覆蓋機制被改變的列邊界回復(fù)到在圖像或序列等級指定的位置。該特征可以至少部分地補償使用片報頭來編碼與超過一個片相關(guān)的信息而導(dǎo)致的架構(gòu)不潔凈。例如不允許使用圖像報頭和h.264中的類似的數(shù)據(jù)結(jié)構(gòu)的一個可能的原因在于避免由于破壞的報頭結(jié)構(gòu)而導(dǎo)致的差錯傳播。在每個圖像之后回復(fù)到(已經(jīng)被設(shè)計為非常難以被破壞的)參數(shù)集合中所傳遞的數(shù)據(jù)可以確保報頭破壞僅限于一個給定圖像,而不對于已經(jīng)發(fā)生了報頭破壞的圖像之后的所有圖像。
在圖5中顯示了兩個原始列邊界501和502,其中,將原始列邊界501和502描述為斷續(xù)的黑體垂直線。在該實例中,假設(shè)編碼器由于某種原因而希望降低最左邊的列503的列寬度。解碼器進行該調(diào)整的動機通常不受限制并且可以包括例如處理器負載平衡方案或最左邊的列中的內(nèi)容(與其他列相比)相對高的編碼復(fù)雜度(其將在該列的ctb中導(dǎo)致更多比特),并且結(jié)果除非降低該列寬度否則將導(dǎo)致拉長片。
根據(jù)修改500,列邊界502跨越該圖像的整個垂直高度,而列邊界503僅跨越該圖像的整個垂直高度的一部分即兩個最上邊的ctb行。其余的列邊界相對于列邊界501偏移并且因此最左邊的列邊界503具有可變的寬度。列503可以例如被分割成具有不同寬度的兩個不同的片。如圖5中所示的,列503中的片504可能具有由原始列邊界501設(shè)置的第一寬度,而列503中的片505可能具有與該第一寬度不同并且由根據(jù)修改500的偏移列邊界設(shè)置的第二寬度。
可以通過包括邊界偏移值以便如果該偏移值為負則將列邊界例如向左移動或者可替換地如果該偏移值為正則將列邊界例如向右移動,來在片等級上修改列邊界。在最右邊的列503中的片505的片報頭可以例如包括這樣一種信息,其中,該信息的程度以致如關(guān)于片504所定義的最左邊的列與中間列之間的原始列邊界關(guān)于片505向左移動一個ctb。結(jié)果,ctb22現(xiàn)在屬于中間列(與最左邊的列503相反),并且在最左邊的列503中繼續(xù)對片505編碼,其中,在該特定的實例中,片505包括ctb20、21、30、31、40、41、50和50。
存在大量角落情況,其中,從高速緩沖存儲器的觀點看來該角落情況可能潛在地使得上述修改500的實現(xiàn)看起來不必要地復(fù)雜和/或無效率。然而,可以由可以在各種各樣的實施方式中強制的并且在下文中進一步描述的、關(guān)于列邊界移動的大量限制來有效地處理該角落情況。
在圖像解碼期間,列邊界的移動可能從這樣一種ctb行開始生效,其中,該片的第一ctb的地址位于該ctb行,以將邊界偏移信息包括在它的片報頭中。此后,邊界偏移可以仍然對于圖像中的所有剩余ctb行有效,除非該邊界偏移被后續(xù)片報頭中的另一個邊界偏移覆蓋。
可以以ctb寬度為單位來指示邊界偏移值。
比特流可以包括可以從該比特流被解析的“boundary_offset_flag”(即如圖6中所示)。如果boundary_offset_flag具有值為一,則left_boundary_offset和right_boundary_offset中的一個或兩個可以跟隨在該比特流中,其中,可以通過left_boundary_offset和right_boundary_offset來指定向右或向左的列邊界移動。否則,如果boundary_offset_flag具有值為零,則可能沒有任何偏移值出現(xiàn)在比特流中在boundary_offset_flag之后。按照h.264語法規(guī)范的風(fēng)格,下文顯示了用于指定偏移值的一個示例性語法:
如上所述,與無格式行(即第二行)相比的黑體變量(即以上第一行、第三行和第四行)可以表示作為確定變量值的副作用或者否則結(jié)合確定變量值而從比特流獲取的比特。
圖6是示出了根據(jù)本發(fā)明的實施方式,可用于基于如上所解析的邊界偏移值來確定列邊界的方法600的流程圖。
可以通過以下設(shè)置來開始(601)方法600,其中,為了方便起見將以下設(shè)置描述為c語言風(fēng)格偽代碼。該開始除了別的之外還從變量columnboundary[]復(fù)制解析邊界,其中,該columnboundary[]是從上述高級語法元素導(dǎo)出的,如下:
此后,確定(602)是否設(shè)置(上文介紹的)boundary_offset_flag。如果確定(602)不設(shè)置該標(biāo)志位,則不允許列邊界的更新,并且方法600分叉(603),因而如前所述地并且如該編碼所服從的視頻編碼方案中所指定地解碼(604)片,該解碼例如涉及對于片的每個ctb的處理如熵解碼、運動補償以形成預(yù)測器、系數(shù)的反量化和反變換以計算殘差、向運動補償預(yù)測器增加殘差、對結(jié)果樣本進行ctb內(nèi)去塊濾波等等。然后,如果確定(605)圖像中的最后一個片已經(jīng)被解碼(可以由許多不同機制(如檢測圖像id、臨時參考、出現(xiàn)時間戳或類似的語法元素的值的改變以及基于rtp時間戳的到期機制)來測試該情況),則方法600通過如上所述進行初始化(601)以處理比特流中的下一個圖像來繼續(xù)(606)。然而,如果確定(605)片不是該圖像的最后一個片,則方法600通過確定(602)是否設(shè)置了boundary_offset_flag來繼續(xù)(607)。
如果確定(602)設(shè)置了boundary_offset_flag,則片報頭包括可以被解析并且可用于修改colbound[]的邊界偏移,并且該方法分叉(608)以便列邊界的該修改。該修改可以通過識別該片所屬于的列來開始。該識別因而可以始于初始化(609),該初始化可以例如包括指令如下文的指令:
此時,方法600可以(例如在colbound[]中)搜遍列邊界的當(dāng)前狀態(tài),以便識別正在被解碼的片所屬于的特定的列。方法600可以例如通過對照存儲列邊界值(colbound[])檢查(611)如在初始化中所確定的并且存儲在firstctbmod中的、當(dāng)前ctb(它是所討論的片中的第一ctb)的ctb地址的水平地址分量來執(zhí)行該識別。通過增加(610)合適的搜索索引來搜遍列邊界,在列邊界被識別為位于當(dāng)前片的第一ctb(如firstctbmod中所表示的)的“右邊”(即就掃描次序而言具有更大的水平地址)之后,該搜索完成并且方法600帶著搜索索引i的幸存狀態(tài)退出(612)搜索循環(huán)。
可以通過向左列邊界和右列邊界增加如所初始化(609)的不同信息leftoffset和rigtoffset,根據(jù)搜索索引i的幸存狀態(tài),更新該正在被解碼的片所屬于的列的邊界??梢岳缛缦聦崿F(xiàn)該更新:
colbound[i-1]=colbound[i-1]+leftoffset;
colbound[i]=colbound[i]+rigtoffset;
此時,方法600進行如上所述的片解碼(604)。
在一些情況中,對列邊界指示強制包括以下限制的限制可能是有利的并且/或者方便的:
colbound[i]<colbound[i+1]
該限制要求在圖像中從左到右對列標(biāo)號并且還暗示偏移值不能用于交換列邊界次序。
也可以限制leftoffset、rigtoffset和隨后導(dǎo)出的colbound[]值,以使得每個結(jié)果列的寬度大于或等于最小列寬度。該最小列寬度可以是例如等級專用的并且/或者被指定在視頻壓縮標(biāo)準中。
在一些情況中,leftoffset和rigtoffset可能無法用于修改作為以前編碼的片的片邊界的colbound[]。
在一些情況中,colbound[0]的值可能無法從它的初始值‘0’被改變,以反映第一個標(biāo)號的列從圖像的最左邊邊緣開始。結(jié)果,在當(dāng)i=1時的該情況中l(wèi)eftoffset的值應(yīng)該是‘0’。
在一些情況中,colbound[num_column_minus_1+1]的值可能無法從它的初始值picturewidth被改變。結(jié)果,在當(dāng)i=num_column_minus_1+1時的情況中rigtoffset的值應(yīng)該是‘0’。
參考圖7,圖7顯示了根據(jù)所述實施方式的基于多處理器或多核架構(gòu)的解碼器700的方框圖。為了方便起見,假設(shè)解碼器700在被配置為用于或者適用于并行解碼的比特流上進行操作,例如通過要求使用如上所述對于列寬度具有特定限制(例如關(guān)于列寬度的上限和下限)的寬度。
在一些實施方式中,解碼器700可以將編碼比特流701接收到高級語法解釋器702中。在圖7中將比特流701顯示為斷續(xù)線條以將比特流701與(如實心細線所顯示的)元數(shù)據(jù)并且與(如實心黑體線條所顯示的)樣本數(shù)據(jù)區(qū)分開來。高級語法解釋器702可以被配置為用于參數(shù)集合的解碼以及在參數(shù)集合數(shù)據(jù)庫703中的后續(xù)存儲,其中,高級語法解釋器702具有到參數(shù)集合數(shù)據(jù)庫703的讀取和寫入通路??梢源鎯Σ⑶蚁蚪獯a器700中的一個或多個其他組件(例如向列/片解碼器705)提供704解碼參數(shù)集合。在一些實例中,高級語法解釋器702可能能夠進一步處理比特流701中所包括的高級語法和/或低級語法(低于cu等級)元素的熵編碼的一部分或全部,該能力可以依賴于熵解碼到列解碼器707、708的分配。高級語法解釋器702的輸出數(shù)據(jù)706可能是例如從比特流701導(dǎo)出的元數(shù)據(jù)分量,該元數(shù)據(jù)分量可能包括來自該比特流的信息如(經(jīng)過熵解碼創(chuàng)建的)符號或包括熵編碼符號的緩沖器以及控制信息。
列/片解碼器705可以被耦合到高級語法解釋器702并且到參數(shù)集合數(shù)據(jù)庫703并且可以從高級語法解釋器702接收輸出數(shù)據(jù)706。在一些實施方式中,列/片解碼器705可以解碼片報頭,并且例如通過考慮列邊界信息來識別該片的第一ctb所屬于的列,其中該列邊界信息可以位于存儲在參數(shù)集合數(shù)據(jù)庫703中的參數(shù)集合中并且基于片報頭中的參數(shù)集合參考來獲取704該列邊界信息。如果列/片解碼器705確定片位于單個列中,如上所述,則列/片解碼器705可以通過識別該片的第一ctb所屬于的列來識別該片所位于的列。
根據(jù)該列信息,列/片解碼器705可以選擇用于該片的解碼的一個列解碼器。兩個列解碼器707、708被顯示在圖7中作為解碼器700的實現(xiàn)的實例并且不適用于限制可能的實現(xiàn)。在可替換的實施方式中,編碼器700可以例如包括更多或更少數(shù)量的列解碼器,只要編碼器700包括至少一個列解碼器。如果在比特流701中存在的列比在解碼器700中所包括的列解碼器707、708更多,則可以選擇列解碼器707、708中的至少一個用于解碼多個列??商鎿Q地,如果在解碼器700中可用的列解碼器707、708比在比特流701中存在的列更多,則列解碼器707、708中的一個或多個可以是空閑的,因為將沒有列被列/片解碼器705分配給它們。雖然列/片解碼器705可以將比特流701中的列分配給列解碼器707、708,但是列/片解碼器705可以作為負載平衡問題來處理它們,其中,在熟悉了本文的公開內(nèi)容之后對于該負載平衡問題的許多可能的技術(shù)方案將顯而易見。
假設(shè)將當(dāng)前將要被解碼的片分配給列解碼器707,可以向列解碼器707轉(zhuǎn)發(fā)解碼該列所需要的數(shù)據(jù)709。該數(shù)據(jù)709可以與來自高級語法解釋器702的輸出數(shù)據(jù)706具有相似的特性。在一些實現(xiàn)中,列/片解碼器705可以刪減輸出數(shù)據(jù)706中對于列的解碼所不需要的那些部分或者使得那些部分不相關(guān),以力圖不作為數(shù)據(jù)709的一部分向解碼器707轉(zhuǎn)發(fā)該不需要的部分。
在一些實施方式中,比特流701可以不被配置為用于或者可以允許它的內(nèi)容在多個列解碼器(例如圖7中的707和708)中完全或者近乎完全獨立的解碼。然而,在其他情況中,可能需要在多個列解碼器之間共享一些元數(shù)據(jù)或簡單數(shù)據(jù)信息??梢栽诠餐礇Q的美國專利申請序列號13/336,475中找到與可能潛在地需要在多個列解碼器之間共享的數(shù)據(jù)的屬性和數(shù)量相關(guān)的細節(jié)。
在一些實施方式中,可以由合適地配置的共享單元710處理信息的共享??梢詫⒐蚕韱卧?10實現(xiàn)為共享存儲器、允許消息交換的排隊機制或者用于處理器間或內(nèi)核間通信的其他機制。在由共享單元710使得能夠信息共享的情況中,可能潛在地需要在列解碼器707、708之間共享元數(shù)據(jù)信息711(例如熵解碼狀態(tài)、運動向量預(yù)測器)和/或樣本數(shù)據(jù)712(例如用于內(nèi)部預(yù)測或運動補償?shù)牧械南噜徬袼氐闹?。共享單元710還可以被合適地配置為在片跨越相鄰列之間的列邊界的情況中,助于從列解碼器707、708中的一個到另一個的信息的“切換”,以力圖由列/片解碼器705依次地分配多個列解碼器707、708以解碼該片。
在一些實施方式中,例如在解碼器700在個人計算機或類似的硬件架構(gòu)中利用多個處理器或單個多核處理器的實現(xiàn)中,可以通過將解碼器700的全部狀態(tài)信息(包括例如全部參考圖像)保持在可以在列解碼器707、708之間共享的存儲器中,極大地助于作為運行在內(nèi)核或處理器上的過程的、列解碼器707、708的實現(xiàn)。在該情況中,共享單元710可以包括共享存儲器,其中在一些情況中可能由處理器間通信工具如臂板或在例如操作系統(tǒng)核心中實現(xiàn)的消息傳遞來輔助該共享存儲器。
列解碼器708的輸出可能是向組合器715提供的部分重構(gòu)的樣本713和相關(guān)元數(shù)據(jù)714。類似地,列解碼器707可以產(chǎn)生與由列解碼器708產(chǎn)生的部分重構(gòu)的樣本713和相關(guān)元數(shù)據(jù)714類似的部分重構(gòu)的樣本和相關(guān)元數(shù)據(jù)。可以將樣本713描述為“部分重構(gòu)的”,因為對于如視頻壓縮標(biāo)準中所指定的完全重構(gòu)而言可能在基于圖像的樣本生成器717中需要進一步的處理,如稍后所述??梢栽诮M合器715中將由列解碼器708提供的樣本713和相關(guān)元數(shù)據(jù)輸出714與列解碼器707的對應(yīng)的輸出組合,以生成列已處理圖像716和相關(guān)元數(shù)據(jù)719。
基于圖像的樣本生成器717可以被配置為基于從組合器715接收的列已處理圖像716和相關(guān)元數(shù)據(jù)719生成重構(gòu)圖像718。最終的重構(gòu)圖像718有可能用于被解碼器700輸出并且/或作為反饋回解碼器700中的其他組件(下文進一步所示)的參考圖像?;趫D像的樣本生成器717有利地實現(xiàn)計算無需非常密集但是需要到與全部列相關(guān)的信息的通路的任務(wù)。環(huán)內(nèi)濾波、后置濾波和差錯消除是那些任務(wù)的實例。但是,依賴于編碼比特流的特性,還有可能改為在列解碼器707、708中實現(xiàn)這些任務(wù)中的一些或全部(可以在共同未決的美國專利申請序列號13/336,475中找到該實現(xiàn)的進一步的細節(jié))。因此,在一些實施方式中,可以從解碼器700省略基于圖像的樣本生成器717。
在圖7中沒有具體地顯示參考圖像樣本和/或元數(shù)據(jù)到這樣一種位置的“反饋”,其中在該位置處列解碼器707、708具有到相關(guān)參考圖像樣本和/或元數(shù)據(jù)中所包括的信息的通路。在一些實施方式中,可以向列解碼器707、708提供相關(guān)的參考圖像存儲器,其中,在該相關(guān)的參考圖像存儲器中可能不需要參考圖像樣本和/或元數(shù)據(jù)的反饋。在其他實施方式中,可以向組合器715提供相反的數(shù)據(jù)路徑,其中,該相反的數(shù)據(jù)路徑允許來自基于圖像的樣本生成器717的參考圖像被反饋回到列解碼器707、708。在圖7中,由箭頭713、714、716和719雙向尖頭來指示該反饋路徑。在其他實施方式中,可以將該參考圖像存儲在共享單元710中(在該情況中可以在基于圖像的樣本生成器717與共享單元710之間提供對應(yīng)的數(shù)據(jù)路徑,但是在圖7中為了增強簡潔性未顯示該對應(yīng)的數(shù)據(jù)路徑)。
圖8是示出了根據(jù)本發(fā)明的實施方式基于數(shù)據(jù)處理系統(tǒng)(例如個人計算機(“pc”))800的實現(xiàn)的方框圖。到此時為止,為了方便起見,未詳細地將描述明確地與編碼器和/或解碼器的可能的物理實現(xiàn)相關(guān)。基于軟件和/或組件的組合的許多不同的物理實現(xiàn)是可能的。在一些實施方式中,在許多情況中由于與成本效率和/或功耗效率相關(guān)的原因,可以例如使用定制或門陣列集成電路實現(xiàn)視頻編碼器和/或解碼器。
另外,使用通用處理架構(gòu)(它的一個實例是數(shù)據(jù)處理系統(tǒng)800)的基于軟件的實現(xiàn)是可能的。例如通過使用個人計算機或類似的設(shè)備(例如機頂盒、膝上型計算機、移動設(shè)備),該實現(xiàn)策略可以是可能的,如下所述。如圖8中所示的,根據(jù)所述實施方式,可以用包括這樣一種指令的計算機可讀介質(zhì)801(例如cd-rom、半導(dǎo)體rom、記憶棒)的形式提供用于pc或類似的設(shè)備的編碼器和/或解碼器,其中,該指令被配置為使處理器802能夠單獨地或與加速器硬件(例如圖形處理器)803組合地、結(jié)合耦合到處理器802和/或加速器硬件803的存儲器804來執(zhí)行編碼或解碼。可以將處理器802、存儲器804和加速器硬件803耦合到可用于向/從前述設(shè)備傳遞比特流和未壓縮視頻的總線805。根據(jù)應(yīng)用,可以將用于比特流和未壓縮視頻的輸入/輸出的外圍設(shè)備耦合到總線805??梢岳缃?jīng)過合適的接口(如抓幀器807或usb鏈路808)將相機806依附到總線805以便未壓縮視頻的實時輸入。類似的接口可用于未壓縮視頻存儲設(shè)備如vtr。可以經(jīng)過顯示器設(shè)備(如計算機監(jiān)視器或tv屏幕)809輸出未壓縮視頻。dvdrw驅(qū)動器或等效物(例如cd-rom、cd-rw藍光光盤、記憶棒)810可用于實現(xiàn)比特流的輸入和/或輸出。最后,為了在網(wǎng)絡(luò)812上的實時傳輸,網(wǎng)絡(luò)接口811可用于依賴于到網(wǎng)絡(luò)812的接入鏈路的容量以及網(wǎng)絡(luò)812自身來傳遞比特流和/或未壓縮視頻。
根據(jù)各種各樣的實施方式,可以由各自的軟件模塊實現(xiàn)上述方法。根據(jù)其他實施方式,可以由各自的硬件模塊實現(xiàn)上述方法。根據(jù)其他實施方式,可以由軟件模塊與硬件模塊的組合實現(xiàn)上述方法。
雖然為了方便起見主要參考一種示例性方法來描述實施方式,但是上述參考數(shù)據(jù)處理系統(tǒng)800所討論的裝置可以根據(jù)所述實施方式被編程為使得所述方法能夠?qū)嵤?。此外,用于?shù)據(jù)處理系統(tǒng)800的制品(如包括其上記錄有程序指令的預(yù)記錄存儲介質(zhì)或其他類似的計算機可讀介質(zhì)或產(chǎn)品)可以指導(dǎo)數(shù)據(jù)處理系統(tǒng)800以便有助于所述方法的實現(xiàn)。應(yīng)當(dāng)理解的是,除了所述方法之外,該裝置和制品也全部落入所述實施方式的范圍之中。
具體而言,根據(jù)本發(fā)明的一個實施方式,可以將當(dāng)被執(zhí)行時導(dǎo)致由數(shù)據(jù)處理系統(tǒng)800執(zhí)行本文所述的方法的指令序列包括在數(shù)據(jù)載體產(chǎn)品中。該數(shù)據(jù)載體產(chǎn)品可以被加載到數(shù)據(jù)處理系統(tǒng)800中并且被數(shù)據(jù)處理系統(tǒng)800運行。另外,根據(jù)本發(fā)明的一個實施方式,可以將該當(dāng)被執(zhí)行時導(dǎo)致由數(shù)據(jù)處理系統(tǒng)800執(zhí)行本文所述的方法的指令序列包括在計算機程序或軟件產(chǎn)品中。該計算機程序或軟件產(chǎn)品可以被加載到數(shù)據(jù)處理系統(tǒng)800中并且被數(shù)據(jù)處理系統(tǒng)800運行。此外,根據(jù)本發(fā)明的一個實施方式,可以將當(dāng)被執(zhí)行時導(dǎo)致由數(shù)據(jù)處理系統(tǒng)800執(zhí)行本文所述的方法的指令序列包括在集成電路產(chǎn)品(例如硬件模塊或多個模塊)中。該集成電路產(chǎn)品可以被安裝到數(shù)據(jù)處理系統(tǒng)800中。
本文所述的發(fā)明的實施方式僅適用于示例。因此,可以對于這些實施方式做出對細節(jié)的各種各樣的變化和/或修改,全部該變化和/或修改都落入本發(fā)明的范圍中。