適當(dāng)?shù)那闆r下,當(dāng)執(zhí)行其解碼過程時(shí),解碼器(450)可以將一個(gè)或多個(gè)之前解碼的幀(469)作為用于幀間預(yù)測的參考幀使用。解碼器(450)從解碼幀的臨時(shí)內(nèi)存存儲區(qū)域(460)讀取這種之前解碼的幀(469)。一般來說,解碼器(450)包括多個(gè)執(zhí)行諸如熵解碼、幀內(nèi)預(yù)測、運(yùn)動補(bǔ)償幀間預(yù)測、反量化和反頻率變換之類的解碼任務(wù)的解碼模塊。由解碼器(450)執(zhí)行的確切操作可以根據(jù)壓縮格式的變化而發(fā)生變化。
[0067]例如,解碼器(450)接收經(jīng)編碼的數(shù)據(jù)用于壓縮的幀或幀序列,并產(chǎn)生包括經(jīng)解碼的幀(451)的輸出。在解碼器(450)之中,緩沖器接收經(jīng)編碼的數(shù)據(jù)用于壓縮幀,并在CPBRD值標(biāo)稱指示的合適時(shí)間,將所接收的經(jīng)編碼的數(shù)據(jù)提供給熵解碼器。熵解碼器對熵編碼的量化數(shù)據(jù)以及熵編碼的輔助信息進(jìn)行熵解碼,通常在編碼器中應(yīng)用反熵編碼。運(yùn)動補(bǔ)償器將運(yùn)動信息應(yīng)用于一個(gè)或多個(gè)參考幀來形成被重構(gòu)的幀的塊(例如,宏塊、子宏塊、子宏塊分區(qū)、編碼樹單元、預(yù)測單元、或其組成部分,諸如編碼樹塊、預(yù)測塊或其他塊)的運(yùn)動補(bǔ)償預(yù)測。幀內(nèi)預(yù)測模塊可以根據(jù)相鄰的、之前重構(gòu)的樣本值對鄰近的當(dāng)前塊的樣本值在空間上進(jìn)行預(yù)測。解碼器(450)還對預(yù)測殘余值進(jìn)行重構(gòu)。反量化器對熵解碼的數(shù)據(jù)進(jìn)行反量化。例如,解碼器(450)基于比特流中的語法元素設(shè)置用于圖片的亮度QP和色度QP、視頻的切片和/或其他部分的值,并由此對變換系數(shù)進(jìn)行反量化。反頻率變換器將經(jīng)量化的頻域數(shù)據(jù)轉(zhuǎn)換成空間域信息。對于幀間預(yù)測的幀,解碼器(450)將重構(gòu)的預(yù)測殘余值與運(yùn)動補(bǔ)償預(yù)測相結(jié)合來形成重構(gòu)幀。解碼器(450)可以以類似方式將預(yù)測殘余值與來自幀內(nèi)預(yù)測的空間預(yù)測相結(jié)合。自適應(yīng)去塊濾波器被包括在視頻解碼器(450)中的運(yùn)動補(bǔ)償回路中,以對解碼幀(451)中的跨塊邊界行和/或列的不連續(xù)性進(jìn)行平滑。其他濾波(諸如去鈴聲濾波,自適應(yīng)環(huán)路濾波(“ALF”),或樣本自適應(yīng)補(bǔ)償(“SA0”)濾波,圖中未示出)可替代地或額外地作為環(huán)內(nèi)濾波操作而被應(yīng)用。
[0068]解碼幀臨時(shí)內(nèi)存存儲區(qū)域(460)包括多個(gè)幀緩沖器存儲區(qū)域(461,462,,46η)ο解碼幀存儲區(qū)域(460)是DPB的示例。解碼器(450)使用MMC0/RPS信息(432)來識別幀緩沖器(461,462等),在幀緩沖器中可存儲經(jīng)解碼的幀(451)。解碼器(450)在該幀緩沖器中存儲經(jīng)解碼的幀(451)。
[0069]輸出定序器(480)(例如,使用BP和PT SEI消息中的信息)識別按輸出順序產(chǎn)生的下一幀在解碼幀存儲區(qū)域(460)中何時(shí)可用。當(dāng)按輸出順序產(chǎn)生的下一幀(481)在解碼幀存儲區(qū)域(460)中可用時(shí),該幀由輸出定序器(480)讀取并輸出到輸出目的地(490)(例如,顯示器)。一般情況下,幀由輸出定序器(480)從解碼幀存儲區(qū)域(460)輸出的順序可能與幀被解碼器(450)解碼的順序不同。
[0070]V.示例視頻編碼器
圖5是與其結(jié)合可以實(shí)施一些所描述的實(shí)施例的一般性視頻編碼器(500)的框圖。編碼器(500)接收一系列包括當(dāng)前幀(505)的視頻幀,并產(chǎn)生作為輸出的經(jīng)編碼的數(shù)據(jù)(595)0
[0071]編碼器(500)以塊為基礎(chǔ),并使用取決于實(shí)施方式的塊格式。塊可以在不同階段進(jìn)一步細(xì)分,例如,在頻率變換階段和熵編碼階段。例如,幀可以分成64 X 64塊、32 X 32塊或16 X 16塊,其可以進(jìn)而分為更小的樣本值塊,以便進(jìn)行編碼和解碼。
[0072]編碼器系統(tǒng)(500)對幀間預(yù)測的幀和幀內(nèi)編碼的幀進(jìn)行壓縮。為了便于介紹,圖5示出了通過編碼器(500)用于幀內(nèi)編碼的“幀內(nèi)路徑”和用于幀間編碼的“幀間路徑”。編碼器(500)的多個(gè)組件同時(shí)用于幀內(nèi)編碼和幀間編碼。由那些組件執(zhí)行的確切操作可以根據(jù)正在壓縮的信息類型的不同而不同。
[0073]如果當(dāng)前幀(505)為幀間預(yù)測幀,運(yùn)動估計(jì)器(510)則相對于一個(gè)或多個(gè)參考幀對當(dāng)前幀(505)的塊(例如,宏塊、子宏塊、子宏塊分區(qū)、編碼樹單元、預(yù)測單元、或其組件,諸如編碼樹塊、預(yù)測塊或其他塊)的運(yùn)動進(jìn)行估計(jì)。幀存儲器(520)緩沖一個(gè)或多個(gè)重構(gòu)的之前幀(525)以用作參考幀。在使用多個(gè)參考幀時(shí),多個(gè)參考幀可以來自不同的時(shí)間方向或相同的時(shí)間方向。運(yùn)動估計(jì)器(510 )輸出作為輔助信息的運(yùn)動信息(515 ),諸如差分運(yùn)動向量信息。
[0074]在形成運(yùn)動補(bǔ)償?shù)漠?dāng)前幀(535)時(shí),運(yùn)動補(bǔ)償器(530)將重構(gòu)的運(yùn)動向量應(yīng)用到重構(gòu)的(多個(gè))參考幀(525 )。運(yùn)動補(bǔ)償?shù)漠?dāng)前幀(535 )的塊和原始當(dāng)前幀(505 )的相應(yīng)部分之間的差(如果有的話)為用于所示塊的預(yù)測殘差(545)。在當(dāng)前幀的后期重構(gòu)期間,重構(gòu)的預(yù)測殘余值被添加到運(yùn)動補(bǔ)償?shù)漠?dāng)前幀(535),以獲得更接近原始當(dāng)前幀(505)的重構(gòu)幀。然而在有損壓縮中,一些信息仍從原始當(dāng)前幀(505 )中丟失。幀內(nèi)路徑可以包括幀內(nèi)預(yù)測模塊(圖中未示出),其根據(jù)相鄰的、之前重構(gòu)的樣本值對當(dāng)前塊的樣本值在空間上進(jìn)行預(yù)測。
[0075]頻率變換器(560)將空間域視頻信息轉(zhuǎn)換成頻域(S卩,頻譜變換)數(shù)據(jù)。對于基于塊的視頻幀,頻率變換器(560 )將離散余弦變換、其整數(shù)近似,或其它類型的前向塊變換(例如,離散正弦變換或其整數(shù)近似)應(yīng)用到樣本值數(shù)據(jù)或預(yù)測殘差數(shù)據(jù)的塊,從而產(chǎn)生頻率變換系數(shù)塊。然后,量化器(570)對變換系數(shù)進(jìn)行量化。例如,量化器(570)將死區(qū)標(biāo)量量化應(yīng)用到頻域數(shù)據(jù),量化步長在一幀一幀的基礎(chǔ)上、一切片一切片的基礎(chǔ)上、一塊一塊的基礎(chǔ)上、特定頻率的基礎(chǔ)上或其它基礎(chǔ)上發(fā)生變化。例如,編碼器(500)設(shè)置用于圖片的亮度QP和色度QP、視頻(諸如編碼單元)的切片和/或其他部分的值,并由此量化變換系數(shù)。
[0076]當(dāng)需要將當(dāng)前幀的重構(gòu)版本用于后續(xù)運(yùn)動估計(jì)/補(bǔ)償時(shí),反量化器(576)對量化的頻率系數(shù)數(shù)據(jù)進(jìn)行反量化。反頻率變換器(566)執(zhí)行反頻率變換,從而產(chǎn)生重構(gòu)預(yù)測殘余值或樣本值的塊。對于幀間預(yù)測幀,編碼器(500)將重構(gòu)的預(yù)測殘余值(545)與運(yùn)動補(bǔ)償?shù)念A(yù)測(535)相結(jié)合以形成重構(gòu)幀(505)。(雖然在圖5中未示出,但是,在幀內(nèi)路徑中,編碼器(500)可以將預(yù)測殘余值與來自幀內(nèi)預(yù)測的空間預(yù)測相結(jié)合。)幀存儲器(520)緩沖重構(gòu)的當(dāng)前幀以在隨后的運(yùn)動補(bǔ)償預(yù)測中使用。
[0077]在圖5中,編碼器(500)中的運(yùn)動補(bǔ)償環(huán)路(通常)在幀存儲器(520)之前包括自適應(yīng)環(huán)路內(nèi)去塊濾波器(510)。解碼器(500)將環(huán)路內(nèi)濾波應(yīng)用于重構(gòu)的幀,以自適應(yīng)地平滑幀中的跨邊界的不連續(xù)性。其他濾波(諸如去鈴聲濾波、ALF、或SAO濾波,圖中未示出)可替代地或額外地作為環(huán)內(nèi)濾波操作而被應(yīng)用。
[0078]熵編碼器(580)對量化器(570)的輸出以及運(yùn)動信息(515)和某些輔助信息(例如,QP值)進(jìn)行壓縮。熵編碼器(580 )向緩沖器(590 )提供經(jīng)編碼的數(shù)據(jù)(595 ),緩沖器(690 )將經(jīng)編碼的數(shù)據(jù)復(fù)用為輸出比特流。
[0079]控制器(圖中未示出)接收來自編碼器的各個(gè)模塊的輸入??刂破髟诰幋a期間對中間結(jié)果進(jìn)行估計(jì),例如,設(shè)置QP值并執(zhí)行速率-失真分析??刂破骺梢院推渌K協(xié)作以便在編碼期間設(shè)置并更改編碼參數(shù)??刂破骺梢愿鶕?jù)緩沖區(qū)流模型設(shè)置編碼的圖片的CPBRD值。以這種方式,控制器可以對比特流的比特率的波動應(yīng)用限制,以幫助確保比特流可以在解碼系統(tǒng)的緩沖資源內(nèi)被解碼??刂破鬟€對CPBRD值進(jìn)行設(shè)置,以幫助解碼器確定其解碼過程的操作的時(shí)間和步驟。
[0080]根據(jù)實(shí)施方式和所需的壓縮類型,可對編碼器的模塊進(jìn)行添加、省略、分成多個(gè)模塊、與其它模塊組合、和或使用相似模塊替代。在替代實(shí)施例中,具有不同模塊和/或其他模塊配置的編碼器執(zhí)行一個(gè)或多個(gè)所描述的技術(shù)。編碼器的具體實(shí)施例通常使用編碼器(500)的變化版本或補(bǔ)充版本。編碼器(500)內(nèi)模塊之間所示的關(guān)系指示編碼器中的一般信息流;為簡潔起見,其它關(guān)系并未在圖中示出。
[0081]V1.示例視頻解碼器。
[0082]圖6是與其結(jié)合可以實(shí)施幾個(gè)所描述的實(shí)施例的一般性解碼器(600)的框圖。解碼器(600)接收經(jīng)編碼的數(shù)據(jù)(695)用于壓縮的幀或幀序列,并產(chǎn)生包括重構(gòu)幀(605)的輸出。為了便于介紹,圖6示出了通過解碼器(600 )用于幀內(nèi)解碼的“幀內(nèi)路徑”和用于幀間編碼的“幀間路徑”。解碼器(600)的多個(gè)組件同時(shí)用于幀內(nèi)解碼和幀間解碼。由那些組件執(zhí)行的確切操作可以根據(jù)正在解壓縮的信息類型的不同而發(fā)生變化。
[0083]緩沖器(690)接收經(jīng)編碼的數(shù)據(jù)(695)用于壓縮幀,并將所接收的經(jīng)編碼的數(shù)據(jù)提供給解析器/熵解碼器(680),其中由各個(gè)幀的CPBED值至少部分地指示時(shí)間。解析器/熵解碼器(680)對熵編碼的量化數(shù)據(jù)以及熵編碼的輔助信息進(jìn)行熵解碼,通常在編碼器中應(yīng)用反熵編碼。
[0084]運(yùn)動補(bǔ)償器(630)將運(yùn)動信息(615)應(yīng)用于一個(gè)或多個(gè)參考幀(625)來形成正在被重構(gòu)的幀(605)的塊(例如,宏塊、子宏塊、子宏塊分區(qū)、編碼樹單元、預(yù)測單元、或其組成部分,諸如編碼樹塊、預(yù)測塊或其他塊)的運(yùn)動補(bǔ)償預(yù)測(635)。幀存儲器(620)存儲一個(gè)或多個(gè)之前重構(gòu)的幀(625)以用作參考幀。
[0085]幀內(nèi)路徑可以包括幀內(nèi)預(yù)測模塊(圖中未示出),其根據(jù)相鄰的、之前重構(gòu)的樣本值對當(dāng)前塊的樣本值在空間上進(jìn)行預(yù)測。在幀間路徑中,解碼器(600)對預(yù)測殘余值進(jìn)行重構(gòu)。反量化器(670)對熵解碼的數(shù)據(jù)進(jìn)行反量化。例如,解碼器(600)基于比特流中的語法元素設(shè)置用于圖片的亮度QP和色度QP、視頻(諸如編碼單元)的切片和/或其他部分的值,反量化器(670)由此對變換系數(shù)進(jìn)行反量化。
[0086]反頻率變換器(660)將經(jīng)重構(gòu)的頻域數(shù)據(jù)轉(zhuǎn)換成空間域信息。例如,反頻率變換器(760)將反塊變換應(yīng)用到頻率變換系數(shù),從而產(chǎn)生樣本值數(shù)據(jù)或預(yù)測殘差數(shù)據(jù)。反頻率變換可以是反離散余弦變換、其整數(shù)近似、或其它類型的反頻率變換(例如反離散正弦變換或其整數(shù)近似)。
[0087]對于幀間預(yù)測的幀,編碼器(600)將重構(gòu)的預(yù)測殘余值(645)與運(yùn)動補(bǔ)償?shù)念A(yù)測(635)相結(jié)合以形成重構(gòu)幀(605)。(雖然圖6中未示出,但是在幀內(nèi)路徑中,解碼器(600)可以將預(yù)測殘余值與來自幀內(nèi)預(yù)測的空間預(yù)測相組合。)解碼器(600)中的運(yùn)動補(bǔ)償環(huán)路包括在幀存儲器(620)之前或之后的自適應(yīng)環(huán)路內(nèi)去塊濾波器(610)。解碼器(600)將環(huán)路內(nèi)濾波應(yīng)用于重構(gòu)的幀,以自適應(yīng)地平滑幀中跨邊界的不連續(xù)性。其他濾波(諸如去鈴聲濾波、ALF、或SAO濾波,圖中未示出)可替代地或額外地作為環(huán)內(nèi)濾波操作而被應(yīng)用。
[0088]在圖6中,解碼器(600)還包括后處理濾波器(608)。后處理濾波器(608)可以包括去鈴聲濾波、自適應(yīng)維納濾波、膠片顆粒再現(xiàn)濾波、SAO濾波或其它類型的濾波。
[0089]根據(jù)實(shí)施方式和所需的解壓縮類型,可對解碼器的模塊進(jìn)行添加、省略、分成多個(gè)模塊、與其它模塊組合、和或使用相似模塊替代。在替代實(shí)施例中,具有不同模塊和/或其他模塊配置的解碼器執(zhí)行一個(gè)或多個(gè)所描述的技術(shù)。解碼器的具體實(shí)施例通常使用解碼器(600)的變化版本或補(bǔ)充版本。解碼器(600)內(nèi)模塊之間所示的關(guān)系指示解碼器中的一般信息流;為簡潔起見,其它關(guān)系并未示出。
[0090]VI1.用來簡化拼接的CPBRD值的語法和語義
本節(jié)介紹了各種用于編碼圖片緩沖區(qū)清除延遲(“CPBRD”)值的語法和語義的創(chuàng)新。在許多情況下,該創(chuàng)新簡化了視頻序列的拼接。針對正如根據(jù)HEVC標(biāo)準(zhǔn)和H.264/AVC標(biāo)準(zhǔn)以補(bǔ)充增強(qiáng)信息(“SEI”)消息進(jìn)行信號通知的CPBRD值,提供了各種示例。
[0091]A.引言
在諸如JCTVC-K1003之類的HEVC標(biāo)準(zhǔn)的草案版本中,以及在H.264/AVC標(biāo)準(zhǔn)中,規(guī)定了圖片定時(shí)SEI (“PT SEI”)消息的語法和語義。PT SEI消息包括指示編碼圖片緩沖區(qū)清除延遲(“CPBRD”)的語法元素。在JCTVC-K1003中,語法元素被命名為au_cpb_removal_delay_minusl,其解釋是向PT SEI消息中用信號通知的編碼整數(shù)值加I。
[0092]一般情況下,用于給定圖片(通常稱為“當(dāng)前圖片”)的CPBRD值和初始緩沖延遲(或者,另選地,初始緩沖區(qū)充滿度)一起,指定了要從編碼圖片緩沖區(qū)(“CPB”)中清除的與圖片相關(guān)聯(lián)的編碼數(shù)據(jù)的標(biāo)稱時(shí)間。CPB是假定解碼器緩沖區(qū),解碼器可以將其作為參考使用來設(shè)計(jì)解碼器緩沖區(qū)。同樣,編碼器可以基于假定解碼器緩沖區(qū)生成兼容比特流。在HEVC標(biāo)準(zhǔn)的情景中,與當(dāng)前圖片相關(guān)聯(lián)的數(shù)據(jù)集是“存取單元”。在可稱為HRD或VBV的緩沖區(qū)模型的情景中對CPBRD值進(jìn)行理解。根據(jù)緩沖區(qū)模型的規(guī)范有助于確保比特流可以在解碼系統(tǒng)的緩沖資源內(nèi)被解碼,并有助于解碼器確定用于其圖片整體解碼過程的操作的時(shí)間和步驟。
[0093]當(dāng)編碼視頻數(shù)據(jù)中出現(xiàn)緩沖周期SEI (“BP SEI”)消息時(shí),用于CPBRD值的定時(shí)參考被重置用于后續(xù)消息。在JCTVC-K1003中,CPBRD值始終相對于解碼順序中包含BP SEI消息的在前圖片(如果有)的標(biāo)稱清除時(shí)間進(jìn)行編碼。編碼器可能會隨著比特流中的每個(gè)隨機(jī)存取點(diǎn)(“RAP”)圖片一起發(fā)送BP SEI消息。編碼器還可能和其他不是RAP圖片的圖片一起發(fā)生BP SEI消息。
[0094]視頻拼接工具通常在比特流中RAP圖片的位置處執(zhí)行拼接操作。RAP圖片可以是瞬時(shí)解碼器刷新(“IDR”)圖片。RAP圖片具有與其相關(guān)聯(lián)的BP SEI消息。例如,拼接操作可用于在電視節(jié)目中插入一條廣告或一系列廣告,或者在不同的電視節(jié)目之間切換。
[0095]HEVC RAP圖片的設(shè)計(jì)專門用來使RAP圖片可作為比特流拼接點(diǎn)使用。然而,在JCTVC-K1003中,CPBRD值始終相對于解碼順序的具有BP SEI消息的在前圖片(如果有的話)的標(biāo)稱CPB清除時(shí)間進(jìn)行編碼。由于這個(gè)參考點(diǎn),在比特流之間拼接時(shí)(或者平滑地級聯(lián)單獨(dú)編碼的比特流來形成更長的比特流時(shí)),拼接系統(tǒng)可能很難確定CPBRD值的正確值。
[0096]因此,對于用于JCTVC-K1003中的CPBRD語法和語義的途徑,為了執(zhí)行拼接操作以便從比特流A的圖片發(fā)送切換到比特流B的圖片發(fā)送,拼接工具調(diào)整拼接點(diǎn)處圖片的CPBRD值(即,與拼接點(diǎn)處圖片相關(guān)聯(lián)的PT SEI消息中的CPBRD值)。發(fā)生切換的拼接點(diǎn)是對應(yīng)于比特流B中的RAP圖片的位置。(拼接點(diǎn)處比特流B的RAP圖片本身也具有BP SEI消息,而且該BR SEI消息將會按照解碼順序重置來自于比特流B的后續(xù)圖片的CPBRD值的參考時(shí)間,因此,無需對比特流B中的后續(xù)圖片的CPBRD值進(jìn)行調(diào)整。)為了完成拼接操作,拼接工具通常執(zhí)行以下步驟,雖然并不一定按照這個(gè)順序,而且可能會存在一些替代的變化。
[0097]拼接工具相對于比特流B中具有之前BP SEI消息的圖片的標(biāo)稱清除時(shí)間,查找并讀取比特流B中的RAP圖片的CPBRD值。該CPBRD的值為DRAPB。如果在比特流B中沒有前面的圖片,可以基于本地幀速率(例如,基于DeltaToDivisor,這可以基于比特流A中的最后一個(gè)圖片或者比特流B中的第一個(gè)圖片的pic_struct_present_flag、field_pic_flag、和pic_struct的值進(jìn)行指定)將0_5設(shè)置成一個(gè)值。
[009