專利名稱:通過網(wǎng)絡(luò)傳輸信號的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及用于數(shù)字地編碼、解碼和處理視頻、圖像及其它數(shù)字媒體內(nèi)容的技術(shù)。本發(fā)明由其涉及通過幀高速緩存來改善分組丟失恢復(fù)。
背景技術(shù):
數(shù)字視頻消耗大量存儲和傳輸容量。典型的原始數(shù)字視頻序列每秒包括15或30 幀。每一幀都可包括數(shù)以萬計(jì)或十萬計(jì)的像素(也稱為象素)。每個(gè)像素表示圖像一個(gè)微小的元素。在原始形式中,計(jì)算機(jī)通常將像素表示為總計(jì)為M比特的三個(gè)樣本的集合。例如,一個(gè)像素可包括定義該像素的灰度級分量的8比特亮度樣本(也稱為Iuma樣本),以及定義該像素的色彩分量的兩個(gè)8比特色度樣本值(也稱為chroma樣本)。由此,典型的原始數(shù)字視頻序列每秒的比特?cái)?shù),或稱比特率,可為每秒五百萬比特或以上。許多計(jì)算機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)缺乏處理原始數(shù)字視頻的資源。為此原因,工程師們使用壓縮(也稱為編碼)來降低數(shù)字視頻的比特率。壓縮通過將視頻轉(zhuǎn)換為較低比特率的形式降低存儲和傳輸視頻的消耗。解壓縮(也稱為解碼)從已壓縮的形式重構(gòu)原始視頻版本。 “編解碼器”是一種編碼器/解碼器系統(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è)幀內(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)動估計(jì)通過將獨(dú)特的內(nèi)容隨從前一已編碼的圖像(稱為參考幀)創(chuàng)建的運(yùn)動預(yù)測圖像一起編碼來移除連續(xù)視頻幀(幀間)中的時(shí)間冗余。如果參考幀丟失,則其隨后的各預(yù)測幀將無法被譯碼——傳輸誤差傳播到后續(xù)各幀。對于逐行幀,圖像內(nèi)壓縮的技術(shù)壓縮個(gè)體幀(通常稱為I幀或關(guān)鍵幀),而圖像間
4壓縮的技術(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)動補(bǔ)償時(shí),解碼器(和編碼器)從一個(gè)或多個(gè)先前重構(gòu)的幀(現(xiàn)在被用作參考幀)重構(gòu)一個(gè)幀,然后該最近被重構(gòu)的幀可作為后面各幀的運(yùn)動補(bǔ)償?shù)膮⒖紟褂谩Mㄟ^網(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) 0此類輔助信息是通常在輔助信息的熵編碼以后在輸出比特流中被發(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)動估計(jì)器210根據(jù)參考幀225 (緩沖在幀存儲 220中的前一重構(gòu)幀)估算當(dāng)前幀205的宏塊或其它像素集合。在替換實(shí)施例中,參考幀可以是后面的幀,或者當(dāng)前幀可被雙向地預(yù)測。運(yùn)動估計(jì)器210輸出諸如運(yùn)動矢量等運(yùn)動信息215作為輔助信息。運(yùn)動補(bǔ)償器230將運(yùn)動信息215應(yīng)用于前一重構(gòu)幀225以構(gòu)成經(jīng)運(yùn)動補(bǔ)償?shù)漠?dāng)前幀235。但是,預(yù)測通常是不完美的,而經(jīng)運(yùn)動補(bǔ)償?shù)漠?dāng)前幀235和原始當(dāng)前幀205之間的差異是預(yù)測殘余M5。或者運(yùn)動估計(jì)器210和運(yùn)動補(bǔ)償器230應(yīng)用其它類型的運(yùn)動估計(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)動估計(jì)/補(bǔ)償需要重構(gòu)的當(dāng)前幀時(shí),逆量化器276對經(jīng)量化的頻譜數(shù)據(jù)系數(shù)執(zhí)行逆量化。然后頻率逆變換器266執(zhí)行頻率變換器沈0的操作的逆操作,以生成重構(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)動補(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)動信息215、 量化步長)。典型的熵編碼技術(shù)包括算術(shù)編碼、差分編碼、霍夫曼編碼、行程長度編碼、LZ編碼、字典編碼、以及上述的組合。熵編碼器280通常對不同類型的信息(例如,DC系數(shù)、AC 系數(shù)、等等)使用不同的編碼技術(shù),并且可在特定編碼技術(shù)內(nèi)從多個(gè)代碼表中間進(jìn)行選擇。熵編碼器280將已壓縮的視頻信息295放到緩沖器四0中。緩沖等級指示被反饋給比特率自適應(yīng)模塊。已壓縮的視頻信息四5以恒定或相對恒定的比特率被從緩沖器四0 排空并存儲以用于后續(xù)的此比特率的流傳輸?;蛘撸幋a器系統(tǒng)200在壓縮以后立即流傳輸已壓縮的視頻信息四5。
在緩沖器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)恒定的速率接收信息,并且包括抖動緩沖器來平滑帶寬或傳輸中的短期變動。緩沖器390還可包括回放緩沖器和其它緩沖器?;蛘?,緩沖器390 以變化的速率接收信息。已壓縮的視頻信息395可在到達(dá)緩沖器390之前,或在其離開緩沖器390之后,或兩者皆可,被解碼并處理以進(jìn)行檢錯(cuò)和糾錯(cuò)。熵解碼器380對經(jīng)熵編碼的已量化數(shù)據(jù)、以及經(jīng)熵編碼的輔助信息(例如,運(yùn)動信息、量化步長)進(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)動補(bǔ)償器330將運(yùn)動信息315應(yīng)用于參考幀325,以構(gòu)成對被重構(gòu)的幀305的預(yù)測335。例如,運(yùn)動補(bǔ)償器330使用宏塊運(yùn)動矢量在參考幀中尋找宏塊。幀緩沖器320存儲先前所重構(gòu)的幀以作為參考幀使用?;蛘?,運(yùn)動補(bǔ)償器應(yīng)用另一種類型的運(yùn)動補(bǔ)償。運(yùn)動補(bǔ)償器330的預(yù)測通常是不完美的,所以解碼器300 還重構(gòu)預(yù)測殘余;345。當(dāng)解碼器300需要已重構(gòu)的幀用于后續(xù)的運(yùn)動補(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)量的逆量化?;蛘?,逆量化器370對數(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)用8x8、8x4、 4x8或其它大小的頻率逆變換。C.幀高速緩存在本文所描述的視頻編解碼器體系結(jié)構(gòu)內(nèi)使用幀高速緩存的實(shí)現(xiàn)中,較佳的是在編碼器和解碼器兩處都依次高速緩存參考幀。當(dāng)參考幀被丟失,可使用解碼器處高速緩存
8的適當(dāng)參考幀來解碼后續(xù)的相關(guān)幀。這產(chǎn)生以下好處A)更有效率的帶寬利用現(xiàn)有技術(shù)的方法要求I幀被生成并發(fā)送到編碼器。而此方法允許特殊類型的幀,SP幀被發(fā)送到解碼器。SP幀一般可用比相同質(zhì)量的I幀更少的比特來編碼,因此比起使用等價(jià)的I巾貞,SP幀使用較少的帶寬。B)較快的差錯(cuò)恢復(fù)。2.示例性方法概述所描述的實(shí)施例包括用于在解碼器處高速緩存幀、然后使用被高速緩存的幀來重構(gòu)依賴于已被破壞或丟失的參考幀的P幀和B幀的技術(shù)和工具。高速緩存可被集成為視頻解碼器300(圖;3)的一部分,視頻編碼器200(圖幻的一部分,或較佳的是同時(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è)或多個(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 幀類型代碼
權(quán)利要求
1.一種通過網(wǎng)絡(luò)發(fā)送信號的方法,所述方法包括用編碼器將信號幀序列編碼成包括關(guān)鍵幀和預(yù)測幀的編碼幀序列;發(fā)送所述編碼幀序列,編碼幀包括至少一個(gè)參考幀;在編碼器處高速緩存所述至少一個(gè)參考幀;響應(yīng)于在編碼器處接收到分組丟失檢測信號,使用在所述編碼器處高速緩存的所述參考幀來生成幀;以及發(fā)送所生成的幀。
2.如權(quán)利要求1所述的方法,其特征在于,所生成的幀用于通過使用所述至少一個(gè)參考幀來解釋所生成的幀來產(chǎn)生一未壓縮的幀。
3.如權(quán)利要求1所述的方法,其特征在于,至少一個(gè)編碼幀具有定義了幀要成為與在所述編碼器處高速緩存的所述至少一個(gè)參考幀相對應(yīng)的高速緩存幀的幀類型代碼。
4.如權(quán)利要求1所述的方法,其特征在于,在所述編碼器處高速緩存所述至少一個(gè)參考幀是用于分組丟失恢復(fù)。
5.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括在所述編碼器處周期性地高速緩存所述至少一個(gè)參考幀。
6.如權(quán)利要求5所述的方法,其特征在于,高速緩存之間的周期能夠是設(shè)定的時(shí)間間隔或者能夠是可變的時(shí)間間隔。
7.如權(quán)利要求1所述的方法,其特征在于,相同的至少一個(gè)參考幀的副本被高速緩存在解碼器和所述編碼器處,且所述方法還包括與在所述解碼器處高速緩存參考幀相同步地在所述編碼器處高速緩存所述至少一個(gè)參考幀。
8.如權(quán)利要求1所述的方法,其特征在于,所述分組丟失檢測信號是通過到所述編碼器的反饋信道接收的。
9.如權(quán)利要求8所述的方法,其特征在于,所述分組丟失檢測信號有與之相關(guān)聯(lián)的時(shí)間,且表示分組丟失時(shí)間的時(shí)間戳被發(fā)送到所述編碼器。
10.如權(quán)利要求8所述的方法,其特征在于,一旦接收到所述分組丟失檢測信號,所述編碼器就使用所述至少一個(gè)參考幀來構(gòu)造下一幀。
11.如權(quán)利要求10所述的方法,其特征在于,所述下一幀還包括幀頭部,且所述下一幀在所述幀頭部中被區(qū)別地命名。
12.如權(quán)利要求1所述的方法,其特征在于,所述編碼器周期性地向解碼器發(fā)送高速緩存幀。
13.如權(quán)利要求1所述的方法,其特征在于,所述信號是圖像信號、視頻信號、音頻信號、或語音信號。
14.一種存儲計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于使計(jì)算機(jī)系統(tǒng)執(zhí)行如權(quán)利要求1-13中任一項(xiàng)所述的方法。
15.一種在有損網(wǎng)絡(luò)內(nèi)流式傳輸信號的系統(tǒng),所述系統(tǒng)包括用于高速緩存參考幀的幀高速緩存;用于從所述編碼器發(fā)送高速緩存幀序列的發(fā)送器;所述編碼器,其中所述編碼器用于將幀序列編碼成編碼幀序列,所述序列包括關(guān)鍵幀和預(yù)測幀,接收分組丟失檢測信號,一旦接收到分組丟失信號,使用高速緩存的參考幀來生成幀,以及用所述發(fā)送器從所述編碼器發(fā)送所生成的幀。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述編碼器還用于將在所述編碼器處高速緩存所述參考幀與在接收被流式傳輸?shù)男盘柕慕獯a器處高速緩存一參考幀相同步。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于,所生成的幀和高速緩存的參考幀能被用于基于解釋所生成的幀和所述參考幀來重構(gòu)一未壓縮的幀。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,至少一個(gè)編碼幀具有定義了幀要成為與高速緩存的參考幀相對應(yīng)的高速緩存幀的幀類型代碼。
19.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述幀高速緩存用于周期性地高速緩存參考幀。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于,高速緩存之間的周期能夠是設(shè)定的時(shí)間間隔或者能夠是可變的時(shí)間間隔。
21.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述編碼器用于通過到所述編碼器的反饋信道接收所述分組丟失檢測信號。
22.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述分組丟失檢測信號有與之相關(guān)聯(lián)的時(shí)間。
23.如權(quán)利要求15所述的系統(tǒng),其特征在于,一旦接收到所述分組丟失檢測信號,所述編碼器用于使用高速緩存的參考幀來構(gòu)造下一幀。
24.如權(quán)利要求23所述的系統(tǒng),其特征在于,所述下一幀還包括幀頭部,且所述下一幀在所述幀頭部中被區(qū)別地命名。
25.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述編碼器用于周期性地向解碼器發(fā)送高速緩存的參考幀。
26.如權(quán)利要求15所述的系統(tǒng),其特征在于,被流式傳輸?shù)男盘柺菆D像信號、視頻信號、音頻信號、或語音信號。
全文摘要
提供了通過網(wǎng)絡(luò)傳輸信號的方法和系統(tǒng)。揭示了使用幀高速緩存來改善分組丟失恢復(fù)的各種新的和非顯而易見的裝置和方法。所揭示的實(shí)施例中的一個(gè)是一種在編碼器及其對應(yīng)的解碼器內(nèi)使用周期性和同步的幀高速緩存的方法。當(dāng)解碼器發(fā)現(xiàn)分組丟失時(shí),它通知編碼器,后者隨即基于存儲在編碼器和解碼器兩處的若干共享幀中的一個(gè)生成幀。當(dāng)解碼器接收到這個(gè)生成的幀時(shí),它能夠使用其本地已高速緩存的幀來對其進(jìn)行解碼。
文檔編號H04N7/36GK102158713SQ20111012037
公開日2011年8月17日 申請日期2005年11月30日 優(yōu)先權(quán)日2004年12月30日
發(fā)明者S·瑞古納莎恩, T·W·胡爾庫姆, 夏明輝, 徐柏翔, 林志隆 申請人:微軟公司