TW202135531A - 用於視訊編解碼的經解碼圖片緩衝器(dpb)參數訊號傳遞通知 - Google Patents

用於視訊編解碼的經解碼圖片緩衝器(dpb)參數訊號傳遞通知 Download PDF

Info

Publication number
TW202135531A
TW202135531A TW110103233A TW110103233A TW202135531A TW 202135531 A TW202135531 A TW 202135531A TW 110103233 A TW110103233 A TW 110103233A TW 110103233 A TW110103233 A TW 110103233A TW 202135531 A TW202135531 A TW 202135531A
Authority
TW
Taiwan
Prior art keywords
vps
dpb
ols
video
syntax
Prior art date
Application number
TW110103233A
Other languages
English (en)
Inventor
瓦迪姆 賽萊金
莫哈美德塞伊德 克班
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW202135531A publication Critical patent/TW202135531A/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

示例方法包括在視訊資料的當前位元串流的序列參數集(SPS)由作為輸出層集(OLS)的唯一層的層引用時從SPS解碼經解碼圖片緩衝器(DPB)參數語法結構;及基於DPB參數語法結構,重構由當前位元串流表示的視訊資料。

Description

用於視訊編解碼的經解碼圖片緩衝器(DPB)參數訊號傳遞通知
本專利申請案主張於2020年1月29日提出申請的美國臨時申請第62/967,507號以及於2020年4月2日提出申請的美國臨時申請第63/004,022號的的權益,上述申請中的任一個的全部內容以引用方式併入本文中。
本案係關於視訊編碼和視訊解碼。
數位視訊能力可被併入廣泛的設備中,包括數位電視、數位直接廣播系統、無線廣播系統、個人數位助理(PDA)、膝上型或桌上型電腦、平板電腦、電子書閱讀器、數碼相機、數位記錄設備、數位媒體播放機、視訊遊戲設備、視訊遊戲機控制台、蜂巢或衛星無線電電話、所謂的「智慧型電話」、視訊電話會議設備、視訊串流(streaming)設備等。數位視訊設備實施視訊編解碼(coding)技術,諸如在以下各項所定義的標準中描述的彼等技術:MPEG-2;MPEG-4;ITU-T H.263;ITU-T H.264/MPEG-4第10部分,高級視訊編解碼(AVC);ITU-T H.265 /高效視訊編解碼(HEVC)以及此類標準的擴展。藉由實施此類視訊編解碼技術,視訊設備可以更高效地發送、接收、編碼、解碼及/或儲存數位視訊資訊。
視訊編解碼技術包括空間(圖片內)預測及/或時間(圖片間)預測,以減少或消除視訊序列中固有的冗餘。對於基於塊的視訊編解碼,可以將視訊條帶(slice)(例如,視訊圖片或視訊圖片的部分)分割為視訊塊,該等視訊塊亦可被稱為編解碼樹單元(CTU)、編解碼單元(CU)及/或編解碼節點。使用相對於同一圖片中相鄰塊中的參考取樣的空間預測來編碼圖片的訊框內編解碼(I)條帶中的視訊塊。圖片的訊框間編解碼(P或B)條帶中的視訊塊可以使用相對於同一圖片中相鄰塊中的參考取樣的空間預測,或相對於其他參考圖片中的參考取樣的時間預測。圖片可以被稱為訊框,且參考圖片可以被稱為參考訊框。
通常,本案描述用於訊號傳遞通知(signalling)在視訊編解碼中的經解碼圖片緩衝器(DPB)參數的技術。DPB參數可以被包括在DPB參數集中,並且可以指定用於構造DPB的各個態樣,諸如DPB尺寸、最大圖片重排序數目和最大潛時。在某些實例中,視訊編解碼器(例如,視訊編碼器或視訊解碼器)可以在視訊參數集(VPS)中訊號傳遞通知DPB參數。然而,在某些情況下(例如,其中僅單一層被編解碼),視訊編解碼器可以不訊號傳遞通知VPS。當VPS沒有被訊號傳遞通知時,在視訊解碼器試圖從VPS參考DPB參數時,可能會出現問題。
根據本案的一或多個技術,視訊編解碼器可以選擇性地在VPS之外訊號傳遞通知DPB參數。例如,在DPB參數在VPS中將不可用的情況下,視訊編解碼器可以在序列參數集(SPS)中訊號傳遞通知DPB參數。作為一個實例,視訊編解碼器可以在SPS中訊號傳遞通知DPB參數,其中SPS由作為OLS中的唯一層的層來引用(亦即,OLS僅具有一個層,或者僅一個層在位元串流中被編碼)。以此方式,本案的技術使視訊解碼器能夠避免試圖從未訊號傳遞通知的參數集參考參數。
在一個實例中,方法包括在視訊資料的當前位元串流的序列參數集(SPS)由作為輸出層集(OLS)的唯一層的層引用時從SPS編解碼經解碼圖片緩衝器(DPB)參數語法結構;及基於DPB參數語法結構,重構由當前位元串流表示的視訊資料。
在另一實例中,設備包括被配置為儲存經編解碼的視訊位元串流的至少一部分的記憶體;及在電路中實施並且被配置為進行以下操作的一或多個處理器:在經編解碼的視訊位元串流的序列參數集(SPS)由作為輸出層集(OLS)的唯一層的層引用時從SPS解碼經解碼圖片緩衝器(DPB)參數語法結構;及基於DPB參數語法結構,重構由當前位元串流表示的視訊資料。
在另一實例中,設備包括用於在視訊資料的當前位元串流的序列參數集(SPS)由作為輸出層集(OLS)的唯一層的層引用時從SPS編解碼經解碼圖片緩衝器(DPB)參數語法結構的構件;及用於基於DPB參數語法結構,重構由當前位元串流表示的視訊資料的構件。
在另一實例中,電腦可讀取儲存媒體儲存指令,該指令在被執行時,使得一或多個處理器:在視訊資料的當前位元串流的序列參數集(SPS)由作為輸出層集(OLS)的唯一層的層引用時從SPS編解碼經解碼圖片緩衝器(DPB)參數語法結構;及基於DPB參數語法結構,重構由當前位元串流表示的視訊資料。
在下文的附圖和描述中闡述了一或多個實例的細節。其他的特徵、目標和優點將根據描述、附圖和請求項而變得顯而易見。
圖1是圖示了可以執行本案的技術的示例視訊編碼和解碼系統100的方塊圖。本案的技術通常涉及對視訊資料進行編解碼(編碼及/或解碼)。大體而言,視訊資料包括用於處理視訊的任何資料。因此,視訊資料可以包括原始的未編碼視訊、經編碼視訊、經解碼(例如,重構)視訊、以及視訊中繼資料,諸如訊號傳遞通知資料。
如圖1所示,在此實例中,系統100包括提供經編碼視訊資料以供目標設備116解碼和顯示的源設備102。特別地,源設備102經由電腦可讀取媒體110向目標設備116提供視訊資料。源設備102和目標設備116可以包括廣泛的設備中的任何一種,包括桌上型電腦、筆記本(亦即,膝上型)電腦、平板電腦、機上盒、諸如智慧型電話之類的電話手持設備、電視、相機、顯示設備、數位媒體播放機、視訊遊戲控制台、視訊串流設備等。在某些情況下,源設備102和目標設備116可以被配備用於無線通訊,並且因此可以被稱為無線通訊設備。
在圖1的實例中,源設備102包括視訊源104、記憶體106、視訊編碼器200、以及輸出介面108。目標設備116包括輸入介面122、視訊解碼器300、記憶體120和顯示設備118。根據本案,源設備102的視訊編碼器200和目標設備116的視訊解碼器300可以被配置為應用用於對經解碼圖片緩衝器(DPB)結構進行編解碼的技術。因此,源設備102表示視訊編碼設備的實例,而目標設備116表示視訊解碼設備的實例。在其他實例中,源設備和目標設備可以包括其他部件或佈置。例如,源設備102可以從諸如外部相機之類的外部視訊源接收視訊資料。同樣,目標設備116可以與外部顯示設備介面連接(interface),而不是包括整合的顯示設備。
如圖1所示的系統100僅僅是一個實例。大體而言,任何數位視訊編碼及/或解碼設備可以執行用於對DPB結構進行編解碼的技術。源設備102和目標設備116僅僅是此類編解碼設備的實例,其中源設備102產生經編解碼視訊資料以用於發送至目標設備116。本案將「編解碼」設備代表為執行資料的編解碼(編碼及/或解碼)的設備。因此,視訊編碼器200和視訊解碼器300表示編解碼設備的實例,特別地,分別表示視訊編碼器和視訊解碼器的實例。在某些實例中,源設備102和目標設備116可以用基本對稱的方式操作,使得源設備102和目標設備116中的每一個包括視訊編碼和解碼用部件。因此,系統100可以支援源設備102與目標設備116之間的單向或雙向視訊發送,例如,以用於視訊串流、視訊重播、視訊廣播或視訊電話。
大體而言,視訊源104表示視訊資料的源(亦即,原始、未編碼的視訊資料)且將視訊資料的連續系列的圖片(亦被稱為「訊框」)提供至視訊編碼器200,視訊編碼器200對針對該等圖片的資料進行編碼。源設備102的視訊源104可以包括諸如視訊相機之類的視訊擷取設備、包含先前擷取的原始視訊的視訊存檔,及/或用於從視訊內容提供者接收視訊的視訊饋送介面。作為進一步的替代,視訊源104可以產生基於電腦圖形的資料作為源視訊,或者實況視訊、存檔視訊和電腦產生視訊的組合。在每一情況下,視訊編碼器200對所擷取的、預擷取的或電腦產生的視訊資料進行編碼。視訊編碼器200可以將圖片從所接收次序(有時被稱為「顯示次序」)重新佈置成用於編解碼的編解碼次序。視訊編碼器200可以產生包括經編碼視訊資料的位元串流。源設備102隨後可以經由輸出介面108將經編碼視訊資料輸出到電腦可讀取媒體110上,以供例如目標設備116的輸入介面122接收及/或取得。
源設備102的記憶體106和目標設備116的記憶體120表示通用記憶體。在某些實例中,記憶體106、120可以儲存原始視訊資料,例如,來自視訊源104的原始視訊以及來自視訊解碼器300的原始的、經解碼的視訊資料。另外地或替代地,記憶體106、120可以儲存例如分別由視訊編碼器200和視訊解碼器300可執行的軟體指令。儘管在此實例中記憶體106和記憶體120與視訊編碼器200和視訊解碼器300分開地圖示,但應理解,視訊編碼器200和視訊解碼器300亦可以包括用於功能上類似或等同目的的內部記憶體。此外,記憶體106、120可以儲存例如從視訊編碼器200輸出且被輸入到視訊解碼器300的經編碼視訊資料。在某些實例中,記憶體106、120的部分可以被分配為一或多個視訊緩衝器,例如以儲存原始的、經解碼及/或經編碼的視訊資料。
電腦可讀取媒體110可以表示能夠將經編碼視訊資料從源設備102傳送至目標設備116的任何類型的媒體或設備。在一個實例中,電腦可讀取媒體110表示使源設備102能夠例如經由射頻網路或基於電腦的網路即時地將經編碼視訊資料直接發送到目標設備116的通訊媒體。根據諸如無線通訊協定之類的通訊標準,輸出介面108可以調制包括經編碼視訊資料的發送信號,而輸入介面122可以解調所接收的發送信號。通訊媒體可以包括任何無線或有線通訊媒體,諸如射頻(RF)頻譜或一或多條實體發送線。通訊媒體可以形成諸如以下各項的基於封包的網路的部分:區域網路、廣域網路,或諸如網際網路之類的全球網路。通訊媒體可以包括路由器、交換機、基地台或者對促進從源設備102到目標設備116的通訊可能有用的任何其他配備。
在一些實例中,源設備102可以將經編碼資料從輸出介面108輸出至儲存設備112。類似地,目標設備116可以經由輸入介面122從儲存設備112存取經編碼資料。儲存設備112可以包括各種分散式或本端存取的資料儲存媒體中的任何一者,諸如硬驅動器、藍光光碟、DVD、CD-ROM、快閃記憶體、揮發性或非揮發性記憶體,或者用於儲存經編碼視訊資料的任何其他合適的數位儲存媒體。
在某些實例中,源設備102可以將經編碼視訊資料輸出至檔案伺服器114或者可以儲存由源設備102產生的經編碼視訊的另一中間儲存設備。目標設備116可以經由串流或下載來從檔案伺服器114存取所儲存視訊資料。檔案伺服器114可以是能夠儲存經編碼視訊資料並將此經編碼視訊資料發送至目標設備116的任何類型的伺服器設備。檔案伺服器114可以表示(例如,用於網站的)web伺服器、檔案發送協定(FTP)伺服器、內容遞送網路設備或網路附連儲存(NAS)設備。目標設備116可以經由包括網際網路連接的任何標準資料連接從檔案伺服器114存取經編碼視訊資料。此可以包括適合用於存取儲存在檔案伺服器114上的經編碼視訊資料的無線通道(例如,Wi-Fi連接)、有線連接(例如,數位用戶線(DSL)、纜線數據機等)或兩者的組合。檔案伺服器114和輸入介面122可以被配置為根據串流發送協定、下載發送協定或其組合來操作。
輸出介面108和輸入介面122可以表示無線發送器/接收器、數據機、有線連網部件(例如,乙太網路卡)、根據各種IEEE 802.11標準中的任一者操作的無線通訊部件,或其他實體部件。在輸出介面108和輸入介面122包括無線部件的實例中,輸出介面108和輸入介面122可以被配置為根據諸如4G、4G-LTE(長期進化)、高級LTE、5G之類的蜂巢通訊標準來傳遞諸如經編碼視訊資料之類的資料。在輸出介面108包括無線發送器的一些實例中,輸出介面108和輸入介面122可以被配置為根據諸如IEEE 802.11規範、IEEE 802.15規範(例如,ZigBee™)、藍芽™標準之類的其他無線標準來傳遞諸如經編碼視訊資料之類的資料。在某些實例中,源設備102及/或目標設備116可以包括相應的片上系統(SoC)設備。例如,源設備102可以包括用於執行歸因於視訊編碼器200及/或輸出介面108的功能性的SoC設備,而目標設備116可以包括用於執行歸因於視訊解碼器300及/或輸入介面122的功能性的SoC設備。
本案的技術可以被應用於支援諸如以下各項的各種多媒體應用中的任一者的視訊編解碼:空中電視廣播、電纜電視發送、衛星電視發送、諸如基於HTTP的動態自我調整串流(DASH)之類的網際網路串流視訊發送、被編碼到資料儲存媒體上的數位視訊、對儲存在資料儲存媒體上的數位視訊的解碼,或其他應用。
目標設備116的輸入介面122從電腦可讀取媒體110(例如,通訊媒體、儲存設備112、檔案伺服器114等)接收經編碼的視訊位元串流。經編碼的視訊位元串流可以包括由視訊編碼器200定義的、亦由視訊解碼器300使用的訊號傳遞通知資訊,諸如具有描述視訊塊或其他經編解碼單元(例如,條帶、圖片、圖片群組、序列等)的特性及/或處理的值的語法元素。顯示設備118向使用者顯示經解碼視訊資料的經解碼圖片。顯示設備118可以表示各種顯示設備中的任何一者,諸如陰極射線管(CRT)、液晶顯示器(LCD)、電漿顯示器、有機發光二極體(OLED)顯示器或另一類型的顯示設備。
儘管未在圖1中圖示,但在某些實例中,視訊編碼器200和視訊解碼器300可以各自與音訊編碼器及/或音訊解碼器整合,且可以包括適當的MUX-DEMUX單元或者其他硬體及/或軟體,以處理共用資料串流中包括音訊和視訊兩者的多工串流。若適用,MUX-DEMUX單元可以符合ITU H.223多工器協定或其他協定,諸如使用者資料包通訊協定(UDP)。
視訊編碼器200和視訊解碼器300各自可以被實施為各種合適的編碼器及/或解碼器電路中的任一個,諸如一或多個微處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、離散邏輯、軟體、硬體、韌體或其任何組合。當該技術部分地以軟體來實施時,設備可以將用於該軟體的指令儲存在合適的非暫態電腦可讀取媒體中,且使用一或多個處理器在硬體中執行該等指令以執行本案的技術。視訊編碼器200和視訊解碼器300中的每一個可以被包括在一或多個編碼器或解碼器中,該一或多個編碼器或解碼器中的任一個可以被整合為相應設備中的組合編碼器/解碼器(CODEC)的部分。包括視訊編碼器200及/或視訊解碼器300的設備可以包括積體電路、微處理器及/或無線通訊設備,諸如蜂巢式電話。
視訊編碼器200和視訊解碼器300可以根據視訊編解碼標準來操作,視訊編解碼標準諸如ITU-T H.265,亦被稱為高效視訊編解碼(HEVC),或者其擴展,諸如多視圖及/或可縮放視訊編解碼擴展。替代地,視訊編碼器200和視訊解碼器300可以根據其他專用或工業標準來操作,其他專用或工業標準諸如聯合探索測試模型(JEM)或者ITU-T H.266,亦被稱為多功能視訊編解碼(VVC)。在ITU-T SG 16 WP 3和ISO/IEC JTC 1/SC 29/WG 11的聯合視訊專家組(JVET)的第17次會議:佈魯塞爾,BE,2020年6月7-17日,JVET-S2001-v11,Bross等人在「通用視訊編解碼(草案8)」中描述了VVC標準的草案(以下簡稱「VVC草案8」)。然而,本案的技術不限於任何特定編解碼標準。
大體而言,視訊編碼器200和視訊解碼器300可以執行圖片的基於塊的編解碼。術語「塊」通常是指包括將被處理(例如,編碼、解碼或在編碼及/或解碼過程中以其他方式使用)的資料的結構。例如,塊可以包括亮度及/或色度資料的取樣的二維矩陣。大體而言,視訊編碼器200和視訊解碼器300可以對YUV(例如,Y、Cb、Cr)格式表示的視訊資料進行編解碼。亦即,視訊編碼器200和視訊解碼器300可以對亮度和色度分量進行編解碼,而不是對針對圖片的取樣的紅、綠和藍(RGB)資料進行編解碼,其中色度分量可以包括紅色調和藍色調色度分量兩者。在某些實例中,視訊編碼器200在編碼之前將所接收的RGB格式化資料轉換為YUV表示,而視訊解碼器300將YUV表示轉換為RGB格式。替代地,預處理單元和後處理單元(未圖示)可以執行該等轉換。
本案通常可以係關於對圖片的編解碼(例如,編碼和解碼),意欲包括對圖片的資料進行編碼或解碼的過程。類似地,本案可以係關於對圖片的塊的編解碼以包括對針對塊的資料進行編碼或解碼的過程,例如,預測及/或殘差(residual)編解碼。經編碼的視訊位元串流通常包括針對語法元素的一系列值,該等語法元素表示編解碼決策(例如,編解碼模式)以及圖片到塊的分割。因此,對圖片或塊進行編解碼的引用通常應被理解為對針對形成圖片或塊的語法元素的值進行編解碼。
HEVC定義了各種塊,包括編解碼單元(CU)、預測單元(PU)以及變換單元(TU)。根據HEVC,視訊編解碼器(諸如視訊編碼器200)根據四叉樹結構將編解碼樹單元(CTU)分割成CU。亦即,視訊編解碼器將CTU和CU分割成四個相等的非重疊方塊,且四叉樹的每個節點具有零個或四個子節點。沒有子節點的節點可以被稱為「葉節點」,並且此類葉節點的CU可以包括一或多個PU及/或一或多個TU。視訊編解碼器可以進一步分割PU和TU。例如,在HEVC中,殘差四叉樹(RQT)表示對TU的分割。在HEVC中,PU表示訊框間預測資料,而TU表示殘差資料。經訊框內預測的CU包括訊框內預測資訊,諸如訊框內模式指示。
作為另一實例,視訊編碼器200和視訊解碼器300可以被配置為根據JEM或VVC操作。根據JEM或VVC,視訊編解碼器(諸如視訊編碼器200)將圖片分割成多個編解碼樹單元(CTU)。視訊編碼器可以根據諸如四叉樹-二叉樹(QTBT)結構或多類型樹(MTT)結構之類的樹結構來分割CTU。QTBT結構消除了多種分割類型的概念,諸如HEVC的CU、PU和TU之間的區分。QTBT結構包括兩個級別:根據四叉樹分割來分割的第一級別,以及根據二叉樹分割來分割的第二級別。QTBT結構的根節點對應於CTU。二叉樹的葉節點對應於編解碼單元(CU)。
在MTT分割結構中,可以使用四叉樹(QT)分割、二叉樹(BT)分割以及一或多個類型的三叉樹(TT)(亦被稱為三元樹(ternary tree,TT))分割來分割塊。三叉樹或三元樹分割是塊被分割成三個子塊的分割。在某些實例中,三叉樹或三元樹分割將塊劃分成三個子塊而無需經由中心來劃分原始塊。MTT中的分割類型(例如,QT、BT和TT)可以是對稱的或非對稱的。
在某些實例中,視訊編碼器200和視訊解碼器300可以使用單一的QTBT結構或MTT結構來表示亮度分量和色度分量中的每一者,而在其他實例中,視訊編碼器200和視訊解碼器300可以使用兩個或兩個以上QTBT結構或MTT結構,諸如一個QTBT/MTT結構用於亮度分量而另一QTBT/MTT結構用於兩個色度分量(或者兩個QTBT/MTT結構用於相應的色度分量)。
視訊編碼器200和視訊解碼器300可以被配置為按照HEVC使用四叉樹分割、QTBT分割、MTT分割,或者其他分割結構。出於解釋的目的,針對QTBT分割來呈現本案的技術的描述。然而,應理解,本案的技術亦可以被應用於被配置為使用四叉樹分割或其他類型的分割的視訊編解碼器。
塊(例如,CTU或CU)可以在圖片中以各種方式被分組。作為一個實例,區塊(brick)可以代表圖片中的特定圖塊(tile)內的CTU行的矩形區域。圖塊可以是圖片中的特定圖塊列和特定圖塊行內的CTU的矩形區域。圖塊列指具有與圖片的高度相等的高度以及由語法元素(例如,諸如在圖片參數集中)指定的寬度的CTU的矩形區域。圖塊行指具有由語法元素(例如,諸如在圖片參數集中)指定的高度以及與圖片的寬度相等的寬度的CTU的矩形區域。
在某些實例中,圖塊可以被分割成多個區塊,其中每個區塊可以包括圖塊內的一或多個CTU行。未被分割成多個區塊的圖塊亦可以被稱為區塊。然而,作為圖塊的真實子集的區塊不可以被稱為圖塊。
圖片中的區塊亦可以被佈置在條帶(slice)中。條帶可以是可以被排他地包含在單一網路抽象層(NAL)單元中的圖片的整數個區塊。在某些實例中,條帶包括多個完整圖塊或者僅一個圖塊的完整區塊的連續序列。
本案可互換地使用「N×N」和「N乘N」來代表塊(諸如CU或其他視訊塊)的就豎直和水平維度而言的取樣維度,例如,16×16取樣或者16乘16取樣。大體而言,16×16 CU將在豎直方向上具有16個取樣(y=16)且在水平方向上具有16個取樣(x=16)。同樣,N×N CU通常在豎直方向上具有N個取樣且在水平方向上具有N個取樣,其中N表示非負整數值。CU中的取樣可以按行和列來佈置。此外,CU在水平方向上與豎直方向上不一定需要具有相同數目的取樣。例如,CU可以包括NxM取樣,其中M不一定等於N。
視訊編碼器200對針對CU的、表示預測及/或殘差資訊以及其他資訊的視訊資料進行編碼。預測資訊指示將如何預測CU以便形成針對CU的預測塊。殘差資訊通常表示編碼之前的CU的取樣與預測塊之間的逐取樣差。
為了預測CU,視訊編碼器200通常可以經由訊框間預測或訊框內預測來形成針對CU的預測塊。訊框間預測通常指從先前經編解碼圖片的資料來預測CU,而訊框內預測通常指從相同圖片的先前經編解碼資料來預測CU。為了執行訊框間預測,視訊編碼器200可以使用一或多個運動向量來產生預測塊。視訊編碼器200通常可以執行運動搜尋以例如根據CU與參考塊之間的差來標識緊密匹配CU的參考塊。視訊編碼器200可以使用絕對差之和(SAD)、平方差之和(SSD)、平均絕對差(MAD)、均方差(MSD)或其他此類差計算來計算差度量以確定參考塊是否緊密匹配當前CU。在一些實例中,視訊編碼器200可以使用單向預測或雙向預測來預測當前CU。
JEM和VVC的某些實例亦提供仿射運動補償模式,其可以被認為是訊框間預測模式。在仿射運動補償模式中,視訊編碼器200可以確定表示諸如以下各項的非平移運動的兩個或兩個以上運動向量:放大或縮小、旋轉、透視運動或其他不規則運動類型。
為了執行訊框內預測,視訊編碼器200可以選擇訊框內預測模式以產生預測塊。JEM和VVC的某些實例提供六十七個訊框內預測模式,包括各種方向模式,以及平面模式和DC模式。大體而言,視訊編碼器200選擇以下訊框內預測模式:描述當前塊(例如,CU的塊)的相鄰取樣,以從相鄰取樣預測當前塊的取樣。假設視訊編碼器200以光柵掃瞄次序(從左到右,從上到下)對CTU和CU進行編解碼,此類取樣通常可以位於與當前塊相同的圖片中的當前塊的上方、左上方,或左方。
視訊編碼器200對表示用於當前塊的預測模式的資料進行編碼。例如,對於訊框間預測模式,視訊編碼器200可以對表示以下內容的資料進行編碼:使用各種可用訊框間預測模式中的哪一個,以及用於對應模式的運動資訊。例如,對於單向或雙向訊框間預測,視訊編碼器200可以使用高級運動向量預測(AMVP)或合併模式對運動向量進行編碼。針對仿射運動補償模式,視訊編碼器200可以使用類似模式來對運動向量進行編碼。
在對塊的預測之後,諸如在對塊的訊框內預測或訊框間預測之後,視訊編碼器200可以計算針對塊的殘差資料。諸如殘差塊之類的殘差資料表示塊與使用對應預測模式形成的針對該塊的預測塊之間的逐取樣差。視訊編碼器200可以將一或多個變換應用於殘差塊,以在變換域而非取樣域中產生經變換資料。例如,視訊編碼器200可以將離散餘弦變換(DCT)、整數變換、小波變換或概念上類似的變換應用於殘差視訊資料。另外地,視訊編碼器200可以在第一變換之後應用次變換,諸如模式相關的不可分離次變換(MDNSST)、信號相關的變換、卡南-洛伊夫變換(KLT)等。視訊編碼器200在應用一或多個變換之後產生變換係數。
如前述,在用於產生變換係數的任何變換之後,視訊編碼器200可以執行對變換係數的量化。量化通常是指對變換係數進行量化以可能地減少用於表示變換係數的資料量從而提供進一步壓縮的過程。經由執行量化過程,視訊編碼器200可減小與變換係數中的某些或全部相關聯的位元深度。例如,視訊編碼器200可以在量化期間將n位元值向下捨入成m位元值,其中n大於m。在某些實例中,為了執行量化,視訊編碼器200可以對待量化的值執行逐位右移。
在量化之後,視訊編碼器200可以掃瞄變換係數,從包括經量化變換係數的二維矩陣產生一維向量。掃瞄可以被設計成將較高能量(並且因此較低頻率)的變換係數置於向量的前面而將較低能量(並且因此較高頻率)的變換係數置於向量的後面。在某些實例中,視訊編碼器200可以利用預定義掃瞄次序來掃瞄經量化變換係數以產生序列化(serialized)向量,且隨後對向量的經量化變換係數進行熵編碼。在其他實例中,視訊編碼器200可以執行自我調整掃瞄。在掃瞄經量化變換係數以形成一維向量之後,視訊編碼器200可例如根據上下文自我調整二進位算術編解碼(CABAC)來對一維向量進行熵編碼。視訊編碼器200亦可以對針對語法元素的值進行熵編碼,該等語法元素描述與經編碼視訊資料相關聯的、供視訊解碼器300在解碼視訊資料時使用的中繼資料。
為了執行CABAC,視訊編碼器200可以將上下文模型內的上下文指派給待發送的符號。上下文可以係關於例如符號的相鄰值是否為零值。概率確定可以基於指派給符號的上下文。
視訊編碼器200可以進一步例如在圖片頭部,塊頭部,條帶頭部中產生至視訊解碼器300的諸如基於塊的語法資料、基於圖片的語法資料和基於序列的語法資料之類的語法資料或諸如序列參數集(SPS)、圖片參數集(PPS)或視訊參數集(VPS)之類的其他語法資料。視訊解碼器300可以同樣解碼此類語法資料以確定如何解碼對應視訊資料。
以此方式,視訊編碼器200可以產生位元串流,該位元串流包括經編碼視訊資料,例如,描述圖片到塊(例如,CU)的分割的語法元素以及針對塊的預測及/或殘差資訊。最終,視訊解碼器300可以接收位元串流並對經編碼視訊資料進行解碼。
大體而言,視訊解碼器300執行與視訊編碼器200所執行的過程相反的過程以解碼位元串流的經編碼視訊資料。例如,視訊解碼器300可以以儘管與視訊編碼器200的CABAC編碼過程相反但基本上類似的方式使用CABAC來解碼位元串流中針對語法元素的值。語法元素可以定義圖片到CTU的分割資訊,以及根據諸如QTBT結構之類的對應分割結構進行的對每個CTU的分割,以定義CTU的CU。語法元素可以進一步定義針對視訊資料的塊(例如,CU)的預測和殘差資訊。
殘差資訊可以由例如經量化變換係數表示。視訊解碼器300可以對塊的經量化變換係數進行逆量化和逆變換以再現針對塊的殘差塊。視訊解碼器300使用訊號傳遞通知的預測模式(訊框內或訊框間預測)和相關預測資訊(例如,用於訊框間預測的運動資訊)來形成針對塊的預測塊。視訊解碼器300隨後可以(在逐取樣基礎上)組合預測塊和殘差塊以再現原始塊。視訊解碼器300可以執行額外處理,諸如執行去塊過程以減少沿塊的邊界的視覺偽影。
在編解碼過程期間,視訊編碼器200和視訊解碼器300可以將經解碼視訊資料儲存在經解碼圖片緩衝器(DPB)中。該等DPB的結構可以變化,並且視訊編碼器200可以確定DBP的結構且訊號傳遞通知指示所確定的結構的一或多個語法元素。在VVC草案標準(例如,VVC草案8)中,視訊編碼器200可以訊號傳遞通知指示DPB參數結構可以在視訊參數集(VPS)中被訊號傳遞通知的語法元素。視訊編碼器200亦可以訊號傳遞通知DPB結構的數目(vps_num_dpb_params),但該訊號傳遞通知可以以是否全部層皆是被獨立編解碼的(vps_all_independent_layers_flag)為條件。
在VVC草案8中,以下語法表被呈現:
     if( vps_max_layers_minus1 > 0 ) {  
           if( vps_all_independent_layers_flag )  
               each_layer_is_an_ols_flag u(1)
           if( !each_layer_is_an_ols_flag ) {  
                if( !vps_all_independent_layers_flag )  
                    ols_mode_idc u(2)
                if( ols_mode_idc  = =  2 ) {  
                    num_output_layer_sets_minus1 u(8)
                     for( i = 1; i  <=  num_output_layer_sets_minus1; i ++)  
                           for( j = 0; j  <=  vps_max_layers_minus1; j++ )  
                               ols_output_layer_flag [ i ][ j ] u(1)
                }  
           }  
     }  
vps_num_ptls_minus1 u(8)
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ ) {  
           if( i > 0 )  
               pt_present_flag [ i ] u(1)
           if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
               ptl_max_temporal_id [ i ] u(3)
     }  
     while( !byte_aligned( ) )  
          vps_ptl_alignment_zero_bit   /* equal to 0 */ f(1)
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ )  
           profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )  
     for( i = 0; i < TotalNumOlss; i++ )  
           if( vps_num_ptls_minus1 > 0 )  
               ols_ptl_idx [ i ] u(8)
     if( !vps_all_independent_layers_flag )  
vps_num_dpb_params ue(v)
     if( vps_num_dpb_params > 0  &&  vps_max_sublayers_minus1 > 0 )  
vps_sublayer_dpb_params_present_flag u(1)
     for( i = 0; i < vps_num_dpb_params; i++ ) {  
           if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
               dpb_max_temporal_id [ i ] u(3)
           dpb_parameters( dpb_max_temporal_id[ i ], vps_sublayer_dpb_params_present_flag )  
     }  
     for( i = 0; i < TotalNumOlss; i++ ) {  
           if( NumLayersInOls[ i ] > 1 ) {  
               ols_dpb_pic_width [ i ] ue(v)
               ols_dpb_pic_height [ i ] ue(v)
                if( vps_num_dpb_params > 1 )  
                    ols_dpb_params_idx [ i ] ue(v)
           }  
     }  
     if( !each_layer_is_an_ols_flag )  
vps_general_hrd_params_present_flag u(1)
     if( vps_general_hrd_params_present_flag ) {  
           general_hrd_parameters( )  
           if( vps_max_sublayers_minus1 > 0 )  
               vps_sublayer_cpb_params_present_flag u(1)
          num_ols_hrd_params_minus1 ue(v)
           for( i = 0; i  <=  num_ols_hrd_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0 &&  !vps_all_layers_same_num_sublayers_flag )  
hrd_max_tid [ i ] u(3)
                firstSubLayer = vps_sublayer_cpb_params_present_flag ? 0 : hrd_max_tid[ i ]  
                ols_hrd_parameters( firstSubLayer, hrd_max_tid[ i ] )  
           }  
           if( num_ols_hrd_params_minus1 + 1  !=  TotalNumOlss  &&                      num_ols_hrd_params_minus1 > 0 )  
                for( i = 1; i < TotalNumOlss; i++ )  
                     if( NumLayersInOls[ i ] > 1 )  
ols_hrd_idx [ i ] ue(v)
     }  
    vps_extension_flag u(1)
     if( vps_extension_flag )  
           while( more_rbsp_data( ) )  
               vps_extension_data_flag u(1)
     rbsp_trailing_bits( )  
}  
以下語義描述了來自上述語法表的語法元素:
vps_all_independent_layers_flag等於1指定CVS中的全部層被獨立編解碼而不使用層間預測。vps_all_independent_layers_flag等於0指定CVS中的層的一或多個可以使用層間預測。當不存在時,vps_all_independent_layers_flag的值被推斷為等於1。
each_layer_is_an_ols_flag等於1指定每個OLS僅包含一個層,並且涉及VPS的CVS之每一者層本身是其中單一的被包括層是唯一輸出層的OLS。each_layer_is_an_ols_flag等於0,OLS可以包含多於一個層。若vps_max_layers_minus1等於0,則 each_layer_is_an_ols_flag的值被推斷為等於1。否則,當vps_all_independent_layers_flag等於0,則 each_layer_is_an_ols_flag的值被推斷為等於0。
vps_num_dpb_params指定VPS中的dpb_parameters( )語法結構的數目。vps_num_dpb_params的值將處於0到16(含16)的範圍中。當不存在時,vps_num_dpb_params的值被推斷為等於0。
ols_dpb_params_idx[i]指定當NumLayersInOls[i]大於1時,針對VPS中的dpb_parameters( )語法結構的清單,應用於第i個OLS的dpb_parameters( )語法結構的索引。當存在時,ols_dpb_params_idx[i]的值將處於0到vps_num_dpb_params−1(含vps_num_dpb_params−1)的範圍中。當ols_dpb_params_idx[i]不存在時,ols_dpb_params_idx[i]的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的dpb_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
vps_sublayer_dpb_params_present_flag被用於控制VPS中的dpb_parameters( )語法結構中的max_dec_pic_buffering_minus1[]、max_num_reorder_pics[]和max_latency_increase_plus1[]語法元素的存在。當不存在時,vps_sub_dpb_params_info_present_flag被推斷為等於0。
vps_general_hrd_params_present_flag等於1指定語法結構general_hrd_parameters( )和其他HRD參數存在於VPS RBSP語法結構中。vps_general_hrd_params_present_flag等於0指定語法結構general_hrd_parameters( )和其他HRD參數不存在於VPS RBSP語法結構中。當不存在時,vps_general_hrd_params_present_flag的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的general_hrd_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
在VVC草案8中,視訊編解碼器200可以按以下條件訊號傳遞通知指示序列參數集(SPS)中的DPB結構的一或多個語法元素:
     if( sps_max_sublayers_minus1 > 0 )  
sps_sublayer_dpb_params_flag u(1)
     if( sps_ptl_dpb_hrd_params_present_flag )  
     dpb_parameters( sps_max_sublayers_minus1,sps_sublayer_dpb_params_flag )  
sps_ptl_dpb_hrd_params_present_flag等於1指定profile_tier_level( )語法結構和dpb_parameters( )語法結構存在於SPS中,而且 general_hrd_parameters( )語法結構和ols_hrd_parameters( )語法結構亦可以存在於SPS中。sps_ptl_dpb_hrd_params_present_flag等於0指定該四個語法結構中沒有一個存在於SPS中。sps_ptl_dpb_hrd_params_present_flag 的值應等於vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]。
VVC草案8的技術可能存在一或多個缺點。例如,可以存在此種情況:全部層皆被獨立地編解碼,並且多於一個的層被包括在輸出層集(OLS)中。在此情況下,視訊編碼器200可以在VPS中訊號傳遞通知零個DPB結構,但當DPB結構被推斷為等於0時,其稍後由 ols_dpb_params_idx引用。另外地,來自VPS DPB結構的DPB參數被用於定義例如級別限制中的最大DPB尺寸。以下摘錄來自VVC草案8的題為「A.4.1 General tier and level limits(A.4.1通常層次和級別限制)」的部分: 否則(NumLayersInOls[TargetOlsIdx]大於1),PicWidthMaxInSamplesY被設置為等於ols_dpb_pic_width[TargetOlsIdx],PicHeightMaxInSamplesY被設置為等於ols_dpb_pic_height[TargetOlsIdx],PicSizeMaxInSamplesY被設置為等於PicWidthMaxInSamplesY * PicHeightMaxInSamplesY,並且適用的dpb_parameters( )語法結構由VPS中找到的ols_dpb_params_idx[TargetOlsIdx]標識。
在此種情況下,dpb_parameters( )未被訊號傳遞通知,但是被引用(例如,使用)並且被使用。在此類情況下,視訊解碼器300可以試圖引用未被訊號傳遞通知的語法元素,此可以導致視訊解碼器300的不可預測和不期望的操作。
在SPS中,當vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]等於1時,意味著該層是被獨立編解碼的,可能需要視訊編碼器200訊號傳遞通知DPB結構。然而,被獨立編解碼的層可以被包括在OLS中,並且可以替代地使用dpb_parameters( )。
本發明提出可以解決上述問題的若干技術。作為一個實例,視訊編碼器200可以訊號傳遞通知用於具有多於一個層的輸出層集(OLS)的DPB參數,而不管包括在OLS中的層是獨立的亦是包括在OLS中的全部層是獨立的。層可以被視為獨立層,其中可在沒有任何其他層資訊的情況下對該層進行解碼。作為另一實例,若SPS由作為OLS中的唯一層的層引用(亦即,OLS僅具有一個層,或者僅一個層在位元串流中被編碼),視訊編碼器可以總是訊號傳遞通知(例如,訊號傳遞通知可能被需要)在SPS中的DPB參數。
在VVC草案8中,vps_num_dpb_params可以被訊號傳遞通知為等於0(亦即,指示沒有dpb_parameters( )存在於VPS中)。然而,當不存在時,vps_num_dpb_params被推斷為0。因為不需要訊號傳遞通知0值,所以本案提出,指定VPS中的dpb_parameters( )語法結構的數目的語法元素(亦即,在VVC草案8中的vps_num_dpb_params)可以被修改為指定VPS中的dpb_parameters( )語法結構的數目減一(例如,vps_num_dpb_params可以由 vps_num_dpb_params_minus1代替)。若存在至少一個dpb_parameters( )結構,則此語法元素(例如,vps_num_dpb_params_minus1)可以被訊號傳遞通知。在一個實例中,該語法元素的語義可以被表示如下:
vps_num_dpb_params_minus1 指定VPS中的dpb_parameters( )語法結構的數目減1。vps_num_dpb_params_minus1的值將處於0到15(含15)的範圍中。當不存在時,vps_num_dpb_params_minus1的值被推斷為等於0。
隨後,ols_dpb_params_idx語法元素的訊號傳遞通知可以以vps_num_dpb_params_minus1語法元素的值為條件。作為一個實例,該制約可以如下被實施:
                if( vps_num_dpb_params_minus1 > 0 )  
                    ols_dpb_params_idx [i] ue(v)
對vps_sublayer_dpb_params_present_flag語法元素的訊號傳遞通知亦可以被修改為以vps_num_dpb_params_minus1語法元素的值為條件。作為一個實例,該制約可以如下被實施:
if( vps_num_dpb_params_minus1 > 0  &&  vps_max_sublayers_minus1 > 0 )  
vps_sublayer_dpb_params_present_flag u(1)
在另一實例中,vps_sublayer_dpb_params_present_flag的訊號傳遞通知可以與vps_num_dpb_params組合,隨後可以不需要vps_num_dpb_params_minus1>0的條件,並且可以僅保留具有多於一個臨時層(vps_max_sublayers_minus1 > 0)的條件。
作為另一實例,當全部獨立層可以被包括在OLS中時,視訊編碼器200亦可以針對此情況訊號傳遞通知 vps_num_dpb_params語法元素。根據本案的一或多個技術,視訊編碼器200可以有條件地訊號傳遞通知vps_num_dpb_params語法元素,使得vps_num_dpb_params 語法元素在多於1個層存在於VPS中的情況下以及當多於一個層被包括在任何OLS中時被訊號傳遞通知。作為一個實例,該制約可以如下被實施:
if( vps_max_layers_minus1 > 0  &&  !each_layer_is_an_ols_flag )  
vps_num_dpb_params ue(v)  
替代地,視訊編碼器200可以基於前述條件中的一者而非兩者來制約對vps_num_dpb_params語法元素的訊號傳遞通知。例如,視訊編碼器200可以基於條件vps_max_layers_minus1>0(具有多於1個層)或!each_layer_is_an_ols_flag(多於一個層被包括在OLS中)中的任一個來制約對vps_num_dpb_params語法元素的訊號傳遞通知。
在又一替代中,視訊編碼器200可以無條件地訊號傳遞通知vps_num_dpb_params 語法元素。在某些實例中,vps_num_dpb_params語法元素的語義可以被約束為,當僅一個層存在於CVS中,或者所有的OLS僅包含一個層時,vps_num_dpb_params的值將等於零。在某些實例中,vps_num_dpb_params語法元素的語義可以被修改,使得若多於1個層存在於CVS中或者多於一個層被包括在任何OLS中,則vps_num_dpb_params的值將大於0。
視訊編碼器200可以在與vps_num_dpb_params訊號傳遞通知相同的條件下(例如,當存在多於一個層被包括在OLS中(!each_layer_is_an_ols_flag))有條件地訊號傳遞通知假定參考解碼器( hypothetical reference decoder ,HRD)參數(vps_general_hrd_params_present_flag)。在此種情況下,vps_num_dpb_params和vps_general_hrd_params_present_flag的訊號傳遞通知在一個條件下可以被組合以避免檢查該條件兩次。在一個實例中,其可以如下被實施:
if( !each_layer_is_an_ols_flag ){  
vps_num_dpb_params ue(v)  
          vps_general_hrd_params_present_flag u(1)  
     }    
在SPS中,當獨立層被包括在OLS中時,dpb_parameters( )可以被訊號傳遞通知但不被使用,因為VPS中的dpb_parameters( )被利用。根據本案的一或多個技術,sps_ptl_dpb_hrd_params_present_flag語法元素的語義可以被修改,使得僅當SPS由單一層引用時才需要訊號傳遞通知dpb_parameters( )。在一個實例中,其被修改如下:
sps_ptl_dpb_hrd_params_present_flag等於1指定profile_tier_level( )語法結構和dpb_parameters( )語法結構存在於SPS中,而且 general_hrd_parameters( )語法結構和ols_hrd_parameters( )語法結構亦可以存在於SPS中。sps_ptl_dpb_hrd_params_present_flag等於0指定該四個語法結構中沒有一個存在於SPS中。當SPS由包括在OLS中的單一層引用時,sps_ptl_dpb_hrd_params_present_flag的值應等於1。
以下示例語法和語義可以圖示上述技術的一或多個實施。相對於VVC草案8的修改以斜體呈現。
     if( vps_max_layers_minus1 > 0 ) {  
           if( vps_all_independent_layers_flag )  
               each_layer_is_an_ols_flag u(1)
           if( !each_layer_is_an_ols_flag ) {  
                if( !vps_all_independent_layers_flag )  
                    ols_mode_idc u(2)
                if( ols_mode_idc  = =  2 ) {  
                    num_output_layer_sets_minus1 u(8)
                     for( i = 1; i  <=  num_output_layer_sets_minus1; i ++)  
                           for( j = 0; j  <=  vps_max_layers_minus1; j++ )  
                               ols_output_layer_flag [ i ][ j ] u(1)
                }  
           }  
     }  
vps_num_ptls_minus1 u(8)  
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ ) {  
           if( i > 0 )  
               pt_present_flag [ i ] u(1)
           if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
               ptl_max_temporal_id [ i ] u(3)
     }  
     while( !byte_aligned( ) )  
          vps_ptl_alignment_zero_bit   /* equal to 0 */ f(1)
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ )  
           profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )    
     for( i = 0; i < TotalNumOlss; i++ )  
           if( vps_num_ptls_minus1 > 0 )  
               ols_ptl_idx [ i ] u(8)
if( !each_layer_is_an_ols_flag ) {  
vps_num_dpb_params_minus1 ue(v)  
vps_general_hrd_params_present_flag u(1)  
if( vps_max_sublayers_minus1 > 0 )  
vps_sublayer_dpb_params_present_flag u(1)
     }  
for( i = 0; i <= vps_num_dpb_params_minus1; i++ ) {  
           if( vps_max_sublayers_minus1 > 0 &&  !vps_all_layers_same_num_sublayers_flag )  
               dpb_max_temporal_id [ i ] u(3)
           dpb_parameters( dpb_max_temporal_id[ i ], vps_sublayer_dpb_params_present_flag )    
     }    
     for( i = 0; i < TotalNumOlss; i++ ) {  
           if( NumLayersInOls[ i ] > 1 ) {  
               ols_dpb_pic_width [ i ] ue(v)
               ols_dpb_pic_height [ i ] ue(v)
          if( vps_num_dpb_params_minus1 > 0 )  
                    ols_dpb_params_idx [ i ] ue(v)
           }  
     }  
     if( vps_general_hrd_params_present_flag ) {  
           general_hrd_parameters( )  
           if( vps_max_sublayers_minus1 > 0 )  
               vps_sublayer_cpb_params_present_flag u(1)
          num_ols_hrd_params_minus1 ue(v)
           for( i = 0; i  <=  num_ols_hrd_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
hrd_max_tid [ i ] u(3)
                firstSubLayer = vps_sublayer_cpb_params_present_flag ? 0 : hrd_max_tid[ i ]  
                ols_hrd_parameters( firstSubLayer, hrd_max_tid[ i ] )  
           }  
           if( num_ols_hrd_params_minus1 + 1  !=  TotalNumOlss  &&                      num_ols_hrd_params_minus1 > 0 )  
                for( i = 1; i < TotalNumOlss; i++ )  
                     if( NumLayersInOls[ i ] > 1 )  
ols_hrd_idx [ i ] ue(v)
     }  
    vps_extension_flag u(1)
     if( vps_extension_flag )  
           while( more_rbsp_data( ) )  
               vps_extension_data_flag u(1)
     rbsp_trailing_bits( )  
}  
以下示例語法和語義可以圖示上述技術的一或多個實施。相對於VVC草案8的修改以斜體呈現。
vps_num_dpb_params_minus1 指定VPS中的dpb_parameters( )語法結構的數目減1。vps_num_dpb_params_minus1的值將處於0到15(含15)的範圍中。當不存在時,vps_num_dpb_params_minus1的值被推斷為等於0。
ols_dpb_params_idx[i]指定當NumLayersInOls[i]大於1時,針對VPS中的dpb_parameters( )語法結構的清單,應用於第i個OLS的dpb_parameters( )語法結構的索引。當存在時,ols_dpb_params_idx[i]的值將處於0到vps_num_dpb_params_minus1(含vps_num_dpb_params_minus1)的範圍中。當ols_dpb_params_idx[i]不存在時,ols_dpb_params_idx[i]的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的dpb_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
根據本案的技術,視訊編碼器200及/或視訊解碼器300可以對指定視訊資料的當前位元串流的視訊參數集(VPS)中的經解碼圖片緩衝器(DPB)參數語法結構的數目減1的語法元素進行編解碼;回應於確定該語法元素不存在於位元串流中,推斷VPS中的DPB語法結構的數目為零;及重構由當前位元串流表示的視訊資料。
儘管通常參考經解碼圖片緩衝器(DPB)結構來描述,但本案的技術可以同樣適用於其他語法結構。作為一個實例,本案的技術可以適用於設定檔層次級別(profile tier level, PTL)語法結構。作為另一實例,本案的技術可以適用於假定參考解碼器(HRD)語法結構。
在一些實例中,對於視訊編解碼器可能需要在PTL、HRD和DPB結構的訊號傳遞通知中利用一致的設計。例如,視訊編解碼器可以訊號傳遞通知共用旗標以指示序列參數集(SPS)中PTL、DBP和HRD參數(例如,sps_ptl_dpb_hrd_params_present_flag)的存在或不存在。
根據本案的一或多個技術,視訊編解碼器可以訊號傳遞通知共用旗標以指示視訊參數集(VPS)中的DBP和HRD參數的存在或不存在。視訊編解碼器可以單獨地訊號傳遞通知用於指示PTL參數的存在或不存在的旗標(例如,因為PTL參數可以被用於通信期協商目的)。
以下示例語法和語義可以圖示上述技術的一或多個實施。相對於VVC草案8的修改以斜體呈現。
video_parameter_set_rbsp( ) { 描述符
vps_video_parameter_set_id u(4)
vps_max_layers_minus1 u(6)
vps_max_sublayers_minus1 u(3)
     if( vps_max_layers_minus1 > 0  &&  vps_max_sublayers_minus1 > 0 )  
vps_all_layers_same_num_sublayers_flag u(1)
     if( vps_max_layers_minus1 > 0 )  
vps_all_independent_layers_flag u(1)
     for( i = 0; i  <=  vps_max_layers_minus1; i++ ) {  
          vps_layer_id [ i ] u(6)
           if( i > 0  &&  !vps_all_independent_layers_flag ) {  
               vps_independent_layer_flag [ i ] u(1)
                if( !vps_independent_layer_flag[ i ] ) {  
                     for( j = 0; j < i; j++ )  
vps_direct_ref_layer_flag [ i ][ j ] u(1)
               max_tid_ref_present_flag [ i ] u(1)
                     if( max_tid_ref_present_flag[ i ] )  
max_tid_il_ref_pics_plus1 [ i ] u(3)
                }  
           }  
     }  
     if( vps_max_layers_minus1 > 0 ) {  
           if( vps_all_independent_layers_flag )  
               each_layer_is_an_ols_flag u(1)
           if( !each_layer_is_an_ols_flag ) {  
                if( !vps_all_independent_layers_flag )  
                    ols_mode_idc u(2)
                if( ols_mode_idc  = =  2 ) {  
                    num_output_layer_sets_minus1 u(8)
                     for( i = 1; i  <=  num_output_layer_sets_minus1; i ++)  
                           for( j = 0; j  <=  vps_max_layers_minus1; j++ )  
                               ols_output_layer_flag [ i ][ j ] u(1)
                }  
           }  
     }  
vps_num_ptls_minus1 u(8)
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ ) {  
           if( i > 0 )  
               pt_present_flag [ i ] u(1)
           if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
               ptl_max_temporal_id [ i ] u(3)
     }  
     while( !byte_aligned( ) )  
          vps_ptl_alignment_zero_bit   /* equal to 0 */ f(1)
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ )  
           profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )  
     for( i = 0; i < TotalNumOlss; i++ )  
           if( vps_num_ptls_minus1 > 0 )  
               ols_ptl_idx [ i ] u(8)
     if( !each_layer_is_an_ols_flag )  
vps_dpb_hrd_params_present_flag u(1)
    if( vps_dpb_hrd_params_present_flag ) {  
vps_num_dpb_params_minus1 ue(v)
           if(vps_max_sublayers_minus1 > 0 )  
vps_sublayer_dpb_params_present_flag u(1)
           for( i = 0; i <= vps_num_dpb_params_minus1 ; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
                    dpb_max_temporal_id [ i ] u(3)
                dpb_parameters( dpb_max_temporal_id[ i ], vps_sublayer_dpb_params_present_flag )  
           }  
           for( i = 0; i < TotalNumOlss; i++ ) {  
                if( NumLayersInOls[ i ] > 1 ) {  
                    ols_dpb_pic_width [ i ] ue(v)
                    ols_dpb_pic_height [ i ] ue(v)
                     if( vps_num_dpb_params_minus101 )  
                          ols_dpb_params_idx [ i ] ue(v)
                }  
           }  
     if( vps_general _hrd_params_present_flag ) {  
           general_hrd_parameters( )  
           if( vps_max_sublayers_minus1 > 0 )  
               vps_sublayer_cpb_params_present_flag u(1)
          num_ols_hrd_params_minus1 ue(v)
           for( i = 0; i  <=  num_ols_hrd_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
hrd_max_tid [ i ] u(3)
                firstSubLayer = vps_sublayer_cpb_params_present_flag ? 0 : hrd_max_tid[ i ]  
                ols_hrd_parameters( firstSubLayer, hrd_max_tid[ i ] )  
           }  
           if( num_ols_hrd_params_minus1 + 1  !=  TotalNumOlss  &&                      num_ols_hrd_params_minus1 > 0 )  
                for( i = 1; i < TotalNumOlss; i++ )  
                     if( NumLayersInOls[ i ] > 1 )  
ols_hrd_idx [ i ] ue(v)
     }  
    vps_extension_flag u(1)
     if( vps_extension_flag )  
           while( more_rbsp_data( ) )  
               vps_extension_data_flag u(1)
     rbsp_trailing_bits( )  
}  
vps_num_dpb_params_minus1指定VPS中的dpb_parameters( )語法結構的數目減1。vps_num_dpb_params_minus1的值將處於0到15(含15)的範圍中。
ols_dpb_params_idx[i]指定當NumLayersInOls[i]大於1時,針對VPS中的dpb_parameters( )語法結構的清單,應用於第i個OLS的dpb_parameters( )語法結構的索引。當存在時,ols_dpb_params_idx[i]的值將處於0到vps_num_dpb_params_minus1(含vps_num_dpb_params_minus1)的範圍中。當ols_dpb_params_idx[i]不存在時,ols_dpb_params_idx[i]的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的dpb_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
vps_dpb_hrd_params_present_flag等於1指定語法結構dpb_parameters(),general_hrd_parameters( )和其他HRD參數存在於VPS RBSP語法結構中。vps_dpb_hrd_params_present_flag等於0指定語法結構dpb_parameters(),general_hrd_parameters( )和其他HRD參數不存在於VPS RBSP語法結構中。當不存在時,vps_ dpb_hrd_params_present_flag的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的 dpb_parameters()和general_hrd_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
若在多於一個層被包括在VPS中的任何OLS中,則vps_dpb_hrd_params_present_flag 應等於1。
在SPS語義中,對vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]的推斷被消除,因為其是不足夠的,因為在多於一個層位於OLS中的情況下,dpb_parameters()和ols_hrd_parameters()是從VPS匯出的,並將在那裡被訊號傳遞通知。
sps_ptl_dpb_hrd_params_present_flag等於1指定profile_tier_level( )語法結構和dpb_parameters( )語法結構存在於SPS中,而且 general_hrd_parameters( )語法結構和ols_hrd_parameters( )語法結構亦可以存在於SPS中。sps_ptl_dpb_hrd_params_present_flag等於0指定該四個語法結構中沒有一個存在於SPS中。當sps_video_parameter_set_id等於0或僅一個層被包括在所引用VPS的任何OLS中時,sps_ptl_dpb_hrd_params_present_flag的值應等於1。
以下是上述示例語法和語義的純淨版本。
<純淨版本>
video_parameter_set_rbsp( ) { 描述符
vps_video_parameter_set_id u(4)
vps_max_layers_minus1 u(6)
vps_max_sublayers_minus1 u(3)
     if( vps_max_layers_minus1 > 0  &&  vps_max_sublayers_minus1 > 0 )  
vps_all_layers_same_num_sublayers_flag u(1)
     if( vps_max_layers_minus1 > 0 )  
vps_all_independent_layers_flag u(1)
     for( i = 0; i  <=  vps_max_layers_minus1; i++ ) {  
          vps_layer_id [ i ] u(6)
           if( i > 0  &&  !vps_all_independent_layers_flag ) {  
               vps_independent_layer_flag [ i ] u(1)
                if( !vps_independent_layer_flag[ i ] ) {  
                     for( j = 0; j < i; j++ )  
vps_direct_ref_layer_flag [ i ][ j ] u(1)
               max_tid_ref_present_flag [ i ] u(1)
                     if( max_tid_ref_present_flag[ i ] )  
max_tid_il_ref_pics_plus1 [ i ] u(3)
                }  
           }  
     }  
     if( vps_max_layers_minus1 > 0 ) {  
           if( vps_all_independent_layers_flag )  
               each_layer_is_an_ols_flag u(1)
           if( !each_layer_is_an_ols_flag ) {  
                if( !vps_all_independent_layers_flag )  
                    ols_mode_idc u(2)
                if( ols_mode_idc  = =  2 ) {  
                    num_output_layer_sets_minus1 u(8)
                     for( i = 1; i  <=  num_output_layer_sets_minus1; i ++)  
                           for( j = 0; j  <=  vps_max_layers_minus1; j++ )  
                               ols_output_layer_flag [ i ][ j ] u(1)
                }  
           }  
     }  
vps_num_ptls_minus1 u(8)
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ ) {  
           if( i > 0 )  
               pt_present_flag [ i ] u(1)
           if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
               ptl_max_temporal_id [ i ] u(3)
     }  
     while( !byte_aligned( ) )  
          vps_ptl_alignment_zero_bit   /* equal to 0 */ f(1)
     for( i = 0; i  <=  vps_num_ptls_minus1; i++ )  
           profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )  
     for( i = 0; i < TotalNumOlss; i++ )  
           if( vps_num_ptls_minus1 > 0 )  
               ols_ptl_idx [ i ] u(8)
     if( !each_layer_is_an_ols_flag )  
vps_dpb_hrd_params_present_flag u(1)
     if( vps_dpb_hrd_params_present_flag ) {  
vps_num_dpb_params_minus1 ue(v)
           if( vps_max_sublayers_minus1 > 0 )  
vps_sublayer_dpb_params_present_flag u(1)
           for( i = 0; i <= vps_num_dpb_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
                    dpb_max_temporal_id [ i ] u(3)
                dpb_parameters( dpb_max_temporal_id[ i ], vps_sublayer_dpb_params_present_flag )  
           }  
           for( i = 0; i < TotalNumOlss; i++ ) {  
                if( NumLayersInOls[ i ] > 1 ) {  
                    ols_dpb_pic_width [ i ] ue(v)
                    ols_dpb_pic_height [ i ] ue(v)
                     if( vps_num_dpb_params_minus1 > 0 )  
                          ols_dpb_params_idx [ i ] ue(v)
                }  
           }  
     if( vps_dpb_hrd_params_present_flag ) {  
           general_hrd_parameters( )  
           if( vps_max_sublayers_minus1 > 0 )  
               vps_sublayer_cpb_params_present_flag u(1)
          num_ols_hrd_params_minus1 ue(v)
           for( i = 0; i  <=  num_ols_hrd_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
hrd_max_tid [ i ] u(3)
                firstSubLayer = vps_sublayer_cpb_params_present_flag ? 0 : hrd_max_tid[ i ]  
                ols_hrd_parameters( firstSubLayer, hrd_max_tid[ i ] )  
           }  
           if( num_ols_hrd_params_minus1 + 1  !=  TotalNumOlss  &&                      num_ols_hrd_params_minus1 > 0 )  
                for( i = 1; i < TotalNumOlss; i++ )  
                     if( NumLayersInOls[ i ] > 1 )  
ols_hrd_idx [ i ] ue(v)
     }  
    vps_extension_flag u(1)
     if( vps_extension_flag )  
           while( more_rbsp_data( ) )  
               vps_extension_data_flag u(1)
     rbsp_trailing_bits( )  
}  
vps_num_dpb_params_minus1 指定VPS中的dpb_parameters( )語法結構的數目減1。vps_num_dpb_params_minus1的值將處於0到15(含15)的範圍中。
ols_dpb_params_idx[i]指定當NumLayersInOls[i]大於1時,針對VPS中的dpb_parameters( )語法結構的清單,應用於第i個OLS的dpb_parameters( )語法結構的索引。當存在時,ols_dpb_params_idx[i]的值將處於0到vps_num_dpb_params_minus1(含vps_num_dpb_params_minus1)的範圍中。當ols_dpb_params_idx[i]不存在時,ols_dpb_params_idx[i]的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的dpb_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
vps_dpb_hrd_params_present_flag等於1指定語法結構dpb_parameters(),general_hrd_parameters( )和其他HRD參數存在於VPS RBSP語法結構中。vps_dpb_hrd_params_present_flag等於0指定語法結構dpb_parameters(),general_hrd_parameters( )和其他HRD參數不存在於VPS RBSP語法結構中。當不存在時,vps_dpb_hrd_params_present_flag的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的 dpb_parameters()和general_hrd_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
若多於一個層被包括在VPS中的任何OLS中,則vps_dpb_hrd_params_present_flag 應等於1。
在SPS語義中,對vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]的推斷被消除,因為其是不足夠的,因為在多於一個層位於OLS中的情況下,dpb_parameters()和ols_hrd_parameters()是從VPS匯出的,並將在那裡被訊號傳遞通知。
sps_ptl_dpb_hrd_params_present_flag等於1指定profile_tier_level( )語法結構和dpb_parameters( )語法結構存在於SPS中,而且 general_hrd_parameters( )語法結構和ols_hrd_parameters( )語法結構亦可以存在於SPS中。sps_ptl_dpb_hrd_params_present_flag等於0指定該四個語法結構中沒有一個存在於SPS中。當sps_video_parameter_set_id等於0或僅一個層被包括在所引用VPS的任何OLS中時,sps_ptl_dpb_hrd_params_present_flag的值應等於1。
</純淨版本>
在一些實例中,視訊編解碼器可以在SPS中的一個共用選通(gating)旗標下訊號傳遞通知PTL、DBP和HRD結構的存在或不存在,而PTL可以總是在VPS中被訊號傳遞通知(vps_num_ptls_minus1)。在VPS中被訊號傳遞通知的PTL可以被用於通信期協商,當前無論如何皆不可能是在VPS中禁用PTL訊號傳遞通知的機制,即使在OLS中僅具有單一層的情況下。
根據本案的一或多個技術,視訊編解碼器可以在VPS中訊號傳遞通知共用選通旗標以指示PTL、DPB和HRD語法結構的存在或不存在。例如,視訊編解碼器可以在共用選通旗標下將PTL連同DPB和HRD一起包括在VPS中。
以下示例語法和語義可以圖示上述技術的一或多個實施。相對於VVC草案8的修改以斜體呈現。
video_parameter_set_rbsp( ) { 描述符
vps_video_parameter_set_id u(4)
vps_max_layers_minus1 u(6)
vps_max_sublayers_minus1 u(3)
     if( vps_max_layers_minus1 > 0  &&  vps_max_sublayers_minus1 > 0 )  
vps_all_layers_same_num_sublayers_flag u(1)
     if( vps_max_layers_minus1 > 0 )  
vps_all_independent_layers_flag u(1)
     for( i = 0; i  <=  vps_max_layers_minus1; i++ ) {  
          vps_layer_id [ i ] u(6)
           if( i > 0  &&  !vps_all_independent_layers_flag ) {  
               vps_independent_layer_flag [ i ] u(1)
                if( !vps_independent_layer_flag[ i ] ) {  
                     for( j = 0; j < i; j++ )  
vps_direct_ref_layer_flag [ i ][ j ] u(1)
               max_tid_ref_present_flag [ i ] u(1)
                     if( max_tid_ref_present_flag[ i ] )  
max_tid_il_ref_pics_plus1 [ i ] u(3)
                }  
           }  
     }  
     if( vps_max_layers_minus1 > 0 ) {  
           if( vps_all_independent_layers_flag )  
               each_layer_is_an_ols_flag u(1)
           if( !each_layer_is_an_ols_flag ) {  
                if( !vps_all_independent_layers_flag )  
                    ols_mode_idc u(2)
                if( ols_mode_idc  = =  2 ) {  
                    num_output_layer_sets_minus1 u(8)
                     for( i = 1; i  <=  num_output_layer_sets_minus1; i ++)  
                           for( j = 0; j  <=  vps_max_layers_minus1; j++ )  
                               ols_output_layer_flag [ i ][ j ] u(1)
                }  
           }  
     }  
     if( !each_layer_is_an_ols_flag )  
vps_ptl_dpb_hrd_params_present_flag u(1)
if( vps_ptl_dpb_hrd_params_present_flag ) {  
vps_num_ptls_minus1 u(8)
           for( i = 0; i  <=  vps_num_ptls_minus1; i++ ) {  
                if( i > 0 )  
                    pt_present_flag [ i ] u(1)
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
                    ptl_max_temporal_id [ i ] u(3)
           }  
           while( !byte_aligned( ) )  
               vps_ptl_alignment_zero_bit   /* equal to 0 */ f(1)
           for( i = 0; i  <=  vps_num_ptls_minus1; i++ )  
                profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )  
           for( i = 0; i < TotalNumOlss; i++ )  
                if( vps_num_ptls_minus1 > 0 )  
                    ols_ptl_idx [ i ] u(8)
vps_num_dpb_params_minus1 ue(v)
           if(vps_max_sublayers_minus1 > 0 )  
vps_sublayer_dpb_params_present_flag u(1)
           for( i = 0; i <= vps_num_dpb_params_minus1 ; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
                    dpb_max_temporal_id [ i ] u(3)
                dpb_parameters( dpb_max_temporal_id[ i ], vps_sublayer_dpb_params_present_flag )  
           }  
           for( i = 0; i < TotalNumOlss; i++ ) {  
                if( NumLayersInOls[ i ] > 1 ) {  
                    ols_dpb_pic_width [ i ] ue(v)
                    ols_dpb_pic_height [ i ] ue(v)
                     if( vps_num_dpb_params_minus101 )  
                          ols_dpb_params_idx [ i ] ue(v)
                }  
           }  
           general_hrd_parameters( )  
           if( vps_max_sublayers_minus1 > 0 )  
               vps_sublayer_cpb_params_present_flag u(1)
          num_ols_hrd_params_minus1 ue(v)
           for( i = 0; i  <=  num_ols_hrd_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
hrd_max_tid [ i ] u(3)
                firstSubLayer = vps_sublayer_cpb_params_present_flag ? 0 : hrd_max_tid[ i ]  
                ols_hrd_parameters( firstSubLayer, hrd_max_tid[ i ] )  
           }  
           if( num_ols_hrd_params_minus1 + 1  !=  TotalNumOlss  &&                      num_ols_hrd_params_minus1 > 0 )  
                for( i = 1; i < TotalNumOlss; i++ )  
                     if( NumLayersInOls[ i ] > 1 )  
ols_hrd_idx [ i ] ue(v)
     }  
    vps_extension_flag u(1)
     if( vps_extension_flag )  
           while( more_rbsp_data( ) )  
               vps_extension_data_flag u(1)
     rbsp_trailing_bits( )  
}  
vps_num_dpb_params_minus1指定VPS中的dpb_parameters( )語法結構的數目減1。vps_num_dpb_params的值將處於0到15(含15)的範圍中。
ols_dpb_params_idx[i]指定當NumLayersInOls[i]大於1時,針對VPS中的dpb_parameters( )語法結構的清單,應用於第i個OLS的dpb_parameters( )語法結構的索引。當存在時,ols_dpb_params_idx[i]的值將處於0到vps_num_dpb_params_minus1(含vps_num_dpb_params_minus1)的範圍中。當ols_dpb_params_idx[i]不存在時,ols_dpb_params_idx[i]的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的dpb_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
vps_ptl_dpb_hrd_params_present_flag等於1指定語法結構profile_tier_level( ),dpb_parameters( ),general_hrd_parameters( ) 和其他HRD參數存在於VPS RBSP語法結構中。vps_ptl_dpb_hrd_params_present_flag等於0指定該等語法結構不存在於VPS RBSP語法結構中。當不存在時,vps_ ptl_dpb_hrd_params_present_flag 的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的general_hrd_parameters( )和dpb_parameters()語法結構存在於由第i個OLS中的層引用的SPS中。
若多於一個層被包括在VPS中的任何OLS中,則vps_ptl_dpb_hrd_params_present_flag 應等於1。
在SPS語義中,對vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]的推斷被消除,因為其是不足夠的,因為在多於一個層位於OLS中的情況下,dpb_parameters()和ols_hrd_parameters()是從VPS匯出的,並將在那裡被訊號傳遞通知。
sps_ptl_dpb_hrd_params_present_flag等於1指定profile_tier_level( )語法結構和dpb_parameters( )語法結構存在於SPS中,而且 general_hrd_parameters( )語法結構和ols_hrd_parameters( )語法結構亦可以存在於SPS中。sps_ptl_dpb_hrd_params_present_flag等於0指定該四個語法結構中沒有一個存在於SPS中。當sps_video_parameter_set_id等於0或僅一個層被包括在所引用VPS的任何OLS中時,sps_ptl_dpb_hrd_params_present_flag的值應等於1。
以下是上述示例語法和語義的純淨版本。
<純淨版本>
video_parameter_set_rbsp( ) { 描述符
vps_video_parameter_set_id u(4)
vps_max_layers_minus1 u(6)
vps_max_sublayers_minus1 u(3)
     if( vps_max_layers_minus1 > 0  &&  vps_max_sublayers_minus1 > 0 )  
vps_all_layers_same_num_sublayers_flag u(1)
     if( vps_max_layers_minus1 > 0 )  
vps_all_independent_layers_flag u(1)
     for( i = 0; i  <=  vps_max_layers_minus1; i++ ) {  
          vps_layer_id [ i ] u(6)
           if( i > 0  &&  !vps_all_independent_layers_flag ) {  
               vps_independent_layer_flag [ i ] u(1)
                if( !vps_independent_layer_flag[ i ] ) {  
                     for( j = 0; j < i; j++ )  
vps_direct_ref_layer_flag [ i ][ j ] u(1)
               max_tid_ref_present_flag [ i ] u(1)
                     if( max_tid_ref_present_flag[ i ] )  
max_tid_il_ref_pics_plus1 [ i ] u(3)
                }  
           }  
     }  
     if( vps_max_layers_minus1 > 0 ) {  
           if( vps_all_independent_layers_flag )  
               each_layer_is_an_ols_flag u(1)
           if( !each_layer_is_an_ols_flag ) {  
                if( !vps_all_independent_layers_flag )  
                    ols_mode_idc u(2)
                if( ols_mode_idc  = =  2 ) {  
                    num_output_layer_sets_minus1 u(8)
                     for( i = 1; i  <=  num_output_layer_sets_minus1; i ++)  
                           for( j = 0; j  <=  vps_max_layers_minus1; j++ )  
                               ols_output_layer_flag [ i ][ j ] u(1)
                }  
           }  
     }  
     if( !each_layer_is_an_ols_flag )  
vps_ptl_dpb_hrd_params_present_flag u(1)
     if( vps_ptl_dpb_hrd_params_present_flag ) {  
vps_num_ptls_minus1 u(8)
           for( i = 0; i  <=  vps_num_ptls_minus1; i++ ) {  
                if( i > 0 )  
                    pt_present_flag [ i ] u(1)
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
                    ptl_max_temporal_id [ i ] u(3)
           }  
           while( !byte_aligned( ) )  
               vps_ptl_alignment_zero_bit   /* equal to 0 */ f(1)
           for( i = 0; i  <=  vps_num_ptls_minus1; i++ )  
                profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )  
           for( i = 0; i < TotalNumOlss; i++ )  
                if( vps_num_ptls_minus1 > 0 )  
                    ols_ptl_idx [ i ] u(8)
vps_num_dpb_params_minus1 ue(v)
           if(vps_max_sublayers_minus1 > 0 )  
vps_sublayer_dpb_params_present_flag u(1)
           for( i = 0; i <= vps_num_dpb_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
                    dpb_max_temporal_id [ i ] u(3)
                dpb_parameters( dpb_max_temporal_id[ i ], vps_sublayer_dpb_params_present_flag )  
           }  
           for( i = 0; i < TotalNumOlss; i++ ) {  
                if( NumLayersInOls[ i ] > 1 ) {  
                    ols_dpb_pic_width [ i ] ue(v)
                    ols_dpb_pic_height [ i ] ue(v)
                     if( vps_num_dpb_params_minus1 > 0 )  
                          ols_dpb_params_idx [ i ] ue(v)
                }  
           }  
           general_hrd_parameters( )  
           if( vps_max_sublayers_minus1 > 0 )  
               vps_sublayer_cpb_params_present_flag u(1)
          num_ols_hrd_params_minus1 ue(v)
           for( i = 0; i  <=  num_ols_hrd_params_minus1; i++ ) {  
                if( vps_max_sublayers_minus1 > 0  &&  !vps_all_layers_same_num_sublayers_flag )  
hrd_max_tid [ i ] u(3)
                firstSubLayer = vps_sublayer_cpb_params_present_flag ? 0 : hrd_max_tid[ i ]  
                ols_hrd_parameters( firstSubLayer, hrd_max_tid[ i ] )  
           }  
           if( num_ols_hrd_params_minus1 + 1  !=  TotalNumOlss  &&                      num_ols_hrd_params_minus1 > 0 )  
                for( i = 1; i < TotalNumOlss; i++ )  
                     if( NumLayersInOls[ i ] > 1 )  
ols_hrd_idx [ i ] ue(v)
     }  
    vps_extension_flag u(1)
     if( vps_extension_flag )  
           while( more_rbsp_data( ) )  
               vps_extension_data_flag u(1)
     rbsp_trailing_bits( )  
}  
vps_num_dpb_params_minus1 指定VPS中的dpb_parameters( )語法結構的數目減1。vps_num_dpb_params的值將處於0到15(含15)的範圍中。
ols_dpb_params_idx[i]指定當NumLayersInOls[i]大於1時,針對VPS中的dpb_parameters( )語法結構的清單,應用於第i個OLS的dpb_parameters( )語法結構的索引。當存在時,ols_dpb_params_idx[i]的值將處於0到vps_num_dpb_params_minus1(含vps_num_dpb_params_minus1)的範圍中。當ols_dpb_params_idx[i]不存在時,ols_dpb_params_idx[i]的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的dpb_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
vps_ptl_dpb_hrd_params_present_flag等於1指定語法結構profile_tier_level( ),dpb_parameters( ),general_hrd_parameters( )和其他HRD參數存在於VPS RBSP語法結構中。vps_ptl_dpb_hrd_params_present_flag 等於0指定該等語法結構不存在於VPS RBSP語法結構中。當不存在時,vps_ptl_dpb_hrd_params_present_flag的值被推斷為等於0。
當NumLayersInOls[i]等於1時,應用於第i個OLS的general_hrd_parameters( )和dpb_parameters( )語法結構存在於由第i個OLS中的層引用的SPS中。
若多於一個層被包括在VPS中的任何OLS中,則vps_ptl_dpb_hrd_params_present_flag 應等於1。
在SPS語義中,對vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]的推斷被消除,因為其是不足夠的,因為在多於一個層位於OLS中的情況下,dpb_parameters()和ols_hrd_parameters()是從VPS匯出的,並將在那裡被訊號傳遞通知。
sps_ptl_dpb_hrd_params_present_flag等於1指定profile_tier_level( )語法結構和dpb_parameters( )語法結構存在於SPS中,而且 general_hrd_parameters( )語法結構和ols_hrd_parameters( )語法結構亦可以存在於SPS中。sps_ptl_dpb_hrd_params_present_flag等於0指定該四個語法結構中沒有一個存在於SPS中。當sps_video_parameter_set_id等於0或僅一個層被包括在所引用VPS的任何OLS中時,sps_ptl_dpb_hrd_params_present_flag的值應等於1。
</純淨版本>
在上述實例中,對於所有情況,包括全部層是獨立的情況,對視訊編解碼器來說可能需要在VPS中訊號傳遞通知DBP、HRD結構,以及任選地PTL語法結構的存在或不存在。然而,存在獨立層被提取到單一位元串流中的可能性,其中VPS存在可以是任選的。
根據本案的一或多個技術,視訊編解碼器可以在SPS或針對獨立層的任何其他參數集中訊號傳遞通知DPB、HRD或PTL,即使在多於一個層被包括在OLS中的情況下。當DPB、HRD或PTL參數被存取時。在多於一個層被包括在OLS中的情況下,視訊編解碼器可以確定OLS的層是否是獨立的,且若層是獨立的,則視訊編解碼器可以從SPS或由該層引用的任何其他參數集存取DPB、HRD或PTL,而不是從VPS存取DPB、HRD或PTL。在某些實例中,視訊編解碼器可以針對從屬層從VPS存取彼等參數(例如,DPB、HRD或PTL)。類似的方法可以被用於任何其他參數。以此方式,視訊編解碼器可以啟用VPS任選功能性。
本案通常可以涉及「訊號傳遞通知(signaling)」某些資訊,諸如語法元素。術語「訊號傳遞通知」通常可以涉及針對用於對經編碼視訊資料進行解碼的語法元素的值及/或其他資料的通訊。亦即,視訊編碼器200可以在位元串流中訊號傳遞通知針對語法元素的值。大體而言,訊號傳遞通知涉及在位元串流中產生值。如前述,源設備102可以基本上即時地或者非即時地將位元串流傳送到目標設備116,諸如可在將語法元素儲存到儲存設備112以供目標設備116稍後取得時發生。
圖2A和圖2B是圖示了示例四叉樹二叉樹(QTBT)結構130,以及對應編解碼樹單元(CTU)132的概念圖。實線表示四叉樹劃分,虛線指示二叉樹劃分。在二叉樹的每個劃分(亦即,非葉)節點中,一個旗標被訊號傳遞通知以指示使用哪種劃分類型(亦即,水平或豎直),其中在此實例中,0指示水平劃分,而1指示豎直劃分。對於四叉樹劃分,不需要指示劃分類型,因為四叉樹節點將塊水平和豎直地劃分成4個尺寸相等的子塊。相應地,視訊編碼器200可以編碼而視訊解碼器300可以解碼針對QTBT結構130的區域樹級別(亦即,實線)的語法元素(諸如劃分資訊)以及針對QTBT結構130的預測樹級別(亦即,虛線)的語法元素(諸如劃分資訊)。視訊編碼器200可以編碼而視訊解碼器300可以解碼針對由QTBT結構130的終端葉節點表示的CU的諸如預測和變換資料之類的視訊資料。
大體而言,圖2B的CTU 132可以與定義同QTBT結構130中第一和第二級別的節點相對應的塊的尺寸的參數相關聯。該等參數可以包括CTU尺寸(表示取樣中CTU 132的尺寸)、最小四叉樹尺寸(MinQTSize,表示最小允許四叉樹葉節點尺寸)、最大二叉樹尺寸(MaxBTSize,表示最大允許二叉樹根節點尺寸)、最大二叉樹深度(MaxBTDepth,表示最大允許二叉樹深度)、以及最小二叉樹尺寸(MinBTSize,表示最小允許二叉樹葉節點尺寸)。
對應於CTU的QTBT結構的根節點在QTBT結構的第一級別可以具有四個子節點,該等子節點中的每一個可以根據四叉樹分割來進行分割。亦即,第一級別的節點是葉節點(沒有子節點)或者具有四個子節點。QTBT結構130的實例將此類節點表示為包括父節點和具有用於分支的實線的子節點。若第一級別的節點不大於最大允許二叉樹根節點尺寸(MaxBTSize),則該等節點可以被相應的二叉樹進一步分割。一個節點的二叉樹劃分可以被反覆運算,直到劃分所得的節點達到最小允許二叉樹葉節點尺寸(MinBTSize)或最大允許二叉樹深度(MaxBTDepth)。QTBT結構130的實例將此類節點表示為具有用於分支的虛線。二叉樹葉節點被稱為編解碼單元(CU),其用於預測(例如,圖片內或圖片間預測)和變換,而無需任何進一步分割。如前述,CU亦可以被稱為「視訊塊」或「塊」。
在QTBT分割結構的一個實例中,CTU尺寸被設置為128×128(亮度取樣和兩個對應的64×64色度取樣),MinQTSize被設置為16×16,MaxBTSize 被設置為64×64,MinBTSize(對於寬度和高度兩者)被設置為4,而MaxBTDepth被設置為4。四叉樹分割首先被應用於CTU以產生四叉樹葉節點。四叉樹葉節點可具有從16×16(亦即,MinQTSize)到128×128(亦即,CTU尺寸)的尺寸。若葉四叉樹節點是128×128,則葉四叉樹節點將不會被二叉樹進一步劃分,因為尺寸超過MaxBTSize(亦即,在本實例中,為64×64)。否則,葉四叉樹節點將進一步被二叉樹分割。因此,四叉樹葉節點亦是針對二叉樹的根節點,並且具有為0的二叉樹深度。當二叉樹深度達到MaxBTDepth(在此實例中為4)時,不允許進一步劃分。當二叉樹節點具有等於MinBTSize(在本實例中為4)的寬度時,此意味著不允許進一步的水平劃分。類似地,具有等於MinBTSize的高度的二叉樹節點意味著對於該二叉樹節點不允許進一步的豎直劃分。如前述,二叉樹的葉節點被稱為CU,並且根據預測和變換被進一步處理而無需進一步分割。
圖3是圖示了可以執行本案的技術的實例視訊編碼器200的方塊圖。圖3是出於解釋的目的而被提供的,並且不應被視為對本案中廣泛例示和描述的技術的限制。出於解釋的目的,本案描述根據以下技術的視訊編碼器200:JEM、VVC(ITU-T H.266,開發中),和HEVC(ITU-T H.265)。然而,本案的技術可以由被配置為其他視訊編解碼標準的視訊編碼設備執行。
在圖3的實例中,視訊編碼器200包括視訊資料記憶體230、模式選擇單元202、殘差產生單元204、變換處理單元206、量化單元208、逆量化單元210、逆變換處理單元212、重構單元214、濾波器單元216、經解碼圖片緩衝器(DPB)218和熵編碼單元220。視訊資料記憶體230、模式選擇單元202、殘差產生單元204、變換處理單元206、量化單元208、逆量化單元210、逆變換處理單元212、重構單元214、濾波器單元216、DPB 218和熵編碼單元220中的任一個或全部可以在一或多個處理器或處理電路中被實施。例如,視訊編碼器200的單元可以被實施為一或多個電路或邏輯元件,作為硬體電路的部分,或者作為FPGA的處理器、ASIC的部分。此外,視訊編碼器200可以包括額外的或替代的處理器或處理電路以執行該等和其他功能。
視訊資料記憶體230可以儲存將由視訊編碼器200的部件編碼的視訊資料。視訊編碼器200可以從例如視訊源104(圖1)接收儲存在視訊資料記憶體230中的視訊資料。DPB 218可以充當儲存用於由視訊編碼器200進行的對後續視訊資料的預測的參考視訊資料的參考圖片記憶體。視訊資料記憶體230和DPB 218可以由各種記憶體設備中的任何一種形成,諸如動態隨機存取記憶體(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、電阻RAM(RRAM),或其他類型的記憶體設備。視訊資料記憶體230和DPB 218可以由相同記憶體設備或分開的記憶體設備提供。在各種實例中,視訊資料記憶體230可以與視訊編碼器200的其他部件一起位於片上,如所例示的一般,或者相對於彼等部件而位於片外。
在本案中,對視訊資料記憶體230的引用不應被解釋為限於視訊編碼器200內部的記憶體,除非如此特定描述,或者視訊編碼器200外部的記憶體,除非如此特定描述。反之,對視訊資料記憶體230的引用應被理解為儲存視訊編碼器200接收以用於編碼的視訊資料(例如,用於將被編碼的當前塊的視訊資料)的參考記憶體。圖1的記憶體106亦可以提供對來自視訊編碼器200的各種單元的輸出的臨時儲存。
圖3的各種單元被圖示用於説明理解由視訊編碼器200執行的操作。該等單元可以被實施為固定功能電路、可程式設計電路或其組合。固定功能電路指的是提供特定功能並且被預設了能夠執行的操作的電路。可程式設計電路指的是可以被程式設計以執行各種任務,並且在可以被執行的操作中提供靈活功能性的電路。例如,可程式設計電路可以執行使得可程式設計電路以由軟體或韌體的指令定義的方式操作的軟體或韌體。固定功能電路可以執行軟體指令(例如,以接收參數或輸出參數),但是固定功能電路執行的操作的類型通常是不可變的。在某些實例中,單元中的一或多個可以是不同的電路塊(固定功能的或可程式設計的),而在某些實例中,單元中的一或多個可以是積體電路。
視訊編碼器200可以包括由可程式設計電路形成的算數邏輯單位(ALU)、初等函數單元(EFU)、數位電路、類比電路及/或可程式設計核。在使用由可程式設計電路執行的軟體來執行視訊編碼器200的操作的實例中,記憶體106(圖1)可以儲存視訊編碼器200接收並執行的軟體的指令(例如,目標代碼),或者視訊編碼器200內的另一記憶體(未圖示)可以儲存此類指令。
視訊資料記憶體230被配置為儲存所接收的視訊資料。視訊編碼器200可以從視訊資料記憶體230取得視訊資料的圖片並且將視訊資料提供到殘差產生單元204和模式選擇單元202。視訊資料記憶體230中的視訊資料可以是將被編碼的原始視訊資料。
模式選擇單元202包括運動估計單元222、運動補償單元224和訊框內預測單元226。模式選擇單元202可以包括用於根據其他預測模式執行視訊預測的額外功能單元。作為實例,模式選擇單元202可以包括調色板單元、塊內複製單元(其可以是運動估計單元222及/或運動補償單元224的部分)、仿射單元、線性模型(LM)單元等等。
模式選擇單元202通常協調多個編碼編次(passes)以測試編碼參數的組合以及針對此類組合的所得速率-失真值。編碼參數可以包括CTU到CU的分割、用於CU的預測模式、用於CU的殘差資料的變換類型、用於CU的殘差資料的量化參數等。模式選擇單元202可最終選擇具有比其他經測試的組合更好的速率-失真值的編碼參數的組合。
視訊編碼器200可以將從視訊資料記憶體230取得的圖片分割成一系列CTU,並將一或多個CTU封裝在條帶內。模式選擇單元202可以根據諸如上述HEVC的QTBT結構或四叉樹結構之類的樹結構來分割圖片的CTU。如前述,視訊編碼器200可以經由根據樹結構分割CTU來形成一或多個CU。此類CU通常亦可以被稱為「視訊塊」或「塊」。
大體而言,模式選擇單元202亦控制其部件(例如,運動估計單元222、運動補償單元224和訊框內預測單元226)以產生針對當前塊(例如,當前CU,或HEVC中的PU和TU的重疊部分)的預測塊。對於當前塊的訊框間預測,運動估計單元222可以執行運動搜尋以標識一或多個參考圖片(例如,被儲存在DPB 218中的一或多個先前經編解碼圖片)中的一或多個緊密匹配的參考塊。特別地,運動估計單元222可以例如根據絕對差之和(SAD)、平方差之和(SSD)、平均絕對差(MAD)、均方差(MSD)等來計算表示潛在參考塊與當前塊有多類似的值。運動估計單元222通常可以使用當前塊與所考慮的參考塊之間的逐取樣差來執行該等計算。運動估計單元222可以標識具有從該等計算得到的最低值的參考塊,該最低值指示最緊密匹配當前塊的參考塊。
運動估計單元222可以形成一或多個運動向量(MV),該一或多個MV定義參考圖片中的參考塊相對於當前圖片中的當前塊的位置。運動估計單元222隨後可以將運動向量提供到運動補償單元224。例如,對於單向訊框間預測,運動估計單元222可以提供單一運動向量,而對於雙向訊框間預測,運動估計單元222可以提供兩個運動向量。運動補償單元224隨後可以使用運動向量來產生預測塊。例如,運動補償單元224可以使用運動向量來取得參考塊的資料。作為另一實例,若運動向量具有分數取樣精度,則運動補償單元224可根據一或多個內插濾波器來對針對預測塊的值進行內插。此外,對於雙向訊框間預測,運動補償單元224可以取得針對由相應運動向量標識的兩個參考塊的資料,並例如經由逐取樣的平均或加權平均來組合所取得資料。
作為另一實例,對於訊框內預測或訊框內預測編解碼,訊框內預測單元226可以從與當前塊相鄰的取樣產生預測塊。例如,對於方向模式,訊框內預測單元226通常可以數學地組合相鄰取樣的值,並且在跨當前塊的所定義方向上填充該等計算值,以產生預測塊。作為另一實例,對於DC模式,訊框內預測單元226可以計算針對當前塊的相鄰取樣的平均,並且產生預測塊以至於對於該預測塊的每個取樣,皆包括此所得的平均。
模式選擇單元202將預測塊提供到殘差產生單元204。殘差產生單元204從視訊資料記憶體230接收當前塊的原始未編碼版本,並從模式選擇單元202接收預測塊。殘差產生單元204計算當前塊與預測塊之間的逐取樣差。所得的逐取樣差定義針對當前塊的殘差塊。在某些實例中,殘差產生單元204亦可以確定殘差塊中的取樣值之間的差,以使用殘差差分脈衝碼調制(RDPCM)來產生殘差塊。在某些實例中,可以使用執行二進位減法的一或多個減法器電路來形成殘差產生單元204。
在模式選擇單元202將CU分割成PU的實例中,每個PU可以與亮度預測單元和對應色度預測單元相關聯。視訊編碼器200和視訊解碼器300可以支援具有各種尺寸的PU。如前述,CU的尺寸可以指CU的亮度編解碼塊的尺寸,而PU的尺寸可以指PU的亮度預測單元的尺寸。假定特定CU的尺寸為2Nx2N,視訊編碼器200可以支援尺寸為2Nx2N或NxN的PU來用於訊框內預測,以及尺寸為2Nx2N、2NxN、Nx2N、NxN或類似尺寸的對稱PU來用於訊框間預測。視訊編碼器200和視訊解碼器300亦可以支援針對尺寸為2NxnU、2NxnD、nLx2N和nRx2N的PU的非對稱分割來用於訊框間預測。
在模式選擇單元202不進一步將CU分割成PU的實例中,每個CU可與亮度編解碼塊和對應色度編解碼塊相關聯。如前述,CU的尺寸可以指CU的亮度編解碼塊的尺寸。視訊編碼器200和視訊解碼器300可以支援尺寸為2Nx2N、2NxN或Nx2N的CU。
對於諸如塊內複製模式編解碼、仿射模式編解碼和線性模型(LM)模式編解碼之類的其他視訊編解碼技術,作為若干實例,模式選擇單元202經由與解碼技術相關聯的相應單元產生針對正被編碼的當前塊的預測塊。在某些實例中,諸如調色板模式編解碼,模式選擇單元202可以不產生預測塊,而是產生指示用於基於所選調色板來重構塊的方式的語法元素。在此類模式中,模式選擇單元202可以將該等語法元素提供給熵編碼單元220以進行編碼。
如前述,殘差產生單元204接收針對當前塊和對應預測塊的視訊資料。殘差產生單元204隨後產生針對當前塊的殘差塊。為了產生殘差塊,殘差產生單元204計算預測塊與當前塊之間的逐取樣差。
變換處理單元206將一或多個變換應用於殘差塊以產生變換係數的塊(本文中被稱為「變換係數塊」)。變換處理單元206可以將各種變換應用於殘差塊以形成變換係數塊。例如,變換處理單元206可以將離散餘弦變換(DCT)、方向變換、卡南-洛伊夫變換(KLT)或概念上類似的變換應用於殘差塊。在某些實例中,變換處理單元206可以對殘差塊執行多個變換,例如,初級變換和次級變換,諸如旋轉變換。在某些實例中,變換處理單元206不將變換應用於殘差塊。
量化單元208可以量化變換係數塊中的變換係數,以產生經量化變換係數塊。量化單元208可以根據與當前塊相關聯的量化參數(QP)值來量化變換係數塊的變換係數。視訊編碼器200(例如,經由模式選擇單元202)可以經由調整與CU相關聯的QP值來調整應用於與當前塊相關聯的變換係數塊的量化程度。量化可能引入資訊損失,並且因此,經量化變換係數可能具有比由變換處理單元206產生的原始變換係數更低的精度。
逆量化單元210和逆變換處理單元212可以分別將逆量化和逆變換應用於經量化變換係數塊,以從變換係數塊重構殘差塊。重構單元214可以基於經重構的殘差塊以及由模式選擇單元202產生的預測塊來產生對應於當前塊的重構塊(儘管潛在地具有某種程度的失真)。例如,重構單元214可以將經重構的殘差塊的取樣與來自由模式選擇單元202產生的預測塊的對應取樣相加,以產生重構塊。
濾波器單元216可以對重構塊執行一或多個濾波器操作。例如,濾波器單元216可以執行去塊(deblocking)操作以減少沿CU邊緣的塊效應偽影(blockiness artifact)。在某些實例中,可以跳過濾波器216的操作。
視訊編碼器200將重構塊儲存在DPB 218中。例如,在不需要濾波器單元216的操作的實例中,重構單元214可以將重構塊儲存至DPB 218。在其中需要濾波器單元216的操作的實例中,濾波器單元216可以將經濾波的重構塊儲存至DPB 218。運動估計單元222和運動補償單元224可以從DPB 218取得由經重構(並且可能經濾波)的塊形成的參考圖片,以對後續經編碼圖片的塊進行訊框間預測。此外,訊框內預測單元226可以使用當前圖片的在DPB 218中的重構塊來對當前圖片中的其他塊進行訊框內預測。
大體而言,熵編碼單元220可以對從視訊編碼器200的其他功能部件接收的語法元素進行熵編碼。例如,熵編碼單元220可以對來自量化單元208的經量化變換係數塊進行熵編碼。作為另一實例,熵編碼單元220可以對來自模式選擇單元202的預測語法元素(例如,用於訊框間預測的運動資訊或用於訊框內預測的訊框內模式資訊)進行熵編碼。熵編碼單元220可以對作為視訊資料的另一實例的語法元素執行一或多個熵編碼操作,以產生經熵編碼的資料。例如,熵編碼單元220可以對資料執行上下文自我調整可變長度編解碼(CAVLC)操作、CABAC操作、可變到可變(V2V)長度編解碼操作、基於語法的上下文自我調整二進位算術編解碼(SBAC)操作、概率區間分割熵(PIPE)編解碼操作、指數-哥倫佈解碼操作,或另一類型的熵編碼操作。在某些實例中,熵編碼單元220可以在語法元素未被熵編碼的旁路模式中操作。
視訊編碼器200可以輸出包括所需的用於重構條帶或圖片的塊的經熵編碼語法元素的位元串流。特別地,熵編碼單元220可以輸出位元串流。
以上描述的操作是相對於塊而描述的。此類描述應當被理解為是用於亮度編解碼塊及/或色度編解碼塊的操作。如前述,在某些實例中,亮度編解碼塊和色度編解碼塊是CU的亮度和色度分量。在一些實例中,亮度編解碼塊和色度編解碼塊是PU的亮度和色度分量。
在某些實例中,相對於亮度編解碼塊執行的操作不需要對色度編解碼塊重複。作為一個實例,用於標識針對亮度編解碼塊的運動向量(MV)和參考圖片的操作不需要被重多工於標識針對色度解碼塊的MV和參考圖片。確切地說,針對亮度編解碼塊的MV可以被縮放以確定針對色度塊的MV,而參考圖片可以相同。作為另一實例,對於亮度編解碼塊和色度編解碼塊,訊框內預測處理可以是相同的。
視訊編碼器200表示被配置為對視訊資料進行編碼的設備的實例,包括被配置為儲存視訊資料的記憶體,以及在電路中實施並被配置為進行以下操作的一或多個處理單元:對指定視訊資料的當前位元串流的視訊參數集(VPS)中的經解碼圖片緩衝器(DPB)參數語法結構的數目減1的語法元素進行編解碼;回應於確定該語法元素不存在於位元串流中,推斷VPS中的DPB語法結構的數目為零;及重構由當前位元串流表示的視訊資料。視訊編碼器200可以基於由VPS中的DPB語法結構描述的(一或多個)結構來配置DPB 218的結構。
圖4是圖示了可以執行本案的技術的實例視訊解碼器300的方塊圖。圖4是出於解釋的目的而被提供的,且並非對本案中廣泛例示和描述的技術的限制。出於解釋的目的,本案描述根據以下技術的視訊解碼器300:JEM、VVC(ITU-T H.266,開發中),和HEVC(ITU-T H.265)。然而,本案的技術可由被配置為其他視訊編解碼標準的視訊編解碼設備執行。
在圖4的實例中,視訊解碼器300包括經編解碼圖片緩衝器(CPB)記憶體320、熵解碼單元302、預測處理單元304、逆量化單元306、逆變換處理單元308、重構單元310、濾波器單元312和經解碼圖片緩衝器(DPB)314。CPB記憶體320、熵解碼單元302、預測處理單元304、逆量化單元306、逆變換處理單元308、重構單元310、濾波器單元312和DPB 314中的任一個或全部可以在一或多個處理器或處理電路中被實施。例如,視訊解碼器300的單元可以被實施為一或多個電路或邏輯元件,作為硬體電路的部分或者作為FPGA的處理器、ASIC的部分。此外,視訊解碼器300可以包括額外或替代的處理器或處理電路以執行該等和其他功能。
預測處理單元304包括運動補償單元316和訊框內預測單元318。預測處理單元304可以包括用於根據其他預測模式執行預測的額外單元。作為實例,預測處理單元304可以包括調色板單元、塊內複製單元(其可以形成運動補償單元316的部分)、仿射單元、線性模型(LM)單元等等。在其他實例中,視訊解碼器300可以包括更多、更少或不同的功能部件。
CPB記憶體320可以儲存將由視訊解碼器300的部件解碼的視訊資料,諸如經編碼的視訊位元串流。儲存在CPB記憶體320中的視訊資料可以例如從電腦可讀取媒體110(圖1)獲得。CPB記憶體320可以包括儲存來自經編碼的視訊位元串流的經編碼視訊資料(例如,語法元素)的CPB。同樣,CPB記憶體320可以儲存除經編解碼圖片的語法元素以外的視訊資料,諸如表示來自視訊解碼器300的各種單元的輸出的臨時資料。DPB 314通常儲存經解碼圖片,視訊解碼器300可以將該經解碼圖片輸出及/或在解碼經編碼的視訊位元串流的後續資料或圖片時用作參考視訊資料。CPB記憶體320和DPB 314可以由各種記憶體設備中的任何一種形成,諸如DRAM,包括SDRAM、MRAM、RRAM,或其他類型的記憶體設備。CPB記憶體320和DPB 314可以由相同的記憶體設備或分開的記憶體設備提供。在各種實例中,CPB記憶體320可以與視訊解碼器300的其他部件一起位於片上,或者相對於彼等部件而位於片外。
另外地或替代地,在某些實例中,視訊解碼器300可以從記憶體120(圖1)取得經編解碼的視訊資料。亦即,記憶體120可以儲存如上文與CPB記憶體320一起論述的資料。同樣地,當視訊解碼器300的功能性中的某些或全部以用於由視訊解碼器300的處理電路執行的軟體來實施時,記憶體120可以儲存用於由視訊解碼器300執行的指令。
圖4中圖示的各種單元被圖示用於説明理解由視訊解碼器300執行的操作。該等單元可以被實施為固定功能電路、可程式設計電路或其組合。與圖3類似,固定功能電路指的是提供特定功能並且被預設了能夠執行的操作的電路。可程式設計電路指的是可以被程式設計以執行各種任務,並且在可以被執行的操作中提供靈活功能性的電路。例如,可程式設計電路可以執行使得可程式設計電路以由軟體或韌體的指令定義的方式操作的軟體或韌體。固定功能電路可以執行軟體指令(例如,以接收參數或輸出參數),但是固定功能電路執行的操作的類型通常是不可變的。在某些實例中,單元中的一或多個可以是不同的電路塊(固定功能的或可程式設計的),而在某些實例中,單元中的一或多個可以是積體電路。
視訊解碼器300可以包括ALU、EFU、數位電路、類比電路及/或由可程式設計電路形成的可程式設計核。在視訊解碼器300的操作由在可程式設計電路上執行的軟體執行的實例中,片上或片外記憶體可以儲存視訊解碼器300接收和執行的軟體的指令(例如,目標代碼)。
熵解碼單元302可以從CPB接收經編碼的視訊資料並對視訊資料進行熵解碼以再現語法元素。預測處理單元304、逆量化單元306、逆變換處理單元308、重構單元310和濾波器單元312可以基於從位元串流提取的語法元素來產生經解碼的視訊資料。
大體而言,視訊解碼器300在逐塊的基礎上重構圖片。視訊解碼器300可單獨地對每個區塊執行重構操作(其中當前正被重構,亦即,被解碼的塊可以被稱作「當前塊」)。
熵解碼單元302可以對定義經量化變換係數塊的經量化變換係數的語法元素以及諸如量化參數(QP)及/或(一或多個)變換模式指示之類的變換資訊進行熵解碼。逆量化單元306可以使用與經量化變換係數塊相關聯的QP來確定量化程度,並且同樣地,確定供逆量化單元306應用的逆量化程度。逆量化單元306例如可以執行逐位左移操作以對經量化變換係數進行逆量化。逆量化單元306由此可以形成包括變換係數的變換係數塊。
在逆量化單元306形成變換係數塊之後,逆變換處理單元308可以將一或多個逆變換應用於變換係數塊以產生與當前塊相關聯的殘差塊。例如,逆變換處理單元308可以將逆DCT、逆整數變換、逆卡南-洛伊夫變換(KLT)、逆旋轉變換、逆方向變換或另一逆變換應用於變換係數塊。
此外,預測處理單元304根據由熵解碼單元302熵解碼的預測資訊語法元素來產生預測塊。例如,若預測資訊語法元素指示當前塊是被訊框間預測的,則運動補償單元316可以產生預測塊。在此種情況下,預測資訊語法元素可以指示DPB 314中的從其取得參考塊的參考圖片,以及相對於當前塊在當前圖片中的位置標識參考塊在參考圖片中的位置的運動向量。運動補償單元316通常可以用與相對於運動補償單元224(圖3)而描述的方式基本類似的方式來執行訊框間預測過程。
作為另一實例,若預測資訊語法元素指示當前塊是訊框內預測的,則訊框內預測單元318可以根據由預測資訊語法元素指示的訊框內預測模式來產生預測塊。再次,訊框內預測單元318通常可以用與相對於訊框內預測單元226(圖3)而描述的方式基本類似的方式來執行訊框內預測過程。訊框內預測單元318可以從DPB 314取得針對當前塊的相鄰取樣的資料。
重構單元310可以使用預測塊和殘差塊來重構當前塊。例如,重構單元310可以將殘差塊的取樣與預測塊的對應取樣相加以重構當前塊。
濾波器單元312可以對重構塊執行一或多個濾波器操作。例如,濾波器單元312可以執行去塊操作以減少沿重構塊邊緣的塊效應偽影。濾波器單元312的操作不必在所有實例中執行。
視訊解碼器300可以將重構塊儲存在DPB 314中。例如,在不執行濾波器單元312的操作的實例中,重構單元310可以將重構塊儲存至DPB 314。在執行濾波器單元312的操作的實例中,濾波器單元312可以將經濾波的重構塊儲存至DPB 314。如前述,DPB 314可以將參考資訊,諸如用於訊框內預測的當前圖片和用於後續運動補償的先前經解碼圖片的取樣提供給預測處理單元304。而且,視訊解碼器300可以從DPB 314輸出經解碼圖片(例如,經解碼視訊)以用於在諸如圖1的顯示設備118之類的顯示設備上的後續呈現。
以此方式,視訊解碼器300表示視訊解碼設備的實例,包括被配置為儲存視訊資料的記憶體,以及在電路中實施並被配置為進行以下操作的一或多個處理單元:對指定視訊資料的當前位元串流的視訊參數集(VPS)中的經解碼圖片緩衝器(DPB)參數語法結構的數目減1的語法元素進行解碼;回應於確定該語法元素不存在於位元串流中,推斷VPS中的DPB語法結構的數目為零;及重構由當前位元串流表示的視訊資料。視訊解碼器300可以基於由VPS中的DPB語法結構描述的(一或多個)結構來配置DPB 314的結構。
圖5是圖示了根據本案的一或多個技術的用於對當前塊進行編碼的實例方法的流程圖。當前塊可以包括當前CU。儘管相對於視訊編碼器200(圖1和圖3)進行描述,但應理解,其他設備可以被配置為執行與圖5的方法類似的方法。
在此實例中,視訊編碼器200最初預測當前塊(350)。例如,視訊編碼器200可以形成針對當前塊的預測塊。視訊編碼器200隨後可以計算針對當前塊的殘差塊(352)。為了計算殘差塊,視訊編碼器200可以計算針對當前塊的原始未編碼塊與預測塊之間的差。視訊編碼器200隨後可以變換殘差塊並且量化殘差塊的變換係數(354)。接下來,視訊編碼器200可以掃瞄殘差塊的經量化變換係數(356)。在掃瞄期間或在掃瞄之後,視訊編碼器200可以對變換係數進行熵編碼(358)。例如,視訊編碼器200可以使用CAVLC或CABAC對變換係數進行編碼。視訊編碼器200隨後可以輸出塊的經熵編碼的資料(360)。視訊編碼器200可以進一步選擇性地對指定視訊資料的當前位元串流的視訊參數集(VPS)中的經解碼圖片緩衝器(DPB)參數語法結構的數目減1的語法元素進行編碼。
圖6是圖示了用於對視訊資料的當前塊進行解碼的實例方法的流程圖。當前塊可以包括當前CU。儘管相對於視訊解碼器300(圖1和圖4)進行描述,但應理解,其他設備可以被配置為執行與圖6的方法類似的方法。
視訊解碼器300可以接收針對當前塊的經熵編碼的資料,諸如針對對應於當前塊的殘差塊的係數的經熵編碼預測資訊和熵編碼的資料(370)。視訊解碼器300可以對經熵編碼的資料進行熵解碼以確定針對當前塊的預測資訊並且再現殘差塊的係數(372)。視訊解碼器300可以例如使用如針對當前塊的預測資訊所指示的訊框內預測或訊框間預測模式來預測當前塊(374),以計算針對當前塊的預測塊。視訊解碼器300隨後可以對再現的係數進行逆掃瞄(376),以建立經量化變換係數的塊。視訊解碼器300隨後可以對變換係數進行逆量化和逆變換以產生殘差塊(378)。視訊解碼器300最終可以經由組合預測塊和殘差塊來對當前塊進行解碼(380)。視訊解碼器300可以進一步對指定視訊資料的當前位元串流的視訊參數集(VPS)中的經解碼圖片緩衝器(DPB)參數語法結構的數目減1的語法元素進行解碼;回應於確定該語法元素不存在於位元串流中,推斷VPS中的DPB語法結構的數目為零;及重構由當前位元串流表示的視訊資料。
圖7是圖示了根據本案的一或多個態樣的用於訊號傳遞通知DPB參數的實例方法的流程圖。儘管相對於視訊解碼器300(圖1和圖4)進行描述,但應理解,其他設備可以被配置為執行與圖7(例如,視訊編碼器200)的方法類似的方法。
如圖7中所示,視訊解碼器300可以確定經解碼圖片緩衝器(DPB)參數語法結構是否存在於當前位元串流的序列參數集(SPS)中(702)。例如,視訊解碼器300的熵解碼單元302可以對指定DPB參數語法結構是否存在於SPS中的語法元素進行解碼。作為一個實例,熵解碼單元302可以對sps_ptl_dpb_hrd_params_present_flag語法元素進行解碼。在sps_ptl_dpb_hrd_params_present_flag語法元素等於1的情況下,DPB參數語法結構可以存在於SPS中。替代地,在sps_ptl_dpb_hrd_params_present_flag語法元素等於0的情況下,SPS可以不包括DPB參數語法結構。根據本案的一或多個態樣,當SPS由作為輸出層集(OLS)的唯一層的層引用時(亦即,其中sps_video_parameter_set_id等於0),sps_ptl_dpb_hrd_params_present_flag 語法元素可以總是為1(亦即,SPS包含DPB參數語法結構)。另外地或替代地,當sps_video_parameter_set_id等於0或僅一個層被包括在所引用VPS的任何OLS中時,sps_ptl_dpb_hrd_params_present_flag的值應等於1。
在DPB參數語法結構存在於SPS中的情況下(702的「是」分支),視訊解碼器300可以從SPS解碼DPB參數語法結構(704)。例如,熵解碼單元302可以經由至少對包括提供DPB尺寸、最大圖片重排序數目和用於一或多個OLS的最大潛時的資訊的語法元素的語法結構進行解碼來對DPB參數語法結構進行解碼。
在DPB參數語法結構不存在於SPS中的情況下(702的「否」分支),視訊解碼器300可以從視訊參數集(VPS)中解碼指定每個OLS是僅包含一個層亦是被允許包含多個層的語法元素(706),並基於該語法元素確定每個OLS是否被允許包含多個層(708)。例如,熵解碼單元302可以從VPS解碼each_layer_is_an_ols_flag 語法元素。在each_layer_is_an_ols_flag語法元素等於1的情況下,視訊解碼器300可以確定每個OLS僅包含一個層。在each_layer_is_an_ols_flag語法元素等於0的情況下,視訊解碼器300可以確定每個OLS被允許包含多個層。
在每個OLS被允許包含多個層的情況下(708的「是」分支),視訊解碼器300可以從VPS解碼指定VPS中的DPB參數語法結構的數目減一的語法元素(710)。例如,熵解碼單元302可以解碼vps_num_dpb_params_minus1語法元素。
視訊解碼器300可以基於(一或多個)DPB參數語法結構重構由當前位元串流表示的視訊資料(712)。例如,視訊解碼器300可以配置DPB 314的一或多個態樣(例如,尺寸、最大圖片重排序數目、最大潛時)。如前述,DPB 314可以儲存圖片,視訊解碼器300可以輸出該等圖片及/或在對經編碼的視訊位元串流的後續資料或圖片進行解碼時將該等圖片用作參考視訊資料。
在每個OLS不被允許包含多個層的情況下(亦即,每個OLS僅包含一個層)(708的「否」分支),視訊解碼器300可以推斷VPS包含零個DPB語法結構(714)。例如,在 each_layer_is_an_ols_flag 語法元素等於1的情況下,經編解碼的位元串流可以不包括vps_num_dpb_params_minus1語法元素。經由將VPS中的DPB參數語法結構的數目訊號傳遞通知為數目減一,本案的技術使視訊編解碼器能夠避免必須明確地訊號傳遞通知VPS包括零個DPB參數語法結構。如此,本案的技術能夠減少用於訊號傳遞通知包括在VPS中的DPB參數語法結構的數目的位元數量,此改善了編解碼效率。
在某些實例中,視訊解碼器300可以基於指定每個OLS是僅包含一個層亦是被允許包含多個層的語法元素的值來制約對一或多個其他語法元素的解碼。例如,回應於指示每個OLS被允許包含多個層的語法元素,視訊解碼器300可以從VPS解碼指定VPS是否包括假定參考解碼器(HRD)參數的語法結構的語法元素。作為一個實例,熵解碼單元302可以從VPS解碼hrd_params_present_flag。
以下編號的條款可以說明本案的一或多個態樣:
條款1.一種對視訊資料進行編解碼的方法,該方法包括:對指定視訊資料的當前位元串流的視訊參數集(VPS)中的經解碼圖片緩衝器(DPB)參數語法結構的數目減1的語法元素進行編解碼;回應於確定該語法元素不存在於位元串流中,推斷VPS中的DPB語法結構的數目為零;及重構由當前位元串流表示的視訊資料。
條款2.如條款1之方法,其中對語法元素進行編解碼包括基於指定包含在每個輸出層集(OLS)中的層數目的語法元素的值來選擇性地對語法元素進行編解碼。
條款3.如條款2之方法,其中指定VPS中的DPB參數語法結構的數目減1的語法元素包括vps_num_dpb_params_minus1語法元素。
條款4.如條款3之方法,其中指定包含在每個OLS中的層數目的語法元素包括each_layer_is_an_ols_flag 語法元素。
條款5.一種對視訊資料進行編解碼的方法,該方法包括:在視訊資料的當前位元串流的視訊參數集(VPS)中編解碼共同指示經解碼圖片緩衝器(DPB)參數語法結構和假定參考解碼器(HRD)參數語法結構是否存在於VPS中的語法元素;回應於指示DPB參數語法結構和HRD參數語法結構存在於VPS中的語法元素,從VPS解碼DPB參數語法結構和HRD參數語法結構;及基於DPB參數語法結構和HRD參數語法結構,重構由當前位元串流表示的視訊資料。
條款6.如條款5之方法,其中對語法元素進行編解碼包括基於指定包含在每個輸出層集(OLS)中的層數目的語法元素的值來選擇性地對語法元素進行編解碼。
條款7.如條款6之方法,其中共同指示DPB參數語法結構和HRD參數語法結構是否存在於VPS中的語法元素包括vps_dpb_hrd_params_present_flag語法元素。
條款8.如條款7之方法,其中指定包含在每個OLS中的層數目的語法元素包括each_layer_is_an_ols_flag語法元素。
條款9.一種對視訊資料進行編解碼的方法,該方法包括:在視訊資料的當前位元串流的視訊參數集(VPS)中編解碼共同指示經解碼圖片緩衝器(DPB)參數語法結構、假定參考解碼器(HRD)參數語法結構和設定檔層次級別(PTL)參數語法結構是否存在於VPS中的語法元素;回應於指示DPB、HRD和PTL參數語法結構存在於VPS中的語法元素,從VPS解碼DPB、HRD和PTL參數語法結構;及基於DPB、HRD和PTL參數語法結構,重構由當前位元串流表示的視訊資料。
條款10.如條款9之方法,其中對語法元素進行編解碼包括基於指定包含在每個輸出層集(OLS)中的層數目的語法元素的值來選擇性地對語法元素進行編解碼。
條款11.如條款10之方法,其中共同指示DPB、HRD和PTL參數語法結構是否存在於VPS中的語法元素包括vps_ptl_dpb_hrd_params_present_flag語法元素。
條款12.如條款11之方法,其中指定包含在每個OLS中的層數目的語法元素包括each_layer_is_an_ols_flag語法元素。
條款13.如條款1-12中的任一項所述的方法,其中編解碼包括解碼。
條款14.如條款1-13中的任一項所述的方法,其中編解碼包括編碼。
條款15.一種用於對視訊資料進行編解碼的設備,該設備包括用於執行條款1-14中任一項的方法的一或多個構件。
條款16.如條款15之設備,其中一或多個構件包括在電路中實施的一或多個處理器。
條款17.如條款15和16中的任一項所述的設備,亦包括用於儲存視訊資料的記憶體。
條款18.如條款15-17中的任一項所述的設備,亦包括被配置為顯示經解碼視訊資料的顯示器。
條款19.如條款15-18中的任一項所述的設備,其中該設備包括相機、電腦、行動設備、廣播接收器設備或機上盒中的一或多者。
條款20.如條款15-19中的任一項所述的設備,其中該設備包括視訊解碼器。
條款21.如條款15-19中的任一項所述的設備,其中該設備包括視訊編碼器。
條款22.一種其上儲存有指令的電腦可讀取儲存媒體,該指令在被執行時,使得一或多個處理器執行條款1-14中的任一項所述的方法。
條款23.一種對視訊資料進行編解碼的方法,該方法包括:確定視訊資料的當前位元串流的視訊參數集(VPS)中的經解碼圖片緩衝器(DPB)參數語法結構的數目;及基於所確定的VPS中的DPB參數語法結構的數目對塊進行編解碼。
條款24.如條款23之方法,其中確定VPS中的DPB參數語法結構的數目包括回應於確定指定VPS中的DPB參數語法結構的數目的語法元素不存在於位元串流中,推斷VPS中的DPB參數語法結構的數目為零。
條款25.如條款23之方法,亦包括基於VPS中的DPB參數語法結構的數目為零的確定,避免訊號傳遞通知指定VPS中的DPB參數語法結構的數目的語法元素不存在於位元串流中。
條款26.如條款24和25中的任一項所述的方法,其中指定VPS中的DPB參數語法結構的數目的語法元素包括視訊資料的當前位元串流的VPS中的DPB參數語法結構的數目減1。
條款27.如條款24之方法,其中VPS中的DPB參數語法結構的數目包括DPB參數語法結構的第一數目,並且其中語法元素包括語法元素的第一實例,方法亦包括基於指定VPS中的DPB參數語法結構的第二數目的語法元素的第二實例來確定VPS中的DPB參數語法結構的第二數目。
條款28.如條款25之方法,其中VPS中的DPB參數語法結構的數目包括DPB參數語法結構的第一數目,並且其中語法元素包括語法元素的第一實例,方法亦包括基於指定VPS中的DPB參數語法結構的第二數目的語法元素的第二實例來訊號傳遞通知VPS中的DPB參數語法結構的第二數目,其中DPB參數語法結構的第二數目大於零。
條款29.一種對視訊資料進行解碼的方法,該方法包括:在視訊資料的當前位元串流的序列參數集(SPS)由作為輸出層集(OLS)的唯一層的層引用時從SPS解碼經解碼圖片緩衝器(DPB)參數語法結構;及基於DPB參數語法結構,重構由當前位元串流表示的視訊資料。
條款30.如條款29之方法,其中DPB參數語法結構包括提供DPB尺寸、最大圖片重排序數目和用於一或多個OLS的最大潛時的資訊的語法元素。
條款31.如條款29或30之方法,亦包括:從視訊資料的當前位元串流的視訊參數集(VPS)解碼指定VPS中的DPB參數語法結構的數目減一的語法元素;及回應於確定該語法元素不存在於位元串流中,推斷VPS中的DPB語法結構的數目為零。
條款32.如條款31之方法,亦包括:當僅一個層被包括在VPS的任何OLS中時,從SPS解碼DPB參數語法結構。
條款33.如條款31或32之方法,其中語法元素包括vps_num_dpb_params_minus1語法元素。
條款34.如條款31-33中的任一項的方法,其中指定VPS中的DPB參數語法結構的數目減一的語法元素是第一語法元素,亦包括:從VPS解碼指定每個OLS是僅包含一個層亦是被允許包含多個層的第二語法元素,其中解碼第一語法元素包括:回應於指示每個OLS被允許包含多個層的第二語法元素,解碼第一語法元素。
條款35.如條款34之方法,其中第二語法元素包括each_layer_is_an_ols_flag語法元素。
條款36.如條款34或35之方法,亦包括:回應於指示每個OLS被允許包含多個層的第二語法元素,從VPS解碼指定VPS是否包括假定參考解碼器(HRD)參數語法結構的第三語法元素。
條款37.如條款36之方法,其中第三語法元素包括hrd_params_present_flag。
條款38.一種視訊解碼設備,包括:記憶體,被配置為儲存經編解碼視訊位元串流的至少一部分;及一或多個處理器,在電路中實施並被配置為執行條款29-37中任一項所述的方法。
條款39.一種視訊解碼設備,包括用於執行條款29-37中任一項所述的方法的構件。
條款40.一種儲存指令的電腦可讀取儲存媒體,該指令在被執行時,使得一或多個處理器執行條款29-37中的任一項所述的方法。
條款41.如條款1-40之任何組合。
應認識到,取決於實例,本文中所描述的技術中的任一個的某些動作或事件可以以不同序列來執行,可以被添加、合併或完全省去(例如,並非所有所描述的動作或事件對於技術的實踐是必要的)。此外,在某些實例中,動作或事件可以例如經由多執行緒處理、中斷處理或多個處理器來併發執行,而不是循序執行。
在一或多個實例中,所描述的功能可以以硬體、軟體、韌體或其任何組合中來實施。若以軟體實施,則該等功能可以作為一或多個指令或代碼在電腦可讀取媒體上被儲存或發送,並且由基於硬體的處理單元執行。電腦可讀取媒體可以包括電腦可讀取儲存媒體,其與諸如資料儲存媒體之類的有形媒體相對應;或者通訊媒體,包括例如根據通訊協定而促進電腦程式從一處到另一處的傳遞的任何媒體。以此方式,電腦可讀取媒體通常可對應於(1)非暫態的有形電腦可讀取儲存媒體或(2)諸如信號或載波之類的通訊媒體。資料儲存媒體可以是能由一或多個電腦或一或多個處理器存取以取得用於實施本案中描述的技術的指令、代碼及/或資料結構的任何可用媒體。電腦程式產品可以包括電腦可讀取媒體。
舉例而言而非限制,此類電腦可讀取儲存媒體可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟儲存器、磁碟儲存器或其他磁儲存設備、快閃記憶體,或者可被用於以指令或資料結構的形式儲存所需程式碼並可由電腦存取的任何其他媒體。同樣,任何連接適當地被稱為電腦可讀取媒體。例如,若使用同軸電纜、光纜、雙絞線、數位用戶線(DSL),或者諸如紅外、無線電、微波之類的無線技術來從網站、伺服器或其他遠端源發送指令,則同軸電纜、光纜、雙絞線、DSL或諸如紅外、無線電和微波之類的無線技術被包括在媒體的定義中。然而,應當理解,電腦可讀取儲存媒體和資料儲存媒體不包括連接、載波、信號或其他暫態媒體,而是針對非暫態的、有形的儲存媒體。本文使用的磁碟和光碟包括緊湊盤(CD)、雷射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常以磁性方式再現資料,而光碟則用雷射以光學方式再現資料。上述項的組合亦應被包括在電腦可讀取媒體的範圍內。
指令可以由諸如以下各項的一或多個處理器執行:一或多個數位訊號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他等效的整合或離散邏輯電路。相應地,如本文中所使用的術語「處理器」和「處理電路」可以指前述結構中的任一個或適於實施本文中所描述的技術的任何其他結構。另外,在某些態樣,本文中所描述的功能性可以在被配置用於編碼和解碼的專用硬體及/或軟體模組內被提供,或被併入組合編解碼器中。同樣,該技術可以以一或多個電路或邏輯元件中來完全實施。
本案的技術可被實施於各種設備或裝置中,包括無線手持設備、積體電路(IC)或IC集(例如,晶片集)。在本案中描述各種部件、模組或單元以強調被配置為執行所揭示技術的設備的功能態樣,但不必需要由不同硬體單元實施。更確切地,如前述,各種單元可以被組合在編解碼器硬體單元中或者由包括如前述的一或多個處理器的交互動操作硬體單元的集合結合適當的軟體及/或韌體來提供。
各種實例已被描述。該等實例和其他實例在所附請求項的範疇之內。
100:視訊編碼和解碼系統 102:源設備 104:視訊源 106:記憶體 108:輸出介面 110:電腦可讀取媒體 112:儲存設備 114:檔案伺服器 116:目標設備 118:顯示設備 120:記憶體 122:輸入介面 130:四叉樹二叉樹(QTBT)結構 132:編解碼樹單元 200:視訊編碼器 202:模式選擇單元 204:殘差產生單元 206:變換處理單元 208:量化單元 210:逆量化單元 212:逆變換處理單元 214:重構單元 216:濾波器單元 218:經解碼圖片緩衝器(DPB) 220:熵編碼單元 222:運動估計單元 224:運動補償單元 226:訊框內預測單元 230:視訊資料記憶體 300:視訊解碼器 302:熵解碼單元 304:預測處理單元 306:逆量化單元 308:逆變換處理單元 310:重構單元 312:濾波器單元 314:經解碼圖片緩衝器(DPB) 316:運動補償單元 318:訊框內預測單元 320:CPB記憶體 350:步驟 352:步驟 354:步驟 356:步驟 358:步驟 360:步驟 370:步驟 372:步驟 374:步驟 376:步驟 378:步驟 380:步驟 702:步驟 704:步驟 706:步驟 708:步驟 710:步驟 712:步驟 714:步驟
圖1是圖示了可以執行本案的技術的示例視訊編碼和解碼系統的方塊圖。
圖2A和圖2B是圖示了示例四叉樹二叉樹(QTBT)結構以及對應編解碼樹單元(CTU)的概念圖。
圖3是圖示了可以執行本案的技術的示例視訊編碼器的方塊圖。
圖4是圖示了可以執行本案的技術的示例視訊解碼器的方塊圖。
圖5是圖示了根據本案的一或多個技術的用於對當前塊進行編碼的示例方法的流程圖。
圖6是圖示了根據本案的一或多個技術的用於對當前塊進行解碼的示例方法的流程圖。
圖7是圖示了根據本案的一或多個技術的用於訊號傳遞通知經解碼圖片緩衝器(DPB)參數語法結構的示例方法的流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
702:步驟
704:步驟
706:步驟
708:步驟
710:步驟
712:步驟
714:步驟

Claims (22)

  1. 一種對視訊資料進行解碼的方法,該方法包括以下步驟: 在視訊資料的一當前位元串流的一序列參數集(SPS)由作為一輸出層集(OLS)的一唯一層的一層引用時,從該SPS解碼一經解碼圖片緩衝器(DPB)參數語法結構;及 基於該DPB參數語法結構,重構由該當前位元串流表示的視訊資料。
  2. 如請求項1所述之方法,其中該DPB參數語法結構包括提供DPB尺寸、最大圖片重排序數目和用於一或多個OLS的最大潛時的資訊的語法元素。
  3. 如請求項1所述之方法,亦包括以下步驟: 從視訊資料的該當前位元串流的一視訊參數集(VPS)解碼指定該VPS中的DPB參數語法結構的數目減一的一語法元素;及 回應於確定該語法元素不存在於該位元串流中,推斷該VPS中的DPB語法結構的該數目為零。
  4. 如請求項3所述之方法,亦包括以下步驟: 當僅一個層被包括在該VPS的任何OLS中時,從該SPS解碼該DPB參數語法結構。
  5. 如請求項3所述之方法,其中該語法元素包括一vps_num_dpb_params_minus1語法元素。
  6. 如請求項3所述之方法,其中指定該VPS中的DPB參數語法結構的該數目減一的語法元素是一第一語法元素,亦包括以下步驟: 從該VPS解碼指定每個OLS是僅包含一個層還是被允許包含多個層的一第二語法元素,其中解碼該第一語法元素之步驟包括以下步驟: 回應於指示每個OLS被允許包含多個層的該第二語法元素,解碼該第一語法元素。
  7. 如請求項6所述之方法,其中該第二語法元素包括一each_layer_is_an_ols_flag語法元素。
  8. 如請求項6所述之方法,亦包括以下步驟: 回應於指示每個OLS被允許包含多個層的該第二語法元素,從該VPS解碼指定該VPS是否包括一假定參考解碼器(HRD)參數語法結構的一第三語法元素。
  9. 如請求項8所述之方法,其中該第三語法元素包括一hrd_params_present_flag。
  10. 一種視訊解碼設備,包括: 一記憶體,被配置為儲存一經編解碼的視訊位元串流的至少一部分;及 一或多個處理器,在一電路中實施並且被配置為進行以下操作的: 在該經編解碼的視訊位元串流的一序列參數集(SPS)由作為一輸出層集(OLS)的一唯一層的一層引用時,從該SPS解碼一經解碼圖片緩衝器(DPB)參數語法結構;及 基於該DPB參數語法結構,重構由當前位元串流表示的視訊資料。
  11. 如請求項10所述之視訊解碼設備,其中該DPB參數語法結構包括提供DPB尺寸、最大圖片重排序數目和用於一或多個OLS的最大潛時的資訊的語法元素。
  12. 如請求項10所述之視訊解碼設備,其中該一或多個處理器亦被配置為: 從該經編解碼視訊的一視訊參數集(VPS)解碼指定該VPS中的DPB參數語法結構的該數目減一的一語法元素;及 回應於確定該語法元素不存在於該位元串流中,推斷該VPS中的DPB語法結構的該數目為零。
  13. 如請求項12所述之視訊解碼設備,其中該一或多個處理器亦被配置為: 當僅一個層被包括在該VPS的任何OLS中時,從該SPS解碼該DPB參數語法結構。
  14. 如請求項12所述之視訊解碼設備,其中該語法元素包括一vps_num_dpb_params_minus1語法元素。
  15. 如請求項12所述之視訊解碼設備,其中指定該VPS中的DPB參數語法結構的該數目減一的該語法元素是一第一語法元素,並且其中該一或多個處理器亦被配置為: 從該VPS解碼指定每個OLS是僅包含一個層還是被允許包含多個層的一第二語法元素,其中為了解碼該第一語法元素,該一或多個處理器被配置為: 回應於指示每個OLS被允許包含多個層的該第二語法元素,解碼該第一語法元素。
  16. 如請求項15所述之視訊解碼設備,其中該第二語法元素包括一each_layer_is_an_ols_flag語法元素。
  17. 如請求項15所述之視訊解碼設備,其中該一或多個處理器亦被配置為: 回應於指示每個OLS被允許包含多個層的該第二語法元素並且從該VPS,解碼指定該VPS是否包括一假定參考解碼器(HRD)參數語法結構的一第三語法元素。
  18. 如請求項17所述之視訊解碼設備,其中該第三語法元素包括一hrd_params_present_flag。
  19. 一種視訊解碼設備,包括: 用於在視訊資料的一當前位元串流的一序列參數集(SPS)由作為一輸出層集(OLS)的一唯一層的一層引用時從該SPS解碼一經解碼圖片緩衝器(DPB)參數語法結構的構件;及 用於基於該DPB參數語法結構,重構由該當前位元串流表示的視訊資料的構件。
  20. 如請求項19所述之視訊解碼設備,亦包括: 用於從視訊資料的該當前位元串流的一視訊參數集(VPS)解碼指定每個OLS是僅包含一個層還是被允許包含多個層的一第一語法元素的構件; 用於回應於指示每個OLS被允許包含多個層的該第一語法元素並且從該VPS解碼指定該VPS中的DPB參數語法結構的該數目減一的一第二語法元素的構件;及 用於回應於確定該第二語法元素不存在於該位元串流中,推斷該VPS中的DPB語法結構的該數目為零的構件。
  21. 一種儲存指令的電腦可讀取儲存媒體,該等指令在被執行時,使得一或多個處理器: 在視訊資料的一當前位元串流的一序列參數集(SPS)由作為一輸出層集(OLS)的一唯一層的一層引用時從該SPS解碼一經解碼圖片緩衝器(DPB)參數語法結構;及 基於該DPB參數語法結構,重構由該當前位元串流表示的視訊資料。
  22. 如請求項21所述之電腦可讀取儲存媒體,亦儲存使得該一或多個處理器進行以下操作的指令: 從視訊資料的該當前位元串流的視訊參數集(VPS)解碼指定每個OLS是僅包含一個層還是被允許包含多個層的一第一語法元素; 回應於指示每個OLS被允許包含多個層的該第一語法元素並且從該VPS解碼指定該VPS中的DPB參數語法結構的該數目減一的一第二語法元素;及 回應於確定該第二語法元素不存在於該位元串流中,推斷該VPS中的DPB語法結構的該數目為零。
TW110103233A 2020-01-29 2021-01-28 用於視訊編解碼的經解碼圖片緩衝器(dpb)參數訊號傳遞通知 TW202135531A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202062967507P 2020-01-29 2020-01-29
US62/967,507 2020-01-29
US202063004022P 2020-04-02 2020-04-02
US63/004,022 2020-04-02
US17/159,508 US20210235124A1 (en) 2020-01-29 2021-01-27 Decoded picture buffer (dpb) parameter signaling for video coding
US17/159,508 2021-01-27

Publications (1)

Publication Number Publication Date
TW202135531A true TW202135531A (zh) 2021-09-16

Family

ID=76970440

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110103233A TW202135531A (zh) 2020-01-29 2021-01-28 用於視訊編解碼的經解碼圖片緩衝器(dpb)參數訊號傳遞通知

Country Status (5)

Country Link
US (1) US20210235124A1 (zh)
EP (1) EP4097975A1 (zh)
CN (1) CN115004712A (zh)
TW (1) TW202135531A (zh)
WO (1) WO2021154986A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021157608A1 (ja) * 2020-02-07 2021-08-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
WO2021162016A1 (ja) * 2020-02-10 2021-08-19 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
KR20220163403A (ko) * 2020-03-30 2022-12-09 엘지전자 주식회사 Dpb 파라미터를 시그널링하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 컴퓨터 판독 가능한 기록 매체
CN115362679A (zh) * 2020-03-31 2022-11-18 交互数字Vc控股法国公司 用于视频编码和解码的方法和装置
JP7488360B2 (ja) * 2020-04-02 2024-05-21 エルジー エレクトロニクス インコーポレイティド Dpb関連情報及びptl関連情報をシグナリングする画像符号化/復号化方法及び装置、並びにビットストリームを保存したコンピュータ可読記録媒体
WO2021246791A1 (ko) * 2020-06-03 2021-12-09 엘지전자 주식회사 영상/비디오 코딩 시스템에서 상위 레벨 신택스를 처리하는 방법 및 장치

Also Published As

Publication number Publication date
EP4097975A1 (en) 2022-12-07
US20210235124A1 (en) 2021-07-29
WO2021154986A1 (en) 2021-08-05
CN115004712A (zh) 2022-09-02

Similar Documents

Publication Publication Date Title
CN113940069A (zh) 用于视频译码中的低频不可分离变换的变换和最后有效系数位置信令
TW202101989A (zh) 用於視訊寫碼之參考圖像重採樣及框間寫碼工具
TW202110189A (zh) 用於視訊寫碼的環繞運動補償
TW202135531A (zh) 用於視訊編解碼的經解碼圖片緩衝器(dpb)參數訊號傳遞通知
TW202046740A (zh) 適應性迴路濾波器組之索引發信
TW202123705A (zh) 低頻不可分離變換(lfnst)訊號傳遞
TW202127886A (zh) 用於視頻譯碼的圖像標頭信令
TW202143733A (zh) 在視訊編解碼中的獨立子圖片信號傳遞
US20210385497A1 (en) General constraints of syntax elements for video coding
TW202127887A (zh) 視訊解碼中用於聯合色度殘差模式的量化參數訊號傳遞
TW202131676A (zh) 視訊編碼中針對參考圖片重取樣的環繞偏移
TW202139715A (zh) 視訊譯碼中的參考圖片列表和共位圖片訊號傳遞
TW202127893A (zh) 用於視頻編碼中的參考圖片重採樣的參考圖片縮放比
TW202133612A (zh) 用於視訊解碼的基於塊的增量脈衝解碼調制
TW202203649A (zh) 視訊譯碼中的通用約束資訊信號傳遞
TW202133621A (zh) 支援有損解碼和無損解碼兩者的殘差解碼
TW202139696A (zh) 在進行視訊解碼時對區塊的色度變換跳過和聯合色度解碼賦能
TW202143711A (zh) 用於具有混合網路抽象層(nal)單元類型的視訊的高階語法
TW202131698A (zh) 多層的共享解碼器圖片緩衝器
TW202141988A (zh) 用於視訊譯碼中的變換跳過區塊的高級約束
TW202133615A (zh) 基於色度變換跳過的用於色度的lfnst信號傳遞
CN115398921A (zh) 确定是否对在切片报头中的视频数据的图片的图片报头数据进行译码
TW202143735A (zh) 用於視訊資料的語法元素的訊號傳遞
TW202143722A (zh) 在視訊解碼中的經解碼視訊序列起點存取單元
TW202131696A (zh) 用於視訊編碼中的一般變換係數的基於方程的萊斯參數推導