两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

使用幀高速緩存來改善分組丟失恢復的制作方法

文檔序號:6651245閱讀:140來源:國知局
專利名稱:使用幀高速緩存來改善分組丟失恢復的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及用于數(shù)字地編碼、解碼和處理視頻、圖像及其它數(shù)字媒體內(nèi)容的技術(shù)。本發(fā)明由其涉及通過幀高速緩存來改善分組丟失恢復。
背景技術(shù)
數(shù)字視頻消耗大量存儲和傳輸容量。典型的原始數(shù)字視頻序列每秒包括15或30幀。每一幀都可包括數(shù)以萬計或十萬計的像素(也稱為象素)。每個像素表示圖像一個微小的元素。在原始形式中,計算機通常將像素表示為總計為24比特的三個樣本的集合。例如,一個像素可包括定義該像素的灰度級分量的8比特亮度樣本(也稱為luma樣本),以及定義該像素的色彩分量的兩個8比特色度樣本值(也稱為chroma樣本)。由此,典型的原始數(shù)字視頻序列每秒的比特數(shù),或稱比特率,可為每秒五百萬比特或以上。
許多計算機和計算機網(wǎng)絡缺乏處理原始數(shù)字視頻的資源。為此原因,工程師們使用壓縮(也稱為編碼)來降低數(shù)字視頻的比特率。壓縮通過將視頻轉(zhuǎn)換為較低比特率的形式降低存儲和傳輸視頻的消耗。解壓縮(也稱為解碼)從已壓縮的形式重構(gòu)原始視頻版本。“編解碼器”是一種編碼器/解碼器系統(tǒng)。壓縮可以是無損的,其中視頻的質(zhì)量沒有損失,但比特率的降低受到視頻數(shù)據(jù)的可變性的固有量(有時稱為熵)限制?;蛘?,壓縮可以是有損的,其中視頻的質(zhì)量有損失,但可實現(xiàn)的比特率的降低更為可觀。有損壓縮常常被結(jié)合無損壓縮來使用——在一種系統(tǒng)設計中,有損壓縮建立信息的近似,而無損壓縮被應用以表示該近似。
一般而言,視頻壓縮技術(shù)包括“圖像內(nèi)”壓縮和“圖像間”壓縮,其中圖像是例如逐行掃描的視頻幀、隔行的視頻幀(具有交替的行用于視頻半幀(field))、或隔行的視頻半幀。一般而言,視頻序列在給定幀內(nèi)及相繼幀之間包含相當大量的冗余。例如,人眼一般不會注意連續(xù)的視頻幀里相似背景中的細微的差異。壓縮通過移除所發(fā)送的比特流內(nèi)某部分冗余素材,然后當該圖像被解壓縮時在接收端將其加回,來利用這些冗余。從視頻幀中減去的兩種常見的冗余是空間和時間冗余??臻g冗余在單個幀內(nèi)的相鄰像素之間發(fā)生。使用空間冗余來壓縮的幀(稱為內(nèi)幀或I幀)在該幀自身內(nèi)包含重構(gòu)圖像所需的所有信息——它們是自包含的。使用時間冗余的幀(諸如P幀和B幀)需要來自其它幀的信息以進行解碼。P幀(預測編碼幀)是使用來自前面的I幀和/或P幀的信息來編碼的,并且必須使用這些信息來解碼。B幀(雙向預測編碼幀)是同時使用來自前面和后面的I幀和P幀兩者的信息來編碼的。運動估計通過將獨特的內(nèi)容隨從前一已編碼的圖像(稱為參考幀)創(chuàng)建的運動預測圖像一起編碼來移除連續(xù)視頻幀(幀間)中的時間冗余。如果參考幀丟失,則其隨后的各預測幀將無法被譯碼——傳輸誤差傳播到后續(xù)各幀。
對于逐行幀,圖像內(nèi)壓縮的技術(shù)壓縮個體幀(通常稱為I幀或關(guān)鍵幀),而圖像間壓縮的技術(shù)參考在前和/或后續(xù)的幀(通常稱為參考幀或錨幀)來壓縮幀(通常稱為預測幀、P幀、或B幀)。I幀(自包含的)和P幀(一般參考在前的幀)本身也可以是參考幀,而同時參考在前和后續(xù)幀兩者的B幀通常本身不會被用作參考。
當數(shù)據(jù)在最終視頻被顯示以前被解壓縮時,解碼器通常執(zhí)行壓縮操作的逆操作。例如,解碼器在解壓縮數(shù)據(jù)時可執(zhí)行熵解碼、逆量化、以及逆轉(zhuǎn)換。當使用運動補償時,解碼器(和編碼器)從一個或多個先前重構(gòu)的幀(現(xiàn)在被用作參考幀)重構(gòu)一個幀,然后該最近被重構(gòu)的幀可作為后面各幀的運動補償?shù)膮⒖紟褂谩?br> 通過網(wǎng)絡發(fā)送的分組容易被丟失——分組被漏失。此丟失的發(fā)生是隨機且不可預測的。此外,視頻壓縮流數(shù)據(jù)對延遲高度敏感;因為分組需要按照它們被發(fā)送的相同順序被重新裝配;過多的被延遲的分組會引起跳躍的、中斷的信號。傳送延遲問題還可能在重新發(fā)送新的I幀時發(fā)生;新幀易受所有破壞了丟失的參考幀的相同問題的影響。此外,在有損編碼方案中,壓縮被設計成滿足用于存儲和傳輸?shù)哪繕吮忍芈?。高度壓縮是通過降低重構(gòu)圖像的質(zhì)量來實現(xiàn)的。因此,被漏失或延遲的分組所引起的額外丟失可能將圖像降低到可接受的等級以下。
處理分組丟失的容限對實時視頻編解碼器(RTC)在有噪網(wǎng)絡(容易產(chǎn)生丟失)中表現(xiàn)良好來說至關(guān)重要。大多數(shù)現(xiàn)有視頻編解碼器在參考幀丟失時,通過請求新的I幀來應對分組丟失。其它則使用基于時間片(slice)的編碼,這會增加信令開銷。圖1示出通過請求新I幀來進行的常規(guī)分組丟失恢復。
在此現(xiàn)有技術(shù)的方法中,在解碼器102處接收到I幀104。它隨即被用于解釋/重構(gòu)后續(xù)的相關(guān)的P幀106。下一個相關(guān)的幀,P幀108被破壞,因為亂序地接收了或丟失了過多的幀。后續(xù)的P幀110和任何其后的幀不再能被重構(gòu)。在目的節(jié)點(此處由解碼器102表示)處,生成I幀請求并向源節(jié)點(此處由編碼器114表示)發(fā)送。每個后續(xù)的P幀或B幀都無法被重構(gòu),直至接收到新的I幀。一旦源節(jié)點114接收到請求,它即裝配新的I幀并使用通信信道將其發(fā)送到目的節(jié)點102。在接收到新I幀112以后,目的節(jié)點可成功地將各后續(xù)P幀解碼。但是,這導致等價于發(fā)送初始請求所需的時間、加上將I幀編碼的時間、加上將I幀發(fā)送到目的節(jié)點102的時間的延遲116。此外,發(fā)送者和接收者可能分開很長的實際距離,而很長的距離導致明顯的滯后時間,還有視頻質(zhì)量的相應降低。
在另一種現(xiàn)有技術(shù)的方法中,以有規(guī)律的間隔發(fā)送I幀104、112。當I幀112由于破壞或延遲被丟失時,解碼器等待直至接收到下一I幀,從而對后續(xù)P幀110、108進行了錯誤的解碼。
因此,有必要改進用于通過基于有損分組的網(wǎng)絡傳輸壓縮視頻的方法和系統(tǒng)。

發(fā)明內(nèi)容
本文中所描述的一種視頻編解碼器包括編碼器處的幀高速緩存,以及解碼器處的對應的幀高速緩存,其中每一個都可同步工作。解碼器高速緩存中的幀被用來幫助解釋解碼器處的幀。要被解釋的幀可能是使用存儲在編碼器高速緩存中的相同幀的副本已生成的。
還提供一種系統(tǒng)實現(xiàn)。它包括將數(shù)據(jù)分組編碼為幀的編碼器,以及能夠存儲幀或其部分的編碼器高速緩存。它還包括帶有解碼器高速緩存的解碼器,該高速緩存也可存儲幀或其部分。解碼器可用于檢測分組丟失。當檢測到此類丟失時,在一些實施例中,編碼器使用存儲在編碼器高速緩存處的幀來編碼一個幀,然后在解碼器處使用存儲在解碼器高速緩存中的幀將該幀解碼。
此高速緩存機制提供以下關(guān)鍵特征a)在分組丟失恢復過程中更有效率的帶寬利用,以及b)消除了與基于時間片的編碼相關(guān)聯(lián)的信令開銷。
從以下參考附圖對各實施例的詳細描述中,本發(fā)明的其它特征和優(yōu)點將被明確。


圖1是現(xiàn)有技術(shù)的幀級分組丟失恢復的示意圖。
圖2是利用本文中所描述的幀高速緩存的視頻編碼器的框圖。
圖3是利用本文中所描述的幀高速緩存的視頻解碼器的框圖。
圖4是使用幀高速緩存從分組丟失中恢復的一種示例性方法的流程圖。
圖5A是編碼器高速緩存一個幀而解碼器高速緩存相同幀的幀級示意圖。
圖5B是被破壞的P幀到達解碼器處的幀級示意圖。
圖5C是示出解碼器使用被高速緩存的幀來解釋P幀的幀級示意圖。
圖5D是通過反饋信道報告分組丟失的框圖。
圖6是用于實現(xiàn)視頻編碼器/解碼器高速緩存的合適的方法的流程圖。
圖7是適用于圖2和3的視頻編碼器/解碼器的計算環(huán)境的框圖。
具體實施例方式
以下描述針對在視頻編碼器和視頻解碼器兩者中實現(xiàn)幀高速緩存,它被設計成提供適度的分組丟失恢復和有效的帶寬利用的有效組合。幀高速緩存的一種示例性應用是在圖像或視頻編碼器和解碼器中。由此,幀高速緩存是在一般化的圖像或視頻編碼器和解碼器的上下文中描述的,但是也可被結(jié)合到細節(jié)上與下述的示例性裝置不同的各種其它圖像和視頻編解碼器的編碼器和解碼器中。
1.一般化的視頻編碼器和解碼器圖2是一般化的視頻編碼器200的框圖,而圖3是一般化的視頻解碼器300的框圖,幀高速緩存可被結(jié)合到其中。
所示的編碼器和解碼器內(nèi)部各模塊之間的關(guān)系指示編碼器和解碼器中的主信息流;為簡單起見,沒有示出其它關(guān)系。特別地,圖2和3通常不示出指示編碼器設置、模式、表等為視頻序列、幀、宏塊、塊等所使用的輔助信息(side information)。此類輔助信息是通常在輔助信息的熵編碼以后在輸出比特流中被發(fā)送的。輸出比特流的格式可以是Windows Media Video格式或其它格式。
取決于實現(xiàn)和期望的壓縮類型,編碼器200或解碼器300的各個模塊可被添加、省略、分成多個模塊、與其它模塊集合、和/或用類似模塊代替。在替換實施例中,帶有不同模塊和/或模塊的其它配置的編碼器和解碼器執(zhí)行所述技術(shù)中的一種或數(shù)種。
A.視頻編碼器圖2是一般的視頻編碼器系統(tǒng)200的框圖。編碼器系統(tǒng)200接收包括當前幀205在內(nèi)的視頻幀序列,并生成已壓縮的視頻信息295作為輸出。視頻編碼器的特定實施例通常使用一般化編碼器200的變體或增補版本。
編碼器系統(tǒng)200壓縮預測幀和關(guān)鍵幀。為了說明,圖2示出關(guān)鍵幀通過編碼器系統(tǒng)200的路徑,以及前向預測幀的路徑。編碼器系統(tǒng)200的許多組件都被用于壓縮關(guān)鍵幀和預測幀兩者。取決于所壓縮的信息的類型,那些組件所執(zhí)行的確切操作可有所不同。
預測幀[可以是P幀、B幀(雙向預測)、或幀間編碼幀]是以從一個或多個其它幀的預測(或差異)的形式表示的。預測殘余是預測幀和原始幀之間的差異。與之相反,關(guān)鍵幀[也稱為I幀、或幀內(nèi)編碼幀]是不用參考其它幀而壓縮的。
如果當前幀205是前向預測幀,則運動估計器210根據(jù)參考幀225(緩沖在幀存儲220中的前一重構(gòu)幀)估算當前幀205的宏塊或其它像素集合。在替換實施例中,參考幀可以是后面的幀,或者當前幀可被雙向地預測。運動估計器210輸出諸如運動矢量等運動信息215作為輔助信息。運動補償器230將運動信息215應用于前一重構(gòu)幀225以構(gòu)成經(jīng)運動補償?shù)漠斍皫?35。但是,預測通常是不完美的,而經(jīng)運動補償?shù)漠斍皫?35和原始當前幀205之間的差異是預測殘余245?;蛘哌\動估計器210和運動補償器230應用其它類型的運動估計/補償。
頻率變換器260將空間域的視頻信息轉(zhuǎn)換成頻域(即,頻譜)數(shù)據(jù)。對于基于塊的視頻幀,頻率變換器260應用以下部分中所描述的變換,它具有類似于離散余弦變換[“DCT”]的屬性。在一些實施例中,頻率變換器260為關(guān)鍵幀對空間預測殘余塊應用頻率變換。頻率變換器260可應用8×8、8×4、4×8或其它大小的頻率變換。
然后量化器270量化頻譜數(shù)據(jù)系數(shù)塊。量化器270用逐幀或其它方式改變的步長,對頻譜數(shù)據(jù)應用均勻的、標量的量化。或者,量化器270對頻譜數(shù)據(jù)系數(shù)應用另一類量化,例如,非均勻的、矢量的、或非自適應的量化,或者在不使用頻率變換的編碼器系統(tǒng)中直接量化空間域數(shù)據(jù)。除了自適應量化以外,編碼器200可使用幀丟棄、自適應過濾、或其它技術(shù)來進行速率控制。
當后續(xù)的運動估計/補償需要重構(gòu)的當前幀時,逆量化器276對經(jīng)量化的頻譜數(shù)據(jù)系數(shù)執(zhí)行逆量化。然后頻率逆變換器266執(zhí)行頻率變換器260的操作的逆操作,以生成重構(gòu)的預測殘余(對應于預測幀)或重構(gòu)的關(guān)鍵幀。如果當前幀205是關(guān)鍵幀,則重構(gòu)的關(guān)鍵幀被視為重構(gòu)的當前幀(未示出)。如果當前幀205是預測幀,則重構(gòu)的預測殘余被增加到經(jīng)運動補償?shù)漠斍皫?35,以構(gòu)成重構(gòu)的當前幀。幀存儲220緩沖該重構(gòu)的當前幀,以供預測下一個幀使用。在一些實施例中,編碼器200對重構(gòu)的幀應用解塊過濾器,以自適應地平滑幀塊中的不連續(xù)。
熵編碼器280壓縮量化器270的輸出,以及某些輔助信息(例如,運動信息215、量化步長)。典型的熵編碼技術(shù)包括算術(shù)編碼、差分編碼、霍夫曼編碼、行程長度編碼、LZ編碼、字典編碼、以及上述的組合。熵編碼器280通常對不同類型的信息(例如,DC系數(shù)、AC系數(shù)、等等)使用不同的編碼技術(shù),并且可在特定編碼技術(shù)內(nèi)從多個代碼表中間進行選擇。
熵編碼器280將已壓縮的視頻信息295放到緩沖器290中。緩沖等級指示被反饋給比特率自適應模塊。已壓縮的視頻信息295以恒定或相對恒定的比特率被從緩沖器290排空并存儲以用于后續(xù)的此比特率的流傳輸。或者,編碼器系統(tǒng)200在壓縮以后立即流傳輸已壓縮的視頻信息295。
在緩沖器290以前或以后,已壓縮的視頻信息295可被信道編碼以通過網(wǎng)絡傳輸。信道編碼可對已壓縮的視頻信息295運用檢錯和糾錯數(shù)據(jù)。
B.視頻解碼器圖3是一般的視頻解碼器系統(tǒng)300的框圖。解碼器系統(tǒng)300接收已壓縮的視頻幀序列的信息395并產(chǎn)生包括重構(gòu)幀305在內(nèi)的輸出。視頻解碼器的特定實施例通常使用一般化的解碼器300的變體或增補版本。
解碼器系統(tǒng)300解壓縮預測幀和關(guān)鍵幀。為了說明,圖3示出關(guān)鍵幀通過解碼器系統(tǒng)300的路徑,以及前向預測幀的路徑。解碼器系統(tǒng)300的許多組件都被用于解壓縮關(guān)鍵幀和預測幀兩者。取決于所解壓縮的信息的類型,那些組件所執(zhí)行的確切操作可能有所不同。
緩沖器390接收已壓縮視頻序列的信息395,并使已接收的信息對熵解碼器380可用。緩沖器390通常以時間上相當恒定的速率接收信息,并且包括抖動緩沖器來平滑帶寬或傳輸中的短期變動。緩沖器390還可包括回放緩沖器和其它緩沖器?;蛘?,緩沖器390以變化的速率接收信息。已壓縮的視頻信息395可在到達緩沖器390之前,或在其離開緩沖器390之后,或兩者皆可,被解碼并處理以進行檢錯和糾錯。
熵解碼器380對經(jīng)熵編碼的已量化數(shù)據(jù)、以及經(jīng)熵編碼的輔助信息(例如,運動信息、量化步長)進行熵解碼,通常是應用在編碼器200中執(zhí)行的熵編碼的逆操作。熵解碼技術(shù)包括算術(shù)解碼、差分解碼、霍夫曼解碼、行程長度解碼、LZ解碼、字典解碼、以及上述的組合。熵解碼器380通常對不同種類的信息(例如,DC系數(shù)、AC系數(shù)、不同種類的輔助信息)使用不同的解碼技術(shù),并可在特定解碼技術(shù)內(nèi)從多個代碼表中間進行選擇。
如果要被重構(gòu)的幀是前向預測幀,則運動補償器330將運動信息315應用于參考幀325,以構(gòu)成對被重構(gòu)的幀305的預測335。例如,運動補償器330使用宏塊運動矢量在參考幀中尋找宏塊。幀緩沖器320存儲先前所重構(gòu)的幀以作為參考幀使用?;蛘撸\動補償器應用另一種類型的運動補償。運動補償器330的預測通常是不完美的,所以解碼器300還重構(gòu)預測殘余345。
當解碼器300需要已重構(gòu)的幀用于后續(xù)的運動補償時,幀存儲320緩沖已重構(gòu)的幀305以供預測下一個幀時使用。在一些實施例中,編碼器200對已重構(gòu)的幀305運用解塊過濾器,以自適應地平滑幀塊的不連續(xù)。
逆量化器370逆量化經(jīng)熵解碼的數(shù)據(jù)。一般而言,逆量化器370根據(jù)以逐幀或其它方式改變的步長,對經(jīng)熵解碼的數(shù)據(jù)應用均勻的、標量的逆量化。或者,逆量化器370對數(shù)據(jù)應用另一種類型的逆量化,例如,非均勻的、矢量的、或非自適應的逆量化,或者在不使用逆頻率變換的解碼器系統(tǒng)中直接逆量化空間域數(shù)據(jù)。
頻率逆變換器360將量化的、頻域的數(shù)據(jù)變換為空間域的視頻信息。對于基于塊的視頻幀,頻率逆變換器360應用以下部分中所描述的逆變換。在一些實施例中,頻率逆變換器360為關(guān)鍵幀對空間預測殘余應用頻率逆變換。頻率逆變換器360可應用8×8、8×4、4×8或其它大小的頻率逆變換。
C.幀高速緩存在本文所描述的視頻編解碼器體系結(jié)構(gòu)內(nèi)使用幀高速緩存的實現(xiàn)中,較佳的是在編碼器和解碼器兩處都依次高速緩存參考幀。當參考幀被丟失,可使用解碼器處高速緩存的適當參考幀來解碼后續(xù)的相關(guān)幀。這產(chǎn)生以下好處A)更有效率的帶寬利用現(xiàn)有技術(shù)的方法要求I幀被生成并發(fā)送到編碼器。而此方法允許特殊類型的幀,SP幀被發(fā)送到解碼器,然后被高速緩存直至被需要。SP幀一般可用比相同質(zhì)量的I幀更少的比特來編碼,因此比起使用等價的I幀,SP幀使用較少的帶寬。
B)較快的差錯恢復較佳的是,當分組丟失發(fā)生時,SP幀已被高速緩存在解碼器處;這允許以很少的滯后時間來解釋流中的下一個P幀。
2.示例性方法概述所描述的實施例包括用于在解碼器處高速緩存幀、然后使用被高速緩存的幀來重構(gòu)依賴于已被破壞或丟失的參考幀的P幀和B幀的技術(shù)和工具。高速緩存可被集成為視頻解碼器300(圖3)的一部分,視頻編碼器200(圖2)的一部分,或較佳的是同時被集成為這兩者的一部分。當解碼器檢測到分組丟失時,它向編碼器300發(fā)送消息,編碼器300隨即基于共享的已高速緩存的若干幀中的一個幀生成新的參考幀。所生成的參考幀隨即被發(fā)送給解碼器。已高速緩存的幀在解碼器處被用來解碼所生成的幀和后續(xù)的相關(guān)幀,直至另一個參考幀到達解碼器處。本文中所描述的流程圖元素只是示例;根據(jù)所描述的技術(shù),可使用其它流程圖元素。此外,根據(jù)所描述的技術(shù)和工具,流程圖元素可按不同順序發(fā)生,或者特定的過程塊可被跳過。
所描述的技術(shù)和工具可彼此結(jié)合或結(jié)合其它技術(shù)和工具來使用,或可被獨立使用。
參考圖4,流程圖400示出本文中所揭示的方法的簡要概覽。在過程框402,一部分要通過網(wǎng)絡發(fā)送的視頻信號被分配給若干個分組。在過程框404,編碼器將至少一部分分組編碼為若干個幀。這些幀可包括參考幀325(諸如I幀和P幀),還可包括B幀,后者不被用作為任何其它幀類型的參考。諸如跳幀等其它類型的幀也可被編碼為幀。在可選的過程框406,幀(通常是參考幀)可被高速緩存在編碼器處。如果該幀被高速緩存,則它在其幀頭部被賦予類型“已高速緩存的幀”(CF)。然后,被高速緩存的幀連同其它幀被發(fā)送到解碼器。一旦幀在解碼器處,在過程框410,它就被高速緩存在解碼器高速緩存中。典型的被高速緩存的幀類型是P幀和I幀。
如果后續(xù)的參考幀被丟失,則已高速緩存的幀可被用來解壓縮以后的相關(guān)幀,如在過程框412所示。流程圖400僅示出一個示例性實施例,且無論如何不應被解釋為是限制性的。例如,在決策框406,與編碼器相關(guān)聯(lián)的高速緩存是可選的。方法400可在如圖2和3中所示的視頻編解碼器中實現(xiàn),而該視頻編解碼器可在軟件、硬件、或兩者的結(jié)合中實現(xiàn)。
3.用于高速緩存幀的示例性方法圖5A到5D示出高速緩存幀以在有噪網(wǎng)絡中實現(xiàn)視頻編解碼器的最優(yōu)性能的示例性方法。參考圖5D,在一個示例性實施例中,幀通過諸如RTP(實時傳輸協(xié)議)508D的主信道從編碼器502D被發(fā)送到解碼器506D。網(wǎng)絡常常丟失分組,或亂序地傳遞分組。分組還可能被延遲隨機的時間量,這也可能令它們不可使用。分組丟失事件被解碼器506D檢測到,并通過反饋信道從解碼器向編碼器502D發(fā)信號通知。為正確重構(gòu)消息,在一些實施例中,RTP 508D頭部包含信息和序列號,它們都允許接收器正確地重新將分組排序并確定所丟失的分組個數(shù)。RTP 508D由其控制協(xié)議(RTPC)504D增強,后者用來提供用于監(jiān)視數(shù)據(jù)傳遞的反饋信道。每個數(shù)據(jù)分組都有一個序列號,通常每個后續(xù)數(shù)據(jù)分組遞增1。在一個示例性實施例中,當某個序列號未被接收到時,分組丟失被解碼器506D檢測到。一旦解碼器506D發(fā)現(xiàn)丟失分組,它即通過反饋信道504D發(fā)送消息,以通知編碼器502D哪個(或哪些)分組已被丟失。在一些實施例中,僅提供關(guān)于最初丟失的分組的信息。在其它實施例中,還提供諸如漏失的分組數(shù)或丟失的具體分組的列表等附加信息。較佳的是在報告窗口中使用最早丟失的分組的時間戳來發(fā)送分組丟失的位置。此信息使編碼器502D能夠確定要使用哪個已高速緩存的參考。
參考圖5A,編碼器502A周期性地將幀高速緩存到幀高速緩存504A中。要高速緩存哪些幀,高速緩存應該多頻繁地發(fā)生,以及在單次應能高速緩存的幀數(shù)是非常取決于實現(xiàn)方式的。在一些實施例中,被高速緩存的幀是參考幀,即P幀和I幀。也可高速緩存其它幀類型。被高速緩存的幀506A(或其副本)還被發(fā)送給解碼器512A。也存儲在編碼器高速緩存504A中的這樣一個幀在其頭部中被定義為幀類型CF(已高速緩存的幀)。在一些實施例中,此頭部通過令解碼器512A知道此特定幀應被高速緩存在解碼器高速緩存510A中以供稍后使用,來允許編碼器502A和解碼器512A的同步。以下的表1示出包括已高速緩存的幀(CF)類型在內(nèi)的幀類型代碼的一個示例性實施例。
表1幀類型代碼


當CF類型的幀508A到達解碼器512A時,它被存儲在解碼器幀高速緩存510A中。在解碼器512A處存儲每個CF類型的幀是一種同步編碼器和解碼器幀高速緩存504A和510A的方法。但是,還構(gòu)想了同步這些幀高速緩存的其它方法。
當在解碼器504B處檢測到分組丟失502B時,使用反饋信道504D將此丟失向編碼器502A回報。較佳的是,此報告包含時間戳信息,它允許編碼器502A選擇正確的已高速緩存的幀504A來參考。在其它實施例中,使用最后被高速緩存的幀。一旦選擇了一個已高速緩存的幀504C,即由編碼器502C使用該幀504C來編碼下一個幀506C,較佳的是幀506C是P幀,但也可編碼I幀或其它幀類型。這個使用已高速緩存的幀506C來編碼的幀被稱為“超P”幀(SP幀),并在其頭部相應通知。SP幀的一種示例性幀類型代碼字在以上的表1中示出。
當解碼器512C接收SP幀508C時,它使用本地高速緩存的幀510C將該SP幀508C解碼成未壓縮的幀(U幀)514C。使用此方法,解碼器512C處的恢復時間是分組丟失事件和SP幀到達之間的時間間隔。如果這個所生成的SP幀508C在發(fā)送期間被丟失,則解碼器512C將繼續(xù)發(fā)送分組丟失報告,直至新的參考幀(一般是類型P、SP或I)到達。從分組丟失起的實際恢復時間主要是根據(jù)分組丟失報告時間間隔而定。
在一些實施例中,編碼器502A高速緩存幀504A,并周期性地向解碼器發(fā)送已高速緩存的幀506A的副本。被發(fā)送的已高速緩存的幀之間的時間長度是非常取決于實現(xiàn)方式的。一些實現(xiàn)可以相等的時間間隔高速緩存幀。其它實現(xiàn)可以本身取決于諸如網(wǎng)絡速度或網(wǎng)絡所經(jīng)受的丟失量等系統(tǒng)變量的時間間隔高速緩存幀。
4.示例性系統(tǒng)實施例圖6示出可用于實現(xiàn)基于解碼器和編碼器的幀高速緩存的視頻系統(tǒng)600的另一個示例性實施例。視頻系統(tǒng)600并不試圖對本發(fā)明的使用范圍或功能提出任何限制,因為本發(fā)明可在各種通用或?qū)S靡曨l系統(tǒng)中實現(xiàn)。
該視頻系統(tǒng)包括至少一個編碼器602。此編碼器還包括編碼器高速緩存604。在所示實施例中,高速緩存駐留在編碼器602內(nèi)部,但在其它實現(xiàn)中可駐留在視頻系統(tǒng)內(nèi)部的其它地方。編碼器高速緩存604被啟用以存儲一個或多個視頻幀節(jié)606。作為建議而非限制,這些幀節(jié)可包括若干個塊、宏塊、若干個片、完整的幀、幀組、或本領(lǐng)域技術(shù)人員可構(gòu)想的幀的任何其它劃分。編碼器高速緩存604可僅高速緩存一個幀部分,可高速緩存兩個部分,或合乎給定實現(xiàn)需要的任何數(shù)量的部分。視頻系統(tǒng)600還包括解碼器608。類似于編碼器602,解碼器608包含解碼器高速緩存610,它用來存儲一個或多個視頻幀部分612。這些視頻幀部分可包括一個或多個塊、宏塊、片、或可包括完整的幀、幀組、或本領(lǐng)域技術(shù)人員可構(gòu)想的幀的任何其它部分。解碼器高速緩存610可被設定為存儲一個幀部分、兩個幀部分、或任何其它數(shù)量的幀部分。
視頻系統(tǒng)600還包括同步器614,它用來確保編碼器高速緩存604和解碼器高速緩存610包含實際相同的信息。如前文所討論,同步器可包括附加到某些幀或部分幀的唯一幀頭部,它由編碼器602所應用,以通知解碼器608要高速緩存特定的一個或一部分幀。例如,幀可被存儲在編碼器高速緩存604處,還可被發(fā)送給解碼器608。該幀可具有加以區(qū)別的CF(已高速緩存的幀)頭部,以指示它有副本存儲在編碼器高速緩存604中。當解碼器608檢測到分組丟失或其它使得對幀進行解碼變得困難或不可能的破壞時,編碼器602從存儲在編碼器高速緩存604中的幀編碼的后續(xù)幀可被標記以指示此幀可從解碼器高速緩存610處的幀解碼。一些實現(xiàn)可在解碼器高速緩存610處存儲多個幀;在此類情形中,頭部還可任選地包含足以確定應該使用哪個已高速緩存的幀的其它信息。還構(gòu)想了其它同步方法。發(fā)送器616將幀從編碼器602發(fā)送到解碼器608。
5.計算環(huán)境上述的幀高速緩存的實現(xiàn)可在實現(xiàn)圖像和視頻信號處理的各種設備中的任何一種上進行,這些設備包括計算機、圖像和視頻錄制、發(fā)送和接收設備、便攜式視頻播放器、視頻會議、web視頻流傳輸應用程序、等等。圖像和視頻編碼技術(shù)可以在硬件電路中(例如,在ASIC電路、FPGA等中)、以及在諸如圖7中所示等計算機或其它計算環(huán)境內(nèi)部執(zhí)行(無論是在中央處理單元(CPU)上、還是在專用圖形處理器、視頻卡等上執(zhí)行)的視頻處理軟件中實現(xiàn)。
圖7示出可實現(xiàn)所描述的幀高速緩存的適用的計算環(huán)境700的一般化示例。計算環(huán)境700并不視圖對本發(fā)明的使用范圍或功能提出任何限制,因為本發(fā)明可在各種通用或?qū)S糜嬎悱h(huán)境中實現(xiàn)。
計算環(huán)境700包括至少一個處理單元710和存儲器720。此最基本的配置730被包括在虛線內(nèi)部。處理單元710執(zhí)行計算機可執(zhí)行的指令,并可以是真實或虛擬的處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以提高處理能力。存儲器720可以是易失性存儲器(例如,寄存器、高速緩存、RAM、等等)、非易失性存儲器(例如,ROM、EEPROM、閃存、等等)、或這兩者的某種組合。存儲器720存儲實現(xiàn)所述編碼器/解碼器高速緩存的軟件780。
計算環(huán)境可具有其它特征。例如,計算環(huán)境700包括存儲740、一個或多個輸入設備750、一個或多個輸出設備760、以及一個或多個通信連接770。諸如總線、控制器或網(wǎng)絡等互連機制(未示出)將計算環(huán)境700的各個組件相互連接。通常,操作系統(tǒng)軟件(未示出)為計算環(huán)境700中執(zhí)行的其它軟件提供操作環(huán)境,并協(xié)調(diào)計算環(huán)境700的各組件的活動。
存儲740可以是可移動或不可移動的,并且包括磁盤、磁帶或磁帶盒,CD-ROM、CD-RW、DVD,或任何其它可被用來存儲信息并且在計算環(huán)境700內(nèi)部可被訪問的任何其它介質(zhì)。存儲740存儲實現(xiàn)編碼器/解碼器高速緩存方案的軟件780。
輸入設備750可以是諸如鍵盤、鼠標、筆、或軌跡球等觸摸式輸入設備,語音輸入設備,掃描輸入設備,或向計算環(huán)境700提供輸入的其它設備。對于音頻,輸入設備750可以是接受模擬或數(shù)字形式的音頻輸入的聲卡或類似設備,或者是向計算環(huán)境700提供音頻樣本的CD-ROM讀出器。輸出設備760可以是顯示器、打印機、揚聲器、CD寫入器、或可提供來自計算環(huán)境700的輸出的其它設備。
通信連接770允許通過通信介質(zhì)到另一計算實體的通信。通信介質(zhì)傳遞已調(diào)制數(shù)據(jù)信號形式的諸如計算機可執(zhí)行指令、已壓縮的音頻或視頻信息、或其它數(shù)據(jù)信息。已調(diào)制信號是以在信號中將信息編碼的方式設置或改變其一個或多個特征的信號。作為示例,而非限制,通信介質(zhì)包括用電的、光的、RF、紅外、聲學或其它載波實現(xiàn)的有線或無線技術(shù)。
本文中的編碼器/解碼器幀高速緩存技術(shù)可以在計算機可讀介質(zhì)的通用上下文中描述。計算機可讀介質(zhì)是在計算環(huán)境700內(nèi)部可被訪問的任何可用介質(zhì)。作為示例,而非限制,以計算環(huán)境700來說,計算機可讀機制包括存儲器720、存儲740、通信介質(zhì)、以及以上的任何組合。
本文中的編碼器/解碼器幀高速緩存可以在真實或虛擬的目標處理器上的計算環(huán)境中執(zhí)行的計算機可執(zhí)行指令(諸如程序模塊中所包括的那些指令)的通用上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)、等等。各程序模塊的功能可按各實施例中的需要,在程序模塊之間被組合或分開。程序模塊的計算機可執(zhí)行指令可在本地或分布式計算環(huán)境內(nèi)部被執(zhí)行。
為了說明,此詳細描述使用諸如“確定”、“發(fā)送”、“編碼”、“解碼”、以及“應用”等術(shù)語來描述計算環(huán)境中的計算機操作。這些術(shù)語是對計算機所執(zhí)行的操作的高度抽象,并且不應與人類所執(zhí)行的動作相混淆。對應于這些術(shù)語的實際計算機操作根據(jù)實現(xiàn)而有所不同。
考慮到可應用我們的發(fā)明的原理的許多可能的實施例,應當認識到,這些詳細的實施例只是示例性的,且不應被當作限制了我們的發(fā)明的范圍。相反,我們要求將落入所附權(quán)利要求書及其等效技術(shù)方案的范圍和精神之內(nèi)的所有此類實施例作為我們的發(fā)明的保護范圍。
權(quán)利要求
1.一種通過網(wǎng)絡發(fā)送信號的方法,包括以下步驟將一部分所述信號分配給分組;編碼器將一部分分組編碼為幀;通過所述網(wǎng)絡將幀發(fā)送到解碼器;在所述解碼器處高速緩存至少一個幀;以及所述解碼器至少部分地使用已高速緩存的幀來解釋從所述編碼器發(fā)送來的至少一個后續(xù)幀。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括在所述編碼器處高速緩存至少一個幀。
3.如權(quán)利要求2所述的方法,其特征在于,所述方法還包括周期性地在所述編碼器處高速緩存所述幀。
4.如權(quán)利要求3所述的方法,其特征在于,高速緩存之間的周期可以是設定的時間間隔,或者可以是可變的時間間隔。
5.如權(quán)利要求2所述的方法,其特征在于,所述至少一個后續(xù)幀是至少部分地使用已高速緩存的編碼器幀在所述編碼器處生成的。
6.如權(quán)利要求5所述的方法,其特征在于,同一幀的副本被高速緩存在所述解碼器和所述編碼器處,且所述方法還包括與在所述解碼器處高速緩存所述幀同步地在所述編碼器處高速緩存所述幀。
7.如權(quán)利要求1所述的方法,其特征在于,分組丟失由所述解碼器檢測,且其中,分組丟失檢測信號是通過反饋信道向所述編碼器發(fā)送的。
8.如權(quán)利要求7所述的方法,其特征在于,所述分組丟失有與之相關(guān)聯(lián)的時間,且其中,分組丟失時間被發(fā)送到所述編碼器。
9.如權(quán)利要求7所述的方法,其特征在于,所述編碼器接收所述分組丟失信號,并且一接收到所述信號即使用高速緩存在所述編碼器處的幀來構(gòu)造分組丟失幀。
10.如權(quán)利要求9所述的方法,其特征在于,所述分組丟失幀還包括幀頭部,且其中,所述分組丟失幀在所述幀頭部中被加以區(qū)別地命名。
11.如權(quán)利要求1所述的方法,其特征在于,所述編碼器周期性地向所述解碼器發(fā)送已高速緩存的幀。
12.如權(quán)利要求1所述的方法,其特征在于,所述信號是圖像信號、視頻信號、音頻信號、或語音信號。
13.一種存儲計算機可執(zhí)行指令的計算機可讀介質(zhì),所述計算機可執(zhí)行指令用于使計算機系統(tǒng)執(zhí)行如權(quán)利要求1所述的方法。
14.如權(quán)利要求1所述的方法,其特征在于,高速緩存在所述編碼器處的所述至少一個幀是參考幀。
15.一種在有損網(wǎng)絡內(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ā)送來的至少一個后續(xù)幀。
20.一種視頻處理器,包括將數(shù)據(jù)分組編碼成幀的裝置;在編碼器處緩存至少一個幀的裝置;將所述幀從所述編碼器發(fā)送到解碼器的裝置;在所述解碼器處解碼所述幀的裝置;在所述解碼器處高速緩存所述至少一個幀的裝置;將所述編碼器處高速緩存的幀與所述解碼器處高速緩存的幀同步的裝置;檢測分組丟失的裝置;當檢測到分組丟失時使用所述編碼器處高速緩存的幀來生成特殊參考幀的裝置;以及使用所述解碼器處高速緩存的幀來解釋所述解碼器處的特殊參考幀的裝置。
全文摘要
揭示了使用幀高速緩存來改善分組丟失恢復的各種新的和非顯而易見的裝置和方法。所揭示的實施例中的一個是一種在編碼器及其對應的解碼器內(nèi)使用周期性和同步的幀高速緩存的方法。當解碼器發(fā)現(xiàn)分組丟失時,它通知編碼器,后者隨即基于存儲在編碼器和解碼器兩處的若干共享幀中的一個生成幀。當解碼器接收到這個生成的幀時,它能夠使用其本地已高速緩存的幀來對其進行解碼。
文檔編號G06F12/00GK1816150SQ200510128750
公開日2006年8月9日 申請日期2005年11月30日 優(yōu)先權(quán)日2004年12月30日
發(fā)明者林志隆, 夏明輝, 徐柏翔, S·瑞古納莎恩, T·W·胡爾庫姆 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
东方市| 宁都县| 澎湖县| 龙江县| 宜黄县| 荣昌县| 南雄市| 新营市| 大埔区| 屯门区| 财经| 孝昌县| 定安县| 沾益县| 贞丰县| 原阳县| 新乡县| 化隆| 克什克腾旗| 来凤县| 襄城县| 都江堰市| 甘肃省| 荔波县| 祁门县| 通榆县| 聂荣县| 尚志市| 西昌市| 汉沽区| 永德县| 高邮市| 巴彦淖尔市| 闽侯县| 通州市| 凭祥市| 文登市| 康定县| 木兰县| 成安县| 六安市|