Video coding syntax

By optimizing the signaling notifications in the video codec standard, adopting the profile-tier-level structure and the progressive decoding and refreshing of pictures technology, the redundant signaling problem is solved, and the codec efficiency and bandwidth utilization are improved, especially in viewport adaptive streaming.

CN115244934BActive Publication Date: 2025-10-14QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202180017699.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-03-02
Filing Date
2021-03-03
Publication Date
2025-10-14
Estimated Expiration
2041-03-03

AI Technical Summary

Technical Problem

Redundant and unnecessary signaling in existing video codec standards increases bandwidth requirements and limits the performance of video codecs in certain use cases, especially in viewport adaptive streaming.

Method used

By reducing or eliminating redundant signaling notifications, adopting the signaling notification technology of profile-level-level structure and progressive decoding and refreshing pictures, the video encoding and decoding process is optimized.

Benefits of technology

It reduces signaling notification bandwidth, improves the performance of video codecs in use cases such as viewport adaptive streaming, and improves encoding and decoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115244934B_ABST
    Figure CN115244934B_ABST
Patent Text Reader

Abstract

An example device for coding video data includes a memory configured to store the video data, and one or more processors implemented in circuitry and communicatively coupled to the memory. The one or more processors are configured to determine whether a sequence parameter set of the video data references a video parameter set. Based on the sequence parameter set not referencing the video parameter set, the one or more processors are configured to determine that a value of a first syntax element indicates that a tier-hierarchy-level structure is signaled in the sequence parameter set, and code the video data based on the tier-hierarchy-level structure.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority to U.S. Application No. 17 / 189,976, filed on March 2, 2021, U.S. Provisional Application No. 62 / 984,895, filed on March 4, 2020, and U.S. Provisional Application No. 63 / 003,710, filed on April 1, 2020, each of which is incorporated herein by reference in its entirety. U.S. Application No. 17 / 189,976, filed on March 2, 2021, claims the benefit of U.S. Provisional Application No. 62 / 984,895, filed on March 4, 2020, and U.S. Provisional Application No. 63 / 003,710, filed on April 1, 2020. Technical Field

[0002] The present disclosure relates to video encoding (encode) and video decoding (decode). Background Art

[0003] Digital video capabilities can be incorporated into a wide variety of devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, mobile or satellite radio phones (so-called "smartphones"), video teleconferencing devices, video streaming devices, etc. Digital video devices implement video codec technologies (such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 (Part 10, Advanced Video Codec (AVC)), ITU-T H.265 / High Efficiency Video Codec (HEVC), and extensions of such standards). By implementing such video codec technologies, video devices can more efficiently transmit, receive, encode, decode, and / or store digital video information.

[0004] Video coding techniques include spatial (intra-picture) prediction and / or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) can be partitioned into video blocks, which can also be referred to as codec tree units (CTUs), codec units (CUs), and / or codec nodes. Video blocks in an intra-coded (I) slice of a picture are encoded using spatial prediction relative to reference samples in neighboring blocks in the same picture. Video blocks in an inter-coded (P or B) slice of a picture can use spatial prediction relative to reference samples in neighboring blocks in the same picture or temporal prediction relative to reference samples in other reference pictures. Pictures can be referred to as frames, and reference pictures can be referred to as reference frames. Summary of the Invention

[0005] In summary, this disclosure describes techniques for signaling sub-pictures in video codecs. More specifically, this disclosure describes multiple sub-pictures and other syntax and signaling techniques that can be improvements over existing techniques. For example, the techniques of this disclosure can reduce signaling overhead by reducing or eliminating unnecessary signaling.

[0006] In one example, a method for encoding and decoding video data includes: determining whether a sequence parameter set of the video data references a video parameter set; based on the sequence parameter set not referencing the video parameter set, determining that a value of a first syntax element indicates that a profile-tier-layer structure is signaled in the sequence parameter set; and encoding and decoding the video data based on the profile-tier-layer structure.

[0007] In another example, a method includes determining whether there are no NAL units with a progressive decoding refresh network abstraction layer (NAL) unit type and a NAL unit header type in an output layer set; determining, based on the absence of NAL units with a NAL unit header type and a progressive decoding refresh NAL unit type in the output layer set, that a value of a first syntax element indicates that there are no progressive decoder refresh pictures in a codec layer video sequence; and encoding and decoding video data of the codec layer video sequence without encoding and decoding the progressive decoder refresh pictures.

[0008] In another example, a device includes: a memory configured to store video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether a sequence parameter set for the video data references a video parameter set; determine, based on the sequence parameter set not referencing the video parameter set, that a value of a first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set; and encode or decode the video data based on the profile-tier-level structure.

[0009] In another example, a device includes: a memory configured to store video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether there are no NAL units with a progressive decoding refresh network abstraction layer (NAL) unit type having a NAL unit header type in an output layer set; determine, based on the absence of NAL units with a NAL unit header type having a progressive decoding refresh NAL unit type in the output layer set, that a value of a first syntax element indicates that there are no progressive decoder refresh pictures in a codec layer video sequence; and encode and decode video data of the codec layer video sequence without encoding and decoding the progressive decoder refresh pictures.

[0010] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] Figure 1 is a block diagram illustrating an example video encoding and decoding system that may perform the techniques of this disclosure.

[0012] Figure 2A and Figure 2B is a conceptual diagram illustrating an example quadtree binary tree (QTBT) structure and a corresponding codec tree unit (CTU).

[0013] Figure 3 is a block diagram illustrating an example video encoder that may perform the techniques of this disclosure.

[0014] Figure 4 is a block diagram illustrating an example video decoder that may perform the techniques of this disclosure.

[0015] Figure 5 is a conceptual diagram showing a picture partitioned into 6x4 CTUs, 3x2 slices, 9 slices, and 6 sub-pictures.

[0016] Figure 6 is a conceptual diagram illustrating an example viewport-dependent panoramic media format (OMAF).

[0017] Figure 7 is a conceptual diagram illustrating an example of viewport-adaptive streaming.

[0018] Figure 8 is a flow diagram illustrating an example signaling technique according to the present disclosure.

[0019] Figure 9 is a flow chart illustrating another example signaling technique according to the present disclosure.

[0020] Figure 10is a flowchart illustrating an example of video encoding.

[0021] Figure 11 is a flow chart illustrating an example of video decoding. DETAILED DESCRIPTION

[0022] This disclosure describes sub-picture number and other signaling and syntax changes that may be improvements over existing techniques (e.g., those of some draft standards). For example, some draft standards allow for redundant and / or unnecessary signaling of syntax elements, which may increase the signaling bandwidth associated with the video codec (compared to what would otherwise be required). In addition, some draft standards may include limitations that may unnecessarily hinder the ability of a video codec to meet certain requirements for certain use cases (such as viewport adaptive streaming).

[0023] According to the techniques of this disclosure, redundant and / or unnecessary signaling in such video standards can be reduced or eliminated to reduce the signaling bandwidth associated with video codecs. In addition, according to the techniques of this disclosure, restrictions can be changed to improve the ability of video codecs to meet the requirements of certain use cases (such as viewport adaptive streaming).

[0024] Figure 1 is a block diagram illustrating an example video encoding and decoding system 100 that can perform the techniques of this disclosure. In general, the techniques of this disclosure relate to encoding and decoding (encoding and / or decoding) video data. Generally, video data includes any data used to process video. Thus, video data can include original, unencoded video, encoded video, decoded (e.g., reconstructed) video, and video metadata (e.g., signaling data).

[0025] like Figure 1 As shown, in this example, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by a target device 116. Specifically, source device 102 provides the video data to target device 116 via a computer-readable medium 110. Source device 102 and target device 116 can include any of a variety of devices, including desktop computers, notebook computers (i.e., laptops), tablet computers, set-top boxes, telephones such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some cases, source device 102 and target device 116 can be equipped for wireless communication and, therefore, can be referred to as wireless communication devices.

[0026] exist Figure 1In the example of , source device 102 includes video source 104, memory 106, video encoder 200 and output interface 108. Target device 116 includes input interface 122, video decoder 300, memory 120 and display device 118. According to the present disclosure, the video encoder 200 of source device 102 and the video decoder 300 of target device 116 can be configured to apply the technology of signaling notification of sub-pictures in video encoding and decoding. Therefore, source device 102 represents an example of a video encoding device, and target device 116 represents an example of a video decoding device. In other examples, the source device and target device may include other components or arrangements. For example, source device 102 may receive video data from an external video source such as an external camera. Similarly, target device 116 may be connected to an external display device instead of including an integrated display device.

[0027] like Figure 1 The illustrated system 100 is merely an example. Generally, any digital video encoding and / or decoding device can implement the techniques for signaling sub-pictures in video codecs. Source device 102 and destination device 116 are merely examples of codec devices, where source device 102 generates encoded video data for transmission to destination device 116. This disclosure refers to a "codec" device as a device that performs encoding and decoding (e.g., encoding and / or decoding) of data. Thus, video encoder 200 and video decoder 300 represent examples of codec devices (specifically, a video encoder and a video decoder, respectively). In some examples, source device 102 and destination device 116 can operate in a substantially symmetrical manner, such that each includes video encoding and decoding components. Thus, system 100 can support one-way or two-way video transmission between source device 102 and destination device 116, for example, for video streaming, video playback, video broadcasting, or video telephony.

[0028] Typically, video source 104 represents a source of video data (i.e., original, unencoded video data) and provides a sequential series of pictures (also referred to as "frames") of the video data to video encoder 200, which encodes the picture data. The video source 104 of source device 102 may include a video capture device, such as a camera, a video archive containing previously captured original video, and / or a video feed interface for receiving video from a video content provider. As another alternative, video source 104 may generate computer graphics-based data as the source video, or a combination of live video, archived video, and computer-generated video. In each case, video encoder 200 encodes captured, pre-captured, or computer-generated video data. Video encoder 200 may rearrange the pictures from the order they were received (sometimes referred to as "display order") into a codec order for encoding and decoding. Video encoder 200 may generate a bitstream comprising encoded video data. Source device 102 may then output the encoded video data onto computer-readable medium 110 via output interface 108 for receipt and / or retrieval by, for example, input interface 122 of target device 116 .

[0029] Memory 106 of source device 102 and memory 120 of destination device 116 represent general purpose memory. In some examples, memories 106 and 120 can store raw video data, e.g., raw video from video source 104 and raw decoded video data from video decoder 300. Additionally or alternatively, memories 106 and 120 can store software instructions executable by, for example, video encoder 200 and video decoder 300, respectively. Although memory 106 and memory 120 are shown as separate from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 can also include internal memory for functionally similar or equivalent purposes. Furthermore, memories 106 and 120 can store, for example, encoded video data output from video encoder 200 and input to video decoder 300. In some examples, portions of memories 106 and 120 can be allocated as one or more video buffers, e.g., to store raw decoded and / or encoded video data.

[0030] The computer-readable medium 110 can represent any type of medium or device capable of transmitting encoded video data from the source device 102 to the target device 116. In one example, the computer-readable medium 110 represents a communication medium that enables the source device 102 to send the encoded video data directly to the target device 116 in real time, for example, via a radio frequency network or a computer-based network. The output interface 108 can demodulate the transmission signal including the encoded video data according to a communication standard such as a wireless communication protocol, and the input interface 122 can demodulate the received transmission signal according to a communication standard such as a wireless communication protocol. The communication medium can include any wireless or wired communication medium, for example, a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can form part of a packet-based network such as a local area network, a wide area network, or a global network such as the Internet. The communication medium can include routers, switches, base stations, or any other device that can be useful for facilitating communication from the source device 102 to the target device 116.

[0031] In some examples, source device 102 may output the encoded data from output interface 108 to storage device 112. Similarly, target device 116 may access the encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, Blu-ray disc, DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data.

[0032] In some examples, source device 102 may output the encoded video data to a file server 114 or another intermediate storage device that can store the encoded video data generated by source device 102. Target device 116 may access the stored video data from file server 114 via streaming or downloading. File server 114 may be any type of server device capable of storing encoded video data and transmitting the encoded video data to target device 116. File server 114 may represent a web server (e.g., for a website), a file transfer protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Target device 116 may access the encoded video data from file server 114 via any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a digital subscriber line (DSL), a cable modem, etc.), or a combination of the two suitable for accessing the encoded video data stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming transfer protocol, a download transfer protocol, or a combination thereof.

[0033] The output interface 108 and the input interface 122 may represent wireless transmitters / receivers, modems, wired networking components (e.g., Ethernet cards), wireless communication components that operate according to any of the various IEEE 802.11 standards, or other physical components. In examples where the output interface 108 and the input interface 122 include wireless components, the output interface 108 and the input interface 122 may be configured to transmit data (such as encoded video data) according to a cellular communication standard such as 4G, 4G-LTE (Long Term Evolution), LTE-Advanced, 5G, etc. In some examples where the output interface 108 includes a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transmit data (such as encoded video data) according to other wireless standards such as the IEEE 802.11 specification, the IEEE 802.15 specification (e.g., ZigBee TM ), Bluetooth TM Standards, etc.) to transmit data (such as encoded video data). In some examples, source device 102 and / or destination device 116 may include corresponding system-on-chip (SoC) devices. For example, source device 102 may include a SoC device for performing the functions assigned to video encoder 200 and / or output interface 108, and destination device 116 may include a SoC device for performing the functions assigned to video decoder 300 and / or input interface 122.

[0034] The techniques of the present disclosure can be applied to video encoding and decoding to support any of a variety of multimedia applications, such as over-the-air television broadcasting, cable television transmission, satellite television transmission, Internet streaming video transmission (such as Dynamic Adaptive Streaming over HTTP (DASH)), digital video encoded onto a data storage medium, decoding of digital video stored on a data storage medium, or other applications.

[0035] The input interface 122 of the target device 116 receives an encoded video bitstream from the computer-readable medium 110 (e.g., a communication medium, a storage device 112, a file server 114, etc.). The encoded video bitstream may include signaling information such as syntax elements defined by the video encoder 200 (which are also used by the video decoder 300): the syntax elements have values ​​that describe the characteristics and / or processing of video blocks or other codec units (e.g., slices, pictures, groups of pictures, sequences, etc.). The display device 118 displays the decoded pictures of the decoded video data to the user. The display device 118 may represent any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.

[0036] Despite Figure 1 Although not shown, in some examples, the video encoder 200 and the video decoder 300 can each be integrated with an audio encoder and / or an audio decoder and can include appropriate MUX-DEMUX units or other hardware and / or software to process multiplexed streams including both audio and video in a common data stream. If applicable, the MUX-DEMUX units can follow the ITU H.223 multiplexer protocol or other protocols such as the User Datagram Protocol (UDP).

[0037] The video encoder 200 and the video decoder 300 can each be implemented as any of a variety of suitable encoder and / or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the technology is partially implemented in software, the device can store instructions for the software in a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the technology of the present disclosure. Each of the video encoder 200 and the video decoder 300 can be included in one or more encoders or decoders, and either of the encoders or decoders can be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device. The device including the video encoder 200 and / or the video decoder 300 can include an integrated circuit, a microprocessor, and / or a wireless communication device (such as a cellular phone).

[0038] The video encoder 200 and the video decoder 300 may operate according to a video codec standard, such as the ITU-T H.265 standard, also known as the High Efficiency Video Coding (HEVC) standard, or an extension thereof, such as the multi-view and / or scalable video codec extension. Alternatively, the video encoder 200 and the video decoder 300 may operate according to other proprietary or industry standards, such as the ITU-T H.266 standard, also known as the Versatile Video Coding (VVC). The latest draft of the VVC standard is described in the following document by Bross et al.: “Versatile Video Coding (Draft 8)”, Joint Video Experts Group (JVET) of ITU-TSG16WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 17th Meeting: Brussels, Belgium, January 7-17, 2020, JVET-Q2001-vC (hereinafter referred to as “VVC Draft 8”). An updated draft is described in the following document by Bross et al.: "Versatile Video Coding Editorial Refinements on Draft 10," Joint Video Experts Team (JVET) of ITU-T SG 16WP3 and ISO / IEC JTC 1 / SC 29 / WG 11, 20th Meeting, Teleconference, October 7-16, 2020, JVET-T2001-v1. However, the techniques of this disclosure are not limited to any particular codec standard.

[0039] Typically, the video encoder 200 and the video decoder 300 can perform block-based encoding and decoding of pictures. The term "block" generally refers to a structure that includes data to be processed (e.g., to be encoded, decoded, or otherwise used in an encoding and / or decoding process). For example, a block can include a two-dimensional matrix of samples of luma and / or chroma data. Typically, the video encoder 200 and the video decoder 300 can encode and decode video data represented in a YUV (e.g., Y, Cb, Cr) format. That is, instead of encoding and decoding red, green, and blue (RGB) data for samples of a picture, the video encoder 200 and the video decoder 300 can encode and decode luma and chroma components, where the chroma components can include both red hue and blue hue chroma components. In some examples, the video encoder 200 converts the received RGB formatted data to a YUV representation before encoding, and the video decoder 300 converts the YUV representation to an RGB format. Alternatively, pre-processing and post-processing units (not shown) can perform these conversions.

[0040] In general, the present disclosure may relate to the encoding and decoding of pictures (e.g., encoding and decoding), including the process of encoding or decoding the data of a picture. Similarly, the present disclosure may relate to the encoding and decoding of blocks of a picture, including the process of encoding or decoding the data for the blocks (e.g., prediction and / or residual encoding and decoding). A coded video bitstream typically includes a series of values ​​for syntax elements that represent codec decisions (e.g., codec mode) and the partitioning of a picture into blocks. Therefore, references to encoding and decoding a picture or block should generally be understood as encoding and decoding the values ​​of the syntax elements used to form the picture or block.

[0041] HEVC defines various blocks, including codec units (CUs), prediction units (PUs), and transform units (TUs). According to HEVC, a video codec (such as the video encoder 200) partitions a codec tree unit (CTU) into CUs based on a quadtree structure. That is, the video codec partitions the CTU and CU into four equal, non-overlapping squares, and each node of the quadtree has zero or four child nodes. A node without child nodes may be referred to as a "leaf node," and the CU of such a leaf node may include one or more PUs and / or one or more TUs. The video codec may further partition the PUs and TUs. For example, in HEVC, the residual quadtree (RQT) represents the partitioning of the TUs. In HEVC, PU represents inter-frame prediction data, and TU represents residual data. An intra-predicted CU includes intra-frame prediction information, such as an intra-frame mode indication.

[0042] As another example, the video encoder 200 and the video decoder 300 can be configured to operate according to VVC. According to VVC, a video codec (such as the video encoder 200) partitions a picture into multiple codec tree units (CTUs). The video encoder 200 can partition the CTU according to a tree structure (such as a quadtree-binary tree (QTBT) structure or a multi-type tree (MTT) structure). The QTBT structure removes the concept of multiple partitioning types, such as the separation between CU, PU, ​​and TU in HEVC. The QTBT structure includes two layers: a first layer partitioned according to quadtree partitioning, and a second layer partitioned according to binary tree partitioning. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of the binary tree correspond to the codec units (CUs).

[0043] In the MTT partitioning structure, blocks can be partitioned using quadtree (QT) partitioning, binary tree (BT) partitioning, and one or more types of triple tree (TT) (also known as ternary tree (TT)) partitioning. Triple tree or ternary tree partitioning is a partitioning in which a block is divided into three sub-blocks. In some examples, triple tree or ternary tree partitioning divides a block into three sub-blocks without dividing the original block through the center. The partitioning types in MTT (e.g., QT, BT, and TT) can be symmetric or asymmetric.

[0044] In some examples, the video encoder 200 and the video decoder 300 may use a single QTBT or MTT structure to represent each of the luma component and the chroma components, while in other examples, the video encoder 200 and the video decoder 300 may use two or more QTBT or MTT structures, such as one QTBT / MTT structure for the luma component and another QTBT / MTT structure for the two chroma components (or two QTBT / MTT structures for the respective chroma components).

[0045] The video encoder 200 and the video decoder 300 can be configured to use quadtree segmentation, QTBT segmentation, MTT segmentation, or other segmentation structures according to HEVC. For the purpose of explanation, the technology of the present disclosure is described with respect to QTBT segmentation. However, it should be understood that the technology of the present disclosure can also be applied to video codecs configured to use quadtree segmentation or other types of segmentation.

[0046] Blocks (e.g., CTUs or CUs) can be grouped in a picture in various ways. As an example, a tile can refer to a rectangular area of ​​a CTU row within a particular slice in a picture. A slice can be a rectangular area of ​​a CTU within a particular slice column and a particular slice row in a picture. A slice column refers to a rectangular area of ​​a CTU with a height equal to the height of the picture and a width specified by a syntax element (e.g., such as a syntax element in a picture parameter set). A slice row refers to a rectangular area of ​​a CTU with a height specified by a syntax element (e.g., such as a syntax element in a picture parameter set) and a width equal to the width of the picture.

[0047] In some examples, a slice may be partitioned into multiple tiles, each of which may include one or more CTU rows within the slice. A slice that is not partitioned into multiple tiles may also be referred to as a tile. However, a tile that is a true subset of a slice may not be referred to as a slice.

[0048] Tiles in a picture can also be arranged in slices. A slice can be an integer number of tiles of a picture that can be uniquely contained in a single Network Abstraction Layer (NAL) unit. In some examples, a slice includes multiple complete slices or only a continuous sequence of complete tiles of a slice.

[0049] This disclosure may use "NxN" and "N by N" interchangeably to refer to the sample size of a block (such as a CU or other video block) in the vertical and horizontal dimensions, for example, 16x16 samples or 16 by 16 samples. Typically, a 16x16 CU will have 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Likewise, an NxN CU typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. The samples in a CU may be arranged in rows and columns. Furthermore, a CU does not necessarily need to have the same number of samples in the horizontal direction as in the vertical direction. For example, a CU may include NxM samples, where M is not necessarily equal to N.

[0050] The video encoder 200 encodes video data representing prediction and / or residual information and other information for a CU. The prediction information indicates how the CU will be predicted to form a prediction block for the CU. The residual information typically represents the sample-by-sample difference between the samples of the CU before encoding and the prediction block.

[0051] In order to predict a CU, the video encoder 200 can generally form a prediction block for the CU through inter-frame prediction or intra-frame prediction. Inter-frame prediction generally refers to predicting a CU from data of a previously coded picture, while intra-frame prediction generally refers to predicting a CU from previously coded data of the same picture. In order to perform inter-frame prediction, the video encoder 200 can use one or more motion vectors to generate a prediction block. The video encoder 200 can generally perform motion search to identify a reference block that closely matches the CU, for example, in terms of the difference between the CU and the reference block. The video encoder 200 can use the sum of absolute differences (SAD), the sum of squared differences (SSD), the mean absolute difference (MAD), the mean squared difference (MSD), or other such difference calculations to calculate a difference metric to determine whether the reference block closely matches the current CU. In some examples, the video encoder 200 can use unidirectional prediction or bidirectional prediction to predict the current CU.

[0052] Some examples of VVC also provide an affine motion compensation mode, which can be considered an inter-frame prediction mode. In affine motion compensation mode, the video encoder 200 can determine two or more motion vectors representing non-translational motion (such as zooming in or out, rotation, perspective motion, or other irregular motion types).

[0053] To perform intra prediction, the video encoder 200 can select an intra prediction mode to generate a prediction block. Some examples of VVC provide sixty-seven intra prediction modes, including various directional modes, as well as planar mode and DC mode. Typically, the video encoder 200 selects an intra prediction mode that describes the neighboring samples of the current block (e.g., the block of the CU) from which the samples of the current block are to be predicted. Assuming that the video encoder 200 encodes and decodes CTUs and CUs in raster scan order (from left to right, from top to bottom), such samples can typically be above, above left, or to the left of the current block in the same picture as the current block.

[0054] The video encoder 200 encodes data indicating a prediction mode for the current block. For example, for inter-frame prediction mode, the video encoder 200 may encode data indicating which of various available inter-frame prediction modes to use, as well as motion information for the corresponding mode. For unidirectional or bidirectional inter-frame prediction, for example, the video encoder 200 may encode motion vectors using Advanced Motion Vector Prediction (AMVP) or merge mode. The video encoder 200 may use a similar mode to encode motion vectors for affine motion compensation mode.

[0055] After a prediction, such as intra prediction or inter prediction, of a block, the video encoder 200 may calculate residual data for the block. The residual data, such as a residual block, represents the sample-by-sample difference between the block and a prediction block for the block, which is formed using a corresponding prediction mode. The video encoder 200 may apply one or more transforms to the residual block to produce transformed data in a transform domain rather than in a sample domain. For example, the video encoder 200 may apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the residual video data. In addition, the video encoder 200 may apply a secondary transform, such as a mode-dependent non-separable secondary transform (MDNSST), a signal-dependent transform, a Karhunen-Loeve transform (KLT), etc., after the first transform. The video encoder 200 generates transform coefficients after applying one or more transforms.

[0056] As described above, after any transform to produce transform coefficients, the video encoder 200 may perform quantization on the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to potentially reduce the amount of data used to represent the transform coefficients, thereby providing further compression. By performing the quantization process, the video encoder 200 may reduce the bit depth associated with some or all transform coefficients. For example, the video encoder 200 may round down an n-bit value to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, the video encoder 200 may perform a bitwise right shift of the value to be quantized.

[0057] After quantization, the video encoder 200 can scan the transform coefficients to produce a one-dimensional vector from the two-dimensional matrix including the quantized transform coefficients. The scan can be designed to place transform coefficients with higher energy (and therefore lower frequency) at the front of the vector and transform coefficients with lower energy (and therefore higher frequency) at the back of the vector. In some examples, the video encoder 200 can scan the quantized transform coefficients using a predefined scan order to produce a serialized vector and then entropy encode the quantized transform coefficients of the vector. In other examples, the video encoder 200 can perform adaptive scanning. After scanning the quantized transform coefficients to form a one-dimensional vector, the video encoder 200 can entropy encode the one-dimensional vector, for example, according to context-adaptive binary arithmetic coding (CABAC). The video encoder 200 can also entropy encode the values ​​of syntax elements used to describe metadata associated with the encoded video data for use by the video decoder 300 when decoding the video data.

[0058] To perform CABAC, the video encoder 200 may assign context within a context model to a symbol to be transmitted. The context may relate to, for example, whether the neighboring values ​​of the symbol are zero. The probability determination may be based on the context assigned to the symbol.

[0059] The video encoder 200 may also generate syntax data (such as block-based syntax data, picture-based syntax data, and sequence-based syntax data) or other syntax data (such as a sequence parameter set (SPS), a picture parameter set (PPS), or a video parameter set (VPS)) to the video decoder 300, for example, in a picture header, a block header, or a slice header. Similarly, the video decoder 300 may decode such syntax data to determine how to decode the corresponding video data.

[0060] In this way, the video encoder 200 can generate a bitstream that includes coded video data, such as syntax elements describing the partitioning of a picture into blocks (e.g., CUs) and prediction and / or residual information for the blocks. Ultimately, the video decoder 300 can receive the bitstream and decode the coded video data.

[0061] In general, the video decoder 300 performs a process that is inverse to the process performed by the video encoder 200 to decode the encoded video data of the bitstream. For example, the video decoder 300 can use CABAC to decode the values ​​of the syntax elements of the bitstream in a manner substantially similar to, but inverse to, the CABAC encoding process of the video encoder 200. The syntax elements can define partitioning information for partitioning a picture into CTUs and partitioning each CTU according to a corresponding partitioning structure (such as a QTBT structure) to define CUs of the CTU. The syntax elements can also define prediction and residual information for a block of video data (e.g., a CU).

[0062] The residual information may be represented by, for example, quantized transform coefficients. The video decoder 300 may inverse quantize and inverse transform the quantized transform coefficients of the block to reproduce a residual block for the block. The video decoder 300 uses the signaled prediction mode (intra-frame prediction or inter-frame prediction) and associated prediction information (e.g., motion information for inter-frame prediction) to form a prediction block for the block. The video decoder 300 may then combine the prediction block and the residual block (on a sample-by-sample basis) to reproduce the original block. The video decoder 300 may perform additional processing, such as deblocking, to reduce visual artifacts along block boundaries.

[0063] According to the technology of the present disclosure, a method includes: determining whether a sequence parameter set of video data references a video parameter set; based on the sequence parameter set not referencing the video parameter set, determining that a value of a first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set; and encoding and decoding the video data based on the profile-tier-level structure.

[0064] In another example, a method includes determining whether there are no NAL units with a progressive decoding refresh network abstraction layer (NAL) unit type and a NAL unit header type in an output layer set; determining, based on the absence of NAL units with a NAL unit header type and a progressive decoding refresh NAL unit type in the output layer set, that a value of a first syntax element indicates that there are no progressive decoder refresh pictures in a codec layer video sequence; and encoding and decoding video data of the codec layer video sequence without encoding and decoding the progressive decoder refresh pictures.

[0065] In another example, a device includes: a memory configured to store video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether a sequence parameter set for the video data references a video parameter set; determine, based on the sequence parameter set not referencing the video parameter set, that a value of a first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set; and encode or decode the video data based on the profile-tier-level structure.

[0066] In another example, a device includes: a memory configured to store video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether there are no NAL units with a progressive decoding refresh network abstraction layer (NAL) unit type having a NAL unit header type in an output layer set; determine, based on the absence of NAL units with a NAL unit header type having a progressive decoding refresh NAL unit type in the output layer set, that a value of a first syntax element indicates that there are no progressive decoder refresh pictures in a codec layer video sequence; and encode and decode video data of the codec layer video sequence without encoding and decoding the progressive decoder refresh pictures.

[0067] In general, the present disclosure may involve "signaling" certain information (such as syntax elements). The term "signaling" may generally refer to the transmission of values ​​for syntax elements and / or other data used to decode encoded video data. That is, the video encoder 200 may signal the values ​​of syntax elements in a bitstream. Generally, signaling refers to generating values ​​in a bitstream. As described above, the source device 102 may transmit the bitstream to the destination device 116 in substantially real time or in non-real time (such as may occur when storing syntax elements to the storage device 112 for later retrieval by the destination device 116).

[0068] Figure 2A and 2B is a conceptual diagram showing an example quadtree binary tree (QTBT) structure 130 and a corresponding codec tree unit (CTU) 132. Solid lines represent quadtree partitions, while dashed lines indicate binary tree partitions. In each partition (i.e., non-leaf) node of the binary tree, a flag is signaled to indicate which partition type (i.e., horizontal or vertical) is used, where, in this example, 0 indicates horizontal partitioning and 1 indicates vertical partitioning. For quadtree partitioning, since the quadtree node divides the block horizontally and vertically into 4 sub-blocks of equal size, there is no need to indicate the partition type. Therefore, the video encoder 200 can encode the following, and the video decoder 300 can decode the following: syntax elements (such as partition information) of the region tree layer (i.e., solid lines) of the QTBT structure 130, and syntax elements (such as partition information) of the prediction tree layer (i.e., dashed lines) of the QTBT structure 130. The video encoder 200 may encode video data (such as prediction and transform data) of the CU represented by the terminal leaf node of the QTBT structure 130 , and the video decoder 300 may decode the video data.

[0069] generally, Figure 2B The CTU 132 may be associated with parameters defining the size of blocks corresponding to nodes at the first and second layers of the QTBT structure 130. These parameters may include the CTU size (the size of the CTU 132 expressed in samples), the minimum quadtree size (MinQTSize, which represents the minimum allowed quadtree leaf node size), the maximum binary tree size (MaxBTSize, which represents the maximum allowed binary tree root node size), the maximum binary tree depth (MaxBTDepth, which represents the maximum allowed binary tree depth), and the minimum binary tree size (MinBTSize, which represents the minimum allowed binary tree leaf node size).

[0070] The root node of the QTBT structure corresponding to the CTU can have four child nodes at the first layer of the QTBT structure, and each child node can be split according to the quadtree partitioning. That is, the nodes of the first layer are leaf nodes (no child nodes) or have four child nodes. The example of the QTBT structure 130 represents such a node as including a parent node and child nodes with solid line branches. If the nodes of the first layer are not larger than the maximum allowed binary tree root node size (MaxBTSize), these nodes can be further partitioned by the corresponding binary tree. The binary tree partitioning of a node can be iterated until the node resulting from the partition reaches the minimum allowed binary tree leaf node size (MinBTSize) or the maximum allowed binary tree depth (MaxBTDepth). The example of the QTBT structure 130 represents such a node as having dotted line branches. The binary tree leaf node is called a coding unit (CU), which is used for prediction (e.g., intra-picture or inter-picture prediction) and transformation without any further partitioning. As discussed above, a CU can also be referred to as a "video block" or "block."

[0071] In one example of a QTBT partitioning structure, the CTU size is set to 128x128 (luminance sample and two corresponding 64x64 chroma samples), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (for both width and height) is set to 4, and MaxBTDepth is set to 4. Quadtree partitioning is first applied to the CTU to generate quadtree leaf nodes. Quadtree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., CTU size). If the quadtree leaf node is 128x128, then since the size exceeds MaxBTSize (i.e., 64x64 in this example), the leaf quadtree node will not be further divided by the binary tree. Otherwise, the quadtree leaf node will be further divided by the binary tree. Therefore, the quadtree leaf node is also the root node for the binary tree and has a binary tree depth of 0. When the binary tree depth reaches MaxBTDepth (4 in this example), no further splitting is allowed. When a binary tree node has a width equal to MinBTSize (4 in this example), it means that no further vertical splitting is allowed. Similarly, a binary tree node with a height equal to MinBTSize means that no further horizontal splitting is allowed for the binary tree node. As described above, the leaf nodes of the binary tree are called CUs and are further processed according to prediction and transformation without further segmentation.

[0072] Figure 3 is a block diagram illustrating an example video encoder 200 that may perform the techniques of this disclosure. Figure 3This is provided for the purpose of explanation and should not be considered as limiting the techniques broadly illustrated and described in this disclosure. For the purpose of explanation, this disclosure describes a video encoder 200 based on techniques of VVC (under development ITU-T H.266) and HEVC (ITU-T H.265). However, the techniques of this disclosure can be performed by video encoding devices configured for other video codec standards.

[0073] exist Figure 3 In the example of FIG, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a filter unit 216, a decoded picture buffer (DPB) 218, and an entropy coding unit 220. Any one or all of the video data memory 230, the mode selection unit 202, the residual generation unit 204, the transform processing unit 206, the quantization unit 208, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the filter unit 216, the DPB 218, and the entropy coding unit 220 can be implemented in one or more processors or in processing circuitry. For example, the units of the video encoder 200 can be implemented as one or more circuits or logic elements as part of a hardware circuit or as part of a processor, ASIC, or FPGA. Furthermore, the video encoder 200 can include additional or alternative processors or processing circuitry to perform these and other functions.

[0074] The video data memory 230 may store video data to be encoded by the components of the video encoder 200. The video encoder 200 may receive video data from, for example, the video source 104 ( Figure 1 ) receives video data stored in the video data memory 230. The DPB 218 can act as a reference picture memory that stores reference video data for use when the video encoder 200 predicts subsequent video data. The video data memory 230 and the DPB 218 can be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM)), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The video data memory 230 and the DPB 218 can be provided by the same memory device or separate memory devices. In various examples, the video data memory 230 can be on-chip with other components of the video encoder 200 (as shown), or off-chip relative to those components.

[0075] In this disclosure, references to the video data memory 230 should not be construed as limited to memory internal to the video encoder 200 (unless specifically described as such), or to memory external to the video encoder 200 (unless specifically described as such). Rather, references to the video data memory 230 should be understood as references to memory that stores video data received by the video encoder 200 for encoding (e.g., video data for a current block to be encoded). Figure 1 The memory 106 may also provide temporary storage for outputs from the various units of the video encoder 200 .

[0076] Shown Figure 3 The various units of the video encoder 200 are described to help understand the operations performed by the video encoder 200. These units can be implemented as fixed-function circuits, programmable circuits, or a combination thereof. Fixed-function circuits refer to circuits that provide specific functions and are pre-set with respect to the operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality with respect to the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuits can execute software instructions (e.g., to receive parameters or output parameters), but the types of operations performed by fixed-function circuits are generally immutable. In some examples, one or more of these units can be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units can be integrated circuits.

[0077] The video encoder 200 may include an arithmetic logic unit (ALU), an elementary function unit (EFU), a digital circuit, an analog circuit, and / or a programmable core formed by a programmable circuit. In an example where the operation of the video encoder 200 is performed using software executed by a programmable circuit, the memory 106 ( Figure 1 ) may store instructions (eg, object code) for software that the video encoder 200 receives and executes, or another memory (not shown) within the video encoder 200 may store such instructions.

[0078] The video data memory 230 is configured to store the received video data. The video encoder 200 can retrieve the picture of the video data from the video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202. The video data in the video data memory 230 can be the original video data to be encoded.

[0079] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an intra prediction unit 226. The mode selection unit 202 may include additional functional units that perform video prediction according to other prediction modes. For example, the mode selection unit 202 may include a palette unit, an intra block copy unit (which may be part of the motion estimation unit 222 and / or the motion compensation unit 224), an affine unit, a linear model (LM) unit, etc.

[0080] The mode selection unit 202 typically coordinates multiple encoding passes to test combinations of encoding parameters and the resulting rate-distortion values ​​for such combinations. The encoding parameters may include the partitioning of a CTU into CUs, the prediction mode used for a CU, the transform type used for the residual data of a CU, the quantization parameter used for the residual data of a CU, etc. The mode selection unit 202 may ultimately select a combination of encoding parameters that has a better rate-distortion value than other tested combinations.

[0081] In some examples, mode selection unit 202 may determine parameter sets that may be encoded into a bitstream by entropy encoding unit 220. For example, mode selection unit 202 may determine a sequence parameter set and a video parameter set.

[0082] In some examples, mode selection unit 202 may determine whether a sequence parameter set for video data references a video parameter set. Based on the sequence parameter set not referencing the video parameter set, mode selection unit 202 may determine that the value of the first syntax element indicates that the profile-tier-level structure is signaled in the sequence parameter set.

[0083] In some examples, mode selection unit 202 may determine whether there are no NAL units with a NAL unit header type of a progressive decoding refresh network abstraction layer (NAL) unit type in the output layer set. Based on the absence of NAL units with a NAL unit header type of a progressive decoding refresh NAL unit type in the output layer set, mode selection unit 202 may determine that the value of the first syntax element indicates that there are no progressive decoder refresh pictures in the codec layer video sequence.

[0084] The video encoder 200 may partition a picture retrieved from the video data memory 230 into a series of CTUs and encapsulate one or more CTUs into a slice. The mode selection unit 202 may partition the CTUs of the picture according to a tree structure (such as the QTBT structure or quadtree structure of HEVC described above). As described above, the video encoder 200 may form one or more CUs by partitioning the CTUs according to the tree structure. Such CUs may also be generally referred to as "video blocks" or "blocks."

[0085] Typically, mode select unit 202 also controls its components (e.g., motion estimation unit 222, motion compensation unit 224, and intra prediction unit 226) to generate a prediction block for the current block (e.g., the current CU, or, in HEVC, the overlapping portion of a PU and TU). To perform inter prediction on the current block, motion estimation unit 222 may perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (e.g., one or more previously coded pictures stored in DPB 218). Specifically, motion estimation unit 222 may calculate values ​​indicating how similar potential reference blocks are to the current block, such as based on sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), mean squared difference (MSD), and the like. Motion estimation unit 222 may typically perform these calculations using sample-by-sample differences between the current block and the reference block being considered. Motion estimation unit 222 may identify the reference block with the lowest value resulting from these calculations, indicating the reference block that most closely matches the current block.

[0086] Motion estimation unit 222 may form one or more motion vectors (MVs) that define the position of a reference block in a reference picture relative to the position of a current block in the current picture. Motion estimation unit 222 may then provide the motion vectors to motion compensation unit 224. For example, for unidirectional inter prediction, motion estimation unit 222 may provide a single motion vector, while for bidirectional inter prediction, motion estimation unit 222 may provide two motion vectors. Motion compensation unit 224 may then use the motion vectors to generate a prediction block. For example, motion compensation unit 224 may use the motion vectors to retrieve data for the reference block. As another example, if the motion vectors have fractional sample precision, motion compensation unit 224 may interpolate values ​​for the prediction block based on one or more interpolation filters. Furthermore, for bidirectional inter prediction, motion compensation unit 224 may retrieve data for two reference blocks identified by their respective motion vectors and combine the retrieved data, for example, by sample-by-sample averaging or weighted averaging.

[0087] As another example, for intra prediction or intra prediction codecs, the intra prediction unit 226 can generate a prediction block from samples adjacent to the current block. For example, for directional mode, the intra prediction unit 226 can generally mathematically combine the values ​​of the adjacent samples and pad these calculated values ​​across the current block in a defined direction to produce a prediction block. As another example, for DC mode, the intra prediction unit 226 can calculate the average of the adjacent samples of the current block and generate a prediction block to include the obtained average for each sample of the prediction block.

[0088] The mode selection unit 202 provides the prediction block to a residual generation unit 204. The residual generation unit 204 receives the original, uncoded version of the current block from the video data memory 230 and receives the prediction block from the mode selection unit 202. The residual generation unit 204 computes the point-wise difference between the current block and the prediction block. The resulting point-wise difference defines a residual block for the current block. In some examples, the residual generation unit 204 can also determine the difference between sample values in the residual block to generate the residual block using residual differential pulse code modulation (RDPCM). In some examples, the residual generation unit 204 can be formed using one or more subtractor circuits that perform binary subtraction.

[0089] In examples where the mode selection unit 202 partitions the CU into PUs, each PU can be associated with a luma prediction unit and corresponding chroma prediction units. Video encoder 200 and video decoder 300 can support PUs having various sizes. As indicated above, the size of a CU can refer to the size of the luma coding block for the CU, while the size of a PU can refer to the size of the luma prediction unit for the PU. Assuming that a particular CU has a size of 2Nx2N, video encoder 200 can support PU sizes of 2Nx2N or NxN for intra-prediction, and 2Nx2N, 2NxN, Nx2N, NxN, or similar symmetric PU sizes for inter-prediction. Video encoder 200 and video decoder 300 can also support asymmetric partitioning for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-prediction.

[0090] In examples where the mode selection unit 202 does not partition the CU into PUs, each CU can be associated with a luma coding block and corresponding chroma coding blocks. As described above, the size of a CU can refer to the size of the luma coding block for the CU. Video encoder 200 and video decoder 300 can support CU sizes of 2Nx2N, 2NxN, or Nx2N.

[0091] For other video coding techniques (such as intra block copy mode coding, affine mode coding, and linear model (LM) mode coding, to name a few), the mode selection unit 202 generates the prediction block for the current block being coded via a respective unit associated with the coding technique. In some examples (such as palette mode coding), the mode selection unit 202 can not generate a prediction block, but instead generate syntax elements that indicate a way to reconstruct the block based on a selected palette. In such modes, the mode selection unit 202 can provide the syntax elements to the entropy encoding unit 220 for encoding.

[0092] As described above, the residual generation unit 204 receives video data for a current block and a corresponding prediction block. The residual generation unit 204 then generates a residual block for the current block. To generate the residual block, the residual generation unit 204 calculates the sample-by-sample difference between the prediction block and the current block.

[0093] The transform processing unit 206 applies one or more transforms to the residual block to generate a block of transform coefficients (referred to herein as a "transform coefficient block"). The transform processing unit 206 may apply various transforms to the residual block to form the transform coefficient block. For example, the transform processing unit 206 may apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to the residual block. In some examples, the transform processing unit 206 may perform multiple transforms on the residual block, for example, a primary transform and a secondary transform (such as a rotation transform). In some examples, the transform processing unit 206 does not apply a transform to the residual block.

[0094] The quantization unit 208 may quantize the transform coefficients in the transform coefficient block to produce a quantized transform coefficient block. The quantization unit 208 may quantize the transform coefficients of the transform coefficient block according to a quantization parameter (QP) value associated with the current block. The video encoder 200 (e.g., via the mode selection unit 202) may adjust the degree of quantization applied to the transform coefficient block associated with the current block by adjusting the QP value associated with the CU. Quantization may result in a loss of information, and therefore, the quantized transform coefficients may have lower precision than the original transform coefficients produced by the transform processing unit 206.

[0095] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transform, respectively, to the quantized transform coefficient block to reconstruct a residual block from the transform coefficient block. The reconstruction unit 214 may generate a reconstructed block corresponding to the current block (although possibly with some degree of distortion) based on the reconstructed residual block and the prediction block generated by the mode selection unit 202. For example, the reconstruction unit 214 may add samples of the reconstructed residual block to corresponding samples from the prediction block generated by the mode selection unit 202 to generate a reconstructed block.

[0096] Filter unit 216 may perform one or more filter operations on the reconstructed block. For example, filter unit 216 may perform a deblocking operation to reduce blocking artifacts along the edges of the CU. In some examples, the operations of filter unit 216 may be skipped.

[0097] The video encoder 200 stores the reconstructed block in the DPB 218. For example, in examples where the operation of the filter unit 216 is not required, the reconstruction unit 214 can store the reconstructed block in the DPB 218. In examples where the operation of the filter unit 216 is required, the filter unit 216 can store the filtered reconstructed block in the DPB 218. The motion estimation unit 222 and the motion compensation unit 224 can retrieve a reference picture formed by the reconstructed (and possibly filtered) block from the DPB 218 to perform inter-frame prediction on blocks of subsequently encoded pictures. In addition, the intra-frame prediction unit 226 can use the reconstructed block of the current picture in the DPB 218 to perform intra-frame prediction on other blocks in the current picture.

[0098] In general, entropy coding unit 220 may entropy encode syntax elements received from other functional components of video encoder 200. For example, entropy coding unit 220 may entropy encode quantized transform coefficient blocks from quantization unit 208. As another example, entropy coding unit 220 may entropy encode prediction syntax elements (e.g., motion information for inter-frame prediction or intra-frame mode information for intra-frame prediction) from mode selection unit 202. Entropy coding unit 220 may perform one or more entropy encoding operations on syntax elements, another example of video data, to generate entropy-encoded data. For example, entropy coding unit 220 may perform a context-adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable-to-variable (V2V) length coding operation, a syntax-based context-adaptive binary arithmetic coding (SBAC) operation, a probability interval partitioning entropy (PIPE) coding operation, an exponential Golomb coding operation, or another type of entropy coding operation on the data. In some examples, entropy coding unit 220 may operate in a bypass mode in which syntax elements are not entropy encoded.

[0099] The video encoder 200 may output a bitstream including entropy-encoded syntax elements required for reconstructing blocks of a slice or picture. Specifically, the entropy encoding unit 220 may output a bitstream.

[0100] The above operations are described with respect to blocks. Such descriptions should be understood as operations for luma codec blocks and / or chroma codec blocks. As described above, in some examples, the luma codec blocks and chroma codec blocks are the luma components and chroma components of a CU. In some examples, the luma codec blocks and chroma codec blocks are the luma components and chroma components of a PU.

[0101] In some examples, the operations performed for luma coding blocks do not need to be repeated for chroma codec blocks. As an example, the operations used to identify the motion vector (MV) and reference picture for the luma codec block do not need to be repeated to identify the MV and reference picture for the chroma blocks. Specifically, the MV of the luma codec block can be scaled to determine the MV for the chroma blocks, and the reference picture can be the same. As another example, the intra prediction process can be the same for luma codec blocks and chroma codec blocks.

[0102] Video encoder 200 represents an example of a device configured to encode video data, the device comprising: a memory configured to store the video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether a sequence parameter set for the video data references a video parameter set; determine, based on the sequence parameter set not referencing the video parameter set, that a value of a first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set; and encode the video data based on the profile-tier-level structure.

[0103] The video encoder 200 also represents an example of a device configured to encode video data, the device comprising: a memory configured to store the video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether there are no NAL units with a progressive decoding refresh network abstraction layer (NAL) unit type having a NAL unit header type in the output layer set; determine, based on the absence of NAL units with a NAL unit header type having a progressive decoding refresh NAL unit type in the output layer set, that a value of the first syntax element indicates that there are no progressive decoder refresh pictures in the codec layer video sequence; and encode the video data of the codec layer video sequence without encoding the progressive decoder refresh pictures.

[0104] Figure 4 is a block diagram illustrating an example video decoder 300 that may perform the techniques of this disclosure. Figure 4 This is provided for purposes of explanation and does not limit the techniques broadly illustrated and described in this disclosure. For purposes of explanation, this disclosure describes the video decoder 300 based on the techniques of VVC (ITU-T H.266 under development) and HEVC (ITU-T H.265). However, the techniques of this disclosure can be performed by video codec devices configured for other video codec standards.

[0105] exist Figure 4In the example of FIG, video decoder 300 includes a codec picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a filter unit 312, and a decoded picture buffer (DPB) 134. Any or all of CPB memory 320, entropy decoding unit 302, prediction processing unit 304, inverse quantization unit 306, inverse transform processing unit 308, reconstruction unit 310, filter unit 312, and DPB 134 may be implemented in one or more processors or processing circuitry. For example, the units of video decoder 300 may be implemented as one or more circuits or logic components as part of a hardware circuit, or as part of a processor, ASIC, or FPGA. Furthermore, video decoder 300 may include additional or alternative processors or processing circuitry to perform these and other functions.

[0106] The prediction processing unit 304 includes a motion compensation unit 316 and an intra prediction unit 318. The prediction processing unit 304 may include additional units that perform predictions according to other prediction modes. As an example, the prediction processing unit 304 may include a palette unit, an intra block copy unit (which may form part of the motion compensation unit 316), an affine unit, a linear model (LM) unit, etc. In other examples, the video decoder 300 may include more, fewer, or different functional components.

[0107] CPB memory 320 may store video data, such as an encoded video bitstream, to be decoded by components of video decoder 300. For example, the video bitstream may be encoded from computer readable medium 110 ( Figure 1 ) obtains video data stored in CPB memory 320. CPB memory 320 may include a CPB that stores coded video data (e.g., syntax elements) from a coded video bitstream. Furthermore, CPB memory 320 may store video data other than syntax elements for coded or decoded pictures, such as temporary data representing outputs from various units of video decoder 300. DPB 314 typically stores decoded pictures, which video decoder 300 may output and / or use as reference video data when decoding subsequent data or pictures in the coded video bitstream. CPB memory 320 and DPB 314 may be formed from any of a variety of memory devices, such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. CPB memory 320 and DPB 314 may be provided by the same memory device or separate memory devices. In various examples, CPB memory 320 may be on-chip with other components of video decoder 300 or off-chip relative to those components.

[0108] Additionally or alternatively, in some examples, video decoder 300 may retrieve the video from memory 120 ( Figure 1 ) retrieves the encoded and decoded video data. That is, memory 120 may store data as discussed above with respect to CPB memory 320. Similarly, when some or all of the functionality of video decoder 300 is implemented in software to be executed by the processing circuitry of video decoder 300, memory 120 may store instructions to be executed by video decoder 300.

[0109] Shown Figure 4 The various units shown in FIG. 3 are provided to aid in understanding the operations performed by the video decoder 300. These units may be implemented as fixed function circuits, programmable circuits, or a combination thereof. Figure 3 , fixed-function circuitry refers to circuits that provide specific functionality and are pre-set with respect to the operations that can be performed. Programmable circuitry refers to circuits that can be programmed to perform various tasks and provide flexible functionality in terms of the operations that can be performed. For example, a programmable circuit can execute software or firmware that causes the programmable circuit to operate in a manner defined by the instructions of the software or firmware. Fixed-function circuitry can execute software instructions (e.g., to receive parameters or output parameters), but the type of operations performed by the fixed-function circuitry is generally immutable. In some examples, one or more of these units may be different circuit blocks (fixed-function or programmable), and in some examples, one or more of these units may be integrated circuits.

[0110] The video decoder 300 may include an ALU, an EFU, digital circuits, analog circuits, and / or a programmable core formed by programmable circuits. In an example where the operation of the video decoder 300 is performed by software executed on the programmable circuits, on-chip or off-chip memory may store instructions (e.g., object code) of the software received and executed by the video decoder 300.

[0111] The entropy decoding unit 302 may receive the encoded video data from the CPB and perform entropy decoding on the video data to reproduce the syntax elements. The prediction processing unit 304, the inverse quantization unit 306, the inverse transform processing unit 308, the reconstruction unit 310, and the filter unit 312 may generate decoded video data based on the syntax elements extracted from the bitstream.

[0112] Typically, the video decoder 300 reconstructs a picture block by block. The video decoder 300 may perform a reconstruction operation on each block individually (wherein a block currently being reconstructed (ie, decoded) may be referred to as a "current block").

[0113] The entropy decoding unit 302 may entropy decode syntax elements defining the quantized transform coefficients of the quantized transform coefficient block and transform information such as a quantization parameter (QP) and / or a transform mode indication. The inverse quantization unit 306 may use the QP associated with the quantized transform coefficient block to determine a degree of quantization and, similarly, determine a degree of inverse quantization for the inverse quantization unit 306 to apply. The inverse quantization unit 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. The inverse quantization unit 306 may thereby form a transform coefficient block comprising the transform coefficients.

[0114] After the inverse quantization unit 306 forms the transform coefficient block, the inverse transform processing unit 308 may apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, the inverse transform processing unit 308 may apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotational transform, an inverse directional transform, or another inverse transform to the transform coefficient block.

[0115] In addition, prediction processing unit 304 generates a prediction block based on the prediction information syntax element entropy decoded by entropy decoding unit 302. For example, if the prediction information syntax element indicates that the current block is inter-predicted, motion compensation unit 316 may generate a prediction block. In this case, the prediction information syntax element may indicate a reference picture in DPB 314 from which to retrieve the reference block, and a motion vector that identifies the position of the reference block in the reference picture relative to the position of the current block in the current picture. Motion compensation unit 316 may generally generate a prediction block in the same manner as described with respect to motion compensation unit 224 ( Figure 3 ) is performed in a manner substantially similar to that described in the foregoing.

[0116] As another example, if the prediction information syntax element indicates that the current block is intra-predicted, the intra-prediction unit 318 may generate a prediction block according to the intra-prediction mode indicated by the prediction information syntax element. Again, the intra-prediction unit 318 may generally generate a prediction block in the same manner as described with respect to the intra-prediction unit 226 ( Figure 3 The intra prediction process is performed in a manner substantially similar to that described in the preceding claims. The intra prediction unit 318 may retrieve data of neighboring samples of the current block from the DPB 314.

[0117] In some examples, entropy decoding unit 302 can decode parameter sets from the coded video bitstream, and prediction processing unit 304 can determine parameter sets from the coded video bitstream. For example, prediction processing unit 304 can determine a sequence parameter set and a video parameter set.

[0118] In some examples, prediction processing unit 304 can determine whether a sequence parameter set for video data references a video parameter set. Based on the sequence parameter set not referencing the video parameter set, prediction processing unit 304 can determine that a value of the first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set. The value of the first syntax element indicating that a profile-tier-level structure is signaled in the sequence parameter set can be based on the sequence parameter set not referencing the video parameter set, because video encoder 200 can set the value of the first syntax element in this manner to meet bitstream conformance requirements.

[0119] In some examples, the prediction processing unit 304 can determine whether there are no NAL units with a NAL unit header type of a progressive decoding refresh network abstraction layer (NAL) unit type in the output layer set. Based on the absence of NAL units with a NAL unit header type of the progressive decoding refresh NAL unit type in the output layer set, the prediction processing unit 304 can determine that the value of the first syntax element indicates that there are no progressive decoder refresh pictures in the codec layer video sequence. The value of the first syntax element indicating that there are no progressive decoder refresh pictures in the codec layer video sequence can be based on the absence of NAL units with a NAL unit header type of the progressive decoding refresh NAL unit type in the output layer set, because the video encoder 200 can set the value of the first syntax element in this way to meet bitstream conformance requirements.

[0120] The reconstruction unit 310 may reconstruct the current block using the prediction block and the residual block. For example, the reconstruction unit 310 may add samples of the residual block to corresponding samples of the prediction block to reconstruct the current block.

[0121] The filter unit 312 may perform one or more filter operations on the reconstructed block. For example, the filter unit 312 may perform a deblocking operation to reduce blocking artifacts along the edges of the reconstructed block. The operations of the filter unit 312 may not necessarily be performed in all examples.

[0122] The video decoder 300 may store the reconstructed block in the DPB 314. For example, in examples where the operation of the filter unit 312 is not performed, the reconstruction unit 310 may store the reconstructed block in the DPB 314. In examples where the operation of the filter unit 312 is performed, the filter unit 312 may store the filtered reconstructed block in the DPB 314. As discussed above, the DPB 314 may provide reference information (such as samples of the current picture for intra prediction and previously decoded pictures for subsequent motion compensation) to the prediction processing unit 304. In addition, the video decoder 300 may output a decoded picture (e.g., a decoded video) from the DPB 314 for use in, for example, Figure 1 Subsequent presentation on the display device 118 of the display device.

[0123] In this way, video decoder 300 represents an example of a video data decoding device including a memory configured to store video data, and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to determine whether a sequence parameter set of the video data references a video parameter set, determine, based on the sequence parameter set not referencing the video parameter set, that a value of a first syntax element indicates that a tier-level-grade hierarchy is signaled in the sequence parameter set, and decode the video data based on the tier-level-grade hierarchy.

[0124] Video encoder 300 also represents an example of a device configured to decode video data, the device including a memory configured to store video data, and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to determine whether there is an absence of network abstraction layer (NAL) units having a NAL unit header type of a gradual decoding refresh NAL unit type in an output layer set, determine, based on the absence of the NAL units having the NAL unit header type of the gradual decoding refresh NAL unit type in the output layer set, that a value of a first syntax element indicates an absence of a gradual decoder refresh picture in a coded layer video sequence, and decode video data of the coded layer video sequence without encoding the gradual decoder refresh picture.

[0125] As described above, the present disclosure describes techniques for improving signaling in video coding as compared to existing techniques. These existing techniques can be those set forth in the draft of the Versatile Video Coding (VVC) standard. The Joint Video Expert Team (JVET) of ITU-T and ISO / IEC has developed VVC to achieve significant compression capabilities over HEVC for a broadened range of applications. VVC Draft 8 specifies normalized bitstreams and picture formats, high-level syntax (HLS) and semantics, and parsing and decoding processes. VVC Draft 8 also specifies tier / level / grade (PTL) restrictions, byte stream format, hypothetical reference decoder, and supplemental enhancement information (SEI) in an annex.

[0126] VVC Draft 8 inherits multiple high-level features from HEVC, such as network abstraction layer (NAL) unit and parameter set concepts, tile and wavefront parallel processing, layered coding, and use of SEI messages for supplemental data signaling. Additional new high-level features are included in VVC Draft 8, including rectangular slices and subpicture concepts, picture resolution adaptation, mixed NAL unit types, picture header, gradual decoding refresh (GDR) pictures, virtual boundaries, and reference picture lists (RPLs) for reference picture management.

[0127] The sub-picture concept is supported in VVC draft 8 to address 360-degree video applications, such as viewport-dependent streaming as specified in the following document: ISO / IEC JTC1 / SC29 / WG11 N19042, "Text of ISO / IEC DIS 23090-22nd edition OMAF," January 2020 (hereinafter referred to as "OMAF"). OMAF stands for Panoramic Media Format.

[0128] A picture can be divided into one or more slice rows and one or more slice columns. A slice is a series of CTUs that covers a rectangular area of ​​the picture. A raster scan slice contains a series of complete slices in a slice raster scan of the picture. A rectangular slice contains multiple complete slices that together form a rectangular area of ​​the picture, or multiple consecutive complete CTU rows of a slice that together form a rectangular area of ​​the picture. A sub-picture contains one or more rectangular slices that together cover a rectangular area of ​​the picture. Therefore, every sub-picture boundary is also a slice boundary, and every vertical sub-picture boundary is also a vertical slice boundary.

[0129] Figure 5 is a conceptual diagram showing an example of sub-picture segmentation of a picture. Figure 5 In the example of , CTUs are represented by long dashed lines, slices are represented by solid lines, slices are represented by dotted lines, and sub-pictures are represented by medium dashed lines. In this example, the picture contains 4x6 CTUs and is partitioned into 6 slices (400, 402, 404, 406, 408, and 410), i.e., 2 slices (400 and 402) on the left hand side (covering one slice of 16 CTUs), 4 slices (404, 406, 408, and 410) on the right hand side (each covering 2 vertically stacked slices of 1x2 CTUs), resulting in a total of 9 slices and 6 sub-pictures.

[0130] The video encoder 200 can explicitly signal sub-picture layout in the SPS on a CTU basis. In VVC draft 8, picture resolution changes in a codec-layer video sequence (CLVS) are not supported when sub-pictures are used. The video encoder 200 can signal sub-picture identifier (ID) mapping in the SPS or PPS (but not in both). When the video encoder 200 does not explicitly signal the sub-picture ID, the video decoder 300 can use the sub-picture index as the sub-picture ID.

[0131] When a sub-picture is available, the slice header carries the slice_subpic_id syntax element to identify the sub-picture containing the slice, and slice_address is the sub-picture level slice index. The picture-level slice index and the sub-picture level slice index can be aligned so that the picture-level slice index and the sub-picture level slice index are in an order corresponding to the decoding order.

[0132] The shape of slices and sub-pictures of a picture may be such that each CTU, when decoded, has the entire left boundary and the entire top boundary of the CTU, which are either picture boundaries or boundaries of a previously decoded CTU.

[0133] When a picture is coded using three separate color planes (separate_colour_plane_flag is equal to 1), a slice contains only CTUs of one color component identified by the corresponding value of the colour_plane_id syntax element. The video encoder 200 may interleave coded slices with different values ​​of colour_plane_id within a picture with each other under the following constraint: for each value of colour_plane_id, the coded slice NAL units with that value of colour_plane_id may be in order of increasing CTU addresses in the slice scan order for the first CTU of each coded slice NAL unit.

[0134] Now, we will discuss several shortcomings of the sub-picture design of VVC draft 8. One such shortcoming is sub-picture presence signaling. VVC draft 8 requires that a video encoder (such as video encoder 200) always signal the sub-picture presence flag in the SPS and keep the sub-picture layout static on the CLVS. Since sub-pictures are not allowed when picture resolution changes are enabled in CLVS, the sub-picture presence flag can be conditional. In future versions of the VVC video codec, sub-picture layout signaling can be designed to handle picture resolution changes.

[0135] Now let's discuss sub-picture ID mapping signaling. According to VVC draft 8, a video encoder (such as video encoder 200) can signal a sub-picture ID syntax element in an SPS or PPS, and the slice header carries a sub-picture ID to identify the sub-picture that contains the slice. The video encoder 200 can signal the sub-picture mapping ID in the PPS to address sub-picture extraction and repositioning scenarios. In this case, the video encoder 200 can signal the IDs of all sub-pictures in the PPS from time to time, even if the positions and IDs of most sub-pictures are consistent (e.g., not reordered) (during viewport-dependent streaming scenarios). For common cases, it may be beneficial to signal only the IDs of those sub-pictures whose order (e.g., display order, decoding order, or other order) is changed to save signaling bits (reduce signaling overhead). In other words, to save signaling bits, the video encoder 200 can signal only the sub-picture IDs and / or sub-picture mapping IDs of those sub-pictures whose order is changed.

[0136] Now let's discuss loop filtering across subpics. Loop filtering can be used to reduce blocking artifacts. The semantics of loop_filter_across_subpic_enabled_flag[i] (the syntax element indicating whether loop filtering across subpics is enabled) are as follows. When loop_filter_across_subpic_enabled_flag[i] is equal to 1, it specifies that in-loop filtering operations can be performed across the boundaries of the i-th subpic in each coded picture in the CLVS. When loop_filter_across_subpic_enabled_flag[i] is equal to 0, it specifies that in-loop filtering operations are not performed across the boundaries of the i-th subpic in each coded picture in the CLVS. When not present, the value of loop_filter_across_subpic_enabled_pic_flag[i] is inferred to be equal to 1-sps_independent_subpics_flag. Therefore, if loop_filter_across_subpic_enabled_pic_flag[i] is not present in the bitstream, the video decoder 300 may infer that the value of loop_filter_across_subpic_enabled_pic_flag[i] is equal to 1-sps_independent_subpics_flag.sps_independent_subpics_flag indicates whether all sub-picture boundaries in CLVS are considered picture boundaries and whether loop filtering across sub-picture boundaries is allowed.

[0137] When all sub-pictures are independently coded, loop filtering is not applied across sub-picture boundaries. However, when a single sub-picture is independently coded, loop filtering may or may not be applied across sub-picture boundaries. loop_filter_across_subpic_enabled_flag[i] may be conditional on the presence of subpic_treated_as_pic_flag[i]. subpic_treated_as_pic_flag[i] may indicate whether the i-th sub-picture of each coded picture in the CLVS is treated as a picture in the decoding process (excluding in-loop filtering operations).

[0138] Now let's discuss profile-tier-level (PTL) signaling in the SPS. In VVC draft 8, the value of the syntax element sps_ptl_dpb_hrd_params_present_flag in the SPS can be 0 or 1 without constraints. sps_ptl_dpb_hrd_params_present_flag can indicate whether the profile_tier_level() syntax structure and the dpb_parameters() syntax structure are present in the SPS, and the general_timing_hrd_parameters() syntax structure and the ols_timing_hrd_parameters() syntax structure may also be present in the SPS. When sps_video_parameter_set_id is equal to 0, the SPS does not reference a video parameter set (VPS), and the coded video sequence (CVS) contains only one layer. When the VPS is not referenced when decoding each CLVS that references the SPS, the PTL syntax structure is present in the SPS.

[0139] Now let's discuss picture headers in slice headers. VVC draft 8 allows slice headers (SH) to carry picture header (PH) syntax structures without constraints. The original motivation for this permission was to merge PH and SH for common cases (such as when there is one slice per picture). However, it may be desirable for bitstream conformance requirements to restrict PH in SH, thereby avoiding duplication of PH syntax structures in multiple SHs. An additional benefit of allowing PH in SH for the case of a single slice per picture is that it allows easy picture boundary detection, since PH duplication is prohibited in VVC draft 8. Furthermore, the content of the PH syntax structure may be constrained for multiple coded slices.

[0140] Now let's discuss the PPS ID length. VVC draft 8 specifies the PPS ID data type as ue(v) (e.g., variable length), which is the same as specified in HEVC. Although the SPS ID data type is ue(v) in HEVC, the SPS ID data type is changed to u(4) (e.g., 4 bits) in VVC draft 8. According to VVC draft 8, since the value of pps_pic_parameter_set_id should be in the range of 0 to 63 (inclusive), it may be beneficial to define the PPS ID data type as u(6) (e.g., 6 bits) to simplify the PPS parsing process.

[0141] We now discuss the general hierarchical restrictions on slice columns. As shown in Table 1, in the general hierarchical and hierarchical restrictions according to HEVC and VVC draft 8, the maximum number of slice columns is less than the maximum number of slice rows. VVC draft 8 always constrains each sub-picture boundary to be a slice boundary, and each vertical sub-picture boundary to be a vertical slice boundary. For equirectangular projected pictures, a sub-picture can cover a minimum azimuth range of 18 degrees given MaxTileCols 20, while a sub-picture can cover an elevation range of 8 degrees given MaxTileRows 22, or even smaller elevation areas since the minimum sub-picture height can be equal to the CTU row height. It may be desirable to increase MaxTileCols to meet viewport adaptive streaming requirements.

[0142] Table 1 General Tier and Level Restrictions

[0143]

[0144] This disclosure describes the number of sub-pictures and other signaling and syntax changes that may be improvements to VVC draft 8. One such improvement may be to the sub-picture presence flag. VVC draft 8 specifies that when res_change_in_clvs_allowed_flag is equal to 1, the value of subpic_info_present_flag, which indicates whether sub-picture information is present, shall be equal to 0. It may be desirable to make the presence of subpic_info_present_flag conditional on the res_change_in_clvs_allowed_flag, as shown in Table 2. The start of a modification to VVC draft 8 is marked with <CHANGE>, and the end of the modification is marked with < / CHANGE>.

[0145] Table 2 Proposed conditions for subpic_info_present_flag

[0146]

[0147] The semantics of subpic_info_present_flag in VVC draft 8 may be updated as follows: The start of a modification is marked with <CHANGE>, and the end of a modification is marked with < / CHANGE>.

[0148] subpic_info_present_flag equal to 1 specifies that for CLVS, sub-picture information is present, and one or more sub-pictures may be present in each picture of CLVS. subpic_info_present_flag equal to 0 specifies that for CLVS, sub-picture information is not present, and only one sub-picture may be present in each picture of CLVS. <CHANGE> When not present, the value of subpic_info_present_flag is inferred to be equal to 0. < / CHANGE>

[0149] For example, if subpic_info_present_flag is not present, the video decoder 300 may infer that subpic_info_present_flag is 0.

[0150] If both resolution changes and sub-pictures are supported in the future, the VVC draft 8 static sub-picture layout signaling method may not be sufficient. The present disclosure describes an additional flag in the SPS that can indicate whether the sub-picture information syntax structure is signaled in the SPS or the PPS when SPS subpic_info_present_flag is equal to 1. When the sub-picture information syntax structure is signaled in the PPS, the length of the syntax element in the top left position of each sub-picture is based on the upper limit function Ceil(Log2((pic_width_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) and Ceil(Log2((pic_height_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits.

[0151] In another example, an override flag may be signaled in the PPS to override the values ​​of the sub-picture layout and the attributes of the syntax elements in the PPS.

[0152] Sub-picture ID mapping signaling is now discussed.For viewport adaptive streaming, the video encoder 200 or the video decoder 300 may update a subset of sub-pictures to match viewing orientation changes, and such changes may generally be subtle. Figure 6 is a conceptual diagram showing an example depending on the OMAF viewport. Figure 6In the example of , the video decoder 300 can extract and merge high-resolution sub-pictures and low-resolution sub-pictures to match the viewing orientation at time t1. At time t2, the viewer orientation changes, and accordingly in the extractor track, high-resolution sub-pictures #14, #15, #20, and #21 replace the previous high-resolution sub-pictures #2, #3, #8, and #9, and low-resolution sub-pictures #26, #27, #32, and #34 replace the previous low-resolution sub-pictures #38, #39, #44, and #45. In this example, only 8 of the 24 sub-pictures are replaced. The percentage of sub-pictures replaced can depend on the sub-picture segmentation granularity and the viewing orientation movement speed.

[0153] According to VVC draft 8, the video encoder 200 signals all sub-picture IDs in the PPS for dynamic sub-picture changes. Assuming that there can be 96 sub-pictures in a picture and there can be a maximum of 64 PPSs, it may be desirable to reduce the signaling overhead.

[0154] This disclosure describes a sub-picture ID overlay scheme for signaling sub-picture ID mappings in the SPS and overlaying some or all IDs in the PPS. The start of a deletion of VVC draft 8 is marked with <DELETE>, and the end of a deletion is marked with < / DELETE>. The start of other modifications is marked with <CHANGE>, and the end of a modification is marked with < / CHANGE>.

[0155] Table 3 Proposed PPS sub-picture ID coverage

[0156]

[0157]

[0158] pps_subpic_id_override_enable_flag equal to 1 specifies that pps_num_subpics_minus1, pps_subpic_id_len_minus1, and pps_subpic_idx_present_flag are present in the PPS. pps_subpic_id_override_enable_flag equal to 0 specifies that pps_num_subpics_minus1, pps_subpic_id_len_minus1, and pps_subpic_idx_present_flag are not present in the PPS.

[0159] pps_num_subpics specifies the number of sub-picture IDs explicitly signaled in the PPS. When not present, the value of pps_num_subpics is inferred to be equal to 0.

[0160] pps_subpic_idx_present_flag equal to 1 specifies that pps_subpic_idx[i] is present in the PPS. pps_subpic_idx_present_flag equal to 0 specifies that pps_subpic_idx[i] is not present in the PPS.

[0161] pps_subpic_idx[i] specifies the index of the i-th sub-picture. When not present, the value of pps_subpic_idx[i] is inferred to be equal to i. The length of the pps_subpic_idx[i] syntax element is Ceil(Log2(pps_num_subpics)) bits.

[0162] pps_subpic_id[i] specifies the sub-picture ID of the (pps_subpic_idx[i])th sub-picture. The length of the pps_subpic_id[i] syntax element is pps_subpic_id_len_minus1+1 bits.

[0163] For each value of i (in the range 0 to sps_num_subpics_minus1, inclusive), the variable SubpicIdVal[i] is derived as follows:

[0164] for(i=0;i<=sps_num_subpics_minus1;i++)

[0165] SubpicIdVal[i]=subpic_id_mapping_in_sps_flag? sps_subpic_id[i]:i

[0166] if(pps_subpic_id_override_enable_flag)

[0167] for(i=0;i<pps_num_subpics;i++)

[0168] SubpicIdVal[pps_subpic_idx[i]]=pps_subpic_id[i]

[0169] In another example, the sub-picture index may not be signaled.The video encoder 200 may signal the first N sub-picture IDs in the PPS, where the (N-1)th sub-picture ID is the last sub-picture whose ID is changed.

[0170] The proposed sub-picture ID mapping override syntax is shown in Table 4. The start of a modification is marked with <CHANGE> and the end of a modification is marked with < / CHANGE>.

[0171] Table 4 Proposed PPS syntax

[0172]

[0173] subpic_id_mapping_<CHANGE>override< / CHANGE>_in_pps_flag equal to 1 specifies that the sub-picture ID mapping syntax element is present in the PPS. subpic_id_mapping_<CHANGE>override< / CHANGE>_in_pps_flag equal to 0 specifies that the sub-picture ID mapping syntax element is not present in the PPS.

[0174] pps_num_subpics_minus1 <CHANGE> Add 1 to specify the number of sub-picture IDs present in the PPS. < / CHANGE>

[0175] pps_subpic_id[i] specifies the sub-picture ID of the i-th sub-picture. The length of the pps_subpic_id[i] syntax element is pps_subpic_id_len_minus1+1 bits.

[0176] For each value of i (in the range 0 to sps_num_subpics_minus1, inclusive), the variable SubpicIdVal[i] is derived as follows:

[0177] for(i=0;i<=sps_num_subpics_minus1;i++)

[0178] if(subpic_id_mapping_explicitly_signalled_flag)

[0179] SubpicIdVal[i]=

[0180] (subpic_id_mapping_ <change> override< / change> _in_pps_flag

[0181] <change> &&(i<=pps_num_subpics_minus1)< / change> )?

[0182] pps_subpic_id[i]:sps_subpic_id[i] (80)

[0184] else

[0185] SubpicIdVal[i]=i

[0186] Now let's discuss loop filtering across subpics.This disclosure describes making the signaling of loop_filter_across_subpic_enabled_flag[i] conditional on subpic_treated_as_pic_flag[i], as shown in Table 5. The start of a change to VVC Draft 8 is marked with <CHANGE>, and the end of the change is marked with < / CHANGE>.

[0187] Table 5 Proposed loop filtering conditions in SPS

[0188]

[0189] The semantics of loop_filter_across_subpic_enabled_flag[i] may be updated as follows: The start of a deletion to VVC draft 8 is marked with <DELETE>, and the end of a deletion is marked with < / DELETE>. The start of other modifications is marked with <CHANGE>, and the end of a modification is marked with < / CHANGE>.

[0190] loop_filter_across_subpic_enabled_flag[i] equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th sub-picture in each coded picture in the CLVS. loop_filter_across_subpic_enabled_flag[i] equal to 0 specifies that in-loop filtering operations are not performed across the boundaries of the i-th sub-picture in each coded picture in the CLVS. When not present, the value of loop_filter_across_subpic_enabled_pic_flag[i] is inferred to be equal to <DELETE>1-sps_independent_subpics_flag< / DELETE> <CHANGE>0< / CHANGE>.

[0191] For example, when loop_filter_across_subpic_enabled_pic_flag[i] is not present, the video decoder 300 may infer that loop_filter_across_subpic_enabled_pic_flag[i] is 0.

[0192] Now let's discuss the SPS PTL signaling constraints. In some draft video codec standards (e.g., VVC Draft 8), the bitstream may or may not contain a VPS. When there is no VPS in the bitstream, the PTL structure may not be signaled at all. To avoid such a situation, according to the technology disclosed herein, when there is no VPS, the value of sps_ptl_dpb_hrd_params_present_flag is required to be equal to 1 so that the PTL structure is signaled in the SPS. In other words, the video encoder 200 can set the value of sps_ptl_dpb_hrd_params_present_flag to be equal to 1 and signal the PTL structure in the SPS.

[0193] In one example, the constraints on sps_ptl_dpb_hrd_params_present_flag are imposed as follows: as a requirement for bitstream conformance, when sps_video_parameter_set_id is equal to 0, the value of sps_ptl_dpb_hrd_params_present_flag is equal to 1.

[0194] For example, the video encoder 200 or the video decoder 300 may determine whether a sequence parameter set for video data references a video parameter set. For example, the video encoder 200 may determine not to signal a VPS because the video encoder 200 may determine that signaling a VPS is not worth the overhead that the VPS would occupy, such as when the bitstream being encoded contains only one layer. The video encoder 200 may encode a syntax element that indicates whether an SPS references a VPS. For example, the video encoder 200 may encode a value of sps_video_parameter_set_id as 0 to indicate to the video decoder 300 that the SPS does not reference a VPS. For example, the video decoder 300 may determine whether a sequence parameter set for video data references a VPS by parsing a syntax element that indicates whether the SPS references a VPS. For example, the video decoder 300 may parse sps_video_parameter_set_id and determine that the value of sps_video_parameter_set_id is equal to 0 to determine that the SPS does not reference a VPS.

[0195] Based on the sequence parameter set not referencing the video parameter set, the video encoder 200 or the video decoder 300 may determine that the value of the first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set. The video encoder 200 or the video decoder 300 may encode or decode the video data based on the profile-tier-level structure.

[0196] In another example, the video encoder 200 may signal a separate flag for the presence of the PTL syntax structure in the SPS, and the above-mentioned constraints may apply to the flag.

[0197] The conditions of the PH syntax element are now discussed. The semantics of the no_gdr_constraint_flag are described as set forth below. The start of a change to VVC draft 8 is marked with <CHANGE> and the end of the change is marked with < / CHANGE>.

[0198] no_gdr_constraint_flag equal to 1 specifies that there shall be no NAL units with nuh_unit_type equal to GDR_NUT present in OlsInScope. no_gdr_constraint_flag equal to 0 imposes no such constraint.

[0199] gdr_enabled_flag equal to 1 specifies that GDR pictures may be present in the CLVS referencing the SPS. gdr_enabled_flag equal to 0 specifies that no GDR pictures are present in the CLVS referencing the SPS. <CHANGE> As a requirement for bitstream conformance, gdr_enabled_flag shall be equal to 0< / CHANGE> when no_gdr_constraint_flag is equal to 1.

[0200] For example, when no_gdr_constraint_flag is equal to 1, the video encoder 200 may set gdr_enabled_flag to be equal to 0; or when no_gdr_constraint_flag is equal to 1, the video decoder 300 may infer gdr_enabled_flag to be 0.

[0201] For single layer scenarios, the non_reference_picture_flag syntax element may be conditional on the ph_inter_slice_allowed_flag. The semantics of non_reference_picture_flag are modified as explained below. The start of the modification to VVC draft 8 is marked with <CHANGE> and the end of the modification is marked with < / CHANGE>.

[0202] non_reference_picture_flag equal to 1 specifies that the picture associated with the PH is never used as a reference picture. non_reference_picture_flag equal to 0 specifies that the picture associated with the PH may or may not be used as a reference picture. <CHANGE> When not present, the value of non_reference_picture_flag is inferred to be equal to 1. < / CHANGE>

[0203] For example, when non_reference_picture_flag is not present, the video decoder 300 may infer that non_reference_picture_flag is equal to 1.

[0204] The conditions of the PH syntax element are described in Table 6.

[0205] Table 6 Proposed PH syntax

[0206]

[0207] In another example, the non_reference_picture_flag syntax element may be placed at the beginning of the PH, or immediately after the picture type flag (eg, gdr_or_irap_pic_flag and gdr_pic_flag) in the PH, to make it easier to discard pictures.

[0208] The all intra only flag syntax element can be signaled in the SPS to indicate that slice_type should be equal to I (intra). All intra can be used in still picture codecs and fast stream switching applications. The semantics of sps_all_intra_enabled_flag are described below.

[0209] sps_all_intra_enabled_flag equal to 1 specifies that slice_type shall be equal to 1. sps_all_intra_enabled_flag equal to 0 specifies that slice_type may or may not be equal to 0.

[0210] As explained below, the semantics of intra_only_constraint_flag may be modified.The start of a modification to VVC draft 8 is marked with <CHANGE>, and the end of a modification is marked with < / CHANGE>.

[0211] intra_only_constraint_flag equal to 1 specifies that <CHANGE>sps_all_intra_enabled_flag should be equal to 1. intra_only_constraint_flag equal to 0 may not impose such a constraint.

[0212] The syntax element sps_all_intra_enabled_flag may be used to impose conditions on syntax elements at the PH, such as ph_inter_slice_allowed_flag and non_reference_picture_flag.

[0213] For example, the video encoder 200 or the video decoder 300 may determine whether there are no NAL units with a NAL unit header type of a progressive decoding refresh network abstraction layer (NAL) unit type in the output layer set. Based on the absence of NAL units with a NAL unit header type of a progressive decoding refresh NAL unit type in the output layer set, the video encoder 200 or the video decoder 300 may determine that the value of the first syntax element indicates that there are no progressive decoder refresh pictures in the codec layer video sequence. The video encoder 200 or the video decoder 300 may encode and decode video data of the codec layer video sequence without encoding and decoding progressive decoder refresh pictures.

[0214] The conditions of the SH syntax elements are now discussed. This disclosure describes that the PH syntax structure is present in the SH only when there is one slice in the picture. Table 7 below shows the use of general constraint information to impose conditions on the picture_header_in_slice_header_flag.

[0215] In another example, the SPS syntax element sps_one_slice_per_picture may be signaled to specify that each picture should contain only one slice in the CLVS. sps_one_slice_per_picture may be used to impose conditions on syntax elements such as picture_header_in_slice_header_flag.

[0216] In another example, the PPS syntax element pps_one_slice_per_picture can be signaled to specify that the picture referencing the PPS should contain only one slice. pps_one_slice_per_picture can be used to impose conditions on the syntax elements num_slices_in_pic_minus1 in the PPS and picture_header_in_slice_header_flag in the SH. The start of a modification to VVC Draft 8 is marked with <CHANGE>, and the end of the modification is marked with < / CHANGE>.

[0217] Table 7 Proposed SH syntax

[0218]

[0219] As explained below, the semantics of picture_header_in_slice_header_flag are modified. The start of a modification to VVC draft 8 is marked with <CHANGE>, and the end of the modification is marked with < / CHANGE>.

[0220] picture_header_in_slice_header_flag equal to 1 specifies that the PH syntax structure is present in the slice header. picture_header_in_slice_header_flag equal to 0 specifies that the PH syntax structure is not present in the slice header. <CHANGE> When not present, the value of picture_header_in_slice_header_flag is inferred to be equal to 0. < / CHANGE>

[0221] In some examples, this disclosure describes the following requirement for bitstream conformance: when picture_header_in_slice_header_flag is equal to 1, the content of picture_header_structure() should be the same for all coded slices in a CLVS.

[0222] Now let's discuss the length of the PPS ID. pps_pic_parameter_set_id is coded in ue(v), and the semantics of pps_pic_parameter_set_id constrains the value of pps_pic_parameter_set_id to be in the range of 0 to 63 (inclusive).

[0223] It may be beneficial to have consistency with other similar syntax elements, such as IDs for SPS and VPS.This disclosure describes encoding and decoding the pps_pic_parameter_set_id syntax element with a fixed length (eg, u(6) or 6 bits).

[0224] Table 8 and Table 9 show the described changes to PPS and PH in VVC Draft 8. The start of a change to VVC Draft 8 is marked with <CHANGE>, and the end of a change is marked with < / CHANGE>.

[0225] Table 8 Proposed PPS syntax

[0226]

[0227] Table 9 Proposed PH syntax

[0228]

[0229]

[0230] For example, the video encoder 200 or the video decoder 300 may determine a picture parameter set identifier of a picture parameter set. The picture parameter set identifier may have a fixed length of 6 bits.

[0231] Now let's discuss general hierarchical and level limits on MaxTileCols. For viewport-adaptive streaming, a VR client (which may include an instance of the video decoder 300) can request only those sub-pictures that match the VR client's viewport to reduce streaming bandwidth. For example, instead of streaming all 360-degree sub-pictures, only sub-pictures within the viewport can be streamed. When the viewport changes, the VR client can request a new subset of sub-pictures to cover the new area.

[0232] Figure 7 is a conceptual diagram illustrating an example shift from a first viewport to a second viewport. Figure 7 In the example of , the viewport may shift from viewport 484 (shown in dashed lines) to viewport 486 (shown in dotted lines), or the viewport may shift from viewport 488 (shown in dashed lines) to viewport 490 (shown in dotted lines), and the VR client may request that the subset of sub-pictures being streamed be changed accordingly. Figure 7 Two different sub-picture partitions (sub-picture partition 480 and sub-picture partition 482) are shown in FIG. Figure 7In the example of FIG, given the same viewport movement, sub-picture segmentation 480 may consume less bandwidth than sub-picture segmentation 482. This is because the new sub-pictures in column 492 are smaller than the new sub-pictures in column 494 (and therefore take up less bandwidth to stream), and the top and bottom sub-pictures in column 492 do not need to be streamed.

[0233] In some examples, according to the techniques of this disclosure, the value of MaxTileCols in the general hierarchy and level limits can be defined based on the maximum angular velocity. For example, where the maximum angular velocity is 300 degrees per second or 10 degrees per picture at 30 fps (see OMAF), MaxTileCols can be set as high as 36 for high hierarchy levels and levels. The value of MaxTileCols can be reduced because it can be independent of the sub-picture segmentation granularity.

[0234] Figure 8 is a flowchart illustrating an example signaling technique according to the present disclosure. The video encoder 200 or the video decoder 300 can determine whether a sequence parameter set for video data references a video parameter set (330). For example, the video encoder 200 can determine an SPS associated with the video data and can determine a VPS identifier as an element of the SPS. The VPS identifier can have a value that identifies a specific VPS associated with the SPS, or can have a value of 0 that indicates that the SPS does not reference the VPS. For example, the video encoder 200 can determine that signaling the VPS is not worth the overhead that the VPS will occupy, e.g., the VPS will not meaningfully improve the quality of any decoding of the associated video data. The video encoder 200 can encode a syntax element that indicates whether the SPS references the VPS. For example, the video encoder 200 can encode the value of sps_video_parameter_set_id as 0 to indicate to the video decoder 300 that the SPS does not reference the VPS.

[0235] For example, the video decoder 300 may parse the VPS identifier in the SPS to determine whether the SPS references the VPS. The video parameter set identifier may have a value that identifies a specific video parameter set, or may have a value of 0, which indicates that the sequence parameter set does not reference the video parameter set. For example, the video decoder 300 may parse sps_video_parameter_set_id and determine that the value of sps_video_parameter_set_id is equal to 0 to determine that the SPS does not reference the VPS.

[0236] Based on the sequence parameter set not referencing the video parameter set, the video encoder 200 or the video decoder 300 may determine that a value of the first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set (332). For example, according to the techniques of this disclosure, the video encoder 200 may set a value of a first syntax element (e.g., sps_ptl_dpb_hrd_params_present_flag) to 1 based on the SPS not referencing the video parameter set to comply with bitstream conformance requirements. For example, the video decoder 300 may parse the first syntax element (e.g., sps_ptl_dpb_hrd_params_present_flag) to determine that a value of the first syntax element (e.g., 1) indicates that a profile-tier-level structure is signaled in the SPS. The value of the first syntax element may be based on the SPS not referencing the video parameter set because the video encoder 200 may set a value of the first syntax element to comply with bitstream conformance requirements.

[0237] The video encoder 200 or the video decoder 300 may encode or decode the video data based on the profile-tier-level structure (334). For example, the video encoder 200 may encode the video data using the profile-tier-level structure. The video encoder 200 may also signal the profile-tier-level structure to the video decoder 300 in the SPS in the bitstream (instead of in the VPS because the SPS does not reference the VPS). The video decoder 300 may parse the SPS to determine the profile-tier-level structure and may decode the video data using the profile-tier-level structure.

[0238] In some examples, where the codec includes encoding, the video encoder 200 may signal the first syntax element in a sequence parameter set and signal the profile-tier-level structure in the sequence parameter set. In some examples, where the codec includes decoding, the video decoder 300 may parse the first syntax element in the sequence parameter set and parse the profile-tier-level structure in the sequence parameter set. In some examples, the video encoder 200 or the video decoder 300 may also determine a picture parameter set identifier, where the picture parameter set identifier has a fixed length of 6 bits.

[0239] Figure 9is a flowchart illustrating another example signaling technique according to the present disclosure. The video encoder 200 or the video decoder 300 may determine whether there are no NAL units with a NAL unit header type of a progressive decoding refresh network abstraction layer (NAL) unit type in the output layer set (340). For example, the video encoder 200 may perform multiple encoding passes and determine, based on rate-distortion values ​​for different parameter combinations for the multiple encoding passes, that the output layer set does not include any NAL units with a NAL unit header type of a progressive decoding refresh. For example, the video encoder 200 may determine that the best encoding pass does not include any progressive decoding refresh NAL units. For example, the video decoder 300 may parse a syntax element (e.g., a no_gdr_constraint_flag) to determine whether there are no NAL units with a NAL unit header type of a progressive decoding refresh NAL unit type in the output layer set.

[0240] Based on the absence of NAL units with a NAL unit header type of a progressive decoding refresh NAL unit type in the output layer set, the video encoder 200 or the video decoder 300 may determine that a value of a first syntax element indicates that there are no progressive decoder refresh pictures in the codec layer video sequence (342). For example, according to the techniques of this disclosure, the video encoder 200 may set a value of a first syntax element (e.g., gdr_enabled_flag) equal to 0 to comply with a bitstream conformance requirement based on the absence of NAL units with a NAL unit header type of a progressive decoding refresh NAL unit type in the output layer set. For example, the video decoder 300 may parse the first syntax element (e.g., gdr_enabled_flag) to determine that the value of the first syntax element (e.g., 0) indicates that there are no NAL units with a NAL unit header type of a progressive decoding refresh NAL unit type in the output layer set. The value of the first syntax element may be based on the absence of NAL units with a NAL unit header type of a progressive decoding refresh NAL unit type in the output layer set because the video encoder 200 may set the value of the first syntax element to comply with a bitstream conformance requirement.

[0241] The video encoder 200 or the video decoder 300 may encode or decode the video data of the codec layer video sequence without encoding or decoding the progressive decoder refresh picture. For example, the video encoder 200 may encode the video data of the codec layer video sequence without encoding the progressive decoder refresh picture. The video decoder 300 may decode the video data of the codec layer video sequence without decoding the progressive decoder refresh picture.

[0242] In some examples, where the encoding and decoding includes decoding, the video decoder 300 can determine whether a second syntax element is present in the bitstream indicating whether the picture is not used as a reference picture. Based on the absence of the second syntax element in the bitstream, the video decoder 300 can infer that the value of the second syntax element indicates that the picture is not a reference picture.

[0243] In some examples, where the codec includes encoding, the video encoder 200 can determine whether a codec layer video sequence of the video data includes only one layer and whether inter slicing is allowed in a picture of the codec layer video sequence. Based on the codec layer video sequence including only one layer and inter slicing being allowed, the video encoder 200 can determine a value for a second syntax element indicating whether the picture is not used as a reference picture. In some examples, if the value of the second syntax element indicates that the picture is not used as a reference picture, the video encoder 200 can avoid signaling the second syntax element.

[0244] In some examples, the video encoder 200 or the video decoder 300 may perform the following operations: determine that the value of the third syntax element indicates that all slices in the sequence are intra slices; and based on all slices in the sequence being intra slices, encode and decode all slices in the sequence using intra prediction. In some examples, when the encoding and decoding includes decoding, the video decoder may determine the value of the third syntax element by parsing the third syntax element. In some examples, when the encoding and decoding includes encoding, the video encoder 200 may signal the third syntax element in an SPS. In some examples, the video encoder 200 or the video decoder 300 may determine that the value of the fourth syntax element indicates that only intra constraints apply, wherein determining the value of the third syntax element is based on applying only intra constraints. In some examples, the video encoder 200 or the video decoder 300 may determine a picture parameter set identifier, wherein the picture parameter set identifier has a fixed length of 6 bits.

[0245] Figure 10 1 is a flowchart illustrating an example method for encoding a current block. The current block may include a current CU. Although with respect to the video encoder 200 ( Figure 1 and 3 ) is described, but it should be understood that other devices may be configured to perform the same Figure 10 A similar approach to the one in the previous section.

[0246] In this example, the video encoder 200 initially predicts a current block (350). For example, the video encoder 200 may form a prediction block for the current block. The video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, the video encoder 200 may calculate the difference between the original, unencoded block and the prediction block for the current block. As part of forming the prediction block and / or calculating the residual block, the video encoder 200 may perform Figure 8 and / or techniques of 9. Video encoder 200 may then transform the residual block and quantize the transform coefficients of the residual block (354). Next, video encoder 200 may scan the quantized transform coefficients of the residual block (356). During or after the scan, video encoder 200 may entropy encode the transform coefficients (358). For example, video encoder 200 may use CAVLC or CABAC to encode the transform coefficients. Video encoder 200 may then output entropy encoded data for the block (360).

[0247] Figure 11 is a flowchart illustrating an example method for decoding a current block of video data. The current block may include a current CU. Although with respect to the video decoder 300 ( Figure 1 and 4 ) is described, but it should be understood that other devices may be configured to perform the same Figure 11 A similar approach to the one in the previous section.

[0248] The video decoder 300 may receive entropy-encoded data for a current block (e.g., entropy-encoded prediction information and entropy-encoded data of transform coefficients of a residual block corresponding to the current block) (370). The video decoder 300 may entropy decode the entropy-encoded data to determine prediction information for the current block and reproduce transform coefficients of the residual block (372). As part of determining the prediction information, the video decoder 200 may perform Figure 8 and / or techniques of 9. The video decoder 300 may predict the current block (374), for example, using an intra-frame or inter-frame prediction mode as indicated by the prediction information for the current block, to calculate a prediction block for the current block. The video decoder 300 may then inverse scan the reproduced transform coefficients (376) to create a block of quantized transform coefficients. The video decoder 300 may then inverse quantize and inverse transform the transform coefficients to produce a residual block (378). Finally, the video decoder 300 may decode the current block (380) by combining the prediction block and the residual block.

[0249] This disclosure includes the following examples.

[0250] Clause 1A. A method of coding video data, the method comprising: determining whether an order of subpictures has changed; determining one or more of a subpicture ID or a subpicture mapping ID if the order of the subpictures has changed; not determining one or more of the subpicture ID and the subpicture mapping ID if the order of the subpictures has not changed; and coding the video data based on the order of the subpictures.

[0251] Clause 2A. A method of coding video data, the method comprising: determining whether a subpic_info_present_flag is present in the video data; inferring a value of the subpic_info_present_flag is equal to 0 based on the subpic_info_present_flag not being present; and coding the video data based on the value of the subpic_info_present_flag.

[0252] Clause 3A. A method of coding video data, the method comprising: determining a flag in a sequence parameter set (SPS); and coding the video data based on the flag in the SPS, wherein the flag in the SPS indicates whether a subpicture information syntax structure is signaled in the SPS or in a picture parameter set (PPS).

[0253] Clause 4A. The method of clause 3A, wherein the flag in the SPS indicates that the subpicture information syntax structure is signaled in the PPS, and the method further comprises: setting a length of a syntax element of a top-left position of each subpicture associated with the PPS to Ceil(Log2((pic_width_in_luma_samples + CtbSizeY - 1) » CtbLog2SizeY)) and Ceil(Log2((pic_height_in_luma_samples + CtbSizeY - 1) » CtbLog2SizeY)) bits.

[0254] Clause 5A. A method of coding video data, the method comprising: determining a override flag in a PPS; overriding a value of a subpicture layout and a property of a syntax element in the PPS based on the override flag indicating override; and coding the video data based on the override.

[0255] Clause 6A. A method of coding video data, the method comprising: determining whether loop_filter_across_subpic_enabled_pic_flag[i] is present in the video data; based on loop_filter_across_subpic_enabled_pic_flag[i] not being present, inferring that loop_filter_across_subpic_enabled_pic_flag[i] is equal to 0; and coding the video data based on loop_filter_across_subpic_enabled_pic_flag[i].

[0256] Clause 7A. A method of coding video data, the method comprising: determining whether a video parameter set (VPS) is present in the video data; based on the VPS not being present, determining whether a value of sps_ptl_dpb_hrd_params_present_flag is equal to 1; if sps_ptl_dpb_hrd_params_present_flag is equal to 1, determining a picture timing level (PTL) structure in the SPS; if sps_ptl_dpb_hrd_params_present_flag is not equal to 1, determining that a picture timing level (PTL) structure is not present in the SPS; and coding the video data based on sps_ptl_dpb_hrd_params_present_flag.

[0257] Clause 8A. The method of clause 7A, further comprising: determining whether sps_video_parameter_set_id is equal to 0; and based on sps_video_parameter_set_id being equal to 0, determining that sps_ptl_dpb_hrd_params_present_flag is equal to 1.

[0258] Clause 9A. A method of encoding and decoding video data, the method comprising: determining whether sps_ptl_dpb_hrd_params_present_flag is equal to 1; if sps_ptl_dpb_hrd_params_present_flag is equal to 1, determining a flag, the flag indicating that a PTL syntax structure is present in the SPS; if sps_ptl_dpb_hrd_params_present_flag is not equal to 1, undetermining the flag; and encoding and decoding the video data based on sps_ptl_dpb_hrd_params_present_flag.

[0259] Clause 10A. A method of encoding and decoding video data, the method comprising: determining whether no_gdr_constraint_flag is equal to 1; based on no_gdr_constraint_flag being equal to 1, determining that gdr_enabled_flag is equal to 0; and encoding and decoding the video data based on the gdr_enabled_flag.

[0260] Clause 11A. A method of encoding and decoding video data, the method comprising: determining whether a non_reference_picture_flag is present in the video data; inferring that non_reference_picture_flag is equal to 1 based on the absence of non_reference_picture_flag; and encoding and decoding the video data based on the non_reference_picture_flag.

[0261] Clause 12A. A method of encoding and decoding video data, the method comprising: determining a location of a non_reference_picture_flag; and encoding and decoding the video data based on the non_reference_picture_flag, wherein the location of the non_reference_picture_flag is at the beginning of a picture header (PH) or immediately after a picture type flag in the PH.

[0262] Clause 13A. The method of clause 12A, wherein the picture type flag comprises gdr_or_irap_pic_flag or gdr_pic_flag.

[0263] Clause 14A. A method of encoding and decoding video data, the method comprising: determining whether intra_only_constraint_flag is equal to 1; based on the intra_only_constraint_flag being equal to 1, determining sps_all_intra_enabled_flag to be equal to 1; and encoding and decoding the video data based on the sps_all_intra_enabled_flag.

[0264] Clause 15A. The method of clause 14A, further comprising: imposing conditions on syntax elements in the PH based on sps_all_intra_enabled_flag.

[0265] Clause 16A. The method of clause 15A, wherein the syntax element is at least one of ph_inter_slice_allowed_flag or non_reference_picture_flag.

[0266] Clause 17A. A method for encoding and decoding video data, the method comprising: determining whether there is only one slice in a picture in the video data; if there is only one slice in the picture, presenting a PH syntax structure in a slice header (SH); if there is not only one slice in the picture, not presenting the PH syntax structure in the SH; and encoding and decoding the video data based on the picture.

[0267] Clause 18A. The method of clause 17A, further comprising determining an SPS syntax element for each picture in the CLVS indicating that it contains only one slice.

[0268] Clause 19A. The method of clause 18A, wherein the SPS syntax element is sps_one_slice_per_picture.

[0269] Clause 20A. The method of clause 19A, further comprising: imposing a condition on the syntax element based on sps_one_slice_per_picture.

[0270] Clause 21A. The method of clause 20A, wherein the syntax element is picture_header_in_slice_header_flag.

[0271] Clause 22A. A method of encoding and decoding video data, the method comprising: determining a syntax element in a PPS; determining, based on the syntax element, that a picture referencing the PPS contains only one slice; and encoding and decoding the video data based on the syntax element.

[0272] Clause 23A. The method of clause 22A, further comprising: conditionalizing num_slices_in_pic_minus1 in the PPS and picture_header_in_slice_header_flag in the SH based on the syntax element.

[0273] Clause 24A. The method of clause 23A, further comprising: determining whether a picture_header_in_slice_header_flag is present; inferring that picture_header_in_slice_header_flag is equal to 0 based on the absence of picture_header_in_slice_header_flag; and encoding and decoding the video data based on the picture_header_in_slice_header_flag.

[0274] Clause 25A. A method of encoding and decoding video data, the method comprising: determining whether picture_header_in_slice_header_flag is equal to 1; based on picture_header_in_slice_header_flag being equal to 1, determining that contents of picture_header_structure() are the same for all slices in a CLVS; and encoding and decoding the video data based on the contents of the picture_header_structure().

[0275] Clause 26A. A method of encoding and decoding video data, the method comprising: determining a pps_pic_parameter_set_id; determining a ph_pic_parameter_set_id; and encoding and decoding the video data based on the pps_pic_parameter_set_id and the ph_pic_parameter_set_id, wherein the pps_pic_parameter_set_id and the ph_pic_parameter_set_id have the same fixed length.

[0276] Clause 27A. The method of clause 26A, wherein the same fixed length is 6 bits.

[0277] Clause 28A. A method of encoding and decoding video data, the method comprising: determining a maximum angular velocity of viewport movement; determining a value of MaxTileCols based on the maximum angular velocity; and encoding and decoding the video data based on the value of MaxTileCols.

[0278] Clause 29A. The method of Clause 28A, wherein the maximum angular velocity is 300 degrees per second or 10 degrees per picture at 30 frames per second, and the value of MaxTileCols is at most 36.

[0279] Clause 30A. A method for encoding and decoding video data, the method comprising: determining the first N sub-picture IDs, wherein the (N-1)th sub-picture ID is the last sub-picture whose ID is changed; and encoding and decoding the video data based on the first N sub-picture IDs.

[0280] Clause 31A. The method of clause 30A, wherein the top N sub-picture IDs are signaled in a PPS.

[0281] Clause 32A. The method of clause 30A or 31A, further comprising: avoiding signaling a sub-picture index.

[0282] Clause 33A. The method of any combination of clauses 30A-32A, further comprising: determining an overlay flag, wherein encoding and decoding the video data is further based on the overlay flag.

[0283] Clause 34A. The method of any combination of clauses 1A-33A, wherein encoding and decoding includes decoding.

[0284] Clause 35A. The method of any combination of clauses 1A, 3A-5A, 7A-10A, 12A-23A, and 25A-33A, wherein encoding and decoding includes encoding.

[0285] Clause 36A. An apparatus for encoding and decoding video data, the apparatus comprising one or more means for performing the method of any combination of clauses 1A-35A.

[0286] Clause 37A. The apparatus of Clause 36A, wherein the one or more components comprise one or more processors implemented in circuitry.

[0287] Clause 38A. The apparatus of any of Clauses 36A and 37A, further comprising: a memory for storing the video data.

[0288] Clause 39A. The device of any combination of clauses 36A-38A, further comprising a display configured to display decoded video data.

[0289] Clause 40A. The device of any combination of clauses 36A-39A, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

[0290] Clause 41A. The device of any combination of clauses 36A-40A, wherein the device comprises a video decoder.

[0291] Clause 42A. The device of any combination of clauses 36A-41A, wherein the device comprises a video encoder.

[0292] Clause 43A. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any combination of clauses 1A-33A.

[0293] Clause 1B. A method of coding video data, the method comprising:

[0294] determining whether a sequence parameter set of the video data references a video parameter set; based on the sequence parameter set not referencing the video parameter set, determining that a value of a first syntax element indicates that a tier-hierarchy-level structure is signaled in the sequence parameter set; and coding the video data based on the tier-hierarchy-level structure.

[0295] Clause 2B. The method of claim 1B, wherein coding comprises encoding, and the method further comprises: signaling the first syntax element in the sequence parameter set; and signaling the tier-hierarchy-level structure in the sequence parameter set.

[0296] Clause 3B. The method of claim 1B, wherein coding comprises decoding, and the method further comprises: parsing the first syntax element in the sequence parameter set; and parsing the tier-hierarchy-level structure in the sequence parameter set.

[0297] Clause 4B. The method of any combination of claims 1B-3B, further comprising: determining a picture parameter set identifier of a picture parameter set, wherein the picture parameter set identifier has a fixed length of 6 bits.

[0298] Clause 5B. A method for encoding and decoding video data, the method comprising: determining whether there are no NAL units with a progressive decoding refresh network abstraction layer (NAL) unit type and a NAL unit header type in an output layer set; based on the absence of NAL units with the NAL unit header type and the progressive decoding refresh NAL unit type in the output layer set, determining that a value of a first syntax element indicates that there are no progressive decoder refresh pictures in a codec layer video sequence; and encoding and decoding the video data of the codec layer video sequence without encoding and decoding progressive decoder refresh pictures.

[0299] Clause 6B. A method according to claim 5B, wherein encoding and decoding includes decoding, and wherein the method further comprises: determining whether a second syntax element is present in a bitstream indicating whether a picture is not used as a reference picture; and based on the absence of the second syntax element in the bitstream, inferring that the value of the second syntax element indicates that the picture is not a reference picture.

[0300] Clause 7B. A method according to claim 5B, wherein coding and decoding includes encoding, and wherein the method further comprises: determining whether a codec layer video sequence of the video data contains only one layer; determining whether inter-frame slicing is allowed in a picture of the codec layer video sequence; and determining the value of a second syntax element indicating whether the picture is not used as a reference picture based on the codec layer video sequence containing only one layer and the inter-frame slicing is allowed.

[0301] Clause 8B. The method of claim 7B, wherein the value of the second syntax element indicates that the picture is not used as a reference picture, and wherein the method further comprises: avoiding signaling the second syntax element.

[0302] Clause 9B. The method according to any combination of requirements 5B-8B further includes: determining that the value of the third syntax element indicates that all slices in the sequence are intra-frame slices; and encoding and decoding all slices in the sequence using intra-frame prediction based on that all slices in the sequence are intra-frame slices.

[0303] Clause 10B. The method of claim 9B, wherein encoding and decoding comprises decoding, and wherein determining the value of the third syntax element comprises parsing the third syntax element.

[0304] Clause 11B. The method of claim 9B, wherein encoding and decoding includes encoding, the method further comprising: signaling the third syntax element in an SPS.

[0305] Clause 12B. The method of any combination of requirements 9B-11B, further comprising: determining a value of a fourth syntax element to indicate that only intra constraints apply; wherein determining the value of the third syntax element is based on the intra-only constraints applying.

[0306] Clause 13. The method of any combination of requirements 5B-12B, further comprising: determining a picture parameter set identifier for a picture parameter set, wherein the picture parameter set identifier has a fixed length of 6 bits.

[0307] Clause 14B. A device for encoding and decoding video data, the device comprising: a memory configured to store the video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether a sequence parameter set for the video data references a video parameter set; based on the sequence parameter set not referencing the video parameter set, determine that a value of a first syntax element indicates that a profile-tier-level structure is signaled in the sequence parameter set; and encode and decode the video data based on the profile-tier-level structure.

[0308] Clause 15B. The apparatus of claim 14B, wherein encoding and decoding comprises encoding, and the one or more processors are further configured to: signal the first syntax element in the sequence parameter set; and signal the profile-tier-level structure in the sequence parameter set.

[0309] Clause 16B. An apparatus as described in claim 14B, wherein encoding and decoding include decoding, wherein, as part of determining the value of the first syntax element, the one or more processors are configured to: parse the first syntax element in the sequence parameter set, and wherein the one or more processors are further configured to: parse the profile-tier-level structure in the sequence parameter set.

[0310] Clause 17B. The apparatus of any combination of claims 14B-16B, further comprising: determining a picture parameter set identifier for a picture parameter set, wherein the picture parameter set identifier has a fixed length of 6 bits.

[0311] Item 18B. A device for encoding and decoding video data, the device comprising: a memory configured to store the video data; and one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: determine whether there are no NAL units with a progressive decoding refresh network abstraction layer (NAL) unit type having a NAL unit header type in an output layer set; determine, based on the absence of NAL units with the NAL unit header type having the progressive decoding refresh NAL unit type in the output layer set, that a value of a first syntax element indicates that there are no progressive decoder refresh pictures in a codec layer video sequence; and encode and decode the video data of the codec layer video sequence without encoding and decoding progressive decoder refresh pictures.

[0312] Clause 19B. An apparatus as described in claim 18B, wherein encoding and decoding includes decoding, and wherein the one or more processors are further configured to: determine whether a second syntax element is present in the bitstream that indicates whether a picture is not used as a reference picture; and based on the absence of the second syntax element in the bitstream, infer that the value of the second syntax element indicates that the picture is not a reference picture.

[0313] Clause 20B. An apparatus according to claim 18B, wherein the coding and decoding includes encoding, and wherein the one or more processors are further configured to: determine whether a codec layer video sequence of the video data contains only one layer; determine whether inter-frame slicing is allowed in a picture of the codec layer video sequence; and determine the value of a second syntax element indicating whether the picture is not used as a reference picture based on the codec layer video sequence containing only one layer and the inter-frame slicing is allowed.

[0314] Clause 21B. The apparatus of claim 20B, wherein the value of the second syntax element indicates that the picture is not used as a reference picture, and the one or more processors are further configured to refrain from signaling the second syntax element.

[0315] Clause 22B. An apparatus according to any combination of requirements 18B-21B, wherein the one or more processors are further configured to: determine that the value of the third syntax element indicates that all slices in the sequence are intra-frame slices; and based on all slices in the sequence being intra-frame slices, encode and decode all slices in the sequence using intra-frame prediction.

[0316] Clause 23B. The apparatus of claim 22B, wherein encoding and decoding comprises decoding, and wherein, as part of determining the value of the third syntax element, the one or more processors are configured to: parse the syntax element.

[0317] Clause 24B. The apparatus of claim 22B, wherein encoding and decoding comprises encoding, and wherein the one or more processors are further configured to: signal the third syntax element in an SPS.

[0318] Clause 25B. An apparatus according to any combination of requirements 22B-24B, wherein the one or more processors are further configured to: determine that the value of the fourth syntax element indicates that only intra-frame constraints are applied; wherein the one or more processors determine the value of the third syntax element based on the fact that only intra-frame constraints are applied.

[0319] Clause 26B. The apparatus of any combination of claims 18B-25B, further comprising: determining a picture parameter set identifier for a picture parameter set, wherein the picture parameter set identifier has a fixed length of 6 bits.

[0320] It will be appreciated that, depending on the examples, certain actions or events of any of the techniques described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary to implement the techniques). Furthermore, in some examples, actions or events may be performed concurrently rather than sequentially, for example, through multithreading, interrupt handling, or multiple processors.

[0321] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted through a computer-readable medium as one or more instructions or program codes and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to tangible media such as data storage media or communication media, including any media that facilitates the transfer of a computer program from one place to another, for example, according to a communication protocol. In this manner, computer-readable media may generally correspond to (1) non-transitory tangible computer-readable storage media, or (2) communication media such as signals or carrier waves. Data storage media may be any available medium that can be accessed by one or more computers or one or more processors to obtain instructions, program codes, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include computer-readable media.

[0322] By way of example and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL) or wireless technology (e.g., infrared, radio and microwave), the coaxial cable, fiber optic cable, twisted pair, DSL or wireless technology (e.g., infrared, radio and microwave) is included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other temporary media, but instead refer to non-temporary tangible storage media. As used herein, disks and optical disks include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks and Blu-ray discs, wherein disks typically copy data magnetically, while optical discs use lasers to copy data optically. Combinations of the above should also be included within the scope of computer-readable media.

[0323] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the terms "processor" and "processing circuitry" as used herein may refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated into a combined codec. Furthermore, the techniques may be implemented entirely in one or more circuits or logic components.

[0324] The techniques of this disclosure can be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to emphasize functional aspects of a device configured to perform the disclosed techniques, but do not necessarily need to be implemented by different hardware units. Specifically, as described above, the various units can be combined in a codec hardware unit, or provided by a collection of interoperable hardware units (including one or more processors as described above) in combination with appropriate software and / or firmware.

[0325] Various examples have been described. These and other examples are within the scope of the following claims.

Claims

1. A method for decoding video data, the method comprising: Determining that a value of a sequence parameter set SPS video parameter set identifier ID in a bitstream including the video data is equal to zero; Based on determining that the value of the SPS video parameter set ID is equal to zero, determining that the SPS of the video data does not reference a video parameter set VPS, and no VPS is referenced when decoding the video data that references the SPS; determining, based on determining that the value of the SPS video parameter set ID is equal to zero and thus the SPS of the video data does not reference a VPS, and no VPS is referenced when decoding video data that references the SPS, that a profile-tier-level structure exists within the SPS without processing a syntax element from the bitstream indicating whether a profile-tier-level structure exists within the SPS; as well as The video data is decoded based on data of the profile-tier-level structure included in the SPS. 2 . The method of claim 1 , further comprising decoding an sps_video_parameter_set_id syntax element indicating a value of the SPS video parameter set ID from the SPS.

3. The method according to claim 2, further comprising: A picture parameter set identifier of a picture parameter set associated with the video data is fixed-length decoded, wherein the picture parameter set identifier has a fixed length of 6 bits.

4. A device for decoding video data, the device comprising: a memory configured to store the video data; as well as one or more processors implemented in circuitry and communicatively coupled to the memory, the one or more processors configured to: Determining that a value of a sequence parameter set SPS video parameter set identifier ID in a bitstream including the video data is equal to zero; Based on determining that the value of the SPS video parameter set ID is equal to zero, determining that the SPS of the video data does not reference a video parameter set VPS, and no VPS is referenced when decoding the video data that references the SPS; determining, based on determining that the value of the SPS video parameter set ID is equal to zero and thus the SPS of the video data does not reference a VPS, and no VPS is referenced when decoding video data that references the SPS, that a profile-tier-level structure exists within the SPS without processing a syntax element from the bitstream indicating whether a profile-tier-level structure exists within the SPS; as well as The video data is decoded based on data of the profile-tier-level structure included in the SPS.

5. The device according to claim 4, wherein The one or more processors are further configured to decode, from the SPS, a sps_video_parameter_set_id syntax element indicating a value of the SPS video parameter set ID.

6. The device according to claim 5, wherein The one or more processors are configured to perform fixed-length decoding on a picture parameter set identifier of a picture parameter set associated with the video data, wherein the picture parameter set identifier has a fixed length of 6 bits.

7. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors configured to decode video data: Determining that a value of a sequence parameter set SPS video parameter set identifier ID in a bitstream including the video data is equal to zero; Based on determining that the value of the SPS video parameter set ID is equal to zero, determining that the SPS of the video data does not reference a video parameter set VPS, and no VPS is referenced when decoding the video data that references the SPS; determining, based on determining that the value of the SPS video parameter set ID is equal to zero and thus the SPS of the video data does not reference a VPS, and no VPS is referenced when decoding video data that references the SPS, that a profile-tier-level structure exists within the SPS without processing a syntax element from the bitstream indicating whether a profile-tier-level structure exists within the SPS; as well as The video data is decoded based on data of the profile-tier-level structure included in the SPS.

8. The non-transitory computer-readable storage medium of claim 7, further storing instructions that, when executed, cause the one or more processors to be configured to decode the video data and decode, from the SPS, an sps_video_parameter_set_id syntax element indicating a value of the SPS video parameter set ID.

9. The non-transitory computer-readable storage medium of claim 8, further storing instructions that, when executed, cause the one or more processors to be configured to decode the video data to perform fixed-length decoding on a picture parameter set identifier of a picture parameter set associated with the video data, wherein the picture parameter set identifier has a fixed length of 6 bits.

10. An apparatus configured to decode video data, the apparatus comprising: means for determining that a value of a sequence parameter set SPS video parameter set identification ID in a bitstream comprising said video data is equal to zero; component for determining, based on determining that the value of the SPS video parameter set ID is equal to zero, that the SPS of the video data does not reference a video parameter set VPS, and that no VPS is referenced when decoding video data that references the SPS; means for determining the presence of a profile-tier-level structure within the SPS without processing a syntax element from the bitstream indicating the presence of a profile-tier-level structure within the SPS based on determining that the value of the SPS video parameter set ID is equal to zero such that the SPS of the video data does not reference a VPS and no VPS is referenced when decoding video data that references the SPS; as well as Means for decoding the video data based on data of the profile-tier-level structure included in the SPS.

11. The apparatus of claim 10, further comprising means for decoding, from the SPS, an sps_video_parameter_set_id syntax element indicating a value of the SPS video parameter set ID.

12. The apparatus of claim 11, further comprising means for fixed-length decoding a picture parameter set identifier of a picture parameter set associated with the video data, wherein the picture parameter set identifier has a fixed length of 6 bits.