專利名稱:使用幀高速緩存來改善分組丟失恢復(fù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及用于數(shù)字地編碼、解碼和處理視頻、圖像及其它數(shù)字媒體內(nèi)容的技術(shù)。本發(fā)明由其涉及通過幀高速緩存來改善分組丟失恢復(fù)。
背景技術(shù):
數(shù)字視頻消耗大量存儲和傳輸容量。典型的原始數(shù)字視頻序列每秒包括15或30幀。每一幀都可包括數(shù)以萬計(jì)或十萬計(jì)的像素(也稱為象素)。每個(gè)像素表示圖像一個(gè)微小的元素。在原始形式中,計(jì)算機(jī)通常將像素表示為總計(jì)為24比特的三個(gè)樣本的集合。例如,一個(gè)像素可包括定義該像素的灰度級分量的8比特亮度樣本(也稱為luma樣本),以及定義該像素的色彩分量的兩個(gè)8比特色度樣本值(也稱為chroma樣本)。由此,典型的原始數(shù)字視頻序列每秒的比特?cái)?shù),或稱比特率,可為每秒五百萬比特或以上。
許多計(jì)算機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)缺乏處理原始數(shù)字視頻的資源。為此原因,工程師們使用壓縮(也稱為編碼)來降低數(shù)字視頻的比特率。壓縮通過將視頻轉(zhuǎn)換為較低比特率的形式降低存儲和傳輸視頻的消耗。解壓縮(也稱為解碼)從已壓縮的形式重構(gòu)原始視頻版本?!熬幗獯a器”是一種編碼器/解碼器系統(tǒng)。壓縮可以是無損的,其中視頻的質(zhì)量沒有損失,但比特率的降低受到視頻數(shù)據(jù)的可變性的固有量(有時(shí)稱為熵)限制?;蛘?,壓縮可以是有損的,其中視頻的質(zhì)量有損失,但可實(shí)現(xiàn)的比特率的降低更為可觀。有損壓縮常常被結(jié)合無損壓縮來使用——在一種系統(tǒng)設(shè)計(jì)中,有損壓縮建立信息的近似,而無損壓縮被應(yīng)用以表示該近似。
一般而言,視頻壓縮技術(shù)包括“圖像內(nèi)”壓縮和“圖像間”壓縮,其中圖像是例如逐行掃描的視頻幀、隔行的視頻幀(具有交替的行用于視頻半幀(field))、或隔行的視頻半幀。一般而言,視頻序列在給定幀內(nèi)及相繼幀之間包含相當(dāng)大量的冗余。例如,人眼一般不會注意連續(xù)的視頻幀里相似背景中的細(xì)微的差異。壓縮通過移除所發(fā)送的比特流內(nèi)某部分冗余素材,然后當(dāng)該圖像被解壓縮時(shí)在接收端將其加回,來利用這些冗余。從視頻幀中減去的兩種常見的冗余是空間和時(shí)間冗余??臻g冗余在單個(gè)幀內(nèi)的相鄰像素之間發(fā)生。使用空間冗余來壓縮的幀(稱為內(nèi)幀或I幀)在該幀自身內(nèi)包含重構(gòu)圖像所需的所有信息——它們是自包含的。使用時(shí)間冗余的幀(諸如P幀和B幀)需要來自其它幀的信息以進(jìn)行解碼。P幀(預(yù)測編碼幀)是使用來自前面的I幀和/或P幀的信息來編碼的,并且必須使用這些信息來解碼。B幀(雙向預(yù)測編碼幀)是同時(shí)使用來自前面和后面的I幀和P幀兩者的信息來編碼的。運(yùn)動(dòng)估計(jì)通過將獨(dú)特的內(nèi)容隨從前一已編碼的圖像(稱為參考幀)創(chuàng)建的運(yùn)動(dòng)預(yù)測圖像一起編碼來移除連續(xù)視頻幀(幀間)中的時(shí)間冗余。如果參考幀丟失,則其隨后的各預(yù)測幀將無法被譯碼——傳輸誤差傳播到后續(xù)各幀。
對于逐行幀,圖像內(nèi)壓縮的技術(shù)壓縮個(gè)體幀(通常稱為I幀或關(guān)鍵幀),而圖像間壓縮的技術(shù)參考在前和/或后續(xù)的幀(通常稱為參考幀或錨幀)來壓縮幀(通常稱為預(yù)測幀、P幀、或B幀)。I幀(自包含的)和P幀(一般參考在前的幀)本身也可以是參考幀,而同時(shí)參考在前和后續(xù)幀兩者的B幀通常本身不會被用作參考。
當(dāng)數(shù)據(jù)在最終視頻被顯示以前被解壓縮時(shí),解碼器通常執(zhí)行壓縮操作的逆操作。例如,解碼器在解壓縮數(shù)據(jù)時(shí)可執(zhí)行熵解碼、逆量化、以及逆轉(zhuǎn)換。當(dāng)使用運(yùn)動(dòng)補(bǔ)償時(shí),解碼器(和編碼器)從一個(gè)或多個(gè)先前重構(gòu)的幀(現(xiàn)在被用作參考幀)重構(gòu)一個(gè)幀,然后該最近被重構(gòu)的幀可作為后面各幀的運(yùn)動(dòng)補(bǔ)償?shù)膮⒖紟褂谩?br>
通過網(wǎng)絡(luò)發(fā)送的分組容易被丟失——分組被漏失。此丟失的發(fā)生是隨機(jī)且不可預(yù)測的。此外,視頻壓縮流數(shù)據(jù)對延遲高度敏感;因?yàn)榉纸M需要按照它們被發(fā)送的相同順序被重新裝配;過多的被延遲的分組會引起跳躍的、中斷的信號。傳送延遲問題還可能在重新發(fā)送新的I幀時(shí)發(fā)生;新幀易受所有破壞了丟失的參考幀的相同問題的影響。此外,在有損編碼方案中,壓縮被設(shè)計(jì)成滿足用于存儲和傳輸?shù)哪繕?biāo)比特率。高度壓縮是通過降低重構(gòu)圖像的質(zhì)量來實(shí)現(xiàn)的。因此,被漏失或延遲的分組所引起的額外丟失可能將圖像降低到可接受的等級以下。
處理分組丟失的容限對實(shí)時(shí)視頻編解碼器(RTC)在有噪網(wǎng)絡(luò)(容易產(chǎn)生丟失)中表現(xiàn)良好來說至關(guān)重要。大多數(shù)現(xiàn)有視頻編解碼器在參考幀丟失時(shí),通過請求新的I幀來應(yīng)對分組丟失。其它則使用基于時(shí)間片(slice)的編碼,這會增加信令開銷。圖1示出通過請求新I幀來進(jìn)行的常規(guī)分組丟失恢復(fù)。
在此現(xiàn)有技術(shù)的方法中,在解碼器102處接收到I幀104。它隨即被用于解釋/重構(gòu)后續(xù)的相關(guān)的P幀106。下一個(gè)相關(guān)的幀,P幀108被破壞,因?yàn)閬y序地接收了或丟失了過多的幀。后續(xù)的P幀110和任何其后的幀不再能被重構(gòu)。在目的節(jié)點(diǎn)(此處由解碼器102表示)處,生成I幀請求并向源節(jié)點(diǎn)(此處由編碼器114表示)發(fā)送。每個(gè)后續(xù)的P幀或B幀都無法被重構(gòu),直至接收到新的I幀。一旦源節(jié)點(diǎn)114接收到請求,它即裝配新的I幀并使用通信信道將其發(fā)送到目的節(jié)點(diǎn)102。在接收到新I幀112以后,目的節(jié)點(diǎn)可成功地將各后續(xù)P幀解碼。但是,這導(dǎo)致等價(jià)于發(fā)送初始請求所需的時(shí)間、加上將I幀編碼的時(shí)間、加上將I幀發(fā)送到目的節(jié)點(diǎn)102的時(shí)間的延遲116。此外,發(fā)送者和接收者可能分開很長的實(shí)際距離,而很長的距離導(dǎo)致明顯的滯后時(shí)間,還有視頻質(zhì)量的相應(yīng)降低。
在另一種現(xiàn)有技術(shù)的方法中,以有規(guī)律的間隔發(fā)送I幀104、112。當(dāng)I幀112由于破壞或延遲被丟失時(shí),解碼器等待直至接收到下一I幀,從而對后續(xù)P幀110、108進(jìn)行了錯(cuò)誤的解碼。
因此,有必要改進(jìn)用于通過基于有損分組的網(wǎng)絡(luò)傳輸壓縮視頻的方法和系統(tǒng)。
發(fā)明內(nèi)容
本文中所描述的一種視頻編解碼器包括編碼器處的幀高速緩存,以及解碼器處的對應(yīng)的幀高速緩存,其中每一個(gè)都可同步工作。解碼器高速緩存中的幀被用來幫助解釋解碼器處的幀。要被解釋的幀可能是使用存儲在編碼器高速緩存中的相同幀的副本已生成的。
還提供一種系統(tǒng)實(shí)現(xiàn)。它包括將數(shù)據(jù)分組編碼為幀的編碼器,以及能夠存儲幀或其部分的編碼器高速緩存。它還包括帶有解碼器高速緩存的解碼器,該高速緩存也可存儲幀或其部分。解碼器可用于檢測分組丟失。當(dāng)檢測到此類丟失時(shí),在一些實(shí)施例中,編碼器使用存儲在編碼器高速緩存處的幀來編碼一個(gè)幀,然后在解碼器處使用存儲在解碼器高速緩存中的幀將該幀解碼。
此高速緩存機(jī)制提供以下關(guān)鍵特征a)在分組丟失恢復(fù)過程中更有效率的帶寬利用,以及b)消除了與基于時(shí)間片的編碼相關(guān)聯(lián)的信令開銷。
從以下參考附圖對各實(shí)施例的詳細(xì)描述中,本發(fā)明的其它特征和優(yōu)點(diǎn)將被明確。
圖1是現(xiàn)有技術(shù)的幀級分組丟失恢復(fù)的示意圖。
圖2是利用本文中所描述的幀高速緩存的視頻編碼器的框圖。
圖3是利用本文中所描述的幀高速緩存的視頻解碼器的框圖。
圖4是使用幀高速緩存從分組丟失中恢復(fù)的一種示例性方法的流程圖。
圖5A是編碼器高速緩存一個(gè)幀而解碼器高速緩存相同幀的幀級示意圖。
圖5B是被破壞的P幀到達(dá)解碼器處的幀級示意圖。
圖5C是示出解碼器使用被高速緩存的幀來解釋P幀的幀級示意圖。
圖5D是通過反饋信道報(bào)告分組丟失的框圖。
圖6是用于實(shí)現(xiàn)視頻編碼器/解碼器高速緩存的合適的方法的流程圖。
圖7是適用于圖2和3的視頻編碼器/解碼器的計(jì)算環(huán)境的框圖。
具體實(shí)施例方式
以下描述針對在視頻編碼器和視頻解碼器兩者中實(shí)現(xiàn)幀高速緩存,它被設(shè)計(jì)成提供適度的分組丟失恢復(fù)和有效的帶寬利用的有效組合。幀高速緩存的一種示例性應(yīng)用是在圖像或視頻編碼器和解碼器中。由此,幀高速緩存是在一般化的圖像或視頻編碼器和解碼器的上下文中描述的,但是也可被結(jié)合到細(xì)節(jié)上與下述的示例性裝置不同的各種其它圖像和視頻編解碼器的編碼器和解碼器中。
1.一般化的視頻編碼器和解碼器圖2是一般化的視頻編碼器200的框圖,而圖3是一般化的視頻解碼器300的框圖,幀高速緩存可被結(jié)合到其中。
所示的編碼器和解碼器內(nèi)部各模塊之間的關(guān)系指示編碼器和解碼器中的主信息流;為簡單起見,沒有示出其它關(guān)系。特別地,圖2和3通常不示出指示編碼器設(shè)置、模式、表等為視頻序列、幀、宏塊、塊等所使用的輔助信息(side information)。此類輔助信息是通常在輔助信息的熵編碼以后在輸出比特流中被發(fā)送的。輸出比特流的格式可以是Windows Media Video格式或其它格式。
取決于實(shí)現(xiàn)和期望的壓縮類型,編碼器200或解碼器300的各個(gè)模塊可被添加、省略、分成多個(gè)模塊、與其它模塊集合、和/或用類似模塊代替。在替換實(shí)施例中,帶有不同模塊和/或模塊的其它配置的編碼器和解碼器執(zhí)行所述技術(shù)中的一種或數(shù)種。
A.視頻編碼器圖2是一般的視頻編碼器系統(tǒng)200的框圖。編碼器系統(tǒng)200接收包括當(dāng)前幀205在內(nèi)的視頻幀序列,并生成已壓縮的視頻信息295作為輸出。視頻編碼器的特定實(shí)施例通常使用一般化編碼器200的變體或增補(bǔ)版本。
編碼器系統(tǒng)200壓縮預(yù)測幀和關(guān)鍵幀。為了說明,圖2示出關(guān)鍵幀通過編碼器系統(tǒng)200的路徑,以及前向預(yù)測幀的路徑。編碼器系統(tǒng)200的許多組件都被用于壓縮關(guān)鍵幀和預(yù)測幀兩者。取決于所壓縮的信息的類型,那些組件所執(zhí)行的確切操作可有所不同。
預(yù)測幀[可以是P幀、B幀(雙向預(yù)測)、或幀間編碼幀]是以從一個(gè)或多個(gè)其它幀的預(yù)測(或差異)的形式表示的。預(yù)測殘余是預(yù)測幀和原始幀之間的差異。與之相反,關(guān)鍵幀[也稱為I幀、或幀內(nèi)編碼幀]是不用參考其它幀而壓縮的。
如果當(dāng)前幀205是前向預(yù)測幀,則運(yùn)動(dòng)估計(jì)器210根據(jù)參考幀225(緩沖在幀存儲220中的前一重構(gòu)幀)估算當(dāng)前幀205的宏塊或其它像素集合。在替換實(shí)施例中,參考幀可以是后面的幀,或者當(dāng)前幀可被雙向地預(yù)測。運(yùn)動(dòng)估計(jì)器210輸出諸如運(yùn)動(dòng)矢量等運(yùn)動(dòng)信息215作為輔助信息。運(yùn)動(dòng)補(bǔ)償器230將運(yùn)動(dòng)信息215應(yīng)用于前一重構(gòu)幀225以構(gòu)成經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前幀235。但是,預(yù)測通常是不完美的,而經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前幀235和原始當(dāng)前幀205之間的差異是預(yù)測殘余245?;蛘哌\(yùn)動(dòng)估計(jì)器210和運(yùn)動(dòng)補(bǔ)償器230應(yīng)用其它類型的運(yùn)動(dòng)估計(jì)/補(bǔ)償。
頻率變換器260將空間域的視頻信息轉(zhuǎn)換成頻域(即,頻譜)數(shù)據(jù)。對于基于塊的視頻幀,頻率變換器260應(yīng)用以下部分中所描述的變換,它具有類似于離散余弦變換[“DCT”]的屬性。在一些實(shí)施例中,頻率變換器260為關(guān)鍵幀對空間預(yù)測殘余塊應(yīng)用頻率變換。頻率變換器260可應(yīng)用8×8、8×4、4×8或其它大小的頻率變換。
然后量化器270量化頻譜數(shù)據(jù)系數(shù)塊。量化器270用逐幀或其它方式改變的步長,對頻譜數(shù)據(jù)應(yīng)用均勻的、標(biāo)量的量化?;蛘?,量化器270對頻譜數(shù)據(jù)系數(shù)應(yīng)用另一類量化,例如,非均勻的、矢量的、或非自適應(yīng)的量化,或者在不使用頻率變換的編碼器系統(tǒng)中直接量化空間域數(shù)據(jù)。除了自適應(yīng)量化以外,編碼器200可使用幀丟棄、自適應(yīng)過濾、或其它技術(shù)來進(jìn)行速率控制。
當(dāng)后續(xù)的運(yùn)動(dòng)估計(jì)/補(bǔ)償需要重構(gòu)的當(dāng)前幀時(shí),逆量化器276對經(jīng)量化的頻譜數(shù)據(jù)系數(shù)執(zhí)行逆量化。然后頻率逆變換器266執(zhí)行頻率變換器260的操作的逆操作,以生成重構(gòu)的預(yù)測殘余(對應(yīng)于預(yù)測幀)或重構(gòu)的關(guān)鍵幀。如果當(dāng)前幀205是關(guān)鍵幀,則重構(gòu)的關(guān)鍵幀被視為重構(gòu)的當(dāng)前幀(未示出)。如果當(dāng)前幀205是預(yù)測幀,則重構(gòu)的預(yù)測殘余被增加到經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)漠?dāng)前幀235,以構(gòu)成重構(gòu)的當(dāng)前幀。幀存儲220緩沖該重構(gòu)的當(dāng)前幀,以供預(yù)測下一個(gè)幀使用。在一些實(shí)施例中,編碼器200對重構(gòu)的幀應(yīng)用解塊過濾器,以自適應(yīng)地平滑幀塊中的不連續(xù)。
熵編碼器280壓縮量化器270的輸出,以及某些輔助信息(例如,運(yùn)動(dòng)信息215、量化步長)。典型的熵編碼技術(shù)包括算術(shù)編碼、差分編碼、霍夫曼編碼、行程長度編碼、LZ編碼、字典編碼、以及上述的組合。熵編碼器280通常對不同類型的信息(例如,DC系數(shù)、AC系數(shù)、等等)使用不同的編碼技術(shù),并且可在特定編碼技術(shù)內(nèi)從多個(gè)代碼表中間進(jìn)行選擇。
熵編碼器280將已壓縮的視頻信息295放到緩沖器290中。緩沖等級指示被反饋給比特率自適應(yīng)模塊。已壓縮的視頻信息295以恒定或相對恒定的比特率被從緩沖器290排空并存儲以用于后續(xù)的此比特率的流傳輸?;蛘?,編碼器系統(tǒng)200在壓縮以后立即流傳輸已壓縮的視頻信息295。
在緩沖器290以前或以后,已壓縮的視頻信息295可被信道編碼以通過網(wǎng)絡(luò)傳輸。信道編碼可對已壓縮的視頻信息295運(yùn)用檢錯(cuò)和糾錯(cuò)數(shù)據(jù)。
B.視頻解碼器圖3是一般的視頻解碼器系統(tǒng)300的框圖。解碼器系統(tǒng)300接收已壓縮的視頻幀序列的信息395并產(chǎn)生包括重構(gòu)幀305在內(nèi)的輸出。視頻解碼器的特定實(shí)施例通常使用一般化的解碼器300的變體或增補(bǔ)版本。
解碼器系統(tǒng)300解壓縮預(yù)測幀和關(guān)鍵幀。為了說明,圖3示出關(guān)鍵幀通過解碼器系統(tǒng)300的路徑,以及前向預(yù)測幀的路徑。解碼器系統(tǒng)300的許多組件都被用于解壓縮關(guān)鍵幀和預(yù)測幀兩者。取決于所解壓縮的信息的類型,那些組件所執(zhí)行的確切操作可能有所不同。
緩沖器390接收已壓縮視頻序列的信息395,并使已接收的信息對熵解碼器380可用。緩沖器390通常以時(shí)間上相當(dāng)恒定的速率接收信息,并且包括抖動(dòng)緩沖器來平滑帶寬或傳輸中的短期變動(dòng)。緩沖器390還可包括回放緩沖器和其它緩沖器?;蛘?,緩沖器390以變化的速率接收信息。已壓縮的視頻信息395可在到達(dá)緩沖器390之前,或在其離開緩沖器390之后,或兩者皆可,被解碼并處理以進(jìn)行檢錯(cuò)和糾錯(cuò)。
熵解碼器380對經(jīng)熵編碼的已量化數(shù)據(jù)、以及經(jīng)熵編碼的輔助信息(例如,運(yùn)動(dòng)信息、量化步長)進(jìn)行熵解碼,通常是應(yīng)用在編碼器200中執(zhí)行的熵編碼的逆操作。熵解碼技術(shù)包括算術(shù)解碼、差分解碼、霍夫曼解碼、行程長度解碼、LZ解碼、字典解碼、以及上述的組合。熵解碼器380通常對不同種類的信息(例如,DC系數(shù)、AC系數(shù)、不同種類的輔助信息)使用不同的解碼技術(shù),并可在特定解碼技術(shù)內(nèi)從多個(gè)代碼表中間進(jìn)行選擇。
如果要被重構(gòu)的幀是前向預(yù)測幀,則運(yùn)動(dòng)補(bǔ)償器330將運(yùn)動(dòng)信息315應(yīng)用于參考幀325,以構(gòu)成對被重構(gòu)的幀305的預(yù)測335。例如,運(yùn)動(dòng)補(bǔ)償器330使用宏塊運(yùn)動(dòng)矢量在參考幀中尋找宏塊。幀緩沖器320存儲先前所重構(gòu)的幀以作為參考幀使用。或者,運(yùn)動(dòng)補(bǔ)償器應(yīng)用另一種類型的運(yùn)動(dòng)補(bǔ)償。運(yùn)動(dòng)補(bǔ)償器330的預(yù)測通常是不完美的,所以解碼器300還重構(gòu)預(yù)測殘余345。
當(dāng)解碼器300需要已重構(gòu)的幀用于后續(xù)的運(yùn)動(dòng)補(bǔ)償時(shí),幀存儲320緩沖已重構(gòu)的幀305以供預(yù)測下一個(gè)幀時(shí)使用。在一些實(shí)施例中,編碼器200對已重構(gòu)的幀305運(yùn)用解塊過濾器,以自適應(yīng)地平滑幀塊的不連續(xù)。
逆量化器370逆量化經(jīng)熵解碼的數(shù)據(jù)。一般而言,逆量化器370根據(jù)以逐幀或其它方式改變的步長,對經(jīng)熵解碼的數(shù)據(jù)應(yīng)用均勻的、標(biāo)量的逆量化?;蛘撸媪炕?70對數(shù)據(jù)應(yīng)用另一種類型的逆量化,例如,非均勻的、矢量的、或非自適應(yīng)的逆量化,或者在不使用逆頻率變換的解碼器系統(tǒng)中直接逆量化空間域數(shù)據(jù)。
頻率逆變換器360將量化的、頻域的數(shù)據(jù)變換為空間域的視頻信息。對于基于塊的視頻幀,頻率逆變換器360應(yīng)用以下部分中所描述的逆變換。在一些實(shí)施例中,頻率逆變換器360為關(guān)鍵幀對空間預(yù)測殘余應(yīng)用頻率逆變換。頻率逆變換器360可應(yīng)用8×8、8×4、4×8或其它大小的頻率逆變換。
C.幀高速緩存在本文所描述的視頻編解碼器體系結(jié)構(gòu)內(nèi)使用幀高速緩存的實(shí)現(xiàn)中,較佳的是在編碼器和解碼器兩處都依次高速緩存參考幀。當(dāng)參考幀被丟失,可使用解碼器處高速緩存的適當(dāng)參考幀來解碼后續(xù)的相關(guān)幀。這產(chǎn)生以下好處A)更有效率的帶寬利用現(xiàn)有技術(shù)的方法要求I幀被生成并發(fā)送到編碼器。而此方法允許特殊類型的幀,SP幀被發(fā)送到解碼器,然后被高速緩存直至被需要。SP幀一般可用比相同質(zhì)量的I幀更少的比特來編碼,因此比起使用等價(jià)的I幀,SP幀使用較少的帶寬。
B)較快的差錯(cuò)恢復(fù)較佳的是,當(dāng)分組丟失發(fā)生時(shí),SP幀已被高速緩存在解碼器處;這允許以很少的滯后時(shí)間來解釋流中的下一個(gè)P幀。
2.示例性方法概述所描述的實(shí)施例包括用于在解碼器處高速緩存幀、然后使用被高速緩存的幀來重構(gòu)依賴于已被破壞或丟失的參考幀的P幀和B幀的技術(shù)和工具。高速緩存可被集成為視頻解碼器300(圖3)的一部分,視頻編碼器200(圖2)的一部分,或較佳的是同時(shí)被集成為這兩者的一部分。當(dāng)解碼器檢測到分組丟失時(shí),它向編碼器300發(fā)送消息,編碼器300隨即基于共享的已高速緩存的若干幀中的一個(gè)幀生成新的參考幀。所生成的參考幀隨即被發(fā)送給解碼器。已高速緩存的幀在解碼器處被用來解碼所生成的幀和后續(xù)的相關(guān)幀,直至另一個(gè)參考幀到達(dá)解碼器處。本文中所描述的流程圖元素只是示例;根據(jù)所描述的技術(shù),可使用其它流程圖元素。此外,根據(jù)所描述的技術(shù)和工具,流程圖元素可按不同順序發(fā)生,或者特定的過程塊可被跳過。
所描述的技術(shù)和工具可彼此結(jié)合或結(jié)合其它技術(shù)和工具來使用,或可被獨(dú)立使用。
參考圖4,流程圖400示出本文中所揭示的方法的簡要概覽。在過程框402,一部分要通過網(wǎng)絡(luò)發(fā)送的視頻信號被分配給若干個(gè)分組。在過程框404,編碼器將至少一部分分組編碼為若干個(gè)幀。這些幀可包括參考幀325(諸如I幀和P幀),還可包括B幀,后者不被用作為任何其它幀類型的參考。諸如跳幀等其它類型的幀也可被編碼為幀。在可選的過程框406,幀(通常是參考幀)可被高速緩存在編碼器處。如果該幀被高速緩存,則它在其幀頭部被賦予類型“已高速緩存的幀”(CF)。然后,被高速緩存的幀連同其它幀被發(fā)送到解碼器。一旦幀在解碼器處,在過程框410,它就被高速緩存在解碼器高速緩存中。典型的被高速緩存的幀類型是P幀和I幀。
如果后續(xù)的參考幀被丟失,則已高速緩存的幀可被用來解壓縮以后的相關(guān)幀,如在過程框412所示。流程圖400僅示出一個(gè)示例性實(shí)施例,且無論如何不應(yīng)被解釋為是限制性的。例如,在決策框406,與編碼器相關(guān)聯(lián)的高速緩存是可選的。方法400可在如圖2和3中所示的視頻編解碼器中實(shí)現(xiàn),而該視頻編解碼器可在軟件、硬件、或兩者的結(jié)合中實(shí)現(xiàn)。
3.用于高速緩存幀的示例性方法圖5A到5D示出高速緩存幀以在有噪網(wǎng)絡(luò)中實(shí)現(xiàn)視頻編解碼器的最優(yōu)性能的示例性方法。參考圖5D,在一個(gè)示例性實(shí)施例中,幀通過諸如RTP(實(shí)時(shí)傳輸協(xié)議)508D的主信道從編碼器502D被發(fā)送到解碼器506D。網(wǎng)絡(luò)常常丟失分組,或亂序地傳遞分組。分組還可能被延遲隨機(jī)的時(shí)間量,這也可能令它們不可使用。分組丟失事件被解碼器506D檢測到,并通過反饋信道從解碼器向編碼器502D發(fā)信號通知。為正確重構(gòu)消息,在一些實(shí)施例中,RTP 508D頭部包含信息和序列號,它們都允許接收器正確地重新將分組排序并確定所丟失的分組個(gè)數(shù)。RTP 508D由其控制協(xié)議(RTPC)504D增強(qiáng),后者用來提供用于監(jiān)視數(shù)據(jù)傳遞的反饋信道。每個(gè)數(shù)據(jù)分組都有一個(gè)序列號,通常每個(gè)后續(xù)數(shù)據(jù)分組遞增1。在一個(gè)示例性實(shí)施例中,當(dāng)某個(gè)序列號未被接收到時(shí),分組丟失被解碼器506D檢測到。一旦解碼器506D發(fā)現(xiàn)丟失分組,它即通過反饋信道504D發(fā)送消息,以通知編碼器502D哪個(gè)(或哪些)分組已被丟失。在一些實(shí)施例中,僅提供關(guān)于最初丟失的分組的信息。在其它實(shí)施例中,還提供諸如漏失的分組數(shù)或丟失的具體分組的列表等附加信息。較佳的是在報(bào)告窗口中使用最早丟失的分組的時(shí)間戳來發(fā)送分組丟失的位置。此信息使編碼器502D能夠確定要使用哪個(gè)已高速緩存的參考。
參考圖5A,編碼器502A周期性地將幀高速緩存到幀高速緩存504A中。要高速緩存哪些幀,高速緩存應(yīng)該多頻繁地發(fā)生,以及在單次應(yīng)能高速緩存的幀數(shù)是非常取決于實(shí)現(xiàn)方式的。在一些實(shí)施例中,被高速緩存的幀是參考幀,即P幀和I幀。也可高速緩存其它幀類型。被高速緩存的幀506A(或其副本)還被發(fā)送給解碼器512A。也存儲在編碼器高速緩存504A中的這樣一個(gè)幀在其頭部中被定義為幀類型CF(已高速緩存的幀)。在一些實(shí)施例中,此頭部通過令解碼器512A知道此特定幀應(yīng)被高速緩存在解碼器高速緩存510A中以供稍后使用,來允許編碼器502A和解碼器512A的同步。以下的表1示出包括已高速緩存的幀(CF)類型在內(nèi)的幀類型代碼的一個(gè)示例性實(shí)施例。
表1幀類型代碼
當(dāng)CF類型的幀508A到達(dá)解碼器512A時(shí),它被存儲在解碼器幀高速緩存510A中。在解碼器512A處存儲每個(gè)CF類型的幀是一種同步編碼器和解碼器幀高速緩存504A和510A的方法。但是,還構(gòu)想了同步這些幀高速緩存的其它方法。
當(dāng)在解碼器504B處檢測到分組丟失502B時(shí),使用反饋信道504D將此丟失向編碼器502A回報(bào)。較佳的是,此報(bào)告包含時(shí)間戳信息,它允許編碼器502A選擇正確的已高速緩存的幀504A來參考。在其它實(shí)施例中,使用最后被高速緩存的幀。一旦選擇了一個(gè)已高速緩存的幀504C,即由編碼器502C使用該幀504C來編碼下一個(gè)幀506C,較佳的是幀506C是P幀,但也可編碼I幀或其它幀類型。這個(gè)使用已高速緩存的幀506C來編碼的幀被稱為“超P”幀(SP幀),并在其頭部相應(yīng)通知。SP幀的一種示例性幀類型代碼字在以上的表1中示出。
當(dāng)解碼器512C接收SP幀508C時(shí),它使用本地高速緩存的幀510C將該SP幀508C解碼成未壓縮的幀(U幀)514C。使用此方法,解碼器512C處的恢復(fù)時(shí)間是分組丟失事件和SP幀到達(dá)之間的時(shí)間間隔。如果這個(gè)所生成的SP幀508C在發(fā)送期間被丟失,則解碼器512C將繼續(xù)發(fā)送分組丟失報(bào)告,直至新的參考幀(一般是類型P、SP或I)到達(dá)。從分組丟失起的實(shí)際恢復(fù)時(shí)間主要是根據(jù)分組丟失報(bào)告時(shí)間間隔而定。
在一些實(shí)施例中,編碼器502A高速緩存幀504A,并周期性地向解碼器發(fā)送已高速緩存的幀506A的副本。被發(fā)送的已高速緩存的幀之間的時(shí)間長度是非常取決于實(shí)現(xiàn)方式的。一些實(shí)現(xiàn)可以相等的時(shí)間間隔高速緩存幀。其它實(shí)現(xiàn)可以本身取決于諸如網(wǎng)絡(luò)速度或網(wǎng)絡(luò)所經(jīng)受的丟失量等系統(tǒng)變量的時(shí)間間隔高速緩存幀。
4.示例性系統(tǒng)實(shí)施例圖6示出可用于實(shí)現(xiàn)基于解碼器和編碼器的幀高速緩存的視頻系統(tǒng)600的另一個(gè)示例性實(shí)施例。視頻系統(tǒng)600并不試圖對本發(fā)明的使用范圍或功能提出任何限制,因?yàn)楸景l(fā)明可在各種通用或?qū)S靡曨l系統(tǒng)中實(shí)現(xiàn)。
該視頻系統(tǒng)包括至少一個(gè)編碼器602。此編碼器還包括編碼器高速緩存604。在所示實(shí)施例中,高速緩存駐留在編碼器602內(nèi)部,但在其它實(shí)現(xiàn)中可駐留在視頻系統(tǒng)內(nèi)部的其它地方。編碼器高速緩存604被啟用以存儲一個(gè)或多個(gè)視頻幀節(jié)606。作為建議而非限制,這些幀節(jié)可包括若干個(gè)塊、宏塊、若干個(gè)片、完整的幀、幀組、或本領(lǐng)域技術(shù)人員可構(gòu)想的幀的任何其它劃分。編碼器高速緩存604可僅高速緩存一個(gè)幀部分,可高速緩存兩個(gè)部分,或合乎給定實(shí)現(xiàn)需要的任何數(shù)量的部分。視頻系統(tǒng)600還包括解碼器608。類似于編碼器602,解碼器608包含解碼器高速緩存610,它用來存儲一個(gè)或多個(gè)視頻幀部分612。這些視頻幀部分可包括一個(gè)或多個(gè)塊、宏塊、片、或可包括完整的幀、幀組、或本領(lǐng)域技術(shù)人員可構(gòu)想的幀的任何其它部分。解碼器高速緩存610可被設(shè)定為存儲一個(gè)幀部分、兩個(gè)幀部分、或任何其它數(shù)量的幀部分。
視頻系統(tǒng)600還包括同步器614,它用來確保編碼器高速緩存604和解碼器高速緩存610包含實(shí)際相同的信息。如前文所討論,同步器可包括附加到某些幀或部分幀的唯一幀頭部,它由編碼器602所應(yīng)用,以通知解碼器608要高速緩存特定的一個(gè)或一部分幀。例如,幀可被存儲在編碼器高速緩存604處,還可被發(fā)送給解碼器608。該幀可具有加以區(qū)別的CF(已高速緩存的幀)頭部,以指示它有副本存儲在編碼器高速緩存604中。當(dāng)解碼器608檢測到分組丟失或其它使得對幀進(jìn)行解碼變得困難或不可能的破壞時(shí),編碼器602從存儲在編碼器高速緩存604中的幀編碼的后續(xù)幀可被標(biāo)記以指示此幀可從解碼器高速緩存610處的幀解碼。一些實(shí)現(xiàn)可在解碼器高速緩存610處存儲多個(gè)幀;在此類情形中,頭部還可任選地包含足以確定應(yīng)該使用哪個(gè)已高速緩存的幀的其它信息。還構(gòu)想了其它同步方法。發(fā)送器616將幀從編碼器602發(fā)送到解碼器608。
5.計(jì)算環(huán)境上述的幀高速緩存的實(shí)現(xiàn)可在實(shí)現(xiàn)圖像和視頻信號處理的各種設(shè)備中的任何一種上進(jìn)行,這些設(shè)備包括計(jì)算機(jī)、圖像和視頻錄制、發(fā)送和接收設(shè)備、便攜式視頻播放器、視頻會議、web視頻流傳輸應(yīng)用程序、等等。圖像和視頻編碼技術(shù)可以在硬件電路中(例如,在ASIC電路、FPGA等中)、以及在諸如圖7中所示等計(jì)算機(jī)或其它計(jì)算環(huán)境內(nèi)部執(zhí)行(無論是在中央處理單元(CPU)上、還是在專用圖形處理器、視頻卡等上執(zhí)行)的視頻處理軟件中實(shí)現(xiàn)。
圖7示出可實(shí)現(xiàn)所描述的幀高速緩存的適用的計(jì)算環(huán)境700的一般化示例。計(jì)算環(huán)境700并不視圖對本發(fā)明的使用范圍或功能提出任何限制,因?yàn)楸景l(fā)明可在各種通用或?qū)S糜?jì)算環(huán)境中實(shí)現(xiàn)。
計(jì)算環(huán)境700包括至少一個(gè)處理單元710和存儲器720。此最基本的配置730被包括在虛線內(nèi)部。處理單元710執(zhí)行計(jì)算機(jī)可執(zhí)行的指令,并可以是真實(shí)或虛擬的處理器。在多處理系統(tǒng)中,多個(gè)處理單元執(zhí)行計(jì)算機(jī)可執(zhí)行指令以提高處理能力。存儲器720可以是易失性存儲器(例如,寄存器、高速緩存、RAM、等等)、非易失性存儲器(例如,ROM、EEPROM、閃存、等等)、或這兩者的某種組合。存儲器720存儲實(shí)現(xiàn)所述編碼器/解碼器高速緩存的軟件780。
計(jì)算環(huán)境可具有其它特征。例如,計(jì)算環(huán)境700包括存儲740、一個(gè)或多個(gè)輸入設(shè)備750、一個(gè)或多個(gè)輸出設(shè)備760、以及一個(gè)或多個(gè)通信連接770。諸如總線、控制器或網(wǎng)絡(luò)等互連機(jī)制(未示出)將計(jì)算環(huán)境700的各個(gè)組件相互連接。通常,操作系統(tǒng)軟件(未示出)為計(jì)算環(huán)境700中執(zhí)行的其它軟件提供操作環(huán)境,并協(xié)調(diào)計(jì)算環(huán)境700的各組件的活動(dòng)。
存儲740可以是可移動(dòng)或不可移動(dòng)的,并且包括磁盤、磁帶或磁帶盒,CD-ROM、CD-RW、DVD,或任何其它可被用來存儲信息并且在計(jì)算環(huán)境700內(nèi)部可被訪問的任何其它介質(zhì)。存儲740存儲實(shí)現(xiàn)編碼器/解碼器高速緩存方案的軟件780。
輸入設(shè)備750可以是諸如鍵盤、鼠標(biāo)、筆、或軌跡球等觸摸式輸入設(shè)備,語音輸入設(shè)備,掃描輸入設(shè)備,或向計(jì)算環(huán)境700提供輸入的其它設(shè)備。對于音頻,輸入設(shè)備750可以是接受模擬或數(shù)字形式的音頻輸入的聲卡或類似設(shè)備,或者是向計(jì)算環(huán)境700提供音頻樣本的CD-ROM讀出器。輸出設(shè)備760可以是顯示器、打印機(jī)、揚(yáng)聲器、CD寫入器、或可提供來自計(jì)算環(huán)境700的輸出的其它設(shè)備。
通信連接770允許通過通信介質(zhì)到另一計(jì)算實(shí)體的通信。通信介質(zhì)傳遞已調(diào)制數(shù)據(jù)信號形式的諸如計(jì)算機(jī)可執(zhí)行指令、已壓縮的音頻或視頻信息、或其它數(shù)據(jù)信息。已調(diào)制信號是以在信號中將信息編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號。作為示例,而非限制,通信介質(zhì)包括用電的、光的、RF、紅外、聲學(xué)或其它載波實(shí)現(xiàn)的有線或無線技術(shù)。
本文中的編碼器/解碼器幀高速緩存技術(shù)可以在計(jì)算機(jī)可讀介質(zhì)的通用上下文中描述。計(jì)算機(jī)可讀介質(zhì)是在計(jì)算環(huán)境700內(nèi)部可被訪問的任何可用介質(zhì)。作為示例,而非限制,以計(jì)算環(huán)境700來說,計(jì)算機(jī)可讀機(jī)制包括存儲器720、存儲740、通信介質(zhì)、以及以上的任何組合。
本文中的編碼器/解碼器幀高速緩存可以在真實(shí)或虛擬的目標(biāo)處理器上的計(jì)算環(huán)境中執(zhí)行的計(jì)算機(jī)可執(zhí)行指令(諸如程序模塊中所包括的那些指令)的通用上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)、等等。各程序模塊的功能可按各實(shí)施例中的需要,在程序模塊之間被組合或分開。程序模塊的計(jì)算機(jī)可執(zhí)行指令可在本地或分布式計(jì)算環(huán)境內(nèi)部被執(zhí)行。
為了說明,此詳細(xì)描述使用諸如“確定”、“發(fā)送”、“編碼”、“解碼”、以及“應(yīng)用”等術(shù)語來描述計(jì)算環(huán)境中的計(jì)算機(jī)操作。這些術(shù)語是對計(jì)算機(jī)所執(zhí)行的操作的高度抽象,并且不應(yīng)與人類所執(zhí)行的動(dòng)作相混淆。對應(yīng)于這些術(shù)語的實(shí)際計(jì)算機(jī)操作根據(jù)實(shí)現(xiàn)而有所不同。
考慮到可應(yīng)用我們的發(fā)明的原理的許多可能的實(shí)施例,應(yīng)當(dāng)認(rèn)識到,這些詳細(xì)的實(shí)施例只是示例性的,且不應(yīng)被當(dāng)作限制了我們的發(fā)明的范圍。相反,我們要求將落入所附權(quán)利要求書及其等效技術(shù)方案的范圍和精神之內(nèi)的所有此類實(shí)施例作為我們的發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種通過網(wǎng)絡(luò)發(fā)送信號的方法,包括以下步驟將一部分所述信號分配給分組;編碼器將一部分分組編碼為幀;通過所述網(wǎng)絡(luò)將幀發(fā)送到解碼器;在所述解碼器處高速緩存至少一個(gè)幀;以及所述解碼器至少部分地使用已高速緩存的幀來解釋從所述編碼器發(fā)送來的至少一個(gè)后續(xù)幀。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括在所述編碼器處高速緩存至少一個(gè)幀。
3.如權(quán)利要求2所述的方法,其特征在于,所述方法還包括周期性地在所述編碼器處高速緩存所述幀。
4.如權(quán)利要求3所述的方法,其特征在于,高速緩存之間的周期可以是設(shè)定的時(shí)間間隔,或者可以是可變的時(shí)間間隔。
5.如權(quán)利要求2所述的方法,其特征在于,所述至少一個(gè)后續(xù)幀是至少部分地使用已高速緩存的編碼器幀在所述編碼器處生成的。
6.如權(quán)利要求5所述的方法,其特征在于,同一幀的副本被高速緩存在所述解碼器和所述編碼器處,且所述方法還包括與在所述解碼器處高速緩存所述幀同步地在所述編碼器處高速緩存所述幀。
7.如權(quán)利要求1所述的方法,其特征在于,分組丟失由所述解碼器檢測,且其中,分組丟失檢測信號是通過反饋信道向所述編碼器發(fā)送的。
8.如權(quán)利要求7所述的方法,其特征在于,所述分組丟失有與之相關(guān)聯(lián)的時(shí)間,且其中,分組丟失時(shí)間被發(fā)送到所述編碼器。
9.如權(quán)利要求7所述的方法,其特征在于,所述編碼器接收所述分組丟失信號,并且一接收到所述信號即使用高速緩存在所述編碼器處的幀來構(gòu)造分組丟失幀。
10.如權(quán)利要求9所述的方法,其特征在于,所述分組丟失幀還包括幀頭部,且其中,所述分組丟失幀在所述幀頭部中被加以區(qū)別地命名。
11.如權(quán)利要求1所述的方法,其特征在于,所述編碼器周期性地向所述解碼器發(fā)送已高速緩存的幀。
12.如權(quán)利要求1所述的方法,其特征在于,所述信號是圖像信號、視頻信號、音頻信號、或語音信號。
13.一種存儲計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于使計(jì)算機(jī)系統(tǒng)執(zhí)行如權(quán)利要求1所述的方法。
14.如權(quán)利要求1所述的方法,其特征在于,高速緩存在所述編碼器處的所述至少一個(gè)幀是參考幀。
15.一種在有損網(wǎng)絡(luò)內(nèi)流傳輸視頻的系統(tǒng),包括將數(shù)據(jù)分組編碼成幀的編碼器;存儲幀的至少一部分的副本的編碼器高速緩存;存儲幀的至少一部分的副本的解碼器高速緩存;可用于檢測分組丟失的解碼器;并且在這一檢測之后,發(fā)信號通知所述編碼器使用存儲在所述編碼器高速緩存中的幀的該部分來編碼后續(xù)的SP高速緩存幀;以及將幀從所述編碼器發(fā)送到所述解碼器的發(fā)送器。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述幀還包括頭部,且其中,所述SP高速緩存幀在所述頭部中被加以區(qū)別地命名。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于,還包括同步器,它將所述編碼器高速緩存中的幀的該部分與所述解碼器高速緩存中的幀的該部分同步。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述編碼器向所述解碼器發(fā)送存儲在所述編碼器高速緩存中的幀該部分的副本。
19.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述解碼器使用存儲在所述解碼器高速緩存中的幀的該部分來解碼從所述編碼器發(fā)送來的至少一個(gè)后續(xù)幀。
20.一種視頻處理器,包括將數(shù)據(jù)分組編碼成幀的裝置;在編碼器處緩存至少一個(gè)幀的裝置;將所述幀從所述編碼器發(fā)送到解碼器的裝置;在所述解碼器處解碼所述幀的裝置;在所述解碼器處高速緩存所述至少一個(gè)幀的裝置;將所述編碼器處高速緩存的幀與所述解碼器處高速緩存的幀同步的裝置;檢測分組丟失的裝置;當(dāng)檢測到分組丟失時(shí)使用所述編碼器處高速緩存的幀來生成特殊參考幀的裝置;以及使用所述解碼器處高速緩存的幀來解釋所述解碼器處的特殊參考幀的裝置。
全文摘要
揭示了使用幀高速緩存來改善分組丟失恢復(fù)的各種新的和非顯而易見的裝置和方法。所揭示的實(shí)施例中的一個(gè)是一種在編碼器及其對應(yīng)的解碼器內(nèi)使用周期性和同步的幀高速緩存的方法。當(dāng)解碼器發(fā)現(xiàn)分組丟失時(shí),它通知編碼器,后者隨即基于存儲在編碼器和解碼器兩處的若干共享幀中的一個(gè)生成幀。當(dāng)解碼器接收到這個(gè)生成的幀時(shí),它能夠使用其本地已高速緩存的幀來對其進(jìn)行解碼。
文檔編號G06F12/00GK1816150SQ200510128750
公開日2006年8月9日 申請日期2005年11月30日 優(yōu)先權(quán)日2004年12月30日
發(fā)明者林志隆, 夏明輝, 徐柏翔, S·瑞古納莎恩, T·W·胡爾庫姆 申請人:微軟公司