專利名稱:視頻編碼中的速率控制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于視頻信號(hào)的編碼/解碼的設(shè)備、系統(tǒng)和方法。
背景技術(shù):
對(duì)數(shù)字視頻產(chǎn)品的需求繼續(xù)增加。數(shù)字視頻的應(yīng)用的一些示例包括視頻通信、安全和監(jiān)視、工業(yè)自動(dòng)化和娛樂(lè)(例如,DV、HDTV、衛(wèi)星TV、機(jī)頂盒、因特網(wǎng)視頻流、數(shù)字相機(jī)、蜂窩電話、視頻游戲機(jī)、高端顯示器和個(gè)人視頻記錄器)。此外,作為手持設(shè)備中的計(jì)算能力更高、電池技術(shù)進(jìn)步和高速無(wú)線連接的結(jié)果,視頻應(yīng)用變得更加具有移動(dòng)性。
·
視頻壓縮是數(shù)字視頻產(chǎn)品的重要的使能技術(shù)。壓縮/解壓縮(CODEC)算法使能數(shù)字視頻的存儲(chǔ)和發(fā)射。CODEC例如可以是諸如MPEG-2、MPEG-4、H. 264/AVC等的工業(yè)標(biāo)準(zhǔn)以及當(dāng)前在開(kāi)發(fā)的標(biāo)準(zhǔn),HEVC。在全部這些標(biāo)準(zhǔn)的核心是分塊運(yùn)動(dòng)補(bǔ)償(預(yù)測(cè))加上預(yù)測(cè)誤差的變換編碼的復(fù)合視頻編碼技術(shù)。分塊運(yùn)動(dòng)補(bǔ)償被使用以通過(guò)從先前畫(huà)面的預(yù)測(cè)去除連續(xù)畫(huà)面幀或者場(chǎng)之間的時(shí)域冗余,而變換編碼被使用以去除每個(gè)畫(huà)面塊內(nèi)的空間冗余。這種基于塊的編碼技術(shù)固有地有損耗,因?yàn)樗鼈兺ㄟ^(guò)去除冗余信息和進(jìn)行在經(jīng)解碼的視頻序列中被最少感知的小的質(zhì)量妥協(xié)兩者來(lái)實(shí)現(xiàn)壓縮。具體地,量化步長(zhǎng)大小(Qs)調(diào)整在經(jīng)壓縮的編碼塊中保留多少空間細(xì)節(jié)。Qs越小,越多的細(xì)節(jié)被保留,并且質(zhì)量越好,但是是在更高的比特率的成本下。隨著Qs增加,越少的細(xì)節(jié)被保留并且比特率降低,但是是在變形增加以及質(zhì)量下降的代價(jià)下。速率控制是任何視頻編碼器的重要部分。速率控制嘗試當(dāng)通過(guò)管理對(duì)每一個(gè)畫(huà)面編碼使用的比特?cái)?shù)量來(lái)解碼時(shí)使經(jīng)編碼的視頻的感知質(zhì)量最大化。也就是說(shuō),速率控制鑒于輸出緩沖器的當(dāng)前充實(shí)度,動(dòng)態(tài)地調(diào)整各個(gè)編碼器參數(shù),例如Qs,以在經(jīng)壓縮的比特流中實(shí)現(xiàn)目標(biāo)比特率。
下面參照附圖描述用于實(shí)現(xiàn)本發(fā)明的原理的示例實(shí)施方式。圖IA到圖IE示出根據(jù)一個(gè)或者更多個(gè)實(shí)施方式的示例;圖2示出根據(jù)一個(gè)或者更多個(gè)實(shí)施方式的數(shù)字系統(tǒng)的框圖;圖3示出根據(jù)一個(gè)或者更多個(gè)實(shí)施方式的視頻編碼器的框圖;圖4A和圖4B示出根據(jù)一個(gè)或者更多個(gè)實(shí)施方式的用于速率控制的方法的流程圖;以及圖5到圖7示出根據(jù)一個(gè)或者更多個(gè)實(shí)施方式的示例性數(shù)字系統(tǒng)。
具體實(shí)施例方式如這里所用的,術(shù)語(yǔ)“畫(huà)面”是指一幀或者一幀的一場(chǎng)。幀是在已知的時(shí)間間隔期間拍攝的完整圖像。當(dāng)視頻序列處于時(shí)逐行格式時(shí),術(shù)語(yǔ)畫(huà)面是指完整幀。當(dāng)視頻序列處于隔行格式時(shí),每一個(gè)幀由奇數(shù)掃描線的場(chǎng)以及跟隨的偶數(shù)線的場(chǎng)組成。這些場(chǎng)的每一個(gè)是畫(huà)面。此外,I畫(huà)面是幀內(nèi)(或畫(huà)面內(nèi))編碼畫(huà)面,P畫(huà)面是從另一個(gè)I畫(huà)面或者P畫(huà)面,例如,先前的I畫(huà)面或者P畫(huà)面,預(yù)測(cè)的幀間(或畫(huà)面間)編碼畫(huà)面,并且B畫(huà)面是使用兩個(gè)畫(huà)面例如,先前I畫(huà)面或者P畫(huà)面和隨后的I畫(huà)面或者P畫(huà)面預(yù)測(cè)的幀間(或畫(huà)面間)編碼畫(huà)面。一般地,畫(huà)面組(GOP)是視頻序列連續(xù)畫(huà)面的組,并且GOP結(jié)構(gòu)規(guī)定GOP中的每一個(gè)畫(huà)面如何被編碼,即,給定畫(huà)面將被編碼為I畫(huà)面、P畫(huà)面還是B畫(huà)面。如果GOP結(jié)構(gòu)是無(wú)層級(jí)的,則每一個(gè)GOP開(kāi)始于I畫(huà)面并且包括全部畫(huà)面直至下一個(gè)I畫(huà)面為止。依賴于具體GOP結(jié)構(gòu),這兩個(gè)I畫(huà)面之間的畫(huà)面可以是一些定義的P畫(huà)面和/或B畫(huà)面的序列。圖IA到圖IC示出這些GOP的示例。如果GOP結(jié)構(gòu)是分層級(jí)的,例如,層級(jí)-B,則GOP被定義為關(guān)鍵畫(huà)面和時(shí)域上在該關(guān)鍵畫(huà)面和先前關(guān)鍵畫(huà)面之間的全部畫(huà)面。關(guān)鍵畫(huà)面可以被幀內(nèi)編碼,即,I畫(huà)面或者是使用先前關(guān)鍵畫(huà)面幀間編碼,即P畫(huà)面。GOP中的其它畫(huà)面被分層級(jí)地預(yù)測(cè)。在帶有層級(jí)-B編碼結(jié)構(gòu)的GOP中,GOP中的其它畫(huà)面是B畫(huà)面。在帶有層級(jí)-P編碼結(jié)構(gòu)的GOP中,GOP中的其它畫(huà)面是P畫(huà)面。圖ID和 圖IE分別示出帶有層級(jí)-P和層級(jí)-B編碼結(jié)構(gòu)的GOP的示例。在視頻編碼中使用的很多速率控制技術(shù),例如,基于H. 263近期5試驗(yàn)?zāi)P?TMN5)的速率控制技術(shù),假定在視頻序列中僅僅出現(xiàn)I畫(huà)面和P畫(huà)面。此外,這些技術(shù)可以以畫(huà)面級(jí)別調(diào)制基本量化步長(zhǎng)(Qs)。也就是說(shuō),針對(duì)P畫(huà)面的基本Qs被設(shè)定為在先前的P畫(huà)面的編碼中使用的平均Qs。在對(duì)畫(huà)面編碼之前,接著基于在對(duì)先前的P畫(huà)面的編碼中使用的比特的數(shù)量是在目標(biāo)比特?cái)?shù)量以上還是以下來(lái)調(diào)制該基本Qs。得到的基本Qs接著被用作開(kāi)始點(diǎn),該開(kāi)始點(diǎn)用于確定在畫(huà)面中的每一個(gè)編碼塊中使用的實(shí)際Qs。此外,在畫(huà)面的編碼期間,基于估計(jì)的畫(huà)面編碼大小多么接近針對(duì)畫(huà)面的目標(biāo)編碼大小,Qs可以周期性地增大或者減小。這種速率控制技術(shù)對(duì)于逐行編碼(畫(huà)面是視頻序列的幀)可以提供良好的結(jié)果,在逐行編碼中畫(huà)面組(GOP)具有I幀隨后是一些數(shù)量的P畫(huà)面的結(jié)構(gòu),并且從畫(huà)面到畫(huà)面的復(fù)雜度沒(méi)有多少變化。然而,這種速率控制技術(shù)對(duì)于包括B畫(huà)面和/或具有層級(jí)編碼結(jié)構(gòu)的GOP結(jié)構(gòu)可能不充分。本發(fā)明的實(shí)施方式提供在畫(huà)面序列的開(kāi)始處而不是在每一個(gè)畫(huà)面的開(kāi)始處確定并且調(diào)制基本Qs的速率控制。此外,基于畫(huà)面序列中的初始畫(huà)面的類型(例如,I畫(huà)面或者P畫(huà)面)不同地確定并且調(diào)制序列基本Qs。序列基本Qs接著被使用以確定針對(duì)該序列中的每一個(gè)畫(huà)面的基本Qs??梢曰诋?huà)面類型和速率控制層級(jí)中的畫(huà)面的級(jí)別從序列基本Qs采用針對(duì)每一個(gè)畫(huà)面的畫(huà)面基本Qs。此外,在一個(gè)或者更多個(gè)實(shí)施方式中,在對(duì)畫(huà)面編碼之前,基于不同判據(jù)計(jì)算出針對(duì)畫(huà)面的最小和最大編碼大小。接著,子畫(huà)面級(jí)別的速率控制,SP,針對(duì)畫(huà)面中的編碼塊的序列的速率控制,基于畫(huà)面基本Qs和最小編碼大小和最大編碼大小,確定針對(duì)畫(huà)面中的編碼塊的序列例如行的基本Qs。更具體地,在編碼塊的序列的開(kāi)始處估計(jì)畫(huà)面的編碼大小,并且如果畫(huà)面的估計(jì)的編碼大小違反最小編碼大小或者最大編碼大小,則這個(gè)子畫(huà)面基本Qs可以適當(dāng)?shù)卦龃蠡蛘邷p小。不要求具體的GOP結(jié)構(gòu),并且GOP可以包括B畫(huà)面和/或可以具有層級(jí)編碼結(jié)構(gòu)。為了減輕當(dāng)視頻序列中出現(xiàn)場(chǎng)景變化時(shí)可能的質(zhì)量退化,一些實(shí)施方式識(shí)別何時(shí)出現(xiàn)場(chǎng)景變化并且采取步驟來(lái)管理檢測(cè)到場(chǎng)景變化之后的初始的無(wú)場(chǎng)景變化的畫(huà)面中的Qs0如這里更詳細(xì)描述的,當(dāng)在先前畫(huà)面中檢測(cè)到場(chǎng)景變化并且在該時(shí)刻被編碼的畫(huà)面中沒(méi)有檢測(cè)到場(chǎng)景變化時(shí),速率控制可以在每一個(gè)編碼塊序列的開(kāi)始處調(diào)整最小編碼大小和最大編碼大小。用于來(lái)自這個(gè)無(wú)場(chǎng)景變化的畫(huà)面的編碼塊序列的平均Qs接著被設(shè)定到包含無(wú)場(chǎng)景變化的畫(huà)面的畫(huà)面序列的序列基本Qs。被速率控制的實(shí)施方式使用的幀序列在此稱為subGOP (畫(huà)面子組)。為了確定subGOP,視頻序列中的幀被視為在速率控制層級(jí)中的不同級(jí)別。速率控制層級(jí)中的級(jí)別定義如下所述。級(jí)別O幀,還稱為關(guān)鍵幀,可以用于其它級(jí)別O幀的預(yù)測(cè)。此外,預(yù)測(cè)的級(jí)別O幀可以僅僅使用其它級(jí)別O幀作為基準(zhǔn)幀。可以從處于級(jí)別η-I和以下(n>0)的幀預(yù)測(cè)處于級(jí)別η (η>0)的畫(huà)面,并且可以用于預(yù)測(cè)處于級(jí)別η+1和以上(η>0)的幀。subGOP是開(kāi)始于級(jí)別O幀即關(guān)鍵幀并且結(jié)束于下一個(gè)級(jí)別O畫(huà)面之前的最后幀的幀的序列。這確保在subGOP中僅僅存在一個(gè)級(jí)別O幀,并且該級(jí)別O幀是subGOP中的第一幀(按編碼順序,不是顯示順序)。圖IA到圖IE示出各個(gè)GOP結(jié)構(gòu)的示例并且標(biāo)識(shí)subGOP相對(duì)于GOP結(jié)構(gòu)。圖IA 到圖IC是無(wú)層級(jí)GOP結(jié)構(gòu)的示例,圖ID和圖IE是層級(jí)GOP結(jié)構(gòu)的示例。更具體地,圖IA是IPPP編碼結(jié)構(gòu)的示例,圖IB是IBP編碼結(jié)構(gòu)的示例,圖IC是IBBP編碼結(jié)構(gòu)的示例,圖ID是層級(jí)P編碼結(jié)構(gòu)的示例,以及圖IE是層級(jí)B編碼結(jié)構(gòu)的示例。在每一個(gè)附圖中,以顯示順序示出畫(huà)面,并且每一個(gè)畫(huà)面上方或者下方的數(shù)字標(biāo)識(shí)畫(huà)面的編碼順序。在速率控制層級(jí)中,存在兩種類型的subGOP,即I-subGOP和P-subGOP。I-subGOP是其中初始畫(huà)面是I畫(huà)面的subGOP,并且P-subGOP是其中初始畫(huà)面是P畫(huà)面的subGOP。如這里更詳細(xì)描述的,在一個(gè)或者更多個(gè)實(shí)施方式中,不同于P-subGOP的序列基本Qs確定針對(duì)I-subGOP的序列基本Qs。圖2示出根據(jù)一個(gè)或者更多個(gè)實(shí)施方式的數(shù)字系統(tǒng)的框圖。該系統(tǒng)包括源數(shù)字系統(tǒng)200,其經(jīng)過(guò)通信信道216向目的地?cái)?shù)字系統(tǒng)202傳送編碼的視頻序列。源數(shù)字系統(tǒng)200包括視頻拍攝部件204、視頻編碼器部件206和傳送器部件208。視頻拍攝部件204被配置為提供要被視頻編碼器部件206編碼的視頻序列。視頻拍攝部件204可以是例如視頻相機(jī)、視頻檔案或者來(lái)自視頻內(nèi)容提供商的視頻饋送。在一些實(shí)施方式中,視頻拍攝部件204可以產(chǎn)生計(jì)算機(jī)圖形作為視頻序列,或者現(xiàn)場(chǎng)視頻和計(jì)算機(jī)產(chǎn)生的視頻的組合。視頻編碼器部件206從視頻拍攝部件204接收視頻序列并且將其編碼以便被傳送器部件208傳送和/或以便存儲(chǔ)在存儲(chǔ)部件(未示出)中。一般地,視頻編碼器部件206從視頻拍攝部件204接收視頻序列作為畫(huà)面的序列,將畫(huà)面劃分為編碼塊,該編碼塊可以是畫(huà)面的一部分或者整個(gè)畫(huà)面,將編碼塊劃分為預(yù)測(cè)塊,并且基于預(yù)測(cè)塊對(duì)編碼塊中的視頻數(shù)據(jù)編碼。在編碼處理期間,可以進(jìn)行這里描述的用于速率控制的方法。以下參照?qǐng)D3A和圖3B更詳細(xì)描述視頻編碼器部件206的實(shí)施方式的功能。傳送器部件208經(jīng)過(guò)通信信道216向目的地?cái)?shù)字系統(tǒng)202傳送經(jīng)編碼的視頻數(shù)據(jù)。通信信道216可以是任意通信介質(zhì),或者適用于傳送經(jīng)編碼的視頻序列的通信介質(zhì)的組合,諸如,例如有線或者無(wú)線通信介質(zhì)、局域網(wǎng)或者廣域網(wǎng)。目的地?cái)?shù)字系統(tǒng)202包括接收器部件210、視頻解碼器部件212和顯示部件214。接收器部件210經(jīng)過(guò)通信信道216從源數(shù)字系統(tǒng)200接收經(jīng)編碼的視頻數(shù)據(jù),并且向視頻解碼器212提供經(jīng)編碼的視頻數(shù)據(jù)以便解碼。一般地,視頻解碼器部件212反轉(zhuǎn)由視頻編碼器部件206進(jìn)行的編碼處理以重構(gòu)視頻序列的編碼塊。可以接著在顯示部件214上顯示經(jīng)重構(gòu)的視頻序列。顯示部件214可以是任意適當(dāng)?shù)娘@示設(shè)備,諸如,例如,等離子體顯示器、液晶顯示器(IXD)、發(fā)光二極管(LED)顯示器等。在一些實(shí)施方式中,源數(shù)字系統(tǒng)200還可以包括接收器部件和視頻解碼器部件和/或目的地?cái)?shù)字系統(tǒng)202可以包括傳送器部件和視頻編碼器部件用于針對(duì)視頻流、視頻廣播和視頻電話的雙向視頻序列傳送。此外,根據(jù)一個(gè)或者更多個(gè)視頻壓縮標(biāo)準(zhǔn),諸如,例如,動(dòng)態(tài)圖像專家組(MPEG)視頻壓縮標(biāo)準(zhǔn),例如,MPEG-l、MPEG-2和MPEG-4 ;ITU-T視頻壓縮標(biāo)準(zhǔn),例如,H. 263、H. 264和HEVC ;電影電視工程師協(xié)會(huì)(SMPTE) 42IM視頻CODEC標(biāo)準(zhǔn)(統(tǒng)稱為“VC-1”);由中國(guó)音頻視頻編碼工作組定義的視頻壓縮標(biāo)準(zhǔn)(統(tǒng)稱為“AVS”);ITU-T/IS0高效率視頻編碼(HEVC)標(biāo)準(zhǔn)等,視頻編碼器部件206和視頻解碼器部件212可以進(jìn)行編碼和解碼。視頻編碼器部件206和視頻解碼器部件212可以以軟件、固件和硬件的任意適當(dāng)組合實(shí)現(xiàn),硬件諸如,例如,一個(gè)或者更多個(gè)數(shù)字信號(hào)處理器(DSP)、微處理器、分立邏輯器件、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)等。圖3示出視頻編碼器例如圖2的視頻編碼器部件206的框圖,被配置以進(jìn)行根據(jù)·一個(gè)或者更多個(gè)實(shí)施方式的速率控制。為了例示,所示出的塊編碼架構(gòu)是H. 264視頻編碼器的架構(gòu)。如圖3所示,用于編碼的輸入畫(huà)面300被劃分為編碼塊,例如,宏塊,并且編碼塊被提供作為運(yùn)動(dòng)估計(jì)部件320的一個(gè)輸入,作為幀內(nèi)預(yù)測(cè)部件324的一個(gè)輸入,以及到組合器302 (例如,加法器或者減法器等)的正輸入。此外,盡管未具體示出,針對(duì)每一個(gè)輸入幀的預(yù)測(cè)模式,即,幀間預(yù)測(cè)或者幀內(nèi)預(yù)測(cè),被選擇并且提供到模式選擇器部件和熵編碼器334。存儲(chǔ)部件318向運(yùn)動(dòng)估計(jì)部件320和運(yùn)動(dòng)補(bǔ)償部件322提供基準(zhǔn)數(shù)據(jù)。基準(zhǔn)數(shù)據(jù)可以包括一個(gè)或者更多個(gè)先前編碼和解碼的畫(huà)面,即,重構(gòu)的畫(huà)面。在一些實(shí)施方式中,存儲(chǔ)部件318是外部存儲(chǔ)器,即,片外存儲(chǔ)器。運(yùn)動(dòng)估計(jì)部件320向運(yùn)動(dòng)補(bǔ)償部件322和熵編碼器334提供運(yùn)動(dòng)估計(jì)信息。更具體地,運(yùn)動(dòng)估計(jì)部件320使用來(lái)自存儲(chǔ)器318的基準(zhǔn)數(shù)據(jù)基于多個(gè)時(shí)域預(yù)測(cè)模式對(duì)編碼塊進(jìn)行測(cè)試以基于編碼成本選擇最佳運(yùn)動(dòng)向量/預(yù)測(cè)模式。為了測(cè)試預(yù)測(cè)模式,運(yùn)動(dòng)估計(jì)部件320可以根據(jù)預(yù)測(cè)模式的塊大小將編碼塊劃分為預(yù)測(cè)塊。運(yùn)動(dòng)估計(jì)部件320向運(yùn)動(dòng)補(bǔ)償部件322提供所選擇的運(yùn)動(dòng)向量(MV)和所選擇的預(yù)測(cè)模式,并且向熵編碼器334提供所選擇的運(yùn)動(dòng)向量(MV)。運(yùn)動(dòng)補(bǔ)償部件322向選擇器開(kāi)關(guān)326提供經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)膸g預(yù)測(cè)信息,該幀間預(yù)測(cè)信息包括經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)膸g預(yù)測(cè)塊和所選擇的時(shí)域預(yù)測(cè)模式。還向模式選擇器部件提供幀間預(yù)測(cè)塊的編碼成本。幀內(nèi)預(yù)測(cè)部件324向選擇器開(kāi)關(guān)326提供幀內(nèi)預(yù)測(cè)信息,該幀內(nèi)預(yù)測(cè)信息包括幀內(nèi)預(yù)測(cè)塊和對(duì)應(yīng)的空間預(yù)測(cè)模式。也就是說(shuō),幀內(nèi)預(yù)測(cè)部件324進(jìn)行空間預(yù)測(cè),其中使用來(lái)自緩沖器328的先前編碼的相鄰的幀塊對(duì)編碼塊進(jìn)行基于多個(gè)空間預(yù)測(cè)模式的測(cè)試,以基于編碼成本選擇用于產(chǎn)生幀內(nèi)預(yù)測(cè)塊的最佳空間預(yù)測(cè)模式。為了測(cè)試空間預(yù)測(cè)模式,幀內(nèi)預(yù)測(cè)部件324可以根據(jù)預(yù)測(cè)模式的塊大小將編碼塊劃分為預(yù)測(cè)塊。盡管未具體示出,但是向選擇器開(kāi)關(guān)326提供的每一個(gè)幀內(nèi)預(yù)測(cè)塊的空間預(yù)測(cè)模式還被提供到變換部件304。此夕卜,盡管未具體示出,但是還向模式選擇器部件提供幀內(nèi)預(yù)測(cè)塊的編碼成本。選擇器開(kāi)關(guān)326基于塊的差度量和由模式選擇器部件提供的幀預(yù)測(cè)模式,在來(lái)自運(yùn)動(dòng)補(bǔ)償部件322的經(jīng)運(yùn)動(dòng)補(bǔ)償?shù)膸g預(yù)測(cè)塊和來(lái)自幀內(nèi)預(yù)測(cè)部件324的幀內(nèi)預(yù)測(cè)塊之間進(jìn)行選擇。選擇器開(kāi)關(guān)326的輸出,即,所預(yù)測(cè)的預(yù)測(cè)塊,被提供到組合器302的負(fù)輸入以及到延遲部件330。延遲部件330的輸出被提供到另一個(gè)組合器(B卩,加法器)338。組合器302從當(dāng)前編碼塊的當(dāng)前預(yù)測(cè)塊減去所預(yù)測(cè)的預(yù)測(cè)塊以向變換部件304提供殘留預(yù)測(cè)塊。得到的殘留預(yù)測(cè)塊是像素差值的集合,該像素差值量化原始預(yù)測(cè)塊的像素值和所預(yù)測(cè)的預(yù)測(cè)塊的像素值之間的差。變換部件304對(duì)殘留預(yù)測(cè)塊進(jìn)行塊變換以將殘留像素值轉(zhuǎn)換為變換系數(shù)并且輸出這些變換系數(shù)。來(lái)自變換部件304的變換系數(shù)被提供到量化部件306,量化部件306輸出經(jīng)量化的變換系數(shù)。更具體地,量化部件306將殘留預(yù)測(cè)塊的變換系數(shù)的值除以從由速率控制部件338提供的量化參數(shù)(Qp)導(dǎo)出的量化標(biāo)尺(Qs)。一般地,量化部件306通過(guò)使用期望數(shù)量的量化步長(zhǎng)表出這些系數(shù),所使用的步長(zhǎng)的數(shù)量(或者相應(yīng)地,Qs的值或者縮放矩陣中的值)確定用于代表該殘留的比特的數(shù)量。
速率控制部件338根據(jù)如此處所述的速率控制的方法計(jì)算針對(duì)每一個(gè)編碼塊的基本Qs,并且將此基本Qs轉(zhuǎn)換到適當(dāng)Qp值以便被量化部件306使用。如以下參照?qǐng)D4A和圖4B更詳細(xì)地描述,速率控制方法的一些實(shí)施方式通過(guò)鑒于多種因素包括視頻緩沖器336的當(dāng)前充實(shí)度,對(duì)目標(biāo)比特率調(diào)整針對(duì)包含編碼塊的subGOP的基本Qs,來(lái)產(chǎn)生針對(duì)該編碼塊的基本Qs。因?yàn)镈CT變換將殘留信號(hào)能量重分布到頻率域中,所以經(jīng)量化的變換系數(shù)被從排序掃描部件308取出它們的光柵掃描排序,并且被按照顯著度排列,諸如,例如從更顯著的系數(shù)開(kāi)始隨后是較不顯著的系數(shù)。經(jīng)過(guò)掃描部件308提供的經(jīng)排序的量化的變換系數(shù)與報(bào)頭信息一起被熵編碼器334編碼,熵編碼器334向視頻緩沖器336提供經(jīng)壓縮的比特流336以便傳送或者存儲(chǔ)。熵編碼器334進(jìn)行的熵編碼可以是任何適當(dāng)?shù)撵鼐幋a技術(shù),諸如,例如,上下文適應(yīng)性可變長(zhǎng)度編碼(CAVLC)、上下文適應(yīng)性二進(jìn)制算術(shù)編碼(CABAC)、行程長(zhǎng)度編碼等。每一個(gè)編碼器內(nèi)有嵌入的解碼器。由于任何兼容解碼器被期待從壓縮比特流重構(gòu)圖像,嵌入的解碼器向視頻編碼器提供相同功能。對(duì)重構(gòu)的輸入的知識(shí)允許視頻編碼器傳送適當(dāng)?shù)臍埩裟芰恳越M成隨后的幀。為了確定重構(gòu)的輸入,即,基準(zhǔn)數(shù)據(jù),經(jīng)過(guò)掃描部件308提供的經(jīng)排序的量化的變換系數(shù)通過(guò)逆掃描部件310而被返回到原始轉(zhuǎn)換后排列,逆掃描部件310的輸出被提供到反量化部件(dequantizer)312,反量化部件312輸出估計(jì)的變換信息,即,來(lái)自變換部件304的變換結(jié)果的估計(jì)或者重構(gòu)版本。估計(jì)的變化信息被提供到逆變換部件314,逆變換部件314輸出代表殘留預(yù)測(cè)塊的重構(gòu)版本的估計(jì)的殘留信息。重構(gòu)的殘留預(yù)測(cè)塊被提供到組合器338。組合器338將經(jīng)延遲的所選擇的預(yù)測(cè)塊加到重構(gòu)的殘留預(yù)測(cè)塊以產(chǎn)生未濾波的重構(gòu)的預(yù)測(cè)塊,其變?yōu)橹貥?gòu)的幀信息的一部分。重構(gòu)的幀信息經(jīng)過(guò)緩沖器328提供到幀內(nèi)預(yù)測(cè)部件324以及到濾波器部件316。濾波器部件316是環(huán)內(nèi)濾波器,對(duì)重構(gòu)的幀信息濾波,并且向存儲(chǔ)部件318提供經(jīng)濾波的重構(gòu)的編碼塊,即,基準(zhǔn)數(shù)據(jù)。圖4A和圖4B示出根據(jù)一個(gè)或者更多個(gè)實(shí)施方式的用于速率控制的方法的流程圖。為了簡(jiǎn)化說(shuō)明,假定子畫(huà)面級(jí)別的速率控制是基于編碼塊的行來(lái)描述這些方法。本領(lǐng)域技術(shù)人員將理解的是實(shí)施方式,其中子畫(huà)面級(jí)別的速率控制是基于小于或者大于畫(huà)面的行的編碼塊序列,并且可以在畫(huà)面內(nèi)在長(zhǎng)度上改變。
在402,速率控制方法的一個(gè)或者更多個(gè)實(shí)施方式在視頻序列中的每一個(gè)subGOP的開(kāi)始處計(jì)算基本Qs。在404,這個(gè)subGOP基本Qs接著被使用以計(jì)算針對(duì)subSOP中的每一個(gè)畫(huà)面的基本Qs。在420,還計(jì)算針對(duì)每一個(gè)畫(huà)面的最小編碼大小和最大編碼大小。在430-438,畫(huà)面基本Qs和最小畫(huà)面大小和最大畫(huà)面大小接著被使用以確定針對(duì)畫(huà)面中的編碼塊的每一個(gè)行的基本Qs。更具體地,在430-434,如果估計(jì)的畫(huà)面的編碼大小違反最小畫(huà)面大小或者最大畫(huà)面大小,則針對(duì)行的行基本Qs可以按照需要增大或者減小。此外,如果在畫(huà)面的編碼期間檢測(cè)到場(chǎng)景變化,則針對(duì)檢測(cè)到場(chǎng)景變化之后的第一無(wú)場(chǎng)景變化畫(huà)面424-428中的每一個(gè)行調(diào)整最小畫(huà)面大小和最大畫(huà)面大小以實(shí)現(xiàn)特別大小限制,在此這可以稱為對(duì)該畫(huà)面的場(chǎng)景變化大小限制。在無(wú)場(chǎng)景變化畫(huà)面被編碼之后,在對(duì)下一畫(huà)面408編碼之前,subGOP基本Qs被設(shè)定到針對(duì)該畫(huà)面的平均行基本Qs。進(jìn)行對(duì)場(chǎng)景變化的特定處理是因?yàn)閳?chǎng)景變化之前和之后的畫(huà)面的復(fù)雜度可能明顯不同,這將負(fù)面影響場(chǎng)景變化之后的經(jīng)編碼的畫(huà)面的質(zhì)量達(dá)一定時(shí)間段,除非采取措施來(lái)減輕復(fù)雜度變化的影響。例如,如果在場(chǎng)景變化之前畫(huà)面復(fù)雜度非常低,但是在場(chǎng)景變化 之后非常高,則針對(duì)新場(chǎng)景中的前幾個(gè)畫(huà)面的Qs值將非常低。這是因?yàn)閳?chǎng)景變化之前的Qs值將是非常低,以滿足由于在前的畫(huà)面的非常低的復(fù)雜度引起的目標(biāo)比特率。因此,與目標(biāo)比特率相比,新場(chǎng)景中的前幾個(gè)畫(huà)面的編碼將消耗很大量的比特。因而,隨后一些數(shù)量的畫(huà)面的Qs值將增大到很大的值來(lái)滿足目標(biāo)比特率。這將導(dǎo)致在新場(chǎng)景的開(kāi)始處幾個(gè)很好質(zhì)量的畫(huà)面,隨后是很多差質(zhì)量的畫(huà)面。在另一個(gè)示例中,如果在場(chǎng)景變化之前畫(huà)面復(fù)雜度非常高,但是在場(chǎng)景變化之后非常低,則針對(duì)新場(chǎng)景中的前幾個(gè)畫(huà)面的Qs值將非常高。這是因?yàn)閳?chǎng)景變化之前的Qs值將是非常高,以滿足由于在前的畫(huà)面的非常高的復(fù)雜度引起的目標(biāo)比特率。因此,與針對(duì)畫(huà)面的目標(biāo)比特?cái)?shù)量相比,新場(chǎng)景中的前幾個(gè)畫(huà)面的編碼將消耗很少量的比特。這將導(dǎo)致新場(chǎng)景的開(kāi)始處的很多畫(huà)面具有差質(zhì)量。進(jìn)行在場(chǎng)景變化之后的第一個(gè)無(wú)場(chǎng)景變化畫(huà)面中以行級(jí)別調(diào)整最小畫(huà)面大小和最大畫(huà)面大小以施加場(chǎng)景變化限制,以產(chǎn)生針對(duì)subGOP基本Qs的新值,其提供場(chǎng)景變化之后的迅速穩(wěn)定。如以下更詳細(xì)描述的,特定調(diào)整是基于針對(duì)產(chǎn)生subGOP基本Qs的新值而憑經(jīng)驗(yàn)導(dǎo)出的最小大小閾值和最大大小閾值。下面更詳細(xì)描述圖4A和圖4B的方法的步驟。在對(duì)方法的步驟的描述中,提供了偽碼形式的示例,描述方法的實(shí)施方式的示例實(shí)現(xiàn)的方面。偽碼僅僅是示例目的,不理解為限制。本領(lǐng)域技術(shù)人員將理解的是可以按照不同方式實(shí)現(xiàn)速率控制方法。該偽碼按照C編程語(yǔ)言的句法表示,并且是涉及的各種變量和常量,在本說(shuō)明書(shū)的末尾提供的表10中定義。因此,偽碼應(yīng)被本領(lǐng)域技術(shù)人員理解而沒(méi)有特定指令的詳細(xì)說(shuō)明和進(jìn)行操作。—些示例偽碼在量化參數(shù)(Qp)域操作,并接著將Qp值轉(zhuǎn)換到Qs值或者基于Qp的增量變化調(diào)整Qs值。這些操作分別在偽碼中作為子例程Qp2Qs和addDelta2Quant中引用。在一些視頻編碼標(biāo)準(zhǔn)中,量化步長(zhǎng)大小與具有整數(shù)值的整數(shù)值量化參數(shù)相關(guān)聯(lián)。用于Qp值到Qs值的轉(zhuǎn)換以及基于增量Qp變化調(diào)整Qs值的技術(shù)是本領(lǐng)域已知的。例如,可以使用查找表和/或通過(guò)計(jì)算推導(dǎo)來(lái)確定針對(duì)Qp值的Qs。如圖4A所示,在視頻序列的開(kāi)始處,計(jì)算針對(duì)視頻序列中的第一畫(huà)面的初始Qs400。理想地,初始Qs應(yīng)接近Qs的穩(wěn)態(tài)值,以減少否則將在視頻序列的開(kāi)始處,即,在冷啟動(dòng)處出現(xiàn)的視頻質(zhì)量退化。也就是說(shuō),如果不被適當(dāng)設(shè)定,則在冷啟動(dòng)處使用的Qs可以要求在進(jìn)入穩(wěn)定狀態(tài)之前在很多畫(huà)面的編碼上的調(diào)整。例如,在初始斜坡時(shí)段(上升時(shí)間),如果在開(kāi)始處的Qs高于達(dá)到穩(wěn)態(tài)時(shí)的Qs,則在斜坡時(shí)段感知/測(cè)量的質(zhì)量將比穩(wěn)定之后更差。并且,如果在開(kāi)始處的Qs低于達(dá)到穩(wěn)態(tài)時(shí)的Qs,則在斜坡時(shí)段比必要更多的比特將被消耗以便對(duì)畫(huà)面編碼,并且斜坡時(shí)段之后的畫(huà)面的視頻質(zhì)量可能退化一段時(shí)間以彌補(bǔ)在斜坡時(shí)段的比特的過(guò)度消耗。因此,基于目標(biāo)比特率計(jì)算針對(duì)視頻序列的初始Qs從而較高的初始Qs用于較低的目標(biāo)比特率并且較低的初始Qs用于較高的目標(biāo)比特率。在一些實(shí)施方式中,基于針對(duì)視頻序列的目標(biāo)比特率、憑經(jīng)驗(yàn)確定的針對(duì)低比特率的默認(rèn)Qs值以及較高比特率的一個(gè)或者更多個(gè)憑經(jīng)驗(yàn)確定的閾值代表來(lái)確定初始Qs。閾值的數(shù)量可以依賴于由給定的視頻編碼器提供的比特率的范圍。如果視頻序列的目標(biāo)比特率低于代表較高比特率的閾值,則初始Qs被設(shè)定為默認(rèn)Qs。否則,依賴于其超過(guò)的最高比特率閾值,默認(rèn)Qs值減小一定量,從而目標(biāo)比特率越高,默認(rèn)Qs值減小的越多。還可以基于視頻編碼器中使用實(shí)現(xiàn)編碼效率的特定編碼技術(shù)確定初始Qs值。表I中的偽碼示出初始Qs seqlnitQs的動(dòng)態(tài)確定的示例。在此示例中,兩個(gè)憑經(jīng)驗(yàn)確定的閾值被使用,一個(gè)代表高比特率另一個(gè)代表中比特率。此外,目標(biāo)比特率對(duì)高和中比特率的比較分析是基于從目標(biāo)比特率導(dǎo)出的宏塊(MB)目標(biāo)比特率targetBitsMB。請(qǐng)注意此偽碼確定初始量化參數(shù)(Qp)接著將該Qp轉(zhuǎn)換為Qs值(Qp2Qs)。默認(rèn)Qp值是憑經(jīng)驗(yàn)確定的并且將用于確定初始Qs除非宏塊目標(biāo)比特率高于多個(gè)閾值中的一個(gè)。
權(quán)利要求
1.一種在對(duì)視頻序列的編碼中的速率控制以產(chǎn)生壓縮比特流的方法,所述方法包括 針對(duì)所述視頻序列中的畫(huà)面序列,計(jì)算序列基本量化步長(zhǎng)大小; 針對(duì)所述畫(huà)面序列中的一畫(huà)面,基于所述序列基本量化步長(zhǎng)大小、所述畫(huà)面的類型和所述畫(huà)面在速率控制層級(jí)中的級(jí)別,計(jì)算畫(huà)面基本量化步長(zhǎng)大?。灰约? 使用所述畫(huà)面基本量化步長(zhǎng)大小,對(duì)所述畫(huà)面編碼以產(chǎn)生所述壓縮比特流的一部分。
2.根據(jù)權(quán)利要求I所述的方法,其中,計(jì)算序列基本量化步長(zhǎng)大小還包括 當(dāng)所述畫(huà)面序列中的初始畫(huà)面是預(yù)測(cè)畫(huà)面時(shí),基于所述視頻序列中的一先前畫(huà)面序列消耗的比特的平均數(shù)量以及在對(duì)所述先前畫(huà)面序列中的初始畫(huà)面的編碼中使用的平均量化步長(zhǎng)大小,計(jì)算所述序列基本量化步長(zhǎng)大小。
3.根據(jù)權(quán)利要求I所述的方法,其中,計(jì)算序列基本量化步長(zhǎng)大小還包括 當(dāng)所述畫(huà)面序列中的初始畫(huà)面是幀內(nèi)編碼的畫(huà)面時(shí),將所述序列基本量化步長(zhǎng)大小計(jì)算為所述視頻序列中的先前編碼畫(huà)面的平均量化步長(zhǎng)大小的加權(quán)平均。
4.根據(jù)權(quán)利要求3所述的方法,其中,對(duì)所述畫(huà)面編碼還包括 計(jì)算在對(duì)所述畫(huà)面編碼中要使用的最小比特?cái)?shù)量和在對(duì)所述畫(huà)面編碼中要使用的最大比特?cái)?shù)量;以及 使用比所述最小比特?cái)?shù)量大并且比所述最大比特?cái)?shù)量小的比特?cái)?shù)量對(duì)所述畫(huà)面編碼。
5.根據(jù)權(quán)利要求4所述的方法,其中,使用比特?cái)?shù)量對(duì)所述畫(huà)面編碼還包括 在對(duì)所述畫(huà)面中的編碼塊序列進(jìn)行編碼之前,估計(jì)對(duì)所述畫(huà)面編碼需要的比特?cái)?shù)量; 當(dāng)估計(jì)的比特?cái)?shù)量大于所述最大比特?cái)?shù)量時(shí),增大所述編碼塊序列的量化步長(zhǎng)大小;以及 當(dāng)估計(jì)的比特?cái)?shù)量小于所述最小比特?cái)?shù)量時(shí),減小所述編碼塊序列的量化步長(zhǎng)大小。
6.根據(jù)權(quán)利要求4所述的方法,其中,對(duì)所述畫(huà)面編碼還包括 當(dāng)在所述畫(huà)面序列中緊接著所述畫(huà)面之前的一畫(huà)面中檢測(cè)到場(chǎng)景變化時(shí),針對(duì)所述畫(huà)面中的編碼塊序列的速率控制,調(diào)整所述最小比特?cái)?shù)量和所述最大比特?cái)?shù)量。
7.根據(jù)權(quán)利要求I所述的方法,還包括 響應(yīng)于所述視頻序列中的場(chǎng)景變化,基于在對(duì)所述場(chǎng)景變化之后無(wú)場(chǎng)景變化的初始畫(huà)面的編碼中使用的量化步長(zhǎng)大小的平均,調(diào)整所述序列基本量化步長(zhǎng)大小。
8.一種用于對(duì)視頻序列編碼以產(chǎn)生壓縮比特流的編碼器,所述編碼器包括 速率控制部件,配置為產(chǎn)生用于量化所述視頻序列中的多個(gè)編碼塊的量化步長(zhǎng)大小;以及 量化器部件,配置為使用所述量化步長(zhǎng)大小量化所述編碼塊; 其中,所述速率控制部件通過(guò)以下操作產(chǎn)生所述量化步長(zhǎng)大小 針對(duì)所述視頻序列中的畫(huà)面序列,計(jì)算序列基本量化步長(zhǎng)大小;以及針對(duì)所述畫(huà)面序列中的一畫(huà)面,基于所述序列基本量化步長(zhǎng)大小、所述畫(huà)面的類型和所述畫(huà)面在速率控制層級(jí)中的級(jí)別,計(jì)算畫(huà)面基本量化步長(zhǎng)大小。
9.一種存儲(chǔ)用于視頻序列的編碼中的速率控制以產(chǎn)生壓縮比特流的指令的機(jī)器可讀介質(zhì),其中在視頻編碼器中的處理器執(zhí)行所述指令使得所述視頻編碼器進(jìn)行以下操作 針對(duì)所述視頻序列中的畫(huà)面序列,計(jì)算序列基本量化步長(zhǎng)大?。? 針對(duì)所述畫(huà)面序列中的一畫(huà)面,基于所述序列基本量化步長(zhǎng)大小、所述畫(huà)面的類型和所述畫(huà)面在速率控制層級(jí)中的級(jí)別,計(jì)算畫(huà)面基本量化步長(zhǎng)大??;以及 使用所述畫(huà)面基本量化步長(zhǎng)大小,對(duì)所述畫(huà)面編碼以產(chǎn)生所述壓縮比特流的一部分。
全文摘要
提供了一種在對(duì)視頻序列的編碼中的速率控制以產(chǎn)生壓縮比特流的方法,所述方法包括針對(duì)所述視頻序列中的畫(huà)面序列,計(jì)算序列基本量化步長(zhǎng)大小(402);針對(duì)所述畫(huà)面序列中的一畫(huà)面,基于所述序列基本量化步長(zhǎng)大小、所述畫(huà)面的類型和所述畫(huà)面在速率控制層級(jí)中的級(jí)別,計(jì)算畫(huà)面基本量化步長(zhǎng)大小(404);以及使用所述畫(huà)面基本量化步長(zhǎng)大小,對(duì)所述畫(huà)面編碼以產(chǎn)生所述壓縮比特流的一部分(406)。
文檔編號(hào)H04N7/26GK102986211SQ201180019076
公開(kāi)日2013年3月20日 申請(qǐng)日期2011年4月15日 優(yōu)先權(quán)日2010年4月15日
發(fā)明者S·納戈瑞, A·S·庫(kù)達(dá)納, M·馬修 申請(qǐng)人:德克薩斯儀器股份有限公司