TW202127873A - 用於視頻寫碼中的子圖片的參考子圖片縮放比率 - Google Patents
用於視頻寫碼中的子圖片的參考子圖片縮放比率 Download PDFInfo
- Publication number
- TW202127873A TW202127873A TW109145155A TW109145155A TW202127873A TW 202127873 A TW202127873 A TW 202127873A TW 109145155 A TW109145155 A TW 109145155A TW 109145155 A TW109145155 A TW 109145155A TW 202127873 A TW202127873 A TW 202127873A
- Authority
- TW
- Taiwan
- Prior art keywords
- picture
- sub
- zoom
- scaling
- window
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/187—Methods 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 a scalable video layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
- H04N19/172—Methods 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 an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
- H04N19/174—Methods 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 an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
- H04N19/176—Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/33—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/587—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一種視頻解碼器可以被配置為:確定當前圖片的第一子圖片具有相關聯的縮放參數;響應於確定當前圖片的第一子圖片具有相關聯的縮放參數,接收用於當前圖片的第一子圖片的相關聯的縮放參數;確定用於當前圖片的第一子圖片的區塊的動作資訊,該動作資訊標識參考圖片的子圖片;在參考圖片的子圖片中定位用於當前圖片的第一子圖片的區塊的預測區塊;以及基於用於當前圖片的第一子圖片的相關聯的縮放參數來對預測區塊進行縮放。
Description
本公開內容涉及視頻編碼和視頻解碼。
數位視頻能力可以被合併到各種各樣的設備中,包括數位電視機、數位直接廣播系統、無線廣播系統、個人數位助理(PDA)、膝上型計算機或臺式計算機、平板計算機、電子書閱讀器、數位相機、數位記錄設備、數位媒體播放器、視頻遊戲設備、視頻遊戲控制台、行動或衛星無線電電話(所謂的“智慧電話”)、視頻電話會議設備、視頻串流設備等。數位視頻設備實現視頻寫碼(coding)技術(諸如在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4(第10部分,高級視頻寫碼(AVC)、ITU-T H.265/高效率視頻寫碼(HEVC))所定義的標準以及此類標準的擴展中描述的那些技術)。通過實現這樣的視頻寫碼技術,視頻設備可以更加高效地發送、接收、編碼(encode)、解碼(decode)和/或儲存數位視頻資訊。
視頻寫碼技術包括空間(圖片內)預測和/或時間(圖片間)預測以減少或去除在視頻序列中固有的冗餘。對於基於區塊的視頻寫碼,視頻切片(例如,視頻圖片或視頻圖片的一部分)可以被分割成視頻區塊,視頻區塊也可以被稱為寫碼樹單元(CTU)、寫碼單元(CU)和/或寫碼節點。圖片的經幀內寫碼(I)的切片中的視頻區塊是使用相對於同一圖片中的相鄰區塊中的參考樣本的空間預測來編碼的。圖片的經幀間寫碼(P或B)的切片中的視頻區塊可以使用相對於同一圖片中的相鄰區塊中的參考樣本的空間預測或者相對於其它參考圖片中的參考樣本的時間預測。圖片可以被稱為幀,並且參考圖片可以被稱為參考幀。
為了支援360度視頻,多功能視頻寫碼(VVC)標準支援子圖片。本公開內容描述了使視頻寫碼器(例如,視頻編碼器或視頻解碼器)能夠支援用於子圖片的參考圖片縮放比率的技術。本公開內容還描述了使視頻寫碼器能夠同時支援參考圖片重取樣和子圖片的技術。
如下文更詳細地解釋的,子圖片可以具有不同的解析度,例如,在子圖片中的不同數量的樣本。目前不存在用於視頻寫碼器使用具有不同解析度的子圖片中的參考區塊來正確地對當前區塊進行幀間預測的機制。本公開內容引入了如下的技術:該技術可以使視頻寫碼器能夠接收用於當前圖片的子圖片的縮放參數,並且基於縮放參數來對預測區塊進行縮放,以使當前區塊能夠與來自具有與第一子圖片不同的解析度的參考子圖片的當前區塊進行幀間預測。例如,視頻寫碼器可以基於參考圖片的子圖片的視窗和當前圖片的第一子圖片的視窗的比率來確定縮放比率。通過基於用於當前圖片的第一子圖片的相關聯的縮放參數來對預測區塊進行縮放,視頻寫碼器可以有利地根據具有不同解析度的子圖片來對一個子圖片的當前區塊進行幀間預測,這可以使得能夠提高整體寫碼品質。此外,通過基於縮放視窗而不是整個子圖片來確定縮放比率,本公開內容的技術可以考慮在當前子圖片與參考圖片之間發生的透視改變(例如,放大或縮小),這可以通過生成更精確的預測區塊來有益地進一步提高整體寫碼品質。
根據本公開內容的一個示例,一種方法包括:確定當前圖片的第一子圖片具有相關聯的縮放參數;響應於確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,接收用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數;確定用於所述當前圖片的所述第一子圖片的區塊的動作資訊,其中,所述動作資訊標識參考圖片的子圖片;在所述參考圖片的所述子圖片中定位用於所述當前圖片的所述第一子圖片的所述區塊的預測區塊;以及基於用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放。
根據本公開內容的另一示例,一種用於對視頻資料進行解碼的設備包括:記憶體,其被配置為儲存視頻資料;以及一個或多個處理器,其在電路中實現並且被配置為:確定當前圖片的第一子圖片具有相關聯的縮放參數;響應於確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,接收用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數;確定用於所述當前圖片的所述第一子圖片的區塊的動作資訊,其中,所述動作資訊標識參考圖片的子圖片;在所述參考圖片的所述子圖片中定位用於所述當前圖片的所述第一子圖片的所述區塊的預測區塊;以及基於用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放。
根據本公開內容的另一示例,一種計算機可讀儲存媒體儲存指令,所述指令在由一個或多個處理器執行時使得所述一個或多個處理器進行以下操作:確定當前圖片的第一子圖片具有相關聯的縮放參數;響應於確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,接收用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數;確定用於所述當前圖片的所述第一子圖片的區塊的動作資訊,其中,所述動作資訊標識參考圖片的子圖片;在所述參考圖片的所述子圖片中定位用於所述當前圖片的所述第一子圖片的所述區塊的預測區塊;以及基於用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放。
根據本公開內容的另一示例,一種用於對視頻資料進行寫碼的裝置包括:用於確定當前圖片的第一子圖片具有相關聯的縮放參數的構件;用於響應於確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,接收用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數的構件;用於確定用於所述當前圖片的所述第一子圖片的區塊的動作資訊的構件,其中,所述動作資訊標識參考圖片的子圖片;用於在所述參考圖片的所述子圖片中定位用於所述當前圖片的所述第一子圖片的所述區塊的預測區塊的構件;以及用於基於用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放的構件。
在附圖和以下描述中闡述了一個或多個示例的細節。根據描述、附圖和申請專利範圍,其它特徵、目的和優點將是顯而易見的。
視頻寫碼(例如,視頻編碼和/或視頻解碼)典型地涉及從同一圖片中的視頻資料的已經寫碼的區塊預測視頻資料的區塊(例如,幀內預測)或從不同圖片中的視頻資料的已經寫碼的區塊預測視頻資料的區塊(例如,幀間預測)。在一些情況下,視頻編碼器還通過將預測區塊與原始區塊進行比較來計算殘差資料。因此,殘差資料表示預測區塊的樣本與原始區塊的樣本之間的差。為了減少用訊號通知殘差資料所需要的位元數量,視頻編碼器對殘差資料進行轉換和量化,並且在經編碼的位元流中用訊號通知經轉換且經量化的殘差資料。通過轉換和量化過程實現的壓縮可能是有損的,這意味著轉換和量化過程可能向經解碼的視頻資料中引入失真。
視頻解碼器對殘差資料進行解碼並且將其與預測區塊相加,以產生經重構的視頻區塊,該經重構的視頻區塊與單獨的預測區塊相比更接近地匹配原始視頻區塊。由於對殘差資料的轉換和量化所引入的損失,第一經重構的區塊可能具有失真或偽影。為了進一步提高經解碼的視頻的品質,視頻解碼器可以對經重構的視頻區塊執行一個或多個濾波操作。
視頻被編碼成一系列圖片,其中每個圖片被劃分成一個或多個切片。切片可以包括整數個區塊,例如,寫碼樹單元(CTU)。在一些情況下,切片內的區塊可以被分組成瓦片(tile)或某種其它此類分組。對於一些應用,如二維電影或電視,圖片通常對應於單個連續場景。對於其它類型的應用,諸如360度視頻,圖片可以包括多個子圖片,其中子圖片可以各自對應於單個連續場景,而圖片作為一個整體不對應於單個連續場景。子圖片通常是指由圖片中的一個或多個切片組成的矩形區域。作為一個示例用例,在一些實現中,可以從96個不同的子圖片拼接360度圖片。96個不同的子圖片在邊界之間可以是連續的或不連續的。當串流360度視頻時,用戶可能只接收到子圖片中的一些。
為了支援360度視頻,多功能視頻寫碼(VVC)標準支援子圖片。本公開內容描述了使視頻寫碼器(例如,視頻編碼器或視頻解碼器)能夠支援用於子圖片的參考圖片縮放比率的技術。本公開內容還描述了使視頻寫碼器能夠同時支援參考圖片重取樣和子圖片的技術。
如下文更詳細地解釋的,子圖片可以具有不同的解析度,例如,子圖片中的不同數量的樣本。目前不存在用於視頻寫碼器使用具有不同解析度的子圖片中的參考區塊來正確地對當前區塊進行幀間預測的機制。本公開內容引入了如下的技術:該技術可以使視頻寫碼器能夠接收用於當前圖片的子圖片的縮放參數,並且基於縮放參數來對預測區塊進行縮放,以使當前區塊能夠與來自具有與第一子圖片不同的解析度的參考子圖片的當前區塊進行幀間預測。例如,視頻寫碼器可以基於參考圖片的子圖片的視窗和當前圖片的第一子圖片的視窗的比率來確定縮放比率。通過基於用於當前圖片的第一子圖片的相關聯的縮放參數來對預測區塊進行縮放,視頻寫碼器可以有利地根據具有不同解析度的子圖片來對一個子圖片的當前區塊進行幀間預測,這可以使得能夠提高整體寫碼品質。此外,通過基於縮放視窗而不是整個子圖片來確定縮放比率,本公開內容的技術可以考慮在當前子圖片與參考圖片之間發生的透視變化(例如,放大或縮小),這可以通過生成更精確的預測區塊來有益地進一步提高整體寫碼品質。
圖1是示出了可以執行本公開內容的技術的示例視頻編碼和解碼系統100的方塊圖。概括而言,本公開內容的技術涉及對視頻資料進行寫碼(編碼和/或解碼)。通常,視頻資料包括用於處理視頻的任何資料。因此,視頻資料可以包括原始的未經編碼的視頻、經編碼的視頻、經解碼(例如,經重構)的視頻、以及視頻元資料(諸如訊令資料)。
如圖1中所示,在該示例中,系統100包括來源設備102,來源設備102提供要被目的地設備116解碼和顯示的、經編碼的視頻資料。特別是,來源設備102經由計算機可讀媒體110來將視頻資料提供給目的地設備116。來源設備102和目的地設備116可以包括各種各樣的設備中的任何一種,包括臺式計算機、筆記本計算機(即,膝上型計算機)、行動設備、平板計算機、機上盒、電話手機(諸如智慧電話)、電視機、相機、顯示設備、數位媒體播放器、視頻遊戲控制台、視頻串流設備、廣播接收機設備等。在一些情況下,來源設備102和目的地設備116可以被配備用於無線通訊,並且因此可以被稱為無線通訊設備。
在圖1的示例中,來源設備102包括視頻源104、記憶體106、視頻編碼器200以及輸出介面108。目的地設備116包括輸入介面122、視頻解碼器300、記憶體120以及顯示設備118。根據本公開內容,來源設備102的視頻編碼器200和目的地設備116的視頻解碼器300可以被配置為應用用於參考子圖片縮放的技術。因此,來源設備102表示視頻編碼設備的示例,而目的地設備116表示視頻解碼設備的示例。在其它示例中,來源設備和目的地設備可以包括其它組件或佈置。例如,來源設備102可以從諸如外部相機之類的外部視頻源接收視頻資料。同樣,目的地設備116可以與外部顯示設備對接,而不是包括整合顯示設備。
如圖1中所示的系統100僅是一個示例。通常,任何數位視頻編碼和/或解碼設備可以執行用於參考子圖片縮放的技術。來源設備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可以表示網頁伺服器(例如,用於網站)、被配置為提供文件傳輸協議服務(諸如文件傳輸協議(FTP)或單向傳輸文件遞送(FLUTE)協議)的伺服器、內容遞送網路(CDN)設備、超文本傳輸協議(HTTP)伺服器、多媒體廣播多播服務(MBMS)或增強型MBMS(eMBMS)伺服器和/或網路附加儲存(NAS)設備。文件伺服器114可以另外或替代地實現一種或多種HTTP串流協議,諸如基於HTTP的動態自適應串流(DASH)、HTTP即時串流(HLS)、即時串流協議(RTSP)、HTTP動態串流等。
目的地設備116可以通過任何標準資料連接(包括網際網路連接)來從文件伺服器114存取經編碼的視頻資料。這可以包括適於存取被儲存在文件伺服器114上的經編碼的視頻資料的無線通道(例如,Wi-Fi連接)、有線連接(例如,數位用戶線(DSL)、電纜數據機等)、或這兩者的組合。輸入介面122可以被配置為根據以下各項中的任何一項或多項來操作:上文討論的用於從文件伺服器114取回或接收媒體資料的各種協議、或用於取回媒體資料的其它此類協議。
輸出介面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可以表示各種顯示設備中的任何一種,諸如液晶顯示器(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可以根據其它專有或行業標準(諸如ITU-T H.266標準,也被稱為多功能視頻寫碼(VVC))進行操作。VVC標準的草案是在以下項中描述的:Bross等人,“Versatile Video Coding (Draft 7)”,ITU-T SG 16 WP 3和ISO/IEC JTC 1/SC 29/WG 11的聯合視頻專家組(JVET),第16次會議,瑞士日內瓦,2019年10月1-11日,JVET-P2001-v14(下文中稱為“VVC草案7”)。然而,本公開內容的技術不限於任何特定的寫碼標準。
通常,視頻編碼器200和視頻解碼器300可以執行對圖片的基於區塊的寫碼。術語“區塊”通常指代包括要被處理的(例如,在編碼和/或解碼過程中被編碼、被解碼或以其它方式使用的)資料的結構。例如,區塊可以包括亮度和/或色度資料的樣本的二維矩陣。通常,視頻編碼器200和視頻解碼器300可以對以YUV(例如,Y、Cb、Cr)格式表示的視頻資料進行寫碼。也就是說,視頻編碼器200和視頻解碼器300可以對亮度和色度分量進行寫碼,而不是對用於圖片的樣本的紅色、綠色和藍色(RGB)資料進行寫碼,其中,色度分量可以包括紅色色相和藍色色相色度分量兩者。在一些示例中,視頻編碼器200在進行編碼之前將所接收的RGB格式的資料轉換為YUV表示,並且視頻解碼器300將YUV表示轉換為RGB格式。替代地,預處理和後處理單元(未示出)可以執行這些轉換。
概括而言,本公開內容可以涉及對圖片的寫碼(例如,編碼和解碼)以包括對圖片的資料進行編碼或解碼的過程。類似地,本公開內容可以涉及對圖片的區塊的寫碼以包括對用於區塊的資料進行編碼或解碼的過程(例如,預測和/或殘差寫碼)。經編碼的視頻位元流通常包括用於表示寫碼決策(例如,寫碼模式)以及將圖片分割成區塊的語法元素的一系列值。因此,關於對圖片或區塊進行寫碼的引用通常應當被理解為對用於形成圖片或區塊的語法元素的值進行寫碼。
HEVC定義了各種區塊,包括寫碼單元(CU)、預測單元(PU)和轉換單元(TU)。根據HEVC,視頻寫碼器(諸如視頻編碼器200)根據四叉樹結構來將寫碼樹單元(CTU)分割成CU。也就是說,視頻寫碼器將CTU和CU分割成四個相等的、不重疊的正方形,並且四叉樹的每個節點具有零個或四個子節點。沒有子節點的節點可以被稱為“葉節點”,並且這樣的葉節點的CU可以包括一個或多個PU和/或一個或多個TU。視頻寫碼器可以進一步分割PU和TU。例如,在HEVC中,殘差四叉樹(RQT)表示對TU的分割。在HEVC中,PU表示幀間預測資料,而TU表示殘差資料。經幀內預測的CU包括幀內預測資訊,諸如幀內模式指示。
作為另一示例,視頻編碼器200和視頻解碼器300可以被配置為根據VVC進行操作。根據VVC,視頻寫碼器(諸如視頻編碼器200)將圖片分割成多個寫碼樹單元(CTU)。視頻編碼器200可以根據樹結構(諸如四叉樹-二叉樹(QTBT)結構或多類型樹(MTT)結構)來分割CTU。QTBT結構去除了多種分割類型的概念,諸如在HEVC的CU、PU和TU之間的分隔。QTBT結構包括兩個級別:根據四叉樹分割而被分割的第一級別、以及根據二叉樹分割而被分割的第二級別。QTBT結構的根節點對應於CTU。二叉樹的葉節點對應於寫碼單元(CU)。
在MTT分割結構中,可以使用四叉樹(QT)分割、二叉樹(BT)分割以及一種或多種類型的三叉樹(TT)分割(也被稱為三元樹(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包括具有三個樣本陣列的圖片的亮度樣本的寫碼樹區塊(CTB)、具有三個樣本陣列的圖片的色度樣本的兩個對應的CTB、或者單色圖片或使用三個單獨的色彩平面和用於對樣本進行寫碼的語法結構來寫碼的圖片的樣本的CTB。CTB可以是NxN的樣本區塊(針對為N的某個值),使得將分量劃分成CTB是一種分割。分量是來自以4:2:0、4:2:2或4:4:4的色彩格式組成圖片的三個陣列(一個亮度和兩個色度)之一的陣列或單個樣本,或者是以單色格式組成圖片的陣列或陣列的單個樣本。在一些示例中,寫碼區塊是M×N的樣本區塊(針對為M和N的某些值),使得將CTB劃分成寫碼區塊是一種分割。
可以以各種方式在圖片中對區塊(例如,CTU或CU)進行分組。作為一個示例,磚塊(brick)可以指代圖片中的特定瓦片內的CTU行的矩形區域。瓦片可以是圖片中的特定瓦片列和特定瓦片行內的CTU的矩形區域。瓦片列指代CTU的矩形區域,其具有等於圖片的高度的高度以及由語法元素(例如,諸如在圖片參數集中)指定的寬度。瓦片行指代CTU的矩形區域,其具有由語法元素指定的高度(例如,諸如在圖片參數集中)以及等於圖片的寬度的寬度。
在一些示例中,可以將瓦片分割成多個磚塊,其中的每個磚塊可以包括瓦片內的一個或多個CTU行。沒有被分割成多個磚塊的瓦片也可以被稱為磚塊。然而,作為瓦片的真實子集的磚塊不可以被稱為瓦片。
圖片中的磚塊也可以以切片來排列。切片可以是圖片的整數個磚塊,其可以唯一地被包含在單個網路抽象層(NAL)單元中。在一些示例中,切片包括多個完整的瓦片或者僅包括一個瓦片的連續的完整磚塊序列。
本公開內容可以可互換地使用“NxN”和“N乘N”來指代區塊(諸如CU或其它視頻區塊)在垂直和水平維度方面的樣本維度,例如,16x16個樣本或16乘16個樣本。通常,16x16 CU將在垂直方向上具有16個樣本(y = 16),並且在水平方向上具有16個樣本(x = 16)。同樣地,NxN 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。
VVC的一些示例還提供仿射動作補償模式,其可以被認為是幀間預測模式。在仿射動作補償模式下,視頻編碼器200可以確定表示非平移動作(諸如放大或縮小、旋轉、透視動作或其它不規則的動作類型)的兩個或更多個動作向量。
為了執行幀內預測,視頻編碼器200可以選擇幀內預測模式來生成預測區塊。VVC的一些示例提供六十七種幀內預測模式,包括各種方向性模式、以及平面模式和DC模式。通常,視頻編碼器200選擇幀內預測模式,幀內預測模式描述要根據其來預測當前區塊(例如,CU的區塊)的樣本的、當前區塊的相鄰樣本。假定視頻編碼器200以光柵掃描次序(左到右、上到下)對CTU和CU進行寫碼,則這樣的樣本通常可以是在與當前區塊相同的圖片中的當前區塊的上方、左上方或左側。
視頻編碼器200對表示用於當前區塊的預測模式的資料進行編碼。例如,對於幀間預測模式,視頻編碼器200可以對表示使用各種可用幀間預測模式中的哪一種的資料以及用於對應模式的動作資訊進行編碼。對於單向或雙向幀間預測,例如,視頻編碼器200可以使用高級動作向量預測(AMVP)或合併模式來對動作向量進行編碼。視頻編碼器200可以使用類似的模式來對用於仿射動作補償模式的動作向量進行編碼。
在對區塊的諸如幀內預測或幀間預測之類的預測之後,視頻編碼器200可以計算針對該區塊的殘差資料。殘差資料(諸如殘差區塊)表示在區塊與用於該區塊的預測區塊之間的逐樣本差,該預測區塊是使用對應的預測模式來形成的。視頻編碼器200可以將一個或多個轉換應用於殘差區塊,以在轉換域中而非樣本域中產生經轉換的資料。例如,視頻編碼器200可以將離散餘弦轉換(DCT)、整數轉換、小波轉換或概念上類似的轉換應用於殘差視頻資料。另外,視頻編碼器200可以在一次轉換之後應用二次轉換,諸如模式相關的不可分離的二次轉換(MDNSST)、訊號相關的轉換、Karhunen-Loeve轉換(KLT)等。視頻編碼器200在應用一個或多個轉換之後產生轉換係數。
如上所述,在用以產生轉換係數的任何轉換之後,視頻編碼器200可以執行對轉換係數的量化。量化通常指代如下的過程:在該過程中,對轉換係數進行量化以可能地減少用於表示轉換係數的資料量,從而提供進一步的壓縮。通過執行量化過程,視頻編碼器200可以減小與一些或所有轉換係數相關聯的位元深度。例如,視頻編碼器200可以在量化期間將n位元的值降為m位元的值,其中n大於m。在一些示例中,為了執行量化,視頻編碼器200可以執行對要被量化的值的按位元右移。
在量化之後,視頻編碼器200可以掃描轉換係數,從而從包括經量化的轉換係數的二維矩陣產生一維向量。可以將掃描設計為將較高能量(並且因此較低頻率)的轉換係數放在向量的前面,並且將較低能量(並且因此較高頻率)的轉換係數放在向量的後面。在一些示例中,視頻編碼器200可以利用預定義的掃描次序來掃描經量化的轉換係數以產生經序列化的向量,並且然後對向量的經量化的轉換係數進行熵編碼。在其它示例中,視頻編碼器200可以執行自適應掃描。在掃描經量化的轉換係數以形成一維向量之後,視頻編碼器200可以例如根據上下文自適應二進制算術寫碼(CABAC)來對一維向量進行熵編碼。視頻編碼器200還可以對用於描述與經編碼的視頻資料相關聯的元資料的語法元素的值進行熵編碼,以供視頻解碼器300在對視頻資料進行解碼時使用。
為了執行CABAC,視頻編碼器200可以將上下文模型內的上下文分配給要被發送的符號。上下文可以涉及例如符號的相鄰值是否為零值。機率確定可以是基於被分配給符號的上下文的。
視頻編碼器200還可以例如在圖片標頭、區塊標頭、切片標頭中為視頻解碼器300生成語法資料(諸如基於區塊的語法資料、基於圖片的語法資料和基於序列的語法資料)、或其它語法資料(諸如序列參數集(SPS)、圖片參數集(PPS)或視頻參數集(VPS))。同樣地,視頻解碼器300可以對這樣的語法資料進行解碼以確定如何解碼對應的視頻資料。
以這種方式,視頻編碼器200可以生成位元流,其包括經編碼的視頻資料,例如,描述將圖片分割成區塊(例如,CU)以及用於該區塊的預測和/或殘差資訊的語法元素。最終,視頻解碼器300可以接收位元流並且對經編碼的視頻資料進行解碼。
通常,視頻解碼器300執行與由視頻編碼器200執行的過程互逆的過程,以對位元流的經編碼的視頻資料進行解碼。例如,視頻解碼器300可以使用CABAC,以與視頻編碼器200的CABAC編碼過程基本上類似的(儘管是互逆的)方式來對用於位元流的語法元素的值進行解碼。語法元素可以定義用於將圖片分割成CTU、以及根據對應的分割結構(諸如QTBT結構)對每個CTU進行分割以定義CTU的CU的分割資訊。語法元素還可以定義用於視頻資料的區塊(例如,CU)的預測和殘差資訊。
殘差資訊可以由例如經量化的轉換係數來表示。視頻解碼器300可以對區塊的經量化的轉換係數進行逆量化和逆轉換以重現用於該區塊的殘差區塊。視頻解碼器300使用經訊號發送的預測模式(幀內預測或幀間預測)和相關的預測資訊(例如,用於幀間預測的動作資訊)來形成用於該區塊的預測區塊。視頻解碼器300然後可以對預測區塊和殘差區塊(在逐個樣本的基礎上)進行組合以重現原始區塊。視頻解碼器300可以執行額外的處理,諸如執行去區塊過程以減少沿著區塊的邊界的視覺偽影。
概括而言,本公開內容可能涉及“用訊號通知”某些資訊(諸如語法元素)。術語“用訊號通知”通常可以指代對用於語法元素的值和/或用於對經編碼的視頻資料進行解碼的其它資料的傳送。也就是說,視頻編碼器200可以在位元流中用訊號通知用於語法元素的值。通常,用訊號通知指代在位元流中生成值。如上所述,來源設備102可以基本上即時地或不是即時地(諸如可能在將語法元素儲存到儲存設備112以供目的地設備116稍後取回時發生)將位元流傳輸到目的地設備116。
圖2A和2B是示出了示例四叉樹二叉樹(QTBT)結構130以及對應的寫碼樹單元(CTU)132的概念圖。實線表示四叉樹拆分,而虛線指示二叉樹拆分。在二叉樹的每個拆分(即非葉)節點中,用訊號通知一個標誌以指示使用哪種拆分類型(即,水平或垂直),其中,在該示例中,0指示水平拆分,而1指示垂直拆分。對於四叉樹拆分,由於四叉樹節點將區塊水平地並且垂直地拆分成具有相等大小的4個子區塊,因此無需指示拆分類型。因此,視頻編碼器200可以對以下各項進行編碼,而視頻解碼器300可以對以下各項進行解碼:用於QTBT結構130的區域樹級別(即,實線)的語法元素(諸如拆分資訊)、以及用於QTBT結構130的預測樹級別(即,虛線)的語法元素(諸如拆分資訊)。視頻編碼器200可以對用於由QTBT結構130的終端葉節點表示的CU的視頻資料(諸如預測和轉換資料)進行編碼,而視頻解碼器300可以對視頻資料進行解碼。
通常,圖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大小被設置為128x128(亮度樣本和兩個對應的64x64色度樣本),MinQTSize被設置為16x16,MaxBTSize被設置為64x64,MinBTSize(對於寬度和高度兩者)被設置為4,並且MaxBTDepth被設置為4。首先對CTU應用四叉樹分割以生成四叉樹葉節點。四叉樹葉節點可以具有從16x16(即,MinQTSize)到128x128(即,CTU大小)的大小。如果四叉樹葉節點為128x128,則由於該大小超過MaxBTSize(即,在該示例中為64x64),因此葉四叉樹節點將不被二叉樹進一步拆分。否則,四叉樹葉節點將被二叉樹進一步分割。因此,四叉樹葉節點也是用於二叉樹的根節點,並且具有為0的二叉樹深度。當二叉樹深度達到MaxBTDepth(在該示例中為4)時,不允許進一步拆分。具有等於MinBTSize(在該示例中為4)的寬度的二叉樹節點意味著不允許針對該二叉樹節點進行進一步的垂直拆分(即,對寬度的劃分)。類似地,具有等於MinBTSize的高度的二叉樹節點意味著不允許針對該二叉樹節點進行進一步的水平拆分(即,對高度的劃分)。如上所述,二叉樹的葉節點被稱為CU,並且根據預測和轉換而被進一步處理,而無需進一步分割。
本公開內容包括對VVC草案7的以下部分的潛在改進。以下再現了VVC草案7的第7.3.2.3節。
seq_parameter_set_rbsp( ) { | 描述符 |
… | |
ref_pic_resampling_enabled_flag | u(1) |
pic_width_max_in_luma_samples | ue(v) |
pic_height_max_in_luma_samples | ue(v) |
sps_log2_ctu_size_minus5 | u(2) |
subpics_present_flag | u(1) |
if( subpics_present_flag ) { | |
sps_ num_subpics_minus1 | u(8) |
for( i = 0; i <= sps_num_subpics_minus1; i++ ) { | |
subpic_ctu_top_left_x [ i ] | u(v) |
subpic_ctu_top_left_y [ i ] | u(v) |
subpic_width_minus1 [ i ] | u(v) |
subpic_height_minus1 [ i ] | u(v) |
subpic_treated_as_pic_flag [ i ] | u(1) |
loop_filter_across_subpic_enabled_flag [ i ] | u(1) |
} | |
} | |
sps_subpic_id_present_flag | u(1) |
if( sps_subpics_id_present_flag ) { | |
sps_subpic_id_signalling_present_flag | u(1) |
if( sps_subpics_id_signalling_present_flag ) { | |
sps_subpic_id_len_minus1 | ue(v) |
for( i = 0; i <= sps_num_subpics_minus1; i++ ) | |
sps_subpic_id [ i ] | u(v) |
} | |
} | |
… |
以上語法表中的語法元素具有來自VVC草案7中的第7.4.3.3節的以下定義:
ref_pic_resampling_enabled_flag等於1指定:當對引用SPS的CLVS中的經寫碼的圖片進行解碼時,可以應用參考圖片重取樣,關於ref_pic_resampling_enabled_flag等於0指定:當對引用SPS的CLVS中的圖片進行解碼時,不應用參考圖片重取樣。
pic_width_max_in_luma_samples指定以亮度樣本為單位的引用SPS的每個經解碼的圖片的最大寬度。pic_width_max_in_luma_samples不應當等於0並且應當為Max(8,MinCbSizeY)的整數倍。
pic_height_max_in_luma_samples指定以亮度樣本為單位的引用SPS的每個經解碼的圖片的最大高度。pic_height_max_in_luma_samples不應當等於0並且應當為Max(8,MinCbSizeY)的整數倍。
subpics_present_flag等於1指定在SPS RBSP語法中存在子圖片參數。subpics_present_flag等於0指定在SPS RBSP語法中不存在子圖片參數。
注2-當位元流是子位元流提取過程的結果並且僅包含輸入位元流到子位元流提取過程的子圖片的子集時,可能要求在SPS的RBSP中將subpics_present_flag的值設置等於1。
sps_num_subpics_minus1加1指定子圖片的數量。sps_num_subpics_minus1應當在0到254的區間中。當不存在時,sps_num_subpics_minus1的值被推斷為等於0。
subpic_ctu_top_left_x[ i ]指定以CtbSizeY為單位的第i個子圖片的左上角CTU的水平位置。語法元素的長度是Ceil( Log2( pic_width_max_in_luma_samples / CtbSizeY ) ) 位元。當不存在時,subpic_ctu_top_left_x[i]的值被推斷為等於0。
subpic_ctu_top_left_y[ i ]指定以CtbSizeY為單位的第i個子圖片的左上角CTU的垂直位置。語法元素的長度是Ceil( Log2( pic_height_max_in_luma_samples / CtbSizeY ) ) 位元。當不存在時,subpic_ctu_top_left_y[i]的值被推斷為等於0。
subpic_width_minus1[ i ]加1指定以CtbSizeY為單位的第i個子圖片的寬度。語法元素的長度是Ceil( Log2( pic_width_max_in_luma_samples / CtbSizeY ) )位元。當不存在時,subpic_width_minus1[ i ]的值被推斷為等於Ceil ( pic_width_max_in_luma_samples / CtbSizeY ) − 1。
subpic_height_minus1[ i ]加1指定以CtbSizeY為單位的第i個子圖片的高度。語法元素的長度是Ceil( Log2( pic_height_max_in_luma_samples / CtbSizeY ) )位元。當不存在時,subpic_height_minus1[ i ]的值被推斷為等於Ceil( pic_height_max_in_luma_samples / CtbSizeY ) − 1。
subpic_treated_as_pic_flag[ i ]等於1指定CLVS中的每個經寫碼的圖片的第i個子圖片在解碼過程(不包括環路內濾波操作)中被視為圖片。subpic_treated_as_pic_flag[ i ]等於0指定CLVS中的每個經寫碼的圖片的第i個子圖片在解碼過程(不包括環路內濾波操作)中不被視為圖片。當不存在時,subpic_treated_as_pic_flag[ i ]的值被推斷為等於0。
sps_subpic_id_present_flag等於1指定在SPS中存在子圖片ID映射。sps_subpic_id_present_flag等於0指定在SPS中不存在子圖片ID映射。
sps_subpic_id_signalling_present_flag等於1指定在SPS中用訊號通知子圖片ID映射。sps_subpic_id_signalling_present_flag等於0指定不在SPS中用訊號通知子圖片ID映射。當不存在時,sps_subpic_id_signalling_present_flag的值被推斷為等於0。
sps_subpic_id_len_minus1加1指定用於表示語法元素sps_subpic_id[ i ]的位元數量。sps_ subpic_id_len_minus1的值應當在0到15的閉合區間中。
sps_subpic_id[ i ]指定第i個子圖片的子圖片ID。sps_subpic_id[ i ]語法元素的長度是sps_subpic_id_len_minus1+1位元。當不存在時,並且當sps_subpic_id_present_flag等於0時,對於在0到sps_num_subpics_minus1的閉合區間中的每個i,sps_subpic_id[ i ]的值被推斷為等於i。
以下再現了VVC草案7的第7.3.2.4節。
pic_parameter_set_rbsp( ) { | 描述符 |
… | |
pic_width_in_luma_samples | ue(v) |
pic_height_in_luma_samples | ue(v) |
… | |
scaling_window_flag | u(1) |
if( scaling_window_flag ) { | |
scaling_win_left_offset | ue(v) |
scaling_win_right_offset | ue(v) |
scaling_win_top_offset | ue(v) |
scaling_win_bottom_offset | ue(v) |
} | |
… | |
pps_subpic_id_signalling_present_flag | u(1) |
if( pps_subpics_id_signalling_present_flag ) { | |
pps_num_subpics_minus1 | ue(v) |
pps_subpic_id_len_minus1 | ue(v) |
for( i = 0; i <= pps_num_subpic_minus1; i++ ) | |
pps_subpic_id [ i ] | u(v) |
} | |
… |
以上語法表中的語法元素具有來自VVC草案7中的第7.4.3.4節的以下定義:
pic_width_in_luma_samples指定以亮度樣本為單位的引用PPS的每個經解碼的圖片的寬度。pic_width_in_luma_samples不應當等於0,應當為Max(8,MinCbSizeY)的整數倍,並且應當小於或等於pic_width_max_in_luma_samples。
當subpics_present_flag等於1或ref_pic_resampling_enabled_flag等於0時,pic_width_in_luma_samples的值應當等於pic_width_max_in_luma_samples。
pic_height_in_luma_samples指定以亮度樣本為單位的引用PPS的每個經解碼的圖片的高度。pic_height_in_luma_samples不應當等於0並且應當為Max(8,MinCbSizeY)的整數倍,並且應當小於或等於pic_height_max_in_luma_samples。
當subpics_present_flag等於1或ref_pic_resampling_enabled_flag等於0時,pic_height_in_luma_samples的值應當等於pic_height_max_in_luma_samples。
令refPicWidthInLumaSamples和refPicHeightInLumaSamples分別為引用該PPS的當前圖片的參考圖片的pic_width_in_luma_samples和pic_height_in_luma_samples。滿足所有以下條件的位元流一致性要求:
–pic_width_in_luma_samples * 2應當大於或等於refPicWidthInLumaSamples。
–pic_height_in_luma_samples * 2應當大於或等於refPicHeightInLumaSamples。
–pic_width_in_luma_samples應當小於或等於refPicWidthInLumaSamples * 8。
–pic_height_in_luma_samples應當小於或等於refPicHeightInLumaSamples * 8。
scaling_window_flag等於1指定在PPS中存在縮放視窗偏移參數。scaling_window_flag等於0指定在PPS中不存在縮放視窗偏移參數。當ref_pic_resampling_enabled_flag等於0時,scaling_window_flag的值應當等於0。
scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset指定以亮度樣本為單位的應用於圖片大小以進行縮放比率計算的偏移。當scaling_window_flag等於0時,scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset的值被推斷為等於0。
scaling_win_left_offset + scaling_win_right_offset的值應當小於pic_width_in_luma_samples,並且scaling_win_top_offset + scaling_win_bottom_offset的值應當小於pic_height_in_luma_samples。
按如下推導變量PicOutputWidthL和PicOutputHeightL:
PicOutputWidthL = pic_width_in_luma_samples − (scaling_win_right_offset + scaling_win_left_offset) (74)
PicOutputHeightL = pic_height_in_luma_samples − (scaling_win_bottom_offset + scaling_win_top_offset) (75)
pps_subpic_id_signalling_present_flag等於1指定在PPS中用訊號通知子圖片ID映射。pps_subpic_id_signalling_present_flag等於0指定不在PPS中用訊號通知子圖片ID映射。當sps_subpic_id_present_flag為0或者sps_subpic_id_signalling_present_flag等於1時,pps_subpic_id_signalling_present_flag應當等於0。
pps_num_subpics_minus1加1指定引用PPS的經寫碼的圖片中的子圖片的數量。
位元流一致性要求是pps_num_subpic_minus1的值應當等於sps_num_subpics_minus1。
pps_subpic_id_len_minus1加1指定用於表示語法元素pps_subpic_id[ i ]的位元數量。pps_subpic_id_len_minus1的值應當在0到15的閉合區間中。
位元流一致性要求是pps_subpic_id_len_minus1的值對於CLVS中的經寫碼的圖片所引用的所有PPS應當是相同的。
pps_subpic_id[ i ]指定第i個子圖片的子圖片ID。pps_subpic_id[ i ]語法元素的長度是pps_subpic_id_len_minus1+1位元。
以下再現了VVC草案7的第7.3.2.6節。
picture_header_rbsp( ) { | 描述符 |
… | |
if( sps_subpic_id_present_flag && !sps_subpic_id_signalling_flag ) { | |
ph_subpic_id_signalling_present_flag | u(1) |
if( ph_subpics_id_signalling_present_flag ) { | |
ph_subpic_id_len_minus1 | ue(v) |
for( i = 0; i <= sps_num_subpics_minus1; i++ ) | |
ph_subpic_id [ i ] | u(v) |
} | |
} | |
… |
以上語法表中的語法元素具有來自VVC草案7中的第7.4.3.6節的以下定義:
ph_subpic_id_signalling_present_flag等於1指定在PH中用訊號通知子圖片ID映射。ph_subpic_id_signalling_present_flag等於0指定不在PH中用訊號通知子圖片ID映射。
ph_subpic_id_len_minus1加1指定用於表示語法元素ph_subpic_id[ i ]的位元數量。pic_subpic_id_len_minus1的值應當在0到15的閉合區間中。
位元流一致性要求是ph_subpic_id_len_minus1的值對於CLVS中的經寫碼的圖片所引用的所有PH應當是相同的。
ph_subpic_id[ i ]指定第i個子圖片的子圖片ID。ph_subpic_id[ i ]語法元素的長度是ph_subpic_id_len_minus1+1位元。
按如下推導列表SubpicIdList[ i ]:
for( i = 0; i <= sps_num_subpics_minus1; i++ )
SubpicIdList[ i ] = sps_subpic_id_present_flag ? (76)
( sps_subpic_id_signalling_present_flag ? sps_subpic_id[ i ] :
(ph_subpic_id_signalling_present_flag ? ph_subpic_id[ i ] : pps_subpic_id[ i ] ) ) : i
以下再現了VVC草案7的第7.3.7.1節。
slice_header( ) { | 描述符 |
… | |
if( subpics_present_flag ) | |
slice_subpic_id | u(v) |
… |
以上語法表中的語法元素具有來自VVC草案7中的第7.4.8.1節的以下定義:
slice_subpic_id指定包含切片的子圖片的子圖片標識符。如果存在slice_subpic_id,則變量SubPicIdx的值被推導為使得SubpicIdList[ SubPicIdx ]等於slice_subpic_id。否則(不存在slice_subpic_id),變量SubPicIdx被推導為等於0。按如下推導以位元為單位的slice_subpic_id的長度:
–如果sps_subpic_id_signalling_present_flag等於1,則slice_subpic_id的長度等於sps_subpic_id_len_minus1 + 1。
–否則,如果ph_subpic_id_signalling_present_flag等於1,則slice_subpic_id的長度等於ph_subpic_id_len_minus1 + 1。
–否則,如果pps_subpic_id_signalling_present_flag等於1,則slice_subpic_id的長度等於pps_subpic_id_len_minus1 + 1。
–否則,slice_subpic_id的長度等於Ceil( Log2 ( sps_num_subpics_minus1 + 1 ) )。
按如下推導變量SubPicLeftBoundaryPos、SubPicTopBoundaryPos、SubPicRightBoundaryPos和SubPicBotBoundaryPos:
if( subpic_treated_as_pic_flag[ SubPicIdx ] ) {
SubPicLeftBoundaryPos = subpic_ctu_top_left_x[ SubPicIdx ] * CtbSizeY
SubPicRightBoundaryPos = Min( pic_width_max_in_luma_samples − 1, ( subpic_ctu_top_left_x[ SubPicIdx ] + subpic_width_minus1[ SubPicIdx ] + 1 ) * CtbSizeY − 1)
SubPicTopBoundaryPos = subpic_ctu_top_left_y[ SubPicIdx ] *CtbSizeY (116)
SubPicBotBoundaryPos = Min( pic_height_max_in_luma_samples − 1, ( subpic_ctu_top_left_y[ SubPicIdx ] + subpic_height_minus1[ SubPicIdx ] + 1 ) * CtbSizeY − 1)
}
以下再現了VVC草案7的第8.3.2節。
按如下構造參考圖片列表RefPicList[ 0 ]和RefPicList[ 1 ]、參考圖片縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]以及參考圖片縮放標誌RefPicIsScaled[ 0 ]和RefPicIsScaled[ 1 ]:
for( i = 0; i < 2; i++ ) {
for( j = 0, k = 0, pocBase = PicOrderCntVal; j < num_ref_entries[ i ][ RplsIdx[ i ] ]; j++) {
if( !inter_layer_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) {
if( st_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) {
RefPicPocList[ i ][ j ] = pocBase − DeltaPocValSt[ i ][ RplsIdx[ i ] ][ j ]
if(在DPB中存在具有與當前圖片相同的nuh_layer_id並且PicOrderCntVal等於RefPicPocList[ i ][ j ] 的參考圖片picA )
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片" (200)
pocBase = RefPicPocList[ i ][ j ]
} else {
if( !delta_poc_msb_cycle_lt[ i ][ k ] ) {
if(在DPB中存在具有與當前圖片相同的nuh_layer_id
並且 PicOrderCntVal & ( MaxPicOrderCntLsb – 1) 等於 PocLsbLt[ i ][ k ] 的參考picA)
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片"
RefPicLtPocList[ i ][ j ] = PocLsbLt[ i ][ k ]
} else{
if(在DPB中存在具有與當前圖片相同的nuh_layer_id並且PicOrderCntVal等於FullPocLt[ i ][ k ] 的參考picA)
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片"
RefPicLtPocList[ i ][ j ] = FullPocLt[ i ][ k ]
}
k++
}
} else {
layerIdx = DirectDependentLayerIdx[ GeneralLayerIdx[ nuh_layer_id ] ][ ilrp_idx[ i ][ RplsIdx ][ j ] ]
refPicLayerId = vps_layer_id[ layerIdx ]
if(在DPB中存在具有等於refPicLayerId的nuh_layer_id並且具有與當前圖片相同的PicOrderCntVal的參考圖片picA )
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片"
}
fRefWidth被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL
fRefHeight被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputHeightL
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL
RefPicIsScaled[ i ][ j ] = ( RefPicScale[ i ][ j ][ 0 ] != ( 1 << 14 ) ) | | ( RefPicScale[ i ][ j ][ 1 ] != ( 1 << 14 ) )
}
}
本公開內容還描述了針對在VVC草案7的第8.5.3節中描述的解碼器側動作向量細化和VVC草案7的第8.5.6節中的用於幀間區塊的解碼器過程的潛在改進。
上面介紹的VVC草案7的章節可能有若干問題,可以通過本公開內容的技術來解決這些問題。本公開內容描述了對VVC草案7的若干改變。本公開內容的技術可以單獨使用或以各種組合使用。
在來自VVC草案7的示例中,子圖片ID可以在經寫碼層視頻序列(CLVS)內改變。視頻源可以使用相同的子圖片ID來在特定子圖片中串流,使得例如在任何給定時間僅渲染或顯示圖片的一個子圖片。如圖3和5中所示,單獨的源內容可以在三個相應的子圖片中串流。如果當前子圖片被視為圖片,則視頻解碼器300可以例如將其它子圖片視為不存在。在這樣的情況下,當前子圖片應當參考具有相同子圖片ID的參考子圖片。然而,這可能導致參考子圖片和當前子圖片之間的不同解析度,如圖3中所示。在VVC草案7中不存在參考子圖片縮放過程來將參考子圖片縮放到當前子圖片。根據本公開內容的技術,當子圖片ID可以在CLVS內改變並且參考圖片重取樣(RPR)被禁用(即,ref_pic_resampling_enabled_flag被設置等於0)時,視頻編碼器200和視頻解碼器300可以被配置為使用諸如縮放視窗、推導的縮放比率、縮放比率的區間和用於插值濾波的整數位置之類的技術來處理子圖片縮放比率過程。
圖3示出了在參考圖片與當前圖片之間具有相同的對應子圖片ID的具有相同大小和具有不同大小的子圖片大小的示例。在圖3中,當前圖片136包括具有ID 1、2和3的子圖片,並且參考圖片138也包括具有ID 1、2和3的子圖片。在圖3的示例中,當前圖片136中具有ID 1和2的子圖片具有與參考圖片138中具有ID 1和2的子圖片不同的大小,但是當前圖片136中具有ID 3的子圖片具有與參考圖片138中具有ID 3的子圖片相同的大小。
根據本公開內容的技術,視頻編碼器200和視頻解碼器300可以被配置為利用基於子圖片的縮放視窗。在VVC草案7中,當參考圖片大小和當前圖片大小不同時,使用參考圖片縮放過程。VVC草案7第8.3.2節描述了該過程,如下:
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL
其中fRefWidth和fRefHeight分別設置為等於亮度樣本中的參考圖片RefPicList[i][j]的PicOutputWidthL和PicOutputHeightL。PicOutputWidthL和PicOutputHeightL是縮放視窗寬度和高度,如圖4中所示,並且從圖片寬度和高度裁剪,如下所示:
PicOutputWidthL = pic_width_in_luma_samples − ( scaling_win_right_offset + scaling_win_left_offset )
PicOutputHeightL = pic_height_in_luma_samples − ( scaling_win_bottom_offset + scaling_win_top_offset )
圖4示出了在參考圖片和當前圖片內部的縮放視窗的示例。視頻編碼器200和視頻解碼器300可以基於參考縮放視窗142和當前縮放視窗144來確定縮放比率,而不是基於參考圖片和當前圖片的大小來確定縮放因子。縮放視窗可以用於避免在參考圖片縮放過程中由於在參考圖片和當前圖片的時間實例之間縮放或移位而導致的位置失准。
視頻編碼器200和視頻解碼器300可以被配置為將圖4的相同的參考圖片縮放過程應用於具有相同ID但不同大小的子圖片。視頻編碼器200和視頻解碼器300可以在當前子圖片被視為圖片的場景中(例如,當僅在解碼或顯示圖片的一個子圖片時)對該子圖片應用縮放視窗。根據本公開內容的技術,視頻編碼器200和視頻解碼器300可以被配置為執行以下技術,其將被描述為相對於VVC草案7的修改:
˙ 對於每個子圖片,視頻編碼器200和視頻解碼器300可以對縮放視窗標誌(例如,pps_scaling_window_flag[i])進行寫碼。如果第i個標誌pps_scaling_window_flag[ i ]等於1,則針對第i個子圖片用訊號通知縮放視窗偏移(pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ] )。
˙ 視頻編碼器200和視頻解碼器300可以被配置為在用訊號通知縮放視窗參數組之前用訊號通知PPS中的CLVS中的子圖片的數量。
˙ 視頻編碼器200和視頻解碼器300可以被配置為:如果以下條件中的至少一個條件為真,則推斷pps_scaling_window_flag[i]的值為0,以避免意外激活參考圖片縮放過程:
o ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(例如,RPR功能和子圖片功能都被禁用);
o ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(例如,RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序);
o ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(例如,RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序);
o subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(例如,子圖片功能被啟用,並且第i個子圖片不被視為圖片);或者
o ref_pic_resampling_enabled_flag等於1並且subpics_present_flag等於1(例如,RPR功能和子圖片功能不能被同時啟用)。
˙ pps_scaling_win_left_offset[ i ] + pps_scaling_win_right_offset[ i ] <= subpic_width_in_luma_samples[ i ],其中,subpic_width_in_luma_samples[ i ]是第i個子圖片的寬度。
˙ pps_scaling_win_top_offset[ i ] + pps_scaling_win_bottom_offset[ i ] <= subpic_height_in_luma_samples[ i ],其中,subpic_height_in_luma_samples[ i ]是第i個子圖片的高度。
˙ 基於子圖片的縮放視窗參數在PPS(例如,pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ])和PH(例如,ph_scaling_win_left_offset[ i ]、ph_scaling_win_right_offset[ i ]、ph_scaling_win_top_offset[ i ]和ph_scaling_win_bottom_offset[ i ])兩者中用訊號通知。基於PH中的縮放視窗標誌(即,ph_scaling_window_flag[ i ]),PH中的參數可以覆蓋PPS中的參數,例如,scaling_win_left_offset[ i ] = (ph_scaling_window_flag[ i ]) ? ph_scaling_win_left_offset[ i ] : pps_scaling_win_left_offset[ i ]。
o 在一些示例中,可能僅在PPS中用訊號通知基於子圖片的縮放視窗參數。
o 在一些示例中,可能僅在PH中用訊號通知基於子圖片的縮放視窗參數。
˙ 視頻編碼器200和視頻解碼器300可以被配置為通過利用第i個縮放視窗偏移裁剪第i個子圖片來推導第i個子圖片的縮放視窗寬度和高度,如下:
PicOutputWidthL[ i ] = subpic_width_in_luma_samples[ i ] − ( scaling_win_right_offset[ i ] + scaling_win_left_offset[ i ] )
PicOutputHeightL[ i ] = subpic_height_in_luma_samples[ i ] − ( scaling_win_bottom_offset[ i ] + scaling_win_top_offset[ i ] )
以下示出了對在本公開內容中描述的VVC草案7中的第7.3.2.4節的修改。在下表中示出了對VVC草案7的語法改變。標簽“<ADD>”示出添加的開始,並且標簽“</ADD>”示出那些添加的結束。標簽“<DEL>”示出刪除(即,文本移除)的開始,並且標簽“</DEL>”示出那些刪除的結束。
pic_parameter_set_rbsp( ) { | 描述符 |
… | |
pic_width_in_luma_samples | ue(v) |
pic_height_in_luma_samples | ue(v) |
… | |
<DEL>scaling_window_flag | u(1) |
if(scaling_window_flag ) { | |
scaling_win_left_offset | ue(v) |
scaling_win_right_offset | ue(v) |
scaling_win_top_offset | ue(v) |
scaling_win_bottom_offset | ue(v) |
} | </DEL> |
<ADD>pps_num_subpics_minus1 | ue(v) |
for( i = 0; i <= pps_num_subpics_minus1; i++ ) { | |
pps_scaling_window_flag [ i ] | u(1) |
if( pps_scaling_window_flag[ i ] ) { | |
pps_scaling_win_left_offset [ i ] | ue(v) |
pps_scaling_win_right_offset [ i ] | ue(v) |
pps_scaling_win_top_offset [ i ] | ue(v) |
pps_scaling_win_bottom_offset [ i ] | ue(v) |
} | |
} | </ADD> |
… | |
pps_subpic_id_signalling_present_flag | u(1) |
if( pps_subpics_id_signalling_present_flag ) { | |
<DEL>pps_num_subpics_minus1 </DEL> | <DEL> ue(v) </DEL> |
pps_subpic_id_len_minus1 | ue(v) |
for( i = 0; i <= pps_num_subpic_minus1; i++ ) | |
pps_subpic_id [ i ] | u(v) |
} | |
… |
以下示出了對VVC草案7中的第7.4.3.4節的修改。
pic_width_in_luma_samples指定以亮度樣本為單位的引用PPS的每個經解碼的圖片的寬度。pic_width_in_luma_samples不應當等於0,應當為Max(8,MinCbSizeY)的整數倍,並且應當小於或等於pic_width_max_in_luma_samples。
當subpics_present_flag等於1或ref_pic_resampling_enabled_flag等於0時,pic_width_in_luma_samples的值應當等於pic_width_max_in_luma_samples。
pic_height_in_luma_samples指定以亮度樣本為單位的引用PPS的每個經解碼的圖片的高度。pic_height_in_luma_samples不應當等於0並且應當為Max(8,MinCbSizeY)的整數倍,並且應當小於或等於pic_height_max_in_luma_samples。
當subpics_present_flag等於1或ref_pic_resampling_enabled_flag等於0時,pic_height_in_luma_samples的值應當等於pic_height_max_in_luma_samples。
<DEL>
scaling_window_flag等於1指定在PPS中存在縮放視窗偏移參數。scaling_window_flag等於0指定在PPS中不存在縮放視窗偏移參數。當ref_pic_resampling_enabled_flag等於0時,scaling_window_flag的值應當等於0。
scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset指定以亮度樣本為單位的應用於圖片大小以進行縮放比率計算的偏移。當scaling_window_flag等於0時,scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset的值被推斷為等於0。
scaling_win_left_offset + scaling_win_right_offset的值應當小於pic_width_in_luma_samples,並且scaling_win_top_offset + scaling_win_bottom_offset的值應當小於pic_height_in_luma_samples。
</DEL>
<ADD>
pps_num_subpics_minus1加1指定引用PPS的經寫碼的圖片中的子圖片的數量。
位元流一致性要求是pps_num_subpic_minus1的值應當等於sps_num_subpics_minus1。
pps_scaling_window_flag[ i ]等於1指定在PPS中存在用於第i個子圖片的縮放視窗偏移參數。pps_scaling_window_flag[ i ]等於0指定在PPS中不存在用於第i個子圖片的縮放視窗偏移參數。
如果下列條件之一為真,則pps_scaling_window_flag[ i ]的值應當被推斷為0:
–ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0
–ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0
–ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1
–subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0
–ref_pic_resampling_enabled_flag等於1並且subpics_present_flag等於1
pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ]指定以亮度樣本為單位的應用於圖片大小以進行第i個子圖片的縮放比率計算的偏移。當pps_scaling_window_flag[ i ]等於0時,pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ]的值被推斷為等於0。
按如下推導第i個子圖片的寬度和高度:
subpic_width_in_luma_samples[ i ] = Min( pic_width_in_luma_samples, ( subpic_ctu_top_left_x[ i ] + subpic_width_minus1[ i ] + 1 ) * CtbSizeY ) – subpic_ctu_top_left_x[ i ] * CtbSizeY
subpic_height_in_luma_samples[ i ] = Min( pic_height_in_luma_samples, ( subpic_ctu_top_left_y[ i ] + subpic_height_minus1[ i ] + 1 ) * CtbSizeY ) – subpic_ctu_top_left_y[ i ] * CtbSizeY
pps_scaling_win_left_offset[ i ] + pps_scaling_win_right_offset[ i ]的值應當小於subpic_width_in_luma_samples[ i ],並且pps_scaling_win_top_offset[ i ] + pps_scaling_win_bottom_offset[ i ]的值應當小於subpic_height_in_luma_samples[ i ]。
</ADD>
以下示出了對VVC草案7中的第7.3.2.6節的修改。
Picture_header_rbsp( ) { | 描述符 |
… | |
<ADD>If( (!ref_pic_resampling_enabled_flag && pps_subpic_id_signalling_present_flag && subpic_treated_as_pic_flag[ i ] ) || (ref_pic_resampling_enabled_flag && !subpics_present_flag) ) { | |
for( i = 0; i <= sps_num_subpics_minus1; i++ ) { | |
ph_scaling_window_flag [ i ] | u(1) |
if( ph_scaling_window_flag[ i ] ) { | |
ph_scaling_win_left_offset [ i ] | ue(v) |
ph_scaling_win_right_offset [ i ] | ue(v) |
ph_scaling_win_top_offset [ i ] | ue(v) |
ph_scaling_win_bottom_offset [ i ] | ue(v) |
} | |
} | |
} | </ADD> |
… |
以下示出了對VVC草案7中的第7.4.3.6節的修改。
<ADD>ph_scaling_window_flag[ i ]等於1指定在PH中存在用於第i個子圖片的縮放視窗偏移參數。ph_scaling_window_flag[ i ]等於0指定在PH中不存在用於第i個子圖片的縮放視窗偏移參數。如果不存在,則ph_scaling_window_flag[ i ]的值應當被推斷為0。
ph_scaling_win_left_offset[ i ]、ph_scaling_win_right_offset[ i ]、ph_scaling_win_top_offset[ i ]和ph_scaling_win_bottom_offset[ i ]指定以亮度樣本為單位的應用於第i個子圖片的圖片大小以進行縮放比率計算的偏移。當ph_scaling_window_flag[ i ]等於0時,ph_scaling_win_left_offset[ i ]、ph_scaling_win_right_offset[ i ]、ph_scaling_win_top_offset[ i ]和ph_scaling_win_bottom_offset[ i ]的值被推斷為等於0。
ph_scaling_win_left_offset[ i ] + ph_scaling_win_right_offset[ i ]的值應當小於subpic_width_in_luma_samples[ i ],並且ph_scaling_win_top_offset[ i ] + ph_scaling_win_bottom_offset[ i ]的值應當小於subpic_height_in_luma_samples[ i ]。
按如下推導變量scaling_win_left_offset[ i ]、scaling_win_right_offset[ i ]、scaling_win_top_offset[ i ]和scaling_win_bottom_offset[ i ]:
scaling_win_left_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_left_offset[ i ] : pps_scaling_win_left_offset[ i ]
scaling_win_right_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_right_offset[ i ] : pps_scaling_win_ right_offset[ i ]
scaling_win_top_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_ top_offset[ i ] : pps_scaling_win_ top_offset[ i ]
scaling_win_bottom_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_bottom_offset[ i ] : pps_scaling_win_ bottom_offset[ i ]
按如下推導變量PicOutputWidthL[ i ]和PicOutputHeightL[ i ]:
PicOutputWidthL[ i ] = subpic_weight_in_luma_samples[ i ] −
(scaling_win_right_offset[ i ] + scaling_win_left_offset[ i ] )
PicOutputHeightL[ i ] = subpic_height_in_luma_samples[ i ] −
(scaling_win_bottom_offset[ i ] + scaling_win_top_offset[ i ] ) </ADD>
視頻解碼器300可以被配置為基於以下示例過程來推斷pps_scaling_window_flag[ i ]的值為零,該示例過程可以僅包括一個條件或至少兩個條件,如下所示:
˙ ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(RPR功能和子圖片功能都被禁用)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片)
˙ ref_pic_resampling_enabled_flag等於1並且subpics_present_flag等於1(RPR功能和子圖片功能不能被同時啟用)
˙ ref_pic_resampling_enabled_flag等於1,sps_subpic_id_present_flag等於1,並且sps_subpic_id_signalling_present_flag等於0(RPR功能和子圖片ID重新排序功能不能被同時啟用)
在本公開內容的一些示例中,視頻解碼器300可以僅使用以下四個條件來將pps_scaling_window_flag[ i ]的值推斷為零:
˙ 如果以下條件中的至少一個條件為真,則pps_scaling_window_flag[i]的值應當被推斷為0,以避免意外激活參考圖片縮放過程:
o ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(RPR功能和子圖片功能都被禁用)
o ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
o ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
o subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片)
注意,該示例也可以應用於子圖片ID在CLVS內可能改變並且參考圖片重取樣(RPR)被啟用(即,ref_pic_resampling_enabled_flag被設置為等於1)的情況。[01]
在一些示例中,可以僅使用以下五個條件來將pps_scaling_window_flag[ i ]的值推斷為零:
˙ 如果以下條件中的至少一個條件為真,則pps_scaling_window_flag[i]的值應當被推斷為0,以避免意外激活參考圖片縮放過程:
o ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(RPR功能和子圖片功能都被禁用)
o ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
o ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
o subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片)
o ref_pic_resampling_enabled_flag等於1,sps_subpic_id_present_flag等於1,並且sps_subpic_id_signalling_present_flag等於0(RPR功能和子圖片ID重新排序功能不能被同時啟用)
˙ 注意,該示例也可以應用於子圖片ID在CLVS內可能不改變並且參考圖片重取樣(RPR)被啟用(即,ref_pic_resampling_enabled_flag被設置為等於1)的情況。
在一些示例中,視頻編碼器200可以以上述方式在PPS中用訊號通知原始圖片縮放視窗參數(scaling_win_left_offset[ i ]、scaling_win_right_offset[ i ]、scaling_win_top_offset[ i ]和 scaling_win_bottom_offset[ i ])以及基於子圖片的縮放視窗參數(pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]、pps_scaling_win_bottom_offset[ i ]、ph_scaling_win_left_offset[ i ]、ph_scaling_win_right_offset[ i ]、ph_scaling_win_top_offset[ i ]和ph_scaling_win_bottom_offset[ i ])。原始圖片縮放視窗參數可以用於參考圖片與當前圖片之間的縮放過程,並且基於子圖片的縮放視窗用於參考子圖片和當前子圖片的縮放過程。當子圖片ID在CLVS內可能改變並且參考圖片重取樣(RPR)被啟用(即,ref_pic_resampling_enabled_flag被設置為等於1)時,可以應用這種設計。語法可以如下:
pic_parameter_set_rbsp( ) { | 描述符 |
… | |
scaling_window_flag | u(1) |
if( scaling_window_flag ) { | |
scaling_win_left_offset | ue(v) |
scaling_win_right_offset | ue(v) |
scaling_win_top_offset | ue(v) |
scaling_win_bottom_offset | ue(v) |
} | |
pps_num_subpics_minus1 | ue(v) |
for( i = 0; i <= pps_num_subpics_minus1; i++ ) { | |
pps_scaling_window_flag [ i ] | u(1) |
if( pps_scaling_window_flag[ i ] ) { | |
pps_scaling_win_left_offset [ i ] | ue(v) |
pps_scaling_win_right_offset [ i ] | ue(v) |
pps_scaling_win_top_offset [ i ] | ue(v) |
pps_scaling_win_bottom_offset [ i ] | ue(v) |
} | |
} |
視頻編碼器200和視頻解碼器300可以被配置為執行參考子圖片縮放比率的推導。如圖5中所示,通過在VVC草案7的設計中添加子圖片索引,可以將參考圖片的縮放比率的相同推導應用於本文描述的子圖片設計:
fRefWidth和fRefHeight分別被定義為亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL[ RefSubPicIdx ]和PicOutputHeightL[ RefSubPicIdx ],其中,RefSubPicIdx被推導為使得參考圖片RefPicList[ i ][ j ]的SubpicIdList[ RefSubPicIdx ]等於當前切片的slice_subpic_id。然後按如下推導縮放比率:
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL[ SubPicIdx ] >> 1 ) ) / PicOutputWidthL[ SubPicIdx ]
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL[ SubPicIdx ] >> 1 ) ) / PicOutputHeightL[ SubPicIdx ]
其中,SubPicIdx被推導為使得當前圖片的SubpicIdList[ SubPicIdx ]等於當前切片的slice_subpic_id。
圖5示出了針對參考子圖片1的具有fRefWidth和fRefHeight的縮放視窗150以及針對當前子圖片的具有PicOutputWidthL[1]和PicOutputHeightL[1]的縮放視窗152。RefSubPicIdx和SubPicIdx是子圖片佈局索引,並且針對使用ID=1的子圖片分別等於0和1。
視頻解碼器300可以被配置為:如果以下條件中的至少一個條件為真,則將縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]的值推斷為等於1<<14,以避免意外激活參考圖片縮放過程:
˙ ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(RPR功能和子圖片功能都被禁用)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片)
˙ ref_pic_resampling_enabled_flag等於1並且subpics_present_flag等於1(RPR功能和子圖片功能不能被同時啟用)
在下表中示出了對VVC草案7的語法改變。標簽“<ADD>”示出添加的開始,並且標簽“</ADD>”示出那些添加的結束。標簽“<DEL>”示出刪除(即,文本移除)的開始,並且標簽“</DEL>”示出那些刪除的結束。按如下構造參考圖片列表RefPicList[ 0 ]和RefPicList[ 1 ]、參考圖片縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]以及參考圖片縮放標誌RefPicIsScaled[ 0 ]和RefPicIsScaled[ 1 ]:
for( i = 0; i < 2; i++ ) {
for( j = 0, k = 0, pocBase = PicOrderCntVal; j < num_ref_entries[ i ][ RplsIdx[ i ] ]; j++) {
if( !inter_layer_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) {
if( st_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) {
RefPicPocList[ i ][ j ] = pocBase − DeltaPocValSt[ i ][ RplsIdx[ i ] ][ j ]
if(在DPB中存在具有與當前圖片相同的nuh_layer_id並且PicOrderCntVal等於RefPicPocList[ i ][ j ] 的參考圖片picA)
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片" (200)
pocBase = RefPicPocList[ i ][ j ]
} else {
if( !delta_poc_msb_cycle_lt[ i ][ k ] ) {
if(在DPB中存在具有與當前圖片相同的nuh_layer_id並且
PicOrderCntVal & ( MaxPicOrderCntLsb − 1 等於 PocLsbLt[ i ][ k ]的參考picA) PicOrderCntVal & ( MaxPicOrderCntLsb − 1 ) equal to PocLsbLt[ i ][ k ] )
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片"
RefPicLtPocList[ i ][ j ] = PocLsbLt[ i ][ k ]
} else{
if(在DPB中存在具有與當前圖片相同的nuh_layer_id並且PicOrderCntVal等於FullPocLt[ i ][ k ] 的參考picA )
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片"
RefPicLtPocList[ i ][ j ] = FullPocLt[ i ][ k ]
}
k++
}
} else {
layerIdx = DirectDependentLayerIdx[ GeneralLayerIdx[ nuh_layer_id ] ][ ilrp_idx[ i ][ RplsIdx ][ j ] ]
refPicLayerId = vps_layer_id[ layerIdx ]
if(在DPB中存在具有等於refPicLayerId的nuh_layer_id並且具有與當前圖片相同的PicOrderCntVal的參考圖片picA )
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "沒有參考圖片"
}
<ADD>if( ( !ref_pic_resampling_enabled_flag && pps_subpic_id_signalling_present_flag &&
subpic_treated_as_pic_flag[ i ] ) ||
( ref_pic_resampling_enabled_flag && !subpics_present_flag ) )
{
RefSubpicIdList[ k ]被設置為等於在參考圖片RefPicList[ i ][ j ]中推導的子圖片ID列表SubpicIdList[ k ],並且RefSubPicIdx被推導為使得RefSubpicIdList[ RefSubPicIdx ]等於當前圖片的 slice_subpic_id
fRefWidth被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL[ RefSubPicIdx ]
fRefHeight被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputHeightL[ RefSubPicIdx ]
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL[ SubPicIdx ] >> 1 ) ) / PicOutputWidthL[ SubPicIdx ]
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL[ SubPicIdx ] >> 1 ) ) / PicOutputHeightL[ SubPicIdx ]
}
else
{
RefPicScale[ i ][ j ][ 0 ] = 1 << 14
RefPicScale[ i ][ j ][ 1 ] = 1 << 14
}</ADD>
<DEL>fRefWidth被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL
fRefHeight被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputHeightL
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL</DEL>
RefPicIsScaled[ i ][ j ] = ( RefPicScale[ i ][ j ][ 0 ] != ( 1 << 14 ) ) | |
( RefPicScale[ i ][ j ][ 1 ] != ( 1 << 14 ) )
}
}
根據另一示例,可以使用僅一個條件或至少兩個條件(如下所示)來將縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]的值推斷為零:
˙ ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(RPR功能和子圖片功能都被禁用)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片);
˙ ref_pic_resampling_enabled_flag等於1並且subpics_present_flag等於1(RPR功能和子圖片功能不能被同時啟用)。
˙ ref_pic_resampling_enabled_flag等於1,sps_subpic_id_present_flag等於1,並且sps_subpic_id_signalling_present_flag等於0(RPR功能和子圖片ID重新排序功能不能被同時啟用)
在本公開內容的一些示例中,可以使用僅前四個條件來將縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]的值推斷為零:
根據本公開內容的一個示例,如果以下條件中的至少一個條件為真,則縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]可以被推斷為等於1<<14,以避免意外激活參考圖片縮放過程:
˙ ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(RPR功能和子圖片功能都被禁用)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片)
在本公開內容的一些示例中,可以使用僅前四個條件和第六個條件來將縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]的值推斷為零:
在本公開內容的一些示例中,如果以下條件中的至少一個條件為真,則縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]可以被推斷為等於1<<14,以避免意外激活參考圖片縮放過程:
˙ ref_pic_resampling_enabled_flag等於0並且subpics_present_flag等於0(RPR功能和子圖片功能都被禁用)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片)
˙ ref_pic_resampling_enabled_flag等於1,sps_subpic_id_present_flag等於1,並且sps_subpic_id_signalling_present_flag等於0(RPR功能和子圖片ID重新排序功能不能被同時啟用)
視頻編碼器200和視頻解碼器300可以被配置為利用一系列的參考子圖片縮放比率。在VVC草案7中,該系列的參考圖片縮放比率應當在包含1/8到2的區間內,並且存在將該區間應用於參考圖片和當前圖片之間的圖片寬度和高度的位元流一致性約束,如下:
令refPicWidthInLumaSamples和refPicHeightInLumaSamples分別為引用該PPS的當前圖片的參考圖片的pic_width_in_luma_samples和pic_height_in_luma_samples。可能存在滿足所有以下條件的位元流一致性要求:
–pic_width_in_luma_samples * 2應當大於或等於refPicWidthInLumaSamples。
–pic_height_in_luma_samples * 2應當大於或等於refPicHeightInLumaSamples。
–pic_width_in_luma_samples應當小於或等於refPicWidthInLumaSamples * 8。
–pic_height_in_luma_samples應當小於或等於refPicHeightInLumaSamples * 8。
由於參考圖片縮放比率是通過參考子圖片和當前子圖片中的每個子圖片ID的縮放視窗寬度和高度(即,PicOutputWidthL[ SubPicIdx ]、PicOutputHeightL[ SubPicIdx ]、PicOutputWidthL[ RefSubPicIdx ]和PicOutputHeightL[ RefSubPicIdx ])推導出的,因此如果不對PicOutputWidthL[ m ]和PicOutputHeightL[ m ]的值進行限制,則縮放比率可能在區間之外,其中RefSubPicIdx被推導為使得參考圖片的SubpicIdList[ RefSubPicIdx ]等於引用當前圖片的當前切片標頭的slice_subpic_id。因此,視頻編碼器200和視頻解碼器300可以被配置為將該區間應用於參考圖片與當前圖片之間的基於子圖片的縮放視窗寬度和高度,如下:
RefSubPicIdx被推導為使得參考圖片的SubpicIdList[ RefSubPicIdx ]等於引用當前圖片的當前切片標頭的slice_subpic_id。要求位元流一致性應當滿足所有的以下條件:
–PicOutputWidthL[SubPicIdx]*A應當大於或等於PicOutputWidthL[RefSubPicIdx]。
–PicOutputHeightL[SubPicIdx]*A應當大於或等於PicOutputHeightL[RefSubPicIdx]。
–PicOutputWidthL[SubPicIdx]應當小於或等於PicOutputWidthL[RefSubPicIdx]*B。
–PicOutputHeightL[SubPicIdx]應當小於或等於PicOutputHeightL[RefSubPicIdx]*B。
其中,參數A和B可以是任何非零正數,並且B>A。一個示例是A=2,並且B=8。
圖6示出了由來自當前寫碼區塊164的動作向量162指出的參考區塊160的示例。當前圖片166包括具有ID 1、2和3的子圖片,並且參考圖片168也包括具有ID 1、2和3的子圖片。視頻編碼器200和視頻解碼器300可以被配置為執行用於內插濾波的整數位置推導。如圖6中所示,子圖片可以使用相同的子圖片ID 1來串流相同的視頻源。如果當前子圖片被視為圖片,則當前子圖片ID 1中的寫碼區塊可以參考參考子圖片ID 1中的區塊以獲得用於預測的相同源內容,如圖6中所示。然而,VVC草案7僅支援當前子圖片ID 1中的寫碼區塊參考參考子圖片ID 2中的區塊。
本公開內容還描述了用於將子圖片索引添加到在於2019年12月20日提交的美國臨時專利申請62/951,709中描述的縮放視窗偏移的技術,其可以對齊上述基於子圖片的縮放視窗。所描述的改變被總結如下:
˙ 考慮從當前子圖片的縮放視窗到參考子圖片的縮放視窗的左位移,一般公式為refPos = curPos – ( curSubPicLeftBoundaryPos + cur_scaling_win_left_offset[ SubPicIdx ] ) + ( refSubPicLeftBoundaryPos + ref_scaling_win_left_offset[ RefSubPicIdx ] )
o refPos:參考子圖片中的縮放視窗的左上角位置
o ocurPos:當前子圖片中的縮放視窗的左上角位置
o curSubPicLeftBoundaryPos:當前子圖片中的邊界左側位置,即,在當前子圖片中推導的SubPicLeftBoundaryPos
o refSubPicLeftBoundaryPos:參考子圖片中的邊界左側位置,即,在參考子圖片中推導的SubPicLeftBoundaryPos
o cur_scaling_win_left_offset[ SubPicIdx ]:當前子圖片的scaling_win_left_offset[ SubPicIdx ]
o ref_scaling_win_left_offset[ RefSubPicIdx ]:參考子圖片的scaling_win_left_offset[ RefSubPicIdx ]
˙ 對於從當前子圖片中的縮放視窗到參考子圖片中的縮放視窗的頂部位移是相同的。
在下表中示出了對VVC草案7的語法改變。標簽“<ADD>”示出添加的開始,並且標簽“</ADD>”示出那些添加的結束。標簽“<DEL>”示出刪除(即,文本移除)的開始,並且標簽“</DEL>”示出那些刪除的結束。
<DEL>變量fRefLeftOffset被設置為等於(scaling_win_left_offset << 10),其中,scaling_win_left_offset是用於參考圖片的scaling_win_left_offset。
變量fRefTopOffset被設置為等於(scaling_win_top_offset << 10 ),其中,scaling_win_top_offset是用於參考圖片的scaling_win_top_offset。</DEL>
<ADD>變量leftBoundaryOffset被設置為等於scaling_win_left_offset[ SubPicIdx ],topBoundaryOffset被設置為等於scaling_win_top_offset[ SubPicIdx ],refSubPicLeftBoundaryPos和 refSubPicTopBoundaryPos被設置為等於0。
如果subpic_treated_as_pic_flag[ SubPicIdx ]等於1,則以下適用:
leftBoundaryOffset += SubPicLeftBoundaryPos
topBoundaryOffset += SubPicTopBoundaryPos
RefSubPicIdx被推導為使得參考圖片的SubpicIdList[ RefSubPicIdx ]等於slice_subpic_id。
refSubPicLeftBoundaryPos = subpic_ctu_top_left_x[ RefSubPicIdx ] * CtbSizeY
refSubPicTopBoundaryPos = subpic_ctu_top_left_y[ RefSubPicIdx ] *CtbSizeY
變量fRefLeftOffset被設置為等於(( scaling_win_left_offset[ RefSubPicIdx ] + refSubPicLeftBoundaryPos) << 10 ),其中,scaling_win_left_offset[ i ]是用於參考圖片的scaling_win_left_offset[ i ]。
變量fRefTopOffset被設置為等於(( scaling_win_top_offset[ RefSubPicIdx ] + refSubPicTopBoundaryPos) << 10 ),其中,scaling_win_top_offset[ i ]是用於參考圖片的scaling_win_top_offset[ i ]。</ADD>
…
–如果cIdx等於0,則以下適用:
–對於預測亮度樣本數組predSamplesLX內的每個亮度樣本位置( xL
= 0..sbWidth − 1 + brdExtSize, yL
= 0..sbHeight − 1 + brdExtSize ),按如下推導對應的預測亮度樣本值predSamplesLX[ xL
][ yL
]:
–令( refxSbL
, refySbL
)和( refxL
, refyL
)為由以1/16樣本單位給出的動作向量( refMvLX[0], refMvLX[1] ) 指向的亮度位置。按如下推導變量refxSbL
、refxL
、refySbL
和refyL
:
refxSbL
= ( ( ( xSb − <ADD>leftBoundaryOffset</ADD> ) << 4 ) + refMvLX[ 0 ] ) * scalingRatio[ 0 ] (937)
refxL
= ( ( Sign( refxSbL
) * ( ( Abs( refxSbL
) + 128 ) >> 8 )
+ xL
* ( ( scalingRatio[ 0 ] + 8 ) >> 4 ) ) + fRefLeftOffset + 32 ) >> 6 (938)
refySbL
= ( ( ( ySb − <ADD>topBoundaryOffset</ADD> ) << 4 ) + refMvLX[ 1 ] ) * scalingRatio[ 1 ] (939)
refyL
= ( ( Sign( refySbL
) * ( ( Abs( refySbL
) + 128 ) >> 8 ) + yL *
( ( scalingRatio[ 1 ] + 8 ) >> 4 ) ) + fRefTopOffset + 32 ) >> 6 (940)
在實現上述技術時,視頻解碼器300可以被配置為:確定當前圖片的第一子圖片具有相關聯的縮放參數(例如,pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ]);響應於確定當前圖片的第一子圖片具有相關聯的縮放參數,接收用於當前圖片的第一子圖片的相關聯的縮放參數;確定用於當前圖片的第一子圖片的區塊的動作資訊,該動作資訊標識參考圖片的子圖片;在參考圖片的子圖片中定位用於當前圖片的第一子圖片的區塊的預測區塊;以及基於用於當前圖片的第一子圖片的相關聯的縮放參數來對預測區塊進行縮放。
根據本公開內容的技術,一種方法包括:確定視頻資料的子圖片是否被視為圖片;基於子圖片被視為圖片來將子圖片縮放為圖片;基於子圖片不被視為圖片來確定子圖片縮放標誌;以及基於縮放或子圖片縮放標誌來對子圖片進行寫碼。
根據本公開內容的技術,一種方法包括:確定視頻資料的子圖片是否被視為圖片;基於子圖片被視為圖片來確定第一縮放比率;基於子圖片不被視為圖片來確定第二縮放比率;以及基於第一縮放比率或第二縮放比率來對子圖片進行寫碼。
根據本公開內容的技術,一種方法包括:將PicOutputWidthL * A限制為大於或等於refPicOutputWidthL;將PicOutputHeightL * A 限制為大於或等於refPicOutputHeightL;將PicOutputWidthL限制為小於或等於refPicOutputWidthL * B;限制PicOutputHeightL應當小於或等於refPicOutputHeightL * B;以及基於限制來對視頻資料進行寫碼,其中,A是非零正數,B是非零正數,並且B>A。
根據本公開內容的技術,一種方法包括:將PicOutputWidthL * A限制為大於或等於refPicOutputWidthL;將PicOutputHeightL * A 限制為大於或等於refPicOutputHeightL;將PicOutputWidthL限制為小於或等於refPicOutputWidthL * B;限制PicOutputHeightL應當小於或等於refPicOutputHeightL * B;以及基於限制來對視頻資料進行寫碼,其中,A是非零正數,B是非零正數,並且B>A。
根據本公開內容的技術,一種方法包括:確定從視頻資料的當前子圖片中的縮放視窗到視頻資料中的參考子圖片中的縮放視窗的左位移;確定從當前子圖片中的縮放視窗到參考子圖片中的縮放視窗的頂部位移;以及基於左位移和頂部位移來對當前子圖片進行寫碼。
根據本公開內容的技術,一種設備包括被配置為儲存視頻資料的記憶體,所述記憶體耦合到一個或多個處理器,所述一個或多個處理器在電路中實現並且被配置為執行本公開內容的技術中的任何技術。
根據本公開內容的技術,一種設備包括用於執行本公開內容的技術中的任何技術的一個或多個構件。
根據本公開內容的技術,一種計算機可讀儲存媒體被編碼有指令,所述指令在被執行時使得可程式處理器執行本公開內容的技術中的任何技術。
視頻編碼器200表示被配置為對視頻資料進行編碼的設備的示例,該設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:確定視頻資料的子圖片是否被視為圖片;基於子圖片被視為圖片來將子圖片縮放為圖片;基於子圖片不被視為圖片來確定子圖片縮放標誌;以及基於縮放或子圖片縮放標誌來對子圖片進行編碼。
視頻編碼器200還表示被配置為對視頻資料進行編碼的設備的示例,該設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:確定視頻資料的子圖片是否被視為圖片;基於子圖片被視為圖片來確定第一縮放比率;基於子圖片不被視為圖片來確定第二縮放比率;以及基於第一縮放比率或第二縮放比率來對子圖片進行編碼。
視頻編碼器200還表示被配置為對視頻資料進行編碼的設備的示例,該設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:將PicOutputWidthL * A限制為大於或等於refPicOutputWidthL;將PicOutputHeightL * A 限制為大於或等於refPicOutputHeightL;將PicOutputWidthL限制為小於或等於refPicOutputWidthL * B;限制PicOutputHeightL應當小於或等於refPicOutputHeightL * B;以及基於限制來對視頻資料進行編碼,其中,A是非零正數,B是非零正數,並且B>A。
視頻編碼器200還表示被配置為對視頻資料進行編碼的設備的示例,該設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:將PicOutputWidthL * A限制為大於或等於refPicOutputWidthL;將PicOutputHeightL * A 限制為大於或等於refPicOutputHeightL;將PicOutputWidthL限制為小於或等於refPicOutputWidthL * B;限制PicOutputHeightL應當小於或等於refPicOutputHeightL * B;以及基於限制來對視頻資料進行編碼,其中,A是非零正數,B是非零正數,並且B>A。
視頻編碼器200還表示被配置為對視頻資料進行編碼的設備的示例,該設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:確定從視頻資料的當前子圖片中的縮放視窗到視頻資料中的參考子圖片中的縮放視窗的左位移;確定從當前子圖片中的縮放視窗到參考子圖片中的縮放視窗的頂部位移;以及基於左位移和頂部位移來對當前子圖片進行編碼。
以這種方式,視頻解碼器300表示視頻解碼設備的示例,該視頻解碼設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:確定視頻資料的子圖片是否被視為圖片;基於子圖片被視為圖片來將子圖片縮放為圖片;基於子圖片不被視為圖片來確定子圖片縮放標誌;以及基於縮放或子圖片縮放標誌來對子圖片進行解碼。
視頻解碼器300還表示視頻解碼設備的示例,該視頻解碼設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:確定視頻資料的子圖片是否被視為圖片;基於子圖片被視為圖片來確定第一縮放比率;基於子圖片不被視為圖片來確定第二縮放比率;以及基於第一縮放比率或第二縮放比率來對子圖片進行解碼。
視頻解碼器300還表示視頻解碼設備的示例,該視頻解碼設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為一種方法,該方法包括:將PicOutputWidthL * A限制為大於或等於refPicOutputWidthL;將PicOutputHeightL * A 限制為大於或等於refPicOutputHeightL;將PicOutputWidthL限制為小於或等於refPicOutputWidthL * B;限制PicOutputHeightL應當小於或等於refPicOutputHeightL * B;以及基於限制來對視頻資料進行解碼,其中,A是非零正數,B是非零正數,並且B>A。
視頻解碼器300還表示視頻解碼設備的示例,該視頻解碼設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:將PicOutputWidthL * A限制為大於或等於refPicOutputWidthL;將PicOutputHeightL * A 限制為大於或等於refPicOutputHeightL;將PicOutputWidthL限制為小於或等於refPicOutputWidthL * B;限制PicOutputHeightL應當小於或等於refPicOutputHeightL * B;以及基於限制來對視頻資料進行解碼,其中,A是非零正數,B是非零正數,並且B>A。
視頻解碼器300還表示視頻解碼設備的示例,該視頻解碼設備包括:被配置為儲存視頻資料的記憶體;以及一個或多個處理單元,所述一個或多個處理單元在電路中實現並且被配置為:確定從視頻資料的當前子圖片中的縮放視窗到視頻資料中的參考子圖片中的縮放視窗的左位移;確定從當前子圖片中的縮放視窗到參考子圖片中的縮放視窗的頂部位移;以及基於左位移和頂部位移來對當前子圖片進行解碼。
VVC標準中採用了參考圖片重取樣(RPR),以支援如圖7中所示的開放圖片組(GOP)預測結構(從C0RA圖片開始)中的自適應串流。VVC標準中還採用了另一子圖片功能,以支援在360串流視頻會議等的用例中提取和合併子圖片。VVC草案7僅在常規圖片中啟用RPR。如果子圖片功能在工作,則禁用RPR功能。本公開內容希望調查同時啟用RPR和子圖片兩者。換句話說,利用本公開內容的技術,視頻編碼器200和視頻解碼器300可以啟用RPR和子圖片兩者。這允許GOP預測結構中的自適應子圖片串流,並且共享與常規圖片用例中的RPR的益處相同的益處,與傳統的閉合GOP預測結構相比,RPR可以獲得更好的壓縮性能和更好的主觀視覺品質。圖8和9示出了本公開內容描述的同時啟用RPR和子圖片的情況。
本公開內容描述了除了於2019年12月23日提交的並且在此通過引用將其全部內容併入的美國臨時專利申請No. 62/953,015之外的主題,其中,這些技術允許用於當前子圖片使用相同的子圖片ID來放大或縮小參考子圖片的參考子圖片縮放過程,如上述圖3中所示。本公開內容希望維護兩類縮放過程,一類將縮放視窗和縮放比率用於常規圖片,並且另一類將子圖片縮放視窗和子圖片縮放比率用於子圖片。例如,視頻編碼器200和視頻解碼器300可以將縮放視窗和縮放比率用於常規圖片並且將子圖片縮放視窗和子圖片縮放比率用於子圖片。
視頻編碼器200和視頻解碼器300可以被配置為實現基於子圖片的縮放視窗。在VVC草案7中,當參考圖片大小和當前圖片大小不同時,使用參考圖片縮放過程,並且從VVC草案7條款8.3.2中提取參考圖片縮放過程,如下:
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL
其中fRefWidth和fRefHeight分別被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL和PicOutputHeightL。PicOutputWidthL和PicOutputHeightL是縮放視窗寬度和高度,如圖2中所示,並且從圖片寬度和高度中裁剪,如下所示:
PicOutputWidthL = pic_width_in_luma_samples − ( scaling_win_right_offset + scaling_win_left_offset )
PicOutputHeightL = pic_height_in_luma_samples − ( scaling_win_bottom_offset + scaling_win_top_offset )
視頻編碼器200和視頻解碼器300可以使用縮放視窗來避免參考圖片縮放過程中的位置失准。視頻編碼器200和視頻解碼器300可以被配置為用訊號通知用於常規圖片縮放過程的一個縮放視窗和用於子圖片縮放過程的各種子圖片縮放視窗。例如,視頻編碼器200可以用訊號通知用於常規圖片縮放過程的一個縮放視窗和用於子圖片縮放過程的不同的子圖片縮放視窗。視頻解碼器300可以通過讀取訊號來確定訊號。當當前子圖片不被視為圖片時,將相同的參考圖片縮放過程用於當前子圖片,如圖4中所示。當當前子圖片被視為圖片時,將子圖片縮放視窗應用於使用相同ID的子圖片。因此,在VVC草案7規範之上的修改如下:
每個子圖片用訊號通知縮放視窗標誌,例如pps_scaling_window_flag[ i ]。如果第i個標誌pps_scaling_window_flag[ i ]等於1,則針對第i個子圖片用訊號通知縮放視窗偏移(pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ])。
在用訊號通知子圖片縮放視窗參數組之前,應當在PPS處用訊號通知CLVS中的子圖片的數量。
如果以下條件中的至少一個條件為真,則pps_scaling_window_flag[i]的值應當被推斷為0,以避免意外激活子圖片縮放過程:
˙ subpics_present_flag等於0(子圖片功能被禁用)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1(RPR功能被禁用,並且子圖片ID列表在CLVS中不被重新排序)
˙ subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0(子圖片功能被啟用,並且第i個子圖片不被視為圖片)
pps_scaling_win_left_offset[ i ] + pps_scaling_win_right_offset[ i ] <= subpic_width_in_luma_samples[ i ],其中subpic_width_in_luma_samples[ i ]是第i個子圖片的寬度。
pps_scaling_win_top_offset[ i ] + pps_scaling_win_bottom_offset[ i ] <= subpic_height_in_luma_samples[ i ],其中subpic_height_in_luma_samples[ i ]是第i個子圖片的高度。
基於子圖片的縮放視窗參數在PPS(例如,pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ])和PH(例如,ph_scaling_win_left_offset[ i ]、ph_scaling_win_right_offset[ i ]、ph_scaling_win_top_offset[ i ]和ph_scaling_win_bottom_offset[ i ])兩者中用訊號通知。基於PH中的縮放視窗標誌(即,ph_scaling_window_flag[ i ]),PH中的參數可以覆蓋PPS中的參數,例如,scaling_win_left_offset[ i ] = (ph_scaling_window_flag[ i ]) ? ph_scaling_win_left_offset[ i ] : pps_scaling_win_left_offset[ i ]。
在一個示例中,視頻編碼器200可以僅在PPS中用訊號通知基於子圖片的縮放視窗參數。在另一示例中,視頻編碼器200可以僅在PH中用訊號通知基於子圖片的縮放視窗參數。
通過利用第i個縮放視窗偏移裁剪第i個子圖片來推導第i個子圖片的縮放視窗寬度和高度,如下:
PicOutputWidthL[ i ] = subpic_width_in_luma_samples[ i ] − ( scaling_win_right_offset[ i ] + scaling_win_left_offset[ i ] )
PicOutputHeightL[ i ] = subpic_height_in_luma_samples[ i ] − ( scaling_win_bottom_offset[ i ] + scaling_win_top_offset[ i ] )
在下表中示出了對VVC草案7的語法改變。添加的開始被標記為<ADD>,並且添加的結束被標記為</ADD>。刪除的開始被標記為<DELETE>,並且刪除的結束被標記為</DELETE>。
VVC草案7中的第7.3.2.4節
pic_parameter_set_rbsp( ) { | 描述符 |
… | |
pic_width_in_luma_samples | ue(v) |
pic_height_in_luma_samples | ue(v) |
… | |
scaling_window_flag | u(1) |
if( scaling_window_flag ) { | |
scaling_win_left_offset | ue(v) |
scaling_win_right_offset | ue(v) |
scaling_win_top_offset | ue(v) |
scaling_win_bottom_offset | ue(v) |
} | |
<ADD> pps_num_subpics_minus1 | ue(v) |
for( i = 0; i <= pps_num_subpics_minus1; i++ ) { | |
pps_scaling_window_flag [ i ] | u(1) |
if( pps_scaling_window_flag[ i ] ) { | |
pps_scaling_win_left_offset [ i ] | ue(v) |
pps_scaling_win_right_offset [ i ] | ue(v) |
pps_scaling_win_top_offset [ i ] | ue(v) |
pps_scaling_win_bottom_offset [ i ] | ue(v) |
} | |
}</ADD> | |
… | |
pps_subpic_id_signalling_present_flag | u(1) |
if( pps_subpics_id_signalling_present_flag ) { | |
<DELETE> pps_num_subpics_minus1 | ue(v)</DELETE> |
pps_subpic_id_len_minus1 | ue(v) |
for( i = 0; i <= pps_num_subpic_minus1; i++ ) | |
pps_subpic_id [ i ] | u(v) |
} | |
… |
可以按如下修改VVC草案7中的第7.4.3.4節:
pic_width_in_luma_samples指定以亮度樣本為單位的引用PPS的每個經解碼的圖片的寬度。pic_width_in_luma_samples不應當等於0,應當為Max(8,MinCbSizeY)的整數倍,並且應當小於或等於pic_width_max_in_luma_samples。
當subpics_present_flag等於1或ref_pic_resampling_enabled_flag等於0時,pic_width_in_luma_samples的值應當等於pic_width_max_in_luma_samples。
pic_height_in_luma_samples指定以亮度樣本為單位的引用PPS的每個經解碼的圖片的高度。pic_height_in_luma_samples不應當等於0並且應當為Max(8,MinCbSizeY)的整數倍,並且應當小於或等於pic_height_max_in_luma_samples。
當subpics_present_flag等於1或ref_pic_resampling_enabled_flag等於0時,pic_height_in_luma_samples的值應當等於pic_height_max_in_luma_samples。
scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset指定以亮度樣本為單位的應用於圖片大小以進行縮放比率計算的偏移。當scaling_window_flag等於0時,scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset的值被推斷為等於0。
scaling_win_left_offset + scaling_win_right_offset的值應當小於pic_width_in_luma_samples,並且scaling_win_top_offset + scaling_win_bottom_offset的值應當小於pic_height_in_luma_samples。
按如下推導變量PicOutputWidthL和PicOutputHeightL:
PicOutputWidthL = pic_width_in_luma_samples − (74)
( scaling_win_right_offset + scaling_win_left_offset )
PicOutputHeightL = pic_height_in_luma_samples − (75) ( scaling_win_bottom_offset + scaling_win_top_offset )
<ADD>pps_num_subpics_minus1加1指定引用PPS的經寫碼的圖片中的子圖片的數量。
位元流一致性要求是pps_num_subpic_minus1的值應當等於sps_num_subpics_minus1。
pps_scaling_window_flag[ i ]等於1指定在PPS中存在用於第i個子圖片的縮放視窗偏移參數。pps_scaling_window_flag[ i ]等於0指定在PPS中不存在用於第i個子圖片的縮放視窗偏移參數。如果下列條件之一為真,則pps_scaling_window_flag[ i ]的值應當被推斷為0:
–subpics_present_flag等於0
–ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0
–ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1
–subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0
pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ]指定以亮度樣本為單位的應用於圖片大小以進行第i個子圖片的縮放比率計算的偏移。當pps_scaling_window_flag[ i ]等於0時,pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ]的值被推斷為等於0。
按如下推導第i個子圖片的寬度和高度:
subpic_width_in_luma_samples[ i ] = Min( pic_width_in_luma_samples, ( subpic_ctu_top_left_x[ i ] + subpic_width_minus1[ i ] + 1 ) * CtbSizeY ) – subpic_ctu_top_left_x[ i ] * CtbSizeY
subpic_height_in_luma_samples[ i ] = Min( pic_height_in_luma_samples, ( subpic_ctu_top_left_y[ i ] + subpic_height_minus1[ i ] + 1 ) * CtbSizeY ) – subpic_ctu_top_left_y[ i ] * CtbSizeY
pps_scaling_win_left_offset[ i ] + pps_scaling_win_right_offset[ i ]的值應當小於subpic_width_in_luma_samples[ i ],並且pps_scaling_win_top_offset[ i ] + pps_scaling_win_bottom_offset[ i ]的值應當小於subpic_height_in_luma_samples[ i ]。</ADD>
可以按如下修改VVC草案7中的第7.3.2.6節:
Picture_header_rbsp( ) { | 描述符 |
… | |
<ADD> If((!ref_pic_resampling_enabled_flag && pps_subpic_id_signalling_present_flag && subpic_treated_as_pic_flag[ i ] ) || (ref_pic_resampling_enabled_flag && subpics_present_flag&& subpic_treated_as_pic_flag[ i ]) ) { | |
for( i = 0; i <= sps_num_subpics_minus1; i++ ) { | |
ph_scaling_window_flag [ i ] | u(1) |
if( ph_scaling_window_flag[ i ] ) { | |
ph_scaling_win_left_offset [ i ] | ue(v) |
ph_scaling_win_right_offset [ i ] | ue(v) |
ph_scaling_win_top_offset [ i ] | ue(v) |
ph_scaling_win_bottom_offset [ i ] | ue(v) |
} | |
} | |
} </ADD> | |
… |
可以按如下修改VVC草案7中的第7.4.3.6節:
<ADD>ph_scaling_window_flag
[ i ]等於1指定在PH中存在用於第i個子圖片的縮放視窗偏移參數。ph_scaling_window_flag[ i ]等於0指定在PH中不存在用於第i個子圖片的縮放視窗偏移參數。如果不存在,則ph_scaling_window_flag[ i ]的值應當被推斷為0。ph_scaling_win_left_offset
[ i ]、ph_scaling_win_right_offset
[ i ]、ph_scaling_win_top_offset
[ i ]和ph_scaling_win_bottom_offset
[ i ]指定以亮度樣本為單位的應用於第i個子圖片的圖片大小以進行縮放比率計算的偏移。當ph_scaling_window_flag[ i ]等於0時,ph_scaling_win_left_offset[ i ]、ph_scaling_win_right_offset[ i ]、ph_scaling_win_top_offset[ i ]和ph_scaling_win_bottom_offset[ i ]的值被推斷為等於0。
ph_scaling_win_left_offset[ i ] + ph_scaling_win_right_offset[ i ]的值應當小於subpic_width_in_luma_samples[ i ],並且ph_scaling_win_top_offset[ i ] + ph_scaling_win_bottom_offset[ i ]的值應當小於subpic_height_in_luma_samples[ i ]。
按如下推導變量scaling_win_left_offset[ i ]、scaling_win_right_offset[ i ]、scaling_win_top_offset[ i ]和scaling_win_bottom_offset[ i ]:
scaling_win_left_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_left_offset[ i ] : pps_scaling_win_left_offset[ i ]
scaling_win_right_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_right_offset[ i ] : pps_scaling_win_ right_offset[ i ]
scaling_win_top_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_ top_offset[ i ] : pps_scaling_win_ top_offset[ i ]
scaling_win_bottom_offset[ i ] = ph_scaling_window_flag[ i ] ? ph_scaling_win_bottom_offset[ i ] : pps_scaling_win_ bottom_offset[ i ]
按如下推導變量PicOutputWidthL[ i ]和PicOutputHeightL[ i ]:
PicOutputWidthL[ i ] = subpic_weight_in_luma_samples[ i ] −
(scaling_win_right_offset[ i ] + scaling_win_left_offset[ i ] )
PicOutputHeightL[ i ] = subpic_height_in_luma_samples[ i ] −
(scaling_win_bottom_offset[ i ] + scaling_win_top_offset[ i ] )</ADD>
視頻編碼器200和視頻解碼器300可以被配置為執行參考子圖片縮放比率的推導。視頻編碼器200和視頻解碼器300可以被配置為推導兩個單獨的縮放比率,例如,一個縮放比率用於常規圖片,並且另一縮放比率用於子圖片。例如,視頻編碼器200和視頻解碼器300可以將一個縮放比率用於常規圖片並且將另一縮放比率用於子圖片。當當前子圖片不被視為圖片時,將VVC中的當前參考圖片縮放過程用於當前圖片或當前子圖片。當當前子圖片被視為圖片時,按如下應用子圖片縮放視窗:
fRefWidth和fRefHeight分別被定義為亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL[ RefSubPicIdx ]和PicOutputHeightL[ RefSubPicIdx ],其中,RefSubPicIdx被推導為使得參考圖片RefPicList[ i ][ j ]的SubpicIdList[ RefSubPicIdx ]等於當前切片的slice_subpic_id。然後按如下推導縮放比率:
RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL[ SubPicIdx ] >> 1 ) ) / PicOutputWidthL[ SubPicIdx ]
RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL[ SubPicIdx ] >> 1 ) ) / PicOutputHeightL[ SubPicIdx ]其中,SubPicIdx被推導為使得當前圖片的SubpicIdList[ SubPicIdx ]等於當前切片的slice_subpic_id。
在下表中示出了對VVC草案7的語法改變。添加的開始被標記為<ADD>,並且添加的結束被標記為</ADD>。刪除的開始被標記為<DELETE>,並且刪除的結束被標記為</DELETE>。
按如下構造參考圖片列表RefPicList[ 0 ]和RefPicList[ 1 ]、參考圖片縮放比率RefPicScale[ i ][ j ][ 0 ]和RefPicScale[ i ][ j ][ 1 ]以及參考圖片縮放標誌RefPicIsScaled[ 0 ]和RefPicIsScaled[ 1 ]: for( i = 0; i < 2; i++ ) { for( j = 0, k = 0, pocBase = PicOrderCntVal; j < num_ref_entries[ i ][ RplsIdx[ i ] ]; j++) { if( !inter_layer_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { if( st_ref_pic_flag[ i ][ RplsIdx[ i ] ][ j ] ) { RefPicPocList[ i ][ j ] = pocBase − DeltaPocValSt[ i ][ RplsIdx[ i ] ][ j ] if(在DPB中存在具有與當前圖片相同的nuh_layer_id並且PicOrderCntVal等於RefPicPocList[ i ][ j ] 的參考圖片picA ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "沒有參考圖片" (200) pocBase = RefPicPocList[ i ][ j ] }else { if( !delta_poc_msb_cycle_lt[ i ][ k ] ) { if(在DPB中存在具有與當前圖片相同的nuh_layer_id並且 PicOrderCntVal & ( MaxPicOrderCntLsb – 1) 等於 PocLsbLt[ i ][ k ]的參考picA) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "沒有參考圖片" RefPicLtPocList[ i ][ j ] = PocLsbLt[ i ][ k ] } else { 如果(在DPB中存在具有與當前圖片相同的nuh_layer_id並且PicOrderCntVal等於FullPocLt[ i ][ k ] 的參考picA) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "沒有參考圖片" RefPicLtPocList[ i ][ j ] = FullPocLt[ i ][ k ] } k++ } } else { layerIdx = DirectDependentLayerIdx[ GeneralLayerIdx[ nuh_layer_id ] ][ ilrp_idx[ i ][ RplsIdx ][ j ] ] refPicLayerId = vps_layer_id[ layerIdx ] if(在DPB中存在具有等於refPicLayerId的nuh_layer_id並且具有與當前圖片相同的PicOrderCntVal的參考圖片picA ) RefPicList[ i ][ j ] = picA else RefPicList[ i ][ j ] = "沒有參考圖片" } <ADD> if( ( !ref_pic_resampling_enabled_flag && pps_subpic_id_signalling_present_flag && subpic_treated_as_pic_flag[ i ] ) || ( ref_pic_resampling_enabled_flag && subpics_present_flag && subpic_treated_as_pic_flag[ i ]) ) { RefSubpicIdList[ k ]被設置為等於在參考圖片RefPicList[ i ][ j ]中推導的子圖片ID列表SubpicIdList[ k ],並且RefSubPicIdx被推導為使得RefSubpicIdList[ RefSubPicIdx ]等於當前圖片的 slice_subpic_id fRefWidth被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL[ RefSubPicIdx ] fRefHeight被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputHeightL[ RefSubPicIdx ] RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL[ SubPicIdx ] >> 1 ) ) / PicOutputWidthL[ SubPicIdx ] RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL[ SubPicIdx ] >> 1 ) ) / PicOutputHeightL[ SubPicIdx ] } else if( ref_pic_resampling_enabled_flag ) { fRefWidth被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL fRefHeight被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputHeightL RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL } else { RefPicScale[ i ][ j ][ 0 ] = 1 << 14 RefPicScale[ i ][ j ][ 1 ] = 1 << 14 }</ADD> <DELETE> fRefWidth被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputWidthL fRefHeight被設置為等於亮度樣本中的參考圖片RefPicList[ i ][ j ]的PicOutputHeightL RefPicScale[ i ][ j ][ 0 ] = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL RefPicScale[ i ][ j ][ 1 ] = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL </DELETE> RefPicIsScaled[ i ][ j ] = ( RefPicScale[ i ][ j ][ 0 ] != ( 1 << 14 ) ) | | ( RefPicScale[ i ][ j ][ 1 ] != ( 1 << 14 ) ) } } |
視頻編碼器200和視頻解碼器300可以被配置為將參考子圖片縮放比率限制在一個區間內。
在VVC草案7中,參考圖片縮放比率的區間應當在包含1/8到2的區間內,並且存在將該區間應用於參考圖片和當前圖片之間的圖片寬度和高度的位元流一致性,如下:
令refPicWidthInLumaSamples和refPicHeightInLumaSamples分別為引用該PPS的當前圖片的參考圖片的pic_width_in_luma_samples和pic_height_in_luma_samples。可以存在滿足所有的以下條件的位元流一致性要求:
–pic_width_in_luma_samples * 2應當大於或等於refPicWidthInLumaSamples。
–pic_height_in_luma_samples * 2應當大於或等於refPicHeightInLumaSamples。
–pic_width_in_luma_samples應當小於或等於refPicWidthInLumaSamples * 8。
–pic_height_in_luma_samples應當小於或等於refPicHeightInLumaSamples * 8。
由於參考圖片縮放比率是通過每個常規圖片的縮放視窗寬度和高度(即,PicOutputWidtL和PicOutputHeightL)來推導的,因此如果不對PicOutputWidthL和PicOutputHeightL進行限制,則縮放比率可能在區間之外。可以如下所述地修改VCC草案7。
令 refPicOutputWidthL和refPicOutputHeightL分別為引用該PPS的當前圖片的參考圖片的PicOutputWidthL和PicOutputHeightL。可以存在滿足所有的以下條件的位元流一致性要求:
–PicOutputWidthL * A應當大於或等於refPicOutputWidthL。
–PicOutputHeightL * A應當大於或等於refPicOutputHeightL。
–PicOutputWidthL應當小於或等於refPicOutputWidthL * B。
–PicOutputHeightL應當小於或等於refPicOutputHeightL * B。
–其中,參數A和B可以是任何非零正數,並且B>A。一個示例是A=2,並且B=8。
例如,視頻編碼器200和視頻解碼器300根據上述條件來限制寫碼。
存在同樣的問題:如果不對PicOutputWidthL[ m ]和PicOutputHeightL[ m ]進行限制,則子圖片縮放比率可能在區間之外。因此,視頻編碼器200和視頻解碼器300可以被配置為將該區間應用於參考圖片和當前圖片之間的基於子圖片的縮放視窗寬度和高度,如下:
RefSubPicIdx被推導為使得參考圖片的SubpicIdList[ RefSubPicIdx ]等於引用當前圖片的當前切片標頭的slice_subpic_id。要求位元流一致性應當滿足所有的以下條件:
PicOutputWidthL[SubPicIdx]*A應當大於或等於PicOutputWidthL[RefSubPicIdx]。
PicOutputHeightL[SubPicIdx]*A應當大於或等於PicOutputHeightL[RefSubPicIdx]。
PicOutputWidthL[SubPicIdx]應當小於或等於PicOutputWidthL[RefSubPicIdx]*B。
PicOutputHeightL[SubPicIdx]應當小於或等於PicOutputHeightL[RefSubPicIdx]*B。
其中,參數A和B可以是任何非零正數,並且B>A。一個示例是A=2,並且B=8。
例如,視頻編碼器200和視頻解碼器300根據上述條件來限制寫碼。
視頻編碼器200和視頻解碼器300可以被配置為執行用於內插濾波的整數位置推導。
應當推導左位移和頂部位移以將當前區塊的左上整數位置定位到參考區塊的左上整數位置。有兩種情況:一種是常規圖片之間的位移,並且另一種是子圖片之間的位移。僅當當前子圖片被視為圖片時,才啟用子圖片之間的位移。於2019年12月20日提交的美國臨時專利申請No. 62/951,709和於2019年12月23日提交的美國臨時專利申請No. 62/953,015(據此通過引用將這兩個申請的全部內容併入)解決了所討論的問題中的一些問題。已經在VVC中提供了用於常規圖片的位移,如下:
考慮從當前圖片中的縮放視窗到參考圖片中的縮放視窗的左位移,一般公式為refPos = curPos – cur_scaling_win_left_offset + ref_scaling_win_left_offset
˙ refPos:參考子圖片中的縮放視窗的左上角位置
˙ curPos:當前子圖片中的縮放視窗的左上角位置
˙ cur_scaling_win_left_offset:當前子圖片的scaling_win_left_offset
˙ ref_scaling_win_left_offset:參考子圖片的scaling_win_left_offset
相同的過程可以用於頂部位移。
視頻編碼器200和視頻解碼器300可以被配置為按如下確定用於子圖片的位移:
考慮從當前子圖片的縮放視窗到參考子圖片的縮放視窗的左位移,一般公式為refPos = curPos – ( curSubPicLeftBoundaryPos + cur_scaling_win_left_offset[ SubPicIdx ] ) + ( refSubPicLeftBoundaryPos + ref_scaling_win_left_offset[ RefSubPicIdx ] )
˙ refPos:參考子圖片中的縮放視窗的左上角位置
˙ curPos:當前子圖片中的縮放視窗的左上角位置
˙ curSubPicLeftBoundaryPos:當前子圖片中的邊界左側位置,即,在當前子圖片中推導的SubPicLeftBoundaryPos
˙ refSubPicLeftBoundaryPos:參考子圖片中的邊界左側位置,即,在參考子圖片中推導的SubPicLeftBoundaryPos
˙ cur_scaling_win_left_offset[ SubPicIdx ]:當前子圖片的scaling_win_left_offset[ SubPicIdx ]
˙ ref_scaling_win_left_offset[ RefSubPicIdx ]:參考子圖片的scaling_win_left_offset[ RefSubPicIdx ]
相同的過程可以用於頂部位移。
在下表中示出了對VVC草案7的語法改變。添加的開始被標記為<ADD>,並且添加的結束被標記為</ADD>。
<ADD>如果subpic_treated_as_pic_flag[ SubPicIdx ]等於1,則以下適用 leftBoundaryOffset = SubPicLeftBoundaryPos + subpic_scaling_win_left_offset[ SubPicIdx ] topBoundaryOffset = SubPicTopBoundaryPos + subpic_scaling_win_top_offset[ SubPicIdx ] RefSubPicIdx被推導為使得參考圖片的SubpicIdList[ RefSubPicIdx ]等於slice_subpic_id。 refSubPicLeftBoundaryPos = subpic_ctu_top_left_x[ RefSubPicIdx ] * CtbSizeY refSubPicTopBoundaryPos = subpic_ctu_top_left_y[ RefSubPicIdx ] *CtbSizeY </ADD> 變量fRefLeftOffset被設置為等於 (<ADD>( subpic_</ADD>scaling_win_left_offset<ADD>[ RefSubPicIdx ] + refSubPicLeftBoundaryPos) </ADD> << 10 ), 其中<ADD>subpic_</ADD>scaling_win_left_offset<ADD>[ i ]</ADD>是 參考圖片的<ADD>subpic_</ADD>scaling_win_left_offset<ADD>[ i ]</ADD>。 變量fRefTopOffset被設置為等於 (<ADD>( subpic_</ADD>scaling_win_top_offset<ADD>[ RefSubPicIdx ] + refSubPicTopBoundaryPos) </ADD> << 10 ),其中 <ADD>subpic_</ADD>scaling_win_top_offset<ADD>[ i ] </ADD>是 參考圖片的<ADD>subpic_</ADD>scaling_win_top_offset<ADD>[ i ] </ADD> 。 <ADD> 否則 leftBoundaryOffset = scaling_win_left_offset topBoundaryOffset = scaling_win_top_offset </ADD> 變量fRefLeftOffset被設置為等於(scaling_win_left_offset << 10 ),其中scaling_win_left_offset是參考圖片的scaling_win_left_offset。 變量fRefTopOffset被設置為等於(scaling_win_top_offset << 10 ),其中scaling_win_top_offset是參考圖片的scaling_win_top_offset。 … – 如果cIdx等於0,則以下適用: – 對於預測亮度樣本數組predSamplesLX內的每個亮度樣本位置( xL = 0..sbWidth − 1 + brdExtSize, yL = 0..sbHeight − 1 + brdExtSize ),按如下推導對應的預測亮度樣本值predSamplesLX[ xL ][ yL ]: –令( refxSbL , refySbL )和( refxL , refyL )為以1/16樣本單位給出的動作向量( refMvLX[0], refMvLX[1] ) 指向的亮度位置。按如下推導變量refxSbL 、refxL 、refySbL 和refyL : refxSbL = ( ( ( xSb − <ADD> leftBoundaryOffset </ADD> ) << 4 ) + refMvLX[ 0 ] ) * scalingRatio[ 0 ] (937) refxL = ( ( Sign( refxSbL ) * ( ( Abs( refxSbL ) + 128 ) >> 8 ) + xL * ( ( scalingRatio[ 0 ] + 8 ) >> 4 ) ) + fRefLeftOffset + 32 ) >> 6 (938) refySbL = ( ( ( ySb − <ADD> topBoundaryOffset </ADD> ) << 4 ) + refMvLX[ 1 ] ) * scalingRatio[ 1 ] (939) refyL = ( ( Sign( refySbL ) * ( ( Abs( refySbL ) + 128 ) >> 8 ) + yL * ( ( scalingRatio[ 1 ] + 8 ) >> 4 ) ) + fRefTopOffset + 32 ) >> 6 (940) |
本公開內容中討論的技術可以單獨地或者以任何組合使用。例如,以下三個示例可以單獨地或者以任何組合使用。
根據第一示例,參考圖片和當前圖片可以是相同的大小。例如,針對當前子圖片啟用縮放比率以將參考子圖片的大小縮放到當前子圖片的大小,如在圖3的示例中。例如,視頻編碼器200和視頻解碼器300可以將參考子圖片的大小縮放到當前子圖片的大小。
根據第二示例,視頻編碼器200和視頻解碼器300可以被配置為支援縮放過程,其中參考圖片和當前圖片是不同的大小,並且子圖片ID在CLVS中保持不變。在圖8中,當前圖片180包括具有ID 1、2和3的子圖片,並且參考圖片182也包括具有ID 1、2和3的子圖片。圖8示出了當前圖片180和參考圖片182是不同的大小但參考圖片ID保持相同的示例。在這樣的示例中,視頻編碼器200和視頻解碼器300可以不改變子圖片ID。
根據第三示例,視頻編碼器200和視頻解碼器300可以被配置為支援縮放過程,其中參考圖片和當前圖片是不同的大小,並且子圖片ID在CLVS中改變。在圖9中,當前圖片190包括具有ID 1、2和3的子圖片,並且參考圖片192也包括具有ID 1、2和3的子圖片。圖9示出了當前圖片190和參考圖片192是不同的大小並且參考圖片ID已經改變的示例。在這樣的示例中,視頻編碼器200和視頻解碼器300可以改變子圖片ID。
圖10是示出了可以執行本公開內容的技術的示例視頻編碼器200的方塊圖。圖10是出於解釋的目的而提供的,並且不應當被認為對如在本公開內容中廣泛地舉例說明和描述的技術進行限制。出於解釋的目的,本公開內容在視頻寫碼標準(諸如正在開發的HEVC視頻寫碼標準和H.266視頻寫碼標準)的背景下描述了視頻編碼器200。然而,本公開內容的技術不限於這些視頻寫碼標準,並且通常適用於視頻編碼和解碼。
在圖10的示例中,視頻編碼器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的單元可以被實現為一個或多個電路或邏輯元件,作為硬體電路的一部分,或者作為處理器、ASIC或FPGA的一部分。此外,視頻編碼器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的各個單元的輸出的臨時儲存。
示出了圖10的各個單元以幫助理解由視頻編碼器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通常協調多個編碼通路(pass),以測試編碼參數的組合以及針對這樣的組合所得到的比率失真值。編碼參數可以包括將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),所述動作向量限定相對於當前區塊在當前圖片中的位置而言參考區塊在參考圖片中的位置。然後,動作估計單元222可以將動作向量提供給動作補償單元224。例如,對於單向幀間預測,動作估計單元222可以提供單個動作向量,而對於雙向幀間預測,動作估計單元222可以提供兩個動作向量。然後,動作補償單元224可以使用動作向量來生成預測區塊。例如,動作補償單元224可以使用動作向量來取回參考區塊的資料。作為另一示例,如果動作向量具有分數樣本精度,則動作補償單元224可以根據一個或多個插值濾波器來對用於預測區塊的值進行插值。此外,對於雙向幀間預測,動作補償單元224可以取回用於由相應的動作向量標識的兩個參考區塊的資料並且例如通過逐樣本平均或加權平均來將所取回的資料進行組合。如上所解釋的,當根據具有不同解析度的參考子圖片來對當前子圖片的區塊進行幀間預測時,動作估計單元222和動作補償單元224可以例如基於用於當前子圖片的縮放參數來從參考子圖片縮放預測區塊。動作估計單元222和動作補償單元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)、方向性轉換、Karhunen-Loeve轉換(KLT)、或概念上類似的轉換應用於殘差區塊。在一些示例中,轉換處理單元206可以對殘差區塊執行多種轉換,例如,初級轉換和二次轉換(諸如旋轉轉換)。在一些示例中,轉換處理單元206不對殘差區塊應用轉換。
量化單元208可以對轉換係數區塊中的轉換係數進行量化,以產生經量化的轉換係數區塊。量化單元208可以根據與當前區塊相關聯的量化參數(QP)值來對轉換係數區塊的轉換係數進行量化。視頻編碼器200(例如,經由模式選擇單元202)可以通過調整與CU相關聯的QP值來調整被應用於與當前區塊相關聯的轉換係數區塊的量化程度。量化可能引入資訊損失,並且因此,經量化的轉換係數可能具有與由轉換處理單元206產生的原始轉換係數相比較低的精度。
逆量化單元210和逆轉換處理單元212可以將逆量化和逆轉換分別應用於經量化的轉換係數區塊,以從轉換係數區塊重構殘差區塊。重構單元214可以基於經重構的殘差區塊和由模式選擇單元202生成的預測區塊來產生與當前區塊相對應的重構區塊(儘管潛在地具有某種程度的失真)。例如,重構單元214可以將經重構的殘差區塊的樣本加到來自由模式選擇單元202生成的預測區塊的對應樣本,以產生經重構的區塊。
濾波器單元216可以對經重構的區塊執行一個或多個濾波器操作。例如,濾波器單元216可以執行去區塊操作以減少沿著CU的邊緣的區塊效應偽影。在一些示例中,可以跳過濾波器單元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,並且參考圖片可以是相同的。作為另一示例,對於亮度寫碼區塊和色度寫碼區塊,幀內預測過程可以是相同的。
圖11是示出了可以執行本公開內容的技術的示例視頻解碼器300的方塊圖。圖11是出於解釋的目的而提供的,並且不對如在本公開內容中廣泛地舉例說明和描述的技術進行限制。出於解釋的目的,本公開內容根據JEM、VVC和HEVC的技術描述了視頻解碼器300。然而,本公開內容的技術可以由被配置用於其它視頻寫碼標準的視頻寫碼設備來執行。
在圖11的示例中,視頻解碼器300包括寫碼圖片緩衝器(CPB)記憶體320、熵解碼單元302、預測處理單元304、逆量化單元306、逆轉換處理單元308、重構單元310、濾波器單元312和解碼圖片緩衝器(DPB)314。CPB記憶體320、熵解碼單元302、預測處理單元304、逆量化單元306、逆轉換處理單元308、重構單元310、濾波器單元312和DPB 314中的任何一者或全部可以在一個或多個處理器中或者在處理電路中實現。例如,視頻解碼器300的單元可以被實現為一個或多個電路或邏輯元件,作為硬體電路的一部分,或者作為處理器、ASIC或FPGA的一部分。此外,視頻解碼器300可以包括額外或替代的處理器或處理電路以執行這些和其它功能。
預測處理單元304包括動作補償單元316和幀內預測單元318。預測處理單元304可以包括額外的單元,以根據其它預測模式來執行預測。作為示例,預測處理單元304可以包括調色板單元、區塊內複製單元(其可以形成動作補償單元316的一部分)、仿射單元、線性模型(LM)單元等。在其它示例中,視頻解碼器300可以包括更多、更少或不同的功能組件。
CPB記憶體320可以儲存要由視頻解碼器300的組件解碼的視頻資料,諸如經編碼的視頻位元流。例如,可以從計算機可讀媒體110(圖1)獲得被儲存在CPB記憶體320中的視頻資料。CPB記憶體320可以包括儲存來自經編碼的視頻位元流的經編碼的視頻資料(例如,語法元素)的CPB。此外,CPB記憶體320可以儲存除了經寫碼的圖片的語法元素之外的視頻資料,諸如表示來自視頻解碼器300的各個單元的輸出的臨時資料。DPB 314通常儲存經解碼的圖片,視頻解碼器300可以輸出經解碼的圖片,和/或在解碼經編碼的視頻位元流的後續資料或圖片時使用經解碼的圖片作為參考視頻資料。CPB記憶體320和DPB 314可以由各種記憶體設備中的任何一種形成,諸如包括SDRAM的DRAM、MRAM、RRAM或其它類型的記憶體設備。CPB記憶體320和DPB 314可以由同一記憶體設備或單獨的記憶體設備來提供。在各個示例中,CPB記憶體320可以與視頻解碼器300的其它組件在晶片上,或者相對於那些組件在晶片外。
另外或替代地,在一些示例中,視頻解碼器300可以從記憶體120(圖1)取回經寫碼的視頻資料。也就是說,記憶體120可以如上文所討論地利用CPB記憶體320來儲存資料。同樣,當視頻解碼器300的一些或全部功能是用要被視頻解碼器300的處理電路執行的軟體來實現時,記憶體120可以儲存要被視頻解碼器300執行的指令。
示出了圖11中示出的各個單元以幫助理解由視頻解碼器300執行的操作。這些單元可以被實現為固定功能電路、可程式電路、或其組合。類似於圖10,固定功能電路指代提供特定功能並且關於可以被執行的操作而預先設置的電路。可程式電路指代可以被程式以執行各種任務並且以可以被執行的操作來提供靈活功能的電路。例如,可程式電路可以執行軟體或韌體,軟體或韌體使得可程式電路以由軟體或韌體的指令定義的方式進行操作。固定功能電路可以執行軟體指令(例如,以接收參數或輸出參數),但是固定功能電路執行的操作的類型通常是不可變的。在一些示例中,這些單元中的一個或多個單元可以是不同的電路區塊(固定功能或可程式),並且在一些示例中,這些單元中的一個或多個單元可以是積體電路。
視頻解碼器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、逆整數轉換、逆Karhunen-Loeve轉換(KLT)、逆旋轉轉換、逆方向性轉換或另一逆轉換應用於轉換係數區塊。
此外,預測處理單元304根據由熵解碼單元302進行熵解碼的預測資訊語法元素來生成預測區塊。例如,如果預測資訊語法元素指示當前區塊是經幀間預測的,則動作補償單元316可以生成預測區塊。在這種情況下,預測資訊語法元素可以指示在DPB 314中的要從其取回參考區塊的參考圖片、以及標識相對於當前區塊在當前圖片中的位置而言參考區塊在參考圖片中的位置的動作向量。動作補償單元316通常可以以與關於動作補償單元224(圖10)所描述的方式基本類似的方式來執行幀間預測過程。如上所解釋的,當根據具有不同解析度的參考子圖片來對當前子圖片的區塊進行幀間預測時,動作補償單元316可以例如基於用於當前子圖片的縮放參數來從參考子圖片縮放預測區塊。動作補償單元316可以例如根據上述技術使用縮放視窗來確定縮放比率。
作為另一示例,如果預測資訊語法元素指示當前區塊是經幀內預測的,則幀內預測單元318可以根據由預測資訊語法元素指示的幀內預測模式來生成預測區塊。再次,幀內預測單元318通常可以以與關於幀內預測單元226(圖10)所描述的方式基本上類似的方式來執行幀內預測過程。幀內預測單元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之類的顯示設備上的後續呈現。
圖12是示出了用於對當前區塊進行編碼的示例過程的流程圖。當前區塊可以包括當前CU。儘管關於視頻編碼器200(圖1和圖7)進行了描述,但是應當理解的是,其它設備可以被配置為執行與圖6的方法類似的方法。
在該示例中,視頻編碼器200最初預測當前區塊(350)。例如,視頻編碼器200可以形成用於當前區塊的預測區塊。然後,視頻編碼器200可以計算用於當前區塊的殘差區塊(352)。為了計算殘差區塊,視頻編碼器200可以計算在原始的未經編碼的區塊與用於當前區塊的預測區塊之間的差。然後,視頻編碼器200可以對殘差區塊的係數進行轉換和量化(354)。接下來,視頻編碼器200可以掃描殘差區塊的經量化的轉換係數(356)。在掃描期間或在掃描之後,視頻編碼器200可以對轉換係數進行熵編碼(358)。例如,視頻編碼器200可以使用CAVLC或CABAC來對轉換係數進行編碼。然後,視頻編碼器200可以輸出區塊的經熵編碼的資料(360)。
圖13是示出了用於對視頻資料的當前區塊進行解碼的示例過程的流程圖。當前區塊可以包括當前CU。儘管關於視頻解碼器300(圖1和圖8)進行了描述,但是應當理解的是,其它設備可以被配置為執行與圖13的方法類似的方法。
視頻解碼器300可以接收用於當前區塊的經熵編碼的資料(諸如經熵編碼的預測資訊和用於與當前區塊相對應的殘差區塊的係數的經熵編碼的資料)(370)。視頻解碼器300可以對經熵編碼的資料進行熵解碼以確定用於當前區塊的預測資訊並且重現殘差區塊的係數(372)。視頻解碼器300可以例如使用如由用於當前區塊的預測資訊指示的幀內或幀間預測模式來預測當前區塊(374),以計算用於當前區塊的預測區塊。然後,視頻解碼器300可以對所重現的係數進行逆掃描(376),以創建經量化的轉換係數的區塊。然後,視頻解碼器300可以對轉換係數進行逆量化和逆轉換以產生殘差區塊(378)。最終,視頻解碼器300可以通過將預測區塊和殘差區塊進行組合來對當前區塊進行解碼(380)。
圖14是示出了用於對視頻資料的當前區塊進行寫碼的示例過程的流程圖。當前區塊可以包括當前CU。將關於通用視頻寫碼器(諸如視頻編碼器200(圖1和圖7)或視頻解碼器300(圖1和圖8))來描述圖14的技術。然而,應當理解的是,其它設備可以被配置為執行與圖14的過程類似的過程。
視頻寫碼器確定當前圖片的第一子圖片具有相關聯的縮放參數(400)。例如,視頻寫碼器可以通過在用於當前圖片的參數集合資料結構中接收指示當前圖片的第一子圖片是否具有相關聯的縮放參數的第一語法元素的第一實例來確定當前圖片的第一子圖片具有相關聯的縮放參數。例如,參數集合資料結構可以例如是圖片標頭、PPS或其它這樣的參數集合資料結構。
視頻寫碼器響應於確定當前圖片的第一子圖片具有相關聯的縮放參數,接收用於當前圖片的第一子圖片的相關聯的縮放參數(402)。為了接收用於第一子圖片的相關聯的縮放參數,視頻寫碼器可以被配置為在參數集合資料結構中接收用於第一子圖片的相關聯的縮放參數。例如,參數集合資料結構可以是圖片標頭、PPS或其它這樣的參數集合資料結構。視頻寫碼器還可以被配置為接收指示當前圖片中的子圖片的數量的第二語法元素;針對當前圖片中的子圖片中的每個子圖片,接收指示當前圖片的相應子圖片是否具有相關聯的縮放參數的第一語法元素的實例;以及針對具有相關聯的縮放參數的每個相應子圖片,接收相關聯的縮放參數。
相關聯的縮放參數可以例如包括以下各項中的一項或多項:左偏移值,該左偏移值指定以亮度樣本為單位的第一子圖片的左邊界與第一子圖片中的縮放視窗的左邊界之間的偏移;右偏移值,該右偏移值指定以亮度樣本為單位的第一子圖片的右邊界與第一子圖片中的縮放視窗的右邊界之間的偏移;上偏移值,該上偏移值指定以亮度樣本為單位的第一子圖片的上邊界與第一子圖片中的縮放視窗的上邊界之間的偏移;以及下偏移值,該下偏移值指定以亮度樣本為單位的第一子圖片的下邊界與第一子圖片中的縮放視窗的下邊界之間的偏移。例如,相關聯的縮放參數可以例如包括以下各項中的一項或多項:上述的pps_scaling_win_left_offset[ i ]、pps_scaling_win_right_offset[ i ]、pps_scaling_win_top_offset[ i ]和pps_scaling_win_bottom_offset[ i ]語法元素。
視頻寫碼器確定用於當前圖片的第一子圖片的區塊的動作資訊,該動作資訊標識參考圖片的子圖片(404)。例如,動作資訊可以包括以下各項中的一項或多項:動作向量、參考圖片索引、或動作向量解析度。如上所述,視頻寫碼器可以使用動作資訊來對區塊進行幀間預測。視頻寫碼器在參考圖片的子圖片中定位用於當前圖片的第一子圖片的區塊的預測區塊(406)。
視頻寫碼器基於用於當前圖片的第一子圖片的相關聯的縮放參數來對預測區塊進行縮放(408)。為了基於用於第一子圖片的相關聯的縮放參數來對預測區塊進行縮放,視頻寫碼器可以例如進行以下操作:基於用於第一子圖片的相關聯的縮放參數來確定參考圖片的子圖片的視窗,其中,參考圖片的子圖片的視窗包括少於參考圖片的子圖片的全部;基於用於第一子圖片的相關聯的縮放參數來確定當前圖片的第一子圖片的視窗,其中,當前圖片的第一子圖片的視窗包括少於當前圖片的第一子圖片的全部;基於參考圖片的子圖片的視窗與當前圖片的第一子圖片的視窗的比率來確定縮放比率;以及基於所確定的縮放比率來對預測區塊進行縮放。為了基於用於第一子圖片的相關聯的縮放參數來對參考圖片的子圖片進行縮放,視頻寫碼器可以例如進行以下操作:基於用於第一子圖片的相關聯的縮放參數來確定第一子圖片中的縮放視窗;確定第一子圖片中的縮放視窗的高度與參考圖片的子圖片中的縮放視窗的高度的比率;確定第一子圖片中的縮放視窗的寬度與參考圖片的子圖片中的縮放視窗的寬度的比率;以及基於第一子圖片中的縮放視窗的高度與參考圖片的子圖片中的縮放視窗的高度的比率以及第一子圖片中的縮放視窗的寬度與參考圖片的子圖片中的縮放視窗的寬度的比率來對預測區塊進行縮放。所確定的縮放比率在包含1/8到2的區間內。經縮放的預測區塊的解析度可以等於當前圖片的第一子圖片的區塊的解析度。
視頻寫碼器可以基於經縮放的預測區塊來輸出經解碼的視頻資料。例如,視頻寫碼器可以將殘差資料加到經縮放的預測區塊以形成經重構的區塊,並且可能在應用一個或多個濾波操作之後輸出經重構的區塊。當視頻寫碼器正在對視頻資料進行寫碼時,視頻寫碼器可以通過儲存經解碼的視頻資料來輸出經解碼的視頻,以在對後續區塊或後續圖片進行編碼時使用。當視頻寫碼器正在對視頻資料進行解碼時,視頻寫碼器可以通過儲存經解碼的視頻資料來輸出經解碼的視頻,以在對後續區塊或後續圖片進行解碼時使用,或者輸出經解碼的視頻以供顯示。
條款1:一種對視頻資料進行寫碼的方法,包括:確定所述視頻資料的子圖片是否要被視為圖片;基於所述子圖片被視為圖片來將所述子圖片縮放為圖片;基於所述子圖片不被視為圖片來確定子圖片縮放標誌;以及基於所述縮放或所述子圖片縮放標誌來對所述子圖片進行寫碼。
條款2:根據條款1所述的方法,其中,所述子圖片縮放標誌是在圖片參數集合(PPS)中用訊號通知的。
條款3:根據條款1-2的任何組合所述的方法,其中,如果以下條件為真,則所述子圖片縮放標誌被推斷為0:subpics_present_flag等於0;ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_present_flag等於0;ref_pic_resampling_enabled_flag等於0並且sps_subpic_id_signalling_present_flag等於1;或者subpics_present_flag等於1並且subpic_treated_as_pic_flag[ i ]等於0。
條款4:根據條款1-3的任何組合所述的方法,還包括:確定子圖片縮放視窗參數。
條款5:根據條款4所述的方法,其中,所述子圖片縮放視窗參數是在所述PPS中用訊號通知的。
條款6:根據條款4-5的任何組合所述的方法,其中,所述子圖片縮放視窗參數是在圖片標頭(PH)中用訊號通知的。
條款7:一種對視頻資料進行寫碼的方法,包括:確定所述視頻資料的子圖片是否要被視為圖片;基於所述子圖片被視為圖片來確定第一縮放比率;基於所述子圖片不被視為圖片來確定第二縮放比率;以及基於所述第一縮放比率或所述第二縮放比率來對所述子圖片進行寫碼。
條款8:一種對視頻資料進行寫碼的方法,包括:將PicOutputWidthL * A限制為大於或等於refPicOutputWidthL;將PicOutputHeightL * A 限制為大於或等於refPicOutputHeightL;將PicOutputWidthL限制為小於或等於refPicOutputWidthL * B;限制PicOutputHeightL應當小於或等於refPicOutputHeightL * B;以及基於所述限制來對所述視頻資料進行寫碼,其中,A是非零正數,B是非零正數,並且B>A。
條款9:一種對視頻資料進行寫碼的方法,包括:將PicOutputWidthL[ SubPicIdx ] * A限制為大於或等於PicOutputWidthL[ RefSubPicIdx ];將PicOutputHeightL[ SubPicIdx ] * A 限制為大於或等於PicOutputHeightL[ RefSubPicIdx ];將PicOutputWidthL[ SubPicIdx ]限制為小於或等於PicOutputWidthL[ RefSubPicIdx ] * B;將PicOutputHeightL[ SubPicIdx ]限制為小於或等於PicOutputHeightL[ RefSubPicIdx ] * B;以及基於所述限制來對所述視頻資料進行寫碼,其中,A是非零正數,B是非零正數,並且B>A。
條款10:一種對視頻資料進行寫碼的方法,包括:確定從所述視頻資料的當前子圖片中的縮放視窗到所述視頻資料中的參考子圖片中的縮放視窗的左位移;確定從所述當前子圖片中的縮放視窗到所述參考子圖片中的縮放視窗的頂部位移;以及基於所述左位移和所述頂部位移來對所述當前子圖片進行寫碼。
條款11:根據條款1-10中任一項所述的方法,其中,參考圖片和當前圖片是相同的大小,並且針對當前子圖片啟用縮放比率以將參考子圖片的大小縮放到當前子圖片的大小。
條款12:根據條款1-11中任一項所述的方法,其中,參考圖片和當前圖片是不同的大小,並且子圖片ID在逐寫碼層視頻序列(CLVS)中保持不變。
條款13:根據條款1-12中任一項所述的方法,其中,參考圖片和當前圖片是不同的大小,並且子圖片ID在CLVS中改變。
條款14:根據條款1-13中任一項所述的方法,其中,寫碼包括解碼。
條款15:根據條款1-14中任一項所述的方法,其中,寫碼包括編碼。
條款16:一種用於對視頻資料進行寫碼的設備,所述設備包括用於執行根據條款1-15中任一項所述的方法的一個或多個構件。
條款17:根據條款16所述的設備,其中,所述一個或多個構件包括在電路中實現的一個或多個處理器。
條款18:根據條款16和17中任一項所述的設備,還包括:用於儲存所述視頻資料的記憶體。
條款19:根據條款16-18中任一項所述的設備,還包括:被配置為顯示經解碼的視頻資料的顯示器。
條款20:根據條款16-19中任一項所述的設備,其中,所述設備包括以下各項中的一項或多項:相機、計算機、行動設備、廣播接收機設備、或機上盒。
條款21:根據條款16-20中任一項所述的設備,其中,所述設備包括視頻解碼器。
條款22:根據條款16-21中任一項所述的設備,其中,所述設備包括視頻編碼器。
條款23:一種具有儲存在其上的指令的計算機可讀儲存媒體,所述指令在被執行時使得一個或多個處理器執行根據條款1-15中任一項所述的方法。
條款24:一種用於對視頻資料進行編碼的設備,包括用於執行本公開內容的方法中的任何方法的構件。
條款25:一種對視頻資料進行寫碼的方法,包括:識別與當前圖片的子圖片相對應的參考圖片的子圖片;對所述參考圖片的所述子圖片進行縮放;以及基於所述參考圖片的經縮放的子圖片來對所述當前圖片的所述子圖片的區塊進行寫碼。
條款26:根據條款25所述的方法,其中,所述參考圖片的經縮放的子圖片的解析度等於所述當前圖片的所述子圖片的解析度。
條款27:根據條款25或26所述的方法,其中,對所述參考圖片的所述子圖片進行縮放包括:確定所述參考圖片的所述子圖片中的縮放視窗。
條款28:根據條款25-27中任一項所述的方法,其中,寫碼包括解碼。
條款29:根據條款25-27中任一項所述的方法,其中,寫碼包括編碼。
條款30:一種用於對視頻資料進行寫碼的設備,所述設備包括用於執行根據條款25-29中任一項所述的方法的一個或多個構件。
條款31:根據條款30所述的設備,其中,所述一個或多個構件包括在電路中實現的一個或多個處理器。
條款32:根據條款30和32中任一項所述的設備,還包括:用於儲存所述視頻資料的記憶體。
條款33:根據條款30-32中任一項所述的設備,還包括:被配置為顯示經解碼的視頻資料的顯示器。
條款34:根據條款30-33中任一項所述的設備,其中,所述設備包括以下各項中的一項或多項:相機、計算機、行動設備、廣播接收機設備、或機上盒。
條款35:根據條款30-34中任一項所述的設備,其中,所述設備包括視頻解碼器。
條款36:根據條款30-34中任一項所述的設備,其中,所述設備包括視頻編碼器。
條款37:一種具有儲存在其上的指令的計算機可讀儲存媒體,所述指令在被執行時使得一個或多個處理器執行根據條款25-29中任一項所述的方法。
要認識到的是,根據示例,本文描述的技術中的任何技術的某些動作或事件可以以不同的順序執行,可以被添加、合併或完全省略(例如,並非所有描述的動作或事件對於所述技術的實施都是必要的)。此外,在某些示例中,動作或事件可以例如通過多線程處理、中斷處理或多個處理器併發地而不是順序地執行。
在一個或多個示例中,所描述的功能可以用硬體、軟體、韌體或其任何組合來實現。如果用軟體來實現,則所述功能可以作為一個或多個指令或代碼儲存在計算機可讀媒體上或者通過其進行傳輸並且由基於硬體的處理單元執行。計算機可讀媒體可以包括計算機可讀儲存媒體,其對應於諸如資料儲存媒體之類的有形媒體或者通訊媒體,所述通訊媒體包括例如根據通訊協議來促進計算機程序從一個地方傳送到另一個地方的任何媒體。以這種方式,計算機可讀媒體通常可以對應於(1)非暫時性的有形計算機可讀儲存媒體、或者(2)諸如訊號或載波之類的通訊媒體。資料儲存媒體可以是可以由一個或多個計算機或者一個或多個處理器存取以取回用於實現在本公開內容中描述的技術的指令、代碼和/或資料結構的任何可用的媒體。計算機程序產品可以包括計算機可讀媒體。
舉例來說而非進行限制,這樣的計算機可讀儲存媒體可以包括RAM、ROM、EEPROM、CD-ROM或其它光碟儲存、磁碟儲存或其它磁儲存設備、快閃記憶體、或者能夠用於以指令或資料結構形式儲存期望的程序代碼以及能夠由計算機存取的任何其它媒體。此外,任何連接被適當地稱為計算機可讀媒體。例如,如果使用同軸電纜、光纖光纜、雙絞線、數位用戶線(DSL)或者無線技術(諸如紅外線、無線電和微波)從網站、伺服器或其它遠程源傳輸指令,則同軸電纜、光纖光纜、雙絞線、DSL或者無線技術(諸如紅外線、無線電和微波)被包括在媒體的定義中。然而,應當理解的是,計算機可讀儲存媒體和資料儲存媒體不包括連接、載波、訊號或其它暫時性媒體,而是替代地針對非暫時性的有形儲存媒體。如本文使用的,磁碟和光碟包括壓縮光碟(CD)、雷射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中,磁碟通常磁性地複製資料,而光碟利用雷射來光學地複製資料。上述的組合也應當被包括在計算機可讀媒體的範圍之內。
指令可以由一個或多個處理器來執行,諸如一個或多個數位訊號處理器(DSP)、通用微處理器、專用積體電路(ASIC)、現場可程式閘陣列(FPGA)、或其它等效的整合或離散邏輯電路。因此,如本文使用的術語“處理器”和“處理電路”可以指代前述結構中的任何一者或者適於實現本文描述的技術的任何其它結構。另外,在一些方面中,本文描述的功能可以在被配置用於編碼和解碼的專用硬體和/或軟體模區塊內提供,或者被併入組合的編解碼器中。此外,所述技術可以完全在一個或多個電路或邏輯元件中實現。
本公開內容的技術可以在多種多樣的設備或裝置中實現,包括無線手機、積體電路(IC)或一組IC(例如,晶片組)。在本公開內容中描述了各種組件、模區塊或單元以強調被配置為執行所公開的技術的設備的功能性方面,但是不一定需要通過不同的硬體單元來實現。確切而言,如上所述,各種單元可以被組合在編解碼器硬體單元中,或者由可互操作的硬體單元的集合(包括如上所述的一個或多個處理器)結合適當的軟體和/或韌體來提供。
已經描述了各個示例。這些和其它示例在所附申請專利範圍的範圍內。
100:系統
102:來源設備
104:視頻源
106,120:記憶體
108:輸出介面
110:計算機可讀媒體
112:儲存設備
114:文件伺服器
116:目的地設備
118:顯示設備
122:輸入介面
130:四叉樹二叉樹(QTBT)結構
132:寫碼樹單元(CTU)
136,166,180,190:當前圖片
138,168,182,192:參考圖片
142:參考縮放視窗
144:當前縮放視窗
150,152:縮放視窗
160:參考區塊
162:動作向量
164:寫碼區塊
200:視頻編碼器
202:模式選擇單元
204:殘差生成單元
206:轉換處理單元
208:量化單元
210,306:逆量化單元
212,308:逆轉換處理單元
214,310:重構單元
216,312:濾波器單元
218,314:解碼圖片緩衝器(DPB)
220:熵編碼單元
222:動作估計單元
224,316:動作補償單元
226,318:幀內預測單元
230:視頻資料記憶體
300:視頻解碼器
302:熵解碼單元
304:預測處理單元
320:CPB記憶體
350,352,354,356,358,360:步驟
370,372,374,376,378,380:步驟
400,402,404,406,408:步驟
圖1是示出了可以執行本公開內容的技術的示例視頻編碼和解碼系統的方塊圖。
圖2A和圖2B是示出了示例四叉樹二叉樹(QTBT)結構以及對應的寫碼樹單元(CTU)的概念圖。
圖3示出了在參考圖片和當前圖片中具有相同的對應子圖片ID的子圖片大小的示例。
圖4示出了在參考圖片和當前圖片內部的縮放視窗的示例。
圖5示出了縮放視窗的示例。
圖6示出了由來自當前寫碼區塊的動作向量指向的參考區塊的示例。
圖7是示出了開放圖片組(GOP)結構中的自適應串流的概念圖。
圖8是示出了同時啟用參考圖片重取樣(RPR)和啟用子圖片的參考圖片和當前圖片的概念圖,其中子圖片ID沒有被重新排序。
圖9是示出了同時啟用RPR和啟用子圖片的參考圖片和當前圖片的概念圖,其中子圖片ID被重新排序。
圖10是示出了可以執行本公開內容的技術的示例視頻編碼器的方塊圖。
圖11是示出了可以執行本公開內容的技術的示例視頻解碼器的方塊圖。
圖12是示出了用於對視頻資料的當前區塊進行編碼的示例過程的流程圖。
圖13是示出了用於對視頻資料的當前區塊進行解碼的示例過程的流程圖。
圖14是示出了用於對視頻資料的當前區塊進行寫碼的示例過程的流程圖。
400,402,404,406,408:步驟
Claims (30)
- 一種對視頻資料進行寫碼的方法,所述方法包括: 確定當前圖片的第一子圖片具有相關聯的縮放參數; 響應於確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,接收用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數; 確定用於所述當前圖片的所述第一子圖片的區塊的動作資訊,其中,所述動作資訊標識參考圖片的子圖片; 在所述參考圖片的所述子圖片中定位用於所述當前圖片的所述第一子圖片的所述區塊的預測區塊;以及 基於用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放。
- 根據請求項1所述的方法,其中: 確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數包括:在用於所述當前圖片的參數集合資料結構中接收指示所述當前圖片的所述第一子圖片是否具有所述相關聯的縮放參數的第一語法元素的第一實例;以及 接收用於所述第一子圖片的所述相關聯的縮放參數包括:在所述參數集合資料結構中接收用於所述第一子圖片的所述相關聯的縮放參數。
- 根據請求項1所述的方法,其中,基於用於所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放包括: 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述參考圖片的所述子圖片的視窗,其中,所述參考圖片的所述子圖片的所述視窗包括少於所述參考圖片的所述子圖片的全部; 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述當前圖片的所述第一子圖片的視窗,其中,所述當前圖片的所述第一子圖片的所述視窗包括少於所述當前圖片的所述第一子圖片的全部; 基於所述參考圖片的所述子圖片的所述視窗與所述當前圖片的所述第一子圖片的所述視窗的比率來確定縮放比率;以及 基於所確定的縮放比率來對所述預測區塊進行縮放。
- 根據請求項3所述的方法,其中,所確定的縮放比率在包含1/8到2的區間中。
- 根據請求項1所述的方法,其中,經縮放的預測區塊的解析度等於所述當前圖片的所述第一子圖片的所述區塊的解析度。
- 根據請求項1所述的方法,還包括: 接收指示所述當前圖片中的子圖片的數量的第二語法元素; 針對所述當前圖片中的所述子圖片中的每個子圖片,接收指示所述當前圖片的相應子圖片是否具有相關聯的縮放參數的所述第一語法元素的實例;以及 針對具有相關聯的縮放參數的每個相應子圖片,接收所述相關聯的縮放參數。
- 根據請求項1所述的方法,其中,基於用於所述第一子圖片的所述相關聯的縮放參數來對所述參考圖片的所述子圖片進行縮放包括: 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述第一子圖片中的縮放視窗; 確定所述第一子圖片中的所述縮放視窗的高度與所述參考圖片的所述子圖片中的縮放視窗的高度的比率; 確定所述第一子圖片中的所述縮放視窗的寬度與所述參考圖片的所述子圖片中的所述縮放視窗的寬度的比率; 基於所述第一子圖片中的所述縮放視窗的所述高度與所述參考圖片的所述子圖片中的所述縮放視窗的所述高度的所述比率以及所述第一子圖片中的所述縮放視窗的所述寬度與所述參考圖片的所述子圖片中的所述縮放視窗的所述寬度的所述比率來對所述預測區塊進行縮放。
- 根據請求項1所述的方法,其中,所述相關聯的縮放參數包括: 左偏移值,所述左偏移值指定以亮度樣本為單位的所述第一子圖片的左邊界與所述第一子圖片中的所述縮放視窗的左邊界之間的偏移; 右偏移值,所述右偏移值指定以所述亮度樣本為單位的所述第一子圖片的右邊界與所述第一子圖片中的所述縮放視窗的右邊界之間的偏移; 上偏移值,所述上偏移值指定以亮度樣本為單位的所述第一子圖片的上邊界與所述第一子圖片中的所述縮放視窗的上邊界之間的偏移;以及 下偏移值,所述下偏移值指定以亮度樣本為單位的所述第一子圖片的下邊界與所述第一子圖片中的所述縮放視窗的下邊界之間的偏移。
- 根據請求項1所述的方法,其中,對所述視頻資料進行寫碼的所述方法包括對所述視頻資料進行編碼的方法。
- 根據請求項1所述的方法,其中,對所述視頻資料進行寫碼的方法包括對所述視頻資料進行解碼的方法。
- 一種用於對視頻資料進行解碼的設備,所述設備包括: 記憶體,其被配置為儲存視頻資料; 一個或多個處理器,其在電路中實現並且被配置為: 確定當前圖片的第一子圖片具有相關聯的縮放參數; 響應於確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,接收用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數; 確定用於所述當前圖片的所述第一子圖片的區塊的動作資訊,其中,所述動作資訊標識參考圖片的子圖片; 在所述參考圖片的所述子圖片中定位用於所述當前圖片的所述第一子圖片的所述區塊的預測區塊;以及 基於用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放。
- 根據請求項11所述的設備,其中: 為了確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,所述一個或多個處理器還被配置為:在用於所述當前圖片的參數集合資料結構中接收指示所述當前圖片的所述第一子圖片是否具有所述相關聯的縮放參數的第一語法元素的第一實例;以及 為了接收用於所述第一子圖片的所述相關聯的縮放參數,所述一個或多個處理器還被配置為:在所述參數集合資料結構中接收用於所述第一子圖片的所述相關聯的縮放參數。
- 根據請求項11所述的設備,其中,為了基於用於所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放,所述一個或多個處理器還被配置為: 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述參考圖片的所述子圖片的視窗,其中,所述參考圖片的所述子圖片的所述視窗包括少於所述參考圖片的所述子圖片的全部; 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述當前圖片的所述第一子圖片的視窗,其中,所述當前圖片的所述第一子圖片的所述視窗包括少於所述當前圖片的所述第一子圖片的全部; 基於所述參考圖片的所述子圖片的所述視窗與所述當前圖片的所述第一子圖片的所述視窗的比率來確定縮放比率;以及 基於所確定的縮放比率來對所述預測區塊進行縮放。
- 根據請求項11所述的設備,其中,所確定的縮放比率在包含1/8到2的區間中。
- 根據請求項11所述的設備,其中,經縮放的預測區塊的解析度等於所述當前圖片的所述第一子圖片的所述區塊的解析度。
- 根據請求項15所述的設備,其中,所述一個或多個處理器還被配置為: 接收指示所述當前圖片中的子圖片的數量的第二語法元素; 針對所述當前圖片中的所述子圖片中的每個子圖片,接收指示所述當前圖片的相應子圖片是否具有相關聯的縮放參數的所述第一語法元素的實例;以及 針對具有相關聯的縮放參數的每個相應子圖片,接收所述相關聯的縮放參數。
- 根據請求項11所述的設備,其中,為了基於用於所述第一子圖片的所述相關聯的縮放參數來對所述參考圖片的所述子圖片進行縮放,所述一個或多個處理器還被配置為: 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述第一子圖片中的縮放視窗; 確定所述第一子圖片中的所述縮放視窗的高度與所述參考圖片的所述子圖片中的縮放視窗的高度的比率; 確定所述第一子圖片中的所述縮放視窗的寬度與所述參考圖片的所述子圖片中的所述縮放視窗的寬度的比率;以及 基於所述第一子圖片中的所述縮放視窗的所述高度與所述參考圖片的所述子圖片中的所述縮放視窗的所述高度的所述比率以及所述第一子圖片中的所述縮放視窗的所述寬度與所述參考圖片的所述子圖片中的所述縮放視窗的所述寬度的所述比率來對所述預測區塊進行縮放。
- 根據請求項11所述的設備,其中,所述相關聯的縮放參數包括: 左偏移值,所述左偏移值指定以亮度樣本為單位的所述第一子圖片的左邊界與所述第一子圖片中的所述縮放視窗的左邊界之間的偏移; 右偏移值,所述右偏移值指定以所述亮度樣本為單位的所述第一子圖片的右邊界與所述第一子圖片中的所述縮放視窗的右邊界之間的偏移; 上偏移值,所述上偏移值指定以亮度樣本為單位的所述第一子圖片的上邊界與所述第一子圖片中的所述縮放視窗的上邊界之間的偏移;以及 下偏移值,所述下偏移值指定以亮度樣本為單位的所述第一子圖片的下邊界與所述第一子圖片中的所述縮放視窗的下邊界之間的偏移。
- 根據請求項11所述的設備,其中,所述設備包括無線通訊設備,進一步包括被配置為接收經編碼的視頻資料的接收機。
- 根據請求項19所述的設備,其中,所述無線通訊設備包括電話手機,並且其中,所述接收機被配置為:根據無線通訊標準來對包括所述經編碼的視頻資料的訊號進行解調。
- 根據請求項11所述的設備,還包括: 被配置為顯示經解碼的視頻資料的顯示器。
- 根據請求項11所述的設備,其中,所述設備包括無線通訊設備,發射機被配置為:根據無線通訊標準來對包括所述經編碼的視頻資料的訊號進行調變。
- 根據請求項11所述的設備,還包括: 被配置為擷取所述視頻資料的相機。
- 一種儲存指令的計算機可讀儲存媒體,所述指令在由一個或多個處理器執行時使得所述一個或多個處理器進行以下操作: 確定當前圖片的第一子圖片具有相關聯的縮放參數; 響應於確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,接收用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數; 確定用於所述當前圖片的所述第一子圖片的區塊的動作資訊,其中,所述動作資訊標識參考圖片的子圖片; 在所述參考圖片的所述子圖片中定位用於所述當前圖片的所述第一子圖片的所述區塊的預測區塊;以及 基於用於所述當前圖片的所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放。
- 根據請求項24所述的計算機可讀儲存媒體,其中: 為了確定所述當前圖片的所述第一子圖片具有所述相關聯的縮放參數,所述指令使得所述一個或多個處理器進行以下操作:在用於所述當前圖片的參數集合資料結構中接收指示所述當前圖片的所述第一子圖片是否具有所述相關聯的縮放參數的第一語法元素的第一實例;以及 為了接收用於所述第一子圖片的所述相關聯的縮放參數包括:在所述參數集合資料結構中接收用於所述第一子圖片的所述相關聯的縮放參數。
- 根據請求項24所述的計算機可讀儲存媒體,其中,為了基於用於所述第一子圖片的所述相關聯的縮放參數來對所述預測區塊進行縮放,所述一個或多個處理器還被配置為: 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述參考圖片的所述子圖片的視窗,其中,所述參考圖片的所述子圖片的所述視窗包括少於所述參考圖片的所述子圖片的全部; 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述當前圖片的所述第一子圖片的視窗,其中,所述當前圖片的所述第一子圖片的所述視窗包括少於所述當前圖片的所述第一子圖片的全部; 基於所述參考圖片的所述子圖片的所述視窗與所述當前圖片的所述第一子圖片的所述視窗的比率來確定縮放比率;以及 基於所確定的縮放比率來對所述預測區塊進行縮放。
- 根據請求項24所述的計算機可讀儲存媒體,其中,經縮放的預測區塊的解析度等於所述當前圖片的所述第一子圖片的所述區塊的解析度。
- 根據請求項27所述的計算機可讀儲存媒體,其中,所述指令使得所述一個或多個處理器進行以下操作: 接收指示所述當前圖片中的子圖片的數量的第二語法元素; 針對所述當前圖片中的所述子圖片中的每個子圖片,接收指示所述當前圖片的相應子圖片是否具有相關聯的縮放參數的所述第一語法元素的實例;以及 針對具有相關聯的縮放參數的每個相應子圖片,接收所述相關聯的縮放參數。
- 根據請求項24所述的計算機可讀儲存媒體,其中,為了基於用於所述第一子圖片的所述相關聯的縮放參數來對所述參考圖片的所述子圖片進行縮放,所述指令使得所述一個或多個處理器進行以下操作: 基於用於所述第一子圖片的所述相關聯的縮放參數來確定所述第一子圖片中的縮放視窗; 確定所述第一子圖片中的所述縮放視窗的高度與所述參考圖片的所述子圖片中的縮放視窗的高度的比率; 確定所述第一子圖片中的所述縮放視窗的寬度與所述參考圖片的所述子圖片中的所述縮放視窗的寬度的比率; 基於所述第一子圖片中的所述縮放視窗的所述高度與所述參考圖片的所述子圖片中的所述縮放視窗的所述高度的所述比率以及所述第一子圖片中的所述縮放視窗的所述寬度與所述參考圖片的所述子圖片中的所述縮放視窗的所述寬度的所述比率來對所述預測區塊進行縮放。
- 根據請求項24所述的計算機可讀儲存媒體,其中,所述相關聯的縮放參數包括: 左偏移值,所述左偏移值指定以亮度樣本為單位的所述第一子圖片的左邊界與所述第一子圖片中的所述縮放視窗的左邊界之間的偏移; 右偏移值,所述右偏移值指定以所述亮度樣本為單位的所述第一子圖片的右邊界與所述第一子圖片中的所述縮放視窗的右邊界之間的偏移; 上偏移值,所述上偏移值指定以亮度樣本為單位的所述第一子圖片的上邊界與所述第一子圖片中的所述縮放視窗的上邊界之間的偏移;以及 下偏移值,所述下偏移值指定以亮度樣本為單位的所述第一子圖片的下邊界與所述第一子圖片中的所述縮放視窗的下邊界之間的偏移。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962953015P | 2019-12-23 | 2019-12-23 | |
US62/953,015 | 2019-12-23 | ||
US201962954273P | 2019-12-27 | 2019-12-27 | |
US62/954,273 | 2019-12-27 | ||
US17/125,225 US11490099B2 (en) | 2019-12-23 | 2020-12-17 | Reference subpicture scaling ratios for subpictures in video coding |
US17/125,225 | 2020-12-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202127873A true TW202127873A (zh) | 2021-07-16 |
Family
ID=76438989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109145155A TW202127873A (zh) | 2019-12-23 | 2020-12-18 | 用於視頻寫碼中的子圖片的參考子圖片縮放比率 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11490099B2 (zh) |
EP (1) | EP4082199A1 (zh) |
KR (1) | KR20220112781A (zh) |
CN (1) | CN114846794A (zh) |
TW (1) | TW202127873A (zh) |
WO (1) | WO2021133655A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4082198A4 (en) | 2019-12-27 | 2023-08-16 | Alibaba Group Holding Limited | METHOD AND DEVICE FOR SIGNALING SUBPICTURE PARTITIONING INFORMATION |
EP4088462A4 (en) | 2020-02-14 | 2023-05-24 | Beijing Bytedance Network Technology Co., Ltd. | SUBPICTURE INFORMATION SIGNALING IN VIDEO BITSTREAM |
WO2021167340A1 (ko) * | 2020-02-17 | 2021-08-26 | 현대자동차주식회사 | 크로마 신호의 리샘플링에 기반하는 영상 부호화 및 복호화 |
US12058357B2 (en) * | 2020-03-31 | 2024-08-06 | Tencent America LLC | Method for signaling subpicture partitioning in coded video stream |
JP2023533424A (ja) * | 2020-05-21 | 2023-08-03 | アリババ グループ ホウルディング リミテッド | 映像処理におけるタイル及びスライス区画 |
KR20230016047A (ko) * | 2020-05-27 | 2023-01-31 | 바이트댄스 아이엔씨 | 비디오 코딩에서의 서브픽처들 및 타일들의 사용 |
TWI749676B (zh) | 2020-08-03 | 2021-12-11 | 緯創資通股份有限公司 | 影像品質評估裝置及其影像品質評估方法 |
TWI743919B (zh) * | 2020-08-03 | 2021-10-21 | 緯創資通股份有限公司 | 視訊處理裝置及視訊串流的處理方法 |
US12022098B2 (en) * | 2021-03-04 | 2024-06-25 | Lemon Inc. | Neural network-based in-loop filter with residual scaling for video coding |
US20230007305A1 (en) | 2021-06-28 | 2023-01-05 | Tencent America LLC | Subpicture partitioning and scaling window information |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8989508B2 (en) * | 2012-09-28 | 2015-03-24 | Sharp Kabushiki Kaisha | Electronic device for signaling a sub-picture buffer parameter |
-
2020
- 2020-12-17 US US17/125,225 patent/US11490099B2/en active Active
- 2020-12-18 TW TW109145155A patent/TW202127873A/zh unknown
- 2020-12-18 EP EP20842784.9A patent/EP4082199A1/en active Pending
- 2020-12-18 CN CN202080087525.7A patent/CN114846794A/zh active Pending
- 2020-12-18 WO PCT/US2020/065875 patent/WO2021133655A1/en unknown
- 2020-12-18 KR KR1020227019794A patent/KR20220112781A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
CN114846794A (zh) | 2022-08-02 |
US11490099B2 (en) | 2022-11-01 |
KR20220112781A (ko) | 2022-08-11 |
WO2021133655A1 (en) | 2021-07-01 |
EP4082199A1 (en) | 2022-11-02 |
US20210195223A1 (en) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114097209B (zh) | 视频译码中的存取单元中的适应性参数集 | |
TW202127873A (zh) | 用於視頻寫碼中的子圖片的參考子圖片縮放比率 | |
TW202110189A (zh) | 用於視訊寫碼的環繞運動補償 | |
TW202126038A (zh) | 用於視頻寫碼及轉換單元之高階語法之最大及最小區塊大小之傳信 | |
TW202127886A (zh) | 用於視頻譯碼的圖像標頭信令 | |
TW202114424A (zh) | 視頻編碼中的縮放比例及輸出全解析度圖像 | |
US11943429B2 (en) | Subpicture signaling in video coding | |
TW202131676A (zh) | 視訊編碼中針對參考圖片重取樣的環繞偏移 | |
TW202143733A (zh) | 在視訊編解碼中的獨立子圖片信號傳遞 | |
TW202106023A (zh) | 調色板模式下的增量量化參數訊令 | |
TW202127893A (zh) | 用於視頻編碼中的參考圖片重採樣的參考圖片縮放比 | |
TW202143735A (zh) | 用於視訊資料的語法元素的訊號傳遞 | |
TW202203653A (zh) | 用於視頻譯碼的語法元素的一般約束 | |
TW202143711A (zh) | 用於具有混合網路抽象層(nal)單元類型的視訊的高階語法 | |
CN114830673A (zh) | 用于多个层的共享解码器图片缓冲器 | |
TW202133615A (zh) | 基於色度變換跳過的用於色度的lfnst信號傳遞 | |
TW202143722A (zh) | 在視訊解碼中的經解碼視訊序列起點存取單元 | |
CN114391256A (zh) | 用于视频编解码的变换单元设计 | |
TW202141988A (zh) | 用於視訊譯碼中的變換跳過區塊的高級約束 | |
TW202143715A (zh) | 視訊譯碼中的子區塊合併候選的信令數目 | |
TW202127874A (zh) | 用於視訊編碼中的自我調整色彩變換的qp 偏移的靈活訊號傳遞 | |
TW202127891A (zh) | 用於視訊編碼的高階語法中子圖像的訊令編號 | |
TW202139716A (zh) | 在視訊解碼中共享的信號傳遞約束和序列參數集 | |
CN114868398A (zh) | 用于视频译码的单色调色板模式 | |
TWI855204B (zh) | 用於多層的共享解碼器圖片緩衝器的設備、方法與電腦可讀取儲存媒體 |