視頻和圖像編碼/解碼中的塊向量預測的制作方法
【專利摘要】在塊向量(“BV”)值的預測方面的創新改善了使用幀內塊復制(“BC”)預測對塊進行編碼或解碼。例如,創新中的一些涉及使用具有非零值的默認BV預測值。其它創新涉及使用當前塊的多個BV預測值候選中的被選擇的一個BV預測值候選。又一些創新涉及使用跳躍模式,其中當前幀內BC預測的塊使用預測的BV值。
【專利說明】視頻和圖像編碼/解碼中的塊向量預測
[0001 ] 背景
[0002]工程師使用壓縮(也叫做源編碼(source coding或source encoding))來降低數字視頻的比特率。壓縮通過將視頻信息轉換成較低比特率的形式來降低存儲和傳送該信息的成本。解壓(也被稱為解碼)從壓縮的形式中重構一種版本的原始信息。“編解碼器”是編碼器/解碼器系統。
[0003]在過去的二十年中,已采用了各種視頻編解碼器標準,包括ITU-T H.26UH.262(MPEG-2或IS0/IEC 13818-2)、Η.263和H.264(MPEG_4AVC或IS0/IEC 14496-10)標準、MPEG-KIS0/IEC 11172 I 172-2)和MPEG-4視覺(IS0/IEC 14496-2)標準以及SMPTE 421M(VC_1)標準。最近,HEVC標準(ITU-T H.265SIS0/IEC 23008-2)已被批準。當前,正在開發(例如,針對可縮放視頻編碼/解碼、針對在樣本比特深度或色度采樣率方面具有較高保真度的視頻的編碼/解碼、或針對多視圖編碼/解碼的)HEVC標準的擴展。視頻編解碼器標準通常定義針對經編碼的視頻比特流的句法的選項,從而詳述當在編碼和解碼時使用特定特征時該比特流中的參數。在許多情況下,視頻編解碼器標準還提供關于解碼器應當執行以在解碼時取得一致的結果的解碼操作的細節。除了編解碼器標準外,各種專用編解碼器格式定義針對經編碼的視頻比特流的句法的其他選項以及相應的解碼操作。
[0004]幀內塊復制(“BC”)是H.265/HEVC擴展的處于開發中的預測模式。對于幀內BC預測模式,圖片的當前塊的樣本值是使用同一圖片中的先前重構的樣本值來預測的。塊向量(“BV”)指示從當前塊到圖片的包括用于預測的先前重構的樣本值的區域的位移。BV被信號化在比特流中。幀內BC預測是一種形式的圖片內預測一一針對圖片的塊的幀內BC預測不使用除了同一圖片中的樣本值以外的任何樣本值。
[0005]如當前在HEVC標準中規定并在針對HEVC標準的某一參考軟件中實現的,幀內BC預測模式具有若干問題。具體來說,在許多情形下,BV值沒有被有效地信號化,并且采用可預測BC移位的塊編碼不能高效率地被處理。
[0006]概述
[0007]概括來說,詳細的描述呈現了在使用幀內塊復制(“BC”)預測對塊進行編碼和/或解碼期間在塊向量(“BV”)值的預測方面的創新。例如,創新中的一些涉及使用具有非零值的默認BV預測值。其它創新涉及使用當前塊的多個BV預測值候選中的被選擇的一個BV預測值候選。又一些創新涉及使用跳躍模式,其中當前幀內BC預測的塊使用預測的BV值。在許多情形下,創新改善了 BV值的編碼效率,或者以其他方式改善幀內BC預測的塊的編碼效率。
[0008]根據本文中描述的創新的第一方面,編碼器確定圖片的當前塊的默認BV預測值。默認BV預測值包括具有非零值的BV預測值分量。例如,默認BV預測值的垂直和水平BV分量中的一個為零,而另一個具有非零值。編碼器使用默認BV預測值來對當前塊進行編碼。例如,編碼器使用當前塊的BV值來執行幀內塊復制(“BC”)預測、使用當前塊的BV值和默認BV預測值來確定BV差、以及隨后對BV差進行編碼。或者,編碼器直接使用默認BV預測值來執行幀內BC預測。
[0009]對應的解碼器確定圖片的當前塊的默認BV預測值。默認BV預測值包括具有非零值的BV預測值分量。例如,默認BV預測值的垂直和水平BV分量中的一個為零,而另一個具有非零值。解碼器使用默認BV預測值來對當前塊進行解碼。例如,解碼器對當前塊的BV差進行解碼,隨后將經解碼的BV差與默認BV預測值組合以重構當前塊的BV值。解碼器使用BV值來執行幀內BC預測。或者,解碼器直接使用默認BV預測值來執行幀內BC預測。
[0010]編碼器或解碼器可取決于圖片的前一個塊的實際BV值是否可用來有條件地使用默認BV預測值。例如,編碼器/解碼器檢查圖片的前一個塊的實際BV值是否可用。如果是,則前一個塊的實際BV值被用作為當前塊的BV預測值。否則,默認BV預測值被用作為當前塊的BV預測值。在一些實現中,如果(I)前一個塊和當前塊是給定編碼樹單元的一部分,并且(2)前一個塊的預測模式是幀內BC預測模式,則前一個塊的實際BV值是可用的。
[0011]根據本文中描述的創新的第二方面,編碼器使用BV預測來確定圖片的當前塊的BV值。當前塊的BV值指示到圖片中的區域的位移。編碼器使用幀內BC用BV值(此處為BV預測值)來對當前塊進行編碼。編碼器在比特流中輸出當前塊是以跳躍模式編碼的指示,并且比特流缺少當前塊的BV差和殘留數據。
[0012]對應的解碼器從比特流中接收圖片的當前塊是以跳躍模式編碼的指示。比特流缺少當前塊的BV差和殘留數據。解碼器使用BV預測來確定當前塊的BV值。解碼器隨后使用幀內塊復制預測用BV值(此處為BV預測值)來對當前塊進行解碼。
[0013]對于被跳過的塊,比特流可包括索引值,該索引值指示從多個BV預測值候選的集合中對要用作當前塊的BV值(此處為BV預測值)的BV預測值候選的選擇。索引值可以是標志值或整數值。
[0014]根據本文中描述的創新的第三方面,編碼器確定圖片的當前塊的多個BV預測值候選的集合,隨后選擇要用于當前塊的一個BV預測值候選。編碼器使用所選擇的BV預測值候選來對當前塊進行編碼,在比特流中輸出指示所選擇的BV預測值候選的索引值。
[0015]對應的解碼器從比特流中接收索引值。解碼器確定圖片的當前塊的多個BV預測值候選的集合,并且基于索引值來選擇要用于當前塊的一個BV預測值候選。解碼器使用所選擇的BV預測值候選對當前塊進行解碼。
[0016]在一些情況下,比特流包括當前塊的BV差(當前塊是非跳躍模式、非合并模式塊)。BV差指示所選擇的BV預測值候選和當前塊的BV值之間的差。在其它情況下,當前塊是合并模式塊,并且比特流缺少當前塊的BV差但是可包括當前塊的殘留數據。在又一些其它情況下,比特流中的值指示當前塊是跳躍模式塊。在這些情況下,比特流缺少當前塊的BV差,并且比特流缺少當前塊的殘留數據。
[0017]總得來說,多個BV預測值候選包括多至X個之前的塊的實際BV值。之前的塊可以至少部分基于當前塊周圍的鄰居(例如,當前塊的左邊、上邊以及右上的塊)的位置來標識。或者,之前的塊可至少部分基于與當前塊相比的解碼順序來標識(例如,最后三個幀內BC預測的塊)。多個BV預測值候選還可包括一個或多個默認BV預測值。
[0018]針對BV預測的創新可以被實現為方法的一部分、被適配成執行該方法的計算設備的一部分或存儲用于使計算設備執行該方法的計算機可執行指令的有形計算機可讀介質的一部分。各創新可以結合地或分開地使用。具體來說,針對BV預測的合并模式可與具有非零運動的默認BV預測值和/或針對幀內BC預測的塊的跳躍模式結合使用。針對幀內BC預測的塊的跳躍模式可與具有非零運動的默認BV預測值結合使用。
[0019]參考附圖閱讀以下詳細描述,將更清楚本發明的前述和其他目標、特征和優點。
[0020]附圖簡述
[0021]圖1是其中可實現所描述的一些實施例的示例計算系統的示圖。
[0022]圖2a和2b是其中可實現所描述的一些實施例的示例網絡環境的示圖。
[0023]圖3是結合其可實現所描述的一些實施例的示例編碼器系統的示圖。
[0024]圖4是結合其可實現所描述的一些實施例的示例解碼器系統的示圖。
[0025]圖5a和5b是示出結合其可實現所描述的一些實施例的示例視頻編碼器的示圖。
[0026]圖6是示出結合其可實現所描述的一些實施例的示例視頻解碼器的示圖。
[0027]圖7a—7d分別是示出針對圖片的塊的幀內BC預測、針對塊的BV預測、默認(0,0)BV預測值、以及具有非零值的默認BV預測值的示圖。
[0028]圖8和9是示出包括使用具有非零值的默認BV預測值的編碼的技術的流程圖。
[0029]圖10和11是示出包括使用具有非零值的默認BV預測值的解碼的技術的流程圖。
[0030]圖12和13分別是示出包括針對幀內BC預測的塊的跳躍模式的編碼和解碼的技術的流程圖。
[0031]圖14是示出圖片中的之前的塊的實際BV值中的BV預測值候選的示圖。
[0032]圖15是示出圖片中的相鄰塊的實際BV值中的BV預測值候選的示圖。
[0033]圖16a和16b是示出包括在多個BV預測值候選中進行選擇的編碼的技術的流程圖。
[0034]圖17a和17b是示出包括在多個BV預測值候選中進行選擇的解碼的技術的流程圖。
[0035]詳細描述
[0036]詳細的描述呈現了在使用幀內塊復制(“BC”)預測對塊進行編碼和/或解碼期間在塊向量(“BV”)值的預測方面的創新。例如,創新中的一些涉及使用具有非零值的默認BV預測值。其它創新涉及使用當前塊的多個BV預測值候選中的被選擇的一個BV預測值候選。又一些創新涉及使用跳躍模式,其中當前幀內BC預測的塊使用預測的BV值。在許多情形下,創新改善了 BV值的編碼效率,這可降低比特率和/或改善質量,或者以其他方式改善幀內BC預測的塊的編碼效率。
[0037]雖然本文中描述的操作是被適當描述為由視頻編碼器或視頻解碼器來執行,但在許多情況中,這些操作可由另一類型的媒體處理工具(例如圖像編碼器或圖像解碼器)來執行。
[0038]本文中描述的一些創新是參考專用于HEVC標準的句法元素和操作來示出的。例如,對HEVC標準的草稿版本JCTVC-01005——即2013年11月的“高效視頻編碼(HEVC)范圍擴展文本規范:第5稿”作出參考。本文中描述的各創新還可以被實現為用于其它標準或格式。
[0039]更一般地,本文中描述的各示例的各種替代是可能的。例如,本文中描述的一些方法可以通過改變描述的方法動作的順序、通過拆分、重復或忽略某些方法動作等來更改。所公開的技術的各方面能夠被組合地或分開地使用。不同的實施例使用所描述的創新中的一個或多個。本文中描述的一些創新解決了背景中指出的一個或多個問題。通常,所給出的技術/工具并不解決所有這些問題。
[0040]1.示例計算系統
[0041]圖1示出了其中可實現所描述的若干創新的合適計算系統(100)的概括示例。計算系統(100)并不旨對使用范圍或功能提出任何限制,因為這些創新可以在不同的通用或專用計算系統中實現。
[0042]參考圖1,計算系統(100)包括一個或多個處理單元(I 10、115)和存儲器(120、125)。處理單元(I 10、115)執行計算機可執行指令。處理單元可以是通用中央處理單元(“CPU”)、專用集成電路(“ASIC”)中的處理器或任何其它類型的處理器。在多處理系統中,多個處理單元執行計算機可執行指令以提高處理能力。例如,圖1示出中央處理單元(110)以及圖形處理單元或協處理單元(115)。有形存儲器(120、125)可以是(諸)處理單元可訪問的易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,ROM、EEPR0M、閃存等)或這兩者的某一組合。存儲器(120,125)存儲實現針對幀內塊向量預測的一個或多個創新的軟件(180),該軟件用適用于由(諸)處理單元執行的計算機可執行指令的形式。
[0043]計算系統可具有附加的特征。例如,計算系統(100)包括存儲(140)、一個或多個輸入設備(150)、一個或多個輸出設備(160)以及一個或多個通信連接(170)。諸如總線、控制器或網絡之類的互連機制(未示出)將計算系統(100)的各組件互連。通常,操作系統軟件(未示出)為在計算系統(100)中執行的其它軟件提供操作環境,并協調計算系統(100)的各組件的活動。
[0044]有形存儲(140)可以是可移動或不可移動的,并包括磁盤、磁帶或磁帶盒、⑶-R0M、DVD或可用于儲存信息并可在計算系統(100)內訪問的任何其他介質。存儲(140)存儲實現針對塊向量預測的一個或多個創新的軟件(180)的指令。
[0045](諸)輸入設備(150)可以是觸摸輸入設備(諸如鍵盤、鼠標、筆或跟蹤球)、語音輸入設備、掃描設備或向計算系統(100)提供輸入的另一設備。對于視頻,(諸)輸入設備(150)可以是相機、視頻卡、TV調諧卡、或接受模擬或數字形式的視頻輸入的類似設備、或將視頻樣本讀到計算系統(100)中的⑶-ROM或⑶-RW。(諸)輸出設備(160)可以是顯示器、打印機、揚聲器、CD刻錄機或提供來自計算系統(100)的輸出的另一設備。
[0046](諸)通信連接(170)允許通過通信介質與另一計算實體通信。通信介質傳達諸如計算機可執行指令、音頻或視頻輸入或輸出、或已調制數據信號中的其他數據之類的信息。已調制數據信號是使其一個或多個特征以在信號中編碼信息的方式設置或改變的信號。作為示例而非限制,通信介質可以使用電的、光學的、RF或其它載體。
[0047]各創新可以在計算機可讀介質的一般上下文中描述。計算機可讀介質是可在計算環境內訪問的任何可用有形介質。作為示例而非局限,對于計算系統(100),計算機可讀介質包括存儲器(120、125)、存儲(140)、和以上任意的組合。
[0048]各創新可在計算機可執行指令(諸如包括在程序模塊中的在計算系統中在目標現實或虛擬處理器上執行的那些計算機可執行指令)的一般上下文中描述。一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、庫、對象、類、組件、數據結構等。如各實施例中所描述的,這些程序模塊的功能可以被組合,或者在這些程序模塊之間拆分。針對各程序模塊的計算機可執行指令可以在本地或分布式計算系統中執行。
[0049]術語“系統”和“設備”在此被互換地使用。除非上下文明確指示,否則,術語并不暗示對計算系統或計算設備的類型的任何限制。一般說來,計算系統或計算設備可以是本地的或分布式的,并且可以包括具有實現本文中描述的功能的軟件的專用硬件和/或通用硬件的任意組合。
[0050]所公開的方法還可使用被配置成執行所公開的方法中的任一者的專用計算硬件來實現。例如,所公開的方法可以由被專門設計或配置成實現所公開的方法中的任一者的集成電路(例如,諸如ASIC數字信號處理器(“DSP”)之類的ASIC、圖像處理單元(“GPU”)、或諸如場可編程門陣列(“FPGA”)之類的可編程邏輯器件(“PLD”))來實現。
[0051]為了呈現起見,本詳細描述使用了如“確定”和“使用”等術語來描述計算系統中的計算機操作。這些術語是對由計算機執行的操作的高級抽象,且不應與人類所執行的動作混淆。對應于這些術語的實際的計算機操作取決于實現而不同。
[0052]I1.示例網絡環境
[0053]圖2a和2b示出了包括視頻編碼器(220)和視頻解碼器(270)的示例網絡環境(201,202)。編碼器(220)和解碼器(270)使用合適的通信協議通過網絡(250)連接。網絡(250)可包括因特網或另一計算機網絡。
[0054]在圖2a所示的網絡環境(201)中,每個實時通信(“RTC”)工具(210)都包括用于雙向通信的編碼器(220)和解碼器(270)兩者。給定的編碼器(220)可以產生符HEVC標準(也被稱為H.265), SMPTE 42IM標準、IS0/IEC14496-10標準(也被稱為H.264或AVC)、另一標準、或專用格式的變型或擴展的輸出,使得相應的解碼器(270)接受來自編碼器(220)的經編碼的數據。雙向通信可以是視頻會議、視頻電話呼叫或其它雙方或多方通信場景的部分。雖然,圖2a中的網絡環境(201)包括兩個實時通信工具(210),但網絡環境(201)可改為包括參與多方通信的三個或更多個實時通信工具(210)。
[0055]實時通信工具(210)管理編碼器(220)進行的編碼。圖3示出可以被包括在實時通信工具(210)中的示例編碼器系統(300)。替換地,實時通信工具(210)使用另一編碼器系統。實時通信工具(210)還管理解碼器(270)做出的解碼。圖4示出可以被包括在實時通信工具(210)中的示例解碼器系統(400)。替換地,實時通信工具(210)使用另一解碼器系統。
[0056]在圖2b中示出的網絡環境(202)中,編碼工具(212)包括編碼供遞送給多個回放工具(214)的視頻的編碼器(220),此多個回放工具(214)包括解碼器(270)。單向通信可被提供用于視頻監視系統、web相機監視系統、遠程桌面會議演示或在其中編碼視頻并將視頻從一個位置發送到一個或多個其它位置的其它場景。雖然在圖2b中的網絡環境(202)包括兩個回放工具(214),但該網絡環境(202)可以包括更多或更少的回放工具(214)。一般來說,回放工具(214)與編碼工具(212)通信以確定回放工具(214)要接收的視頻流。回放工具(214)接收該流、緩沖所接收的經編碼數據達合適的時間段并開始解碼和回放。
[0057]圖3示出可以被包括在編碼工具(212)中的示例編碼器系統(300)。替換地,編碼工具(212)使用另一編碼器系統。編碼工具(212)還可以包括用于管理與一個或多個回放工具(214)的連接的服務器側控制器邏輯。圖4示出可以被包括在回放工具(214)中的示例解碼器系統(400)。替換地,回放工具(214)使用另一解碼器系統。回放工具(214)還可以包括用于管理與一個或多個編碼工具(212)的連接的客戶機側控制器邏輯。
[0058]II 1.示例編碼器系統。
[0059]圖3是結合其可實現所描述的一些實施例的示例編碼器系統(300)的框圖。編碼器系統(300)可以是能夠用多種編碼模式中的任一者(諸如用于實時通信的低等待時間編碼模式、轉碼模式和用于從文件或流中產生供回放的媒體的較高等待時間編碼模式)操作的通用編碼工具,或它可以是適用于一種這樣的編碼模式的專用編碼工具。編碼器系統(300)可以被實現為操作系統模塊、應用庫的部分、獨立的應用。總體上,編碼器系統(300)從視頻源(310)接收源視頻幀序列(311)并產生經編碼數據作為到信道(390)的輸出。輸出到信道的經編碼的數據可包括使用如本文中所述的BV預測中的創新來編碼的內容。
[0060]視頻源(310)可以是相機、調諧器卡、存儲介質、或其它數字視頻源。視頻源(310)以例如每秒30幀的幀速率產生視頻幀序列。如本文中所使用的,術語“幀”一般指代源、經編碼的或經重構的圖像數據。對于逐行掃描視頻,幀是逐行掃描視頻幀。對于隔行視頻,在各示例實施例中,隔行視頻幀可以在編碼之前被去隔行。替換地,兩個互補的隔行視頻場可以被編碼在一起作為單個視頻幀或者被編碼成兩個經分開編碼的場。除了指示逐行掃描視頻幀或隔行掃描視頻幀之外,術語“幀”或“圖片”可以指示單個非成對的視頻場、互補的成對視頻場、表示在給定時間的視頻對象的視頻對象平面、或較大圖像中的感興趣區域。視頻對象平面或區域可以是包括場景的多個對象或區域的較大圖像的一部分。
[0061]抵達的源幀(311)被存儲在包括多個幀緩沖區存儲區域(321、322、-_、3211)的源幀臨時存儲器存儲區域(320)中。幀緩沖區(321、322等)在源幀存儲區域(320)中保持一個源幀。在一個或多個源幀(311)已被存儲在幀緩沖區(321、322等)中后,幀選擇器(330)從源幀存儲區域(320)中選擇一個體源幀。幀選擇器(330)選擇幀以供輸入到編碼器(340)的次序可不同于視頻源(310)產生這些幀的次序,例如某些幀的編碼可以被按序延遲,從而允許一些更后面的幀被先編碼并由此促成時間上向后的預測。在編碼器(340)之前,編碼器系統(300)可包括預處理器(未示出),該預處理器在編碼之前執行對選中的幀(331)的預處理(例如濾波)。預處理可包括色彩空間轉換成主要(例如亮度)和次要(例如偏向紅色和偏向藍色的色度差)分量以及用于編碼的重采樣處理(例如以減少色度分量的空間分辨率)。通常,在編碼之前,視頻已被轉換成諸如YUV的色彩空間,其中亮度(Y)分量的樣本值表示明亮度或強度值,而色度(U,V)分量的樣本值表示色差值。色度樣本值可以被子采樣到較低的色度采樣率(例如用于YUV 4:2:0格式),或者色度樣本值可以具有與亮度樣本值相同的分辨率(例如用于YUV 4:4:4格式)。或者,視頻可用另一格式(例如,RGB 4:4:4格式)來編碼。
[0062]編碼器(340)編碼選中的幀(331)以產生經編碼的幀(341)并且還產生存儲器管理控制操作(“MMC0”)信號(342)或參考圖片集(“RPS”)信息。如果當前幀不是已被編碼的第一幀,則在執行其編碼處理時,編碼器(340)可以使用已經被存儲在經解碼幀的臨時存儲器存儲區域(360)中的一個或多個先前被編碼/解碼的幀(369)。這樣的存儲的經解碼幀(369)被用作用于當前源幀(331)的內容的幀間預測的參考幀。麗C0/RPS信息(342)向解碼器指示哪些經重構的幀可被用作參考幀,并且因此應該被存儲在幀存儲區域中。
[0063]—般來說,編碼器(340)包括執行編碼任務的多個編碼模塊,編碼任務為諸如分割成小塊、幀內預測估計和預測、運動估計和補償、頻率變換、量化和熵編碼。由編碼器(340)執行的確切操作可以取決于壓縮格式而變化。輸出的經編碼數據的格式可以是HEVC格式(H.265)、Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG_1、MPEG_2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的變型或擴展。
[0064]編碼器(340)可以將幀分割成相同尺寸或不同尺寸的多個小塊。例如,編碼器
(340)沿小塊行和小塊列來拆分幀,這些小塊行和小塊列利用幀邊界定義在該幀內的小塊的水平和垂直邊界,其中每個小塊是矩形區域。小塊通常被用于提供并行處理的選項。幀還可以被組織成一個或多個片,其中一個片可以是整個幀或該幀的區域。片可以獨立于幀中的其它片編碼,這改善了錯誤復原性。出于編碼和解碼的目的,片或小塊的內容被進一步分割成塊或其它樣本值集。
[0065]對于根據HEVC標準的句法來說,編碼器將幀(或片或小塊)的內容拆分成編碼樹單元。編碼樹單元(“CTU”)包括被組織為亮度編碼樹塊(“CTB”)的亮度采樣值,并且對應的色度采樣值被組織為兩個色度CTBXTU(及其CTB)的尺寸由編碼器來選擇,并且可例如為64x64、32x32或16x16個樣本值。CTU包括一個或多個編碼單元。編碼單元(“CU”)具有亮度編碼塊(“CB” )和兩個對應的色度CB ο例如,具有64x64亮度CTB和兩個64x64色度CTB (YUV4:4:4格式)的CTU可以被拆分成4個⑶,其中每個⑶包括一 32x32亮度CB和兩個32x32色度CB,并且每個CU可能被進一步拆分成更小的CU。或者,作為另一示例,具有64x64亮度CTB和兩個32x32色度CTB (YUV 4:2:0格式)的CTU可以被拆分成4個⑶,其中每個⑶包括一 32x32亮度CB和兩個16x16色度CB,并且每個⑶可能被進一步拆分成更小的⑶。⑶的最小允許尺寸(例如8X 8、16 X 16)可被信號化在位流中。
[0066]通常,CU具有諸如幀間或幀內之類的預測模式。出于信號化預測信息(例如預測模式細節、移位值等)和/或預測處理的目的,CU包括一個或多個預測單元。預測單元(“PU”)具有亮度預測塊(“PB” )和兩個對應的色度I3B ο對于幀內預測的CU,PU與CU具有相同的尺寸,除非CU具有最小尺寸(例如8x8)。在該情況下,CU可被拆分成四個較小的HJ(例如,如果最小CU尺寸為8x8,則PU為4x4),或者HJ可具有最小CU尺寸,如CU的句法元素所指示的。出于殘留編碼/解碼的目的,CU還具有一個或多個變換單元,其中變換單元(“TU”)具有一變換塊(“TB” )和兩個色度TB。在幀內預測的CU中的PU可以包含單個TU(尺寸與PU相同)或多個TU。如本文中所使用的,術語“±夬”可以指示CB、PB、TB或某些其它樣本值集,這取決于上下文。編碼器決定如何將視頻分割成CTU、⑶、PU、TU等。
[0067]回到圖3,編碼器根據來自源幀(331)中的其它、先前重構的樣本值的預測來表示該幀(331)內編碼的塊。對于幀內BC預測,圖片內估計器估計塊相對于其它、先前重構的采樣值的塊的位移。幀內預測參考區域是幀中用于生成塊的BC預測值的樣本區域。幀內預測區域可以用(在BV估計中確定的)塊向量(“BV”)值來指示。對于塊的空間內預測,圖片內估計器估計相鄰的經重構的樣本值到該塊的外插。圖片內估計器可以輸出經熵編碼的預測信息(例如幀內BC預測的BV值或幀內空間預測的預測模式(方向))。幀內預測預測器應用預測信息來確定幀內預測值。
[0068]編碼器(340)依據來自參考幀的預測來表示源幀(331)的幀間編碼的預測的塊。運動估計器估計塊相對于一個或多個參考幀(369)的運動。當使用多個參考幀時,這多個參考幀可來自不同的時間方向或相同的時間方向。經運動補償的預測參考區域是(諸)參考幀中用于生成當前幀中的樣本塊的經運動補償的預測值的樣本區域。運動估計器輸出經熵編碼的諸如運動向量(“MV”)信息之類的運動信息。運動補償器將MV應用于參考幀(3 6 9)以確定用于幀間預測的經運動補償的預測值。
[0069]編碼器可以確定在塊預測值(幀內或幀間)和對應的原始值之間的差值(如果有的話)。這些預測殘留值將進一步使用頻率變換、量化和熵編碼來編碼。例如,編碼器(340)為圖片、小塊、片和/或視頻的其它部分設置量化參數(“QP”)的值,并相應地量化變換系數。編碼器(340)的熵編碼器壓縮經量化的變換系數值以及某些輔助信息(例如MV信息、BV預測值的索引值、BV差、QP值、模式決策、參數選擇)。典型的熵編碼技術包括指數-Go1mb編碼、Golomb-Rice編碼、算術編碼、差分編碼、Huffman編碼、行程長度編碼、可變長度對可變長度(“V2V”)編碼、可變長度對固定長度(“V2F”)編碼、Lempel-ZiV( “LZ”)編碼、字典編碼、概率區間劃分熵編碼(“PIPE”)和上述編碼的組合。熵編碼器可對不同種類的信息使用不同的編碼技術,并可組合地應用多個技術(例如,通過應用Golomb-Rice編碼,隨后應用算術編碼),并可從特定編碼技術內的多個碼表中進行選擇。
[0070]自適應去塊濾波器可以被包括在編碼器(340)中的運動補償循環內以平滑經解碼的幀中的塊邊界行和/或列上的間斷。可替換地或另外地應用其它濾波(諸如去振鈴濾波、自適應環路濾波(uAir)或樣本自適應偏移(“SA0”)濾波,未示出)作為內環路濾波操作。[0071 ] 經編碼的幀(341)和MMC0/RPS信息(342)(或與MMC0/RPS信息(342)等價的信息,因為在編碼器(340)處已經知道各幀的依賴關系和排序結構)由解碼處理仿真器(350)處理。解碼處理仿真器(350)實現了解碼器的一些功能,例如對任務進行解碼以重構參考幀。以與MM⑶/RPS信息(342)相一致的方式,解碼處理仿真器(350)確定給定的經編碼幀(341)是否需要被重構并被存儲以供在對要編碼的后續幀的幀間預測中用作參考幀。如果經編碼的幀
(341)需要被存儲,則解碼處理仿真器(350)對將由解碼器進行的解碼處理建模,該解碼器接收經編碼的幀(341)并產生相應的經解碼的幀(351)。通過這么做,當編碼器(340)已經使用已被存儲在經解碼幀存儲區域(360)中的經解碼的幀(369)時,解碼處理仿真器(350)還使用來自存儲區域(360)的經解碼的幀(369)作為解碼處理的一部分。
[0072]經解碼幀臨時存儲器存儲區域(360)包括多個幀緩沖存儲區域(361、362、...、36η)。以與MMC0/RPS信息(342)相一致的方式,解碼處理仿真器(350)管理存儲區域(360)中的內容,以便標識出具有編碼器(340)不再需要將其用作參考幀的幀的任何幀緩沖區(361、362等)。在對解碼處理進行建模之后,解碼處理仿真器(350)在幀緩沖區(361、362等)中存儲已經以此方式標識出的新解碼的幀(351)。
[0073]經編碼的幀(341)和MM⑶/RPS信息(342)被緩沖在臨時的經編碼數據區域(370)中。被聚集在經編碼數據區域(370)中的經編碼數據包含一個或多個圖片的經編碼數據作為基本經編碼視頻位流的句法的一部分。在經編碼數據區域(370)中被聚集的經編碼數據還可包括與經編碼的視頻數據相關的媒體元數據(例如作為一個或多個補充增強信息(“SEI”)消息或視頻可用性信息(“VUI”)消息中的一個或多個參數)。
[0074]來自臨時的經編碼數據區域(370)的經聚集的數據(371)由信道編碼器(380)處理。信道編碼器(380)可以(例如根據諸如ITU-T H.222.0|IS0/IEC 13818-1的媒體程序流或傳輸流格式,或諸如IETF RFC 3550的因特網實時傳輸協議格式)分組化和/或復用經聚集的數據供作為媒體流來傳輸或存儲,在這種情況中,信道編碼器(380)可以添加句法元素作為媒體傳輸流的句法的一部分。或者,信道編碼器(380)可以(例如根據諸如IS0/IEC14496-12的媒體容器格式)組織經聚集的數據以供作為文件來存儲,在這種情況中,信道編碼器(380)可以添加句法元素作為媒體存儲文件的句法的一部分。或者,更一般地,信道編碼器(380)可以實現一個或多個媒體系統復用協議或傳輸協議,在這種情況中,信道編碼器(380)可以添加句法元素作為(諸)協議的句法的一部分。信道編碼器(380)將輸出提供給信道(390),該信道(390)表示存儲、通信連接或該輸出的另一信道。信道編碼器(380)或信道(390)還可以包括例如用于前向糾錯(“FEC")編碼和模擬信號調制的其它元素(未示出)。
[0075]IV.示例解碼器系統。
[0076]圖4是結合其可實現所描述的一些實施例的示例解碼器系統(400)的框圖。解碼器系統(400)可以是能夠在多種解碼模式(例如針對實時通信的低等待時間解碼模式以及針對來自文件或流中的媒體回放的較高等待時間解碼模式)中的任一者操作的通用解碼工具,或它可以是適用于一種這樣的解碼模式的專用解碼工具。解碼器系統(400)可以被實現為操作系統模塊、應用庫的一部分或獨立的應用。總體上,解碼器系統(400)從信道(410)接收經編碼數據并產生經重構的幀作為針對輸出目的地(490)的輸出。經編碼的數據可包括已使用本文中所描述的BV預測中的創新來編碼的內容。
[0077]解碼器系統(400)包括信道(410),該信道(410)可以表示存儲、通信連接或針對作為輸入的經編碼數據的另一信道。信道(410)產生已經被信道編碼的經編碼數據。信道解碼器(420)可以處理經編碼數據。例如,信道解碼器(420)可以(例如根據諸如ITU-T H.222.0IS0/IEC 13818-1的媒體程序流或傳輸流格式,或諸如IETF RFC 3550的因特網實時傳輸協議格式)去分組化和/或去復用已被聚集以供作為媒體流來傳輸或存儲的數據,在這種情況中,信道解碼器(420)可以解析所添加的作為媒體傳輸流的句法的一部分的句法元素。或者,信道解碼器(420)可以(例如根據諸如IS0/IEC 14496-12的媒體容器格式)來將已被聚集以供作為文件來存儲的經編碼的視頻數據分開,在這種情況中,信道解碼器(420)可以解析所添加的作為媒體存儲文件的句法的一部分的句法元素。或者,更一般地,信道解碼器(420)可以實現一個或多個媒體系統去復用協議或傳輸協議,在這種情況中,信道解碼器(420)可以解析所添加的作為(諸)協議的句法的一部分的句法元素。信道(410)或信道解碼器(420)還可以包括例如用于FEC解碼和模擬信號解調的其它元素(未示出)。
[0078]從信道解碼器(420)輸出的經編碼數據(421)被存儲在臨時的經編碼數據區域(430)中,直到已經接收到足夠數量的這樣的數據。經編碼數據(421)包括經編碼的幀(431)和MMC0/RPS信息(432)。在經編碼數據區域(430)中的經編碼數據(421)包含一個或多個圖片的經編碼數據作為基本編碼的視頻比特流的句法的一部分。在經編碼數據區域(430)中的經編碼數據(421)還可包括與經編碼的視頻數據相關的媒體元數據(例如作為一個或多個SE I消息或VUI消息中的一個或多個參數)。
[0079]一般來說,經編碼數據區域(430)臨時存儲經編碼數據(421),直到這樣的經編碼數據(421)被解碼器(450)使用。此時,經編碼幀(431)和MMC0/RPS信息(432)的經編碼數據被從經編碼數據區域(430)傳輸到解碼器(450)。當解碼繼續時,新的經編碼數據被添加到經編碼數據區域(430)并且保留在經編碼數據區域(430)中的最舊的經編碼數據被傳輸到解碼器(450)。
[0080]解碼器(450)解碼經編碼幀(431)以產生相應的經解碼幀(451)。在適當時,當執行其解碼處理時,解碼器(450)可以將一個或多個先前解碼的幀(469)用作幀間預測的參考幀。解碼器(450)從經解碼幀臨時存儲器存儲區域(460)中讀取這樣的先前解碼的幀(469)。通常,解碼器(450)包括執行諸如熵解碼、幀內預測、運動補償幀間預測、逆量化、逆頻率變換和小塊合并之類的解碼任務的多個解碼模塊。由解碼器(450)執行的確切操作可以取決于壓縮格式而變化。
[0081]例如,解碼器(450)接收經壓縮的幀或幀序列的經編碼數據,并產生包括經解碼的幀(451)的輸出。在解碼器(450)中,緩沖器接收針對經壓縮的幀的經編碼數據,并在適當時,使得接收到的經編碼數據對熵解碼器可用。熵解碼器對經熵編碼的量化數據以及經熵編碼的輔助信息進行熵解碼,通常應用編碼器中執行的熵編碼的逆來進行熵解碼。運動補償器將運動信息應用于一個或多個參考幀以形成針對正被重構的幀的任何幀間編碼塊的經運動補償的預測值。幀內預測模塊可從相鄰的、先前重構的樣本值中空間地預測當前塊的樣本值,或者對于幀內BC預測,使用幀中的幀內預測區域的先前重構的樣本值來預測當前塊的樣本值。幀內預測區域可用BV值來指示。解碼器(450)還重構預測殘留值。逆量化器對經熵解碼的數據進行逆量化。例如,解碼器(450)基于比特流中的句法元素來設置圖片、小塊、片和/或其它視頻部分的QP值,并相應地對變換系數進行逆量化。逆頻率變換器將量化的頻域數據轉換成空間域數據。對于幀間預測的塊,解碼器(450)將重構的預測殘留值與經運動補償的預測值組合。解碼器(450)可以類似地將預測殘留值與來自幀內預測的預測值組合。自適應去塊濾波器被包括在視頻解碼器(450)中的運動補償環路內以平滑經解碼的幀(451)中的塊邊界行和/或列上的間斷。可替換地或另外地應用其它濾波(例如去振鈴濾波、ALF或SAO濾波;未示出)作為內環路濾波操作。
[0082]經解碼幀臨時存儲器存儲區域(460)包括多個幀緩沖區存儲區域(461、462、...、46η)。經解碼幀存儲區域(460)是經解碼圖片緩沖區的一個示例。解碼器(450)使用MMC0/PS信息(432)來標識該解碼器可將經解碼幀(451)存儲在其中的幀緩沖器(461、462等)。解碼器(450)將經解碼的幀(451)存儲在那個幀緩沖器中。
[0083]輸出序列發生器(480)標識按輸出次序將產生的下一幀何時可在經編碼幀存儲區域(460)中獲得。當按輸出次序將產生的下一幀(481)可在經解碼幀存儲區域(460)中獲得時,輸出序列發生器(480)讀取該下一幀并將其輸出到輸出目的地(490)(例如顯不器)。一般來說,輸出序列發生器(480)將幀從經解碼幀存儲區域(460)中輸出的次序可以與解碼器(450)解碼這些幀的次序不同。
[0084]V.示例視頻編碼器。
[0085]圖5a和5b是可結合其實現所描述的一些實施例的通用視頻編碼器(500)的框圖。編碼器(500)接收包括當前圖片的視頻圖片序列作為輸入視頻信號(505)并在經編碼視頻位流(595)中產生經編碼數據作為輸出。
[0086]編碼器(500)是基于塊的并使用取決于實現的塊格式。塊還可在不同的階段上被進一步細分,例如在預測、頻率變換和/或熵編碼階段。例如,圖片可以被劃分成64x64塊、32x32塊或16x16塊,這些塊隨后可以被劃分成更小的樣本值塊以用于編碼和解碼。在針對HEVC標準的編碼的實現中,編碼器將圖片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
[0087]編碼器(500)使用圖片內編碼和/或圖片間編碼來壓縮圖片。編碼器(500)的許多組件被用于圖片內編碼和圖片間編碼兩者。由這些組件執行的確切操作可取決于所壓縮的信息的類型而變化。
[0088]小塊化模塊(510)可選地將圖片分割成相同尺寸或不同尺寸的多個小塊。例如,小塊化模塊(510)沿小塊行和小塊列來拆分圖片,所述小塊行和小塊列利用圖片邊界定義在圖片內的小塊的水平和垂直邊界,其中每個小塊是矩形區域。
[0089]通用編碼控件(520)接收輸入視頻信號(505)的圖片以及來自編碼器(500)的各個模塊的反饋(未示出)。整體上,通用編碼控件(520)將控制信號(未示出)提供給其它模塊(例如小塊化模塊(510)、變換器/縮放器/量化器(530)、縮放器/逆變換器(535)、圖片內估計器(540)、運動估計器(550)以及幀內/幀間切換)以設置和改變編碼期間的編碼參數。具體來說,通用編碼控件(520)可決定在編碼期間是否以及如何使用BV預測的各方面(例如,采用預測的BV值的跳躍模式、用于BV預測的合并模式)。通用編碼控件(520)還可以估計編碼期間的中間結果,例如執行速率-失真分析來估計。通用編碼控件(520)產生指示在編碼期間所做出的決定的通用控制數據(522),使得對應的解碼器可以作出一致的決定。通用控制數據(522)被提供給頭部格式化器/熵編碼器(590)。
[0090]如果使用圖片間預測來預測當前的圖片,運動估計器(550)相對于一個或多個參考圖片估計輸入視頻信號(505)的當前圖片的采樣值的塊的運動。經解碼的圖片緩沖器(570)緩沖一個或多個經重構的先前編碼的圖片以供用作參考圖片。當使用多個參考圖片時,這多個參考圖片可以來自不同的時間方向或相同的時間方向。運動估計器(550)產生諸如MV數據、合并模式索引值和參考圖片選擇數據的輔助信息運動數據(552)。運動數據(552)被提供給頭部格式化器/熵編碼器(590)以及運動補償器(555)。
[0091]運動補償器(555)將MV應用于來自經解碼的圖片緩沖器(570)的(諸)經重構的參考圖片。運動補償器(555)產生針對當前圖片的經運動補償的預測。
[0092]在編碼器(500)內的分開的路徑中,圖片內估計器(540)確定如何執行對輸入視頻信號(505)的當前圖片的樣本值塊的圖片內預測。當前圖片可全部或部分使用圖片內編碼來編碼。對于幀內空間預測,圖片內估計器(540)使用當前圖片的重構(538)的值來確定如何從當前圖片的鄰近的、先前重構的樣本值中空間地預測當前圖片的當前塊的樣本值。或者,對于使用BV值的幀內BC預測,圖片內估計器(540)估計當前塊的樣本值到當前圖片內的不同候選區域的位移。
[0093]圖片內估計器(540)產生輔助信息幀內預測數據(542),諸如指示幀內預測使用空間預測還是幀內BC預測的信息(例如,每幀內塊的標志值)、預測模式方向(針對幀內空間預測的情況)、以及BV值(針對幀內BC預測的情況)。圖片內預測數據(542)被提供給頭部格式化器/熵編碼器(590)以及圖片內預測器(545)。
[0094]根據幀內預測數據(542),圖片內預測器(545)從當前圖片的鄰近的先前重構的樣本值中在空間上預測當前圖片的當前塊的樣本值。或者,對于幀內BC預測,圖片內預測器(545)使用幀內預測參考區域的先前重構的樣本值來預測當前塊的樣本值,幀內預測參考區域由針對當前塊的BV值來指示。在一些情況下(例如,對于跳躍模式塊或合并模式塊),BV值可以是BV預測值(經預測的BV值)。當圖片的色度數據具有與亮度數據相同的分辨率時(例如,當格式為YUV 4:4:4格式或RGB 4:4:4格式時),對色度塊應用的BV值可與對亮度塊應用的BV值相同。另一方面,當圖片的色度數據相對于亮度數據具有降低的分辨率時(例如,當格式為YUV 4:2:0格式時),對色度塊應用的BV值可被縮小并可能被四舍五入以對色度分辨率方面的差異進行調整(例如,通過將BV值的垂直和水平分量除以2并且將其截短或四舍五入成整數值來調整)。
[0095]幀內/幀間切換選擇經運動補償的預測或圖片內預測的值用作給定塊的預測(558)。對于非跳躍模式塊,預測(558)的塊和輸入視頻信號(505)的原始當前圖片的對應部分之間的差異(如果有的話)提供殘留值(518)的值。在當前圖片的重構期間,對于非跳躍模式塊,經重構的殘留值與預測(558)組合來從視頻信號(505)中產生對原始內容的重構(538)。然而,在有損壓縮中,還是從視頻信號(505)中丟失了一些信息。
[0096]在變換器/縮放器/量化器(530)中,頻率變換器將空間域視頻信息轉換為頻域(SP頻譜、變換)數據。對于基于塊的視頻編碼,頻率變換器將離散余弦變換(“DCT”)、其整數近似、或其它類型的前向塊變換(例如離散正弦變換或其整數近似)應用于預測殘留數據的塊(如果預測(558)為空則應用于采樣值數據),產生頻率變換系數的塊。編碼器(500)可能還能夠指示這樣的變換步驟被省略了。縮放器/量化器對變換系數進行縮放和量化。例如,量化器用量化步驟尺寸將死區標量量化應用于頻域數據,該量化步驟尺寸在逐圖片的基礎上、逐小塊的基礎上、逐片的基礎上、逐塊的基礎上、因頻率而異的基礎上或在其他基礎上變化。。經量化的變換系數數據(532)被提供給頭部格式化器/熵編碼器(590)。
[0097]在縮放器/逆變換器(535)中,縮放器/逆量化器對經量化的變換系數執行逆縮放和逆量化。逆頻率變換器執行逆頻率變換,從而產生經重構的預測殘留值或樣本值的塊。對于非跳躍模式塊,編碼器(500)將經重構的殘留值與預測(558)的值(例如,經運動補償的預測值、圖片內預測值)組合以形成重構(538)。對于跳躍模式塊,編碼器(500)使用預測(558)的值作為重構(538)。
[0098]對于圖片內預測,重構(538)的值可以被饋送回圖片內估計器(540)和圖片內預測器(545)。同樣,重構(538)的值可以被用于對后續圖片的經運動補償的預測。重構(538)的值可被進一步濾波。對于視頻信號(505)的給定圖片,濾波控件(560)確定如何對重構(538)的值執行去塊濾波和SAO濾波。濾波控件(560)生成濾波控制數據(562),它被提供給頭部格式化器/熵編碼器(590)和合并器/(諸)濾波器(565)。
[0099]在合并器/(諸)濾波器(565)中,編碼器(500)將來自不同小塊的內容合并到圖片的經重構版本中。編碼器(500)根據濾波器控制數據(562)選擇性地執行去塊濾波和SAO濾波,以便自適應地平滑各幀中的各邊界上的間斷。可替換地或另外地應用其它濾波(例如去振鈴濾波或ALF;未示出)。取決于編碼器(500)的設置,小塊邊界可以被選擇性地濾波或根本不被濾波,并且編碼器(500)可以在經編碼的位流內提供指示是否應用這樣的濾波的句法。經解碼的圖片緩沖器(570)緩沖經重構的當前圖片以供在后續的經運動補償的預測中使用。
[0100]頭部格式化器/熵編碼器(590)對通用控制數據(522)、經量化的變換系數數據(532)、圖片內預測數據(542)、運動數據(552)以及濾波器控制數據(562)進行格式化和/或熵編碼。對于幀內預測數據(542),頭部格式化器/熵編碼器(590)選擇(幀內BV預測的)BV預測值索引值并例如使用上下文自適應的二進制算術編碼來對其進行熵編碼。在一些情況中,頭部格式化器/熵編碼器(590)還(相對于BV值的BV預測值)確定BV值的BV差,隨后對BV差進行熵編碼,例如使用上下文自適應二進制算術編碼來對BV差進行熵編碼。對于跳躍模式塊或合并模式塊,BV差被忽略。
[0101]頭部格式化器/熵編碼器(590)在經編碼的視頻位流(595)中提供經編碼數據。經編碼的視頻比特流(595)的格式可以是HEVC格式、Windows媒體視頻格式、VC-1格式、MPEG_x格式(例如,]^^6-1、]\0^6-2或10^6-4)、!1.261格式(例如,!1.261、!1.262、!1.263或!1.264)或其它格式的變型或擴展。
[0102]取決于所需的壓縮的實現和類型,編碼器的模塊可被添加、省略、拆分成多個模塊、與其它模塊組合、和/或用相似的模塊來替代。在替換實施例中,具有不同模塊和/或其它配置的模塊的編碼器執行一個或多個所描述的技術。編碼器的具體實施例通常使用編碼器(500)的變型或補充版本。所示的編碼器(500)內的各模塊之間的關系指示了信息在編碼器中的一般流動;為簡明起見,未示出其它關系。
[0103]V1.示例視頻解碼器。
[0104]圖6是結合其可實現所描述的一些實施例的通用解碼器(600)的框圖。解碼器(600)接收經編碼的視頻比特流(605)中的經編碼數據并產生包括經重構視頻(695)的圖片的輸出。經編碼的視頻比特流(605)的格式可以是HEVC格式、Windows媒體視頻格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG_2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的變型或擴展。
[0105]解碼器(600)是基于塊的并使用取決于實現的塊格式。塊可以在不同的階段被進一步細分。例如,圖片可以被劃分成64x64塊、32x32塊或16x16塊,這些塊隨后可以被劃分成更小的樣本值塊。在針對HEVC標準的解碼實現中,將圖片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
[0106]解碼器(600)使用圖片內解碼和/或圖片間解碼來對圖片進行解壓縮。解碼器(600)的許多組件被用于圖片內解碼和圖片間解碼這兩者。由這些組件執行的確切操作可以取決于正被解壓縮的信息的類型而變化。
[0107]緩沖器接收經編碼的視頻比特流(605)中的經編碼數據,并使得接收到的經編碼數據可用于解析器/熵解碼器(610)。解析器/熵解碼器(610)通常應用在編碼器(500)中執行的熵編碼的逆(例如上下文自適應二進制算術解碼)對經熵編碼的數據進行熵解碼。作為解析和熵解碼的結果,解析器/熵解碼器(610)產生通用控制數據(622)、經量化的變換系數數據(632)、圖片內預測數據(642)、運動數據(652)以及濾波器控制數據(662)。對于幀內預測數據(642),解析器/熵解碼器(610)對(幀內BC預測的)BV預測值索引值進行熵解碼。對于非跳躍模式、非合并模式塊,解析器/熵解碼器(610)還可以(例如使用上下文自適應二進制算術解碼)對BV值的BV差進行熵解碼,隨后將該BV差與相應的BV預測值組合以重構BV值。對于跳躍模式或合并模式塊,BV差被從比特流中省略,并且BV值就直接是BV預測值(例如,以BV預測值索引值來指示)。
[0108]通用解碼控件(620)接收通用控制數據(622)并將控制信號(未示出)提供給其它模塊(例如縮放器/逆變換器(635)、圖片內預測器(645)、運動補償器(655)以及幀內/幀間切換)以設置和改變解碼期間的解碼參數。
[0109]如果當前圖片是使用圖片間預測來預測的,則運動補償器(655)接收運動數據(652),例如MV數據、參考圖片選擇數據以及合并模式索引值。運動補償器(655)將MV應用于來自經解碼的圖片緩沖器(670)的(諸)經重構的參考圖片。運動補償器(655)產生針對當前圖片中的幀間編碼塊的運動補償的預測。經解碼圖片緩沖器(670)存儲一個或多個先前重構的圖片以供用作參考圖片。
[0110]在解碼器(600)內的分開路徑中,幀內預測預測器(645)接收幀內預測數據(642),諸如指示幀內預測是使用空間預測還是幀內BC預測的信息(例如,每個幀內塊的標記值)、預測模式方向(針對幀內空間預測的情況)、和BV值(針對幀內BC預測的情況)。對于幀內空間預測,根據預測模式數據使用當前圖片的重構(638)的值,圖片內預測器(645)從當前圖片的相鄰的、先前重構的樣本值中空間地預測當前圖片的當前塊的樣本值。或者,對于使用BV值的幀內BC預測,圖片內預測器(645)使用幀內預測區域的先前重構的樣本值來預測當前塊的樣本值,圖片內預測區域的先前重構的樣本值由針對當前塊的BV值來指示。
[0111]幀內/幀間切換選擇經運動補償的預測或圖片內預測的值用作給定塊的預測(658)。例如,當遵循HEVC句法時,可以基于為圖片中的CU編碼的句法元素來控制圖片內/圖片間切換,該CU可以包括圖片內預測的CU和圖片間預測的CU。對于非跳躍模式塊,解碼器(600)將預測(658)與重構的殘留值組合以產生來自視頻信號的內容的重構(638)。對于跳躍模式塊,解碼器(600)使用預測(658)的值作為重構(638)。
[0112]為了重構非跳躍模式塊的殘留值,縮放器/逆變換器(635)接收并處理經量化的變換系數數據(632)。在縮放器/逆變換器(635)中,縮放器/逆量化器對經量化的變換系數執行逆縮放和逆量化。逆頻率變換器執行逆頻率變換,從而產生經重構的預測殘留值或樣本值的塊。例如,逆頻率變換器將逆塊變換應用到頻率變換系數,從而產生樣本值數據或預測殘留數據。逆頻率變換可以是逆DCT、其整數近似、或另一種類型的逆頻率變換(例如逆離散正弦變換或其整數近似)。
[0113]對于圖片內預測,重構(638)的值可以被饋送回圖片內預測器(645)。對于圖片間預測,重構(638)的值可以被進一步濾波。在合并器/(諸)濾波器(665)中,解碼器(600)將來自不同小塊的內容合并到圖片的經重構版本中。解碼器(600)根據濾波器控制數據(662)和濾波自適應規則來執行去塊濾波和SAO濾波,以便自適應地平滑各幀中的各邊界上的間斷。可替換地或另外地應用其它濾波(例如去振鈴濾波或ALF;未示出)。小塊邊界可以被選擇性地濾波或根本不濾波,這取決于解碼器(600)的設置或經編碼的比特流數據內的句法指示。經解碼的圖片緩沖器(670)緩沖經重構的當前圖片以供在后續的經運動補償的預測中使用。
[0114]解碼器(600)還可包括后處理濾波器。后處理濾波器(608)可以包括去振鈴濾波、自適應維納濾波、膜顆粒再現濾波、SAO濾波或另一種類型的濾波。
[0115]取決于所希望的解壓縮的實現和類型,解碼器的模塊可以被添加、省略、拆分成多個模塊、與其他模塊組合和/或用類似的模塊來替代。在替換實施例中,具有不同模塊和/或其它配置的模塊的解碼器執行一個或多個所描述的技術。解碼器的具體實施例通常使用解碼器(600)的變型或補充版本。所示的解碼器(600)內的模塊之間的關系指示信息在解碼器中的一般流動;為簡明起見,未示出其它關系。
[0116]VI1.塊向量預測方面的創新。
[0117]本章節介紹塊向量(“BV”)預測的各個特征。特征中的一些涉及默認BV預測值的使用,而其它特征涉及針對BV預測值的合并模式或針對幀內塊復制(“BC”)預測的跳躍模式。這些特征可促成在速率-失真性能方面更有效的幀內BC預測。
[0118]具體地,本文中描述的各創新可在編碼諸如屏幕捕捉內容之類的某種“人工”創建的視頻內容時改善速率-失真性能。屏幕捕捉內容典型地包括重復的結構(例如圖形、文本字符),其為幀內BC預測提供了改善性能的機會。屏幕捕捉內容通常用具有高色度采樣分辨率的格式(例如YUV 4:4:4或RGB 4:4:4)來編碼,但是它也可以用具有較低的色度采樣分辨率(例如YUV 4:2:0)的格式來編碼。編碼/解碼屏幕捕捉內容的常見場景包括遠程桌面會議和對自然視頻或其它“經混合的內容”視頻的圖形覆蓋的編碼/解碼。
[0119]A.幀內BC預測模式、BV值和BV預測一介紹
[0120]對于幀內BC預測,圖片的當前塊的樣本值是使用同一圖片中的樣本值來預測的。BV值指示從當前塊到圖片的包括用于預測的樣本值的區域的位移。用于預測的樣本值是先前重構的樣本值。BV值可以在比特流中被信號化,并且解碼器可以使用BV值來確定圖片的區域以用于預測,其也在解碼器處被重構。幀內BC預測是一種形式的圖片內預測一一針對圖片的塊的幀內BC預測不使用除了同一圖片中的樣本值以外的任何樣本值。
[0121]圖7a示出針對當前幀(710)的當前塊(760)的幀內BC預測。當前塊可以是編碼單元(“CU”)的編碼塊(“CB”)、預測單元(“PU”)的預測塊(“PB” )、變換單元(“TU”)的變換塊(“TB”)或其它塊。當前塊的尺寸可以是64 X 64、32 X 32、16 X 16、8 X 8或某個其它尺寸。更一般地,當前塊的尺寸為mXn,其中m和η中的每一者都是整數,并且其中m和η可彼此相等或可具有不同的值。替換地,當前塊可具有某一其他形狀(例如,經編碼視頻對象的具有非矩形形狀的區域)。
[0122]BV(761)指示當前塊(760)到圖片的包括用于預測的樣本值的區域(762)的位移(或偏移)。由BV(761)指示的幀內預測區域(762)有時被稱為當前塊(760)的“匹配塊”。匹配塊可與當前塊(760)相同,或它可以是當前塊(760)的近似。假設當前塊的左上位置是在當前幀的位置(XQ,yQ)處,并假設幀內預測區域的左上位置在當前幀的位置(X1,yi)處。BV指示位移(xmy1-yo)。例如,如果當前塊的左上位置在位置(256,128)處,并且參考區域的左上位置在位置(176,104)處,則BV值為(-80,-24)。在本示例中,負水平位移指示在當前塊的左邊的位置,而負垂直位移指示在當前塊之上的位置。
[0123]幀內BC預測可以通過利用使用BC操作的冗余性(例如幀內部的重復模式)來改善編碼效率。代替直接編碼當前塊的樣本值,使用BV值來表示當前塊的樣本值。即使當前塊的樣本值不直接匹配用BV值指示的參考區域的樣本值,但是這些差異可能是可忽略的(即在感知上不是顯而易見的)。或者,如果這些差異是顯著的,則這些差異可被編碼成可比當前塊的原始樣本值更高效地被壓縮的殘留值。
[0124]共同地,使用幀內BC預測編碼的塊的BV值可消費大量的比特。這些BV值可被熵編碼以降低比特率。為了進一步降低BV值的比特率,編碼器可使用BV值的預測。BV值通常展示出冗余性一給定塊的BV值通常與圖片中的先前塊的BV值相似或甚至相同。對于BV預測,給定塊的BV值是使用BV預測值來預測的。給定塊的BV值和BV預測值之間的差(或BV差)隨后被熵編碼。通常,BV差是針對BV值的水平和垂直分量以及BV預測值來計算的。當BV預測工作良好時,BV差具有支持高效熵編碼的概率分布。在HEVC標準的當前草稿版本(JCTVC-01005)中,BV預測值是當前CTU內最后編碼的CU的BV值(即,當前CTU內的先前幀內BC預測的塊的BV值)。
[0125]圖7b示出幀中的當前塊(760)的BV(761)以及幀(710)中的先前塊(750)的BV(751)。先前塊(750)的BV(751)用作當前塊(760)的BV(761)的BV預測值。例如,如果BV值為(-80,-24)并且BV預測值為(-80,-32),則為(O,8)的BV差被熵編碼。
[0126]解碼器接收BV值的經熵編碼的BV差,并對該BV差進行熵解碼。解碼器還確定BV值的BV預測值。由解碼器確定的BV預測值與由編碼器確定的BV預測值相同。解碼器將BV預測值和經解碼的BV差組合以重構BV值。
[0127]在HEVC標準的當前草稿版本(JCTVC-01005)中,基于實際BV值的BV預測值在一些情形下不可用。例如,前一實際BV值對于給定CTU中的第一個幀內BC預測的塊不可用。當前一實際BV值對于BV預測值不可用時(如圖7c中所示),(0,0)的默認值被用作為BV預測值。事實上,這意味著在沒有BV值對CTU中的前一幀內BC預測的塊可用時,BV預測被跳過。
[0128]B.具有非零分量的默認BV預測值
[0129]根據本文中描述的創新的一個方面,當前一實際BV值不可用作為當前塊的BV值的BV預測值時,編碼器和解碼器使用具有非零分量的默認BV預測值。相比于為零值的默認BV預測值,具有非零分量的默認BV預測值趨于更接近于當前塊的BV值,這導致對BV差的更高效的熵編碼。另外,具有非零值的默認BV預測值能夠提供對于BV預測采用跳躍模式還是合并模式的有用選項。
[0130]1.示例默認BV預測值
[0131]如圖7d中所示,對于當前塊(760)的BV值(761),默認BV預測值(763)可具有非零水平分量。例如,默認BV預測值是一個水平向量(BVx,O)。水平BV分量BVx的值可以是一個固定的非零值。或者,BVx的值可以是當前塊的寬度,該寬度是避免當前塊和參考區域之間重疊的水平BV分量BVx的最小值。
[0132]例如,當當前塊是具有寬度W和高度H的CU的CB時,水平BV分量BVx的值的默認BV預測值可以是等于CU的寬度W的負偏移。也就是說,默認BV預測值可以是(_W,0)。每當(基于前一個塊的實際BV值的)常規BV預測值不可用時,默認BV預測值(BVx,0)可被使用。或者,默認BV預測值(BVx,0)可以取決于當前塊的BV值而有條件地使用。例如,如果當前塊的BV值的垂直BV分量小于-H,則默認BV預測值為(-W,O)。否則(當前塊的BV值的垂直BV分量不小于-H),默認BV預測值為(0,0)。這一條件確保了在當前塊的BV值具有顯著垂直BV分量時不應用默認BV預測值(_W,0)。替代地,非零默認BV預測值(BVx,0)根據另一條件而被有條件地應用。
[0133]替代具有為-W的負偏移,默認BV預測值可具有另一負偏移。例如,默認BV預測值可以為(_2*W,0)。
[0134]替代地,默認BV預測值是垂直向量(O,BVy)。垂直BV分量BVy的值可以是一個固定的非零值,或者BVy的值可以是當前塊的高度,該高度是避免當前塊和參考區域之間重疊的BVy的最小值。例如,當當前塊是具有寬度W和高度H的CU的CB時,默認BV預測值可以是(0,-H)。默認BV預測值(0,BVy)可在每當常規BV預測值不可用時被使用,或者默認BV預測值(0,BVy)可取決于當前塊的BV值有條件地使用。
[0135]替代地,默認BV預測值可具有非零水平分量和非零垂直分量。
[0136]2.采用默認BV預測值的示例編碼
[0137]圖8示出用于在編碼期間使用具有非零分量的默認BV預測值的通用技術(800)。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執行技術(800)。
[0138]編碼器確定(830)圖片的當前塊的默認BV預測值。例如,在HEVC實現中,當前塊是編碼樹單元的編碼單元的一部分。默認BV預測值包括具有非零值的BV預測值分量。例如,具有非零值的BV預測值分量是水平BV分量。取決于實現,非零水平BV分量可具有固定的值(與當前塊的大小無關)、等于當前塊的寬度的值、或者某個其它非零值。或者,具有非零值的BV預測值分量是垂直BV分量。取決于實現,非零垂直BV分量可具有固定的值(與當前塊的大小無關)、等于當前塊的高度的值、或者某個其它非零值。或者,默認BV預測值可包括非零水平BV分量和非零垂直BV分量。默認BV預測值可以是為如章節C中描述的跳躍模式或者為如章節D中描述的合并模式所聚集的一組多個BV預測值候選的一部分。
[0139]編碼器使用默認BV預測值來對當前塊進行編碼(850)。例如,編碼器(a)使用當前塊的BV值來執行幀內BC預測、(b)使用當前塊的BV值和默認BV預測值來確定BV差、以及(c)對BV差進行編碼。替代地,編碼器直接使用默認BV預測值來執行幀內BC預測。
[0140]圖9示出用于在編碼期間使用具有非零分量的默認BV預測值的更詳細的示例技術(900)。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執行技術(900)ο
[0141]作為開始,編碼器標識(910)圖片的當前塊的BV值。編碼器可使用任何形式的BV估計來標識當前塊的BV值。在HEVC實現中,當前塊是編碼樹單元的編碼單元的一部分。
[0142]編碼器檢查(920)實際BV值是否可用作為BV預測值。例如,編碼器檢查圖片的前一個塊的實際BV值是否可用。在HEVC實現中,如果(I)前一個塊和當前塊是同一CTU的一部分,并且(2)前一個塊的預測模式是幀內BC預測模式,則前一個塊的實際BV值是可用的。例如,前一個塊的實際BV值對于給定CTU中的第一個幀內BC預測的塊不可用。
[0143]如果實際BV不可用作為BV預測值,則編碼器使用(940)實際BV作為BV預測值。另一方面,如果沒有任何之前的塊的實際BV可用作為BV預測值,則編碼器確定(930)當前塊的默認BV預測值。默認BV預測值包括具有非零值的BV預測值分量。例如,如以上結合圖8的動作(830)所描述的來確定默認BV預測值。
[0144]編碼器確定(950)當前塊的BV值和BV預測值之間的BV差。編碼器對該BV差進行熵編碼(960)。
[0145]3.采用默認BV預測值的示例解碼
[0146]圖10示出用于在解碼期間使用具有非零分量的默認BV預測值的通用技術(1000)。圖像解碼器或視頻解碼器(諸如參考圖4或圖6描述的解碼器)可執行技術(1000)。
[0147]解碼器確定(1030)圖片的當前塊的默認BV預測值。例如,在HEVC實現中,當前塊是編碼樹單元的編碼單元的一部分。默認BV預測值包括具有非零值的BV預測值分量。例如,具有非零值的BV預測值分量是水平BV分量。取決于實現,非零水平BV分量可具有固定的值(與當前塊的大小無關)、等于當前塊的寬度的值、或者某個其它非零值。或者,具有非零值的BV預測值分量是垂直BV分量。取決于實現,非零垂直BV分量可具有固定的值(與當前塊的大小無關)、等于當前塊的高度的值、或者某個其它非零值。或者,默認BV預測值可包括非零水平BV分量和非零垂直BV分量。默認BV預測值可以是為如章節C中描述的跳躍模式或者為如章節D中描述的合并模式所聚集的一組多個BV預測值候選的一部分。
[0148]解碼器使用默認BV預測值來對當前塊進行解碼(1050)。例如,解碼器(a)對當前塊的BV差進行解碼、(b)將經解碼的BV差與默認BV預測值組合以重構當前塊的BV值、以及(c)使用當前塊的BV值來執行幀內BC預測。替代地,解碼器直接使用默認BV預測值來執行幀內BC預測。
[0149]圖11示出用于在解碼期間使用具有非零分量的默認BV預測值的更詳細的示例技術(I 100)。圖像解碼器或視頻解碼器(諸如參考圖4或圖6描述的解碼器)可執行技術(IlOO)0
[0150]解碼器檢查(1120)實際BV是否可用作為圖片的當前塊的BV值的BV預測值。例如,解碼器檢查圖片的前一個塊的實際BV值是否可用。在HEVC實現中,如果(I)前一個塊和當前塊是同一 CTU的一部分,并且(2)前一個塊的預測模式是幀內BC預測模式,則前一個塊的實際BV值是可用的。前一個塊的實際BV值例如對于給定CTU中的第一個幀內BC預測的塊不可用。
[0151]如果實際BV不可用作為BV預測值,則解碼器使用(1140)實際BV作為BV預測值。另一方面,如果沒有任何之前的塊的實際BV可用作為BV預測值,則解碼器確定(1130)當前塊的默認BV預測值。默認BV預測值包括具有非零值的BV預測值分量。例如,如以上結合圖10的動作(1030)所描述的來確定默認BV預測值。
[0152]解碼器還對當前塊的BV差進行熵解碼(1150)。解碼器隨后將BV差與BV預測值組合(1160)以重構當前塊的BV值。
[0153]4.替換和變型
[0154]在以上描述的默認BV預測值的各示例中,默認BV預測值的值不受當前塊的位置約束。替代地,默認BV預測值的值可以受當前塊的位置約束。例如,如果當前塊處于圖片的邊緣處使得默認BV預測值將指向圖片之外的位置,則默認BV預測值被約束為指向圖片內的位置,或者使用(O,0)BV預測值。或者,作為其中BV值被約束為引用某個CTU集合(例如,當前CTU和前一 CTU)中的位置的HEVC實現的另一示例,默認BV預測值被約束為弓丨用該CTU集合內的位置。或者,作為其中圖片包括多個小塊或多個切片的HEVC實現的另一示例,BV值(以及默認BV預測值)可被約束為引用當前小塊(和/或當前切片)內的位置。
[0155]在以上描述的默認BV預測值的各示例中,默認BV預測值的值不取決于當前塊的位置而切換。替代地,默認BV預測值的值可以取決于當前塊的位置而切換。例如,如果當前塊處于除了圖片(或小塊、或切片,如果使用的話)的左邊緣以外的任何位置,則默認BV預測值是水平BV預測值(BVx,0)。如果當前塊處于圖片(或小塊、或切片,如果使用的話)的左邊緣,或者默認水平BV預測值否則將引用圖片(或小塊、或切片,如果使用的話)之外的位置,則默認BV預測值是垂直BV預測值(0,BVy)。并且,如果當前塊處于圖片(或小塊、或切片,如果使用的話)的左上角,或者默認水平BV預測值和垂直BV預測值否則將引用圖片(或小塊、或切片,如果使用的話)之外的位置,則默認BV預測值是(0,0)BV預測值。
[0156]C.幀內BC預測的跳躍模式
[0157]根據本文中描述的創新的另一方面,編碼器和解碼器針對某些幀內BC預測的塊使用跳躍模式。在跳躍模式中,幀內BC預測的塊使用預測的BV值并且在比特流中不具有殘留數據。在一些情形下,使用針對幀內BC預測的塊的跳躍模式能夠顯著地改善速率-失真效率。
[0158]總得來說,編碼器決定何時為當前幀內BC預測的塊使用跳躍模式。編碼器能夠基于幀內BC預測區域與當前塊有多接近地匹配、基于殘留值的感知重要性、基于可用于對殘留值進行編碼的比特率、和/或基于其它因素來決定使用跳躍模式。在其中編碼速度是約束的例如實時編碼的某些編碼模式下,編碼器可偏好為幀內BC預測的塊使用跳躍模式。
[0159]圖12示出包括針對幀內BC預測的塊的跳躍模式的編碼的通用技術(1200)。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執行技術(1200)。
[0160]對于圖片的當前塊,如果當前塊是以跳躍模式編碼的幀內BC預測的塊,則編碼器使用(I 210) BV預測來確定當前塊的BV值。當前塊的BV值指示在該圖片中的一區域的位移。BV預測可包括合并模式預測、使用最后編碼的幀內BC預測的塊的BV值的預測、使用相鄰的幀內BC預測的塊的BV值的分量級中值的預測、或者某種其它形式的BV預測。當前塊是例如CTU的⑶的一部分。
[0161]編碼器使用幀內BC預測用BV值(此處為預測的BV值)來編碼(1220)當前塊。編碼器在比特流中輸出(1230)當前塊是以跳躍模式編碼的指示。由于該塊是以跳躍模式編碼的,因此比特流缺少當前塊的BV差和殘留數據。然而,比特流可包括索引值,該索引值指示從多個BV預測值候選的集合中對要用作當前塊的BV值的BV預測值候選的選擇。例如,當多個BV預測值候選的集合具有兩個BV預測值候選時,該索引值是一個標志(flag)值。或者,當多個BV預測值候選的集合具有不止兩個BV預測值候選時,該索引值是一個整數值。該索引值可使用例如算術編碼來進行熵編碼。
[0162]圖13示出包括針對幀內BC預測的塊的跳躍模式的解碼的通用技術(1300)。圖像解碼器或視頻解碼器(諸如參考圖4或圖6描述的解碼器)可執行技術(1300)。
[0163]對于圖片的當前塊,如果當前塊是以跳躍模式編碼的幀內BC預測的塊,則解碼器從比特流中接收(1310)該當前塊是以跳躍模式編碼的指示。由于該塊是以跳躍模式編碼的,因此比特流缺少當前塊的BV差和殘留數據。然而,如以上所描述的,比特流可包括索引值,該索引值指示從多個BV預測值候選的集合中對要用作當前塊的BV值的BV預測值候選的選擇。當前塊是例如CTU的CU的一部分。
[0164]解碼器使用(1320)BV預測來確定當前塊的BV值。BV預測一般與編碼器處執行的BV預測成鏡像。BV預測可包括合并模式預測、使用最后編碼的幀內BC預測的塊的BV值的預測、使用相鄰的幀內BC預測的塊的BV值的分量級中值的預測、或者某種其它形式的BV預測。解碼器使用幀內BC預測用BV值(此處為預測的BV值)來解碼(1330)當前塊。
[0165]D.針對BV預測的合并模式
[0166]根據本文中描述的創新的另一方面,編碼器和解碼器使用針對BV預測的合并模式。合并模式能夠顯著地改善BV預測的質量,這進而降低了比特流中的BV差所消耗的比特的量。
[0167]對于合并模式,在確定塊的BV預測值時,編碼器聚集BV預測值候選的集合,選擇BV預測值候選中的一個以用作為該塊的BV預測值,并且在比特流中信號化指示該被選擇的BV預測值候選的索引值。解碼器聚集該BV預測值候選的集合,并且基于被信號化的索引值來選擇BV預測值候選中要用作為該塊的BV預測值的那個BV預測值候選。盡管索引值消耗比特流中的比特,但是合并模式能夠顯著地改善BV預測并且因此減少BV差所消耗的比特,從而得到整體的比特率降低。
[0168]在示例實現中,針對BV預測的合并模式與針對幀內BC預測的塊的跳躍模式組合使用。替代地,針對BV預測的合并模式可在即使未采用針對幀內BC預測的塊的跳躍模式的情況下使用。
[0169]1.示例BV預測值候選以及索引值
[0170]當確定合并模式下塊的BV預測值時,編碼器或解碼器聚集BV預測值候選的集合。該BV預測值候選的集合的構成取決于實現,但是在編碼器側和解碼器側是相同的。
[0171]在一個方法中,BV預測值候選是從圖片中的之前編碼的塊的實際BV值中聚集出來的。總得來說,編碼器和解碼器確定圖片中的多至X個之前的塊的實際BV值。之前的塊是圖片中的之前編碼的幀內BC預測的塊。具體來說,它們是按照在解碼順序上比當前塊更早的最近的X個幀內BC預測的塊。X的值取決于實現并且可以是例如2、3、4、5或某個其它數字。使用更多BV預測值候選一般會提高索引值的比特率,但是會改善BV預測的質量,這進而減少了 BV差消耗的比特。
[0172]之前的幀內BC預測的塊不需要是當前塊的鄰居。如果少于X個具有實際BV值的之前的塊可用,則BV預測值候選的集合可包括少于X個BV預測值候選。
[0173]圖14示出了這一方法的示例。在圖14中,三個之前的幀內BC預測的塊(1430,1440,1450)的三個BV值(1431,1441,1451)提供用于當前幀(1410)的當前塊(1460)的BV預測值的合并模式的BV預測值候選。盡管在圖14的示例中,之前的塊(1430,1440,1450)是連續的,但是之前的塊不需要是連續的。(也就是說,提供BV預測值候選的之前的幀內BC預測的塊可以被圖片中的其它非幀內BC預測的塊隔開。)
[0174]BV預測值候選的集合可進一步包括一個或多個默認BV預測值。在圖14的示例中,BV預測值候選的集合包括具有水平位移的默認BV預測值(BVx,0)以及具有垂直位移的默認BV預測值(O,BVy)。具體來說,具有水平位移和垂直位移的默認BV預測值趨于對文本內容來說是有用的,文本內容一般遵循完全水平或垂直的方向。
[0175]合并模式索引值與相應的BV預測值候選相關聯。典型的,越小的索引值與越可能被選擇的BV預測值候選相關聯,而越大的索引值與越不可能被選擇的BV預測值候選相關聯,這趨于在熵編碼后降低索引值的比特率。在圖14中,根據預期的選擇可能性,索引值idx0---1dx 4被指派給具有BV值(1451,1441,1431)和默認BV預測值的BV預測值候選。
[0176]例如,在一些實現中,之前編碼的塊的兩個實際BV值被存儲為BV預測值候選BVcand0和BVcandl。在新的BV值被使用之后,較舊的BV預測值候選BVcand^替換為較新的BV預測值候選BVcandQ,而較新的BV預測值候選BVcandQ被替換為剛剛使用的BV值。在編碼器側,對于當前塊,編碼器選擇BVcandQ和BVcandl中的一個以用作為BV預測值。作為合并模式索引值,編碼器信號化指示BVcandQ和BVcandl中的哪一個被編碼器使用并且應當被解碼器使用的標志值。在解碼器側,解碼器接收并解析標志值,并且基于該標志值選擇BVcandQ和BVcandl中的要用作為當前塊的BV預測值的那個。在這一方法中,編碼器和解碼器各自存儲和更新兩個BV預測值候選BVcandQ和BVcandl ο
[0177]作為另一示例,在一些其它實現中,之前編碼的塊的一個實際BV值被存儲為第一BV預測值候選BV_d0,而默認BV預測值被存儲為第二 BV預測值候選BV_dl。例如,默認BV預測值是(BVx,0),其中BVx可以是等于當前塊的寬度W或具有某個其它非零值的負偏移。在新的BV值被使用之后,第一 BV預測值候選BVcandQ被替換為剛剛使用的BV值,但是第二 BV預測值BVcandI不改變。在編碼器側,對于當前塊,編碼器選擇BVcandQ和BVcandI中的一個以用作為BV預測值。編碼器信號化指示BVcandQ和BVcandl中的哪一個被編碼器使用并且應當被解碼器使用的標志值。解碼器接收并解析標志值,并且基于該標志值選擇BVcandQ和BVcandl中的要用作為當前塊的BV預測值的那個。在這一方法中,編碼器和解碼器各自存儲兩個BV預測值候選BVcandQ和BV_di,并且在編碼或解碼期間,第一BV預測值候選BVeandQ被更新。
[0178]在另一方法中,BV預測值候選是從鄰近圖片中的當前塊的之前編碼的塊的實際BV值中聚集出來的。編碼器和解碼器確定多至X個相鄰塊的實際BV值。相鄰的塊是圖片中在當前塊左邊、在當前塊上邊、在當前塊右上方的之前編碼的幀內BC預測的塊。X的值取決于實現并且可以是例如2、3、4、5或某個其它數字。如果少于X個具有實際BV值的相鄰塊可用,則BV預測值候選的集合可包括少于X個BV預測值候選。
[0179]圖15示出了這一方法的示例。在圖15中,三個相鄰幀內BC預測的塊(I530,1540,1550)的三個BV值(1531,1541,1551)提供用于當前幀(1510)的當前塊(1560)的BV預測值的合并模式的BV預測值候選。如果相鄰塊中的一個不可用(例如,不是幀內BC預測的塊,或者在圖片、小塊或切片之外),則在一些情況下,另一相鄰塊可被添加(例如,當前塊左上方的塊)。如圖15中所示,BV預測值候選的集合包括一個或多個默認BV預測值(諸如具有水平位移的默認BV預測值(BVx,0)以及具有垂直位移的默認BV預測值(0,BVy))。在圖15中,根據預期的選擇可能性,索引值idx O…idx 4被指派給具有BV值(1541,1531,1551)和默認BV預測值的BV預測值候選。
[0180]對BV預測值候選中的冗余值的處理取決于實現。在一些實現中,用于合并模式的BV預測值候選的集合可包括冗余值一一也就是說,冗余BV預測值候選不被移除或替代。在其它實現中,在聚集用于合并模式的BV預測值候選的集合時,編碼器和解碼器不向該集合添加冗余的BV預測值。這一方法可導致較小的BV預測值候選的集合,這可降低編碼的索引值的比特率。在又一些其它實現中,在聚集用于合并模式的BV預測值候選的集合時,編碼器和解碼器將會與集合中已存在的BV預測值候選冗余的BV預測值候選替換為(例如,來自另一之前編碼的幀內BC預測的塊、來自另一相鄰的幀內BC預測的塊、來自另一默認BV預測值選項的)不同的BV預測值候選。例如,如果之前的第三個幀內BC預測的塊的BV值與之前的第一個幀內BC預測的塊或之前的第二個幀內BC預測的塊的BV值相同,則編碼器/解碼器替代地將之前的第四個幀內BC預測的塊的BV值添加到BV預測值候選的集合。如果該BV值將是冗余的,則編碼器/解碼器替代地添加之前的第五個、第六個等幀內BC預測的塊的BV值。或者,編碼器/解碼器添加另一默認BV預測值。
[0181]2.采用所選擇的BV預測值的示例編碼
[0182]圖16a示出包括針對BV預測值的合并模式的編碼的通用技術(1600)。圖像編碼器或視頻編碼器(諸如參考圖3或圖5a-5b描述的編碼器)可執行技術(1600)。
[0183]作為開始,編碼器確定(1610)圖片的當前的幀內BC預測的塊的多個BV預測值候選的集合。當前塊是例如CTU的CU的一部分。編碼器可使用參照圖14和15描述的方法中的一個或使用另一方法來確定BV預測值候選的集合。總得來說,BV預測值候選可分別包括多至X個之前塊的實際BV值,其中X取決于實現(例如,X是2、3、4、5或某個其它數字)οX個之前的塊可以至少部分基于當前塊周圍的鄰居的位置(參見例如圖15)和/或與當前塊相比的解碼順序(參見例如圖14)來標識。BV預測值候選還可包括一個或多個默認BV預測值(例如,各自具有帶有非零值的BV預測值分量)。
[0184]編碼器選擇(1620)多個BV預測值候選中要用于當前的幀內BC預測的塊的一個BV預測值候選。例如,在當前塊將使用幀內BC預測用所選的BV預測值候選來編碼時,編碼器依據某一度量(例如,絕對差之和、均方差)來選擇針對其的參考幀內預測區域最接近地匹配當前塊的BV預測值候選。或者,當當前塊具有將被用于幀內BC預測的BV值(通過BV估計標識出),則編碼器選擇最接近匹配當前塊的BV值的BV預測值候選。該選擇導致最小的BV差,這趨于改善熵編碼的效率。
[0185]編碼器使用所選擇的BV預測值候選來對當前幀內BC預測的塊進行編碼(1630)。圖16b示出示例實現中對當前塊進行編碼(1630)的細節。編碼器檢查(1632)當前塊是否是以跳躍模式編碼的。如果是,則編碼器使用幀內BC預測用所選擇的BV預測值而不是使用任何殘留數據來編碼(1633)當前塊。否則(不是跳躍模式),則編碼器檢查(1634)當前塊是否是以合并模式編碼的。如果是,則編碼器使用幀內BC預測用所選擇的BV預測值來編碼(1635)當前塊。在合并模式中,編碼器可選地對當前塊的殘留數據進行編碼。否則(不是合并模式),則編碼器使用幀內BC預測用當前塊的BV值來編碼(1637)當前塊,可選地編碼當前塊的殘留數據。
[0186]編碼器在比特流中輸出(1640)指示所選擇的BV預測值候選的索引值。當BV預測值候選的集合包括兩個BV預測值候選時,該索引值可以是一個標志值。或者,當存在不止兩個BV預測值候選時,該索引值可以是一個整數值。索引值可被熵編碼或信號化為固定長度值。如果幀內BC預測模式語法元素指示當前塊是使用幀內BC預測模式來編碼的,則索引值可以被(有條件地)在比特流中信號化作為單獨的語法元素。或者,索引值可以被與另一語法元素(例如,指示當前塊是否是使用幀內BC預測模式來編碼的語法元素)聯合地在比特流中信號化。
[0187]編碼器還輸出當前塊的任何經編碼的數據。比特流中的值可指示當前塊是否是以跳躍模式編碼的。如果當前塊是跳躍模式塊,則比特流缺少當前塊的BV差并且缺少當前塊的殘留數據。如果當前塊是合并模式塊,則比特流缺少當前塊的BV差但是可包括當前塊的殘留數據。否則(當前塊是非跳躍模式、非合并模式塊),比特流包括當前塊的BV差(指示所選擇的BV預測值候選和當前塊的BV值之間的差)并且還可包括當前塊的殘留數據。
[0188]當編碼器使用數據結構來跟蹤被用于之前的幀內BC預測的塊的實際BV值時,編碼器可用當前塊的BV值來更新數據結構。
[0189]3.采用所選擇的BV預測值的示例解碼
[0190]圖17a示出包括針對BV預測值的合并模式的解碼的通用技術(1700)。圖像解碼器或視頻解碼器(諸如參考圖4或圖6描述的解碼器)可執行技術(1700)。
[0191]作為開始,解碼器從比特流中接收(1710)圖片的當前塊的索引值。當前塊是例如CTU的CU的一部分。索引值指示多個BV預測值候選的集合中被選擇的BV預測值候選。當BV預測值候選的集合包括兩個BV預測值候選時,該索引值可以是一個標志值。或者,當存在不止兩個BV預測值候選時,該索引值可以是一個整數值。索引值可被熵編碼(在這種情況下,解碼器對索引值進行熵解碼)或信號化為固定長度值。如果幀內BC預測模式語法元素指示當前塊是使用幀內BC預測模式來編碼的,則索引值可以被(有條件地)在比特流中信號化作為單獨的語法元素。或者,索引值可以被與另一語法元素(例如,指示當前塊是否是使用幀內BC預測模式來編碼的語法元素)聯合地在比特流中信號化。
[0192]解碼器還接收當前塊的任何經編碼的數據。解碼器在解碼的適當階段對經編碼的數據進行熵解碼。比特流中的值可指示當前塊是否是以跳躍模式編碼的。如果當前塊是跳躍模式塊,則比特流缺少當前塊的BV差并且缺少當前塊的殘留數據。如果當前塊是合并模式塊,則比特流缺少當前塊的BV差但是可包括當前塊的殘留數據。否則(當前塊是非跳躍模式、非合并模式塊),則比特流包括當前塊的BV差并且還可包括當前塊的殘留數據。
[0193]解碼器確定(1720)當前塊的多個BV預測值候選的集合。解碼器可使用參照圖14和15描述的方法中的一個或使用另一方法來確定BV預測值候選的集合。總得來說,BV預測值候選可包括多至X個之前塊的實際BV值,其中X取決于實現(例如,X是2、3、4、5或某個其它數字hx個之前的塊可以至少部分基于當前塊周圍的鄰居的位置(參見例如圖15)和/或與當前塊相比的解碼順序(參見例如圖14)來標識。BV預測值候選還可包括一個或多個默認BV預測值(例如,各自具有帶有非零值的BV預測值分量)。
[0194]基于索引值,解碼器選擇(1730)多個BV預測值候選中要用于當前塊的一個BV預測值候選。解碼器使用所選擇的BV預測值候選對當前塊進行解碼(1740)。圖17b示出示例實現中對當前塊進行解碼(1740)的細節。解碼器檢查(1742)當前塊是否是以跳躍模式編碼的。如果是,則解碼器使用幀內BC預測用所選擇的BV預測值而不是使用任何殘留數據來解碼(1743)當前塊。否則(不是跳躍模式),則解碼器檢查(1744)當前塊是否是以合并模式編碼的。如果是,則解碼器使用幀內BC預測用所選擇的BV預測值來解碼(1745)當前塊。在合并模式中,解碼器對當前塊的殘留數據(如果存在)進行解碼。否則(不是合并模式),則解碼器使用幀內BC預測用當前塊的BV值來解碼(1747)當前塊(用相對于所選擇的BV預測值的BV差來解碼),還對當前塊的殘留數據(如果存在)進行解碼。
[0195]當解碼器使用數據結構來跟蹤被用于之前的幀內BC預測的塊的實際BV值時,解碼器可用當前塊的BV值來更新數據結構。
[0196]4.合并模式的示例實現
[0197]在HEVC實現中,CU的語法和語義可被修改以信號化用于BV預測的合并模式和/或用于幀內BC預測的塊的跳躍模式的語法元素。
[0198]在HEVC規范的草稿(JCTVC_01005_v3)中,cu_skip_flag[x0] [y0]指示當前⑶是否被跳過,但是該標志僅在當前切片是預測性(“P”)切片或雙向預測性(“B”)切片的情況下被信號化。索引x0,y0指定了被考慮的CB的左上亮度樣本相對于圖片的左上亮度樣本的位置(叉0,70)。如果(311_81^_€]^|^0][70]為1,則當前0]被跳過,并且對于該0],(311_81^_€]^[x0][y0]之后不再解析更多的語法元素,除了合并候選索引merge_idx[x0][y0]。如果cu_81^口_;^38|^0][70]為0,則當前0]不被跳過。當(311_81^口_;^38|^0][70]不存在,貝11其被推斷為O O
[ΟΙ"]根據一個可能的修改,cu_skip_flag[xO][yO]也可在當前切片是幀內(“I”)切片的情況下被信號化。當幀內BC預測被啟用(根據順序參數集中的標志intra_blOCk_COpy_enabled_flag),如果cu_skip_flag[xO] [y0]的值為I,則當前OJ被跳過,并且對于該OJ,cu_Skip_flag[xO][yO]之后不再解析更多的語法元素,除了 BV預測值索引值idx。具體來說,對于當前被跳過的CU,沒有BV差被信號化。另一方面,如果CU_skip_flag[X0][y0]的值為0,則當前⑶不被跳過。
[0200]在HEVC規范的草稿(JCTVC_01005_v3)中,intra_bc_f lag[x0] [y0]指不當前⑶是否是以幀內BC預測模式編碼的。數組索引x0,y0指定了被考慮的CB的左上亮度樣本相對于圖片的左上亮度樣本的位置(x0,y0)。如果intra_bc_flag[xO][yO]為I,則當前CU是以幀內BC預測模式編碼的。如果;1111:作_130_;^38|^0][70]為0,則當前^是以幀內空間預測來編碼的。當不存在時,intra_bc_f lag的值被推斷為是O。
[0201 ]根據一個可能的修改,對于intra_bc_f lag[x0] [y0],當intra_bc_f lag[x0] [y0]為I時,當前CU的語法包括指示對BV預測值候選的選擇的BV預測值索引值idx。索引值idx可以是一個標志值,用以指示在兩個BV預測值候選之間的選擇,或者是一個整數值,用以指示在不止兩個BV預測值候選中的選擇。該索引值可使用例如算術編碼來進行熵編碼。?0202] 或者,根據另一可能的修改,對于intra_bc_flag[x0][y0],語法元素是整數值而不是二進制標志。如JCTVC_01005_v3中所述,如果intra_bc_f lag[x0] [5^0]為0,則當前01是以幀內空間預測來編碼的。另一方面,如果intra_bc_flag[x0][y0]大于0,則當前⑶是以幀內BC預測模式編碼的,并且intra_bc_flag[x0][y0]還指示BV預測值索引值idx。例如,如果intra_bc_f lag[xO] [yO]為I,則idx為I ;如果intra_bc_f lag[xO] [yO]為2,則idx為2;依此類推。換言之,BV預測值索引值idx與空間或BC預測的二進制值聯合編碼在單個語法元素中。
[°203] 對于修改intra_bc_f lag[xO] [yO]和信號化索引值idx的任意一種方式,變量BvIntraPredictor [compldx]規定要用于當前⑶的幀內BC預測的BV預測值候選。例如,在圖14的不例中,BvIntraPredictor [O] [compIdx]、BvIntraPredictor[ I ] [compIdx]和BvIntraPredictor[2] [compIdx]存儲多達三個最近的之前幀內BC預測的塊的BV值。或者,在圖 15的不例中,Bv IntraPredi c tor [O] [comp Idx]、BvIntraPredictor [ I ] [comp Idx]和BvIntraPredictor[2][compIdx]存儲多達三個相鄰的幀內BC預測的塊的BV值。BvIntraPredictor[3] [compIdx]和BvIntraPredictor[4] [compIdx]分別存儲水平和垂直方向上的默認BV預測值。水平BV分量被指派CompIdx = O,而垂直BV分量被指派compldx = I。
[0204]對于跳躍模式塊或合并模式塊,不為該塊信號化BV差。該塊的BV值是被選擇的BV預測值候選。
[0205]對于非跳躍模式、非合并模式塊,在比特流中信號化BV差。變量BvdIntra[xO][yO][compldx]規定BV差。數組索引xO,yO指定了被考慮的PB的左上亮度樣本相對于圖片的左上亮度樣本的位置UO,y0)。水平BV差分量被指派compldx = 0,而垂直BV差分量被指派compldx= I。對于CompIdx = 0..1,塊的BV值是BvIntra[xO] [compldx] =BvdIntra[xO] [yO][compIdx]+BvIntraPredictor[compIdx]。
[0206]變量BvIntraPredictor [comp Idx]可隨后被更新以包括當前⑶的BV值。
[0207]5.替換和變型
[0208]在當前塊具有通過BV估計而標識的BV值時,編碼器可使用任何形式的BV估計來標識當前塊的BV值。在當前塊的BV估計期間,編碼器可通過估計可用于當前塊的一個或多個BV預測值候選來開始。用BV預測值候選來開始BV估計可幫助快速標識合適的BV值,以避免對其它BV值進行評估。編碼器根據需要對其它BV值進行評估。編碼器可使用數據結構來跟蹤BV預測值候選。當BV值可應用于不同尺寸的塊(例如,用于32x32CU、16xl6CU、8x8CU或更小的TU或CU)時,數據結構可包括針對不同大小的塊的不同BV預測值候選(例如,用于32x32⑶的一個或多個BV預測值候選、用于16x16⑶的一個或多個BV預測值候選等等)。對于當前塊,編碼器首先評估存儲在數據結構中的針對當前塊的級別(尺寸)的BV預測值候選,隨后如果需要的話繼續對其它BV值進行評估。
[0209]鑒于可應用所公開的本發明的原理的許多可能的實施例,應當認識到,所示實施例僅是本發明的優選示例,并且不應認為是限制本發明的范圍。相反,本發明的范圍由后續的權利要求來界定。我們要求作為我們的發明保護落入這些權利要求范圍和精神內的所有內容。
【主權項】
1.一種在具有視頻編碼器或圖像編碼器的計算設備中的方法,所述方法包括: 確定圖片的當前塊的默認塊向量(“BV”)預測值,所述默認BV預測值包括具有非零值的BV預測值分量;以及 使用所述默認BV預測值來對所述當前塊進行編碼。2.如權利要求1所述的方法,其特征在于,使用所述默認BV預測值來對所述當前塊進行編碼包括: 使用所述當前塊的BV值來執行幀內塊復制(“BC”)預測; 使用所述當前塊的BV值以及所述當前塊的默認BV預測值來確定所述當前塊的BV差;以及 對所述當前塊的BV差進行編碼。3.如權利要求1所述的方法,其特征在于,使用所述默認BV預測值來對所述當前塊進行編碼包括使用所述默認BV預測值來執行幀內BC預測。4.一種在具有視頻解碼器或圖像解碼器的計算設備中的方法,所述方法包括: 確定圖片的當前塊的默認塊向量(“BV”)預測值,所述默認BV預測值包括具有非零值的BV預測值分量;以及 使用所述默認BV預測值來對所述當前塊進行解碼。5.如權利要求4所述的方法,其特征在于,使用所述默認BV預測值來對所述當前塊進行解碼包括: 對所述當前塊的BV差進行解碼; 將經解碼的所述當前塊的BV差與所述當前塊的默認BV預測值組合以重構所述當前塊的BV值;以及 使用所述當前塊的BV值來執行幀內塊復制(“BC”)預測。6.如權利要求4所述的方法,其特征在于,使用所述默認BV預測值來對所述當前塊進行解碼包括使用所述默認BV預測值來執行幀內BC預測。7.如權利要求1一6中的任意一項所述的方法,其特征在于,所述默認BV預測值是經聚集的多個BV預測值候選的集合的一部分。8.如權利要求1一6中的任意一項所述的方法,其特征在于,還包括: 檢查所述圖片的前一個塊的實際BV值是否可用,其中所述當前塊的默認BV預測值僅在所述圖片的任何一個之前的塊的實際BV值都不可用的情況下被使用。9.如權利要求8所述的方法,其特征在于,如果(I)所述前一個塊和所述當前塊是給定編碼樹單元的一部分,并且(2)所述前一個塊的預測模式是幀內BC預測模式,則所述前一個塊的實際BV值是可用的。10.如權利要求1一 9中的任意一項所述的方法,其特征在于,所述當前塊是編碼單元的一部分。11.如權利要求1一 10中的任意一項所述的方法,其特征在于,所述具有非零值的BV預測值分量是水平BV分量。12.如權利要求1一 10中的任意一項所述的方法,其特征在于,所述具有非零值的BV預測值分量是垂直BV分量。13.如權利要求1一 10中的任意一項所述的方法,其特征在于,所述非零值是所述當前塊的高度或寬度。14.如權利要求1一 10中的任意一項所述的方法,其特征在于,所述非零值是與所述當前塊的尺寸無關的固定值。15.—種在具有視頻編碼器或圖像編碼器的計算設備中的方法,所述方法包括: 使用塊向量(“BV”)預測來確定圖片的當前塊的BV值,所述當前塊的BV值指示到所述圖片內的區域的位移; 使用幀內塊復制預測用所述BV值來對所述當前塊進行編碼;以及在比特流中輸出所述當前塊是以跳躍模式編碼的指示,其中所述比特流缺少所述當前塊的BV差和殘留數據。16.一種在具有視頻解碼器或圖像解碼器的計算設備中的方法,所述方法包括: 從比特流中接收圖片的當前塊是以跳躍模式編碼的指示,其中所述比特流缺少所述當前塊的塊向量(“BV”)差和殘留數據; 使用BV預測來確定所述當前塊的BV值,所述當前塊的BV值指示到所述圖片內的區域的位移;以及 使用幀內塊復制預測用所述BV值來對所述當前塊進行解碼。17.如權利要求15或16所述的方法,其特征在于,所述比特流包括索引值,所述索引值指示從多個BV預測值候選的集合中對要用作所述當前塊的BV值的BV預測值候選的選擇。18.如權利要求17所述的方法,其特征在于,所述索引值是標志值,所述多個BV預測值候選的集合具有兩個BV預測值候選。19.如權利要求17所述的方法,其特征在于,所述索引值是整數值,所述多個BV預測值候選的集合具有不止兩個BV預測值候選。20.如權利要求19所述的方法,其特征在于,所述多個BV預測值候選包括一個或多個默認BV預測值,所述一個或多個默認BV預測值中的每一個包括具有非零值的BV預測值分量。21.—種在具有視頻編碼器或圖像編碼器的計算設備中的方法,所述方法包括: 確定圖片的當前塊的多個塊向量(“BV”)預測值候選的集合; 選擇所述多個BV預測值候選中要用于當前塊的一個BV預測值候選; 使用所選擇的BV預測值候選來對所述當前塊進行編碼;以及 在比特流中輸出指示所選擇的BV預測值候選的索引值。22.一種在具有視頻解碼器或圖像解碼器的計算設備中的方法,所述方法包括: 從比特流中接收索引值; 確定圖片的當前塊的多個塊向量(“BV”)預測值候選的集合; 基于所述索引值,選擇所述多個BV預測值候選中的要用于所述當前塊的一個BV預測值候選;以及 使用所選擇的BV預測值候選來對所述當前塊進行解碼。23.如權利要求21或22所述的方法,其特征在于,所述當前塊是合并模式塊,并且其中所述比特流缺少所述當前塊的BV差。24.如權利要求23所述的方法,其特征在于,所述比特流缺少所述當前塊的殘留數據。25.如權利要求23所述的方法,其特征在于,所述比特流包括所述當前塊的殘留數據。26.如權利要求21或22所述的方法,其特征在于,所述比特流中的值指示所述當前塊是跳躍模式塊,其中所述比特流缺少所述當前塊的BV差,并且其中所述比特流缺少所述當前塊的殘留數據。27.如權利要求21或22所述的方法,其特征在于,所述比特流包括所述當前塊的BV差,所述BV差指示所選擇的BV預測值候選和所述當前塊的BV值之間的差。28.如權利要求21— 27中的任意一項所述的方法,其特征在于,所述索引值是標志值,所述多個BV預測值候選的集合具有兩個BV預測值候選。29.如權利要求21— 27中的任意一項所述的方法,其特征在于,所述索引值是整數值,所述多個BV預測值候選的集合具有不止兩個BV預測值候選。30.如權利要求21— 29中的任意一項所述的方法,其特征在于,所述多個BV預測值候選包括多至X個之前的塊的實際BV值。31.如權利要求30所述的方法,其特征在于,X至少為2。32.如權利要求30所述的方法,其特征在于,所述之前的塊是至少部分基于所述當前塊周圍的鄰居的位置來標識的。33.如權利要求30所述的方法,其特征在于,所述之前的塊是至少部分基于與所述當前塊相比的解碼順序來標識的。34.如權利要求21— 33中的任意一項所述的方法,其特征在于,所述多個BV預測值候選包括一個或多個默認BV預測值,所述一個或多個默認BV預測值中的每一個包括具有非零值的BV預測值分量。35.如權利要求21— 34中的任意一項所述的方法,其特征在于,所述索引值在所述比特流中被信號化作為指示所述當前塊是否是使用幀內塊復制預測模式來編碼的語法元素的一部分。36.如權利要求21— 34中的任意一項所述的方法,其特征在于,如果幀內塊復制預測模式語法元素指示所述當前塊是使用幀內塊復制預測模式來編碼的,則所述索引值被有條件地在所述比特流中信號化。37.如權利要求21至36中的任意一項所述的方法,其特征在于,還包括: 更新用來跟蹤之前的塊的實際BV值的數據結構。38.—種被適配成執行權利要求1一 37中的任一項所述的方法的計算設備。39.—個或多個存儲計算機可執行指令的計算機可讀介質,所述計算機可執行指令使得計算設備因此被編程為執行如權利要求1 一 37中的任一項所述的方法。
【文檔編號】H04N19/50GK105917650SQ201480072214
【公開日】2016年8月31日
【申請日】2014年1月3日
【發明人】L·朱, G·沙利文, J·許, S·桑庫拉提, B·A·庫馬, F·吳
【申請人】微軟技術許可有限責任公司