工程師使用壓縮(也叫做源編碼(source coding或source encoding))來降低數字視頻的位率。壓縮通過將視頻信息轉換成較低位率的形式來降低存儲和傳送該信息的成本。解壓(也被稱為解碼)從壓縮的形式中重構一種版本的原始信息。“編解碼器”是編碼器/解碼器系統。
在過去的至少25年中,已采用了各種視頻編解碼器標準,包括ITU-T H.261、H.262(MPEG-2或ISO/IEC 13818-2)、H.263、H.264(MPEG-4AVC或ISO/IEC14496-10)標準、MPEG-1(ISO/IEC 11172-2)和MPEG-4視覺(ISO/IEC 14496-2)標準以及SMPTE 421M(VC-1)標準。最近,H.265/HEVC標準(ITU-T H.265或ISO/IEC 23008-2)已被批準。目前,(例如,用于可縮放視頻編碼/解碼、用于在樣本位深度或色度采樣率方面具有較高保真度的視頻的編碼/解碼、用于屏幕捕捉內容、或用于多視圖編碼/解碼的)H.265/HEVC標準的擴展處于開發中。視頻編解碼器標準通常定義針對經編碼的視頻位流的句法的選項,從而詳述當在編碼和解碼時使用特定特征時該位流中的參數。在許多情況下,視頻編解碼器標準還提供關于視頻解碼器應當執行以在解碼時取得一致的結果的解碼操作的細節。除了編解碼器標準外,各種專用編解碼器格式定義針對經編碼的視頻位流的句法的其他選項以及相應的解碼操作。
不同的編解碼器標準和格式支持不同的編碼/解碼工具。調色板模式是所考慮的針對用于屏幕捕捉內容的編碼/解碼的H.265/HEVC標準的擴展的編碼/解碼工具。調色板模式在編碼某些“人工”創建的視頻內容(諸如屏幕捕捉內容)時可能是有幫助的。屏幕捕捉內容通常包括與自然視頻相比使用很少的不同色彩的重復結構(例如,圖形、文本字符)。這提供了調色板模式改善性能的機會。一般來說,在調色板模式中,視頻編碼器使用表示調色板中的各基礎色彩的索引值對各像素進行編碼。一般來說,像素包括針對在圖片中的位置的一個或多個樣本值。索引值中的每一者與單元的各色彩中的不同值(“基礎色彩”)相關聯。例如,如果8x8單元在該單元的64個像素中具有4個不同的色彩,則編碼器向那4個基礎色彩分派4個不同的索引值。在編碼期間,各像素被對應的索引值取代。編碼器編碼并信號化將索引值映射到基礎色彩的調色板以及關于表示這些像素的索引值的布置的數據(“索引圖”)。解碼器接收并解碼調色板和索引圖。使用該信息,解碼器用基礎色彩取代索引圖中的索引值以獲得原始像素。
在調色板模式的一些設計中,稀有色彩可用逸出模式(escape mode)來編碼和解碼。在逸出模式中,像素不是使用調色板中的基礎色彩來表示的。相反,特殊像素值標記像素以供用逸出模式進行編碼和解碼。經逸出編碼的像素的每一樣本值被量化(該量化將該樣本值映射到“箱(bin)”集合中的一個“箱”以便近似該樣本值)并被熵編碼,這通常減少了用于表示經量化的樣本值的位數。在調色板模式的逸出模式采用H.265/HEVC標準的當前設計中,對經量化的樣本值的熵編碼導致對某些類型的數據丟失不穩健的經編碼的數據。具體地,(例如,由經編碼的數據中的位翻轉造成的)傳輸錯誤可導致經重構的像素的嚴重質量降級。
概述
總而言之,詳細描述呈現用調色板模式對經逸出編碼的像素進行穩健編碼和解碼方面的創新。例如,在調色板模式中經逸出編碼的像素的樣本值是使用取決于這些樣本值的量化參數(“QP”)的恒定值的二值化過程來編碼/解碼的。或者,作為另一示例,在調色板模式中經逸出編碼的像素的樣本值是使用取決于這些樣本值的樣本深度的二值化過程來編碼/解碼的。或者,作為又一示例,在調色板模式中經逸出編碼的像素的樣本值是使用取決于某個其他固定規則的二值化過程來編碼/解碼的。在各示例實現中,這些方法避免在解析經逸出編碼的像素的樣本值時對單元級QP值的依賴性,這可使得編碼/解碼對數據丟失更穩健。
根據本文中描述的創新的一個方面,媒體編碼器(諸如視頻編碼器或圖像編碼器)接收圖片并對圖片進行編碼。作為對圖片進行編碼的一部分,媒體編碼器用調色板模式對該圖片的單元進行編碼。通過這樣做,媒體編碼器用調色板模式的逸出模式獨立于單元的任何單元級QP對該單元的樣本值進行編碼。
根據本文中描述的各創新的另一個方面,媒體解碼器(諸如視頻解碼器或圖像解碼器)接收圖片的經編碼的數據并對該圖片進行解碼。作為對該圖片進行解碼的一部分,媒體解碼器用調色板模式對該圖片的單元進行解碼。通過這樣做,媒體解碼器用調色板模式的逸出模式對該單元的樣本值進行解碼,而沒有對該單元的單元級QP的任何解析依賴性。
本發明可以被實現為方法的部分、被配置為執行所述方法的計算系統的部分或存儲用于使得計算系統執行所述方法的計算機可執行指令的有形計算機可讀介質的部分。各創新可以結合地或分開地使用。提供本概述以便以簡化的形式介紹將在以下的詳細描述中進一步描述的一些概念。本概述并不旨在標識出所要求保護的主題的關鍵特征或必要特征,也不旨在用于限定所要求保護的主題的范圍。參考附圖閱讀以下詳細描述,將更清楚本發明的前述和其他目標、特征和優點。
附圖簡述
圖1是示出可用于實現所描述的一些實施例的示例計算系統的示圖。
圖2a和2b是示出可用于實現所描述的一些實施例的示例網絡環境的示圖。
圖3是示出結合其可實現所描述的一些實施例的示例視頻編碼器系統的示圖。
圖4a和4b是示出結合其可實現所描述的一些實施例的示例視頻編碼器的示圖。
圖5是結合其可實現所描述的一些實施例的示例解碼器系統的示圖。
圖6是示出結合其可實現所描述的一些實施例的示例視頻解碼器的示圖。
圖7是用調色板模式進行編碼和解碼的示例的示圖。
圖8a和8b是示出用調色板模式的逸出模式對樣本值分別進行編碼和解碼的示例的示圖。
圖9和10是示出分別用于進行編碼和解碼(包括用調色板模式的逸出模式對像素進行穩健編碼/解碼)的通用技術的流程圖。
圖11和12是示出使用取決于片級QP的二值化過程對樣本值分別進行編碼和解碼的示例技術的流程圖。
圖13是示出用于在調色板模式中信號化經逸出編碼的像素的片級QP偏移的示例句法的表格。
圖14和15是示出使用取決于樣本值的樣本深度的二值化過程對樣本值分別進行編碼和解碼的示例技術的流程圖。
圖16和17是示出用于使用k階指數-Golomb二值化過程對樣本值分別進行編碼和解碼的示例技術的流程圖。
圖18是示出用于k階指數-Golomb二值化過程的示例技術的偽代碼列表。
詳細描述
該詳細描述呈現用調色板模式對經逸出編碼的像素進行穩健編碼和解碼方面的創新。例如,在調色板模式中經逸出編碼的像素的樣本值是使用取決于用于這些樣本值的量化參數(“QP”)的恒定值的二值化過程來編碼/解碼的。或者,作為另一示例,在調色板模式中經逸出編碼的像素的樣本值是使用取決于這些樣本值的樣本深度的二值化過程來編碼/解碼的。或者,作為又一示例,在調色板模式中經逸出編碼的像素的樣本值是使用取決于某個其他固定規則的二值化過程來編碼/解碼的。在各示例實現中,這些方法避免在解析經逸出編碼的像素的樣本值時對單元級QP值的依賴性,這可使得編碼/解碼對數據丟失更穩健。
本文中描述的一些創新是參考針對H.265/HEVC標準以及H.265/HEVC標準的擴展的條款來解說的。例如,一些創新被描述為相對于標題為“High Efficiency Video Coding(HEVC)Screen Content Coding:Draft 3(高效視頻編碼(HEVC)屏幕內容編碼:草稿3)”的文檔JCTVC-T1005-v2的特征的改變。本文中描述的創新也可針對其他視頻編解碼器標準或格式(例如,VP9格式、H.264/AVC標準)來實現。或者,本文中描述的創新可針對圖像編解碼器標準或格式來實現。
在本文中描述的示例中,不同的圖中的相同參考標記指示相同的組件、模塊或操作。取決于上下文,給定組件或模塊可接受不同類型的信息作為輸入和/或產生不同類型的信息作為輸出。
更一般地,本文中描述的各示例的各種替代是可能的。例如,本文中描述的一些方法可以通過改變描述的方法動作的順序、通過拆分、重復或忽略某些方法動作等來更改。所公開的技術的各方面能夠被組合地或分開地使用。不同的實施例使用所描述的創新中的一個或多個。本文中描述的一些創新解決了背景中指出的一個或多個問題。通常,所給出的技術/工具并不解決所有這些問題。
I.示例計算系統
圖1示出了在其中可實現若干所描述的發明的合適的計算環境(100)的一般化示例。計算系統(100)并不旨對使用范圍或功能提出任何限制,因為這些創新可以在不同的通用或專用計算系統中實現。
參考圖1,計算環境(100)包括一個或多個處理單元(110、115)和存儲器(120、125)。處理單元(110、115)執行計算機可執行指令。處理單元可以是通用中央處理單元(“CPU”)、專用集成電路(“ASIC”)中的處理器或任何其它類型的處理器。在多處理系統中,多個處理單元執行計算機可執行指令以提高處理能力。例如,圖1示出中央處理單元(110)以及圖形處理單元或協處理單元(115)。有形存儲器(120、125)可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,ROM、EEPROM、閃存等)或兩者的某種組合,可由處理單元存取。存儲器(120,125)存儲實現針對切換色彩空間時的編碼或解碼的一個或多個創新的軟件(180),該軟件采用適用于由(諸)處理單元執行的計算機可執行指令的形式。
計算系統可具有附加的特征。例如,計算系統(100)包括存儲(140)、一個或多個輸入設備(150)、一個或多個輸出設備(160)以及一個或多個通信連接(170)。諸如總線、控制器或網絡之類的互連機制(未示出)將計算系統(100)的各組件互連。通常,操作系統軟件(未示出)為在計算系統(100)中執行的其它軟件提供操作環境,并協調計算系統(100)的各組件的活動。
有形存儲(140)可以是可移動或不可移動的,并包括磁盤、磁帶或磁帶盒、諸如CD-ROM、DVD之類的光學媒體或可用于儲存信息并可在計算系統(100)內訪問的任何其他介質。存儲(140)存儲實現針對用調色板模式對經逸出編碼的像素進行穩健編碼/解碼的一個或多個創新的軟件(180)的指令。
(諸)輸入設備(150)可以是觸摸輸入設備(諸如鍵盤、鼠標、筆或跟蹤球)、語音輸入設備、掃描設備或向計算系統(100)提供輸入的另一設備。對于視頻,(諸)輸入設備(150)可以是相機、視頻卡、屏幕捕捉模塊、TV調諧卡或接受模擬或數字形式的視頻輸入的類似設備、或將視頻輸入讀到計算系統(100)中的CD-ROM或CD-RW。(諸)輸出設備(160)可以是顯示器、打印機、揚聲器、CD刻錄機或提供來自計算系統(100)的輸出的另一設備。
(諸)通信連接(170)允許通過通信介質與另一計算實體通信。通信介質傳達諸如計算機可執行指令、音頻或視頻輸入或輸出、或已調制數據信號中的其他數據之類的信息。已調制數據信號是使其一個或多個特征以在信號中編碼信息的方式設置或改變的信號。作為示例而非限制,通信介質可以使用電的、光學的、RF或其它載體。
各創新可以在計算機可讀介質的一般上下文中描述。計算機可讀介質是可在計算環境內訪問的任何可用有形介質。作為示例而非限制,對于計算系統(100),計算機可讀介質包括存儲器(120,125)、存儲(140)及其組合。如本文中所使用的,術語計算機可讀介質不包括瞬時信號或傳播載波。
各創新可在計算機可執行指令(諸如包括在程序模塊中的在目標現實或虛擬處理器上在計算系統中執行的那些計算機可執行指令)的一般上下文中描述。一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、庫、對象、類、組件、數據結構等。如各實施例中所描述的,這些程序模塊的功能可以被組合,或者在這些程序模塊之間拆分。針對各程序模塊的計算機可執行指令可以在本地或分布式計算系統中執行。
術語“系統”和“設備”在此被互換地使用。除非上下文明確指示,否則,術語并不暗示對計算系統或計算設備的類型的任何限制。一般說來,計算系統或計算設備可以是本地的或分布式的,并且可以包括具有實現本文中描述的功能的軟件的專用硬件和/或通用硬件的任意組合。
所公開的方法還可使用被配置成執行所公開的方法中的任一者的專用計算硬件來實現。例如,所公開的方法可以由被專門設計或配置成實現所公開的方法中的任一者的集成電路(例如,諸如ASIC數字信號處理器(“DSP”)之類的ASIC、圖像處理單元(“GPU”)、或諸如場可編程門陣列(“FPGA”)之類的可編程邏輯器件(“PLD”))來實現。
為了呈現起見,本詳細描述使用了如“確定”和“評估”等術語來描述計算系統中的計算機操作。這些術語是對由計算機執行的操作的高級抽象,且不應與人類所執行的動作混淆。對應于這些術語的實際的計算機操作取決于實現而不同。
II.示例網絡環境
圖2a和2b示出了包括視頻編碼器(220)和視頻解碼器(270)的示例網絡環境(201,202)。編碼器(220)和解碼器(270)使用合適的通信協議通過網絡(250)連接。網絡(250)可包括因特網或另一計算機網絡。
在圖2a中所示的網絡環境(201)中,每個實時通信(“RTC”)工具(210)包括用于雙向通信的編碼器(220)和解碼器(270)兩者。給定的編碼器(220)可以產生輸出,該輸出遵循H.265/HEVC標準、SMPTE 421M標準、ISO/IEC 14496-10標準(也稱為H.264或AVC)、另一標準的變體或擴展,或遵循針對接受來自編碼器(220)的經編碼的數據的對應的解碼器(270)的專用格式(諸如VP8或VP9)。雙向通信可以是視頻會議、視頻電話呼叫或其它雙方或多方通信場景的部分。雖然,圖2a中的網絡環境(201)包括兩個實時通信工具(210),但網絡環境(201)可改為包括參與多方通信的三個或更多的實時通信工具(210)。
實時通信工具(210)管理編碼器(220)作出的編碼。圖3示出可以被包括在實時通信工具(210)中的示例編碼器系統(300)。替換地,實時通信工具(210)使用另一編碼器系統。實時通信工具(210)還管理解碼器(270)作出的解碼。圖5示出可以被包括在實時通信工具(210)中的示例解碼器系統(500)。替換地,實時通信工具(210)使用另一解碼器系統。
在圖2b中示出的網絡環境(202)中,編碼工具(212)包括對供遞送給多個回放工具(214)的視頻進行編碼的編碼器(220),這些回放工具包括解碼器(270)。單向通信可被提供用于視頻監視系統、web相機監視系統、遠程桌面會議演示或共享、無線屏幕投射、云計算或游戲、在其中編碼視頻并將視頻從一個位置發送到一個或多個其它位置的其它場景。雖然在圖2b中的網絡環境(202)包括兩個回放工具(214),該網絡環境(202)可以包括更多或更少的回放工具(214)。一般來說,回放工具(214)與編碼工具(212)通信以確定回放工具(214)要接收的視頻流。回放工具(214)接收該流、緩沖所接收的經編碼數據達合適的時間段并開始解碼和回放。
圖3示出可以被包括在編碼工具(212)中的示例編碼器系統(300)。替換地,編碼工具(212)使用另一編碼器系統。編碼工具(212)還可以包括用于管理與一個或多個回放工具(214)的連接的服務器側控制器邏輯。回放工具(214)可包括用于管理與編碼工具(212)的連接的客戶機側控制器邏輯。圖5示出可以被包括在回放工具(214)中的示例解碼器系統(500)。替換地,回放工具(214)使用另一解碼器系統。
III.示例編碼器系統。
圖3示出結合其可實現所描述的一些實施例的示例視頻編碼器系統(300)。視頻編碼器系統(300)包括視頻編碼器(340),視頻編碼器(340)在圖4a和4b中被進一步詳述。
視頻編碼器系統(300)可以是能夠用多種編碼模式中的任一者(諸如用于實時通信的低等待時間編碼模式、轉碼模式和用于從文件或流中產生供回放的媒體的較高等待時間編碼模式)操作的通用編碼工具,或它可以是適用于一種這樣的編碼模式的專用編碼工具。視頻編碼器系統(300)可適用于編碼特定類型的內容。視頻編碼器系統(300)可以被實現為操作系統模塊的部分、應用庫的部分、獨立的應用的部分或使用專用的硬件。總體上,視頻編碼器系統(300)從視頻源(310)接收源視頻圖片(311)序列并產生經編碼的數據作為到信道(390)的輸出。輸出到信道的經編碼的數據可包括使用本文中描述的一個或多個創新編碼的內容。
視頻源(310)可以是相機、調諧卡、存儲介質、屏幕捕捉模塊或其它數字視頻源。所述視頻源(310)以例如每秒30幀的幀速率產生視頻圖片序列。如在此所用,術語“圖片”一般是指源、已譯碼的或已重構的圖像數據。對于逐行掃描視頻,圖片是逐行掃描視頻幀。對于隔行視頻,在各示例實施例中,隔行視頻幀可以在編碼之前被去隔行。替換地,兩個互補的隔行視頻場可以被編碼在一起作為單個視頻幀或者被編碼成兩個經分開編碼的場。除了指示逐行掃描視頻幀或隔行掃描視頻幀之外,術語“圖片”可以指示單個非成對的視頻場、互補的成對視頻場、表示在給定時間或在較大的圖像中的感興趣區域處的視頻對象的視頻對象平面。視頻對象平面或區域可以是包括場景的多個對象或區域的較大圖像的一部分。
正在到達的源圖片(311)被存儲在包括多個圖片緩沖存儲區域(321,322,…,32n)的源圖片臨時存儲器存儲區域(320)中。圖片緩沖器(321,322等)在源圖片存儲區域(320)中保持一個源圖片。在已經將一個或多個源圖片(311)存儲在圖片緩沖器(321,322等)中之后,圖片選擇器(330)從源圖片存儲區域(320)中選擇個體源圖片來編碼為當前圖片(331)。各圖片被圖片選擇器(330)選擇用于輸入到視頻編碼器(340)的次序可以與視頻源(310)產生這些圖片的次序不同,例如對某些圖片的編碼可在次序上被延遲,以便允許某些較后的圖片被先編碼并由此促成時間上的后向預測。視頻編碼器系統(300)可在視頻編碼器(340)之前包括在編碼之前對當前圖片(331)執行預處理(例如濾波)的預處理器(未示出)。該預處理可包括將色彩空間轉換成主要(例如亮度)和次要(例如偏向紅色和偏向藍色的色度差)分量以及對編碼的重采樣處理(例如以減少色度分量的空間分辨率)。由此,在編碼之前,視頻可以被轉換成諸如YUV的色彩空間,在其中亮度(Y)分量的樣本值表示明亮度或強度值,而色度(U,V)分量的樣本值表示色差值。色差值(以及從YUV色彩空間到諸如RGB的另一色彩空間/從另一色彩空間到YUV色彩空間的轉換操作)的精確定義取決于實現。一般來說,如本文中所使用的,術語YUV指示具有亮度(或照度)分量和一個或多個色度(或色差)分量的任意色彩空間,包括Y’UV、YIQ、Y’IQ和YDbDr以及諸如YCbCr和YCoCg之類的變體。色度樣本值可以被子采樣到較低的色度采樣率(例如針對YUV 4:2:0格式或YUV 4:2:2格式的情況),或者色度樣本值可以具有與亮度樣本值相同的分辨率(例如針對YUV4:4:4格式的情況)。替換地,視頻可根據另一格式(例如RGB 4:4:4格式、GBR 4:4:4格式或BGR 4:4:4格式)來組織。一般來說,像素是針對在圖片中的位置的一個或多個搭配樣本值的集合,該集合對于不同的色度采樣格式可用不同的方式來布置。
視頻編碼器(340)對當前圖片(331)進行編碼以產生經編碼的圖片(341)。如圖4a和4b所示,視頻編碼器(340)接收當前圖片(331)作為輸入視頻信號(405),并在經編碼的視頻位流(495)中產生經編碼的圖片(341)的經編碼的數據作為輸出。作為該編碼的一部分,在一些情況下,視頻編碼器(340)使用用調色板模式對經逸出編碼的像素的穩健編碼。
通常,視頻編碼器(340)包括執行諸如分割成小塊、圖片內預測估計和預測、調色板模式編碼、運動估計和補償、頻率變換、量化和熵譯碼之類的編碼任務。視頻編碼器(340)的許多組件被用于圖片內編碼和圖片間編碼兩者。由視頻編碼器(340)執行的確切操作可取決于壓縮格式而變化,并可取決于編碼器可選的實現判定而變化。輸出的經編碼數據的格式可以是Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)、或VPx格式、或其它格式的變型或擴展。
如圖4a所示,視頻編碼器(340)可包括小塊化模塊(410)。使用小塊化模塊(410),視頻編碼器(340)可將圖片分割成相同尺寸或不同尺寸的多個小塊。例如,小塊化模塊(410)沿小塊行和小塊列來拆分圖片,所述小塊行和小塊列利用圖片邊界定義在圖片內的小塊的水平和垂直邊界,其中每個小塊是矩形區域。小塊通常被用于提供并行處理的選項。圖片還可以被組織為一個或多個片,其中一個片可以是整個圖片或圖片的部分。片可以獨立于圖片中的其它片被解碼,這改善了錯誤復原力。出于編碼和解碼的目的,片或小塊的內容被進一步分割成塊或其它采樣值集。塊可在不同的階段(例如在預測、頻率變換和/或熵編碼階段)被進一步細分。例如,圖片可以被劃分成64x64塊、32x32塊或16x16塊,這些塊進而可被劃分成更小的樣本值塊以用于編碼和解碼。
對于根據H.264/AVC標準的句法,視頻編碼器(340)可以將圖片分割成相同尺寸或不同尺寸的多個片。視頻編碼器(340)將圖片(或片)的內容拆分成各16x16宏塊。宏塊包括被組織為4個8x8亮度塊的亮度樣本值和被組織為8x8色度塊的相應的色度樣本值。通常,宏塊具有諸如幀間或幀內之類的預測模式。宏塊包括用于信號化預測信息(例如預測模式細節、運動向量(“MV”)信息等)和/或預測處理的目的的一個或多個預測單元(例如,各8x8塊、各4x4塊,這些塊可被稱為用于圖片間預測的分區)。宏塊還具有用于殘量編碼/解碼目的的一個或多個殘量數據單元。
對于根據H.265/HEVC標準的句法來說,視頻編碼器(340)將圖片(或片或小塊)的內容拆分成各編碼樹單元。編碼樹單元(“CTU”)包括被組織為亮度編碼樹塊(“CTB”)的亮度采樣值,并且對應的色度樣本值被組織為兩個色度CTB。CTU(及其CTB)的尺寸由視頻編碼器選擇。亮度CTB可包含例如64x64、32x32或16x16亮度樣本值。CTU包括一個或多個編碼單元。編碼單元(“CU”)具有亮度編碼塊(“CB”)和兩個對應的色度CB。例如,根據四叉樹句法,具有64x64亮度CTB和兩個64x64色度CTB(YUV 4:4:4格式)的CTU可以被拆分成4個CU,其中每一CU包括一32x32亮度CB和兩個32x32色度CB,并且根據四叉樹句法,每一CU可能被進一步拆分成更小的CU。或者,作為另一示例,根據四叉樹句法,具有64x64亮度CTB和兩個32x32色度CTB(YUV 4:2:0格式)的CTU可被拆分成4個CU,其中每一CU包括一32x32亮度CB和兩個16x16色度CB,并且根據四叉樹句法,每一CU可被進一步拆分成更小的CU。
在H.265/HEVC實現中,CU具有諸如幀間或幀內之類的預測模式。CU通常包括用于信號化預測信息(例如預測模式細節、移位值等)和/或預測處理的目的的一個或多個預測單元。預測單元(“PU”)具有亮度預測塊(“PB”)和兩個對應的色度PB。根據H.265/HEVC標準,對于圖片內預測的CU,PU具有與該CU相同的尺寸,除非該CU具有最小尺寸(例如8x8)。在那個情況下,CU可被拆分成更小的PU(例如,對于圖片內預測情況,如果最小CU尺寸為8x8,則被拆分成四個4x4PU),或者PU可具有最小CU尺寸,如CU的句法元素所指示的。對于圖片間預測的CU,該CU可具有一個、兩個或四個PU,其中拆分成四個PU僅在該CU具有最小可允許尺寸的情況下才被允許。
在H.265/HEVC實現中,CU通常還具有用于殘量編碼和解碼的目的的一個或多個變換單元,其中變換單元(“TU”)具有亮度變換塊(“TB”)和兩個色度TB。CU可包含單個TU(在尺寸上等于該CU)或多個TU。根據四叉樹句法,TU可被拆分為四個更小的TU,這些TU可進而根據四叉樹句法被拆分成更小的TU。視頻編碼器決定如何將視頻分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
在H.265/HEVC實現中,片可包括單個片段(獨立的片段)或被劃分成多個片段(獨立的片段和一個或多個從屬的片段)。片段是包含在單個網絡抽象層(“NAL”)單元中的在小塊掃描中連續排序的整數個CTU。對于獨立的片段,片段頭部包括適用于該獨立的片段的句法元素的值。對于從屬片段,截短的片段頭部包括適用于該從屬片段的句法元素的幾個值,并且從屬片段的其它句法元素的值是以解碼順序從在前的獨立的片段的值中推導出來的。
如本文中所使用的,術語“塊”可指示宏塊、殘量數據單元、CTB、CB、PB或TB、或某些其它樣本值集,這取決于上下文。術語“單元”可指示宏塊、CTU、CU、PU、TU或某些其他塊集,或者它可指示單個塊,這取決于上下文。
如圖4a所示,視頻編碼器(340)包括通用編碼控件,該通用編碼控件(420)接收當前圖片(331)的輸入視頻信號(405)以及來自視頻編碼器(340)的各個模塊的反饋(未示出)。整體上,通用編碼控件(420)將控制信號(未示出)提供給其它模塊(諸如小塊化模塊(410)、變換器/縮放器/量化器(430)、縮放器/逆變換器(435)、圖片內預測估計器(440)、運動估計器(450)、調色板模式編碼器(480)以及幀內/幀間切換)以設置和改變編碼期間的編碼參數。通用編碼控件(420)還可評估編碼期間的中間結果,通常考慮不同選項的位率成本和/或失真成本。具體地,通用編碼控件(420)判定將圖片內預測還是圖片間預測用于當前圖片(331)的各單元,并且在圖片內預測被用于某單元的情況下判定將空間預測(外推)、幀內塊復制預測還是調色板模式用于該單元。通用編碼控件(420)產生指示在編碼期間作出的判定的通用控制數據(422),使得對應的解碼器可以作出一致的判定。例如,通用控制數據(422)包括指示針對某單元的圖片內編碼使用調色板編碼模式還是空間預測(例如,每個經圖片內預測的單元一個標志值)的信息。通用控制數據(422)被提供給頭部格式化器/熵編碼器(490)。
參考圖4b,如果當前圖片(331)中的單元是使用圖片間預測來預測的,則運動估計器(450)估計該單元的樣本值塊相對于一個或多個參考圖片的運動。當前圖片(331)可全部或部分使用圖片間預測來編碼。當使用多個參考圖片時,這多個參考圖片可以來自不同的時間方向或相同的時間方向。運動估計器(450)潛在地評估處于上下文運動模式的候選MV以及其他候選MV。對于上下文運動模式,作為單元的候選MV,運動估計器(450)評估在運動補償時對局部鄰域中的某些相鄰單元使用的一個或多個MV或依據規則推導出的一個或多個MV。針對上下文運動模式的候選MV可包括來自空間上毗鄰的單元的MV、來自時間上毗鄰的單元的MV以及依據規則推導出的MV。在H.265/HEVC標準中,合并模式是上下文運動模式的示例。在一些情況下,上下文運動模式可涉及多個推導出MV之間的競爭以及對多個推導出MV之一的選擇。運動估計器(450)可為當前圖片(331)的給定單元的分割(例如,在H.265/HEVC標準中為針對CU的各PU的2N×2N、2N×N、N×2N或N×N分割)評估運動補償的不同分割模式。
解碼圖片緩沖器(470)(其是如圖3所示的經解碼圖片臨時存儲器存儲區域(360)的示例)緩沖一個或多個經重構的先前編碼的圖片以供用作參考圖片。運動估計器(450)產生運動數據(452)作為輔助信息。具體地,運動數據(452)可包括指示上下文運動模式(例如,在H.265/HEVC標準中為合并模式)是否被使用的信息,以及如果上下文運動模式被使用,則包括指示上下文運動模式的候選MV的信息(例如,在H.265/HEVC標準中為合并模式索引值)。更一般地,運動數據(452)可包括MV數據和參考圖片選擇數據。運動數據(452)被提供給頭部格式化器/熵編碼器(490)以及運動補償器(455)。運動補償器(455)將塊的(諸)MV應用于來自經解碼圖片緩沖器(470)的(諸)經重構的參考圖片。對于該塊,運動補償器(455)產生運動補償預測,其是用來生成該塊的運動補償預測值的(諸)參考圖片中的樣本值區域。
參考圖4b,如果當前圖片(331)的單元是使用圖片內預測來預測的,則圖片內預測估計器(440)確定如何執行針對該單元的樣本值塊的圖片內預測。當前圖片(331)可全部或部分使用圖片內預測來編碼。對于幀內空間預測,圖片內估計器(440)使用當前圖片(331)的重構(438)的值來確定如何從當前圖片(331)的鄰近的、先前重構的樣本值中空間地預測當前圖片(331)的塊的樣本值,例如估計鄰近的經重構的樣本值到該塊的外推。或者,對于幀內塊復制模式,圖片內預測估計器(440)使用指示當前圖片(331)的先前編碼/解碼的部分的偏移(有時被稱為塊向量)來確定如何預測當前圖片(331)的塊的樣本值。幀內塊復制模式可被實現為圖片間預測的特殊情況,其中參考圖片是當前圖片(331),并且僅當前圖片(331)的先前編碼/解碼的樣本值可被用于預測。作為輔助信息,圖片內預測估計器(440)產生諸如所使用的預測模式/方向之類的幀內預測數據(442)。幀內預測數據(442)被提供給頭部格式化器/熵編碼器(490)以及圖片內預測器(445)。根據幀內預測數據(442),圖片內預測器(445)從當前圖片(331)的鄰近的、先前重構的樣本值中空間地預測當前圖片(331)的塊的樣本值,從而產生該塊的圖片內預測值。或者,圖片內預測器(445)使用幀內塊復制預測使用針對該塊的偏移(塊向量)來預測該塊的樣本值。
調色板模式編碼器(480)使用將基礎色彩映射到索引值的調色板并用相應的索引值替換各像素來用針對當前圖片(331)的某單元的像素之中的基礎色彩的索引值來表示該單元。例如,調色板將索引值0,1,2,…,p映射到對應的基礎色彩,基礎色彩可采用RGB 4:4:4格式、BGR 4:4:4格式、GBR 4:4:4格式、YUV 4:4:4格式或另一個格式(色彩空間、色彩采樣率)。由此,例如,索引值可表示像素的RGB三元組、BGR三元組或GBR三元組。單元可以是CU,在該情況下,調色板開在逐CU的基礎上改變。調色板模式編碼的示例是參考圖7、8a和8b來描述的。在一些情況下,調色板模式編碼器(480)可用逸出模式而非使用針對調色板中的這樣的色彩的索引值來對稀有色彩進行編碼。在逸出模式中,特殊索引值將像素標記為經逸出編碼的像素。經逸出編碼的像素的(諸)樣本值可在編碼器(340)中的其他地方(或者,替換地在調色板模式編碼器(480)中)被量化并隨后被熵編碼。作為輔助信息,調色板模式編碼器(480)產生諸如指示單元的調色板(其可相關于預測的調色板來編碼)和該單元的索引值(有時被稱為索引圖)的信息之類的調色板模式數據(482)。調色板模式數據(482)被提供給頭部格式化器/熵編碼器(490)以及調色板模式解碼器(485)。
如圖4b所示,在非調色板模式中,幀內/幀間切換選擇針對給定單元的預測(458)將是運動補償預測還是圖片內預測。針對當前圖片(331)的各單元的幀內/幀間切換判定可使用各準則來作出。
在非調色板模式中,視頻編碼器(340)可確定是否編碼并傳送某塊的預測值(幀內或幀間)和對應的原始值之間的差值(如果有的話)。預測(458)的塊和輸入視頻信號(405)的原始當前圖片(331)的對應部分之間的差異(如果有的話)提供殘量(418)的值。如果被編碼/傳送,則殘量(418)的值使用頻率變換(如果該頻率變換不被跳過的話)、量化和熵編碼來編碼。在一些情況下,沒有為單元計算殘量。相反,殘量編碼被跳過,并且預測的樣本值被用作經重構的樣本值。對于一些類型的單元(例如,僅圖片間編碼單元)或所有類型的單元,關于是否跳過殘量編碼的判定可在逐單元的基礎上(例如,在H.265/HEVC標準中在逐CU的基礎上)作出。在調色板模式中,視頻編碼器(340)跳過殘量編碼操作,但可對用逸出模式編碼的像素的樣本值進行量化。
參考圖4a,對于非調色板模式,當殘量(418)的值被編碼時,在變換器/縮放器/量化器(430)中,頻率變換器將空間域視頻信息轉換為頻域(即頻譜、變換)數據。對于基于塊的視頻編碼,頻率變換器將離散余弦變換(“DCT”)、其整數近似、或另一類型的前向塊變換(例如離散正弦變換或其整數近似)應用于殘量(418)的值塊(或者如果預測(458)為空則應用于樣本值數據),從而產生頻率變換系數塊。變換器/縮放器/量化器(430)可以應用具有可變塊尺寸的變換。在這種情況中,變換器/縮放器/量化器(430)可以確定要對當前塊的殘量值使用哪些塊尺寸的變換。例如,在H.265/HEVC實現中,編碼器/縮放器/量化器(430)可通過四叉樹分解將TU拆分成四個更小的TU,這些TU中的每一者可進而被拆分成四個更小的TU,一直到最小TU尺寸。TU尺寸可以為32x32、16x16、8x8或4x4(涉及TU中的亮度TB的尺寸)。
在H.265/HEVC實現中,對于非調色板模式,可以跳過頻率變換。在這種情況下,可以對殘量(418)的值進行量化和熵編碼。具體地,變換跳過模式在對屏幕內容視頻進行編碼時可以是有用的,但在對其他類型的視頻進行編碼時不是特別有用。
參考圖4a,對于非調色板模式,在編碼器/縮放器/量化器(430)中,縮放器/量化器縮放和量化變換系數。例如,量化器將以按逐圖片基礎、逐小塊基礎、逐片基礎、逐塊基礎、頻率專用基礎或其它基礎來變化的量化步長尺寸將死區標量量化應用于頻域數據。量化步長尺寸可取決于量化參數(“QP”),該量化參數的值是為視頻的圖片、小塊、片和/或其他部分設置。在量化變換系數時,視頻編碼器(340)可使用率失真優化量化(“RDOQ“)(這是非常耗時的)或者應用更簡單的量化規則。經量化的變換系數數據(432)被提供給頭部格式化器/熵編碼器(490)。對于非調色板模式,如果頻率變換被跳過,則縮放器/量化器可對預測殘量數據塊(或如果預測(458)為空則對樣本值數據)進行縮放和量化,從而產生經量化的值,這些經量化的值被提供給頭部格式化器/熵編碼器(490)。或者,對于調色板模式中的經逸出編碼的像素,縮放器/量化器可對逸出模式中的像素的樣本值進行量化,從而將經逸出編碼的像素的經量化的樣本值提供給頭部格式化器/熵編碼器(490)。
如圖4a和4b所示,頭部格式化器/熵編碼器(490)對通用控制數據(422)、經量化的變換系數數據(432)(或者對于調色板模式的逸出模式,為經量化的樣本值)、幀內預測數據(442)、運動數據(452)、調色板模式數據(482)以及濾波器控制數據(462)進行格式化和/或熵編碼。由此,視頻編碼器(340)的熵編碼器壓縮經量化的變換系數值以及某些輔助信息(例如MV信息、QP值、模式判定、參數選擇、調色板數據、調色板模式中的索引值、調色板模式中的經量化的樣本值)。典型的熵編碼技術包括指數-Golomb編碼、Golomb-Rice編碼、上下文自適應二進制算術編碼(“CABAC”)、差分編碼、Huffman編碼、行程長度編碼、可變長度到可變長度(“V2V”)編碼、可變長度到固定長度(“V2F”)編碼、Lempel-Ziv(“LZ”)編碼、字典編碼和上述編碼的組合。熵編碼器可對不同種類的信息使用不同的編碼技術,并可組合地應用多個技術(例如,通過在CABAC的二值化時應用指數-Golomb編碼或Golomb-Rice編碼),并可從特定編碼技術內的多個碼表中進行選擇。
視頻編碼器(340)在基本位流(諸如圖4a中示出的經編碼視頻位流(495))中產生經編碼圖片(341)的經編碼數據。在圖4a中,頭部格式化器/熵編碼器(490)在經編碼的視頻位流(495)中提供經編碼的數據。基礎位流的句法通常是用編解碼器標準或格式或者其擴展或變型來定義的。例如,經編碼的視頻位流(495)的格式可以是Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263、H.264、H.265)、VPx格式或其它格式的變型或擴展。在從視頻編碼器(340)輸出后,基本位流通常用容器格式被分組化或組織,如以下所解釋的。
基本位流中的經編碼的數據包括被組織為句法結構的句法元素。一般來說,句法元素可以是任何數據元素,并且句法結構是基本位流中處于指定次序的零個或更多個句法元素。在H.264/AVC標準和H.265/HEVC標準中,NAL單元是包含(1)對要跟隨的數據的類型的指示以及(2)該數據的一連串零個或更多個字節的句法結構。例如,NAL單元可包含片(經編碼的片)的經編碼的數據。NAL單元的尺寸(以字節為單位)在NAL單元之外被指示。經編碼片NAL單元以及某些其他限定類型的NAL單元被稱為視頻編碼層(“VCL”)NAL單元。訪問單元是處于連續解碼次序的一個或多個NAL單元的集合,包含圖片的(諸)片的經編碼的數據,并可能包含諸如元數據之類的其他關聯數據。
對于根據H.264/AVC或H.265/HEVC的標準的句法,圖片參數集(“PPS”)是包含可與圖片相關聯的句法元素的句法結構。PPS可被用于單個圖片,或者PPS可被重用于序列中的多個圖片。PPS通常被信號化為與圖片的經編碼的數據分開(例如一個NAL單元針對PPS,并且一個或多個其他NAL單元針對圖片的經編碼的數據)。在圖片的經編碼數據內,句法元素指示要為該圖片使用哪個PPS。類似地,對于遵照H.264/AVC標準或H.265/HEVC的標準的句法,序列參數集(“SPS”)是包含了與圖片序列相關聯的句法元素的句法結構。位流可包括單個SPS或多個SPS。SPS通常被信號化為與該序列的其它數據分開,并且其它數據中的句法元素指示要使用哪個SPS。
如圖3所示,視頻編碼器(340)還產生存儲器管理控制操作(“MMCO”)信號(342)或參考圖片集(“RPS”)信息。RPS是可以被使用以供在對當前圖片或任意后續圖片的運動補償中的參考的圖片集。如果當前圖片(331)不是已經被編碼的第一圖片,則在執行其編碼處理時,視頻編碼器(340)可使用已被存儲在經解碼圖片臨時存儲器存儲區域(360)中的一個或多個先前編碼/解碼的圖片(369)。這樣存儲的經解碼圖片(369)被用作當前圖片(331)的內容的圖片間預測的參考圖片。MMCO/RPS信息(342)向視頻解碼器指示哪些經重構的圖片可被用作參考圖片并因此應當被存儲在圖片存儲區域中。
參考圖3,經編碼圖片(341)和MMCO/RPS信息(342)(或與MMCO/RPS信息(342)等價的信息,因為在視頻編碼器(340)處已經知道各圖片的依賴關系和排序結構)由解碼處理仿真器(350)處理。解碼處理仿真器(350)實現視頻解碼器的一些功能,例如對任務進行解碼以重構參考圖片。以與MMCO/RPS信息(342)相一致的方式,解碼處理仿真器(350)確定給定的經編碼幀(341)是否需要被重構并被存儲以供在對要編碼的后續圖片的圖片間預測中用作參考幀。如果經編碼的圖片(341)需要被存儲,則解碼處理仿真器(350)對將由視頻解碼器進行的解碼處理建模,該視頻解碼器接收經編碼的圖片(341)并產生相應的經解碼的圖片(351)。通過這么做,當視頻編碼器(340)已經使用已被存儲在經解碼圖片存儲區域(360)中的經解碼的(諸)圖片(369)時,解碼處理仿真器(350)還使用來自存儲區域(360)的(諸)經解碼的圖片(369)作為解碼處理的一部分。
解碼處理仿真器(350)可被實現為視頻編碼器(340)的一部分。例如,解碼處理仿真器(350)包括圖4a和4b中示出的一些模塊和邏輯。在當前圖片(331)的重構期間,對于非調色板模式,當殘量(418)的值已被編碼/信號化時,經重構的殘量值與預測(458)組合以為當前圖片(331)從視頻信號(405)中產生對原始內容的近似或實際重構(438)。(在有損壓縮中,一些信息從視頻信號(405)中丟失。)對于調色板模式,有效地,預測(458)為空。
對于非調色板模式,為了重構殘量值,在縮放器/逆變換器(435)中,縮放器/逆量化器對經量化的變換系數執行逆縮放和逆量化。當變換階段尚未被跳過時,逆頻率變換器執行逆頻率變換,從而產生經重構的預測殘量值或樣本值的塊。如果變換階段已經被跳過,則也跳過逆頻率變換。在這種情況下,縮放器/逆量化器可對預測殘量數據(或樣本值數據)的塊執行逆縮放和逆量化,從而產生經重構的值。當殘量值已經被編碼/信號化時,視頻編碼器(340)將經重構的殘量值與預測(458)的值(例如,運動補償預測值、圖片內預測值)組合以形成重構(438)。當殘量值尚未被編碼/信號化時,視頻編碼器(340)使用預測(458)的值作為重構(438)。
對于調色板模式,調色板模式解碼器(485)使用來自調色板模式數據(482)的索引值和調色板來重構像素(即,未經逸出編碼的像素)。為了任何經逸出編碼的像素,在縮放器/逆變換器(435)中,縮放器/逆量化器對用逸出模式編碼的像素的經量化樣本值執行逆縮放和逆量化。經重構的樣本值提供重構(438)的值,因為在調色板模式中預測(458)為空。
對于圖片內預測,重構(438)的值可被饋送回圖片內預測估計器(440)和圖片內預測器(445)。重構(438)的值可被用于后續圖片的運動補償預測。重構(438)的值可被進一步濾波。對于當前圖片(331),濾波控件(460)確定如何對重構(438)的值執行去塊濾波和樣本自適應偏移(“SAO”)濾波。濾波控件(460)產生濾波控制數據(462),它被提供給頭部格式化器/熵編碼器(490)和合并器/(諸)濾波器(465)。
在合并器/(諸)濾波器(465)中,視頻編碼器(340)將來自不同小塊的內容合并到當前圖片的經重構版本中。視頻編碼器(340)根據濾波器控制數據(462)和濾波器自適應規則選擇性地執行去塊濾波和SAO濾波,以便自適應地平滑當前圖片(331)中的各邊界上的間斷。可替換地或另外地應用其它濾波(例如去振鈴濾波或自適應環路濾波(“ALF”);未示出)。取決于視頻編碼器(340)的設置,小塊邊界可選擇性地被濾波或根本不被濾波,并且視頻編碼器(340)可在編碼位流內提供句法元素以指示是否應用這樣的濾波。
在圖4a和4b中,經解碼圖片緩沖器(470)緩沖經重構的當前圖片以供在后續的運動補償預測中使用。更一般地,如圖3所示,經解碼圖片臨時存儲器存儲區域(360)包括多個圖片緩沖器存儲區域(361,362,…,36n)。通過與MMCO/RPS信息(342)相一致的方式中,解碼處理仿真器(350)管理存儲區域(360)中的內容,以便標識出具有視頻編碼器(340)不再需要將其用作參考圖片的圖片的任何圖片緩沖器(361,362等)。在對解碼處理進行建模之后,解碼處理仿真器(350)在圖片幀緩沖器(361、362等)中存儲已經以此方式標識出的新解碼的圖片(351)。
如圖3所示,經編碼的圖片(341)和MMCO/RPS信息(342)被緩沖在臨時經編碼數據區域(370)中。被聚集在經編碼數據區域(370)中的經編碼數據包含一個或多個圖片的經編碼數據作為基本位流的句法的一部分。被聚集在經編碼數據區域(370)中的經編碼數據還可包括與經編碼的視頻數據相關的媒體元數據(例如作為一個或多個補充增強信息(“SEI”)消息或視頻可用性信息(“VUI”)消息中的一個或多個參數)。
來自臨時經編碼數據區域(370)的經聚集的數據(371)由信道編碼器(380)處理。信道編碼器(380)可以分組化和/或復用經聚集的數據以供作為媒體流傳輸或存儲(例如根據媒體程序流或傳輸流格式,例如ITU-T H.222.0|ISO/IEC 13818-1或因特網實時傳輸協議格式(例如IETF RFC 3550)),在這種情況中,信道編碼器(380)可以添加句法元素作為媒體傳輸流的句法的一部分。或者,信道編碼器(380)可以組織經聚集的數據以供存儲成文件(例如根據媒體容器格式,諸如ISO/IEC 14496-12),在這種情況中信道編碼器(380)可添加句法元素作為媒體存儲文件的句法的一部分。或者,更一般地,信道編碼器(380)可以實現一個或多個媒體系統復用協議或傳輸協議,在這種情況中,信道編碼器(380)可以添加句法元素作為(諸)協議的句法的一部分。信道編碼器(380)將輸出提供給信道(390),該信道(390)表示存儲、通信連接或該輸出的另一信道。信道編碼器(380)或信道(390)還可以包括例如用于前向糾錯(“FEC”)編碼和模擬信號調制的其它元素(未示出)。
取決于實現和期望的壓縮類型,視頻編碼器系統(300)和/或視頻編碼器(340)的各模塊可被添加、省略、拆分成多個模塊、與其它模塊組合、和/或用相似的模塊來替代。在替換實施例中,具有不同模塊和/或其他模塊配置的編碼器系統或編碼器執行所描述的技術中的一個或多個。編碼器系統的具體實施例通常使用視頻編碼器系統(300)的變型或補充版本。視頻編碼器的具體實施例通常使用視頻編碼器340的變型或補充版本。所示出的在視頻編碼器系統(300)和視頻編碼器(340)內的各模塊之間的關系指示了信息分別在視頻編碼器系統(300)和視頻編碼器(340)中的一般流動;為簡明起見,未示出其它關系。
IV.示例解碼器系統。
圖5是結合其可實現所描述的一些實施例的示例視頻解碼器系統(500)的框圖。視頻解碼器系統(500)包括視頻解碼器(550),視頻解碼器(340)在圖6中被進一步詳述。
視頻解碼器系統(500)可以是能夠在多種解碼模式(例如針對實時通信的低等待時間解碼模式、代碼轉換模式以及針對來自文件或流的媒體回放的較高等待時間解碼模式)中的任一者中操作的通用解碼工具,或它可以是適用于一種這樣的解碼模式的專用解碼工具。視頻解碼器系統(500)可以被實現為操作系統模塊的部分、應用庫的部分、獨立的應用的部分或使用專用的硬件。總體上,視頻解碼器系統(500)從信道(510)接收經編碼的數據并產生經重構的圖片作為針對輸出目的地(590)的輸出。接收到的經編碼的數據可包括使用本文中描述的一個或多個創新來編碼的內容。
解碼器系統(500)包括信道(510),該信道(510)可表示存儲、通信連接或針對作為輸入的經編碼數據的另一信道。信道(510)產生已經被信道編碼的經編碼的數據。信道解碼器(520)可以處理經編碼的數據。例如,信道解碼器(520)(例如根據諸如ITU-T H.222.0|ISO/IEC 13818-1的媒體程序流或傳輸流格式,或諸如IETF RFC 3550的因特網實時傳輸協議格式)去分組化和/或去復用已被組織以供作為媒體流來傳輸或存儲的數據,在這種情況中,信道解碼器(520)可以解析所添加的作為媒體傳輸流的句法的一部分的句法元素。或者,信道解碼器(520)(例如根據諸如ISO/IEC 14496-12的媒體容器格式)來將已被組織為供作為文件來存儲的經編碼的視頻數據分開,在這種情況中,信道解碼器(520)可以解析所添加的作為媒體存儲文件的句法的一部分的句法元素。或者,更一般地,信道解碼器(520)可以實現一個或多個媒體系統去復用協議或傳輸協議,在這種情況中,信道解碼器(520)可以解析所添加的作為(諸)協議的句法的一部分的句法元素。信道(510)或信道解碼器(520)還可以包括例如用于FEC解碼和模擬信號解調的其它元素(未示出)。
從信道解碼器(520)輸出的經編碼的數據(521)被存儲在臨時經編碼數據區域(530)中,直到已經接收到足夠數量的這樣的數據。經編碼的數據(521)包括經編碼的圖片(531)和MMCO/RPS信息(532)。在經編碼數據區域(530)中的經編碼的數據(521)包含一個或多個圖片的經編碼的數據作為基本經編碼視頻位流的句法的一部分。在經編碼數據區域(530)中的經編碼數據(521)還可包括與經編碼的視頻數據相關的媒體元數據(例如作為一個或多個SEI消息或VUI消息中的一個或多個參數)。
一般來說,經編碼數據區域(530)臨時存儲經編碼的數據(521),直到這樣的經編碼的數據(521)被視頻解碼器(550)使用。此時,經編碼的圖片(531)和MMCO/RPS信息(532)的經編碼的數據被從經編碼數據區域(530)傳送到視頻解碼器(550)。隨著解碼繼續,新的經編碼數據被添加到經編碼數據區域(530)并且保留在經編碼數據區域(530)中的最舊的經編碼數據被傳輸到視頻解碼器(550)。
視頻解碼器(550)解碼經編碼圖片(531)以生成對應的經解碼圖片(551)。如圖6所示,視頻解碼器(550)接收經編碼的圖片(531)作為輸入以作為經編碼視頻位流(605)的一部分,并且視頻解碼器(550)產生相應的經解碼圖片(551)作為輸出以作為經重構的視頻(695)。作為該解碼的一部分,在一些情況下,視頻解碼器(550)使用用調色板模式對經逸出編碼的像素的穩健解碼。
一般地,視頻解碼器(550)包括執行諸如熵解碼、逆量化、逆頻率變換、運動補償、圖片內預測、調色板模式解碼和濾波之類的解碼任務的多個解碼模塊。解碼器(550)的許多組件被用于圖片內解碼和圖片間解碼這兩者。由那些組件執行的確切操作可取決于正被解壓縮的信息的類型而變化。經編碼的視頻位流的格式(605)可以是Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263、H.264、H.265)、或VPx格式、或其它格式的變型或擴展。
圖片可被組織成相同尺寸或不同尺寸的多個小塊。一個圖片還可以被組織成一個或多個片。片或小塊的內容可被進一步組織成塊或其它樣本值集。塊可以在不同的階段被進一步細分。例如,圖片可以被劃分成64x64塊、32x32塊或16x16塊,這些塊可進而被劃分成更小的樣本值塊。在例如針對H.264/AVC標準的各解碼實現中,圖片被劃分成各宏塊和塊。在例如針對H.265/HEVC標準的解碼實現中,圖片被分割成各CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
參考圖6,緩沖器在經編碼的視頻位流(605)中接收經編碼的數據,并使得接收到的經編碼數據可用于解析器/熵解碼器(610)。解析器/熵解碼器(610)通常應用在編碼器(340)中執行的熵編碼的逆對經熵編碼的數據進行熵解碼(例如其中二值化使用指數-Golomb或Golomb-Rice的上下文自適應二進制算術解碼)。作為解析和熵解碼的結果,解析器/熵解碼器(610)產生通用控制數據(622)、經量化的變換系數數據(632)(或者,對于調色板模式的逸出模式而言,為經量化的樣本值)、幀內預測數據(642)、運動數據(652)、調色板模式數據(682)以及濾波器控制數據(662)。單元的調色板模式數據(682)包括指示該單元的調色板(其可相關于預測的調色板來編碼)以及該單元的索引值(索引圖)的信息。
通用解碼控件(620)接收通用控制數據(622)。例如,通用控制數據(622)包括指示針對某單元的圖片內編碼是使用調色板編碼模式還是空間預測(例如,每個經圖片內預測的單元一個標志值)的信息。通用解碼控件(620)將控制信號(未示出)提供給其它模塊(例如縮放器/逆變換器(635)、圖片內預測器(645)、運動補償器(655)、調色板模式解碼器(685)、以及幀內/幀間切換)以設置和改變解碼期間的解碼參數。
參考圖5,在適當時,當執行其解碼處理時,視頻解碼器(550)可將一個或多個先前解碼的圖片(569)用作圖片間預測的參考圖片。視頻解碼器(550)從經解碼圖片臨時存儲器存儲區域(560)中讀取這樣的先前解碼的圖片(569),經解碼圖片臨時存儲器存儲區域是解碼圖片緩沖器(670)的示例。參考圖6,如果當前圖片是使用圖片間預測來預測的,則運動補償器(655)接收運動數據(652),諸如MV數據、參考圖片選擇數據、以及合并模式索引值。運動補償器(655)將MV應用于來自經解碼圖片緩沖器(670)的(諸)經重構的參考圖片。運動補償器(655)產生針對當前圖片中的幀間編碼塊的運動補償的預測。
在視頻解碼器(550)的分開的路徑中,圖片內預測器(645)接收幀內預測數據(642),諸如指示所使用的預測模式/方向的信息。對于幀內空間內預測,圖片內預測器(645)根據預測模式/方向使用當前圖片的重構(638)的值,從當前圖片的相鄰的、先前重構的樣本值中空間地預測當前圖片的當前塊的樣本值。或者,對于幀內塊復制模式,圖片內預測器(545)使用依據當前塊的位移(塊向量)指示的參考塊的先前重構的樣本值來預測當前塊的樣本值。
對于調色板解碼模式,調色板模式解碼器(685)接收調色板模式數據(682),諸如表示調色板和索引值的信息。調色板模式解碼器(685)使用表示某單元(例如CU)的至少一些像素的調色板。調色板將索引值映射到在該單元中使用的對應的基礎色彩。在解碼期間,對于該單元中的各像素,來自調色板的索引值被這些像素的適當基礎色彩取代。該單元中的經逸出編碼的像素可使用該經逸出編碼的像素的逸出代碼(調色板中的特殊索引值)和(諸)經量化的樣本值來解碼,經量化的樣本值如以下所描述的那樣重構。調色板可基于信號化在位流中的調色板模式數據(682)逐單元地改變。
對于非調色板模式,幀內/幀間切換選擇運動補償預測或圖片內預測的值以供用作針對給定塊的預測(658)。例如,當H.265/HEVC句法被遵循時,可以基于為圖片中的CU編碼的句法元素來控制幀內/幀間切換,該圖片可以包含幀內預測的CU和幀間預測的CU。當殘量值已經被編碼/信號化時,視頻解碼器(550)將預測(658)與重構的殘量值組合以產生來自視頻信號的內容的重構(638)。當殘量值尚未被編碼/信號化時,視頻解碼器(550)將預測(658)的值用作重構(638)。在調色板模式中,視頻編碼器(550)跳過殘量解碼操作,但可對已用逸出模式編碼的像素的樣本值進行逆量化。
對于非調色板模式,視頻解碼器(550)還重構預測殘量值。為了在殘量值已被編碼/信號化時重構殘量,縮放器/逆變換器(635)接收并處理經量化的變換系數數據(632)。在縮放器/逆變換器(635)中,縮放器/逆量化器對經量化的變換系數執行逆縮放和逆量化。縮放器/逆變換器(635)基于位流中的句法元素為圖片、小塊、片和/或視頻的其它部分設置QP值。逆頻率變換器執行逆頻率變換,從而產生經重構的預測殘量值或樣本值的塊。例如,逆頻率變換器將逆塊變換應用到頻率變換系數,從而產生樣本值數據或預測殘量數據。逆頻率變換可以是逆DCT、其整數近似、或另一種類型的逆頻率變換(例如逆離散正弦變換或其整數近似)。如果頻率變換在編碼期間被跳過,則逆頻率變換也被跳過。在這種情況下,縮放器/逆量化器可對預測殘量數據(或樣本值數據)的塊執行逆縮放和逆量化,從而產生經重構的值。視頻解碼器(550)將經重構的預測殘量值于預測(658)的預測值組合,從而產生重構(638)的值。
對于調色板模式,為了重構任何經逸出編碼的像素,在縮放器/逆變換器(635)中,縮放器/逆量化器對用逸出模式編碼的像素的任何經量化樣本值執行逆縮放和逆量化。經重構的樣本值提供重構(638)的值,因為在調色板模式中預測(658)為空。
對于圖片內預測,重構(638)的值可以被饋送回圖片內預測器(645)。對于圖片間預測,重構(638)的值可以被進一步濾波。在合并器/(諸)濾波器(665)中,視頻解碼器(550)將來自不同小塊的內容合并到圖片的經重構版本中。視頻解碼器(550)根據濾波器控制數據(662)和濾波自適應規則來執行去塊濾波和SAO濾波,以便自適應地平滑各圖片中的各邊界上的間斷。可替換地或另外地應用其它濾波(例如去振鈴濾波或ALF;未示出)。小塊邊界可以被選擇性地濾波或根本不被濾波,這取決于視頻解碼器(550)的設置或經編碼的位流數據內的句法元素。經解碼圖片緩沖器(670)緩沖經重構的當前圖片以供在后續的運動補償預測中使用。
視頻解碼器(550)還可包括后處理濾波器。后處理濾波器可包括去塊濾波、去振鈴濾波、自適應維納濾波、膜顆粒再現濾波、SAO濾波或另一種類的濾波。盡管“內環路”濾波是在運動補償環路中對圖片的經重構的樣本值執行的,并因此影響參考圖片的樣本值,但后處理濾波器是在經重構的樣本值被輸出以供顯示之前在運動補償環路外部被應用于經重構的樣本值的。
參考圖5,經解碼圖片臨時存儲器存儲區域(560)包括多個圖片緩沖器存儲區域(561,562,…,56n)。經解碼的圖片存儲區域(560)是經解碼的圖片緩沖器(670)的一個示例。解碼器(550)使用MMCO/PS信息(532)來標識該解碼器可將經解碼的圖片(551)存儲在其中的圖片緩沖器(561、562等)。解碼器(550)將經解碼的圖片(551)存儲在那個圖片緩沖器中。
輸出序列發生器(580)標識按輸出次序將產生的下一圖片何時可在經編碼圖片存儲區域(560)中獲得。當將按輸出次序產生的下一圖片(581)可在經解碼圖片存儲區域(560)中獲得時,輸出序列發生器(580)讀取該下一圖片并將其輸出到輸出目的地(590)(例如顯示器)。一般來說,輸出序列發生器(580)將圖片從經解碼圖片存儲區域(560)中輸出的次序可以與解碼器(550)解碼這些圖片的次序不同。
取決于實現和所希望的解壓縮的類型,視頻解碼器系統(500)和/或視頻解碼器(550)的模塊可以被添加、省略、拆分成多個模塊、與其他模塊組合和/或替換為類似的模塊。在替換實施例中,具有不同模塊和/或其他模塊配置的解碼器系統或解碼器執行所描述的技術中的一個或多個。解碼器系統的具體實施例通常使用視頻解碼器系統(500)的變型或補充版本。視頻解碼器的具體實施例通常使用視頻解碼器(550)的變型或補充版本。所示出的在視頻解碼器系統(500)和視頻解碼器(550)內的各模塊之間的關系指示信息分別在視頻解碼器系統(500)和視頻解碼器(550)中的一般流動;為簡單起見,未示出其他關系。
V.用調色板模式對經逸出編碼的像素進行穩健編碼/解碼。
本章節呈現用于用調色板模式對經逸出編碼的像素進行穩健編碼和解碼的方法。在各示例實現中,這些方法避免在解析經逸出編碼的像素時對單元級QP值的依賴性,這可使得編碼/解碼對數據丟失更穩健。
A.調色板模式的介紹。
在調色板模式中,媒體編碼器(諸如視頻編碼器或圖像編碼器)使用表示基礎色彩的索引值來對像素進行編碼。通常,這些索引值中的每一者與像素中的一不同值(“基礎色彩”)相關聯。在編碼期間,用對應的索引值來取代像素。媒體編碼器編碼并信號化將索引值映射到相應的基礎色彩的調色板以及表示像素的索引值的布置(“索引圖”)。媒體解碼器(諸如視頻解碼器或圖像解碼器)接收并解碼將索引值映射到相應基礎色彩的調色板。使用該調色板,媒體解碼器用像素的相應基礎色彩來取代索引圖中的索引值。
圖7示出單元(710)的樣本值塊。單元(730)為4x4單元。更一般地,對于二維布置,單元(710)可具有尺寸i x j,imin≤i≤imax且jmin≤j≤jmax,其中i和j可具有相等的值或具有不同的值。值imin、imax、jmin和jmax取決于實現。例如,對于針對H.265/HEVC編碼/解碼的一些實現,imin=jmin=8且imax=jmax=最大允許變換尺寸。由此,單元可具有除4x4以外的尺寸(例如,8x8、16x16或32x32)。或者,媒體解碼器可創建針對片、小塊、完整圖片、圖片組、或視頻序列的像素的調色板。
在圖7中,樣本值表示屏幕捕捉內容的強度或亮度值,并且樣本值包括統一值和強模式的部分。單元(710)具有三個針對不同色彩分量(例如,R、G和B分量,或Y、U和V分量)的樣本值塊。替換地,單元(710)可以是單色的,從而具有單個樣本值塊。在圖7中,單元(710)包括四個不同的色彩:(200,120,93)、(168,101,28)、(127,127,127)和(41,41,41)。
媒體編碼器創建將索引值分配給對應的基礎色彩的調色板(720)。在圖7的示例中,索引值0被分配給色彩(200,120,93),索引值1被分配給色彩(168,101,28),并以此類推。媒體編碼器可根據其在單元中出現的可能性來將索引值分配給各基礎色彩,使得較常見的樣本值具有較低的索引值,且較不常見的色彩具有較高的索引值,這通常在用較少的位來表示較低的索引值時導致較高效的編碼。替換地,媒體編碼器可根據當單元被掃描時的出現次序來將索引值分配給各基礎色彩,其依賴于后面的進程(諸如預測)來利用索引圖的索引值中的冗余性。調色板(720)可被實現為查找表或其它數據結構。
圖7示出索引圖(730),其中像素已用對應的索引值取代。用索引值取代像素的過程是無損的。(替換地,在有損壓縮變型中,如果精確匹配不可用,則像素可用表示最靠近該像素的基礎色彩的索引值來取代。這可減小調色板(720)的尺寸但是也引入了可感知的失真。)逸出編碼是用于處理并非用索引值來表示的像素的另一方法。
媒體編碼器編碼并輸出調色板(720)以及具有表示單元(710)的像素的索引值的索引圖(730)。作為編碼的一部分,索引圖(730)的索引值可用進一步的映射操作、預測和/或熵編碼來處理。調色板(720)也可用預測和/或熵編碼來進一步處理。
在解碼期間,媒體解碼器接收并解碼調色板(720)和用于索引圖(730)的數據。作為解碼的一部分,索引圖(730)的索引值可用熵解碼、映射操作和/或預測來處理。同樣,調色板(720)可用熵解碼和/或預測來處理。對于調色板模式解碼,媒體解碼器隨后使用調色板(720)來逆轉映射過程,如在圖7中所示的。
在一些情況下,單元包括稀有色彩。例如,稀有色彩可在16x16單元或32x32單元的成百的像素之中僅出現一或二次。但是,稀有色彩可被表示在調色板中,信號化稀有色彩的調色板數據的成本可超過益處。取代在調色板中表示稀有色彩,媒體編碼器可用逸出模式對具有稀有色彩的像素進行編碼。對于逸出模式,調色板包括將像素標記為是用逸出模式來編碼的特殊索引值。隨后,經逸出編碼的像素的樣本值可被量化并熵編碼。媒體編碼器不需要用逸出模式對稀有色彩進行編碼(即,媒體編碼器可在調色板中表示單元的所有色彩),但是使用逸出模式可在某些情況下改善編碼效率。針對色彩是否有資格成為稀有色彩的閾值取決于實現(例如,在單元中小于x次出現,其中x為1、2、3或某個其他閾值;或者小于單元中的像素的y%,其中y為0.5、1.0、2.0或某個其他閾值)。
圖8a示出用調色板模式的逸出模式來對樣本值進行編碼的示例。圖8b示出用調色板模式的逸出模式來對樣本值進行解碼的示例。一般來說,以上針對圖7的示例描述的選項也適用于圖8a和8b的示例(例如,單元尺寸、樣本值塊的數目、調色板的組織、索引值在調色板中的排序、對調色板和索引圖的編碼/解碼、映射的有損變型)。
圖8a示出單元(810)的原始樣本值塊。在圖8a中,單元(810)包括六個不同的色彩:(200,120,93)、(168,101,28)、(127,127,127)、(41,41,41)、(100,80,120)和(155,91,200)。
媒體編碼器創建將索引值分配給四種基礎色彩(它們是四種最常見的色彩)的調色板(820)。在圖8a的示例中,索引值0被分配給色彩(200,120,93),索引值1被分配給色彩(168,101,28),并以此類推。兩個色彩–(100,80,120)和(155,91,200)–沒有用索引值來表示。相反,具有這兩個稀有色彩之一的任何像素都被逸出編碼。調色板(820)包括用于標記經逸出編碼的像素的特殊索引值。在各示例實現中,特殊索引值是調色板(820)中的最后一個索引值,這可改善總編碼效率,因為其他索引值被認定為更常見。在圖8a和8b中,特殊索引值為索引值4。
圖8a示出索引圖(830),其中像素已用對應的索引值取代。兩個像素已用特殊索引值取代,從而將這兩個像素標記為經逸出編碼的像素。媒體編碼器也為經逸出編碼的像素產生經量化的樣本值的列表(840)。用于量化的QP可以是例如片級QP,如以下所描述的。在圖8a中,像素(100,80,120)和(155,91,200)的樣本值是使用為12的量化步長尺寸來量化的,其中量化步長尺寸取決于QP。經量化的樣本值為8(來自100)、7(來自80)、10(來自120)、13(來自155)、8(來自91)和17(來自200)。媒體編碼器還例如使用CABAC對經量化的樣本值進行熵編碼。
圖8b示出單元(810)的樣本值的經重構的塊以及來自圖8a的調色板(820)、索引圖(830)和經量化的樣本值的列表(840)。大多數像素是通過使用調色板(820)進行逆映射來重構的。然而,經逸出編碼的像素的樣本值是使用熵解碼和逆量化來重構的。對于經逸出編碼的像素,經重構的樣本值可準確地或近似地匹配原始樣本值。如圖8b所示,量化可為經逸出編碼的像素的一些樣本值引入損失。
在調色板模式的逸出模式用于H.265/HEVC編碼和解碼的一些實現中,在量化經逸出編碼的像素的樣本值時使用的QP是用于包括經逸出編碼的像素的編碼單元(“CU”)的QP。該QP值可使用CU級QP偏移值在逐CU的基礎上改變。CU級QP影響熵編碼和解碼。具體地,在編碼期間,當經量化的樣本值在進行上下文自適應二進制算術編碼之前被轉換為二進制值串時,該串中的二進制值的數目取決于經量化的樣本值的可能的最大值。類似地,在解碼期間,結合對經量化的樣本值的上下文自適應二進制算術解碼使用的二進制值串的集合取決于經量化的樣本值的可能的最大值。該最大值進而取決于樣本值的樣本深度和用于量化的QP(在文本中為CU級QP)。編碼器和解碼器從經量化的樣本值的可能的最大值中確定用于表示經逸出編碼的像素的經量化的樣本值的二進制值的數目。
由此,在解碼期間,經逸出編碼的像素的經熵編碼、經量化的樣本值的正確解析取決于解碼器首先重構CU的CU級QP。解碼器在確定對于經量化的樣本值而言可能的二進制值串的集合時并且因此在確定要從位流讀出多少二進制值時使用CU級QP。經逸出編碼的像素的經量化的樣本值的解碼和CU級QP值之間的此解析依賴性可能是有問題的。具體地,在存在傳輸錯誤時,該解析依賴性可導致嚴重的質量降級。
相反,在H.265/HEVC編碼/解碼的一些實現中,在經量化的變換系數的解碼和CU級QP值之間不存在解析依賴性。甚至在QP值可在逐CU的基礎上改變或在CU的一個塊到另一塊改變時,經量化變換系數的編碼/解碼獨立于QP值。在從位流解析/熵解碼經量化的變換系數時,不需要重構CU級QP值。因此,不存在對CU級QP值的解析依賴性。
B.用于用調色板模式對經逸出編碼的像素進行穩健編碼/解碼的通用技術。
圖9示出用于編碼(包括用調色板模式的逸出模式對像素進行穩健編碼)的通用技術(900)。媒體編碼器(諸如參考圖3、4a和4b描述的視頻編碼器或其他媒體編碼器)執行技術(900)。
媒體編碼器接收(910)當前圖片。媒體編碼器隨后在逐單元的基礎上對當前圖片進行編碼。當前圖片的單元可以是CU、宏塊、或某種其他類型的單元。作為對當前圖片進行編碼的一部分,媒體編碼器對當前圖片的當前單元進行編碼(920)。媒體編碼器檢查(930)是否要對當前圖片的下一單元繼續,并且如果如此,則通過(與當前單元一樣)對下一單元進行編碼來繼續。在對當前圖片的所有單元進行編碼后,媒體編碼器檢查(940)是否要對下一圖片(例如,視頻序列中的下一圖片)繼續。如果如此,則媒體編碼器通過接收下一圖片(與當前圖片一樣)來繼續。
在編碼過程期間,對于至少一個單元,編碼器用調色板模式對該單元進行編碼,并且作為調色板模式編碼的一部分,獨立于該單元的任何單元級QP用調色板模式的逸出模式對該單元的樣本值進行編碼。參考圖11-18在接著的四個章節中詳述用于用調色板模式的逸出模式對樣本值進行編碼的各示例方法。當前圖片的其他單元可在沒有經逸出編碼的像素的情況下用調色板模式來編碼,和/或用非調色板模式來編碼。
媒體編碼器可選擇性地啟用/禁用經逸出編碼的像素的樣本值是否獨立于任何單元級QP被編碼。例如,片頭部、PPS、SPS或其他句法結構中的標志指示用調色板模式的逸出模式編碼的像素的樣本值是否是獨立于任何單元級QP來編碼的。
圖10示出用于進行解碼(包括用調色板模式的逸出模式對像素進行穩健解碼)的通用技術(1000)。媒體解碼器(諸如參考圖5和6描述的視頻解碼器或其他媒體解碼器)執行技術(1000)。
媒體解碼器接收(1010)當前圖片的經編碼的數據。媒體解碼器隨后在逐單元的基礎上對當前圖片進行解碼。當前圖片的單元可以是CU、宏塊、或某種其他類型的單元。作為對當前圖片進行解碼的一部分,媒體解碼器對當前圖片的當前單元進行解碼(1020)。媒體解碼器檢查(1030)是否要針對當前圖片的下一單元繼續,并且如果如此,則通過(與當前單元一樣)對下一單元進行解碼來繼續。在對當前圖片的所有單元進行解碼后,媒體解碼器檢查(1040)是否針對下一圖片(例如,視頻序列中的下一圖片)繼續。如果如此,則媒體解碼器通過接收下一圖片的經編碼的數據(與當前圖片一樣)來繼續。
在解碼過程期間,對于至少一個單元,解碼器用調色板模式對該單元進行解碼,并且作為調色板模式解碼的一部分,用調色板模式的逸出模式對該單元的樣本值進行解碼,而沒有對該單元的單元級QP的任何解析依賴性。參考圖11-18在接著的四個章節中詳述用于用調色板模式的逸出模式對樣本值進行解碼的各示例方法。當前圖片的其他單元可在沒有經逸出編碼的像素的情況下用調色板模式來解碼,和/或用非調色板模式來解碼。
媒體解碼器可選擇性地啟用/禁用經逸出編碼的像素的樣本值是否在沒有對單元級QP的任何解析依賴性的情況下被解碼。例如,片頭部、PPS、SPS或其他句法結構中的標志指示用調色板模式的逸出模式編碼的像素的樣本值是否是在沒有對單元級QP的解析依賴性的情況下解碼的。
C.第一示例方法-使用片級QP或其他“恒定”QP。
圖11示出用于使用取決于片級QP的二值化過程用調色板模式對經逸出編碼的像素的樣本值進行編碼的示例技術(1100)。示例技術(1100)是圖9中示出的通用技術(900)的編碼(920)階段中的處理的示例。在第一示例方法中,當前圖片的片包括當前單元(例如,當前CU)。
媒體編碼器基于該片的片級QP使用量化步長尺寸來量化(1110)樣本值。例如,該片級QP是使用當前圖片的圖片級QP以及片的片級QP來設置的。替換地,片級QP還取決于適用于片中的用調色板模式的逸出模式編碼的任何樣本值的QP偏移,如參考圖13所描述的。經逸出編碼的像素的樣本值的QP偏移可取決于調色板模式是否被啟用被有條件地信號化在片的頭部(即,如果調色板模式被啟用,則QP偏移存在,并且如果調色板模式被禁用,則QP偏移不存在)。對于單元的不同塊,片級QP也可變化,這取決于色彩分量,其中不同的色彩分量具有在圖片級和/或片級信號化的不同QP偏移。在示例實現中,位流句法不準許在有經逸出編碼的像素的情況下用調色板模式來編碼單元的單元級QP(例如,在有經逸出編碼的像素的情況下,CU的CU級QP都不是以調色板模式來編碼的)。
媒體編碼器將經量化的樣本值映射(1120)到含一個或多個二進制值的串。該串是取決于對經量化的樣本值而言可能的最大值的二值化的部分,該最大值進而取決于片級QP。以下描述二值化的示例。替換地,媒體編碼器使用一些其他形式的二值化。媒體編碼器對含(諸)二進制值的串進行熵編碼(1130)。
圖12示出用于使用取決于片級QP的二值化過程用調色板模式對經逸出編碼的像素的樣本值進行解碼的示例技術(1200)。示例技術(1200)是圖10中示出的通用技術(1000)的解碼(1020)階段中的處理的示例。在第一示例方法中,當前圖片的片包括當前單元(例如,當前CU)。
媒體解碼器確定(1210)取決于對樣本值的經量化的樣本值而言可能的最大值的二值化。最大值取決于片的片級QP。例如,片級QP是使用當前圖片的圖片級QP以及片的片級QP來重構的。替換地,片級QP還取決于適用于片中的用調色板模式的逸出模式編碼的任何樣本值的QP偏移,如參考圖13所描述的。經逸出編碼的像素的樣本值的QP偏移可取決于調色板模式是否被啟用被有條件地信號化在片的頭部(即,如果調色板模式被啟用,則QP偏移存在,并且如果調色板模式被禁用,則QP偏移不存在)。對于單元的不同塊,片級QP也可變化,這取決于色彩分量,其中不同的色彩分量具有信號化在圖片級和/或片級的不同QP偏移。在示例實現中,位流句法不準許在有經逸出編碼的像素的情況下用調色板模式來解碼單元的單元級QP(例如,在有經逸出編碼的像素的情況下,CU的CU級QP都不是用調色板模式來編碼的)。
媒體解碼器對經量化的樣本值的含一個或多個二進制值的串進行熵解碼(1220)。該熵解碼使用該二值化。隨后,媒體解碼器使用片的片級QP對經量化的樣本值進行逆量化(1230)。
在一些示例實現中,經逸出編碼的像素是使用對片的各CU“恒定”的QP值來編碼和解碼的。該恒定QP是片級QP,其可取決于為片的各經逸出編碼的像素信號化的片級QP偏移,但對該片的所有CU相同。由于經逸出編碼的像素的QP對于該片的CU是固定的,在對經逸出編碼的像素的樣本值進行算術編碼/解碼時使用的串的二進制值的數目也是固定的。(串的二進制值的數目取決于樣本深度和QP值,其指示經量化的樣本值的最大可能值。)由此,當恒定的片級QP被使用時,不存在對經逸出編碼的像素的樣本值的CU級QP值的解析依賴性。同樣,當經逸出編碼的像素使用恒定的片級QP時,在調色板模式中經逸出編碼的像素的CU級QP偏移不需要被信號化在位流中。
圖13示出具有用于在調色板模式中信號化經逸出編碼的像素的片級QP偏移的句法元素的示例句法結構(1300)。具體地,圖13示出用于針對H.265/HEVC標準的擴展的編碼和解碼實現的片段頭部的句法結構。在句法結構(1300)中,句法元素palette_escape_pixel_qp_delta(調色板_逸出_像素_qb_增量)、palette_escape_pixel_cb_qp_offset(調色板_逸出_像素_cb_qb_偏移)和palette_escape_pixel_cr_qp_offset(調色板_逸出_像素_cr_qb_偏移)有條件的存在。如果調色板模式被啟用(即,palette_mode_enabled_flag(調色板_模式_被啟用_標志)的值為1),則句法元素palette_escape_pixel_qp_delta存在,并且句法元素palette_escape_pixel_cb_qp_offset和palette_escape_pixel_cr_qp_offset也可存在(如果色度陣列類型不是單色的)。
句法元素palette_escape_pixel_qp_delta指定片中用于經逸出編碼的像素的亮度樣本值(或其他主要色彩分量樣本值)的QP值(“EscQpY”)。當不存在時,該句法元素的值被推斷等于0。EscQpY被設為:
EscQpY=SliceQpY+palette_escape_pixel_qp_delta,
其中EscQpY的值被約束為在-QpBdOffsetY到+51的范圍內,并且QpBdOffsetY被定義在JCTVC-T1005-v2中,其指定H.265/HEVC標準的擴展。
句法元素palette_escape_pixel_cb_qp_offset指定在確定片中的經逸出編碼的像素的cb色彩分量樣本值(或其他次要色彩分量樣本值)所使用的QP值(“EscQpCb”)時要與pps_cb_qp_offset(pps_cb_qb_偏移)的值相加的差。palette_escape_pixel_cb_qp_offset的值被約束在-12到+12的范圍內,其為包括性的。當不存在時,該句法元素被推斷為等于0。pps_cb_qp_offset+palette_escape_pixel_cb_qp_offset的值被約束為處于-12到+12的范圍內,其為包括性的。EscQpCb被設為:
EscQpCb=Clip3(-QpBdOffsetC,57,EscQpY+pps_cb_qp_offset+palette_escape_pixel_cb_qp_offset),
其中,Clip3(a,b,c)是將c限幅(clip)為處于a和b的范圍內的函數,并且其中QpBdOffsetC和pps_cb_qp_offset被定義在JCTVC-T1005-v2中。
類似地,句法元素palette_escape_pixel_cr_qp_offset指定在確定片中的經逸出編碼的像素的cr色彩分量樣本值(或其他次要色彩分量樣本值)所使用的QP值(“EscQpCr”)時要與pps_cr_qp_offset的值相加的差。palette_escape_pixel_cr_qp_offset的值被約束在-12到+12的范圍內,其為包括性的。當不存在時,該句法元素被推斷為等于0。pps_cr_qp_offset+palette_escape_pixel_cr_qp_offset的值被約束為處于-12到+12的范圍內,其為包括性的。EscQpCr被設為:
EscQpCr=Clip3(-QpBdOffsetC,57,EscQpY+pps_cr_qp_offset+palette_escape_pixel_cr_qp_offset),
其中pps_cr_qp_offset被定義在JCTVC-T1005-v2中。
在解碼期間,對于不同的色彩分量,用于經逸出編碼的像素的經量化的樣本值的逆量化的片級QP(“qP”)取決于色彩分量的索引cIdx被定義為:
-如果cIdx等于0,qP=max(0,EscQpY);
-否則,如果cIdx等于1,qP=max(0,EscQpCb);以及
-否則(cIdx等于2),qP=max(0,EscQpCr)。
句法元素palette_escape_val(調色板_逸出_值)表示經逸出編碼的像素的經量化的樣本值。針對palette_escape_val的二值化過程如下前進。二值化過程接受色彩分量索引cIdx和標志cu_transquant_bypass_flag(cu_變換量化_繞過_標記)作為輸入,其指示對于CU變換和量化是否被繞過。二值化過程產生針對palette_escape_val句法元素的二值化(可能的二進制值串的集合)作為輸出。媒體解碼器導出變量bitDepth(位深度)為:
bitDepth=(cIdx==0)?BitDepthY:BitDepthC,
其中BitDepthY(位深度Y)指示主要色彩分量的位深度,并且BitDepthC(位深度C)指示次要色彩分量的位深度。
如果cu_transquant_bypass_flag為真,則媒體解碼器通過調用在JCTVC-T1005-v2的章節9.3.3.5中指定的固定長度二值化過程來導出palette_escape_val的二值化,其中輸入參數被設為(1<<bitDepth)–1。
另一方面,如果cu_transquant_bypass_flag為假,則媒體解碼器如下導出palette_escape_val的二值化。媒體解碼器如下導出量化參數qP:
qP=(cIdx==0)?EscQpY:((cIdx==1)EscQpCb?EscQpCr)。
媒體解碼器如下導出變量bdShift(bd移位):
bdShift=14+qP/6。
列表quantScale[](量化比例[])被指定為quantScale[k]={26214,23302,20560,18396,16384,14564},k=0…5。媒體解碼器如下導出經截短的二進制(“TB”)二值化過程的最大參數cMax:
cMax=(((1<<bitDepth)-1)*quantScale[qP%6]+(1<<(bdShift-1)))>>bdShift。
最后,為了產生palette_escape_value句法元素的二值化,媒體解碼器調用在JCTVC-T1005-v2的章節9.3.3.6中指定的TB二值化過程,其中cMax作為輸入。
在示例實現中,對經逸出編碼的像素的經量化的樣本值的編碼/解碼使用片級QP。替換地,取代使用片級QP,調色板模式的逸出模式使用另一QP值,出于對片的各單元進行編碼/解碼的目的,該另一QP值是“恒定的”。例如,該恒定的QP是圖片級QP(其可在各色彩分量之間變化)、因小塊而異的QP(其可在各色彩分量之間變化)或另一級別的QP。
在示例實現中,經逸出編碼的像素的樣本值總是使用片級QP或其他恒定QP來編碼和解碼。替換地,經逸出編碼的像素的樣本值可使用恒定QP或使用CU級QP來編碼/解碼,這取決于設置。例如,(在片頭部、PPS、SPS或其他句法結構中的)高級標志控制經逸出編碼的像素的樣本值是使用恒定QP還是CU級QP來編碼/解碼的。該標志進而控制位流中存在還是不存在經逸出編碼的像素的(諸)片級QP偏移,并控制該位流中存在還是不存在經逸出編碼的像素的(諸)CU級QP偏移。
D.第二示例方法-根據樣本深度的二值化。
圖14示出用于使用取決于樣本值的樣本深度(即,每樣本值的位數)的二值化過程用調色板模式對經逸出編碼的像素的樣本值進行編碼的示例技術(1400)。示例技術(1400)是圖9中示出的通用技術(900)的編碼(920)階段中的處理的示例。示例技術(1400)是無損的—經逸出編碼的像素的樣本值沒有被量化。
媒體編碼器將樣本值映射(1410)到含一個或多個二進制值的串。該串是取決于樣本值的樣本深度的固定長度二值化的一部分。以下描述了固定長度二值化的示例。替換地,媒體編碼器使用一些其他形式的二值化。媒體編碼器對含(諸)二進制的串進行熵編碼(1420)。
圖15示出用于使用取決于樣本值的樣本深度(即,每樣本值的位數)的二值化過程用調色板模式對經逸出編碼的像素的樣本值進行解碼的示例技術(1500)。示例技術(1500)是圖10中示出的通用技術(1000)的解碼(1020)階段中的處理的示例。示例技術(1500)是無損過程的一部分-經逸出編碼的像素的樣本值沒有被逆量化。
媒體解碼器確定(1510)取決于樣本值的樣本深度的固定長度二值化。以下描述固定長度二值化的示例。媒體解碼器對含樣本值的一個或多個二進制值的串進行熵解碼(1220)。該熵解碼使用固定長度二值化。
在一些示例實現中,變量bitBepth指示同一值的樣本深度。媒體解碼器導出變量bitDepth為:
bitDepth=(cIdx==0)?BitDepthY:BitDepthC,
其中BitDepthY指示主要色彩分量的位深度,并且BitDepthC指示次要色彩分量的位深度。媒體解碼器通過調用在JCTVC-T1005-v2的章節9.3.3.5中指定的固定長度二值化過程來導出(句法元素palette_escape_val的)樣本值的二值化,其中輸入參數被設為(1<<bitDepth)–1。
由于樣本深度通常在高級別處被定義(例如,針對視頻序列),二值化過程的輸入是固定的。替換地,經逸出編碼的像素的樣本值是使用取決于另一固定規則的二值化過程來編碼/解碼的。
E.第三和第四示例方法-k階指數-Golomb二值化
圖16示出用于在調色板模式中使用k階指數-Golomb二值化過程對經逸出編碼的像素的樣本值進行編碼的示例技術(1600)。示例技術(1600)是圖9中示出的通用技術(900)的編碼(920)階段中的處理的示例。
媒體編碼器基于片的片級QP、單元的單元級QP或其他QP使用量化步長尺寸來量化(1610)樣本值。例如,QP是使用當前圖片的圖片級QP、片的片級QP偏移和單元的單元級QP偏移來設置的。(即使在單元級QP偏移不影響解析的情況下(如在以下描述的獨立于QP的變型中),單元級QP偏移也可在設置用于量化的因單元而異的QP時被使用。)對于單元的不同塊,QP也可變化,這取決于色彩分量,例如其中不同的色彩分量具有在圖片級和/或片級信號化的不同QP偏移。
媒體編碼器將經量化的樣本值映射(1620)到含一個或多個二進制值的串。該串是取決于輸入值k的k階指數-Golomb二值化的一部分。以下描述了k階指數-Golomb二值化的示例。替換地,媒體編碼器使用一些其他形式的二值化。媒體編碼器對含(諸)二進制的串進行熵編碼(1630)。
圖17示出用于在調色板模式中使用k階指數-Golomb二值化過程對經逸出編碼的像素的樣本值進行解碼的示例技術(1700)。示例技術(1700)是圖10中示出的通用技術(1000)的解碼(1020)階段中的處理的示例。
媒體解碼器確定(1710)取決于輸入值k的k階指數-Golomb二值化。媒體解碼器對經量化的樣本值的含一個或多個二進制值的串進行熵解碼(1720)。該熵解碼使用k階指數-Golomb二值化。隨后,媒體解碼器基于片的片級QP、單元的單元級QP或其他QP使用量化步長尺寸來逆量化(1730)經量化的樣本值。例如,QP是使用當前圖片的圖片級QP、片的片級QP偏移和/或單元的單元級QP偏移來重構的。(即使在單元級QP偏移不影響解析的情況下(如在以下描述的獨立于QP的變型中),單元級QP偏移也可在設置用于量化的因單元而異的QP時被使用。)對于單元的不同塊,QP也可變化,這取決于色彩分量,例如其中不同的色彩分量具有在圖片級和/或片級信號化的不同QP偏移。
圖18是示出用于k階指數-Golomb二值化過程的示例技術的偽代碼列表(1800)。k階指數-Golomb二值化過程產生將每一可能值(如圖18中示出的,symbolVal)與相應的二進制值串相關聯的二值化。如圖18所示,指定了在針對每一值symbolVal的二值化過程中產生的串。函數Abs(X)返回X的絕對值。對函數put(X)的每一次調用都在二進制串的結束處添加二進制值X,其中X等于0或1。
1.獨立于QP的二值化過程。
在一些示例實現中,為該解碼預定義用于k階指數-Golomb二值化的k值。例如,為經逸出編碼的像素的樣本值的編碼和解碼預先確定或硬編碼k的值。或者,k值由編碼器設置,被信號化在片頭部、PPS、SPS或其他句法結構中,并且由解碼器用作k階指數-Golomb二值化過程的輸入。由于k值是預定義的,調色板模式中針對經逸出編碼的像素的樣本值的二值化過程是獨立于QP的。
k的值取決于實現。一般來說,當大多數經量化的樣本值為零或接近于零時,較小的k值(諸如為0或1)受到偏好。另一方面,當經量化的樣本值在范圍方面在各非零值之中更均勻地分布時,甚至在接近于零的值更常見的情況下,較大的k值(諸如,2、3或4)受到偏好。在一些示例實現中,k為3。
通過這種方法,針對palette_escape_val的二值化過程如下前進。二值化過程接受色彩分量索引cIdx和標志cu_transquant_bypass_flag作為輸入,其指示對于CU變換和量化是否被繞過。二值化過程產生針對palette_escape_val句法元素的二值化(可能的二進制值串的集合)作為輸出。媒體解碼器導出變量bitDepth為:
bitDepth=(cIdx==0)?BitDepthY:BitDepthC,
其中BitDepthY指示主要色彩分量的位深度,并且BitDepthC指示次要色彩分量的位深度。
如果cu_transquant_bypass_flag為真,則媒體解碼器通過調用在JCTVC-T1005-v2的章節9.3.3.5中指定的固定長度二值化過程來導出palette_escape_val的二值化,其中輸入參數被設為(1<<bitDepth)–1。
另一方面,如果cu_transquant_bypass_flag為假,媒體解碼器如圖18所示導出palette_escape_val的k階指數-Golomb二進制,其中k等于3。
2.獨立于QP的二值化過程。
在一些示例實現中,用于k階指數-Golomb二值化的k值是在解碼期間取決于QP值來導出的。例如,在當前單元是當前圖片的片的一部分時,k值可至少部分地基于片的片級QP來設置。由此,k階指數-Golomb二進制的階是自適應的,這取決于片級QP。當QP為高時,由于大多數經量化的樣本值被預期為處于相對較小的值范圍中的零或接近于零,因此k值可被設為較低值(諸如0或1)。另一方面,當QP為低時,由于較多非零的經量化的樣本值被預期,并且那些非零的經量化的樣本值可分布在較大的值范圍上,因此k值可被設為較高值(諸如,2、3或4)。
通過這種方法,針對palette_escape_val的二值化過程如下前進。二值化過程接受色彩分量索引cIdx和標志cu_transquant_bypass_flag作為輸入,其指示對于CU變換和量化是否被繞過。二值化過程產生針對palette_escape_val句法元素的二值化(可能的二進制值串的集合)作為輸出。媒體解碼器導出變量bitDepth為:bitDepth=(cIdx==0)?BitDepthY:BitDepthC.
如果cu_transquant_bypass_flag為真,則媒體解碼器通過調用在JCTVC-T1005-v2的章節9.3.3.5中指定的固定長度二值化過程來導出palette_escape_val的二值化,其中輸入參數被設為(1<<bitDepth)–1。
另一方面,如果cu_transquant_bypass_flag為假,則媒體解碼器如下導出palette_escape_val的二值化。媒體解碼器如下導出量化參數qP:
如果cIdx==0,qP=SliceQpY
否則,如果cIdx==1,
qP=Clip3(-QpBdOffsetC,57,SliceQpY+pps_cb_qp_offset+slice_cb_qp_offset)
否則(cIdx==2),
qP=Clip3(-QpBdOffsetC,57,SliceQpY+pps_cr_qp_offset+slice_cr_qp_offset)
替換地,QP值qP以某一其它方式來設置。例如:
QpY=SliceQpY
qPiCb=Clip3(-QpBdOffsetC,57,QpY+pps_cb_qp_offset+slice_cb_qp_offset)
qPiCr=Clip3(-QpBdOffsetC,57,QpY+pps_cr_qp_offset+slice_cr_qp_offset)
如果ChromaArrayType等于1,則基于索引qPi分別等于qPiCb和qPiCr,變量qPCb和qPCr被設為等于如在JCTVC-T1005-v2的表8-10中指定的QpC的值。否則,基于索引qPi分別等于qPiCb和qPiCr,變量qPCb和qPCr被設為等于Min(qPi,51)。此后:
Qp′Y=QpY+QpBdOffsetY
Qp′Cb=qPCb+QpBdOffsetC
Qp′Cr=qPCr+QpBdOffsetC
最后,取決于色彩分量設置樣本值的適當QP。如果cIdx等于0,qP被設為Qp′Y。如果cIdx等于1,qP被設為Qp′Cb。如果cIdx等于2,qP被設為Qp′Cr。
媒體解碼器如下導出變量bdShift:
bdShift=14+qP/6.
列表quantScale[]被指定為quantScale[k]={26214,23302,20560,18396,16384,14564},k=0…5。媒體解碼器如下導出經截短的二進制(“TB”)二值化過程的最大參數cMax:
cMax=(((1<<bitDepth)-1)*quantScale[qP%6]+(1<<(bdShift-1)))>>bdShift。
由此,cMax指示在調色板模式中經逸出編碼的像素的(給定色彩分量的)經量化的樣本值的最大可能值。
隨后,媒體解碼器根據以下偽代碼基于cMax確定k(“order(階)”)的值。
order=0;
while(cMax>1){order++;cMax>>=1;}
order的值可進一步通過添加固定偏移(諸如,0、1、2、-1、-2等)來修改,其中order被限幅為大于或等于0。替換地,為了計算趨于稍微較高的order的值,媒體解碼器根據以下偽代碼基于cMax確定k(階)的值:
order=0;
while(cMax>0){order++;cMax>>=1;}
最后,媒體解碼器如圖18所示導出palette_escape_val的k階指數-Golomb二值化,其中k等于如上導出的值“order(階)”。
F.其他示例方法-組合。
前述方法可被組合使用。例如,媒體編碼器確定單元是用無損方式還是有損方式編碼的。如果單元是用無損方式編碼的,則媒體編碼器使用在章節V.D中描述的方法。否則(單元是用有損方式編碼的),媒體編碼器使用在章節V.E中描述的方法之一。相應的媒體解碼器確定單元已被用無損方式還是有損方式編碼。如果單元已被用無損方式編碼,則媒體解碼器使用在章節V.D中描述的方法。否則(單元已被用有損方式編碼),媒體編碼器使用在章節V.E中描述的方法之一。
鑒于可應用所公開的本發明的原理的許多可能的實施例,應當認識到,所示實施例僅是本發明的優選示例,并且不應認為是限制本發明的范圍。相反,本發明的范圍由后續的權利要求來界定。我們要求作為我們的發明保護落入這些權利要求范圍和精神內的所有內容。