背景技術:
工程師使用壓縮(也稱為源編解碼或源編碼)來降低數(shù)字視頻的比特率。壓縮通過將信息變換為較低比特率形式來降低存儲和傳輸視頻信息的成本。解壓縮(也稱為解碼)從壓縮形式重構(gòu)原始信息的版本?!熬幗獯a器”是編碼器/解碼器系統(tǒng)。
在過去的25年中,已經(jīng)采用了各種視頻編解碼器標準,包括itu-th.261、h.262(mpeg-2或iso/iec13818-2)、h.263和h.264(mpeg-1avi或iso/iec14496-10)標準、mpeg-1(iso/iec11172-2)和mpeg-4視覺(iso/iec14496-2)標準、以及smpte421m(vc-1)標準。最近,h.265/hevc標準(itu-th.265或iso/iec23008-2)已經(jīng)獲得批準。h.265/hevc標準的擴展(例如,用于可縮放視頻編碼/解碼,用于在采樣位深度或色度采樣率方面具有較高保真度的視頻的編碼/解碼,用于屏幕捕獲內(nèi)容,或者用于多視圖編碼/解碼)目前正在開發(fā)中。視頻編解碼器標準通常定義用于編碼視頻比特流的語法的選項,詳細描述了當在編碼和解碼中使用特定特征時比特流中的參數(shù)。在很多情況下,視頻編解碼器標準還提供了關于解碼器應該執(zhí)行的解碼操作的細節(jié),以在解碼中實現(xiàn)一致的結(jié)果。除了編解碼器標準,各種專有編解碼器格式定義用于編碼視頻比特流的語法的其他選項和相應的解碼操作。
諸如相機或屏幕捕獲模塊等視頻源通常提供被變換成諸如yuv4:4:4色度采樣格式等格式的視頻。yuv格式包括具有表示近似明亮度值的采樣值的亮度(或y)分量以及具有表示色差值的采樣值的多個色度(或u和v)分量。在yuv4:4:4格式中,色度信息用與亮度信息相同的空間分辨率來表示。很多市售的視頻編碼器和解碼器支持yuv4:2:0色度采樣格式或yuv4:2:2色度采樣格式。yuv4:2:0格式是與yuv4:4:4格式相比對色度信息進行子采樣的格式,因此色度分辨率在水平和垂直方向上都是亮度分辨率的一半。作為設計原則,使用yuv4:2:0格式用于編碼/解碼的決定的前提是以下認識:對于諸如自然的相機捕獲的視頻內(nèi)容的編碼/解碼等典型使用案例,觀眾通常不會注意以yuv4:2:0格式編碼/解碼的視頻與以yuv4:4:4格式編碼/解碼的視頻之間的顯著視覺差異。因此,對于每個圖片具有較少采樣的yuv4:2:0格式的壓縮優(yōu)勢非常有吸引力。yuv4:2:2格式是與yuv4:4:4格式相比對色度信息進行子采樣的格式,使得色度分辨率在水平方向上是亮度分辨率的一半。
圖內(nèi)塊拷貝(“bc”)是用于h.265/hevc擴展的正在開發(fā)的預測模式。對于圖內(nèi)bc預測模式,使用同一圖片中的先前重構(gòu)的采樣值來預測圖片的當前塊的采樣值。塊向量(“bv”)值表示從當前塊到包括用于預測的先前重構(gòu)的采樣值的圖片的參考塊的位移。bv值在比特流中用信號通知。在一些設計中,亮度采樣值塊(“亮度塊”)可以是4×4塊、4×8塊、8×4塊、8×8塊、或具有更大尺寸的塊。如果色度采樣格式為4:2:0或4:2:2,則相應的色度采樣值塊(“色度塊”)可以是2×2塊、2×4塊、2×8塊、4×2塊、4×4塊、或具有更大的尺寸的塊。當圖內(nèi)bc預測的最小塊尺寸為4×4時,一些色度塊(例如,2×2、2×4、2×8或4×2塊)可以小于最小塊尺寸。將小的色度塊合并成單個塊,用于具有單個bv值的圖內(nèi)bc預測的目的。通過選擇合并后的色度塊的相應的亮度塊中的最底部最右側(cè)塊的bv值,導出合并后的色度塊的單個bv值。在一些情況下,通過這一規(guī)則所導出的bv值引用在圖片外部的采樣值,這些采樣值不可用于圖內(nèi)bc預測。盡管這樣的情況可能很少,但是它們可能導致編碼或解碼意外地失敗。
技術實現(xiàn)要素:
在發(fā)明內(nèi)部中,詳細說明提出了圖內(nèi)塊拷貝(“bc”)預測方面的創(chuàng)新。具體地,這些創(chuàng)新促進當出于圖內(nèi)bc預測的目的而合并色度塊時對特殊情況的處理。
根據(jù)本文中描述的創(chuàng)新的一個方面,一種媒體編碼器對圖片進行編碼以產(chǎn)生編碼數(shù)據(jù)并且輸出編碼數(shù)據(jù)。編碼包括圖片的相鄰單元(例如,編碼單元的預測單元)集合的圖內(nèi)bc預測。對于相鄰單元集合中的每個單元,媒體編碼器使用與該單元相關聯(lián)的塊向量(“bv”)值來執(zhí)行該單元的主分量塊(例如,亮度塊)的圖內(nèi)bc預測。媒體編碼器至少部分基于與相鄰單元相關聯(lián)的bv值中的一個或多個來導出相鄰單元集合的次分量塊(例如,色度塊)的bv值。然后,媒體編碼器使用所導出的bv值來執(zhí)行次分量塊的圖內(nèi)bc預測。在次分量塊之中的相鄰塊被合并用于圖內(nèi)bc預測的目的。編碼包括對所導出的bv值中的任何值引用在邊界(例如,圖片邊界、切片邊界、圖塊邊界)外部的采樣值的特殊情況處理。例如,特殊情況處理使用對bv的值的約束、所導出的bv值的剪切、或邊界處的采樣值的填充。
根據(jù)本文中描述的創(chuàng)新的另一方面,一種媒體解碼器接收編碼數(shù)據(jù)并且使用編碼數(shù)據(jù)來對圖片解碼。解碼包括圖片的相鄰單元(例如,編碼單元的預測單元)集合的圖內(nèi)bc預測。對于相鄰單元集合中的每個單元,媒體解碼器使用與該單元相關聯(lián)的bv值來執(zhí)行該單元的主分量塊(例如,亮度塊)的圖內(nèi)bc預測。媒體解碼器至少部分基于與相鄰單元相關聯(lián)的bv值中的一個或多個來導出相鄰單元集合的次分量塊(例如,色度塊)的bv值。然后,媒體解碼器使用所導出的bv值來執(zhí)行次分量塊的圖內(nèi)bc預測。在次分量塊之中的相鄰塊被合并用于圖內(nèi)bc預測的目的。解碼包括對所導出的bv值中的任何值引用在bv邊界(例如,圖片邊界、切片邊界、圖塊邊界)外部的采樣值的特殊情況處理。例如,特殊情況處理使用對bv的值的約束、所導出的bv值的剪切、或邊界處的采樣值的填充。
創(chuàng)新可以被實現(xiàn)為方法的部分、被配置為執(zhí)行方法的計算系統(tǒng)的部分、或者存儲用于使得計算系統(tǒng)執(zhí)行方法的計算機可執(zhí)行指令的有形計算機可讀介質(zhì)的部分。各種創(chuàng)新可以組合使用或單獨使用。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在下面的具體實施方式部分中進一步描述的一些概念。本發(fā)明內(nèi)容不旨在標識所要求保護的主題的關鍵特征或基本特征,也不旨在用于限制所要求保護的主題的范圍。通過參考附圖進行的以下詳細描述,本發(fā)明的前述和其他目的、特征和優(yōu)點將變得更加明顯。
附圖說明
圖1是其中可以實現(xiàn)所描述的一些實施例的示例計算系統(tǒng)的圖。
圖2a和2b是其中可以實現(xiàn)所描述的一些實施例的示例網(wǎng)絡環(huán)境的圖。
圖3是其中可以實現(xiàn)所描述的一些實施例的示例編碼器系統(tǒng)的圖。
圖4是可以與其結(jié)合來實現(xiàn)所描述的一些實施例的示例解碼器系統(tǒng)的圖。
圖5a和5b是示出可以與其結(jié)合實現(xiàn)所描述的一些實施例的示例視頻編碼器的圖。
圖6是示出可以與其結(jié)合實現(xiàn)所描述的一些實施例的示例視頻解碼器的圖。
圖7和圖8是示出圖片的亮度塊的圖內(nèi)bc預測的示例的各方面的圖。
圖9是示出圖片的單元的示例z掃描順序的圖。
圖10a是示出圖片的亮度塊的圖內(nèi)bc預測的各方面的圖,圖10b是示出用于使用所導出的bv值的相應的合并的色度塊的圖內(nèi)bc預測的各方面的圖。
圖11a和11b是示出通過約束bv的值的圖內(nèi)bc預測模式下的合并的色度塊的特殊情況處理的各方面的圖。
圖12a至12e是示出圖內(nèi)bc預測模式下其bv的值被約束用于合并的色度塊的特殊情況處理的單元的圖。
圖13是示出通過剪切所導出的bv的值的圖內(nèi)bc預測模式下的合并的色度塊的特殊情況處理的各方面的圖。
圖14是示出通過填充遠離圖片的邊界的采樣值的圖內(nèi)bc預測模式下的合并的色度塊的特殊情況處理的各方面的圖。
圖15和16是示出根據(jù)所描述的一些實施例的使用圖內(nèi)bc預測模式下的合并的色度塊的特殊情況處理的分別用于編碼和解碼的通用技術的流程圖。
具體實施方式
具體實施方式部分介紹圖內(nèi)塊拷貝(“bc”)預測中的創(chuàng)新。具體地,這些創(chuàng)新促進在出于圖內(nèi)bc預測的目的而合并色度塊時的特殊情況的處理。
盡管本文中描述的操作在某些地方被描述為由視頻編碼器或視頻解碼器來執(zhí)行,但是在很多情況下,這些操作可以由另一類型的媒體處理工具(例如,圖像編碼器或圖像解碼器)來執(zhí)行。
參考特定于h.265/hevc標準的擴展的術語來說明本文中描述的一些創(chuàng)新。例如,參考h.265/hevc標準的屏幕內(nèi)容編碼/解碼擴展的草案版本jctvc-r1005——“高效視頻編碼(hevc)屏幕內(nèi)容編碼:草案1”,jctvc-r1005_v3,september2014。本文中描述的創(chuàng)新也可以被實現(xiàn)用于其他標準或格式。
本文中描述的很多創(chuàng)新可以在編碼某些“人工創(chuàng)建的”視頻內(nèi)容(諸如屏幕捕獲內(nèi)容)時改善速率失真性能。通常,屏幕捕獲視頻(也稱為屏幕內(nèi)容視頻)是包含渲染的文本、計算機圖形、動畫生成的內(nèi)容、或者在被渲染到計算機顯示器時捕獲的其他類似類型的內(nèi)容的視頻,而不僅是相機捕獲的視頻內(nèi)容。屏幕捕獲內(nèi)容通常包括重復的結(jié)構(gòu)(例如,圖形、文本字符)。屏幕捕獲內(nèi)容通常以具有高色度采樣分辨率的格式(例如,yuv4:4:4或rgb4:4:4)被編碼,盡管它也可以以具有較低色度采樣分辨率的格式(例如,yuv4:2:0)被編碼。用于屏幕捕獲內(nèi)容的編碼/解碼的常見場景包括遠程桌面會議、在自然視頻上疊加的圖形或其他“混合內(nèi)容”視頻的編碼/解碼。本文中描述的若干創(chuàng)新適用于屏幕內(nèi)容視頻或其他人工創(chuàng)建的視頻的編碼。這些創(chuàng)新也可以用于自然視頻,但是可能不會同樣有效。
本文中描述的很多示例涉及yuv4:2:2格式或yuv4:2:0格式的圖片的亮度采樣值塊(亮度塊)和相應的色度采樣值塊(色度塊)的圖內(nèi)bc預測。通常,如本文中使用的,術語yuv表示具有亮度(luma,或luminance)分量和一個或多個色度(chroma,或chrominance)分量的任何顏色空間。色度采樣值可以被子采樣到較低的色度采樣率(例如,對于yuv4:2:0格式或yuv4:2:2格式),或者色度采樣值可以具有與亮度采樣值相同的分辨率(例如,對于yuv4:4:4格式)?;蛘?,可以根據(jù)另一格式(例如,rgb4:4:4格式、gbr4:4:4格式或bgr4:4:4格式)來組織視頻。通常,主分量塊是主分量的采樣值的塊(諸如用于yuv格式的y或者用于rgb格式的r),次分量塊是次分量的采樣值的塊(諸如用于yuv格式的u或v、或者用于rgb格式的g或b)。
更一般地,本文中描述的示例的各種替代方案是可能的。例如,可以通過改變所描述的方法動作的順序,通過拆分、重復或省略某些方法動作等來改變本文中描述的一些方法。所公開的技術的各個方面可以組合或單獨使用。不同的實施例使用所描述的創(chuàng)新中的一個或多個。本文中描述的一些創(chuàng)新解決了背景技術部分中提到的一個或多個問題。通常,給定的技術/工具不能夠解決所有這樣的問題。
i.示例計算系統(tǒng)
圖1示出了其中可以實現(xiàn)若干所描述的創(chuàng)新的合適的計算系統(tǒng)(100)的通用示例。計算系統(tǒng)(100)并非旨在對使用范圍或功能性提出任何限制,因為創(chuàng)新可以在多種通用或?qū)S糜嬎阆到y(tǒng)中實現(xiàn)。
參考圖1,計算系統(tǒng)(100)包括一個或多個處理單元(110,115)和存儲器(120,125)。處理單元(110,115)執(zhí)行計算機可執(zhí)行指令。處理單元可以是通用中央處理單元(“cpu”)、專用集成電路(“asic”)中的處理器、或者任何其他類型的處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機可執(zhí)行指令以增加處理能力。例如,圖1示出了中央處理單元(110)以及圖形處理單元或協(xié)處理單元(115)。有形存儲器(120,125)可以是易失性存儲器(例如,寄存器、高速緩存、ram)、非易失性存儲器(例如,rom、eeprom、閃速存儲器等)、或者兩者的某種組合,其由處理單元可訪問。存儲器(120,125)以適于由處理單元執(zhí)行的計算機可執(zhí)行指令的形式來存儲實現(xiàn)用于圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理的一個或多個創(chuàng)新的軟件(180)。
計算系統(tǒng)可以具有附加特征。例如,計算系統(tǒng)(100)包括存儲裝置(140)、一個或多個輸入設備(150)、一個或多個輸出設備(160)、和一個或多個通信連接(170)?;ミB機構(gòu)(未示出)(諸如總線、控制器或網(wǎng)絡)互連計算系統(tǒng)(100)的部件。通常,操作系統(tǒng)軟件(未示出)為在計算系統(tǒng)(100)中執(zhí)行的其他軟件提供操作環(huán)境,并且協(xié)調(diào)計算系統(tǒng)(100)的部件的活動。
有形存儲裝置(140)可以是可移除的或不可移除的,并且包括磁盤、磁帶或盒、cd-rom、dvd、或者可以用于存儲信息并且可以在計算系統(tǒng)(100)內(nèi)被訪問的任何其他介質(zhì)。存儲裝置(140)存儲用于實現(xiàn)用于圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理的一個或多個創(chuàng)新的軟件(180)的指令。
輸入設備(150)可以是觸摸輸入設備(諸如鍵盤、鼠標、筆、或軌跡球)、語音輸入設備、掃描設備、或者向計算系統(tǒng)(100)提供輸入的另一設備。對于視頻,輸入設備(150)可以是相機、視頻卡、tv調(diào)諧器卡、屏幕捕獲模塊、或者以模擬或數(shù)字形式接受視頻輸入的類似設備、或者將視頻輸入讀取到計算系統(tǒng)(100)中的cd-rom或cd-rw。輸出設備(160)可以是顯示器、打印機、揚聲器、cd寫入器、或者提供來自計算系統(tǒng)(100)的輸出的另一設備。
通信連接(170)能夠?qū)崿F(xiàn)通過通信介質(zhì)到另一計算實體的通信。通信介質(zhì)傳送各種信息,諸如計算機可執(zhí)行指令、音頻或視頻輸入或輸出、或者調(diào)制數(shù)據(jù)信號中的其他數(shù)據(jù)。調(diào)制數(shù)據(jù)信號是以使得能夠在信號中對信息進行編碼的方式設置或改變其特征中的一個或多個特征的信號。作為示例而非限制,通信介質(zhì)可以使用電、光、視頻(rf)或其他載體。
創(chuàng)新可以在計算機可讀介質(zhì)的一般上下文中來描述。計算機可讀介質(zhì)是可以在計算環(huán)境中被訪問的任何可用的有形介質(zhì)。作為示例而非限制,利用計算系統(tǒng)(100),計算機可讀介質(zhì)包括存儲器(120,125)、存儲裝置(140)、以及上述中的任何的組合。
這些創(chuàng)新可以在目標真實或虛擬處理器上的計算系統(tǒng)中執(zhí)行的計算機可執(zhí)行指令(諸如被包括在程序模塊中的那些)的一般上下文中來描述。通常,程序模塊包括執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、部件、數(shù)據(jù)結(jié)構(gòu)等。如在各種實施例中被描述的,程序模塊的功能可以根據(jù)需要在程序模塊之間進行被組合或拆分。用于程序模塊的計算機可執(zhí)行指令可以在本地或分布式計算系統(tǒng)中被執(zhí)行。
術語“系統(tǒng)”和“設備”在本文中可互換地使用。除非上下文另外明確指示,否則這兩個術語都不意味著對一種類型的計算系統(tǒng)或計算設備的任何限制。通常,計算系統(tǒng)或計算設備可以是本地的或分布式的,并且可以包括專用硬件和/或通用硬件與實現(xiàn)本文中描述的功能的軟件的任何組合。
所公開的方法還可以使用被配置為執(zhí)行任何所公開的方法的專用計算硬件來實現(xiàn)。例如,所公開的方法可以由專門被設計或配置為實現(xiàn)任何所公開的方法的集成電路(例如,asic(諸如asic數(shù)字信號處理器(“dsp”))、圖形處理單元(“gpu”)、或者可編程邏輯器件(“pld”)(諸如現(xiàn)場可編程門陣列(“fpga”)))來實現(xiàn)。
為了呈現(xiàn)的目的,具體實施例部分使用諸如“確定”和“使用”等術語來描述計算機系統(tǒng)中的計算機操作。這些術語是對于由計算機執(zhí)行的操作的高級抽象,而不應當與由人類執(zhí)行的動作混淆。與這些術語相對應的實際計算機操作因?qū)崿F(xiàn)方式而異。
ii.示例網(wǎng)絡環(huán)境
圖2a和2b示出了包括視頻編碼器(220)和視頻解碼器(270)的示例網(wǎng)絡環(huán)境(201,202)。編碼器(220)和解碼器(270)使用適當?shù)耐ㄐ艆f(xié)議通過網(wǎng)絡(250)被連接。網(wǎng)絡(250)可以包括因特網(wǎng)或另一計算機網(wǎng)絡。
在圖2a所示的網(wǎng)絡環(huán)境(201)中,每個實時通信(“rtc”)工具(210)包括編碼器(220)和解碼器(270)二者用于雙向通信。給定的編碼器(220)可以產(chǎn)生符合h.265/hevc標準、smpte421m標準、iso/iec14496-10標準(也稱為h.264或avc)、另一標準或?qū)S懈袷降淖冃突驍U展的輸出,相應的解碼器(270)接受來自編碼器(220)的編碼數(shù)據(jù)。雙向通信可以是視頻會議、視頻電話呼叫、或者其他雙方或多方通信場景的一部分。盡管圖2a中的網(wǎng)絡環(huán)境(201)包括兩個實時通信工具(210),但是網(wǎng)絡環(huán)境(201)可以替代地包括參與多方通信的三個或更多個實時通信工具(210)。
實時通信工具(210)管理由編碼器(220)執(zhí)行的編碼。圖3示出了可以被包括在實時通信工具(210)中的示例編碼器系統(tǒng)(300)。可替代地,實時通信工具(210)使用另一編碼器系統(tǒng)。實時通信工具(210)還管理由解碼器(270)執(zhí)行的解碼。圖4示出了可以被包括在實時通信工具(210)中的示例解碼器系統(tǒng)(400)??商娲?,實時通信工具(210)使用另一解碼器系統(tǒng)。
在圖2b所示的網(wǎng)絡環(huán)境(202)中,編碼工具(212)包括對視頻進行編碼用于傳送到包括解碼器(270)的多個重放工具(214)的編碼器(220)。單向通信可以被提供用于視頻監(jiān)控系統(tǒng)、網(wǎng)絡相機監(jiān)視系統(tǒng)、遠程桌面會議呈現(xiàn)、或者其中對視頻進行編碼并且將其從一個位置發(fā)送到一個或多個其他位置的其他場景。盡管圖2b中的網(wǎng)絡環(huán)境(202)包括兩個重放工具(214),但是網(wǎng)絡環(huán)境(202)可以包括更多或更少的重放工具(214)。通常,重放工具(214)與編碼工具(212)通信以確定用于重放工具(214)接收的視頻流。重放工具(214)接收流,在合適的時間內(nèi)緩存所接收的編碼數(shù)據(jù),并且開始解碼和重放。
圖3示出了可以被包括在編碼工具(212)中的示例編碼器系統(tǒng)(300)。可替代地,編碼工具(212)使用另一編碼器系統(tǒng)。編碼工具(212)還可以包括用于管理與一個或多個重放工具(214)的連接的服務器側(cè)控制器邏輯。圖4示出了可以被包括在重放工具(214)中的示例解碼器系統(tǒng)(400)。可替代地,重放工具(214)使用另一解碼器系統(tǒng)。重放工具(214)還可以包括用于管理與編碼工具(212)的連接的客戶端側(cè)控制器邏輯。
iii.示例編碼器系統(tǒng)
圖3是可以與其一同實現(xiàn)所描述的一些實施例的示例編碼器系統(tǒng)(300)的框圖。編碼器系統(tǒng)(300)可以是能夠以多種編碼模式(諸如用于實時通信的低延遲編碼模式、代碼變換模式、和用于根據(jù)文件或流產(chǎn)生用于重放的媒體的較高延遲編碼模式)中的任何一種操作的通用編碼工具,或者它可以是適用于一種這樣的編碼模式的專用編碼工具。編碼器系統(tǒng)(300)可以適用于編碼特定類型的內(nèi)容(例如,屏幕捕獲內(nèi)容)。編碼器系統(tǒng)(300)可以被實現(xiàn)為操作系統(tǒng)模塊的一部分、應用庫的一部分、獨立應用的一部分,或者使用專用硬件來實現(xiàn)??傊?,編碼器系統(tǒng)(300)從視頻源(310)接收源視頻圖片序列(311),并且產(chǎn)生編碼數(shù)據(jù)作為到(390)信道的輸出。輸出到信道的編碼數(shù)據(jù)可以包括使用圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被編碼的內(nèi)容。
視頻源(310)可以是相機、調(diào)諧器卡、存儲介質(zhì)、屏幕捕獲模塊、或其他數(shù)字視頻源。視頻源(310)以例如每秒30幀的幀速率產(chǎn)生視頻圖片序列。如本文中使用的,術語“圖片”通常是指源、編碼或重構(gòu)的圖像數(shù)據(jù)。對于逐行掃描視頻,圖片是逐行掃描視頻幀。對于隔行掃描視頻,在示例實施例中,隔行掃描視頻幀可能在編碼之前被去隔行。可替代地,兩個互補隔行視頻場被一起編碼作為單個視頻幀,或者被編碼作為兩個單獨編碼的場。除了指示逐行掃描視頻幀或隔行掃描視頻幀之外,術語“圖片”可以指示單個非配對的視頻場、互補視頻場對、表示給定時間的視頻對象的視頻對象平面、或者較大圖像中的感興趣的區(qū)域。視頻對象平面或區(qū)域可以是包括場景的多個對象或區(qū)域的較大圖像的一部分。
到達的源圖片(311)被存儲在包括多個圖片緩沖存儲區(qū)域(321、322、......、32n)的源圖片臨時存儲器存儲區(qū)域(320)中。圖片緩沖區(qū)(321、322等)在源圖片存儲區(qū)域(320)中保存一個源圖片。在一個或多個源圖片(311)已經(jīng)被存儲在圖片緩沖區(qū)(321、322等)中之后,圖片選擇器(330)從源圖片存儲區(qū)域(320)中選擇單個源圖片。由圖片選擇器(330)選擇用于輸入到編碼器(340)的圖片的順序可以不同于視頻源(310)產(chǎn)生圖片的順序,例如,一些圖片的編碼可以按順序被延遲,以便允許一些較晚的圖片被首先編碼并且從而便于時間上的后向預測。在編碼器(340)之前,編碼器系統(tǒng)(300)可以包括在編碼之前執(zhí)行所選擇的圖片(331)的預處理(例如,濾波)的預處理器(未示出)。預處理可以包括到主(例如亮度)和次(例如,朝向紅色和朝向藍色的色度差異)顏色分量的顏色空間變換、和用于編碼的重采樣處理(例如,以降低色度分量的空間分辨率)。在編碼之前,可以將視頻變換到諸如yuv等顏色空間,在該顏色空間中,亮度(y)分量的采樣值表示明亮度或強度值,色度(u,v)分量的采樣值表示色差值。色差值的精確定義(以及到y(tǒng)uv顏色空間/從yuv顏色空間到其他顏色空間(諸如rgb)的變換操作)取決于實現(xiàn)方式。通常,如本文中使用的,術語yuv表示具有亮度(luma或luminance)分量和一個或多個色度(chroma或chrominance)分量的任何顏色空間,包括y'uv、yiq、y'iq和ydbdr、以及各種變型(諸如ycbcr和ycocg)。色度采樣值可以被子采樣到較低的色度采樣率(例如,對于yuv4:2:0格式),或者色度采樣值可以具有與亮度采樣值相同的分辨率(例如,對于yuv4:4:4格式)??商娲?,可以根據(jù)另一格式(例如,rgb4:4:4格式、gbr4:4:4格式或bgr4:4:4格式)來組織視頻。通常,主分量塊是主分量的采樣值的塊(諸如用于yuv格式的y或者用于rgb格式的r),次分量塊是次分量的采樣值的塊(諸如用于yuv格式的u或v、或者用于rgb格式的g或b)。
編碼器(340)對所選擇的圖片(331)進行編碼以產(chǎn)生編碼圖片(341),并且還產(chǎn)生存儲器管理控制操作(“mmco”)信號(342)或參考圖片集合(“rps”)信息。rps是可以在當前圖片或任何后續(xù)圖片的運動補償中用于參考的圖片集合。如果當前圖片不是已經(jīng)被編碼的第一圖片,則在執(zhí)行其編碼處理時,編碼器340可以使用已經(jīng)存儲在解碼圖片臨時存儲器存儲區(qū)域(360)中的一個或多個先前編碼/解碼的圖片(369)。這種存儲的解碼圖片(369)被用作當前源圖片(331)的內(nèi)容的圖片間預測的參考圖片。mmco/rps信息(342)向解碼器指示哪些重構(gòu)圖片可以用作參考圖片并且因此應當被存儲在圖片存儲區(qū)域中。
通常,編碼器(340)包括執(zhí)行編碼任務(諸如劃分為圖塊、圖片內(nèi)預測估計和預測、運動估計和補償、頻率變換、量化和熵編碼)的多個編碼模塊。由編碼器(340)執(zhí)行的具體操作可以根據(jù)壓縮格式而變化。輸出的編碼數(shù)據(jù)的格式可以是h.265/hevc格式、windowsmedia視頻格式、vc-1格式、mpeg-x格式(例如,mpeg-1、mpeg-2或mpeg-4)、h.26x格式(例如,h.261、h.262、h.263、h.264)或另一格式的變型或擴展。
編碼器(340)可以將圖片劃分為相同尺寸或不同尺寸的多個圖塊。例如,編碼器(340)沿著與圖片邊界一起限定圖片內(nèi)的圖塊的水平邊界和垂直邊界的圖塊行和圖塊列來分割圖片,其中每個圖塊是矩形區(qū)域。圖塊通常用于提供用于并行處理的選項。圖片也可以被組織為一個或多個切片,其中切片可以是整個圖片或圖片的部分。切片可以獨立于圖片中的其他切片被解碼,從而提高錯誤恢復能力。為了編碼和解碼的目的,切片或圖塊的內(nèi)容被進一步分為塊或其他采樣值集合。
對于根據(jù)h.265/hevc標準的語法,編碼器將圖片(或切片或圖塊)的內(nèi)容分為編碼樹單元。編碼樹單元(“ctu”)包括被組織為亮度編碼樹塊(“ctb”)的亮度采樣值、和被組織為兩個色度ctb的相應的色度采樣值。ctu(及其ctb)的尺寸由編碼器來選擇。亮度ctb可以包含例如64×64、32×32或16×16亮度采樣值。ctu包括一個或多個編碼單元。編碼單元(“cu”)具有亮度編碼塊(“cb”)和兩個相應的色度cb。例如,具有64×64亮度ctb和兩個64×64色度ctb(yuv4:4:4格式)的ctu可以分為四個cu,每個cu包括32×32亮度cb和兩個32×32色度cb,并且每個cu可能被進一步分為更小的cu?;蛘?,作為另一示例,具有64×64亮度ctb和兩個32×32色度ctb(yuv4:2:0格式)的ctu可以分為四個cu,每個cu包括32×32亮度cb和兩個16×16色度cb,并且每個cu可能進一步分為更小的cu。cu的最小許可尺寸(例如8×8、16×16)可以在比特流中被發(fā)信號通知。
通常,cu具有諸如圖間或圖內(nèi)等預測模式。cu包括用于發(fā)信號通知預測信息(諸如預測模式細節(jié)、位移值等)和/或預測處理的目的的一個或多個預測單元。預測單元(“pu”)具有亮度預測塊(“pb”)和兩個色度pb。根據(jù)h.265/hevc標準,對于圖內(nèi)預測的cu,pu具有與cu相同的尺寸,除非cu具有最小尺寸(例如8×8)。在這種情況下,cu可以分為更小的pu(例如,對于圖片內(nèi)預測,如果最小cu尺寸是8×8,則分為四個4×4的pu、兩個4×8的pu、或者兩個8×4的pu),或者pu可以具有最小cu尺寸,如cu的語法元素所指示的。可替代地,對于在圖內(nèi)bc預測中使用的對稱或非對稱劃分,較大的cu可以分割為多個pu。
cu還具有用于殘差編碼/解碼的目的的一個或多個變換單元,其中變換單元(“tu”)具有亮度變換塊(“tb”)和兩個色度tb。圖內(nèi)預測的cu中的pu可以包含單個tu(尺寸與pu相同)或多個tu。編碼器決定如何將視頻分為ctu、cu、pu、tu等。
在h.265/hevc實現(xiàn)中,切片可以包括單個切片分段(獨立切片分段),或者被分為多個切片分段(獨立切片分段和一個或多個從屬切片分段)。切片分段是被包含在單個網(wǎng)絡抽象層(“nal”)單元中的在圖塊掃描中連續(xù)排序的整數(shù)個ctu。對于獨立切片分段,切片分段報頭包括適用于獨立切片分段的語法元素的值。對于從屬切片分段,截斷(truncated)的切片分段報頭包括適用于從屬切片分段的語法元素的若干值,并且從屬切片分段的其他語法元素的值根據(jù)按照解碼順序在前面的獨立切片分段的值來推斷。
如本文中使用的,取決于上下文,術語“塊”可以指示宏塊、殘差數(shù)據(jù)單元、ctb、cb、pb或tb、或者某個其他采樣值集合。取決于上下文,術語“單元”可以指示宏塊、ctu、cu、pu、tu或某個其他塊集合,或者它可以指示單個塊。亮度塊(例如,亮度ctb、亮度cb或亮度pb)是yuv顏色空間的主分量塊的示例。然而,標簽“亮度塊”有時用于指示甚至另一顏色空間(諸如rgb顏色空間、bgr顏色空間或gbr顏色空間)的主分量塊。類似地,色度塊(例如,色度ctb、色度cb或色度pb)是yuv顏色空間的次分量塊的示例。然而,標簽“色度塊”有時用于指示甚至另一顏色空間(諸如rgb顏色空間、bgr顏色空間或gbr顏色空間)的次分量塊。
返回圖3,編碼器根據(jù)來自圖片(331)中的其他先前重構(gòu)的采樣值的預測,來表示源圖片(331)的圖內(nèi)編碼塊。對于圖內(nèi)bc預測,圖片內(nèi)估計器估計從當前塊到圖片中的其他先前重構(gòu)的采樣值中的位置的位移。參考塊是圖片中用于生成當前塊的預測值的采樣值塊。參考塊可以用塊向量(“bv”)值(在bv估計中確定)來指示。取決于實現(xiàn),編碼器可以使用輸入采樣值或重構(gòu)采樣值(同一圖片中的先前編碼的采樣值)來執(zhí)行塊的bv估計。當圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被啟用時,在一些實現(xiàn)中,圖片內(nèi)估計器可以確定符合對參考區(qū)域的位置的約束的圖內(nèi)bc預測中的bv值,如下所述。
對于塊的圖內(nèi)空間預測,圖片內(nèi)估計器估計相鄰的重構(gòu)采樣值到該塊中的推測。
圖片內(nèi)估計器可以輸出被熵編碼的預測信息(諸如,用于圖內(nèi)bc預測的bv值或者用于圖內(nèi)空間預測的預測模式(方向))。圖片內(nèi)預測預測器應用預測信息來確定圖內(nèi)預測值。當圖內(nèi)bc預測模式下的合并的色度塊的特殊情況處理被啟用時,在一些實現(xiàn)中,圖片內(nèi)預測預測器可以剪切某些bv值,執(zhí)行采樣值填充,或者根據(jù)優(yōu)先級順序從候選bv值中進行選擇,如下所述。
對于調(diào)色板(palette)編碼模式,編碼器(340)使用調(diào)色板來表示cu或其他單元的至少一些采樣值。調(diào)色板表示在單元中使用的顏色。例如,調(diào)色板將索引值0、1、2、......、p映射到相應的顏色。在單元的編碼期間,適當?shù)乃饕堤鎿Q單元中的位置處的采樣值。單元中的稀有值可以使用轉(zhuǎn)義代碼(escapecode)值和文字值來編碼,而不是使用調(diào)色板中的索引值來編碼。調(diào)色板可以隨著單元的不同而變化,并且指定調(diào)色板的信息可以在比特流中被發(fā)信號通知。
編碼器(340)根據(jù)來自參考圖片的預測來表示源圖片(331)的圖片間編碼預測塊。運動估計器估計塊相對于一個或多個參考圖片(369)的運動。當使用多個參考圖片時,多個參考圖片可以來自不同的時間方向或相同的時間方向。運動補償預測參考區(qū)域是用于生成當前圖片的采樣值塊的運動補償預測值的參考圖片中的采樣值區(qū)域。運動估計器輸出諸如運動向量(“mv”)信息等被熵編碼的運動信息。運動補償器將mv應用于參考圖片(369)以確定圖片間預測的運動補償預測值。
編碼器可以確定塊的預測值(圖內(nèi)或圖間)與相應的原始值之間的差異(如果有的話)。這些預測殘差值進一步使用頻率變換(如果不跳過頻率變換的話)、量化和熵編碼被編碼。例如,編碼器(340)設置圖片、圖塊、切片和/或視頻的其他部分的量化參數(shù)(“qp”)的值,并且相應地量化變換系數(shù)。編碼器(340)的熵編碼器壓縮量化后的變換系數(shù)值以及某些輔助信息(例如,mv信息、bv信息、qp值、模式?jīng)Q策、參數(shù)選擇)。典型的熵編碼技術包括指數(shù)-golomb編碼、golomb-rice編碼、算術編碼、差分編碼、霍夫曼編碼、游程長度編碼、可變長度到可變長度(“v2v”)編碼、可變長度到固定長度(“v2f”)編碼、lempel-ziv(“l(fā)z”)編碼、字典編碼、概率間隔分割熵編碼(“pipe”)、以及上述的組合。熵編碼器可以對于不同種類的信息使用不同的編碼技術,可以組合應用多種技術(例如,通過應用golomb-rice編碼,然后進行算術編碼),并且可以在特定編碼技術中從多個編碼表中進行選擇。在一些實現(xiàn)中,可以跳過頻率變換。在這種情況下,預測殘差值可以被量化和熵編碼。當使用調(diào)色板編碼模式時,熵編碼器可以對調(diào)色板數(shù)據(jù)進行編碼。
自適應去塊(deblocking)濾波器被包括在編碼器(340)中的運動補償環(huán)路(即,“環(huán)路內(nèi)”濾波)內(nèi),以平滑解碼圖片中跨越塊邊界行和/或列的不連續(xù)性。替代地或另外地,可以應用其他濾波(諸如去振鈴(deringing)濾波、自適應環(huán)路濾波(“alf”)、或采樣自適應偏移(“sao”)濾波;未示出)作為環(huán)路內(nèi)濾波操作。
由編碼器(340)產(chǎn)生的編碼數(shù)據(jù)包括各種比特流語法層的語法元素。對于符合h.265/hevc標準的語法,例如,圖片參數(shù)集合(“pps”)是包含可以與圖片相關聯(lián)的語法元素的語法結(jié)構(gòu)。pps可以用于單個圖片,或者pps可以按順序重復用于多個圖片。pps通常與圖片的編碼數(shù)據(jù)(例如,用于pps的一個nal單元、以及用于圖片的編碼數(shù)據(jù)的一個或多個其他nal單元)分開地被發(fā)信號通知。在圖片的編碼數(shù)據(jù)中,語法元素指示要使用哪個pps用于圖片。類似地,對于符合h.265/hevc標準的語法,序列參數(shù)集合(“sps”)是包含可以與圖片序列相關聯(lián)的語法元素的語法結(jié)構(gòu)。比特流可以包括單個sps或多個sps。sps通常與序列的其他數(shù)據(jù)分開地被發(fā)信號通知,并且其他數(shù)據(jù)中的語法元素指示要使用哪個sps。
編碼圖片(341)和mmco/rps信息(342)(或者相當于mmco/rps信息(342)的信息,因為圖片的依賴性和排序結(jié)構(gòu)在編碼器(340)處已知)由解碼過程仿真器(350)來處理。解碼過程仿真器(350)實現(xiàn)解碼器的一些功能,例如,用以重構(gòu)參考圖片的解碼任務。以與mmco/rps信息(342)一致的方式,解碼過程仿真器(350)確定是否需要重構(gòu)和存儲給定的編碼圖片(341)用于在要編碼的后續(xù)圖片的圖片間預測中作為參考圖片。如果編碼圖片(341)需要被存儲,則解碼過程仿真器(350)對由接收編碼圖片(341)的解碼器進行的解碼過程進行建模,并且產(chǎn)生相應的解碼圖片(351)。這樣,當編碼器340使用已經(jīng)存儲在解碼圖片存儲區(qū)域(360)中的解碼圖片(369)時,解碼過程仿真器(350)也使用來自存儲區(qū)域(360)的解碼圖片(369)作為解碼過程的一部分。
解碼圖片臨時存儲器存儲區(qū)域(360)包括多個圖片緩沖存儲區(qū)域(361、362、......、36n)。以與mmco/rps信息(342)一致的方式,解碼過程仿真器(350)管理存儲區(qū)域(360)的內(nèi)容,以便標識具有編碼器(340)不再需要用作參考圖片的圖片的任何圖片緩沖區(qū)(361、362等)。在對解碼過程進行建模之后,解碼過程仿真器(350)將新解碼的圖片(351)存儲在已經(jīng)以這種方式標識的圖片緩沖區(qū)(361、362等)中。
編碼圖片(341)和mmco/rps信息(342)被緩存在臨時編碼數(shù)據(jù)區(qū)域(370)中。在編碼數(shù)據(jù)區(qū)域(370)中被聚合的編碼數(shù)據(jù)包含一個或多個圖片的編碼數(shù)據(jù)作為基本編碼視頻比特流的語法的一部分。在編碼數(shù)據(jù)區(qū)域(370)中被聚合的編碼數(shù)據(jù)還可以包括與編碼視頻數(shù)據(jù)相關的媒體元數(shù)據(jù)(例如,作為一個或多個補充增強信息(“sei”)消息或視頻可用性信息(“vui”)消息中的一個或多個參數(shù))。
來自臨時編碼數(shù)據(jù)區(qū)域(370)的聚合數(shù)據(jù)(371)由信道編碼器(380)來處理。信道編碼器(380)可以封包化(packetize)和/或復用聚合數(shù)據(jù)用于作為媒體流來傳輸或存儲(例如,根據(jù)媒體節(jié)目流或傳輸流格式(諸如itu-th.222.0|iso/iec13818-1)、或者互聯(lián)網(wǎng)實時傳輸協(xié)議格式(諸如ietfrfc3550)),在這種情況下,信道編碼器(380)可以添加語法元素作為媒體傳輸流的語法的一部分。或者,信道編碼器(380)可以組織聚合數(shù)據(jù)用于作為文件來存儲(例如,根據(jù)媒體容器格式,諸如iso/iec14496-12),在這種情況下,信道編碼器(380)可以添加語法元素作為媒體存儲文件的語法的一部分?;蛘?,更一般地,信道編碼器(380)可以實現(xiàn)一個或多個媒體系統(tǒng)復用協(xié)議或傳輸協(xié)議,在這種情況下,信道編碼器(380)可以添加語法元素作為協(xié)議的語法的一部分。信道編碼器(380)向信道(390)提供輸出,信道(390)表示存儲、通信連接、或用于輸出的另一信道。信道編碼器(380)或信道(390)還可以包括例如用于前向糾錯(“fec”)編碼和模擬信號調(diào)制的其他元件(未示出)。
iv.示例解碼器系統(tǒng)
圖4是可以與其結(jié)合來實現(xiàn)所描述的一些實施例的示例解碼器系統(tǒng)(400)的框圖。解碼器系統(tǒng)(400)可以是能夠以多種解碼模式(諸如用于實時通信的低延遲解碼模式和用于來自文件或流的媒體重放的較高延遲解碼模式)中的任何一種來操作的通用解碼工具,或者它可以是適用于一種這樣的解碼模式的專用解碼工具。解碼器系統(tǒng)(400)可以被實現(xiàn)為操作系統(tǒng)模塊的一部分、應用庫的一部分、獨立應用的一部分,或者使用專用硬件來實現(xiàn)??傊?,解碼器系統(tǒng)(400)從信道(410)接收編碼數(shù)據(jù),并且產(chǎn)生重構(gòu)圖片作為用于輸出目的地(490)的輸出。接收到的編碼數(shù)據(jù)可以包括使用圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被編碼的內(nèi)容。
解碼器系統(tǒng)(400)包括信道(410),信道(410)可以表示存儲裝置、通信連接或用于作為輸入的編碼數(shù)據(jù)的另一信道。信道(410)產(chǎn)生已經(jīng)被信道編碼的編碼數(shù)據(jù)。信道解碼器(420)可以處理編碼數(shù)據(jù)。例如,信道解碼器(420)對已經(jīng)被聚合用于作為媒體流來傳輸或存儲的數(shù)據(jù)進行去封包化和/或解復用(例如,根據(jù)媒體節(jié)目流或傳輸流格式(諸如itu-th.222.0|iso/iec13818-1)、或者互聯(lián)網(wǎng)實時傳輸協(xié)議格式(諸如ietfrfc3550)),在這種情況下,信道解碼器(420)可以解析作為媒體傳輸流的語法的一部分被添加的語法元素。或者,信道解碼器(420)分離已經(jīng)被聚合用于作為文件來存儲的編碼視頻數(shù)據(jù)(例如,根據(jù)媒體容器格式,諸如iso/iec14496-12),在這種情況下,信道解碼器(420)可以解析作為媒體存儲文件的語法的一部分被添加的語法元素?;蛘?,更一般地,信道解碼器(420)可以實現(xiàn)一個或多個媒體系統(tǒng)解復用協(xié)議或傳輸協(xié)議,在這種情況下,信道解碼器(420)可以解析作為協(xié)議的語法的一部分被添加的語法元素。信道(410)或信道解碼器(420)還可以包括例如用于fec解碼和模擬信號解調(diào)的其他元件(未示出)。
從信道解碼器(420)輸出的編碼數(shù)據(jù)(421)被存儲在臨時編碼數(shù)據(jù)區(qū)域(430)中,直到足夠量的這種數(shù)據(jù)已經(jīng)被接收到。編碼數(shù)據(jù)(421)包括編碼圖片(431)和mmco/rps信息(432)。編碼數(shù)據(jù)區(qū)域(430)中的編碼數(shù)據(jù)(421)包含一個或多個圖片的編碼數(shù)據(jù)作為基本編碼視頻比特流的語法的一部分。編碼數(shù)據(jù)區(qū)域(430)中的編碼數(shù)據(jù)(421)還可以包括與編碼視頻數(shù)據(jù)相關的媒體元數(shù)據(jù)(例如,作為一個或多個sei消息或vui消息中的一個或多個參數(shù))。
通常,編碼數(shù)據(jù)區(qū)域(430)臨時存儲編碼數(shù)據(jù)(421),直到這樣的編碼數(shù)據(jù)(421)被解碼器(450)使用。此時,編碼圖片(431)的編碼數(shù)據(jù)、和mmco/rps信息(432)從編碼數(shù)據(jù)區(qū)域(430)被傳送到解碼器(450)。隨著解碼的繼續(xù),新的編碼數(shù)據(jù)被添加到編碼數(shù)據(jù)區(qū)域(430),并且編碼數(shù)據(jù)區(qū)域(430)中的剩余的最舊的編碼數(shù)據(jù)被傳送到解碼器(450)。
解碼器(450)對編碼圖片(431)進行解碼以產(chǎn)生相應的解碼圖片(451)。圖片可以分為相同尺寸或不同尺寸的多個圖塊。圖片也可以被組織為一個或多個切片。切片或圖塊的內(nèi)容可以進一步被分為塊或其他采樣值集合。
適當?shù)?,當?zhí)行其解碼過程時,解碼器(450)可以使用一個或多個先前解碼的圖片(469)作為圖片間預測的參考圖片。解碼器(450)從解碼圖片臨時存儲器存儲區(qū)域(460)中讀取先前解碼的圖片(469)。通常,解碼器(450)包括執(zhí)行解碼任務(諸如熵解碼、圖片內(nèi)預測、運動補償圖片間預測、逆量化、逆頻率變換(如果不跳過)、和圖塊的合并)的多個解碼模塊。由解碼器(450)執(zhí)行的具體操作可以根據(jù)壓縮格式而變化。
例如,解碼器(450)接收壓縮圖片或圖片序列的編碼數(shù)據(jù),并且產(chǎn)生包括解碼圖片(451)的輸出。在解碼器(450)中,緩沖區(qū)接收壓縮圖片的編碼數(shù)據(jù),并且在適當?shù)臅r間使接收的編碼數(shù)據(jù)對于熵解碼器可用。熵解碼器對熵編碼的量化數(shù)據(jù)以及熵編碼的輔助信息進行熵解碼,通常應用在編碼器中執(zhí)行的熵編碼的逆過程。當使用調(diào)色板解碼模式時,熵解碼器可以對調(diào)色板數(shù)據(jù)進行解碼。
運動補償器將運動信息應用于一個或多個參考圖片,以形成正在被重構(gòu)的圖片的任何圖間編碼塊的運動補償預測值。圖片內(nèi)預測模塊可以根據(jù)相鄰的先前重構(gòu)的采樣值來在空間上預測當前塊的采樣值?;蛘撸瑢τ趫D內(nèi)bc預測,圖片內(nèi)預測模塊可以使用圖片中的參考塊的先前重構(gòu)的采樣值(用bv值來表示)來預測當前塊的采樣值。當圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被啟用時,在一些實現(xiàn)中,bv值與對參考區(qū)域的位置的約束一致,如下所述。在其他實現(xiàn)中,當圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被啟用時,圖片內(nèi)預測模塊可以剪切某些bv值、執(zhí)行采樣值填充、或者根據(jù)優(yōu)先級順序來在候選bv值中進行選擇,如下所述。
解碼器(450)還重構(gòu)預測殘差值。逆量化器對熵解碼數(shù)據(jù)進行逆量化。例如,解碼器(450)基于比特流中的語法元素來設置圖片、圖塊、切片和/或視頻的其他部分的qp的值,并且相應地對變換系數(shù)進行逆量化。逆頻率變換器將量化后的頻域數(shù)據(jù)變換成空間域數(shù)據(jù)。在一些實現(xiàn)中,可以跳過頻率變換,在這種情況下,也跳過逆頻率變換。如果是,則可以對預測殘差值進行熵解碼和逆量化。對于圖片間預測塊,解碼器(450)將重構(gòu)的預測殘差值與運動補償預測值組合。解碼器(450)可以類似地將預測殘差值與來自圖片內(nèi)預測的預測值組合。
對于調(diào)色板解碼模式,解碼器(450)使用表示cu或其他單元的至少一些采樣值的調(diào)色板。調(diào)色板將索引值映射到相應的顏色。在解碼期間,對于單元中的位置,來自調(diào)色板的索引值被替換為適當?shù)牟蓸又?。單元中的轉(zhuǎn)義編碼值可以使用轉(zhuǎn)義代碼值和文字值來解碼。調(diào)色板可以隨著單元的不同而變化,并且指定調(diào)色板的信息可以在比特流中被發(fā)信號通知。
自適應去塊濾波器被包括在視頻解碼器(450)中的運動補償環(huán)路內(nèi),以平滑解碼圖片(451)中跨越塊邊界行和/或列的不連續(xù)性。替代地或另外地,可以使用其他濾波(諸如去振鈴濾波、alf或sao濾波;未示出)作為環(huán)路濾波操作。
解碼圖片臨時存儲器存儲區(qū)域(460)包括多個圖片緩沖存儲區(qū)域(461、462、......、46n)。解碼圖片存儲區(qū)域(460)是解碼圖片緩沖區(qū)的示例。解碼器(450)使用mmco/rps信息(432)來標識在其中可以存儲解碼圖片(451)的圖片緩沖區(qū)(461、462等)。解碼器(450)將解碼圖片(451)存儲在該圖片緩沖區(qū)中。
輸出定序器(sequencer)(480)標識要以輸出順序產(chǎn)生的下一圖片何時在解碼圖片存儲區(qū)域(460)中可用。當要以輸出順序產(chǎn)生的下一圖片(481)在解碼圖片存儲區(qū)域(460)中可用時,其被輸出定序器(480)讀取并且被輸出到輸出目的地(490)(例如,顯示器)。通常,輸出定序器(480)從解碼圖片存儲區(qū)域(460)輸出圖片的順序可以不同于解碼器(450)對圖片進行解碼的順序。
v.示例視頻編碼器
圖5a和5b是可以與其結(jié)合實現(xiàn)所描述的一些實施例的通用視頻編碼器(500)的框圖。編碼器(500)接收包括當前圖片的視頻圖片序列作為輸入視頻信號(505),并且在編碼視頻比特流(595)中產(chǎn)生編碼數(shù)據(jù)作為輸出。
編碼器(500)是基于塊的,并且使用取決于實現(xiàn)的塊格式。塊可以在不同的階段被進一步細分,例如,在預測、頻率變換和/或熵編碼階段。例如,圖片可以被分為64×64塊、32×32塊或16×16塊,其又可以被依次劃分為較小的采樣值塊用于編碼和解碼。在h.265/hevc標準的編碼實現(xiàn)中,編碼器將圖片分為ctu(ctb)、cu(cb)、pu(pb)和tu(tb)。
編碼器(500)使用圖片內(nèi)編碼和/或圖片間編碼來壓縮圖片。編碼器(500)的很多部件用于圖片內(nèi)編碼和圖片間編碼二者。這些部件執(zhí)行的具體操作可能根據(jù)正在被壓縮的信息類型而有所不同。
分塊(tiling)模塊(510)可選地將圖片分為相同尺寸或不同尺寸的多個圖塊。例如,分塊模塊(510)沿著圖塊行和圖塊列來分割圖片,這些圖塊行和圖塊列與圖片邊界一同限定圖片內(nèi)的圖塊的水平和垂直邊界,其中每個圖塊是矩形區(qū)域。在h.265/hevc實現(xiàn)中,編碼器(500)將圖片分為一個或多個切片,其中每個切片包括一個或多個切片分段。
通用編碼控件(520)從編碼器(500)的各個模塊接收輸入視頻信號(505)的圖片以及反饋(未示出)??傊?,通用編碼控件(520)向其他模塊(諸如分塊模塊(510)、變換器/縮放器/量化器(530)、縮放器/逆變換器(535)、圖片內(nèi)估計器(540)、運動估計器(550)和圖內(nèi)/圖間切換)提供控制信號(未示出),以在編碼期間設置和改變編碼參數(shù)。具體地,通用編碼控件(520)可以決定在編碼期間是否以及如何使用圖內(nèi)bc預測。通用編碼控件(520)還可以在編碼期間評估中間結(jié)果,例如,執(zhí)行率失真(rate-distortion)分析。通用編碼控件(520)產(chǎn)生指示在編碼期間做出的決策的通用控制數(shù)據(jù)(522),使得相應的解碼器可以做出一致的決策。通用控制數(shù)據(jù)(522)被提供給報頭格式化器/熵編碼器(590)。
如果當前圖片使用圖片間預測來預測,則運動估計器(550)估計輸入視頻信號(505)的當前圖片的采樣值的塊相對于一個或多個參考圖片的運動。解碼圖片緩沖區(qū)(570)緩存一個或多個重構(gòu)的先前編碼的圖片,以用作參考圖片。當使用多個參考圖片時,多個參考圖片可以來自不同的時間方向或相同的時間方向。運動估計器(550)產(chǎn)生諸如mv數(shù)據(jù)的運動數(shù)據(jù)輔助信息、合并模式索引值和參考圖片選擇數(shù)據(jù),作為輔助信息。運動數(shù)據(jù)(552)被提供給報頭格式化器/熵編碼器(590)以及運動補償器(555)。
運動補償器(555)向來自解碼圖片緩沖區(qū)(570)的重構(gòu)的參考圖片應用mv。運動補償器(555)產(chǎn)生當前圖片的運動補償預測。
在編碼器(500)內(nèi)的單獨的路徑中,圖片內(nèi)估計器(540)確定如何執(zhí)行輸入視頻信號(505)的當前圖片的采樣值塊的圖片內(nèi)預測。當前圖片可以使用圖片內(nèi)編碼被全部或部分編碼。使用當前圖片的重構(gòu)(538)的值,對于圖內(nèi)空間預測,圖片內(nèi)估計器(540)確定如何根據(jù)當前圖片的相鄰的先前重構(gòu)的采樣值來在空間上預測當前圖片的當前塊的采樣值。
或者,對于圖內(nèi)bc預測,圖片內(nèi)估計器(540)估計從當前塊到另一先前重構(gòu)的采樣值中的位置的位移。圖片中的參考采樣值塊用于生成當前塊的預測值。例如,對于圖內(nèi)bc預測,圖片內(nèi)估計器(540)估計從當前塊到參考塊的位移,其可以用bv值來表示。當圖內(nèi)bc預測模式下的合并的色度塊的特殊情況處理被啟用時,在一些實現(xiàn)中,圖片內(nèi)估計器(540)可以確定符合對參考區(qū)域的位置約束的圖內(nèi)bc預測中的bv值,如下所述。
取決于實現(xiàn),圖片內(nèi)估計器(540)可以使用輸入采樣值、在環(huán)路內(nèi)濾波之前的重構(gòu)采樣值、或者在環(huán)路內(nèi)濾波之后的重構(gòu)采樣值,執(zhí)行當前塊的bv估計。通常,通過使用bv估計的輸入采樣值或未濾波的重構(gòu)采樣值,圖片內(nèi)估計器(540)可以避免順序處理瓶頸(其可能是由于在bv估計/圖內(nèi)bc預測之前對參考塊的重構(gòu)采樣值進行濾波而產(chǎn)生的)。另一方面,存儲未濾波的重構(gòu)采樣值使用附加存儲器。此外,如果在bv估計之前應用環(huán)路內(nèi)濾波,則可能存在在當前塊被解碼之后將被應用的濾波處理與被用于bv估計/圖內(nèi)bc預測的區(qū)域之間重疊的影響區(qū)域。在這種情況下,將在濾波操作的該方面之前應用bv估計/圖內(nèi)bc預測。在一些實現(xiàn)中,編碼器可以在bv估計/圖內(nèi)bc預測之前應用一些環(huán)路內(nèi)濾波操作,并且在隨后的處理階段中執(zhí)行附加的或替代的濾波。
圖片內(nèi)估計器(540)產(chǎn)生圖內(nèi)預測數(shù)據(jù)(542),諸如指示圖內(nèi)預測是使用空間預測還是圖內(nèi)bc預測、預測模式方向(對于圖內(nèi)空間預測)和bv值(用于圖內(nèi)bc預測)的信息,作為輔助信息。圖內(nèi)預測數(shù)據(jù)(542)被提供給報頭格式化器/熵編碼器(590)以及圖片內(nèi)預測器(545)。
根據(jù)圖內(nèi)預測數(shù)據(jù)(542),圖片內(nèi)預測器(545)根據(jù)當前圖片的相鄰的先前重構(gòu)的采樣值來在空間上預測當前圖片的當前塊的采樣值?;蛘?,對于圖內(nèi)bc預測,圖片內(nèi)預測器(545)使用參考塊的先前重構(gòu)的采樣值來預測當前塊的采樣值,其用當前塊的位移(bv值)來表示。在一些情況下,bv值可以是預測值。在其他情況下,bv值可以與其預測值不同,在這種情況下,差分值表示預測值與bv值之間的差值。當圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被啟用時,在一些實現(xiàn)中,圖片內(nèi)預測器(545)可以剪切某些bv值、執(zhí)行采樣值填充、或者根據(jù)優(yōu)先級順序來在候選bv值中進行選擇,如下所述。
對于調(diào)色板編碼模式,編碼器(500)使用調(diào)色板來表示cu或其他單元的至少一些采樣值。調(diào)色板表示在單元中使用的顏色。例如,調(diào)色板將索引值0、1、2、......、p映射到相應的顏色,其可以是rgb4:4:4格式、bgr4:4:4格式、gbr4:4:4格式、yuv4:4:4格式或其他格式(顏色空間、顏色采樣率)。索引值可以表示像素的rgb三元組、bgr三元組或gbr三元組,其中像素是具有共同位置的采樣值集合。對于單元的編碼,索引值替換單元中像素的采樣值。單元中的稀有值可以使用轉(zhuǎn)義代碼值和文字值來編碼,而不是使用調(diào)色板中的索引值來編碼。調(diào)色板可以隨著單元的不同而變化,并且指定調(diào)色板的信息可以在比特流中被發(fā)信號通知。
圖內(nèi)/圖間切換選擇給定塊的預測(558)是運動補償預測還是圖片內(nèi)預測。
在一些示例實現(xiàn)中,對于以調(diào)色板編碼模式或圖內(nèi)bc預測模式被編碼的單元,不計算殘差。作為代替,跳過殘差編碼,并且將預測的采樣值用作重構(gòu)采樣值。
當不跳過殘差編碼時,預測塊(558)與輸入視頻信號(505)的原始的當前圖片的相應部分之間的差(如果有的話)提供殘差(518)的值。在當前圖片的重構(gòu)期間,當殘差值已經(jīng)被編碼/發(fā)信號通知時,將重構(gòu)的殘差值與預測(558)組合以產(chǎn)生來自視頻信號(505)的原始內(nèi)容的近似或精確重構(gòu)(538)(在有損壓縮中,一些信息從視頻信號中丟失(505))。
作為殘差編碼的一部分,在變換器/縮放器/量化器(530)中,當不跳過頻率變換時,頻率變換器將空間域視頻信息變換為頻域(即,頻譜、變換)數(shù)據(jù)。對于基于塊的視頻編碼,頻率變換器將離散余弦變換(“dct”)、其整數(shù)近似、或另一類型的前向塊變換(例如,離散正弦變換或其整數(shù)近似)應用于預測殘差數(shù)據(jù)塊(如果預測(558)為零,則為采樣值數(shù)據(jù)),以產(chǎn)生頻率變換系數(shù)塊。變換器/縮放器/量化器(530)可以應用具有可變塊尺寸的變換。在這種情況下,變換器/縮放器/量化器(530)可以確定要使用哪些變換塊尺寸用于當前塊的殘差值??s放器/量化器對變換系數(shù)進行縮放和量化。例如,量化器以逐圖片、逐圖塊、逐切片、逐塊、按照特定于頻率的規(guī)則或按照其他規(guī)則變化的量化步長來對頻域數(shù)據(jù)應用死區(qū)標量量化。量化后的變換系數(shù)數(shù)據(jù)(532)被提供給報頭格式化器/熵編碼器(590)。如果頻率變換被跳過,則縮放器/量化器可以對預測殘差數(shù)據(jù)塊進行縮放和量化(或者如果預測(558)為零,則對采樣值數(shù)據(jù)進行縮放和量化),以產(chǎn)生被提供給報頭格式化器/熵編碼器的量化值590)。
為了重構(gòu)殘差值,在縮放器/逆變換器(535)中,縮放器/逆量化器對量化后的變換系數(shù)執(zhí)行逆縮放和逆量化。當變換階段沒有被跳過時,逆頻率變換器進行逆頻率變換,以產(chǎn)生重構(gòu)的預測殘差值或采樣值的塊。如果變換階段已經(jīng)被跳過,則也會跳過逆頻率變換。在這種情況下,縮放器/逆量化器可以對預測殘差數(shù)據(jù)(或采樣值數(shù)據(jù))的塊執(zhí)行逆縮放和逆量化,以產(chǎn)生重構(gòu)值。當殘差值已經(jīng)被編碼/發(fā)信號通知時,編碼器(500)將重構(gòu)的殘差值與預測(558)的值(例如,運動補償預測值、圖片內(nèi)預測值)組合以形成重構(gòu)(538)。當殘差值尚未被編碼/發(fā)信號通知時,編碼器(500)使用預測(558)的值作為重構(gòu)(538)。
對于圖片內(nèi)預測,可以將重構(gòu)(538)的值反饋給圖片內(nèi)估計器(540)和圖片內(nèi)預測器(545)。重構(gòu)(538)的值可以用于后續(xù)圖片的運動補償預測。重構(gòu)(538)的值還可以被濾波。濾波控件(560)對于視頻信號(505)的給定圖像確定如何對重構(gòu)(538)的值執(zhí)行去塊濾波和sao濾波。濾波控件(560)產(chǎn)生被提供給報頭格式化器/熵編碼器(590)和合并器/濾波器(565)的濾波器控制數(shù)據(jù)(562)。
在合并器/濾波器(565)中,編碼器(500)將來自不同圖塊的內(nèi)容合并到圖片的重構(gòu)版本中。編碼器(500)根據(jù)濾波器控制數(shù)據(jù)(562)和用于濾波器自適應的規(guī)則來選擇性地執(zhí)行去塊濾波和sao濾波,以便自適應地平滑跨越圖片中的邊界的不連續(xù)性。替代地或另外地,可以應用其他濾波(諸如去振鈴濾波或alf;未示出)。取決于編碼器(500)的設置,可以對圖塊邊界選擇性地濾波或者完全不對其進行濾波,并且編碼器(500)可以在編碼比特流內(nèi)提供用以指示是否應用了這種濾波的語法元素。解碼圖片緩沖區(qū)(570)緩存經(jīng)重構(gòu)的當前圖片用于在隨后的運動補償預測中使用。
報頭格式化器/熵編碼器(590)對通用控制數(shù)據(jù)(522)、量化后的變換系數(shù)數(shù)據(jù)(532)、圖內(nèi)預測數(shù)據(jù)(542)、運動數(shù)據(jù)(552)和濾波器控制數(shù)據(jù)(562)進行格式化和/或熵編碼。對于運動數(shù)據(jù)(552),報頭格式化器/熵編碼器(590)可以對合并模式索引值進行選擇和熵編碼,或者可以使用默認的mv預測值。在一些情況下,報頭格式化器/熵編碼器(590)還確定mv值的mv差分值(相對于mv值的mv預測值),然后例如使用上下文自適應二進制算術編碼來對mv差分值進行熵編碼。對于圖內(nèi)預測數(shù)據(jù)(542),可以使用預測來對bv值進行編碼。預測可以使用默認預測值(例如,來自一個或多個相鄰塊的bv值)。當可能使用多個預測值時,預測值索引可以指示要使用多個預測值中的哪個用于bv值的預測。報頭格式化器/熵編碼器(590)可以對預測值索引值進行選擇和熵編碼(對于圖內(nèi)bc預測),或者可以使用默認預測值。在一些情況下,報頭格式化器/熵編碼器(590)還確定差分值(相對于bv值的預測值),然后例如使用上下文自適應二進制算術編碼來對差分值進行熵編碼。對于調(diào)色板編碼模式,報頭格式化器/熵編碼器(590)可以對調(diào)色板數(shù)據(jù)進行編碼。
報頭格式化器/熵編碼器(590)在編碼視頻比特流(595)中提供編碼數(shù)據(jù)。編碼視頻比特流(595)的格式可以是h.265/hevc格式、windowsmedia視頻格式、vc-1格式、mpeg-x格式(例如,mpeg-1、mpeg-2或mpeg-4)、h.26x格式(例如h.261、h.262、h.263、h.264)或另一格式的變型或擴展。
取決于實現(xiàn)和期望的壓縮類型,編碼器(500)的模塊可以被添加、省略、分為多個模塊、與其他模塊組合、和/或使用類似的模塊進行替換。在替代實施例中,具有不同模塊和/或其他模塊配置的編碼器執(zhí)行所描述的技術中的一個或多個。編碼器的具體實施例通常使用編碼器(500)的變型或補充版本。編碼器(500)內(nèi)的模塊之間的關系表示編碼器中的一般信息流;為了簡化的目的,未示出其他關系。
vi.示例視頻解碼器
圖6是可以與其結(jié)合實現(xiàn)所描述的一些實施例的通用解碼器(600)的框圖。解碼器(600)在編碼視頻比特流(605)中接收編碼數(shù)據(jù),并且產(chǎn)生包括用于重構(gòu)視頻(695)的圖片的輸出。編碼視頻比特流(605)的格式可以是h.265/hevc格式、windowsmedia視頻格式、vc-1格式、mpeg-x格式(例如,mpeg-1、mpeg-2或mpeg-4)、h.26x格式(例如,h.261、h.262、h.263、h.264)或其他格式的變型或擴展。
圖片可以被組織為相同尺寸或不同尺寸的多個圖塊。圖片也可以被組織為一個或多個切片。切片或圖塊的內(nèi)容可以進一步被組織為塊或其他采樣值集合。解碼器(600)基于塊,并且使用取決于實現(xiàn)的塊格式。塊可以在不同的階段被進一步細分。例如,圖片可以被分為64×64塊、32×32塊或16×16塊,其又可以依次被分割為較小的采樣值塊。在h.265/hevc標準的解碼實現(xiàn)中,圖片被分為ctu(ctb)、cu(cb)、pu(pb)和tu(tb)。
解碼器(600)使用圖片內(nèi)解碼和/或圖片間解碼來解壓縮圖片。解碼器(600)的很多部件用于圖片內(nèi)解碼和圖片間解碼二者。這些部件執(zhí)行的具體操作可能根據(jù)正在被解壓縮的信息類型而有所不同。
緩沖區(qū)接收編碼視頻比特流(605)中的編碼數(shù)據(jù),并且使接收到的編碼數(shù)據(jù)可用于解析器/熵解碼器(610)。解析器/熵解碼器(610)對熵編碼數(shù)據(jù)進行熵解碼,通常應用在編碼器(500)中執(zhí)行的熵編碼的逆過程(例如,上下文自適應二進制算術解碼)。作為解析和熵解碼的結(jié)果,解析器/熵解碼器(610)產(chǎn)生通用控制數(shù)據(jù)(622)、量化后的變換系數(shù)數(shù)據(jù)(632)、圖內(nèi)預測數(shù)據(jù)(642)、運動數(shù)據(jù)(652)和濾波器控制數(shù)據(jù)662)。對于圖內(nèi)預測數(shù)據(jù)(642),如果預測變量索引值被發(fā)信號通知,則解析器/熵解碼器(610)可以例如使用上下文自適應二進制算術解碼來對預測變量索引值進行熵解碼。在一些情況下,解析器/熵解碼器(610)還對bv值的差分值進行熵解碼(例如,使用上下文自適應二進制算術解碼),然后將差分值與相應的預測變量組合以重構(gòu)bv值。在其他情況下,從比特流中省略了差分值,并且bv值簡單地是預測變量(例如,用預測變量索引值來指示)。對于調(diào)色板解碼模式,解析器/熵解碼器(610)可以對調(diào)色板數(shù)據(jù)進行解碼。
通用解碼控件(620)接收通用控制數(shù)據(jù)(622),并且向其他模塊(諸如縮放器/逆變換器(635)、圖片內(nèi)預測器(645)、運動補償器(655)和圖內(nèi)/圖間切換)提供控制信號(未示出),以在解碼期間設置和改變解碼參數(shù)。
如果當前圖片使用圖間預測來預測,則運動補償器(655)接收運動數(shù)據(jù)(652),諸如mv數(shù)據(jù)、參考圖片選擇數(shù)據(jù)和合并模式索引值。運動補償器(655)向來自解碼圖片緩沖區(qū)(670)的重構(gòu)的參考圖片應用mv。運動補償器(655)產(chǎn)生當前圖片的圖間編碼塊的運動補償預測。解碼圖片緩沖區(qū)(670)存儲一個或多個先前重構(gòu)的圖片以用作參考圖片。
在解碼器(600)內(nèi)的單獨的路徑中,圖片內(nèi)預測器(645)接收圖內(nèi)預測數(shù)據(jù)(642),諸如指示圖片內(nèi)預測是使用空間預測還是圖內(nèi)bc預測的信息、以及預測模式方向(對于圖內(nèi)空間預測)或bv值(對于圖內(nèi)bc預測)。對于圖內(nèi)空間預測,使用當前圖片的重構(gòu)(638)的值,根據(jù)預測模式數(shù)據(jù),圖片內(nèi)預測器(645)根據(jù)當前圖片的相鄰的先前重構(gòu)的采樣值來在空間上預測當前圖片的當前塊的采樣值?;蛘?,對于圖內(nèi)bc預測,圖片內(nèi)預測器(645)使用參考塊的先前重構(gòu)的采樣值來預測當前塊的采樣值,其用當前塊的位移(bv值)來表示。在一些情況下,bv值可以是預測值。在其他情況下,bv值可以與其預測值不同,在這種情況下,使用差分值和預測值來重構(gòu)bv值。當圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被啟用時,在一些實現(xiàn)中,bv值符合對參考區(qū)域的位置約束,如下所述。在其他實現(xiàn)中,當圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理被啟用時,圖片內(nèi)預測器(645)可以剪切某些bv值、執(zhí)行采樣值填充、或者根據(jù)優(yōu)先級順序來在候選bv值中進行選擇,如下所述。
對于調(diào)色板解碼模式,解碼器(600)使用表示cu或其他單元的至少一些采樣值的調(diào)色板。調(diào)色板將索引值映射到在單元中使用的相應顏色。例如,調(diào)色板將索引值0、1、2、......、p映射到相應的顏色,其可以是rgb4:4:4格式、bgr4:4:4格式、gbr4:4:4格式、yuv4:4:4格式或其他格式(顏色空間、顏色采樣率)。索引值可以表示像素的rgb三元組、bgr三元組或gbr三元組。在解碼期間,對于單元中的位置,來自調(diào)色板的索引值被替換為適當?shù)牟蓸又?。單元中的轉(zhuǎn)義編碼值可以使用轉(zhuǎn)義代碼值和文字值來解碼?;谠诒忍亓髦邪l(fā)信號通知的調(diào)色板數(shù)據(jù),調(diào)色板可以隨著單元的不同而變化。
圖內(nèi)/圖間切換選擇運動補償預測或圖片內(nèi)預測的值以用作給定塊的預測(658)。例如,當遵循h(huán).265/hevc語法時,可以基于被編碼用于可以包含圖內(nèi)預測的cu和圖間預測的cu的圖片的cu的語法元素來控制圖內(nèi)/圖間切換。當殘差值已經(jīng)被編碼/發(fā)信號通知時,解碼器(600)將預測(658)與重構(gòu)的殘差值組合,以從視頻信號產(chǎn)生內(nèi)容的重構(gòu)(638)。當殘差值尚未被編碼/發(fā)信號通知時,解碼器(600)使用預測(658)的值作為重構(gòu)(638)。
為了在殘差值已經(jīng)被編碼/發(fā)信號通知時重構(gòu)殘差,縮放器/逆變換器(635)接收并且處理量化后的變換系數(shù)數(shù)據(jù)(632)。在縮放器/逆變換器(635)中,縮放器/逆量化器對量化后的變換系數(shù)執(zhí)行逆縮放和逆量化。逆頻率變換器執(zhí)行逆頻率變換,以產(chǎn)生重構(gòu)的預測殘差值或采樣值的塊。例如,逆頻率變換器將逆塊變換應用于頻率變換系數(shù),以產(chǎn)生采樣值數(shù)據(jù)或預測殘差數(shù)據(jù)。逆頻率變換可以是逆dct、其整數(shù)近似、或另一種類型的逆頻率變換(例如,逆離散正弦變換或其整數(shù)近似)。如果在編碼期間跳過頻率變換,則也跳過逆頻率變換。在這種情況下,縮放器/逆量化器可以對預測殘差數(shù)據(jù)(或采樣值數(shù)據(jù))的塊執(zhí)行逆縮放和逆量化,以產(chǎn)生重構(gòu)值。
對于圖片內(nèi)預測,可以將重構(gòu)(638)的值反饋給圖片內(nèi)預測器(645)。對于圖片間預測,可以進一步對重構(gòu)(638)的值濾波。在合并器/濾波器(665)中,解碼器(600)將來自不同圖塊的內(nèi)容合并到圖片的重構(gòu)版本中。解碼器(600)根據(jù)濾波器控制數(shù)據(jù)(662)和用于濾波器自適應的規(guī)則來選擇性地執(zhí)行去塊濾波和sao濾波,以便自適應地平滑跨越圖片中邊界的不連續(xù)性。替代地或另外地,可以應用其他濾波(諸如去振鈴濾波或alf;未示出)。取決于解碼器(600)的設置或編碼比特流數(shù)據(jù)內(nèi)的語法元素,可以對圖塊邊界選擇性地濾波或者完全不對其進行濾波。解碼圖片緩沖區(qū)(670)緩存重構(gòu)的當前圖片以用于在隨后的運動補償預測中使用。
解碼器(600)還可以包括后處理濾波器。后處理濾波器(608)可以包括去塊濾波、去振鈴濾波、自適應維納濾波、膠片顆粒再現(xiàn)濾波、sao濾波或其他濾波。在運動補償環(huán)路中對圖片的重構(gòu)采樣值執(zhí)行“環(huán)路內(nèi)”濾波,因此“環(huán)路內(nèi)”濾波影響參考圖片的采樣值,后處理濾波器(608)被應用于運動補償環(huán)路外部的重構(gòu)采樣值,隨后輸出用于顯示。
取決于實現(xiàn)和期望的解壓縮類型,解碼器(600)的模塊可以被添加、省略、分為多個模塊、與其他模塊組合、和/或使用類似的模塊進行替換。在替代實施例中,具有不同模塊和/或其他模塊配置的解碼器執(zhí)行所描述的技術中的一個或多個。解碼器的具體實施例通常使用解碼器(600)的變型或補充版本。解碼器(600)內(nèi)的模塊之間的關系表示解碼器中的一般信息流;為了簡化的目的,未示出其他關系。
vii.圖內(nèi)bc預測中的合并的色度塊的特殊情況處理
本部分呈現(xiàn)了在圖內(nèi)塊拷貝(“bc”)預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理的示例。
在不失一般性的情況下,很多以下的實施例使用術語“亮度”和“色度”,而不是更加通用的術語“主分量”和“次分量”。這將描述重點放在yuv格式的常見示例,但是相同的方法可以應用于其他類型的主分量和次分量。
a.圖內(nèi)bc預測——介紹
通常,圖內(nèi)bc預測模式使用圖片內(nèi)預測,在圖片內(nèi)預測中,使用同一圖片中的采樣值來預測圖片的當前塊的采樣值。塊向量(“bv”)值指示從當前塊到包括用于預測的采樣值的圖片的塊(“參考塊”)的位移。參考塊提供當前塊的預測值。用于預測的采樣值是先前重構(gòu)的采樣值,其因此在編碼期間在編碼器處和在解碼期間在解碼器處可獲得。bv值在比特流中被發(fā)信號通知,并且解碼器可以使用bv值來確定要用于預測的圖片的參考塊。
圖7示出了當前圖片(710)的當前塊(730)的圖內(nèi)bc預測的示例(700)。當前塊可以是編碼單元(“cu”)的編碼塊(“cb”)、預測單元(“pu”)的預測塊(“pb”)、變換單元(“tu”)的變換塊(“tb”)或其他塊。當前塊的尺寸可以是64×64、32×32、16×16、8×8或某個其他尺寸。為了圖內(nèi)bc預測的目的,塊可以被對稱地或不對稱地分為更小的塊。更一般地,當前塊的尺寸是m×n,其中m和n中的每個是整數(shù),并且其中m和n可以彼此相等或者可以具有不同的值。因此,當前塊可以是正方形或矩形??商娲?,當前塊可以具有其他形狀。
bv值(740)指示從當前塊(730)到包括用于預測的采樣值的圖片的參考塊(750)的位移(或偏移)。參考塊(750)可以與當前塊(730)相同,或者它可以是當前塊(730)的近似。假設當前塊的左上位置在當前圖片中的位置(x0,y0)處,并且假設參考塊的左上位置在當前圖片中的位置(x1,y1)處。bv值表示位移(x1-x0,y1-y0)。例如,如果當前塊的左上位置在位置(256,128)處,并且參考塊的左上位置在位置(126,104)處,則bv值為(-130,-24)。在該示例中,負的水平位移指示在當前塊的左側(cè)的位置,并且負的垂直位移指示在當前塊上方的位置。
圖內(nèi)bc預測可以通過使用bc操作利用冗余(諸如圖片內(nèi)部的重復模式)來提高編碼效率。但是,考慮到編碼器可以評估的候選參考塊的數(shù)目,找到當前塊的匹配參考塊可能是計算復雜且耗時的。圖8示出了示例(800),其示出了當前圖片(810)的當前塊(830)的一些候選參考塊。四個bv值(841、842、843、844)指示四個候選參考塊的位移。在一些示例實現(xiàn)中,當波前并行處理(“wpp”)未被啟用時,候選參考塊可以在當前圖片(810)的重構(gòu)內(nèi)容內(nèi)的任何地方。(塊通常從左到右然后從上到下被編碼。)當wpp被啟用(或者在其他示例實現(xiàn)中,對于所有圖內(nèi)bc預測)時,對候選參考塊的位置適用附加約束。候選參考塊可以與其他候選參考塊交疊,如由bv值(843、844)指示的候選參考塊所示。
通常,具有圖內(nèi)bc預測的預測模式的塊可以是cb、pb或其他塊。當塊是cb時,塊的bv可以在cu級別被發(fā)信號通知(并且cu中的其他cb使用相同的bv或其縮放版本)。或者,當塊為pb時,塊的bv可以在pu級別被發(fā)信號通知(并且pu中的其他pb使用相同的bv或其縮放版本)。更一般地,用于圖內(nèi)bc預測塊的bv在塊的適當語法級別被發(fā)信號通知。
圖內(nèi)bc預測模式的預測操作可以在cb(當每個cu或其一部分來發(fā)信號通知bv值時)或pb(當每個pu或其一部分來發(fā)信號通知bv值時)級別來應用。在這種情況下,參考區(qū)域被約束為不與當前區(qū)域或包括當前區(qū)域的塊交疊??商娲?,預測操作可以應用于pb或cb中的較小部分,即使當bv值被發(fā)信號用于pu或cu(或其一部分)時。例如,對于塊的第一部分,參考區(qū)域包括在塊外部的位置。然而,對于塊的第二部分,在預測操作中使用的參考區(qū)域可以包括在同一塊的先前重構(gòu)的第一部分中的位置。以這種方式,bv值可以引用同一pb或cb中的位置。允許將圖內(nèi)bc預測操作應用于pb或cb內(nèi)的部分有助于使用具有相對較小幅度的bv值。
b.一般地,對bv值的約束的示例
在一些示例實現(xiàn)中,參考塊被限制在與當前塊相同的切片和圖塊內(nèi)。這樣的圖內(nèi)bc預測不使用其他切片或圖塊中的采樣值。參考塊的位置可能受到一個或多個其他限制。本節(jié)詳細說明編碼器可以對圖內(nèi)bc預測執(zhí)行的約束的示例。通常,對于當前塊,約束驗證由bv值指示的候選參考塊包括在當前塊被編碼或解碼時將可用的重構(gòu)采樣值。(圖內(nèi)bc預測中的合并的色度塊的約束的變型在第vii.e節(jié)中呈現(xiàn)。)由編碼器對允許的bv值執(zhí)行的約束可以替代地根據(jù)關于bv值的比特流一致性要求來表示。
定義。當前塊相對于當前圖片的左上位置開始于位置(x0,y0)。當前塊的寬度和高度分別為wblock和hblock。當前塊是當前cu的一部分(例如,當前塊是pb)。ctu尺寸為s。當前cu相對于圖片的左上位置開始于(xcu,ycu)。塊向量(在亮度塊的圖內(nèi)bc預測中使用)為(bvx,bvy)。
編碼器驗證所有以下約束是否滿足。
第一約束。具體地,編碼器驗證位置(x0,y0)和位置(x0+bvx,y0+bvy)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。也就是說,編碼器驗證當前塊的左上位置和參考塊的左上位置在相同的切片中并且在相同的圖塊中。如果兩個位置在不同的切片或不同的圖塊中,則第一約束不滿足。
第二約束。編碼器驗證位置(x0,y0)和位置(x0+bvx+wblock-1,y0+bvy+hblock-1)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。也就是說,編碼器驗證當前塊的左上位置和參考塊的右下位置是否在相同的切片中以及在相同的圖塊中。如果兩個位置在不同的切片或不同的圖塊中,則第二約束不滿足。
對于第一和第二約束,如果不使用多個切片切片,則被檢查的兩個位置必須在相同的切片中,并且切片的第一和第二約束不需要被檢查,盡管參考塊仍被約束在內(nèi)當前圖片內(nèi)。類似地,如果不使用多個圖塊,則被檢查的兩個位置必須在相同的圖塊中,并且圖塊的第一和第二約束不需要檢查,盡管參考塊仍然被約束在當前圖片內(nèi)。當前塊的所有位置都在單個切片和單個圖塊中。如果第一和第二約束滿足,則參考塊的所有位置也在該切片和圖塊中。
第三約束。對于第三約束,編碼器驗證以下三個條件之一滿足。
第三約束的第一條件。編碼器檢查是否(y0+bvy+hblock-1)/s<y0/s。也就是說,編碼器計算包括參考塊的底部邊緣的ctu行:(y0+bvy+hblock-1)/s。編碼器還計算包括當前塊的頂部邊緣的ctu行:y0/s。然后,編碼器隨后檢查包括參考塊的底部邊緣的ctu行是否在包括當前塊的頂部邊緣的ctu行之上。如果是,則參考塊必然包括先前重構(gòu)的采樣值,至少當wpp未被啟用時。
第三約束的第二條件。當(y0+bvy+hblock-1)/s==y(tǒng)0/s時,編碼器檢查是否(x0+bvx+wblock-1)/s<x0/s。也即,如果包括參考塊的底部邊緣的ctu行等于包括當前塊的頂部邊緣的ctu行(相同的ctu行),則編碼器計算(a)包括參考塊右側(cè)邊緣的ctu列((x0+bvx+wblock-1)/s),以及(b)包括當前塊的左側(cè)邊緣的ctu列(x0/s)。然后,編碼器檢查包括參考塊的右側(cè)邊緣的ctu列是否在包括當前塊的左側(cè)邊緣的ctu列的左側(cè)。如果是,則參考塊必然包括先前重構(gòu)的采樣值。
第三約束的第三條件。當(y0+bvy+hblock-1)/s==y(tǒng)0/s并且(x0+bvx+wblock-1)/s==x0/s時,編碼器檢查位置(x0+bvx+wblock-1,y0+bvy+hblock-1)的z掃描順序是否小于位置(x0,y0)的z掃描順序。也就是說,如果包括參考塊的底部邊緣的ctu行等于包括當前塊的頂部邊緣的ctu行(相同的ctu行),并且如果包括參考塊的右側(cè)邊緣的ctu列等于包括當前塊的左側(cè)邊緣的ctu列(相同的ctu列),則編碼器檢查參考塊的右下位置在z掃描順序方面是否早于當前塊的左上位置。如果是,則包含參考塊的右下位置的塊已經(jīng)被預先重構(gòu)(并且因此具有參考塊的其余部分)。如果允許來自當前cu內(nèi)的預測,則第三條件適用。編碼器還可以檢查偏移值是否滿足條件bvx+wblock≤0和bvy+hblock≤0中的至少一個,以確保參考區(qū)域不與當前區(qū)域交疊。如果不允許來自當前cu內(nèi)的預測,(x0,y0)應當為(xcu,ycu)。
通常,z掃描順序遵循劃分圖片的單元的順序地規(guī)定的順序。圖9示出了當前塊(930)的示例z掃描順序(900)和可能包括參考塊的右下位置的單元。z掃描順序通常被分配給一行中的按順序從左到右的單元中,從上到下在依次的行中重復。當單元被拆分時,z掃描順序在在分割單元內(nèi)被遞歸地分配。對于h.265/hevc標準的編碼/解碼的實現(xiàn),z掃描順序沿著ctu光柵掃描模式(在ctu行中從左到右,從上到下在依次的ctu行中重復)逐ctu進行。如果ctu被分割,則z掃描順序遵循分割ctu內(nèi)的四叉樹的cu的光柵掃描模式。而且,如果cu被分割(例如,分為多個cu或多個pu),則z掃描順序?qū)τ诜指頲u內(nèi)的塊遵循光柵掃描模式。
第四約束。在一些示例實現(xiàn)中,當wpp被啟用時,編碼器檢查第四約束。在其他示例實現(xiàn)中,編碼器檢查第四約束,而不管wpp是否被啟用。對于第四約束,編碼器驗證(x0+bvx+wblock-1)/s-x0/s<=y(tǒng)0/s-(y0+bvy+hblock-1)/s。也就是說,編碼器計算包括參考塊的右側(cè)邊緣的ctu列與包括當前塊的左側(cè)邊緣的ctu列之間的差值:(x0+bvx+wblock-1)/s-x0/s。編碼器還計算包括當前塊的頂部邊緣的ctu行與包括參考塊的底部邊緣的ctu行之間的差值:y0/s-(y0+bvy+hblock-1)/s。編碼器驗證第一差值(在ctu列之間)小于或等于第二差值(在ctu行之間)。更一般地,從參考塊到當前塊的水平位移值被限制為小于或等于從當前塊到參考塊的垂直位移值。這驗證了參考塊是要被保證在wpp被啟用時可用于預測的重構(gòu)內(nèi)容的一部分,其是最經(jīng)常產(chǎn)生良好bv值的重構(gòu)內(nèi)容的一部分。
c.色度塊的bv值的縮放
在一些示例實現(xiàn)中,bv值被發(fā)信號通知用于cu、pu或其他單元,并且被應用于單元的所有塊。取決于顏色空間和顏色采樣率,bv值可以用于所有塊而不進行縮放,或者其也可以對于不同顏色分量中的塊被縮放。例如,如果圖片的格式為yuv4:2:0,則bv值水平地縮放兩倍,并且垂直地縮放兩倍?;蛘?,如果圖片的格式為yuv4:2:2,則bv值水平地縮放兩倍。另一方面,如果圖片的格式為yuv4:4:4、rgb4:4:4、bgr4:4:4或gbr4:4:4,則在主分量塊的圖內(nèi)bc預測中使用的bv值當在次分量塊的圖內(nèi)bc預測中使用之前不被縮放。
為了確定色度塊(或其他次分量塊)的圖內(nèi)bc預測的縮放后的bv值,可以使用各種方法中的任一種來為單元縮放bv值。假設在亮度塊的圖內(nèi)bc預測中使用的bv值為(ybvx,ybvy),其對應于前述小節(jié)中的bv值(bvx,bvy)。在色度塊的圖內(nèi)bc預測中使用的bv值為(cbvx,cbvy)。bv(cbvx,cbvy)可以如下來確定:
cbvx=y(tǒng)bvx>>(subwidthc-1),以及
cbvy=y(tǒng)bvy>>(subheightc-1),以及
其中>>n表示n位的右移位操作,subwidthc和subheightc的值取決于色度采樣格式,如下表所示。
當subwidthc或subheightc為1時,色度bv分量值等于亮度bv分量值。當subwidthc或subheightc為2時,有若干替代選項用于從相應的亮度bv分量值中導出色度bv分量值,如下表所示。在該表中,>>n表示右移位n位,并向下舍入,“/”表示舍入為零的除法。函數(shù)sign(m)返回m的符號(正或負)。函數(shù)abs(m)返回m的絕對值。
可替代地,色度bv分量值以某種其他方式從相應的亮度bv分量值來導出。
d.圖內(nèi)bc預測模式下的合并的色度塊
在圖內(nèi)bc預測的一些示例實現(xiàn)中,cu的每個pu可以具有其自己的bv值,對pb執(zhí)行圖內(nèi)bc預測,并且執(zhí)行圖內(nèi)bc預測的最小塊尺寸為4×4。當圖片的格式為yuv4:2:0時,如果cu的尺寸為8×8,則色度pb可以小于4×4。如果cu具有單個pu(2n×2n模式),則亮度pb具有8×8的尺寸,并且兩個相應的色度pb(分別用于u和v分量)每個具有4×4的尺寸。另一方面,如果cu具有多個pu(2n×n模式、n×2n模式或n×n模式),則色度pb小于4×4。對于2n×n模式,8×8的cu有兩個8×4的pu。每個8×4的pu具有8×4亮度pb,用于u分量的4×2色度pb和用于v分量的4×2色度pb。對于n×2n模式,8×8的cu具有兩個4×8的pu。每個4×8的pu具有4×8亮度pb,用于u分量的2×4色度pb和用于v分量的2×4色度pb。對于n×n模式,8×8的cu有四個4×4的pu。每個4×4的pu具有4×4亮度pb,用于u分量的2×2色度pb和用于v分量的2×2色度pb。
類似地,當圖片的格式為yuv4:2:2時,如果cu的尺寸為8×8,則色度pb可以小于4×4。如果cu具有單個pu(2n×2n模式),則亮度pb具有8×8的尺寸,并且兩個相應的色度pb(分別用于u和v分量)分別具有4×8的尺寸。對于2n×n模式,8×8的cu具有兩個8×4的pu。每個8×4的pu具有8×4亮度pb,用于u分量的4×4色度pb和用于v分量的4×4色度pb。對于n×2n模式,8×8的cu具有兩個4×8的pu。每個4×8的pu具有4×8亮度pb,用于u分量的2×8色度pb和用于v分量的2×8色度pb。對于n×n模式,8×8的cu具有四個4×4的pu。每個4×4的pu具有4×4亮度pb,用于u部件的2×4色度pb和用于v部件的2×4色度pb。
因此,亮度pb的尺寸總是至少為4×4。然而,如上所述,存在色度pb小于4×4的幾種情況。為了處理小色度pb的這種情況,cu的相鄰色度pb使用較大的塊的單個bv值被合并成用于圖內(nèi)bc預測的較大的塊。也就是說,用于u分量的相鄰的色度pb被合并成用于圖內(nèi)bc預測的較大的塊,并且用于v分量的相鄰的色度pb被合并成用于圖內(nèi)bc預測的較大的塊。較大的塊(包括合并的小的色度pb)的單個bv值可以從相應的亮度pb的bv值來導出。具體地,相應的亮度pb之一(例如,相應的亮度pb中的最底部、最右側(cè)的亮度pb)的bv值可以被選擇用于在圖內(nèi)bc預測時使用,根據(jù)格式被縮放,并且用于較大的塊(包括合并的小的色度pb)的圖內(nèi)bc預測。
例如,考慮在yuv4:2:0格式的圖片中具有兩個4×8的pu的8×8的cu。第一(左邊)4×8的pu具有bv值(-18,-14),第二(右邊)4×8的pu具有bv值(-26,-4)。對于圖內(nèi)bc預測,第一4×8亮度pb使用bv值(-18,-14),第二4×8亮度pb使用bv值(-26,-4)。由于相應的色度pb小于4×4,所以相鄰的2×4色度pb被合并,用于使用所導出的bv值(-13,-2)來進行圖內(nèi)bc預測的目的。所導出的bv值是最底部、最右側(cè)的亮度pb的bv值,其水平地和垂直地以因子2被縮放。u分量的左右2×4色度pb被合并成4×4色度塊用于使用導出的bv值(-13,-2)的圖內(nèi)bc預測,并且v分量的左右2×4色度pb被合并成4×4色度塊用于使用所導出的bv值(-13,-2)的圖內(nèi)bc預測。
在大多數(shù)情況下,將小的色度pb合并成用于圖內(nèi)bc預測的更大塊的這種方法是有效的。然而,在某一些情況下,可能會導致在圖片邊界外部的采樣值(其不可用)或在圖塊邊界或切片邊界外部的采樣值(其可能不可用)。為了說明,圖10a示出了yuv4:2:0格式的圖片(1010)的亮度分量的部分(1000),圖10b示出了yuv4:2:0格式的圖片(1010)的色度分量(u分量或v分量)的部分(1001)。8×8的cu開始于相對于圖片(1010)的左上角的位置(24,16),并且具有兩個4×8的pu。對于亮度pb,如圖10a所示,第一4×8塊(1020)在(24,16)處具有左上位置,并且第二4×8塊(1030)在(28,16)處具有左上位置。對于第一4×8塊(1020),bv值(1040)表示到第一參考塊(1050)的位移(-18,-14),該第一參考塊包括在范圍[(6,2),…,(9,9)]內(nèi)的采樣值。對于第二4×8塊(1030),bv值(1060)表示到第二參考塊(1070)的位移(-26,-4),該第二參考塊包括在范圍[(2,12),…,(5,19)]內(nèi)的采樣值。第一參考塊(1050)和第二參考塊(1070)的采樣值完全在圖片(1010)的圖片邊界(1011)內(nèi)。
對于相應的色度pb(以因子2水平和垂直向下采樣),如圖10b所示,合并的4×4塊(1031)包括在(12,8)處具有左上位置的相應的第一2×4塊和在(14,8)處具有左上位置的相應的第二2×4塊。對于合并的4×4塊(1031),所導出的bv值(1061)基于第二4×8塊(1030)的bv值(1060),其水平地和垂直地以因子2被縮放。所導出的bv值(1061)表示到參考塊(1071)的位移(-13,-2),該參考塊包括在范圍[(-1,6),…,(2,9)]內(nèi)的采樣值。參考塊(1071)包括未定義的在圖片(1010)的圖片邊界(1011)外部的采樣值。邊界外部的采樣值[(-1,6),…,(-1,9)]在編碼或解碼期間可能不可用,或者它們在編碼或解碼期間可能具有無效的或意外的值。
可替代地,代替對于合并塊使用最底部最右側(cè)亮度pb的bv值,可以以某種其他方式來導出合并塊(包括合并的小色度pb)的單個bv值。例如,合并塊的單個bv值使用最頂部、最左側(cè)亮度pb的bv值來導出?;蛘?,合并塊的單個bv值使用最頂部、最右側(cè)亮度pb的bv值來導出?;蛘?,合并塊的單個bv值使用最底部、最左側(cè)亮度pb的bv值來導出?;蛘?,合并塊的單個bv值被導出作為相應的亮度pb的bv值的分量平均值?;蛘?,合并塊的單個bv值被導出作為相應的亮度pb的bv值的分量中值?;蛘?,合并塊的bv值使用相應的亮度pb的bv值中覆蓋最大區(qū)域的bv值來導出(在覆蓋最大區(qū)域的bv值的發(fā)生并列的情況下,使用在先的選項之一)。
在任何情況下,對于從相應的主分量塊的bv值導出用于合并的次分量塊的單個bv值的任何方式,可能存在單個bv值引用在圖片邊界外部的采樣值的情況。以下部分描述用于處理圖內(nèi)bc預測模式下的合并的次分量塊的邊界外部的采樣值的這種情況的各種方法。
e.通過對bv值施加附加約束來實現(xiàn)的特殊情況處理
當確定要在單元(例如,預測單元)的圖內(nèi)bc預測中使用的bv值時,編碼器可以檢查合并的色度塊(或其他合并的次分量塊)的所導出的bv值指示的參考塊是否包括任何邊界外部的采樣值。如果是,則編碼器不允許bv值導致使用所導出的bv值引用邊界外部的采樣值。也就是說,編碼器可以評估給定的bv值是否導致對于所導出的bv值(基于給定的bv值)引用邊界外部的采樣值,并且如果是,則改變給定的bv值,以避免對于所導出的bv值引用任何邊界外部的采樣值。
為了說明,圖11a示出了來自圖10a的yuv4:2:0格式的圖片(1010)的亮度分量的部分(1000),圖11b示出了來自圖10b的yuv4:2:0格式的圖片(1010)的色度分量(u分量或v分量)的部分(1001)。在確定第二4×8塊(1030)的bv值(1060)(圖10a所示)導致所導出的bv值(1061)引用邊界外部的采樣值(圖10b所示)之后,編碼器確定用于第二4×8塊(1030)的新的bv值(1160)(圖11a所示)。新的bv值表示位移(-24,-4)。對于合并的4×4塊(1031),新的所導出的bv值(1161)基于第二4×8塊(1030)的新的bv值(1160),其水平地和垂直地以因子2被縮放。新的所導出的bv值(1161)表示到新的參考塊(1171)的位移(-12,-2),新的參考塊包括在范圍[(0,6),…,(3,9)]內(nèi)的采樣值。新的參考塊(1171)不再包括在圖片(1010)的圖片邊界(1011)外部的任何采樣值。
在合并的色度塊(或其他合并的次分量塊)的特殊情況處理的第一方法集合中,編碼器選擇性地對單元的bv值施加一個或多個附加約束,使得合并的色度塊(或其他合并的次分量塊)的所導出的bv值不引用在圖片邊界外部的任何采樣值。當確定用于單元的bv值時,編碼器決定該bv值是否要用于導出合并的色度塊的bv值。該決定可以取決于圖片格式(例如,yuv4:2:0或yuv4:2:2對yuv4:4:4)、單元的次分量塊的尺寸(例如,單元將具有或不具有小于色度塊合并的門限尺寸的色度塊)、和單元的位置(例如,單元是cu中的最后一個pu還是cu中的某個其他pu)。如果單元的bv值將用于導出合并的色度塊的bv值,則編碼器評估對bv值的一個或多個附加約束。否則,不評估附加約束。第一方法集合涉及編碼器側(cè)活動,但是可以根據(jù)對允許的bv值的比特流約束來解釋。例如,在一些示例實現(xiàn)中,編碼器對允許的bv值施加的約束被表示為關于bv值的比特流一致性要求。
通常,編碼器考慮對于單元的允許的bv值的基本約束。第vii.e.1節(jié)呈現(xiàn)了在一些示例實現(xiàn)中的基本約束的示例,在確定cu的pu的bv值時,考慮將用于pu的亮度pb的圖內(nèi)bc預測的采樣值(和yuv4:4:4圖片中的色度pb)。編碼器考慮基本約束,而不管色度塊是否被合并。
當色度塊被合并時,編碼器可以考慮對于單元的允許的bv值的附加約束。第vii.e.2和vii.e.3節(jié)呈現(xiàn)了在一些示例實現(xiàn)中的附加約束的示例,在確定yuv4:2:0圖片或yuv4:2:2圖片中的cu的pu的bv值時,考慮將用于包括pu的色度pb之一的合并的色度塊的圖內(nèi)bc預測的采樣值。一般來說,當給定的bv值不僅適用于當前pu,而且也適用于其他pu時,bv檢查處理考慮用于包括當前pu和其他pu的整個區(qū)域的圖內(nèi)bc預測的采樣值。例如,如果cu的第二pu的bv值也適用于cu的第一pu的色度塊的圖內(nèi)bc預測,則當前區(qū)域是整個cu。因此,編碼器檢查對于整個cu都滿足的適用的約束(例如,當前區(qū)域和參考區(qū)域是相同切片的一部分(如果適用),并且是相同的圖塊(如果適用);參考區(qū)域已經(jīng)在時間上被重構(gòu)用于圖內(nèi)bc預測;參考區(qū)域滿足任何類似wpp的約束)。附加約束僅適用于一些pu,如圖12a-12e所示。第vii.e.4節(jié)描述了替代bv導出規(guī)則的附加約束的變型。
1.圖片的pu的基本約束的示例
如第vii.d節(jié)中所解釋的,在圖內(nèi)bc預測的一些示例實現(xiàn)中,cu的每個pu可以具有其自己的bv值。假設當前pu相對于當前圖片的左上位置開始于位置(xpu,ypu)。當前pu的寬度和高度分別為wpu和hpu。當前pu具有當前亮度pb,其與當前pu具有相同的位置和尺寸。當前pu是當前cu的一部分。當前cu的寬度和高度分別為wcu和hcu。ctu尺寸為s。當前cu相對于圖片的左上位置開始于(xcu,ycu)。在當前亮度pb的圖內(nèi)bc預測中使用的bv是(bvx,bvy)。在第vii.b節(jié)中解釋的約束下精確模擬的以下約束適用于當前pu的bv。
第一基本約束。編碼器驗證位置(xpu,ypu)和位置(xpu+bvx,ypu+bvy)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。也就是說,編碼器驗證當前亮度pb的左上位置和參考塊的左上位置是否在相同的切片中,以及是否在相同的圖塊中。如果兩個位置在不同的切片或不同的圖塊中,則第一約束不滿足。
第二基本約束。編碼器驗證位置(xpu,ypu)和位置(xpu+bvx+wpu-1,ypu+bvy+hpu-1)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。也就是說,編碼器驗證當前亮度pb的左上位置和參考塊的右下位置是否在相同的切片中,以及是否在相同的圖塊中。如果兩個位置在不同的切片或不同的圖塊中,則第二約束不滿足。
對于第一和第二約束,如果不使用多個切片,則被檢查的兩個位置必須在相同的切片中,并且不需要檢查用于切片的第一和第二約束,盡管參考塊仍然被約束為在當前圖片內(nèi)。類似地,如果不使用多個圖塊,則被檢查的兩個位置必須在相同的圖塊中,并且不需要檢查用于圖塊的第一和第二約束,盡管參考塊仍然被約束為在當前圖片內(nèi)。當前亮度pb的所有位置都在單個切片和單個圖塊中。如果第一和第二約束滿足,則參考塊的所有位置也在該切片和圖塊中。
第三基本約束。對于第三約束,編碼器驗證以下三個條件之一是否滿足。
第三基本約束的第一條件。編碼器檢查是否(ypu+bvy+hpu-1)/s<ypu/s。也就是說,編碼器計算包括參考塊底部邊緣的ctu行:(ypu+bvy+hpu-1)/s<ypu/s。編碼器還計算包括當前亮度pb的頂部邊緣的ctu行:ypu/s。然后,編碼器檢查包括參考塊的底部邊緣的ctu行是否在包括當前亮度pb的頂部邊緣的ctu行上方。如果是,則參考塊必然包括先前重構(gòu)的采樣值,至少當wpp未被啟用時。
第三基本約束的第二條件。當(ypu+bvy+hpu-1)/s==y(tǒng)pu/s時,編碼器檢查是否(xpu+bvx+wpu-1)/s<xpu/s。也就是說,如果包括參考塊的底部邊緣的ctu行等于包括當前亮度pb的頂部邊緣的ctu行(同一ctu行),則編碼器計算(a)包括參考塊的右側(cè)邊緣的ctu列((xpu+bvx+wpu-1)/s),以及(b)包括當前亮度pb的左側(cè)邊緣的ctu列(xpu/s)。然后,編碼器檢查包括參考塊的右側(cè)邊緣的ctu列是否在包括當前亮度pb的左側(cè)邊緣的ctu列的左側(cè)。如果是,則參考塊必然包括先前重構(gòu)的采樣值。
第三基本約束的第三條件(如果允許來自當前cu內(nèi)的預測)。如果允許來自當前cu內(nèi)的預測,則第三條件適用。當(ypu+bvy+hpu-1)/s==y(tǒng)pu/s并且(xpu+bvx+wpu-1)/s==xpu/s時,編碼器檢查位置(xpu+bvx+wpu-1,ypu+bvy+hpu-1)的z掃描順序是否小于位置(xpu,ypu)的z掃描順序。也就是說,如果包括參考塊的底部邊緣的ctu行等于包括當前亮度pb的頂部邊緣的ctu行(同一ctu行),并且如果包括參考塊的右側(cè)邊緣的ctu列等于包括當前亮度pb的左側(cè)邊緣的ctu列(同一ctu列),則編碼器檢查參考塊的右下位置在z掃描順序方面是否早于當前亮度pb的左上位置。如果是,則包含參考塊的右下位置的塊已經(jīng)被預先重構(gòu)(并且參考塊的其余部分也是如此)。編碼器還可以檢查偏移值是否滿足條件bvx+wpu≤0以及bvy+hpu≤0中的至少一個,以確保參考區(qū)域不與當前區(qū)域交疊。
第四基本約束。在一些示例實現(xiàn)中,當wpp被啟用時,編碼器檢查第四基本約束。在其他示例實現(xiàn)中,編碼器檢查第四基本約束,而不管wpp是否被啟用。對于第四基本約束,編碼器驗證(xpu+bvx+wpu-1)/s-xpu/s<=y(tǒng)pu/s-(ypu+bvy+hpu-1)/s。也就是說,編碼器計算包括參考塊的右側(cè)邊緣的ctu列與包括當前亮度pb的左側(cè)邊緣的ctu列之間的差值:(xpu+bvx+wpu-1)/s-xpu/s。編碼器還計算包括當前亮度pb的頂部邊緣的ctu行與包括參考塊的底部邊緣的ctu行之間的差值:ypu/s-(ypu+bvy+hpu-1)/s。編碼器驗證第一差值(在ctu列之間)小于或等于第二差值(在ctu行之間)。更一般地,從參考塊到當前亮度pb的水平位移值被約束為小于或等于從當前亮度pb到參考塊的垂直位移值。這驗證了參考塊是要被保證在wpp被啟用時可用于預測的重構(gòu)內(nèi)容的一部分,其是最經(jīng)常產(chǎn)生良好bv值的重構(gòu)內(nèi)容的一部分。
如第vii.d節(jié)所述,在圖內(nèi)bc預測的一些示例實現(xiàn)中,出于圖內(nèi)bc預測的目的,合并小于門限尺寸4×4的色度pb。第vii.e.2和vii.e.3節(jié)呈現(xiàn)了在色度pb小于門限尺寸的情況下編碼器在確定yuv4:2:0圖片或yuv4:2:2圖片中的cu的pu的bv值時可以考慮的附加約束的示例。如果色度pb不小于門限尺寸(例如,由于圖片的格式為yuv4:4:4,或者由于cu大于8×8,或者由于cu的pu模式是2n×2n),則編碼器不需要考慮附加約束。
2.yuv4:2:0圖片中的一些pu的附加約束的示例
圖12a至12c示出了yuv4:2:0格式的圖片的8×8的cu的各種尺寸的pu。在圖12a中,pu模式是n×2n。圖12a示出了8×8的cu的兩個4×8的pu(1201)。當導出整個8×8的cu的合并的色度pb的bv值時,使用第二4×8的pu的bv值。因此,第二4×8的pu的bv值受到附加約束。當當前pu的索引為1(即,對于第二4×8的pu)時,編碼器考慮本節(jié)中提出的附加約束。
在圖12b中,pu模式是2n×n。圖12b示出了8×8的cu的兩個8×4的pu(1202)。當導出整個8×8的cu的合并的色度pb的bv值時,使用第二8×4的pu的bv值。因此,第二8×4的pu的bv值受到附加約束。當當前pu的索引為1(即,對于第二8×4的pu)時,編碼器考慮本節(jié)中提出的附加約束。
在圖12c中,pu模式是n×n。圖12c示出了8×8的cu的四個4×4的pu(1203)。當導出整個8×8的cu的合并的色度pb的bv值時,使用第四4×4的pu的bv值。因此,第四4×4的pu的bv值受到附加約束。當當前pu的索引為3(即,對于第四4×4的pu)時,編碼器考慮本節(jié)中提出的附加約束。
除了用“cu”替換“pu”之外,以下附加約束與第vii.e.1節(jié)中給出的基本約束相同。
第一附加約束。編碼器驗證位置(xcu,ycu)和位置(xcu+bvx,ycu+bvy)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。也就是說,編碼器驗證當前區(qū)域(當前cu)的左上位置和參考區(qū)域的左上位置是否在相同的切片中,以及是否在相同的圖塊中。如果兩個位置在不同的切片或不同的圖塊中,則第一約束不滿足。
第二附加約束。編碼器驗證位置(xcu,ycu)和位置(xcu+bvx+wcu-1,ycu+bvy+hcu-1)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。也就是說,編碼器驗證當前區(qū)域(當前cu)的左上位置和參考區(qū)域的右下位置是否在相同的切片中,以及是否在相同的圖塊中。如果兩個位置在不同的切片或不同的圖塊中,則第二約束不滿足。
對于第一和第二約束,如果不使用多個切片,則被檢查的兩個位置必須在相同的切片中,并且不需要檢查切片的第一和第二約束,盡管參考區(qū)域仍然被約束為在當前圖片內(nèi)。類似地,如果不使用多個圖塊,則被檢查的兩個位置必須在相同的圖塊中,并且不需要檢查圖塊的第一和第二約束,盡管參考區(qū)域仍被約束為在當前圖片內(nèi)。當前區(qū)域(當前cu)的所有位置都在單個切片和單個圖塊中。如果第一和第二約束滿足,則參考區(qū)域的所有位置也在該切片和圖塊中。
第三附加約束。對于第三約束,編碼器驗證以下三個條件之一是否滿足。
第三附加約束的第一條件。編碼器檢查是否(ycu+bvy+hcu-1)/s<ycu/s。也就是說,編碼器計算包括參考區(qū)域的底部邊緣的ctu行:(ycu+bvy+hcu-1)/s。編碼器還計算包括當前區(qū)域的頂部邊緣的ctu行:ycu/s。然后,編碼器檢查包括參考區(qū)域的底部邊緣的ctu行是否在包括當前區(qū)域的頂部邊緣的ctu行上方。如果是,則參考區(qū)域必然包括先前重構(gòu)的采樣值,至少當wpp未被啟用時。
第三附加約束的第二條件。當(ycu+bvy+hcu-1)/s==y(tǒng)cu/s時,編碼器檢查是否(xcu+bvx+wcu-1)/s<xcu/s。也就是說,如果包括參考區(qū)域的底部邊緣的ctu行等于包括當前區(qū)域的頂部邊緣的ctu行(同一ctu行),則編碼器計算(a)包括參考區(qū)域的右側(cè)邊緣的ctu列((xcu+bvx+wcu-1)/s),以及(b)包括當前區(qū)域的左側(cè)邊緣的ctu列(xcu/s)。然后,編碼器檢查包括參考區(qū)域的右側(cè)邊緣的ctu列是否在包括當前區(qū)域的左側(cè)邊緣的ctu列的左側(cè)。如果是,則參考區(qū)域必然包括先前重構(gòu)的采樣值。
第三附加約束的第三條件(如果允許來自當前cu內(nèi)的預測)。如果允許來自當前cu內(nèi)的預測,則第三條件適用。當(ycu+bvy+hcu-1)/s==y(tǒng)cu/s并且(xcu+bvx+wcu-1)/s==xcu/s時,編碼器檢查位置(xcu+bvx+wcu-1,ycu+bvy+hcu-1)的z掃描順序是否小于位置(xcu,ycu)的z掃描順序。也就是說,如果包括參考區(qū)域的底部邊緣的ctu行等于包括當前區(qū)域的頂部邊緣的ctu行(同一ctu行),并且如果包括參考區(qū)域的右側(cè)邊緣的ctu列等于包括當前區(qū)域的左側(cè)邊緣的ctu列(同一ctu列),則編碼器檢查參考區(qū)域的右下位置在z掃描順序方面是否早于當前區(qū)域的左上位置。如果是,則包含參考區(qū)域的右下位置的塊已經(jīng)被預先重構(gòu)(并且參考區(qū)域的其余部分也是如此)。
第四附加約束。在一些示例實現(xiàn)中,當wpp被啟用時,編碼器檢查第四附加約束。在其他示例實現(xiàn)中,編碼器檢查第四附加約束,而不管wpp是否被啟用。對于第四附加約束,編碼器驗證是否(xcu+bvx+wcu-1)/s-xcu/s<=y(tǒng)cu/s-(ycu+bvy+hcu-1)/s。也就是說,編碼器計算包括參考區(qū)域的右側(cè)邊緣的ctu列與包括當前區(qū)域的左側(cè)邊緣的ctu列之間的差值:(xcu+bvx+wcu-1)/s-xcu/s。編碼器還計算包括當前區(qū)域的頂部邊緣的ctu行與包括參考區(qū)域的底部邊緣的ctu行之間的差值:ycu/s-(ycu+bvy+hcu-1)/s。編碼器驗證第一差值(在ctu列之間)小于或等于第二差值(在ctu行之間)。更一般地,從參考區(qū)域到當前區(qū)域的水平位移值被限制為小于或等于從當前區(qū)域到參考區(qū)域的垂直位移值。這驗證了參考區(qū)域是要被保證在wpp被啟用時可用于預測的重構(gòu)內(nèi)容的一部分,其是最經(jīng)常產(chǎn)生良好bv值的重構(gòu)內(nèi)容的一部分。
3.yuv4:2:2圖片中用于一些pu的附加約束的示例
圖12d和12e示出了yuv4:2:2格式的圖片的8×8的cu的各種尺寸的pu。在圖12d中,pu模式為n×2n。圖12d示出了8×8的cu的兩個4×8的pu(1204)。當導出整個8×8的cu的合并的色度pb的bv值時,使用第二4×8的pu的bv值。因此,第二4×8的pu的bv值受到附加約束。當當前pu的索引為1(即,對于第二4×8的pu)時,編碼器考慮與第vii.e.2節(jié)中給出的附加約束相同的附加約束。
在圖12e中,pu模式為n×n。圖12e示出了8×8的cu的四個4×4的pu(1205)。當導出合并色度pb的bv值時,使用第二4×4的pu和第四4×4的pu的bv值。因此,第二4×4的pu和第四4×4的pu的bv值受到附加約束。當當前pu的索引為1(即,對于第二4×4的pu)時,將第一4×4的pu和第二4×4的pu的色度pb合并用于圖內(nèi)bc預測。編碼器考慮以下附加約束,其類似于第vii.e.2節(jié)中所述的約束,但是被修改為將當前cu的上半部分作為當前區(qū)域進行檢查。(高度hcu被替換為高度hcu/2)
第一附加約束與第vii.e.2節(jié)中呈現(xiàn)的第一附加約束相同。編碼器驗證位置(xcu,ycu)和位置(xcu+bvx,ycu+bvy)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。修改第二附加約束以將當前cu的上半部分作為當前區(qū)域來關注。編碼器驗證位置(xcu,ycu)和位置(xcu+bvx+wcu-1,ycu+bvy+(hcu/2)-1)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。對于第三附加約束,編碼器驗證以下三個條件之一是否滿足:
(1)(ycu+bvy+(hcu/2)-1)/s<ycu/s(在ctu行以上);
(2)當(ycu+bvy+(hcu/2)-1)/s==y(tǒng)cu/s時,則(xcu+bvx+wcu-1)/s<xcu/s(同一ctu行,但是左側(cè)ctu列);或者
(3)當(ycu+bvy+(hcu/2)-1)/s==y(tǒng)cu/s并且(xcu+bvx+wcu-1)/s==xcu/s時,位置(xcu+bvx+wcu-1,ycu+bvy+(hcu/2)-1)的z掃描順序小于位置(xcu,ycu)的z掃描順序。
對于第四附加約束,編碼器驗證是否(xcu+bvx+wcu-1)/s-xcu/s<=y(tǒng)cu/s-(ycu+bvy+(hcu/2)-1)/s。
在圖12e的示例(yuv4:2:2格式的圖片的8×8的cu的n×n模式)中,當當前pu的索引為3(即第四4×4的pu)時,第三4×4的pu和第四4×4的pu的色度pb被合并用于圖內(nèi)bc預測。編碼器考慮以下附加約束,其類似于第vii.e.2節(jié)中所述的約束,但是被修改為將當前cu的下半部分作為當前區(qū)域進行檢查。
修改第一和第二附加約束以將當前cu的下半部分作為當前區(qū)域來關注。對于第一附加約束,編碼器驗證位置(xcu,ycu+(hcu/2))和位置(xcu+bvx,ycu+(hcu/2)+bvy)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。對于第二附加約束,編碼器驗證位置(xcu,ycu+(hcu/2))和位置(xcu+bvx+wcu-1,ycu+(hcu/2)+bvy+(hcu/2)-1)是否在相同的切片中(如果適用),以及是否在相同的圖塊中(如果適用)。對于第三附加約束,編碼器驗證以下三個條件之一是否滿足:
(1)(ycu+(hcu/2)+bvy+(hcu/2)-1)/s<(ycu+(hcu/2))/s(ctu行以上)
(2)當(ycu+(hcu/2)+bvy+(hcu/2)-1)/s==(ycu+(hcu/2))/s時,則(xcu+bvx+wcu-1)/s<xcu/s(同一ctu行,但是左側(cè)ctu列);或者
(3)當(ycu+(hcu/2)+bvy+(hcu/2)-1)/s==(ycu+(hcu/2))/s并且(xcu+bvx+wcu-1)/s==xcu/s時,位置(xcu+bvx+wcu-1,ycu+(hcu/2)+bvy+(hcu/2)-1)的z掃描順序小于位置(xcu,ycu)的z掃描順序(或者,如果允許來自當前cu內(nèi)的預測,則小于位置(xcu,ycu+(hcu/2))的z掃描順序)。
對于第四附加約束,編碼器驗證是否(xcu+bvx+wcu-1)/s-xcu/s<=(ycu+(hcu/2))/s-(ycu+(hcu/2)+bvy+(hcu/2)-1)/s。
4.適應其他導出規(guī)則
對于在第vii.e.2和vii.e.3節(jié)中描述的附加約束,當導出合并的色度塊的bv值時,編碼器使用最底部最右側(cè)pu的bv值。如果使用另一導出規(guī)則,則可以相應地修改附加約束。
例如,假設當導出合并的色度塊的bv值時,編碼器使用最頂部最右側(cè)pu的bv值。對圖12a的示例中的第一4×8的pu(對于yuv4:2:0圖片中具有pu的n×2n模式的8×8的cu的當前pu,索引等于0)、對于圖12b的示例中的第一8×4的pu(對于yuv4:2:0圖片中具有pu的2n×n模式的8×8的cu的當前pu,索引等于0)、對于圖12c的示例中的第一4×4的pu(對于yuv4:2:0圖片中具有pu的n×n模式的8×8的cu的當前pu,索引等于0)、或者對于圖12d的示例中的第一4×8的pu(對于yuv4:2:2圖片中具有n×2n模式的pu的8×8的cu的當前pu,索引等于0),編碼器執(zhí)行附加約束。在這些情況下,被檢查附加約束的當前區(qū)域仍然是整個cu。編碼器對圖12e的示例中的第一和第三4×4的pu執(zhí)行附加約束(對于yuv4:2:2圖片中具有n×n模式的pu的8×8的cu的當前pu,索引等于0或2)。在這種情況下,被檢查附加約束的當前區(qū)域仍然是cu的上半部分(對于第一和第二4×4的pu)或cu的下半部分(對于第二和第三4×4的pu)。
更一般地,對于給定的導出規(guī)則和色度塊的合并規(guī)則,編碼器應用附加約束來檢查相應的單元的整個區(qū)域的圖內(nèi)bc預測不引用邊界外部的采樣值。
f.通過剪切導出的bv來實現(xiàn)的特殊情況處理
在第二方法集合中,編碼器剪接引用邊界外部的采樣值的所導出的bv值,使得新的剪切的bv值不再引用任何邊界外部的采樣值。例如,編碼器檢查初始的導出的bv值是否引用邊界外部的采樣值。如果是,則編碼器剪切所導出的bv值。在解碼期間,相應的解碼器可以執(zhí)行類似的剪切操作。
為了說明,圖13示出了來自圖10b的yuv4:2:0格式的圖片(1010)的色度分量(u分量或v分量)的部分(1001)。編碼器檢查合并的4×4塊(1031)的所導出的bv值(1061)(如圖10b所示)。在確定所導出的bv值(1061)引用邊界外部的采樣值(如圖10b所示)之后,編碼器剪切所導出的bv值(1061)以確定新的、剪切后的bv值(1361)(如圖13所示)。剪切后的所導出的bv值表示到新的參考塊(1371)的位移(-12,-2),該新的參考塊包括在范圍[(0,6),…,(3,9)]內(nèi)的采樣值。新的參考塊(1371)不再包括在圖片(1010)的圖片邊界(1011)外部的任何采樣值。
例如,假設整個合并的色度塊的導出的bv為(dbvx,dbvy),則合并的色度塊開始于(xcb,ycb),合并的色度塊的尺寸為(wcb,hcb),圖片的色度分量的尺寸(在色度采樣中)為(wchroma_comp,hchroma_comp)。所導出的bv被選擇性地修改如下:
如果xcb+dbvx<0,則dbvx=-xcb。
如果xcb+dbvx+wcb>=wchroma_comp,則dbvx=wchroma_comp-xcb-wcb。
如果ycb+dbvy<0,則dbvy=-ycb。
如果ycb+dbvy+hcb>=hchroma_comp,則dbvy=hchroma_comp-ycb-hcb。
在第一比較中,編碼器或解碼器檢查所導出的bv值的水平分量是否引用在圖片的左側(cè)邊界左側(cè)的任何位置。如果是,則所導出的bv值的水平分量被剪切以在圖片的左側(cè)邊界處結(jié)束。在第二比較中,編碼器或解碼器檢查所導出的bv值的水平分量是否引用在圖片的右側(cè)邊界右側(cè)的任何位置。如果是,則所導出的bv值的水平分量被剪切以在圖片的右側(cè)邊界結(jié)束。在第三比較中,編碼器或解碼器檢查所導出的bv值的垂直分量是否引用在圖片的頂部邊界上方的任何位置。如果是,則所導出的bv值的垂直分量被剪切以在圖片的頂部邊界處結(jié)束。最后,在第四比較中,編碼器或解碼器檢查所導出的bv值的垂直分量是否引用在圖片的底部邊界下方的任何位置。如果是,則所導出的bv值的垂直分量被剪切以在圖片的底部邊界處結(jié)束。因此,分別地檢查水平和垂直分量。
取決于在確定所導出的bv值時使用的導出規(guī)則,一些比較可能不適用。例如,如果通過縮放最底部最右側(cè)pu的bv值來確定所導出的bv值,則編碼器或解碼器不需要進行第二和第四比較?;蛘?,如果通過縮放最頂部最左側(cè)pu的bv值來確定所導出的bv值,則編碼器或解碼器不需要進行第一和第三比較。
前述示例涉及在圖片邊界處的所導出的bv值的剪裁。可替代地,所導出的bv值在切片邊界和/或圖塊邊界處被裁剪。例如,假設整個合并的色度塊的所導出bv為(dbvx,dbvy),合并的色度塊開始于(xcb,ycb),合并的色度塊的尺寸為(wcb,hcb)。內(nèi)部偏移值(xrelative,yrelative)指示相對于合并的色度塊的起始位置的色度塊的起始位置,該色度塊的單元提供在確定所導出的bv值時使用的bv值。例如,在yuv4:2:0圖片中,當n×n的8×8的cu的第四4×4的pu提供bv值時,內(nèi)部偏移值(xrelative,yrelative)為(2,2)。或者,作為另一示例,在yuv4:2:0圖片中,當2n×n的8×8的cu的第二8×4的pu提供bv值時,內(nèi)部偏移值(xrelative,yrelative)為(0,2)。所導出的bv被選擇性地修改如下。如果((xcb+dbvx,ycb+dbvy)和(xcb,ycb)在不同的切片或不同的圖塊中,則如果需要將兩個位置放在相同的切片或圖塊中,則dbvx=dbvx+xrelative;如果需要將兩個位置放在相同的切片或圖塊中,則dbvy=dbvy+yrelative。以這種方式,所導出的bv值的水平分量和/或垂直分量被剪切以避免在當前切片或圖塊外部的引用。如果通過縮放最底部最右側(cè)pu的bv值來確定所導出的bv值,則本段中描述的調(diào)節(jié)將起作用。對于另一導出規(guī)則,相應地修改調(diào)節(jié)。
g.通過在邊界處填充采樣值來實現(xiàn)的特殊情況處理
在第三方法集合中,編碼器根據(jù)需要填充遠離圖片邊界的采樣值,以提供邊界外部的采樣值用于圖內(nèi)bc預測。或者,編碼器根據(jù)需要使用默認采樣值以提供邊界外部采樣值用于圖內(nèi)bc預測。在圖內(nèi)bc預測期間,編碼器標識對邊界外部的采樣值的引用。編碼器使用來自最接近的邊界位置的采樣值或默認采樣值來替換邊界外部的采樣值。在解碼期間,相應的解碼器可以在圖內(nèi)bc預測期間執(zhí)行類似的操作,以使用來自最接近的邊界位置的采樣值或默認采樣值來替換邊界外部的采樣值。
為了說明,圖14示出了來自圖10b的yuv4:2:0格式的圖片(1010)的色度分量(u分量或v分量)的部分(1001)。編碼器確定所導出的bv值(1061)引用參考塊(1071)(圖10b所示)中的邊界外部的采樣值。編碼器使用在圖片邊界(1011)外部的推測的采樣值(1470)(圖14所示)來替換邊界外部的采樣值。對于在范圍[(-1,6),…,(-1,9)]內(nèi)的推測的采樣值(1470),在范圍[(0,6),…,(0,9)]內(nèi)的采樣值被重復,如圖14所示。
例如,假設圖片的色度分量的尺寸(在色度采樣中)為(wchroma_comp,hchroma_comp),并且假設參考區(qū)域中的參考采樣值的位置為(xref,yref)。當最接近的邊界位置的采樣值(根據(jù)簡單的水平或垂直推測)用于填充時,在圖內(nèi)bc預測期間使用的位置如下選擇性地修改。
如果xref<0,則xref=0。
如果xref>=wchroma_comp,則xref=wchroma_comp-1。
如果yref<0,則yref=0。
如果yref>=hchroma_comp,則yref=hchroma_comp-1。
在第一比較中,編碼器或解碼器檢查參考采樣值是否在圖片的左側(cè)邊界的左側(cè)。如果是,則在圖片的左側(cè)邊界處并且在同一行中的采樣值被用于圖內(nèi)bc預測。在第二比較中,編碼器或解碼器檢查參考采樣值是否在圖片的右側(cè)邊界的右側(cè)。如果是,則在圖片的右側(cè)邊界處并且在同一行中的采樣值被用于圖內(nèi)bc預測。在第三比較中,編碼器或解碼器檢查參考采樣值是否在圖片的頂部邊界上方。如果是,則在圖片的頂部邊界處并且在同一列中的采樣值被用于圖內(nèi)bc預測。最后,在第四比較中,編碼器或解碼器檢查參考采樣值是否在圖片的底部邊界下方。如果是,則在圖片的底部邊界處并且在同一列中的采樣值被用于圖內(nèi)bc預測??商娲兀幋a器或解碼器使用另一填充規(guī)則(例如,在邊界處或在邊界內(nèi)的多個采樣值的線性組合)。
取決于在確定所導出的bv值時使用的導出規(guī)則,一些比較可能不適用。例如,如果通過縮放最底部最右側(cè)pu的bv值來確定所導出的bv值,則編碼器或解碼器不需要進行第二和第四比較?;蛘?,如果通過縮放最頂部最左側(cè)pu的bv值來確定所導出的bv值,則編碼器或解碼器不需要進行第一和第三比較。
當邊界外部的采樣值被替換為默認采樣值時,默認采樣值可以是可能值范圍的中間值。例如,如果位深度為bd,則默認采樣值為1<<(bd-1)??商娲?,默認采樣值具有某個其他被定義的值。
前述示例涉及在圖片邊界外部替換邊界外部的采樣值。可替代的,在切片邊界和/或圖塊邊界外部的邊界外部的采樣值被替換。例如,邊界外部的采樣值被替換為沿著切片邊界和/或圖塊邊界在最近的位置處的采樣值?;蛘?,邊界外部的采樣值被替換為默認采樣值。
h.通過評估不同的所導出的bv值直到找到適當?shù)乃鶎С龅腷v值來實現(xiàn)的特殊情況處理
在第四方法集合中,當導出合并的色度塊的bv值時,編碼器評估多個候選bv值,直到找到合適的所導出的bv值(即,不引用任何在邊界外部的采樣值用于圖內(nèi)bc預測的bv值)??梢园凑諆?yōu)先級順序依次地評估多個候選bv值。如果候選bv值都不合適,則編碼器可以使用另一種特殊情況處理方法(例如,對優(yōu)先級順序中的第一候選bv值執(zhí)行附加約束、剪切優(yōu)先級順序中的第一候選bv值、填充)。在解碼期間,相應的解碼器可以在導出合并的色度塊的bv值時執(zhí)行類似的操作,以按照優(yōu)先級順序依次地評估多個候選bv值。如果候選bv值都不合適,則解碼器可以使用由編碼器使用的另一種特殊情況處理方法(例如,剪切優(yōu)先級順序中的第一候選bv值、填充)。
例如,優(yōu)先級順序?qū)u的pu的bv值排序,用于在導出合并的色度塊的單個bv值時使用。一個優(yōu)先級順序是以下各項的bv值:(1)最底部最右側(cè)pu,(2)最底部最左側(cè)pu,(3)最頂部最右側(cè)pu,和(4)最頂部最左側(cè)pu。另一優(yōu)先級順序是以下各項的bv值:(1)最頂部最左側(cè)pu,(2)最頂部最右側(cè)pu,(3)最底部最左側(cè)pu,和(4)最底部最右側(cè)pu。可替代地,優(yōu)先級順序包括其他和/或附加選項,諸如cu的pu的bv值的分量中值或cu的pu的bv值的分量平均值?;蛘?,優(yōu)先級順序可以偏好cu的pu的bv值中最常見的bv值,其“覆蓋”cu的最大面積。
在編碼或解碼期間,按照優(yōu)先級順序依次評估用于在導出合并的色度塊的單個bv值時使用的候選bv值,直到找到合適的bv值。也就是說,評估按照優(yōu)先級順序的第一候選bv值。如果按照優(yōu)先級順序的第一候選bv值不合適(導致對所導出的bv值的邊界外部的采樣值的引用),則評估按照優(yōu)先級順序的第二候選bv值,等等。編碼器和解碼器使用相同的優(yōu)先級順序。
i.通常情況下,合并的次分量塊的特殊情況處理
圖15示出了用于使用圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次塊)的特殊情況處理的編碼的通用技術(1500)。媒體編碼器(諸如參考圖3描述的視頻編碼器(340))、參照圖5a和5b描述的視頻編碼器(500)、或其他編碼器可以執(zhí)行該技術(1500)。
編碼器對圖片進行編碼(1510)以產(chǎn)生編碼數(shù)據(jù)并且輸出(1520)編碼數(shù)據(jù)。編碼(1510)包括圖片的相鄰單元集合的圖內(nèi)bc預測。例如,相鄰單元集合中的每個單元是預測單元,并且相鄰單元集合是單個編碼單元的預測單元集合??商娲?,相鄰單元是介質(zhì)的某種其他類型的單元。
出于圖內(nèi)bc預測的目的,編碼器可以合并次分量塊(例如,色度塊)。具體地,編碼器取決于各種因素(諸如圖片格式和單元的次分量塊的尺寸)來選擇性地合并次分量塊用于圖內(nèi)bc預測的目的。例如,編碼器確定圖片格式和單元的次分量塊的尺寸。如果圖片格式為yuv4:2:0或yuv4:2:2(但不是yuv4:4:4),并且如果單元的次分量塊的尺寸低于門限尺寸,則編碼器選擇性地合并次分量塊用于圖內(nèi)bc預測的目的。因此,如第vii.e部分中進一步詳細描述的,小的次分量塊(在門限尺寸以下)可以被合并成用于圖內(nèi)bc預測的較大塊。否則,編碼器不合并次分量塊用于圖內(nèi)bc預測的目的。
當次分量塊不被合并作為圖內(nèi)bc預測的一部分時(例如,因為圖形格式為yuv4:4:4或者單元的次分量塊的尺寸大于門限尺寸),則編碼器對主分量塊(例如,亮度塊)和次分量塊(例如,色度塊)使用相同的bv值。例如,對于給定的相鄰單元集合中的每個單元,編碼器使用與單元相關聯(lián)的bv值來執(zhí)行單元的主分量塊和次分量塊的圖內(nèi)bc預測。
另一方面,當次分量塊被合并作為圖內(nèi)bc預測的一部分時(例如,因為圖片格式為yuv4:2:0或4:2:2,并且單元的次分量塊的尺寸為小于門限尺寸),對于相鄰單元集合中的每個單元,編碼器使用與單元相關聯(lián)的bv值來執(zhí)行單元的主分量塊(例如,亮度塊)的圖內(nèi)bc預測。編碼器至少部分基于與相鄰單元相關聯(lián)的一個或多個bv值來導出相鄰單元集合的次分量塊(例如,色度塊)的bv值。然后,編碼器使用所導出的bv值來執(zhí)行次分量塊的圖內(nèi)bc預測,其中次分量塊中的相鄰塊被合并用于圖內(nèi)bc預測的目的。編碼(1510)包括對于所導出的bv值(對于合并的次分量塊)的任何值引用在邊界外部的采樣值的特殊情況處理,邊界可以是圖片邊界、切片邊界或圖塊邊界。
在用于特殊情況處理的第一方法集合中,當編碼器在bv估計期間確定與相鄰單元相關聯(lián)的bv值時,編碼器對bv值中的給定的bv值施加一個或多個約束,使得所導出bv值不引用在邊界外部的任何采樣值。例如,假設主分量塊為相鄰單元集合定義當前區(qū)域,并且給定的bv值指示相鄰單元集合的參考區(qū)域。一個或多個約束確保參考區(qū)域中的采樣值不在邊界外部。第vii.e.2至vii.e.4節(jié)描述了約束(“附加約束”)的示例。可替代地,編碼器考慮其他和/或附加約束。取決于相鄰單元的尺寸和圖片的色度采樣率,編碼器可以對于相鄰單元集合的子集施加約束。例如,如第vii.e.2至vii.e.4節(jié)所述,編碼器對所選擇的預測單元施加約束。由編碼器對允許的bv值施加的約束可以被表示為對于比特流中的編碼數(shù)據(jù)中的bv值的比特流一致性要求。
在用于特殊情況處理的第二方法集合中,如果所導出的bv值引用在邊界外部的任何采樣值,則編碼器剪切所導出的bv值。新的剪切的bv值僅引用在邊界處或在其內(nèi)的采樣值。例如,編碼器根據(jù)第vii.f節(jié)中描述的方法來剪切邊界??商娲?,編碼器使用另一種方法來選擇性地剪切所導出的bv值。
在用于特殊情況處理的第三方法集合中,當所導出的bv值引用在邊界外部的采樣值時,編碼器填充遠離邊界的采樣值,或者使用默認采樣值。例如,編碼器根據(jù)第vii.g部分中描述的方法替換邊界外部的采樣值?;蛘?,編碼器使用另一種方法來替換邊界外部的采樣值。
在用于特殊情況處理的第四方法集合中,當編碼器在bv估計期間確定與相鄰單元相關聯(lián)的bv值時,編碼器根據(jù)優(yōu)先級順序來評估用于導出用于合并的次分量塊的單個bv值的不同候選bv值,直到所導出的bv值不引用在邊界外部的任何采樣值。例如,編碼器根據(jù)第vii.h節(jié)中描述的方法來評估候選bv值?;蛘撸幋a器使用另一種方法來評估候選bv值。
圖16示出了用于使用圖內(nèi)bc預測模式下的合并的色度塊(或其他合并的次分量塊)的特殊情況處理的解碼的通用技術(1600)。媒體解碼器(諸如參考圖4描述的視頻解碼器(450))、參考圖6描述的視頻解碼器(600)、或其他解碼器可以執(zhí)行該技術(1600)。
解碼器接收(1610)編碼數(shù)據(jù)并使用編碼數(shù)據(jù)對圖片進行解碼(1620)。解碼(1620)包括圖片的相鄰單元集合的圖內(nèi)bc預測。例如,相鄰單元集合中的每個單元是預測單元,并且相鄰單元集合是單個編碼單元的預測單元集合??商娲?,相鄰單元是介質(zhì)的某種其他類型的單元。
解碼器可以合并次分量塊(例如,色度塊)用于圖內(nèi)bc預測的目的。具體地,解碼器取決于各種因素(諸如圖片格式和單元的次分量塊的尺寸)來選擇性地合并次分量塊用于圖內(nèi)bc預測的目的。例如,解碼器確定圖片格式和單元的次分量塊的尺寸。如果圖片格式為yuv4:2:0或yuv4:2:2(但不是yuv4:4:4),并且如果次分量塊的尺寸的單元低于門限尺寸,則解碼器選擇性地合并次分量塊用于圖內(nèi)bc預測的目的。因此,如第vii.e部分中進一步詳細描述的,小的次分量塊(門限尺寸以下)可以被合并成用于圖內(nèi)bc預測的較大塊。否則,解碼器不合并次分量塊用于圖內(nèi)bc預測的目的。
當次部件塊不被合并作為圖內(nèi)bc預測的一部分時(例如,因為圖形格式為yuv4:4:4或者單元的次分量塊的尺寸大于門限尺寸),解碼器對于主分量塊(例如,亮度塊)和次分量塊(例如,色度塊)使用相同的bv值。例如,對于給定的相鄰單元集合中的每個單元,解碼器使用與單元相關聯(lián)的bv值來執(zhí)行單元的主分量塊和單元的次分量塊的圖內(nèi)bc預測。
另一方面,當次分量塊被合并作為圖內(nèi)bc預測的一部分時(例如,因為圖片格式為yuv4:2:0或4:2:2,并且次分量塊的尺寸單元小于門限尺寸),對于相鄰單元集合中的每個單元,解碼器使用與單元相關聯(lián)的bv值來執(zhí)行單元的主分量塊(例如,亮度塊)的圖內(nèi)bc預測。解碼器至少部分基于與相鄰單元相關聯(lián)的一個或多個bv值來導出相鄰單元集合的次分量塊(例如,色度塊)的bv值。然后,解碼器使用所導出的bv值來執(zhí)行次分量塊的圖內(nèi)bc預測,其中次分量塊中的相鄰塊被合并用于圖內(nèi)bc預測的目的。解碼(1610)包括用于所導出的bv值(用于合并的次分量塊)的任何值引用在邊界外部的采樣值的特殊情況處理,邊界可以是圖片邊界、切片邊界或圖塊邊界。
在用于特殊情況處理的第一方法集合中,根據(jù)比特流一致性要求,bv值中的給定bv值被約束,使得所導出的bv值不引用在邊界外部的任何采樣值。例如,假設主分量塊為相鄰單元集合定義當前區(qū)域,并且給定的bv值指示相鄰單元集合的參考區(qū)域。一個或多個約束確保參考區(qū)域中的采樣值不在邊界外部。第vii.e.2至vii.e.4節(jié)描述約束(“附加約束”)的示例??商娲?,施加其他和/或附加約束。取決于相鄰單元的尺寸和圖片的色度采樣率,可以對相鄰單元集合的子集施加約束。例如,如第vii.e.2至vii.e.4節(jié)所述,對所選擇的預測單元施加約束。約束可以被表示為對于比特流中的編碼數(shù)據(jù)中的bv值的比特流一致性要求。
在用于特殊情況處理的第二方法集合中,如果所導出的bv值引用在邊界外部的任何采樣值,則解碼器剪切所導出的bv值。新的剪切的bv值僅引用在邊界處或在其內(nèi)的采樣值。例如,解碼器根據(jù)第vii.f節(jié)中描述的方法來剪輯邊界??商娲?,解碼器使用另一種方法來選擇性地剪切所導出的bv值。
在用于特殊情況處理的第三方法集合中,當所導出的bv值引用在邊界外部的采樣值時,解碼器填充遠離邊界的采樣值,或者使用默認采樣值。例如,解碼器根據(jù)第vii.g部分中描述的方法替換邊界外部的采樣值??商娲兀獯a器使用另一種方法來替換邊界外部的采樣值。
在用于特殊情況處理的第四方法集合中,當解碼器重構(gòu)與相鄰單元相關聯(lián)的bv值時,解碼器根據(jù)優(yōu)先級順序來評估用于導出用于合并的次分量塊的單個bv值的不同候選bv值,直到所導出的bv值不引用在邊界外部的任何采樣值。例如,解碼器根據(jù)第vii.h節(jié)中描述的方法來評估候選bv值??商娲?,解碼器使用另一種方法來評估候選bv值。
j.替代和變型
在本文中描述的很多示例中,編碼器對允許的bv值施加約束??商娲?,可以將約束視為對比特流中的語法元素的值的約束或在解碼期間的重構(gòu)時對bv值的約束,其中編碼器仍然選擇bv值。也就是說,約束可以被表示為對于比特流中的編碼數(shù)據(jù)中的bv值的比特流一致性要求。
在本文中描述的很多示例中,圖內(nèi)bc預測和運動補償在單獨的部件或過程中實現(xiàn),并且bv估計和運動估計在單獨的部件或過程中實現(xiàn)。可替代地,圖內(nèi)bc預測可以被實現(xiàn)為運動補償?shù)奶厥馇闆r,并且bv估計可以被實現(xiàn)為運動估計的特殊情況,其中當前圖片被用作參考圖片。在這樣的實現(xiàn)中,bv值可以作為mv值被信號通知,但是用于圖內(nèi)bc預測(在當前圖片內(nèi))而不是圖片間預測。如本文中使用的術語“圖內(nèi)bc預測”表示當前圖片內(nèi)的預測,而不管使用圖片內(nèi)預測模塊、運動補償模塊還是其他模塊來提供該預測。類似地,可以使用mv值或者使用不同類型的參數(shù)或語法元素來表示bv值,并且可以使用圖片內(nèi)估計模塊、運動估計模塊或某個其他模塊來提供bv估計。
考慮到可以應用所公開的發(fā)明的原理的很多可能的實施例,應當認識到,所示出的實施例僅是本發(fā)明的優(yōu)選示例,而不應當被認為限制本發(fā)明的范圍。相反,本發(fā)明的范圍由所附權利要求來限定。因此,我們認為在這些權利要求的范圍和精神內(nèi)的全部內(nèi)容都屬于本發(fā)明。