基于照相機和背景運動的參考幀緩沖區(qū)的自適應(yīng)配置的制作方法
【專利摘要】在一種視頻編碼/解碼系統(tǒng)中,視頻編碼器和解碼器中的參考圖片緩存可以基于照相機和背景運動來動態(tài)分區(qū)從而能夠?qū)е绿岣叩木幋a效率和編碼質(zhì)量。當照相機固定并且因此呈現(xiàn)少量運動時,系統(tǒng)可以將參考圖片緩存的較大部分分配用于存儲長期參考幀。在這種情況下,圖像的前景元素(例如,人)可能在相對固定的背景前面移動。增加長期參考幀的個數(shù)會增加以下的機會:即不論前景元素在當前編碼的幀中的什么位置,參考圖片緩存都將包含提供與新的幀中背景元素充分預(yù)測匹配的至少一個幀。因而,當前幀中未被覆蓋的背景元素可以利用少數(shù)位以高質(zhì)量編碼。當照相機呈現(xiàn)大量運動時,系統(tǒng)可以將參考圖片緩存的較大部分分配用于存儲短期參考幀。
【專利說明】基于照相機和背景運動的參考幀緩沖區(qū)的自適應(yīng)配置
【背景技術(shù)】
[0001]在視頻編碼器/解碼器系統(tǒng)中,視頻編碼器可以把源視頻序列編碼成具有比源視頻更小位速率的編碼表示,并且由此可以實現(xiàn)數(shù)據(jù)壓縮。編碼器可以根據(jù)多種不同編碼技術(shù)中的任意一種來編碼被處理的視頻數(shù)據(jù),以實現(xiàn)壓縮。用于數(shù)據(jù)壓縮的一種常見技術(shù)使用預(yù)測編碼技術(shù)(例如,時間/運動預(yù)測編碼)。例如,視頻流中的有些幀可以獨立地編碼(1-幀)而有些其它幀(例如,P-幀或B-幀)可以利用其它幀作為參考幀來編碼。P-幀可以參考單個先前編碼的巾貞(P-巾貞)來編碼,而B-巾貞可以參考一對先前編碼的巾貞來編碼,其中一對先前編碼的幀一般是顯示次序中出現(xiàn)在該B-幀之前的一個幀和顯示次序中出現(xiàn)在該B-幀之后的另一個幀。支持P-編碼模式和B-編碼模式的先前編碼的幀被稱為“參考幀”。所產(chǎn)生的壓縮序列(位流)可以經(jīng)通道發(fā)送到解碼器。為了恢復(fù)視頻數(shù)據(jù),通過反轉(zhuǎn)由編碼器執(zhí)行的編碼過程,位流可以在解碼器被解壓縮,從而產(chǎn)生接收到的解碼的視頻序列。
[0002]編碼器和解碼器都對編碼的參考幀進行解碼并將其進行本地緩存。在沒有發(fā)送錯誤的情況下,位于編碼器和解碼器兩者的參考圖片緩存應(yīng)當是同步的。參考圖片緩存具有有限的深度,而且當緩存被填滿時,新的參考圖片根據(jù)預(yù)定的驅(qū)逐方案驅(qū)逐較老的參考圖片。
[0003]如果可以從視頻序列選擇與隨后接收的幀良好匹配的參考幀,則可以實現(xiàn)更好的壓縮效率和編碼質(zhì)量?,F(xiàn)有的管理過程不是總讓為其它幀提供良好預(yù)測參考的參考幀保留在緩存中。例如,在許多編碼環(huán)境中,視頻編碼器總是保持預(yù)定數(shù)量的最近編碼的參考幀。但是,在具有極低運動級別的視頻序列中,可以通過保留比第N個最近編碼的參考幀更老的參考巾貞來獲得提聞的編碼效率。在具有聞運動級別的視頻序列中,可以通過在參考圖片緩存中保留較年輕的參考幀,即時間上最靠近被編碼的新的幀的那些參考幀,來獲得提高的編碼效率。還沒有已知的編碼系統(tǒng)充分平衡這些相互矛盾的利益。
【專利附圖】
【附圖說明】
[0004]圖1說明了根據(jù)本發(fā)明實施例的視頻編碼系統(tǒng)的簡化框圖。
[0005]圖2圖示說明了根據(jù)本發(fā)明實施例的參考圖片緩存。
[0006]圖3說明了根據(jù)本發(fā)明各種實施例的用于分區(qū)參考圖片緩存的不同方案。
[0007]圖4說明了根據(jù)本發(fā)明實施例的分區(qū)參考圖片緩存并編碼輸入視頻數(shù)據(jù)的方法。
[0008]圖5說明了在一種示例性使用情況中圖4方法的操作。
[0009]圖6說明了根據(jù)本發(fā)明實施例的緩存重新分區(qū)的例子。
【具體實施方式】
[0010]本發(fā)明的實施例提供了參考緩存的參考圖片執(zhí)行預(yù)測視頻編碼的視頻編碼系統(tǒng)。參考圖片緩存可以分區(qū)成一對緩沖區(qū),分別用于存儲長期參考幀和短期參考幀。緩沖區(qū)的相對尺寸基于視頻數(shù)據(jù)中所存在的運動量動態(tài)變化。在編碼期間,可以為輸入序列的個別幀估計運動,而且對預(yù)測參考的搜索可以基于幀的運動而限定到其中一個緩沖區(qū)。[0011]基于照相機和背景運動的參考圖片緩存的動態(tài)分區(qū)會導(dǎo)致提高的編碼效率和編碼質(zhì)量。當照相機固定并且因此呈現(xiàn)少量運動時,系統(tǒng)可以把參考圖片緩存的較大部分分配用于長期參考幀的存儲。在這種情況下,圖像的前景元素(例如,人)可能在相對固定的背景前面移動。增加長期參考幀的個數(shù)可增加以下的機會:即不論前景元素在當前編碼的幀中的什么位置,參考圖片緩存都將包含提供與新的幀中的背景元素充分預(yù)測匹配的至少一個幀。因而,當前幀中未被覆蓋的背景元素可以利用少數(shù)位以高質(zhì)量編碼。
[0012]當存在大量照相機運動或者背景中有許多移動時,系統(tǒng)可以把參考圖片緩存的較大部分分配用于短期參考幀的存儲。在照相機運動過程中,運動模糊和滾動快門效應(yīng)是常見的,而且針對這種效應(yīng)短期預(yù)測參考通常提供更好的編碼,因為最近編碼的參考幀有可能具有相似的效應(yīng)。
[0013]圖1(a)說明了根據(jù)本發(fā)明實施例的視頻編碼系統(tǒng)100的簡化框圖。系統(tǒng)100可以包括經(jīng)網(wǎng)絡(luò)130互連的多個終端110、120。終端110、120每個都可以在本地位置捕捉視頻數(shù)據(jù)并且編碼視頻數(shù)據(jù)以經(jīng)網(wǎng)絡(luò)130發(fā)送到另一終端。每個終端110、120都可以從網(wǎng)絡(luò)130接收另一終端的編碼的視頻數(shù)據(jù)、解碼編碼的數(shù)據(jù)并且顯示從其恢復(fù)的視頻數(shù)據(jù)。如圖1(a)中所說明的,終端110、120被說明為智能電話,但是本發(fā)明的原理不限于此。本發(fā)明的實施例可應(yīng)用于個人計算機(臺式和膝上型計算機兩者)、平板計算機、計算機服務(wù)器、媒體播放器和/或?qū)S靡曨l會議裝備。網(wǎng)絡(luò)130代表在終端110、120之間傳送編碼的視頻數(shù)據(jù)的任何數(shù)量的網(wǎng)絡(luò),包括例如有線和/或無線通信網(wǎng)絡(luò)。通信網(wǎng)絡(luò)130可以在電路交換和/或分組交換通道中交換數(shù)據(jù)。代表性的網(wǎng)絡(luò)包括電信網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或互聯(lián)網(wǎng)。為了本討論的目的,除非以下解釋,否則網(wǎng)絡(luò)130的體系結(jié)構(gòu)和拓撲結(jié)構(gòu)對本發(fā)明的操作是不重要的。
[0014]圖1(b)進一步說明了可以在系統(tǒng)100中操作的視頻編碼器和解碼器140、150的功能性框圖。具體而言,圖1說明了用于終端Iio的照相機110、運動傳感器112和視頻編碼器140。視頻編碼器140可以編碼在照相機111捕捉的視頻數(shù)據(jù)并且可以把編碼的數(shù)據(jù)傳送給由網(wǎng)絡(luò)130提供的通道131。視頻編碼器140可以不僅基于視頻數(shù)據(jù)本身的內(nèi)容而且通過終端110中所提供的運動傳感器提供的運動數(shù)據(jù)來選擇編碼參數(shù)。運動傳感器112可以許多方式實現(xiàn),例如,包括陀螺儀和/或加速計。
[0015]圖1說明了用于終端120的視頻解碼器150和顯示器121。視頻解碼器150可以從通道131接收編碼的視頻數(shù)據(jù)、解碼編碼的視頻數(shù)據(jù)并且在第二終端120的顯示器121上呈現(xiàn)恢復(fù)的視頻數(shù)據(jù)。
[0016]圖1中所說明的功能塊只支持一個方向的視頻編碼和解碼。對于雙向通信,終端120可以包括用于對本地捕捉到的視頻進行視頻編碼的功能塊(未示出)而且終端110可以包括用于對經(jīng)網(wǎng)絡(luò)130從終端120接收到的編碼的視頻數(shù)據(jù)進行解碼的功能塊(也未示出)。雖然可以想到本發(fā)明的原理可以在駐留在任一終端110、120的編碼器上應(yīng)用,但是圖1中省略了為終端120到終端110的編碼方向提供的功能塊,這僅僅是為了簡化本討論。
[0017]如所說明的,視頻編碼器140可以包括預(yù)處理器142、編碼引擎143、參考圖片緩存144、發(fā)送器145和控制器146。預(yù)處理器142可以從照相機111接受源視頻并且可以對該源視頻執(zhí)行各種處理操作,以調(diào)整該源視頻以適于編碼。編碼引擎143可以對預(yù)處理后的源視頻執(zhí)行壓縮操作,以減少其中的空間和/或時間冗余。編碼引擎143可以把編碼的視頻數(shù)據(jù)輸出到發(fā)送器145,發(fā)送器145可以格式化該數(shù)據(jù)以經(jīng)通道131發(fā)送并且傳送給終端120。作為其操作的一部分,利用存儲在參考圖片緩存144中的數(shù)據(jù)作為預(yù)測參考,編碼引擎143可以根據(jù)運動預(yù)測技術(shù)編碼新的視頻數(shù)據(jù)幀。編碼引擎143進一步可以對參考幀的編碼的視頻數(shù)據(jù)進行解碼,以存儲在參考圖片緩存144中。
[0018]視頻編碼器140可以包括管理視頻編碼器140的操作的控制器146。在一個實施例中,控制器146可以把參考圖片緩存144分區(qū)成如下討論的長期緩沖區(qū)和短期緩沖區(qū)(圖1中未示出)??刂破?46進一步可以控制由編碼引擎143貫穿參考圖片緩存的緩沖區(qū)執(zhí)行的預(yù)測搜索,而且可以選擇編碼引擎143操作所根據(jù)的其它編碼參數(shù)。就此而言,控制器146可以在分析從運動傳感器112呈現(xiàn)給其的運動數(shù)據(jù)之后執(zhí)行這些控制操作。
[0019]預(yù)處理器142可以對來自照相機的源視頻輸出執(zhí)行多種其它視頻處理操作,以調(diào)整源視頻以適于編碼。預(yù)處理器142可以包括諸如去噪濾波器、銳化濾波器、平滑濾波器、雙邊濾波器等濾波器的陣列(未示出),這些濾波器可以基于在視頻中觀察到的特性動態(tài)應(yīng)用到源視頻。預(yù)處理器142可以包括其自己的控制器(未示出),以便檢查來自照相機的源視頻數(shù)據(jù)并且選擇其中一種或多種濾波器來應(yīng)用。一般來說,預(yù)處理器142調(diào)整源視頻數(shù)據(jù)以使壓縮更有效,或者在考慮到可能因編碼引擎143操作而引發(fā)的數(shù)據(jù)丟失的情況下保持圖像質(zhì)量。
[0020]編碼引擎143可以根據(jù)多種不同的編碼技術(shù)來編碼輸入視頻數(shù)據(jù),以實現(xiàn)壓縮。編碼引擎143可以通過運動補償預(yù)測來壓縮圖像。輸入視頻的幀可以被指定編碼類型,諸如幀內(nèi)編碼(1-編碼)、單向預(yù)測編碼(P-編碼)或者雙向預(yù)測編碼(B-編碼)。幀可以進一步解析成多個像素塊而且可以通過變換編碼、量化和熵編碼來編碼。P-編碼和B-編碼的幀的像素塊可以被預(yù)測性地編碼,在這種情況下,編碼引擎可以計算識別存儲在參考圖片緩存144中的解碼幀的像素塊的運動矢量,所述像素塊充當被編碼的像素塊的預(yù)測并且可以在參與變換編碼之前生成預(yù)測殘差。在一個實施例中,視頻編碼器可以根據(jù)由ITU H.263、
H.264等定義的編碼協(xié)議來操作。
[0021]編碼引擎143進一步可以指定某些編碼幀可以用作在編碼隨后接收到的輸入幀時使用的參考幀。編碼引擎143可以解碼參考幀的編碼的視頻數(shù)據(jù)并且把解碼后的參考幀存儲在參考圖片緩存144中,因此視頻編碼器140具有如將在視頻解碼器150被解碼的一樣的參考幀的解碼副本。
[0022]發(fā)送器145可以把編碼的視頻數(shù)據(jù)發(fā)送到通道131。在這么做的時候,發(fā)送器145可以將編碼的視頻數(shù)據(jù)與要發(fā)送的其它數(shù)據(jù)多路復(fù)用,其他數(shù)據(jù)諸如(由未在圖1中說明的處理源提供的)編碼的音頻數(shù)據(jù)和控制數(shù)據(jù)。發(fā)送器145可以把多路復(fù)用的數(shù)據(jù)格式化成適合網(wǎng)絡(luò)130的格式并且把數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)。
[0023]作為其操作的一部分,發(fā)送器145可以觀察網(wǎng)絡(luò)的性能并且得出(develop)關(guān)于這種性能的統(tǒng)計數(shù)據(jù)。例如,發(fā)送器145可以估計網(wǎng)絡(luò)130可以提供給終端110的通道131的帶寬。在許多聯(lián)網(wǎng)的應(yīng)用中,網(wǎng)絡(luò)通道提供可變的發(fā)送數(shù)據(jù)率,該數(shù)據(jù)率在不通知發(fā)送終端的情況下變化。發(fā)送器145可以從通道131或者從遠端終端120接收識別發(fā)送失敗、發(fā)送延遲的指示和發(fā)送器145可以從中估計網(wǎng)絡(luò)性能的網(wǎng)絡(luò)性能的其它指示。發(fā)送器145可以向控制器146提供通道統(tǒng)計數(shù)據(jù)??刂破?46又可以更改其編碼參數(shù)的選擇,以便使由編碼引擎143輸出的編碼的數(shù)據(jù)的位速率與通道131的估計帶寬匹配。[0024]視頻解碼器150可以包括接收器151、解碼引擎152、參考圖片緩存153、后處理器154和控制器156。解碼引擎152可以參考存儲在參考圖片緩存153中的參考圖片對經(jīng)通道131接收到的編碼的視頻數(shù)據(jù)進行解碼。解碼引擎152可以把解碼的視頻數(shù)據(jù)輸出到后處理器154,該后處理器154可以對解碼的視頻數(shù)據(jù)執(zhí)行附加的操作,以調(diào)整該解碼的視頻數(shù)據(jù)以適于顯示。參考幀的解碼的視頻數(shù)據(jù)也可以存儲到參考圖片緩存153,用于在隨后接收到的編碼的視頻數(shù)據(jù)的解碼過程中使用。
[0025]解碼引擎152可以執(zhí)行反轉(zhuǎn)由編碼引擎143所執(zhí)行的編碼操作的解碼操作。解碼引擎152可以執(zhí)行熵解碼、反量化和變換解碼,以便生成恢復(fù)的像素塊數(shù)據(jù)。量化/反量化操作是有損過程,并且因此恢復(fù)的像素塊數(shù)據(jù)有可能將是由視頻編碼器140編碼的源像素塊的復(fù)制但是將包括一些錯誤。對于預(yù)測編碼的像素塊,變換解碼可能生成殘差數(shù)據(jù);解碼引擎152可以使用與像素塊關(guān)聯(lián)的運動矢量(在有些情況下可能是隱含的)來從參考圖片緩存153檢索要與預(yù)測殘差組合的預(yù)測的像素塊。解碼的像素塊可以重新組裝成幀并且輸出到后處理器154。
[0026]當解碼引擎152解碼新的參考幀時,它可以在參考圖片緩存153中存儲解碼的參考幀,用于在解碼隨后接收到的編碼的視頻數(shù)據(jù)過程中使用。
[0027]后處理器154可以執(zhí)行附加的視頻處理,以調(diào)整恢復(fù)的視頻數(shù)據(jù)以適用于呈現(xiàn)(通常是在顯示設(shè)備上)。典型的后處理操作可以包括應(yīng)用去塊濾波器、邊緣檢測濾波器、震蕩(ringing)濾波器等。后處理器154可以輸出恢復(fù)的視頻序列用于在顯示器121上呈現(xiàn),或者可選地,存儲到存儲器用于以后檢索和顯示。
[0028]視頻編碼器140和視頻解碼器150可以根據(jù)區(qū)分兩種類型參考幀的編碼協(xié)議進行操作。第一種類型的參考幀,在本文中被稱為“長期”參考幀,是在管理編碼協(xié)議中識別出來的并且被指定索引號。根據(jù)編碼協(xié)議,視頻解碼器150必須在其緩存中存儲長期參考幀并且在由視頻編碼器140命令之前防止其被驅(qū)逐。在運行時,如果生成具有匹配先前生成的長期參考幀的索引的新的長期參考幀,則該先前生成的長期參考幀可以從視頻編碼器和解碼器140、150的參考圖片緩存144、153中被驅(qū)逐。而且,協(xié)議支持在不提供替換長期參考幀的情況下允許視頻編碼器140指示解碼器150從解碼器150的參考圖片緩存153刪除長期參考幀的命令;在這種情況下,長期參考幀是通過索引號識別的。
[0029]另一種類型的參考幀,在本文中被稱為“短期”參考幀,不具有這種防止驅(qū)逐的保護。短期參考幀可以以先進先出方式存儲在參考圖片緩存中。參考圖片緩存一般具有固定的容量,比如說16幀。因而,當參考圖片緩存完全被先前存儲的參考幀充滿而且新的短期參考幀出現(xiàn)時,解碼器150和編碼器140驅(qū)逐最老的短期參考幀,以便給新的參考幀騰出地方。被驅(qū)逐的短期參考幀將是緩存153中最老的短期參考幀但不一定是整體上最老的參考幀;在被視頻編碼器140識別為要替換或刪除之前,較老的長期參考幀將受到保護不被驅(qū)逐。
[0030]如所討論的,視頻編碼器的參考圖片緩存144存儲如由解碼器所生成的那樣的解碼的長期和短期參考幀兩者。因而,在視頻編碼器140和解碼器150之間沒有發(fā)送錯誤的情況下,視頻編碼器的參考圖片緩存144可以模仿在解碼器的參考圖片緩存153中發(fā)生的存儲和驅(qū)逐操作。
[0031]圖2圖示地說明了根據(jù)本發(fā)明實施例的參考圖片緩存200。參考圖片緩存200可以包括多個條目210.1-210.n,每個條目都可以存儲解碼后的參考幀的數(shù)據(jù)。參考圖片緩存的容量可以是固定的。參考圖片緩存的容量常常受編碼器操作所依據(jù)的編碼協(xié)議強加的約束限制。例如,H.264編碼協(xié)議允許在任何給定的時間在編碼器和解碼器之間有至多16個有效的參考圖片。在這種情況下,參考圖片緩存的容量將設(shè)置成與編碼協(xié)議的約束匹配,即16中貞。
[0032]根據(jù)本發(fā)明的實施例,參考圖片緩存可以動態(tài)分區(qū),以便存儲短期參考幀和長期參考幀。相應(yīng)地,圖2說明了分區(qū)成短期緩沖區(qū)220和長期緩沖區(qū)230的參考圖片緩存200。如這些名字所隱含的,短期緩沖區(qū)220代表參考圖片緩存200中被分配僅用于存儲短期參考幀的部分。長期緩沖區(qū)230代表參考圖片緩存200中被分配僅用于存儲長期參考幀的部分。短期緩沖區(qū)220和長期緩沖區(qū)230的相對尺寸可以在操作過程中動態(tài)變化。
[0033]圖2僅僅是參考圖片緩存200的功能性表示。在實踐當中,視頻編碼器可以按多種方式實現(xiàn)。視頻編碼器200可以完全以軟件實現(xiàn),在這種情況下,參考圖片緩存200及緩沖區(qū)220和230可以實現(xiàn)為由操作系統(tǒng)從通用計算機的較大存儲器系統(tǒng)進行的存儲器分配。在其它實現(xiàn)中,視頻編碼器可以以硬件實現(xiàn),在這種情況下,參考圖片緩存可以實現(xiàn)為集成電路中的專用存儲器系統(tǒng)。而且,當然,也可以進行混合實現(xiàn),在這種情況下,參考圖片緩存200可以存在于通用存儲器或?qū)S么鎯ζ飨到y(tǒng)。本發(fā)明的原理可應(yīng)用于上述任何一個實施例中。
[0034]圖3說明了基于所觀察到的運動對參考圖片緩存進行分區(qū)的幾種不同方案。在每一種方案中,控制器(未示出)都在預(yù)定的時間段內(nèi)測量照相機運動并且基于所觀察到的運動把參考圖片緩存分區(qū)成短期緩沖區(qū)和長期緩沖區(qū)。通常,當檢測到少量運動時,與短期緩沖區(qū)相比,控制器增加長期緩沖區(qū)的尺寸,而且,當檢測到大量運動時,與長期緩沖區(qū)相比,控制器增加短期緩沖區(qū)的尺寸。
[0035]圖3(a)說明了存在基于估計的運動的四個不同分區(qū)級別的一種實現(xiàn),這對應(yīng)于所觀察到的運動的四個不同的“區(qū)段” Z1-Z4。如所說明的,區(qū)段Zl和Z4分別對應(yīng)于非常低的運動級別和非常高的運動級別。在區(qū)段Zl的情況下,參考圖片緩存可以分區(qū)成使得幾乎所有緩存容量都指定給長期參考幀的存儲。在區(qū)段Z4的情況下,參考圖片緩存可以分區(qū)成使得幾乎所有緩存容量都指定給短期參考幀的存儲。區(qū)段Z2和Z3對應(yīng)于處于中間范圍的不同運動級別。在所說明的實施例中,參考圖片緩存可以分區(qū)成在短期緩沖區(qū)和長期緩沖區(qū)之間更平衡。如所說明的,區(qū)段Z2對應(yīng)于中間范圍中較低的運動級別,而且因此對長期緩沖區(qū)具有稍高的分配。相反,區(qū)段Z3對應(yīng)于中間范圍中高的運動級別,而且因此對短期緩沖區(qū)具有稍高的分配。
[0036]圖3(b)說明了其中分區(qū)以階梯式線性方式進行的一種實現(xiàn)。即,對于具有η幀容量的參考圖片緩存,可以有η個分區(qū)級別,每個級別對應(yīng)于各自的可觀察運動區(qū)段。雖然在圖3(b)中說明的階梯式曲線示為總體上是線性的,但是其它替換也是允許的。例如,階梯式函數(shù)可以遵循多種不同的曲線(未示出),例如對數(shù)的或者其他的,在這種情況下,檢測到的運動區(qū)段將彼此均等地隔開。
[0037]圖3 (C)說明了其中分區(qū)方案僅根據(jù)兩個區(qū)段ZlO和Zll來操作的另一種實現(xiàn)。在該實施例中,區(qū)段ZlO對應(yīng)于其中照相機完全靜止的運動區(qū)段,如當照相機放在桌子上或者其它固定支撐物上時。如所說明的,在這種情況下,長期緩沖區(qū)可以被分配成具有參考圖片緩存容量非常大的部分。區(qū)段Zll可以對應(yīng)于照相機被確定在移動的運動區(qū)段,例如,在人手中、在汽車或火車等中的支撐物中。在這種實施例中,系統(tǒng)不區(qū)分中等運動級別和高運動級別。在圖3(C)的實施例中,區(qū)段ZlO和Zll覆蓋具有不相等的寬度的運動范圍,而圖3(b)的帶具有相等的寬度。
[0038]分區(qū)方案可以基于如在比編碼器的幀速率長的時間段內(nèi)提供給視頻編碼器的運動傳感器數(shù)據(jù)來選擇。例如,在以每秒30幀操作的視頻編碼系統(tǒng)中,視頻編碼器可以收集5秒內(nèi)的運動統(tǒng)計數(shù)據(jù)。而且,這個時間段可以基于視頻編碼器的幀速率而變。如果幀速率,例如由于網(wǎng)絡(luò)內(nèi)帶寬的損失,降到每秒10幀,則視頻編碼器可以在更長的時間段內(nèi),比如說10秒,收集運動統(tǒng)計數(shù)據(jù),以決定如何對參考圖片緩存進行分區(qū)。
[0039]在一種實施例中,把參考圖片緩存分別分區(qū)成長期緩沖區(qū)和短期緩沖區(qū)之后,視頻編碼器可以貫穿參考圖片緩存執(zhí)行對預(yù)測參考的搜索并且根據(jù)搜索結(jié)果編碼輸入幀。
[0040]圖4說明了根據(jù)本發(fā)明實施例的用于分區(qū)參考圖片緩存和編碼輸入視頻數(shù)據(jù)的方法400。只要視頻編碼器參與編碼視頻數(shù)據(jù),該方法就可以持續(xù)地執(zhí)行。該方法可以以得出選擇分區(qū)方案所根據(jù)的持續(xù)運動統(tǒng)計數(shù)據(jù)(在虛線框中示出)并且然后基于該持續(xù)運動把參考圖片緩存分區(qū)成短期緩沖區(qū)和長期緩沖區(qū)(方框410)來開始。其后,該方法可以接收要編碼的新的輸入幀(方框420)。輸入幀還可以具有與其關(guān)聯(lián)的運動數(shù)據(jù),該運動數(shù)據(jù)指示在捕捉到該輸入幀時照相機的運動?;趲倪\動數(shù)據(jù),該方法可選地可以把運動分類為或者“高”或者“低”(方框430)。如果幀的運動被評估為高運動級別,則該方法可以從短期緩沖區(qū)中為該幀搜索預(yù)測參考(方框440)。如果幀的運動被評估為低運動級別,則方法400可以從長期緩沖區(qū)中為該幀搜索預(yù)測參考(方框450)。從選定的緩沖區(qū)中為幀選擇預(yù)測參考之后,方法400可以利用選定的參考幀作為預(yù)測參考使輸入幀被編碼(方框460)。代表輸入幀的編碼的數(shù)據(jù)可以經(jīng)通道發(fā)送到解碼器。
[0041]方法400還可以利用輸入幀的運動補充其持續(xù)運動統(tǒng)計數(shù)據(jù)(方框470)而且可以確定參考圖片緩存是否應(yīng)當重新分區(qū)(方框480)。如果不,則方法400可以返回方框420并且利用另一個輸入幀重復(fù)操作。如果參考圖片緩存應(yīng)當重新分區(qū),則該方法可以返回方框410并且通過重新定義其短期緩沖區(qū)和長期緩沖區(qū)來重新分區(qū)參考圖片緩存。
[0042]在本發(fā)明的另一實施例中,該方法可以在長期緩沖區(qū)中執(zhí)行與在短期緩沖區(qū)中不同類型的搜索。例如,當運動數(shù)據(jù)指示照相機在圖像捕捉過程中靜止的時候,系統(tǒng)可以簡單地基于幀之間差別的計算(沒有運動)從長期緩沖區(qū)選擇參考幀。當運動數(shù)據(jù)指示照相機在圖像捕捉過程中移動的時候,該方法可以執(zhí)行基于運動的搜索。幀差別的計算往往比基于運動的搜索計算密集程度更低。
[0043]圖5說明了在一種使用情況中圖4方法的示例性操作。圖5(a)說明了來自示例性視頻序列的參考幀502-550。在這個例子中,假定幀510、520、530、540和550被指定為長期參考幀(“LTR”)而剩余的參考幀被指定為短期參考幀(“STR”)。雖然每第五個參考幀被指定為LTR,但是這種分配僅僅是幫助說明本發(fā)明操作原理的一種技術(shù)。在實踐當中,LTR指定可以貫穿整個視頻序列不規(guī)律地進行。圖5(a)只說明了參考幀;在實踐當中,視頻序列可以包括附加幀,附加幀可以被預(yù)測編碼并且經(jīng)通道發(fā)送,但是不作為其它幀的預(yù)測參考。為了方便討論,這些非參考幀在圖5(a)中沒有說明。
[0044]圖5(b)表示發(fā)送終端560與接收終端570之間LTR數(shù)據(jù)的通信。當發(fā)送每個LTR幀510-550的編碼的數(shù)據(jù)時,該發(fā)送包括代表參考圖片緩存中要存儲解碼的LTR幀的位置的索引標識符。
[0045]圖5(c)說明了示例性參考圖片緩存在貫穿圖5(a)的編碼視頻序列的各個時刻tl-t5的狀態(tài)。為了方便討論,參考圖片緩存示為具有存儲十(10)幀的容量并且已經(jīng)分區(qū)成三幀的LTR緩沖區(qū)和七幀的STR緩沖區(qū)。時刻tl-t5與LTR幀的發(fā)送一致,如圖5 (b)中所說明的。圖5(c)假定參考圖片緩存在幀502的編碼之前是空的。
[0046]到時刻tl,視頻編碼器560已經(jīng)編碼并發(fā)送了參考幀502-510。幀510是指定給索引位置I的LTR幀。假定沒有發(fā)送錯誤,編碼器560和解碼器570每個都可以在LTR緩沖區(qū)中存儲LTR幀510并且在STR緩沖區(qū)中存儲STR幀502-508。
[0047]到時刻t2,視頻編碼器560已經(jīng)編碼并發(fā)送了參考幀502-520。幀520是指定給索引位置2的LTR幀。假定沒有發(fā)送錯誤,編碼器560和解碼器570每個都可以在LTR緩沖區(qū)中存儲LTR幀510、520并且在STR緩沖區(qū)中存儲STR幀504-508和514-518。由于STR緩沖區(qū)的有限容量,參考幀502可能已被驅(qū)逐,以便給幀518騰出地方。
[0048]到時刻t3,視頻編碼器560已經(jīng)編碼并發(fā)送了參考幀502-530。幀530是指定給索引位置3的LTR幀。假定沒有發(fā)送錯誤,編碼器560和解碼器570每個都可以在LTR緩沖區(qū)中存儲LTR幀510、520、530并且在STR緩沖區(qū)中存儲STR幀514-518和522-528。由于STR緩沖區(qū)的有限容量,參考幀504-512可能已被驅(qū)逐,以便給幀522-528騰出地方。
[0049]到時刻t4,視頻編碼器560已經(jīng)編碼并發(fā)送了參考幀502-540。幀540是指定給索引位置I的LTR幀。假定沒有發(fā)送錯誤,編碼器560和解碼器570每個都可以在LTR緩沖區(qū)中存儲LTR幀520、530和540。幀540可以存儲在LTR緩沖區(qū)中的位置1,驅(qū)逐掉LTR幀510。參考圖片緩存還可以在STR緩沖區(qū)中存儲STR幀524-528和532-538。由于STR緩沖區(qū)的有限容量,參考幀514-522可能已被驅(qū)逐,以便給幀532-538騰出地方。
[0050]到時刻t5,視頻編碼器560已經(jīng)編碼并發(fā)送了參考幀502-550。幀550是指定給索引位置3的LTR幀。假定沒有發(fā)送錯誤,編碼器560和解碼器570每個都可以在LTR緩沖區(qū)中存儲LTR幀520、540、550。幀550可以存儲在LTR緩沖區(qū)中的位置3,驅(qū)逐掉LTR幀530。參考圖片緩存還可以在STR緩沖區(qū)中存儲STR幀534-538和542-548。由于STR緩沖區(qū)的有限容量,參考幀524-532可能已被驅(qū)逐,以便給幀542-548騰出地方。
[0051]圖5中所說明的過程可以繼續(xù),直到視頻序列用盡或者某個其它停止條件中斷了操作。
[0052]編碼器可以利用編碼位流中的明確信令或者經(jīng)隱含信令識別長期緩沖區(qū)和短期緩沖區(qū)的相對尺寸。明確信令可能涉及協(xié)議中預(yù)定字段的使用,在該預(yù)定字段中編碼器規(guī)定其中一種緩沖區(qū)(比如說長期緩沖區(qū))的尺寸。解碼器可以將第二種緩沖區(qū)(短期緩沖區(qū))的尺寸計算為參考圖片緩存的最大尺寸與長期緩沖區(qū)的規(guī)定尺寸之間的差。
[0053]通過LTR索引的分配,編碼器還可以隱含地發(fā)信號通知每個緩沖區(qū)的尺寸。根據(jù)這種方案,解碼器可以自由地使用參考圖片緩存中的任何條目用于STR幀的存儲,直到解碼器接收到LTR幀。其后,解碼器必須保持針對所有在使用中的索引的LTR幀的存儲,直到它們被釋放。當編碼器分配新的LTR索引并且假設(shè)參考圖片緩存被充滿時,解碼器可以驅(qū)逐短期參考幀,以便為新的LTR幀騰出地方。驅(qū)逐可以根據(jù)編碼器已知的協(xié)議進行;一般來說,驅(qū)逐目標指向參考圖片緩存所存儲的最老STR中貞。[0054]圖6說明了從圖5的編碼例子繼續(xù)的重新分區(qū)的例子。圖6(a)說明了圖5(a)示例性視頻序列的另一部分,其中幀602-640跟在圖5(a)的幀550后面。圖6 (b)說明了這個例子中LTR數(shù)據(jù)的通信。LTR幀610-630分別在時刻t6_t8發(fā)送,之后發(fā)送識別索引2的釋放命令。為了討論,假設(shè)釋放命令是緊接著LTR幀630的發(fā)送之后、STR幀632的發(fā)送之前發(fā)送的。另一個LTR幀640可以在時刻tlO發(fā)送。
[0055]圖6(c)說明了參考圖片緩存在時刻t6_t8和tlO的狀態(tài)。在時刻t6,視頻編碼器已經(jīng)編碼并發(fā)送了參考幀602-610。STR幀602-608可以驅(qū)逐之前緩存的STR幀534-542。幀610是指定給新的索引位置,4號,的LTR幀。作為響應(yīng),參考圖片緩存可以驅(qū)逐緩存中存儲的此時最老的STR幀(幀544)并且在它的位置存儲新的LTR幀。參考圖片緩存可以基于動態(tài)映射把緩存條目映射到LTR索引。
[0056]在時刻t7,視頻編碼器已經(jīng)編碼并發(fā)送了參考幀602-620。STR幀612-618可以驅(qū)逐之前緩存的STR幀546-548和602-604。幀620是指定給另一個新的索引位置,5號,的LTR幀。作為響應(yīng),參考圖片緩存可以驅(qū)逐緩存中存儲的此時最老的STR幀(幀606)并且在它的位置存儲新的LTR幀。
[0057]在時刻t8,視頻編碼器已經(jīng)編碼并發(fā)送了參考幀602-630。STR幀622-628可以驅(qū)逐之前緩存的STR幀608和612-616。幀630是指定給另一個新的索引位置,6號,的LTR幀。作為響應(yīng),參考圖片緩存可以驅(qū)逐緩存中存儲的此時最老的STR幀(幀618)并且在它的位置存儲新的LTR幀。圖5(c)說明了在時刻t8參考圖片緩存的條目及其與LTR索引的關(guān)系。
[0058]在這個例子中,編碼器可以在時刻t9向解碼器發(fā)送釋放命令,該命令先于STR幀632的發(fā)送。作為響應(yīng),參考圖片緩存可以不再保護LTR幀520不被驅(qū)逐。
[0059]在時刻tlO,視頻編碼器已經(jīng)編碼并發(fā)送了參考幀602-640。STR幀632可以驅(qū)逐LTR幀520 (以前的位置2),因為幀520是緩存中最老的非保護幀。STR幀634-638可以驅(qū)逐先前緩存的STR幀622-626。幀640是指定給索引位置4的LTR幀,它代替了 LTR幀610。
[0060]上述操作不需要明確信令來擴張參考圖片緩存的長期緩沖區(qū)。參考圖片緩存可以在其檢測到LTR索引號的新的指定時根據(jù)自身擴張長期緩沖區(qū)。參考圖片緩存可以為STR幀分配沒有指定給LTR幀的任何緩存條目。在隱含信令實施例中,例如,未用的緩存條目(諸如圖5 (c)中在時刻t2所示出的條目)可以用于存儲STR巾貞,直到它被LTR幀占用。釋放命令可以用于減小長期緩沖區(qū)的尺寸并且重新分配某些索引用于STR幀的存儲。
[0061]雖然以上例子說明了緊接著指定新的LTR索引號之后發(fā)布的釋放命令,但是在實踐當中這是不太可能發(fā)生的。新的LTR索引號的分配指示LTR緩沖區(qū)的擴張,這在運動統(tǒng)計數(shù)據(jù)檢測到運動減少的情況下將可能發(fā)生。LTR索引號的釋放指示LTR緩沖區(qū)的收縮,這在運動統(tǒng)計數(shù)據(jù)指示運動增加的情況下將有可能發(fā)生。因此,這兩個事件不太可能緊跟在彼此的后面。提供這個例子僅僅是為了指出長期和短期緩沖區(qū)擴張和收縮的效果。
[0062]以上討論在編碼器和解碼器的背景下描述了本發(fā)明實施例的操作。通常,視頻編碼器是作為電子設(shè)備提供的。它們可以體現(xiàn)在集成電路中,諸如專用集成電路、現(xiàn)場可編程門陣列和/或數(shù)字信號處理器。作為替代,它們可以體現(xiàn)在在個人計算機、筆記本計算機或計算機服務(wù)器上執(zhí)行的計算機程序中。類似地,解碼器可以體現(xiàn)在集成電路中,諸如專用集成電路、現(xiàn)場可編程門陣列和/或數(shù)字信號處理器,或者它們可以體現(xiàn)在在個人計算機、筆記本計算機或計算機服務(wù)器上執(zhí)行的計算機程序中。解碼器通常封裝在消費者電子設(shè)備中,諸如游戲系統(tǒng)、DVD播放器、便攜式媒體播放器等,而且解碼器也可以封裝在諸如視頻游戲、基于瀏覽器的媒體播放器等消費者軟件應(yīng)用中。
[0063]本文已經(jīng)具體地說明和/或描述了本發(fā)明的幾種實施例。但是,應(yīng)理解,在不背離本發(fā)明主旨與預(yù)期范圍的情況下,本發(fā)明的修改與變形被以上教導(dǎo)覆蓋并且在所附權(quán)利要求的范圍之內(nèi)。
【權(quán)利要求】
1.一種終端設(shè)備,包括: 視頻編碼器,根據(jù)運動補償預(yù)測技術(shù)編碼輸入的視頻數(shù)據(jù),所述視頻編碼器包括用于存儲在運動補償中使用的參考幀的參考圖片緩存,所述參考圖片緩存被分成用于存儲長期參考幀的第一緩沖區(qū)和用于存儲短期參考幀的第二緩沖區(qū), 其中緩沖區(qū)的相對尺寸基于視頻數(shù)據(jù)中存在的運動量而動態(tài)變化。
2.如權(quán)利要求1所述的終端設(shè)備,進一步包括耦合到所述視頻編碼器的運動傳感器,所述運動傳感器提供代表視頻數(shù)據(jù)中存在的運動的數(shù)據(jù)。
3.如權(quán)利要求1所述的終端設(shè)備,其中所述視頻編碼器包括運動估計器,以從輸入的視頻數(shù)據(jù)的內(nèi)容確定運動。
4.如權(quán)利要求1所述的終端設(shè)備,進一步包括照相機,以將輸入的視頻數(shù)據(jù)提供給所述視頻編碼器。
5.如權(quán)利要求1所述的終端設(shè)備,其中,當視頻數(shù)據(jù)中存在少量運動時,所述第一緩沖區(qū)的尺寸大于所述第二緩沖區(qū)的尺寸。
6.如權(quán)利要求1所述的終端設(shè)備,其中,當視頻數(shù)據(jù)中存在大量運動時,所述第一緩沖區(qū)的尺寸小于所述第二緩沖區(qū)的尺寸。
7.如權(quán)利要求1所述的終端設(shè)備,進一步包括編碼引擎,以在參考圖片緩存中進行搜索以尋找用于新的輸入幀的預(yù)測參考,其中所述編碼引擎基于與新的輸入幀關(guān)聯(lián)的運動量將其搜索限定到所述第一緩沖區(qū)和第二緩沖區(qū)中的一個。
8.如權(quán)利要求1所述的終端設(shè)備,其中,當存在與新的輸入幀關(guān)聯(lián)的少量運動時,所述編碼引擎搜索所述第一緩沖區(qū)。
9.如權(quán)利要求1所述的終端設(shè)`備,其中,當存在與新的輸入幀關(guān)聯(lián)的大量運動時,所述編碼引擎搜索所述第二緩沖區(qū)。
10.一種用于視頻編碼器的存儲器管理方法,包括: 估計預(yù)定時間段內(nèi)輸入視頻序列的運動, 基于所估計的運動將參考圖片緩存分區(qū)成第一緩沖區(qū)和第二緩沖區(qū),第一緩沖區(qū)用于存儲長期參考幀,第二緩沖區(qū)用于存儲短期參考幀。
11.如權(quán)利要求10所述的方法,其中,當視頻數(shù)據(jù)中存在少量運動時,所述第一緩沖區(qū)的尺寸大于所述第二緩沖區(qū)的尺寸。
12.如權(quán)利要求10所述的方法,其中,當視頻數(shù)據(jù)中存在大量運動時,所述第一緩沖區(qū)的尺寸小于所述第二緩沖區(qū)的尺寸。
13.如權(quán)利要求10所述的方法,進一步包括: 參考存儲在參考圖片緩存中的參考幀來預(yù)測編碼輸入幀,其中對參考幀的搜索基于與新的輸入幀關(guān)聯(lián)的運動量被限定到第一緩沖區(qū)和第二緩沖區(qū)中的一個。
14.如權(quán)利要求10所述的方法,其中,當存在與新的輸入幀關(guān)聯(lián)的少量運動時,搜索被限定到所述第一緩沖區(qū)。
15.如權(quán)利要求10所述的方法,其中,當存在與新的輸入幀關(guān)聯(lián)的大量運動時,搜索被限定到所述第二緩沖區(qū)。
16.如權(quán)利要求10所述的方法,其中所估計的運動是從來自與捕捉輸入視頻序列的照相機關(guān)聯(lián)的運動傳感器的數(shù)據(jù)得到的。
17.如權(quán)利要求10所述的方法,其中所估計的運動是從輸入視頻序列的內(nèi)容得到的。
18.如權(quán)利要求10所述的方法,其中所述估計和分區(qū)在輸入視頻序列的持續(xù)時間內(nèi)重復(fù)。
19.如權(quán)利要求10所述的方法,其中所述長期參考幀是通過對應(yīng)的索引號識別的。
20.一種視頻編碼方法,包括: 根據(jù)運動補償預(yù)測技術(shù)編碼輸入幀,所述編碼包括從參考圖片緩存搜索參考圖片作為預(yù)測參考, 其中所述參考圖片緩存被分區(qū)成用于存儲長期參考幀的第一緩沖區(qū)和用于存儲短期參考幀的第二緩沖區(qū),以及 其中所述搜索基于與輸入幀關(guān)聯(lián)的運動量被限定到緩沖區(qū)中的一個。
21.如權(quán)利要求20所述的方法,進一步包括: 在多個輸入幀上估計輸入視頻序列的運動, 將所述參考圖片緩存分區(qū)成第一緩沖區(qū)和第二緩沖區(qū),其中所述第一緩沖區(qū)和第二緩沖區(qū)的相對尺寸基于所估計的運動。
22.如權(quán)利要求20所述的方法,其中,當所估計的運動在少量范圍內(nèi)時,所述第一緩沖區(qū)的尺寸大于所述第二緩沖區(qū)的尺寸。
23.如權(quán)利要求20所述的方法,其中,當所估計的運動在大量范圍內(nèi)時,所述第一緩沖區(qū)的尺寸小于所述第二緩沖區(qū)的尺寸。
24.如權(quán)利要求20所述的方法,其中所估計的運動是從來自與捕捉輸入視頻序列的照相機關(guān)聯(lián)的運動傳感器的數(shù)據(jù)得到的。
25.如權(quán)利要求20所述的方法,其中所估計的運動是從輸入視頻序列的內(nèi)容得到的。
26.如權(quán)利要求20所述的方法,其中所述長期參考幀是通過對應(yīng)的索引號識別的。
【文檔編號】H04N19/573GK103650509SQ201280032374
【公開日】2014年3月19日 申請日期:2012年6月29日 優(yōu)先權(quán)日:2011年7月1日
【發(fā)明者】周小松, 吳錫榮, 林耀中 申請人:蘋果公司