Triggering reference picture resampling in video coding - Patents.com

JP7644130B2Active Publication Date: 2025-03-11DOUYIN VISION CO LTD +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2022548755
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-02-14
Filing Date
2021-02-10
Publication Date
2025-03-11
Estimated Expiration
2041-02-10

Smart Images

  • Figure 0007644130000063
    Figure 0007644130000063
  • Figure 0007644130000064
    Figure 0007644130000064
  • Figure 0007644130000065
    Figure 0007644130000065
Patent Text Reader

Abstract

Methods, apparatus, and systems for video processing, including video encoding or video decoding, are described. One exemplary method includes converting between a video including a video picture including a video slice and a bitstream for the video, where the bitstream complies with format rules that specify disabling the use of reference picture resampling (RPR) for reference pictures in a co-located reference picture list when the slice type of the video slice is Type P and temporal motion vector prediction is enabled. The reference pictures are indicated by reference indices of co-located pictures of the video slice used for temporal motion vector prediction.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS Book The wish is, This is based on International Patent Application No. PCT / CN2021 / 076542 filed on February 10, 2021. Priority and benefit of International Patent Application No. PCT / CN2020 / 075194, filed February 14, 2020 Mainly stretch All of the foregoing patent applications are incorporated herein by reference in their entirety.

[0002] This patent specification relates to image and video encoding and decoding. [Background technology]

[0003] Digital video accounts for the largest bandwidth usage on the Internet and other digital communications networks, and the bandwidth demands for digital video use are expected to continue to grow as the number of connected user devices capable of receiving and displaying video increases. Summary of the Invention

[0004] This specification discloses techniques that can be used by video encoders and decoders for video processing to convert between coded representations of video and pixel values ​​of the video.

[0005] In one exemplary aspect, a video processing method is disclosed that includes converting between a video picture that includes video slices and a bitstream representation of the video, where the bitstream conforms to format rules that specify that a slice type of a video slice determines how the slice header of the video slice inherits certain information from the picture header of the video picture.

[0006] In another exemplary aspect, a video processing method is disclosed. The method includes converting between a video picture including a video slice and a bitstream representation of the video. The bitstream conforms to a format rule that specifies that a slice type of the video slice determines a value of a first syntax element in a video slice header. The first syntax element specifies a reference index of a collocated picture used for temporal motion vector prediction.

[0007] In another example aspect, a video processing method is disclosed. The method includes converting between a video picture including a video slice and a bitstream representation of the video. The bitstream complies with format rules that specify disabling the use of reference picture resampling (RPR) for reference pictures in a co-located reference picture list when the slice type of the video slice is type P and temporal motion vector prediction is enabled. The reference pictures are indicated by reference indices of co-located pictures of the video slice used for temporal motion vector prediction.

[0008] In another example aspect, a video processing method is disclosed. The method includes converting between a video picture including a video slice and a bitstream representation of the video, where the bitstream conforms to a format rule that specifies that if a syntax element in a video slice header indicates that the video slice is not co-located with reference picture list 0, then the slice type of the video slice excludes type P.

[0009] In another exemplary aspect, a video processing method is disclosed that includes converting video including a video picture that includes one or more sub-pictures to a bitstream of the video, the bitstream conforming to a format rule that specifies selective inclusion of a first syntax element that indicates whether to operate across a sub-picture boundary in a coded layer video sequence, responsive to a number of sub-pictures in the video picture.

[0010] In another exemplary aspect, a video processing method is disclosed that includes converting video including video pictures that include one or more sub-pictures to a bitstream of the video, the bitstream conforming to a format rule that specifies that the number of sub-pictures of the video pictures in the bitstream is constrained by a constraint flag in the bitstream.

[0011] In another exemplary aspect, a video processing method is disclosed that includes converting video including a video picture including one or more sub-pictures to a bitstream of the video, the bitstream conforming to a format rule that specifies that the number of slices in a sub-picture determines how a syntax element indicating a width of the slice is signaled, the width of the slice being specified as a number of tile columns.

[0012] In another exemplary aspect, a video processing method is disclosed that includes converting a bitstream of a video including a video picture that includes one or more sub-pictures according to a format rule that specifies determining whether each of the one or more sub-pictures in the video picture includes a single slice based on a constraint flag.

[0013] In another exemplary aspect, a video processing method is disclosed. The method includes transforming video including video pictures and a bitstream of the video, at least one of the video pictures including one or more sub-pictures. The bitstream conforms to a format rule that specifies that each target sub-picture across different video pictures uses the same sub-picture index to determine an output sub-bitstream for the one or more target sub-pictures during a sub-picture sub-bitstream extraction process of the transform.

[0014] In another exemplary aspect, a video processing method is disclosed. The method includes determining an output sub-bitstream by extracting sub-bitstreams of one or more target sub-pictures from a video bitstream that includes video pictures, at least one of which includes one or more sub-pictures, and the output sub-bitstream conforms to format rules that specify that the one or more target sub-pictures are represented as a single sub-picture in the output sub-bitstream.

[0015] In another exemplary aspect, a video processing method is disclosed that includes converting between video that includes an Instantaneous Decoding Refresh (IDR) picture and a bitstream of the video, the bitstream conforming to a format rule that specifies the presence of one or more syntax elements associated with a reference picture list in a slice header of the IDR picture.

[0016] In another exemplary aspect, a video processing method is disclosed. The method includes converting video including luma video blocks and chroma video blocks to a bitstream of the video. The luma video blocks are partitioned according to a luma partition tree, and the chroma video blocks are partitioned according to a chroma partition tree. The bitstream includes luma block partition information indicating the luma partition tree and chroma block partition information indicating the chroma partition tree. The bitstream complies with a rule that specifies that the chroma block partition information and the luma block partition information be different.

[0017] In another exemplary aspect, a video processing method is disclosed that includes converting video including video pictures that include one or more sub-pictures to a bitstream of the video, the bitstream conforming to a format rule that specifies constraining one or more syntax structures based on a constraint flag of a syntax element that includes general constraint information.

[0018] In another exemplary aspect, a video processing method is disclosed that includes converting between a video picture that includes video slices and a bitstream representation of the video, where the bitstream conforms to format rules that specify that a slice type of a video slice determines how the slice header of the video slice inherits certain information from the picture header of the video picture.

[0019] In another exemplary aspect, a video processing method is disclosed. The method includes performing a transformation between video units in a video domain of a video and a coding representation of the video, the coding representation conforming to a syntax rule. The rule specifies that a first indicator at a video picture level and a second indicator at a video domain level indicate use of a temporal motion vector predictive coding tool during the transformation. The rule specifies conditions for omitting the first indicator and / or the second indicator in the coding representation.

[0020] In another exemplary aspect, a video processing method is disclosed that includes performing a conversion between video units in a video domain of a video and a coding representation of the video, the coding representation conforming to syntax rules that specify inferring information in a video domain level header as information in a video unit level header.

[0021] In another exemplary aspect, a video processing method is disclosed that includes converting between a video unit in a video domain of a video that includes a plurality of pictures organized as a layered video sequence and a coding representation of the video, wherein one or more fields in the coding representation indicate a number of sub-pictures in the video unit.

[0022] In another exemplary aspect, a video processing method is disclosed that includes transforming between a video unit in a video domain of a video that includes a plurality of pictures organized as a layered video sequence and a coding representation of the video, the coding representation conforming to a format rule that specifies whether a value of a second field indicating a number of sub-pictures in the video unit controls a second field indicating applicability of a cross-sub-picture coding tool for the transformation.

[0023] In another exemplary aspect, a video processing method is disclosed that includes converting between video units in a video domain of a video that includes a plurality of pictures organized as a layered video sequence and a coding representation of the video, the coding representation conforming to a format rule that specifies that a number of sub-pictures per video unit controls values ​​of syntax elements in the coding representation.

[0024] In another exemplary aspect, a video processing method is disclosed that includes converting between a video unit in a video domain of a video including a plurality of pictures organized as a layered video sequence and a coding representation of the video, the coding representation conforming to a format rule that specifies that a value of a field indicating whether a single video slice occurs within a video unit controls coding characteristics of a rectangular slice of the video.

[0025] In another exemplary aspect, a video processing method is disclosed that includes converting between video units in a video domain of a video that includes a plurality of pictures organized as a layered video sequence and a coded representation of the video, the coded representation conforming to a syntax rule where extracted sub-pictures that span different pictures in the coded representation of the layered video sequence have the same sub-picture index.

[0026] In another exemplary aspect, a video processing method is disclosed that includes converting between video units in a video domain of a video that includes a plurality of pictures organized as a layered video sequence and a coding representation of the video, where the coding representation conforms to syntax rules such that an extracted sub-bitstream for a sub-picture sub-bitstream conforms to a single sub-picture format.

[0027] In another exemplary aspect, a video processing method is disclosed that includes converting between video units in a video domain of a video that includes a plurality of pictures organized as a layered video sequence and a coding representation of the video, the coding representation conforming to a format rule that specifies inclusion of one or more constraint flags that control occurrence of one or more syntax elements in a syntax structure in the coding representation.

[0028] In yet another exemplary aspect, a video encoder apparatus is disclosed, the video encoder comprising a processing unit configured to implement the above-described method.

[0029] In yet another exemplary aspect, a video decoder apparatus is disclosed, the video decoder comprising a processing unit configured to implement the above-described method.

[0030] In yet another exemplary aspect, a computer readable medium having code stored thereon is disclosed, the code performing one of the methods described herein in the form of processor executable code.

[0031] These and other features are described throughout this document. [Brief explanation of the drawings]

[0032] [Figure 1] FIG. 1 is a block diagram illustrating an example of a video processing system. [Figure 2] FIG. 1 is a block diagram of a video processing device. [Figure 3] 1 is a flowchart illustrating an example of a video processing method. [Figure 4] 1 is a block diagram illustrating a video coding system according to some embodiments of the present disclosure. [Figure 5] 1 is a block diagram illustrating an encoder according to some embodiments of the present invention. [Figure 6] FIG. 2 is a block diagram illustrating a decoder according to some embodiments of the present invention. [Figure 7] 1 is a flowchart illustrating a video processing method according to the present technology. [Figure 8] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 9] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 10] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 11]10 is a flowchart illustrating another video processing method according to the present technology. [Figure 12] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 13] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 14] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 15] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 16] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 17] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 18] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 19] 10 is a flowchart illustrating yet another video processing method according to the present technology. DETAILED DESCRIPTION OF THE INVENTION

[0033] Section headings are used herein for ease of understanding and are not intended to limit the applicability of the technology and embodiments described in each section to that section alone. Furthermore, the term H.266 is used in certain descriptions solely for ease of understanding and is not intended to limit the scope of the disclosed technology. Thus, the technology described herein is applicable to other video codec protocols and designs. Furthermore, some techniques are described using examples of how the current version of the VVC standard can be modified by inserting new text (highlighted) or deleting current text (strikethrough).

[0034] This specification relates to video coding technology. Specifically, it relates to High Level Syntax (HLS) and related technologies for video coding. It may be applied to existing video coding standards such as HEVC, or may be applied to finalize standards (Versatile Video Coding). The present invention is also applicable to future video coding standards or video codecs.

[0035] Video coding standards have evolved primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Visual. The two organizations jointly developed H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Coding (AVC), and H.265 / HEVC. Since H.262, video coding standards have been based on hybrid video coding architectures that utilize temporal prediction and transform coding. To explore future video coding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, many new methods have been adopted by JVET and incorporated into reference software called Joint Exploration Mode (JEM). JVET meets quarterly, and the new coding standard aims to achieve a 50% bitrate reduction compared to HEVC. At the April 2018 JVET meeting, the new video coding standard was officially named "Versatile Video Coding (VVC)" and the first version of the VVC Test Model (VTM) was released at that time. As efforts to contribute to the standardization of VVC continue, new coding techniques are being adopted for the VVC standard at every JVET meeting.

[0036] Definition example

[0037] The following definitions are used herein:

[0038] Access Unit (AU) A set of PUs containing coded pictures belonging to different layers and associated together for output from the DPB.

[0039] Adaptive Loop Filter (ALF) A filtering process applied as part of the decoding process and controlled by parameters communicated in the APS.

[0040] AC Transform Coefficient Any transform coefficient whose frequency index in at least one of the two dimensions is non-zero.

[0041] ALF_APS: APS that controls ALF processing.

[0042] Adaptive Parameter Set (APS): A syntax structure containing syntax elements that apply when the slice is zero or more, as determined by the syntax elements found in the slice header being zero or more.

[0043] The associated IRAP picture (of a particular picture). The previous IRAP picture in decoding order (if any) has the same value nuh_layer_id as the particular picture.

[0044] Associated non-VCL NAL unit: A non-VCL NAL unit (if any) for a VCL NAL unit, if the VCL NAL unit is the associated VCL NAL unit of the non-VCL NAL unit.

[0045] Associated VCL NAL unit: The VCL NAL unit that precedes in decoding order the non-VCL NAL unit, whose nal_unit_type is equal to EOS_NUT, EOB_NUT, SUFFIX_APS_NUT, SUFFIX_SEI_NUT, FD_NUT, RSV_NVCL_27, or is in the range UNSPEC_30..UNSPEC_31; otherwise, the next VCL NAL unit in decoding order.

[0046] Binary: A sequence of two values, each consisting of one bit.

[0047] Binarization: A set of binary columns for all possible values ​​of a syntax element.

[0048] Binarization: A process that uniquely maps all possible values ​​of a syntax element to a set of binary strings.

[0049] Binary splitting: Splitting a rectangular MxN sample block into two blocks, where splitting vertically results in a first (M / 2)xN block and a second (M / 2)xN block, and splitting horizontally results in a first Mx(N / 2) block and a second Mx(N / 2) block.

[0050] Binary string: An intermediate binary representation of the value of a syntax element from the binarization of the syntax element.

[0051] Bidirectionally predicted (B) slice: A slice that is decoded using intra-prediction with up to two motion vectors and reference indices, or inter-prediction, to predict the sample values ​​of each block.

[0052] Bitstream: A sequence of bits in the form of a NAL unit stream or a byte stream that forms a representation of a sequence of AUs that form one or more Coded Video Sequences (CVS).

[0053] Block: An M-by-N (M columns by N rows) array of samples, or an M-by-N array of transform coefficients.

[0054] Block Vector: A two-dimensional vector used in IBC prediction that provides the offset from the coordinates of the current coding block to the coordinates of the predicted block in the same decoded picture of the predicted block.

[0055] Byte: When written or read as a sequence of bit values, an 8-bit string in which the left-most bit represents the most significant bit and the right-most bit represents the least significant bit.

[0056] Byte-aligned: A position in a bitstream is byte-aligned if its position is an integer multiple of 8 bits from the position of the first bit in the bitstream, and a bit or byte or syntax element is said to be byte-aligned if the position at which it appears in that bitstream is byte-aligned.

[0057] Byte Stream: An encapsulation of a NAL unit stream, including start code prefixes and NAL units.

[0058] can: A term used to refer to behavior that is permitted but not necessarily required.

[0059] Chroma: An adjective represented by the symbols Cb and Cr that specifies that one sample array or single sample represents one of two color difference signals for a primary color. Note that we use the term chroma rather than chrominance to avoid using the linear light transfer characteristics often associated with the term chrominance.

[0060] Clean Random Access (CRA) PU: A PU whose coded picture is a CRA picture.

[0061] Clean Random Access (CRA) picture: An IRAP picture whose VCL NAL unit nal_unit_type is CRA_NUT. Note that a CRA picture may be the first picture in decoding order in the bitstream or may appear later in the bitstream without referencing any other pictures for inter prediction in its decoding process. A CRA picture may be associated with an RADL or RASL picture. If the NoOutputBeforeRecoveryFlag of a CRA picture is equal to 1, the decoder does not output the associated RASL picture because it may not be decodable because it may contain references to pictures that do not exist in the bitstream.

[0062] Coded Layer Video Sequence (CLVS): A sequence of PUs with the same value of nuh_layer_id, consisting of, in decoding order, a CLVSS PU, zero or more PUs that are not CLVSS PUs, and all PUs up to but not including the subsequent PU that is a CLVSS PU. Note that a CLVSS PU may be an IDR PU, a CRA PU, or a GDR PU. The value of NoOutputBeforeRecoveryFlag is 1 for each IDR PU, and for each CRA PU whose HandleCraAsCVSStartFlag is equal to 1, and for each CRA or GDR PU that is the first PU of a layer of the bitstream in decoding order or the first PU of a layer in decoding order that follows an EOS NAL unit.

[0063] Coded Layer Video Sequence Start (CLVSS) PU: A PU whose coded picture is a CLVSS picture.

[0064] Coded Layer Video Sequence Start (CLVSS) picture. A coded picture that is an IRAP picture with NoOutputBeforeRecoveryFlag equal to 1, or a GDR picture with NoOutputBeforeRecoveryFlag equal to 1.

[0065] Coding picture: A coding representation of a picture that contains VCL NAL units that have a specific value of nuh_layer_id within one AU and that contain all CTUs of this picture.

[0066] Coding Picture Buffer (CPB): A first-in, first-out buffer containing DUs in decoding order as specified by the hypothetical reference decoder.

[0067] Coding Representation A data element is represented in its coded form.

[0068] Coding Video Sequence (CVS): A sequence of AUs consisting of zero or more AUs that are not CVSS AUs, in decoding order, following a CVSS AU and including all AUs up to (but not including) the subsequent AU that is a CVSS AU.

[0069] Coding Video Sequence Start (CVSS) AU: There is a PU in each layer of CVS, and the coded picture of each PU is a CLVSS picture.

[0070] Coding Block: An M x N block of samples for some values ​​of M and N such that partitioning one CTB into coding blocks is a division.

[0071] Coding Tree Block (CTB): An NxN block of samples for some value of N such that partitioning a module into CTBs is a division.

[0072] Coding Tree Unit (CTU): One CTB for luma samples, two corresponding CTBs for chroma samples of a picture with a three-sample arrangement, or a CTB for samples of a monochrome picture or picture coded using three separate color planes, and the syntactic structure used to code these samples.

[0073] Coding Unit (CU): A coding block of luma samples, or the corresponding two coding blocks of chroma samples for a picture with a three-sample arrangement, or a coding block of samples for a monochrome picture, or a coding block of samples for a picture that is coded using three separate color planes and the syntax structure used to code the samples.

[0074] Component: An array or single sample of one of the three arrays (luminance and two chroma) that make up a picture in 4:2:0, 4:2:2, or 4:4:4 color format, or an array or single sample that makes up a picture in monochrome format.

[0075] Context variable: A variable specified in the binary adaptive binary arithmetic decoding process by an expression containing the most recently decoded binary value.

[0076] Deblocking filter: A filtering process applied as part of the decoding process to minimize the appearance of visual artifacts at boundaries between blocks.

[0077] Decoded picture: A picture created by applying the decoding process to a coded picture.

[0078] Decoded Picture Buffer (DPB): A buffer holding decoded pictures for reference, output reordering, and output delay adjustments specified by the hypothetical reference decoder.

[0079] Decoder: An embodiment of the decoding process.

[0080] Decoding order: The order in which the decoding process processes syntax elements.

[0081] Decoding Process: The process described herein that reads a bitstream and derives decoded pictures from it.

[0082] Decoding Unit (DU): An AU if DecodingUnitHrdFlag is equal to 0; otherwise, a subset of an AU, consisting of one or more VCL NAL units and associated non-VCL NAL units in the AU.

[0083] Emulation prevention byte: A byte equal to 0x03 that is present in a NAL unit when the syntax elements of the bitstream form a certain pattern of byte values ​​such that no sequence of consecutive byte-aligned bytes in the NAL unit can contain a start code prefix.

[0084] Encoder: An embodiment of the encoding process.

[0085] Encoding Process: A process not specified herein that produces a bitstream compliant with this specification.

[0086] Filler data NAL unit A NAL unit whose nal_unit_type is FD_NUT.

[0087] flag: A variable or single-bit syntax element that can take one of two possible values: 0 and 1.

[0088] Frequency index: A one- or two-dimensional index associated with a transform coefficient before applying the transform to the decoding process.

[0089] Gradual Decoding Update (GDR) AU: An AU in which each coded picture in this PU is a GDR picture.

[0090] Gradual Decoding Refresh (GDR) PU: A PU whose coded picture is a GDR picture.

[0091] Gradual Decoding Refresh (GDR) picture: A picture whose NAL unit nal_unit_type is GDR_NUT.

[0092] Hypothetical Reference Decoder (HRD): A hypothetical decoder model that specifies constraints on the variability of conforming NAL unit streams or conforming byte streams that an encoding process can produce.

[0093] Virtual Stream Scheduler (HSS): A virtual delivery mechanism used to check the conformance of a bitstream or decoder with respect to the input timing and data flow of the bitstream to a virtual reference decoder.

[0094] Informative: Terms used to refer to content provided herein that do not establish any mandatory requirements for conformance with this specification are not considered an integral part of this specification.

[0095] Instantaneous Decoding Refresh (IDR) PU: A PU whose coded picture is an IDR picture.

[0096] Instantaneous Decoding Refresh (IDR) picture: An IRAP picture whose VCL NAL unit has nal_unit_type IDR_W_RADL or IDR_N_LP. Note that an IDR picture may be the first picture in decoding order in the bitstream or may appear later in the bitstream without referencing any other pictures for inter prediction in its decoding process. Each IDR picture is the first picture in the CVS in decoding order. IDR pictures whose VCL NAL units have nal_unit_type IDR_W_RADL may have an associated RADL picture. IDR pictures whose VCL NAL units have nal_unit_type IDR_N_LP do not have an associated first picture. IDR pictures do not have an associated RADL picture.

[0097] Inter-layer reference picture (ILDR): A picture that is in the same AU as the current picture, has a nuh_layer_id that is smaller than the nuh_layer_id of the current picture, and is marked as "used for long-term reference."

[0098] Inter-coding: Coding blocks, slices, and pictures using inter-prediction

[0099] Inter-prediction: A prediction derived in a manner that depends on data elements (e.g., sample values ​​or motion vectors) of one or more reference pictures.

[0100] Intra-block copy (IBC) prediction: A prediction derived in a way that relies on data elements (such as sample values ​​and block vectors) of the same decoded slice without referring to a reference picture.

[0101] Intra-coding: Coding of a block, slice, or picture using intra-prediction.

[0102] Intra prediction: A predicted value derived solely from data elements (e.g., sample values) of the same decoded slice, without reference to a reference picture.

[0103] Intra Random Access Point (IRAP) AU: An AU in which a PU exists in each layer of a CVS, and the coded picture of each PU is an IRAP picture.

[0104] Intra Random Access Point (IRAP) PU: A PU whose coded picture is an IRAP picture.

[0105] Intra Random Access Point (IRAP) picture: A coded picture in which all VCL NAL units have the same value of nal_unit_type within the range from IDR_W_RADL to CRA_NUT. Note that an IRAP picture can be a CRA or IDR picture without referencing any pictures other than the inter-predicted pictures in its decoding process. The first picture in decoding order in the bitstream must be an IRAP or GDR picture. If necessary, a parameter set must be referenced, if available, to correctly decode the IRAP picture and all subsequent non-RAP pictures in decoding order in the CVS without having to perform the decoding process in the decoding order of pictures preceding the IRAP picture. Note that the value of mixed_nalu_types_in_pic_flag for an IRAP picture is equal to 0. If mixed_nalu_types_in_pic_flag is equal to 0 for a picture and any slice of this picture has a nal_unit_type in the range IDR_W_RADL to CRA_NUT inclusive, then all other slices of this picture have the same value of nal_unit_type and the picture is known as an IRAP picture.

[0106] Intra (i) slice: A slice that is decoded using intra prediction only.

[0107] Layer: A set of VCL NAL units that all have a particular value of nuh_layer_id and have associated non-VCL NAL units.

[0108] Leading picture: A picture that is in the same layer as the associated IRAP picture and precedes the associated IRAP picture in output order.

[0109] Leaf: The terminal node of a tree, which is the root node of a tree with depth 0.

[0110] Level: A defined set of constraints on the possible values ​​of syntax elements and variables in this specification, or on the values ​​of transform coefficients before scaling. Note that the same set of levels is defined for all profiles, and most aspects of the definition of each level are common across different profiles. Individual implementations may support different levels for each supported profile, within the specified constraints.

[0111] List 0 (List 1) motion vector: A motion vector associated with a reference index that refers to reference picture list 0 (List 1).

[0112] List 0 (List 1) Prediction: Inter prediction of slice content using a reference index that refers to reference picture List 0 (List 1).

[0113] LMCS APS: APS that controls LMCS processing.

[0114] Long-term Reference Picture (LTRP): A picture that has with nuh_layer_id equal to the nuh_layer_id of the current picture and is marked as "used for long-term reference".

[0115] Luminance: Denoted by the symbol or subscript Y or L, this adjective specifies that one sample array or single sample represents a monochrome signal associated with a primary color. Note that the term luminance is used rather than luminance to avoid the linear light transfer characteristic often associated with the term luminance. The symbol L is sometimes used instead of the symbol Y to avoid confusion with the symbol y, which is used for vertical position.

[0116] Luminance Mapping with Chroma Scaling (LMCS): A process applied as part of the decoding process that maps luminance samples to specific values, and may apply a scaling operation to the values ​​of chroma samples.

[0117] May: A term used to refer to behavior that is permitted but not necessarily required. Note that in several places where the optional nature of the described behavior is intended to be emphasized, the phrase "may or may not" is used for emphasis. This term is used herein only to highlight example embodiments where that requirement has been adopted in coding standards and does not limit the scope of the disclosed technology.

[0118] Motion vector: A two-dimensional vector used in inter prediction that specifies the offset from the coordinates of a decoded picture to the coordinates of a reference picture.

[0119] Multitype tree: A tree in which a parent node can be split into two child nodes using binary splitting, or into three child nodes using ternary splitting, each of which can be a parent node that can split another child node into two or three child nodes.

[0120] Must: A term used to express a requirement or consideration of the implications of a requirement stated elsewhere in this specification (used exclusively in an informative context). This term is used herein only to highlight exemplary embodiments adopted in the standard to which the requirement is codified and does not limit the scope of the disclosed technology.

[0121] Network Abstraction Layer (NAL) unit: A syntactic structure that includes an indication of the type of data that follows and bytes containing data in the form of RBSPs interspersed with emulation prevention bytes as needed.

[0122] Network Abstraction Layer (NAL) unit stream: A sequence of NAL units.

[0123] Note: A term that prefixes informative notes (used exclusively in informative contexts).

[0124] Operation Point (OP): A temporal subset of an OLS, identified by the OLS Index and the highest value of TemporalId.

[0125] Output Layer: The layer of the output layer set that will be output.

[0126] Output Layer Set (OLS): A set of layers composed of a set of specified layers, where one or more layers in this set of layers are specified as output layers.

[0127] Output Layer Set (OLS) Layer Index: The index of the layer in OLS relative to the list of layers in OLS.

[0128] Output order: The order in which decoded pictures are output from the DPB (for decoded pictures output from the DPB).

[0129] Output time: The time to output a decoded picture from the DPB (decoded picture output from the DPB) specified by the HRD according to the output timing DPB operation.

[0130] Parameter: A syntax element of the second word of a Sequence Parameter Set (SPS), Picture Parameter Set (PPS), or a quantization parameter of a defined term.

[0131] Partition: Partitioning a set into subsets so that each element of the set is in exactly one of the subsets.

[0132] Picture: An array of luma samples in monochrome format, or an array of luma samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2, 4:4:4 color formats. Note that a picture can be either a frame or a field. However, in a single CVS, all pictures are frames or all pictures are fields.

[0133] Picture Header (PH): A syntax structure that contains syntax elements that apply to all slices of a coded picture.

[0134] Picture level slice index: If rect_slice_flag is equal to 1, it indicates the index of the slice relative to the list of slices in the picture, in the order signaled in the PPS.

[0135] Picture Order Count (POC): A variable associated with each picture that uniquely identifies the associated picture among all pictures in the CLVS and, when the associated picture is output from the DPB, indicates the output order position of the associated picture relative to the output order positions of other pictures in the same CLVS that are output from the DPB.

[0136] Picture Parameter Set (PPS): A syntax structure containing syntax elements that apply to zero or more entire coded pictures, as determined by the syntax elements found in each slice header.

[0137] Picture Unit (PU): A set of NAL units associated with each other according to specified classification rules, consecutive in decoding order, and containing exactly one coded picture.

[0138] Prediction: An embodiment of the prediction process.

[0139] Prediction Processing: The use of a predictor to provide an estimate of the currently decoded data element (e.g., a sample value or a motion vector).

[0140] Predicted (P) slice: A slice that is decoded using intra prediction with at most one motion vector and reference index, or inter prediction, to predict the sample values ​​of each block.

[0141] Predictor: A defined value or combination of previously decoded data elements (e.g., sample values ​​or motion vectors) used in the decoding process of subsequent data elements.

[0142] Profile: A defined subset of the syntax of this specification.

[0143] Quadtree: A tree in which a parent node can be divided into four child nodes, each of which can be a parent node that can further divide into four child nodes.

[0144] Quantization parameter: A variable that the decoding process uses to scale the transform coefficient levels.

[0145] Random Access: The act of starting the decoding process of a bitstream at a point other than the beginning of the stream.

[0146] Random Access Decodable First (RADL) PU: A PU whose coded picture is a RADL picture.

[0147] Random Access Decodable First (RADL) picture: A coded picture whose respective VCL NAL unit nal_unit_type is RADL_NUT. Note that all RADL pictures are first pictures. RADL pictures are not used as reference pictures for the decoding process of trailing pictures of the same associated IRAP picture. If field_seq_flag is equal to 0 (if present), all RADL pictures precede in decoding order all non-first pictures of the same associated IRAP picture.

[0148] Random Access Skip First (RASL) PU: A PU in which the coded picture is a RASL picture.

[0149] Random Access Skip First (RASL) picture: A coded picture whose respective VCL NAL unit nal_unit_type is RASL_NUT. Note that every RASL picture is the first picture of its associated CRA picture. If the associated CRA picture's NoOutputBeforeRecoveryFlag is equal to 1, the RASL picture is not output and may not be correctly decodable since it may contain references to pictures that do not exist in the bitstream. RASL pictures are not used as reference pictures for the decoding process of non-RASL pictures. If field_seq_flag is equal to 0 (if present), every RASL picture precedes in decoding order all non-first pictures of the same associated CRA picture.

[0150] Raster Scan: Mapping a rectangular 2D pattern into a 1D pattern such that the first entry in the 1D pattern is from the top row of the 2D pattern scanned from left to right, followed by the second, third, etc. rows scanned from left to right.

[0151] Raw Byte Sequence Payload (RBSP): A syntax structure containing an integer number of bytes encapsulated in one NAL unit, taking the form of a string of data bits that is either empty or contains a syntax element followed by an RBSP stop bit and zero or more subsequent bits equal to 0.

[0152] Raw Byte Sequence Payload (RBSP) Stop Bit: A bit equal to 1 that exists in the Raw Byte Sequence Payload (RBSP) after the data bit string. The location of the end in the RBSP can be determined by searching from the end of the RBSP for the RBSP stop bit (the last non-zero bit in the RBSP).

[0153] Reference index: An index into the reference picture list.

[0154] Reference picture: a picture that is a short-term reference picture, a long-term reference picture, or an inter-layer reference picture. Note that a reference picture contains samples that may be used for inter-prediction in decoding order in the decoding process of a subsequent picture.

[0155] Reference picture list: A list of reference pictures used for inter prediction of a P or B slice. Note that two reference picture lists, Reference Picture List 0 and Reference Picture List 1, are generated for each slice of a non-IDR picture. The set of unique pictures referenced by all entries in the two reference picture lists associated with a picture consists of all reference pictures that can be used for inter prediction in decoding order for the associated picture or any picture following the associated picture. In the decoding process of a P slice, only Reference Picture List 0 is used for inter prediction. In the decoding process of a B slice, both Picture List 0 and Reference Picture List 1 are used for inter prediction. When decoding slice data of an I slice, no reference picture list is used for inter prediction.

[0156] Reference Picture List 0: The reference picture list used for inter prediction of P slices, or the first reference picture list used for inter prediction of B slices.

[0157] Reference picture list 1: The second reference picture list used for inter prediction of B slices.

[0158] Reserved: A term that can be used to specify that some values ​​of certain syntax elements are for future use by ITU-T|ISO / IEC and will not be used in bitstreams conforming to this version of this specification, but may be used in bitstreams conforming to future extensions of this specification by ITU-T|ISO / IEC.

[0159] Residual: The decoded difference between the prediction of one sample or data element and its decoded value.

[0160] Scaling: The process of multiplying the levels of a conversion factor by a factor to obtain the conversion factor.

[0161] Scaling list: A list that associates the scaling factor for each frequency index.

[0162] Scaling List APS: An APS with syntax elements used to construct a scaling list.

[0163] Sequence Parameter Set (SPS): A syntax structure containing zero or more syntax elements that apply across CLVS, determined by the content of the syntax elements in the PPS referenced by the syntax elements found in each picture header.

[0164] Shall: A term used to express a mandatory requirement for conformance with this specification. Note that when used to express a mandatory constraint on the values ​​of syntax elements or the results obtained by the operations of a specified decoding process, it is the encoder's responsibility to ensure that this constraint is met. When used in reference to operations performed in a decoding process, a decoding process that produces a cropped decoded picture identical to that output by the decoding process described herein complies with the decoding process requirements of this specification. This term is used herein only to highlight example embodiments where the requirement has been adopted in a coding standard and is not intended to limit the scope of the disclosed technology.

[0165] Short-Term Reference Picture (STRP): A picture whose nuh_layer_id equals the nuh_layer_id of the current picture and is marked as "used for short-term reference".

[0166] Should: A term used to refer to an implementation behavior that is recommended to be followed under normal, expected circumstances, but is not a mandatory requirement for conformance with this specification. This term is used herein only to highlight example embodiments where the requirement has been adopted in a coding standard, and does not limit the scope of the disclosed technology.

[0167] Slice: An integral number of complete tiles within a picture or a series of complete CTU rows contained exclusively in a single NAL unit.

[0168] Slice Header: The part of a coded slice that contains the data elements containing all tile or CTU rows within the tiles represented by the slice.

[0169] Source: A term used to describe unencoded video material or some of its attributes.

[0170] Start code prefix: A unique sequence of three bytes equal to 0x000001 embedded in the byte stream as a prefix of each NAL unit. Note that a decoder can use the position of the start code prefix to identify the beginning of a new NAL unit and the end of the previous NAL unit. Emulation of the start code prefix within a NAL unit is prevented by including an emulation prevention byte.

[0171] Stepwise Temporal Sub-Layer Access (STSA) PU: A PU whose coded picture is an STSA picture.

[0172] Stepwise Temporal Sub-Layer Access (STSA) picture: A coded picture whose respective VCL NAL unit nal_unit_type is STSA_NUT. Note that an STSA picture does not use a picture with the same TemporalId as the STSA picture for inter-prediction reference. A picture following the STSA picture in decoding order with the same TemporalId as the STSA picture does not use a picture preceding the STSA picture in decoding order with the same TemporalId as the STSA picture for inter-prediction reference. An STSA picture enables up-switching from the sub-layer immediately below the STSA picture to the sub-layer containing the STSA picture. The TemporalId of an STSA picture must be greater than 0.

[0173] String of Data Bits (SODB): A sequence of bits representing a syntax element present in the Raw Byte Sequence Payload before the Raw Byte Sequence Payload Stop Bit, where the leftmost bit is considered the first most significant bit and the rightmost bit is considered the last least significant bit.

[0174] Sub-bitstream extraction process: A specific process that indicates removing from a bitstream NAL units in a bitstream that do not belong to a target set determined by a target OLS index and a target highest TemporalId, and outputting a sub-bitstream consisting of NAL units in the bitstream that belong to the target set.

[0175] Sublayer: A temporally scalable layer of a temporally scalable bitstream that consists of VCL NAL units and associated non-VCL NAL units with a particular value of the TemporalId variable.

[0176] Sub-layer representation: A subset of a bitstream consisting of NAL units from a particular sub-layer and lower sub-layers.

[0177] Subpicture: A rectangular area of ​​one or more slices within a picture.

[0178] Sub-picture level slice index: If rect_slice_flag is equal to 1, indicates the index of the slice into the list of slices in the sub-picture in the order signaled in the PPS.

[0179] Supplemental Enhancement Information (SEI) Message: A syntactic structure with defined semantics that conveys information that is not required in the decoding process to determine the values ​​of samples in the decoded picture.

[0180] Syntax element: An element of data that is represented in a bitstream.

[0181] Syntax construct: Zero or more syntax elements that occur together in a bitstream in a specified order.

[0182] Temporal division: Dividing a rectangular MxN sample block into three blocks. The vertical division results in a first (M / 4)xN block, a second (M / 2)xN block, and a third (M / 4)xN block, and the horizontal division results in a first Mx(N / 4) block, a second Mx(N / 2) block, and a third Mx(N / 4) block.

[0183] Layer: A defined category of level constraints placed on the values ​​of syntax elements of a bitstream. Level constraints are nested within hierarchies, such that a decoder that conforms to a given layer and level will be able to decode all bitstreams that conform to the same layer or layers below that level or levels below it.

[0184] Tile: A rectangular region of CTUs within a particular tile column and a particular tile row in a picture.

[0185] Tile column: A rectangular region of a CTU with a height equal to the height of the picture and a width specified by a syntax element in the picture parameter set.

[0186] Tile row: A rectangular region of a CTU with a height specified by a syntax element in the picture parameter set and a width equal to the width of the picture.

[0187] Tile scan: A particular order of CTUs dividing a picture in which the tiles of the picture are ordered consecutively in a raster scan of the tiles of the picture, and the CTUs are ordered consecutively in a CTU raster scan of the tiles.

[0188] Trailing picture: A non-IRAP picture that follows the associated IRAP picture in output order, but is not an STSA picture. Note that the trailing pictures associated with an IRAP picture also follow the decoding order of the IRAP picture. Pictures that follow the output order of the associated IRAP picture and precede the associated IRAP picture in decoding order are not allowed.

[0189] Transform: The part of the decoding process that converts blocks of transform coefficients into blocks of spatial domain values.

[0190] Transform Block: A rectangular MxN block of samples resulting from a transform within the decoding process.

[0191] Transform coefficient: A scalar quantity considered in the frequency domain that is associated with a particular one- or two-dimensional frequency index in a transform during the decoding process.

[0192] Transform Coefficient Level: An integer quantity representing the value associated with a particular two-dimensional frequency index in the decoding process, before scaling the calculation of transform coefficient values.

[0193] Transform Unit (TU): A transform block of luma samples and two corresponding transform blocks of chroma samples of a picture when using a single coding unit tree for luma and chroma; or a transform block of luma samples when using two separate coding unit trees for luma and chroma, and the syntax structure used to transform the transform block samples.

[0194] Tree: A tree is a finite set of nodes with a unique root node.

[0195] Unspecified: A term that may be used to specify certain values ​​of a particular syntax element, but that value does not have a specific meaning in this specification and will not have a specific meaning in the future as an integral part of future versions of this specification.

[0196] Video Coding Layer (VCL) NAL unit: A general term for coded slice NAL units, a subset of NAL units that have reserved values ​​of nal_unit_type, which are categorized herein as VCL_NAL units.

[0197] Examples of bitstream and picture formats, partitioning, scanning processes, and neighborhood relationships are described below.

[0198] 6.3 Picture, Subpicture, Slice, Tile, and CTU Division

[0199] 6.3.2 Block, Quadtree, and Multitype Tree Structures

[0200] Samples are processed in CTB units. The array size for both the width and height of each luma CTB is CtbSizeY in samples. The array width and height of each chroma CTB is CtbWidthC and CtbHeightC, respectively, in samples. Each CTB specifies a block size for intra or inter prediction and is assigned a partition signaling for transform coding. This division is a recursive quadtree division. The root of the quadtree is associated with a CTB. The quadtree is divided until a leaf is reached, called a quadtree leaf. If the module width is not an integer of the CTB size, the CTB at the right module boundary is incomplete. If the module height is not an integer multiple of the CTB size, the CTB at the bottom module boundary is incomplete. A coding block is the root node of two trees: a prediction tree and a transform tree. The prediction tree specifies the location and size of the prediction block. The transform tree specifies the location and size of the transform block. The luma and chroma split information is the same for the prediction tree, and may or may not be the same for the transform tree.

[0201] Blocks and associated syntactic structures are grouped into "unit" structures as follows: - One transform block (for monochrome pictures or with separate_colour_plane_flag equal to 1) or three transform blocks (for the luminance and chrominance components of pictures in 4:2:0, 4:2:2, or 4:4:4 color formats) and associated transform syntax structure units are associated with a transform unit. - One coding block (monochrome picture or separate_colour_plane_flag equals 1) or three coding blocks (luminance and chrominance), associated coding syntax structures and associated transform units are associated with a coding unit. - One CTB (monochrome picture or separate_colour_plane_flag equals 1) or three CTBs (luminance and chrominance), the associated coding tree syntax structure and the associated coding unit are associated to a CTU.

[0202] 7 Syntax and Semantics

[0203] 7.3 Tabular Syntax

[0204] 7.3.1 NAL Unit Syntax

[0205] 7.3.1.1 General NAL Unit Syntax

[0206] [Table 1]

[0207] 7.3.1.2 NAL unit header syntax [Table 2]

[0208] 7.3.2 Raw Byte Sequence Payload, Trailing Bits, and Byte Alignment Syntax

[0209] 7.3.2.1 Decoding Capability Information RBSP Syntax

[0210] [Table 3]

[0211] 7.3.2.2 Video parameter set RBSP syntax

[0212] [Table 4] [Table 5] [Table 6]

[0213] 7.3.2.3 Sequence Parameter Set RBSP Syntax

[0214] [Table 7] [Table 8] [Table 9] [Table 10] [Table 11] [Table 12] [Table 13] [Table 14]

[0215] 7.3.2.4 Picture parameter set RBSP syntax

[0216] [Table 15] [Table 16] [Table 17] [Table 18] [Table 19]

[0217] 7.3.2.5 Adaptation Parameter Set RBSP Syntax

[0218] [Table 20]

[0219] 7.3.2.6 Picture Header RBSP Syntax

[0220] [Table 21]

[0221] 7.3.2.7 Picture Header Structure Syntax

[0222] [Table 22] [Table 23] [Table 24] [Table 25] [Table 26] [Table 27]

[0223] 7.3.2.8 Supplemental Enhancement Information RBSP Syntax

[0224] [Table 28]

[0225] 7.3.2.9 AU Delimiter RBSP Syntax

[0226] [Table 29]

[0227] 7.3.2.10 RBSP Syntax at the End of a Sequence

[0228] [Table 30]

[0229] 7.3.2.11 End of Bitstream RBSP Syntax

[0230] [Table 31]

[0231] 7.3.2.11 Filler Data RBSP Syntax

[0232] [Table 32]

[0233] 7.4 Semantics

[0234] 7.4.1 General

[0235] This section specifies syntax structures and the semantics associated with syntax elements within those structures. When a table or set of tables is used to specify the semantics of a syntax element, values ​​not specified in the tables MUST NOT be included in the bitstream unless otherwise stated in this specification.

[0236] 7.4.2 NAL unit syntax

[0237] 7.4.2.1 General NAL unit syntax

[0238] NumBytesInNalUnit specifies the size of a NAL unit in bytes. This value is required for decoding the NAL unit. To validate the inference of NumBytesInNalUnit, some form of demarcation of NAL unit boundaries is required. One such demarcation method is for byte stream formats. Other demarcation methods may be specified outside the scope of this specification.

[0239] NOTE 1 - The Video Coding Layer (VCL) is specified to efficiently represent the content of video data. The NAL is specified to format that data and provide header information in a manner suitable for transmission over various communication channels or storage media. All data is contained in NAL units, each of which contains an integer number of bytes. The NAL unit specifies a general format used in both packet-oriented and bitstream systems. The format of the NAL unit for both packet-oriented transport and bytestream is identical, except that in the bytestream format, each NAL unit may be preceded by a start code prefix and additional padding bytes.

[0240] RBSP_byte[i] is the i-th byte of the RBSP. The RBSP is defined as an ordered sequence of bytes as follows: The RBSP includes the following data bit string (SODB): - If the SODB is empty (i.e., has a length of 0 bits), the RBSP is also empty. Otherwise, the RBSP includes the SODB as follows: 1) The first byte of RBSP contains the first (most significant, leftmost) 8 bits of the SODB, the next byte of RBSP contains the next 8 bits of the SODB, and so on until there are less than 8 bits remaining in the SODB. 2) After the SODB, there is the rbsp_trailing_bits() syntax construct as follows: i) The first (most significant, leftmost) bit of the last RBSP byte contains the remaining bits (if any) of the SODB. ii) The next bit consists of one bit equal to 1 (i.e., rbsp_stop_one_bit). iii) If rbsp_stop_one_bit is not the last bit of a byte-aligned byte, then one or more zero-valued bits (i.e., instances of RBSP_alignment_zero_bit) are present and byte-alignment is performed. 3) After the RBSP_trailing_bits() at the end of the RBSP, there may be one or more cabac_zero_word 16-bit syntax elements equal to 0x0000 in some RBSPs.

[0241] Syntax structures with these RBSP properties are represented in the syntax tables using the "_rbsp" suffix. These structures are implemented within NAL units as the content of the RBSP_byte[i] data bytes. The association of RBSP syntax structures to NAL units is specified in Table 5.

[0242] NOTE 2 - If the RBSP boundaries are known, a decoder can extract the SODB from the RBSP by concatenating the bits of the RBSP bytes, discarding the last (least significant, rightmost) bit, rbsp_stop_one_bit, that is equal to 1, and discarding the following (lowest significant, rightmost) bits that are equal to 0. The data required for the decoding process is contained in the SODB portion of the RBSP.

[0243] emulation_prevention_three_byte is a byte equal to 0x03. If emulation_prevention_3_byte is present in a NAL unit, it is discarded by the decoding process. The last byte of a NAL unit is not equal to 0x00.

[0244] The following three-byte sequence does not occur at any byte-aligned position within a NAL unit: -0x000000 -0x000001 -0x000002

[0245] Within a NAL unit, no other four-byte sequence beginning with 0x000003 occurs in a byte-aligned position other than the following sequence: -0x00000300 -0x00000301 -0x00000302 -0x00000303

[0246] 7.4.2.2 NAL unit header semantics

[0247] forbidden_zero_bit shall be equal to 0.

[0248] nuh_reserved_zero_bit shall be equal to 0. A value of 1 for nuh_reserved_zero_bit may be specified by ITU-T|ISO / IEC in the future. Decoders shall ignore (i.e., remove from the bitstream and discard) NAL units with nuh_reserved_zero_bit equal to 1.

[0249] nuh_layer_id specifies the identifier of the layer to which a VCL NAL unit belongs or to which a non-VCL NAL unit applies. The value of nuh_layer_id shall be in the range from 0 to 55, inclusive. Other values ​​of nuh_layer_id are reserved for future use by ITU-T|ISO / IEC. The value of nuh_layer_id shall be the same for all VCL NAL units of one coded picture. The value of nuh_layer_id of a coded picture or PU is the value of nuh_layer_id of the VCL NAL units of the coded picture or PU.

[0250] The values ​​of nuh_layer_id for AUD, PH, EOS, and FD NAL units are constrained as follows: - If nal_unit_type is equal to AUD_NUT, nuh_layer_id shall be equal to vps_layer_id[0]. - Alternatively, if nal_unit_type is equal to PH_NUT, EOS_NUT, or FD_NUT, nuh_layer_id shall be the nuh_layer_id of the associated VCL NAL unit.

[0251] NOTE 1 - The values ​​of nuh_layer_id in DCI, VPS, and EOB NAL units are not constrained.

[0252] The value of nal_unit_type shall be the same for all pictures in a CVSS AU. nal_unit_type specifies the NAL unit type, i.e., the type of RBSP data structure contained in the NAL unit, as specified in Table 5. If the nal_unit_type of a NAL unit is in the range UNSPEC_28..UNSPEC_31 and the semantics are unspecified, this NAL unit shall have no effect on the decoding process specified in this specification.

[0253] NOTE 2 - NAL unit types may be used as determined by the application if they are within the range UNSPEC_28...UNSPEC_31. This specification does not specify the decoding process for these values ​​of nal_unit_type. Because different applications may use these NAL unit types for different purposes, special care must be taken in the design of encoders that generate NAL units with these nal_unit_type values ​​and in the design of decoders that interpret the content of NAL units with these nal_unit_type values. This specification does not define the management of these values. These nal_unit_type values ​​may be suitable only for use in contexts where "collisions" of usage (i.e., different definitions of the meaning of the NAL unit content for the same nal_unit_type value) are not important or possible, or are defined or managed by a controlling application or transport specification, or by controlling the environment in which the bitstream is distributed.

[0254] The content of all NAL units that use reserved values ​​of nal_unit_type shall be ignored (removed from the bitstream and discarded) for purposes other than determining the number of data in a DU in a bitstream decoder.

[0255] NOTE 3 - This requirement allows for the future definition of extension modules that conform to this specification.

[0256] [Table 33] [Table 34]

[0257] NOTE 4 – A Clean Random Access (CRA) picture may be associated with a RASL or RADL picture present in the bitstream.

[0258] NOTE 5 - An Instantaneous Decoding Refresh (IDR) picture with nal_unit_type equal to IDR_N_LP does not have an associated first picture present in the bitstream. An IDR picture with nal_unit_type equal to IDR_W_RADL is not associated with a RADL picture present in the bitstream, but may have a RADL picture associated with it.

[0259] For any particular picture's VCL NAL units, the following applies: - If mixed_nalu_types_in_pic_flag is equal to 0, the value of nal_unit_type shall be the same for all coded slice NAL units of a picture. A picture or PU is considered to have the same NAL unit type as the coded slice NAL units of this picture or PU. Otherwise (mixed_nalu_types_in_pic_flag is equal to 1), the VCL NAL units of one or more subpictures of the picture all have a specific value of nal_unit_type equal to STSA_NUT, RADL_NUT, RASL_NUT, IDR_W_RADL, IDR_N_LP, or CRA_NUT, while the other VCL NAL units of the picture all have a different specific value of nal_unit_type equal to TRAIL_NUT, RADL_NUT, or RASL_NUT.

[0260] For single-layer bitstreams, the following constraints apply: Each picture is considered to be related to the previous IRAP picture in decoding order, except for the first picture in the bitstream in decoding order. If the picture is the first picture of an IRAP picture, it is a RADL or RASL picture. If a picture is the last picture of an IRAP picture, it shall not be a RADL or RASL picture. - RASL pictures associated with IDR pictures shall not be included in the bitstream. -RADL pictures associated with IDR pictures whose nal_unit_type is IDR_N_LP shall not be included in the bitstream.

[0261] NOTE 6 - As long as each parameter set is available (in the bitstream or by external means not specified in this specification) at the time it is referenced, random access can be performed at the position of the IRAP PU by discarding all PUs preceding the IRAP PU (and by correctly decoding the IRAP picture and all subsequent non-RASL pictures in decoding order).

[0262] A picture that precedes an IRAP picture in decoding order shall precede the IRAP picture in output order and shall precede in output order the RADL picture associated with the IRAP picture. - The RASL picture associated with a CRA picture shall precede the RADL picture associated with the CRA picture in output order. The RASL pictures associated with a CRA picture shall follow the output order of the IRAP picture that precedes the CRA picture in decoding order. If -field_seq_flag is equal to 0 and the current picture is equal to the first picture associated with an IRAP picture, it shall precede in decoding order all non-first pictures associated with the same IRAP picture. Otherwise, if picA and picB are the first and last first pictures, in decoding order, associated with one IRAP picture, respectively, there shall be at most one non-first picture preceding picA in decoding order, and there shall be no non-first pictures between picA and picB in decoding order.

[0263] nuh_temporal_id_plus1-1 specifies the temporal identifier of the NAL unit. The value of nuh_temporal_id_plus1 shall not be equal to 0.

[0264] The variable TemporalId is derived as follows: TemporalId=nuh_temporal_id_plus1-1 (36) If nal_unit_type is in the range IDR_W_RADL to RSV_IRAP_12, TemporalId shall be equal to 0. If nal_unit_type is STSA_NUT and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, then TemporalId shall not be 0. The value of TemporalId shall be the same for all VCL NAL units of one AU. The value of TemporalId of a coded picture, PU, ​​or AU is the value of TemporalId of the VCL NAL units of the coded picture, PU, ​​or AU. The value of TemporalId of a sub-layer representation is the maximum value of TemporalId of all VCL NAL units in the sub-layer representation.

[0265] The values ​​of TemporalId for non-VCL NAL units are constrained as follows: - If nal_unit_type is equal to DCI_NUT, VPS_NUT, VPS_NUT, or SPS_NUT, TemporalId shall be equal to 0 and the TemporalId of the AU containing the NAL unit shall be equal to 0. Otherwise, if nal_unit_type is equal to PH_NUT, TemporalId shall be the TemporalId of the PU containing the NAL unit. - Otherwise, if nal_unit_type is equal to EOS_NUT or EOB_NUT, TemporalId shall be equal to 0. Otherwise, if nal_unit_type is equal to AUD_NUT, FD_NUT, PREFIX_SEI_NUT, or SUFFIX_SEI_NUT, TemporalId shall be the TemporalId of the AU containing the NAL unit. Otherwise, if nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT, or SUFFIX_APS_NUT, TemporalId shall be greater than or equal to the TemporalId of the PU containing the NAL unit.

[0266] NOTE 7 - If the NAL unit is equal to a non-VCL NAL unit, the value of TemporalId is the minimum of the TemporalId values ​​of all AUs to which that non-VCL NAL unit applies. If nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT, or SUFFIX_APS_NUT, TemporalId may be greater than or equal to the TemporalId of the containing AU, all PPSs and APSs may be included at the beginning of the bitstream (e.g., if they are transported out-of-band, the receiver places them at the beginning of the bitstream), and the first coded picture has TemporalId equal to 0.

[0267] 7.4.2.3 Encapsulating SODBs in RBSP (Informative)

[0268] This section does not form an integral part of this specification. The format of encapsulation of SODBs within RBSPs and the use of emulation_prevention_three_byte for encapsulation of RBSPs within NAL units are described for the following purposes. -To allow any SODB to be represented within a NAL unit, while avoiding the emulation of start codes within the NAL unit, To enable identification of the end of a SODB within a NAL unit by searching the RBSP for an RBSP_stop_one_bit that begins at the end of the RBSP, -To enable the size of the NAL unit to be larger than the size of the SODB in some circumstances (using one or more cabac_zero_word syntax elements).

[0269] The encoder can generate NAL units from the RBSP in the following steps: 1. Search the RBSP data for byte-aligned bits of the following binary pattern: '00000000 00000000 000000xx' (where 'xx' represents any two-bit pattern: '00', '01', '10', or '11'), To replace the bit pattern with the pattern, insert a byte that is 0x03. '00000000 00000000 00000011 000000xx', Finally, if the last byte of the RBSP data is equal to 0x00 (which can only occur if the RBSP ends in a cabac_zero_word), a final byte equal to 0x03 is appended to the end of the data. The final zero byte of the byte-aligned three-byte sequence 0x000000 in the RBSP (which is replaced by the four-byte sequence 0x00000300) is considered when searching the RBSP data for the next occurrence of a byte-aligned bit having the binary pattern specified above. 2. The resulting sequence of bytes is prefixed with a NAL unit header, in which nal_unit_type indicates the type of RBSP data structure in the NAL unit.

[0270] Through the above process, the entire NAL unit is constructed. This process allows any SODB to be represented in a NAL unit and can guarantee both: - Within NAL units, byte-aligned start code prefixes are not emulated. Within a NAL unit, a sequence of eight zero-valued bits followed by a start code prefix is ​​not emulated, regardless of byte alignment.

[0271] 7.4.2.4 NAL unit order in the bitstream

[0272] 7.4.2.4.1 General

[0273] Subclauses of Section 7.4.2.4 specify constraints on the order of NAL units in the bitstream. Any order of NAL units in a bitstream that conforms to these constraints is referred to herein as the decoding order of the NAL units. Within a NAL unit, the syntax in sections 7.3 and D.2 specifies the decoding order of the syntax elements. If a NAL unit specified in this specification contains VUI parameters or SEI messages specified in ITU-T H.SEI|ISO / IEC 23002-7, the syntax of the VUI parameters or SEI messages specified in ITU-T H.SEI|ISO / IEC 23002-7 specifies the decoding order of these syntax elements. A decoder can receive the NAL units and their syntax elements in decoding order.

[0274] 7.4.2.4.2 Order of AUs and their association with CVS

[0275] A bitstream consists of one or more CVSs. A CVS consists of one or more AUs. The order of PUs and their association with AUs is described in section 7.4.2.4.3. The first AU of CVS is a CVSS AU, and each current PU is a CVS PU, either an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1, or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1. Each CVSS AU has one PU for each layer present in the CVSS. If the AU containing the EOS NAL unit is followed by the next AU, the bitstream conformance requirement is the CVSS AU, if present.

[0276] 7.4.2.4.3 PU order and association with AU

[0277] An AU contains one or more PUs in increasing order of nuh_layer_id. The order of NAL units and coded pictures and their association with PUs is described in Section 7.4.2.4.4. There may be at most one AUD NAL unit in one AU. If an AUD NAL unit is present in an AU, it becomes the first NAL unit of the AU and, consequently, the first NAL unit of the first PU of the AU. There may be at most one EOB NAL unit in one AU. If there is one EOB NAL unit in one AU, this unit becomes the last NAL unit of this AU and, consequently, the last NAL unit of the last PU of this AU. A VCL NAL unit is the first VCL NAL unit in an AU (and therefore the PU containing the VCL NAL unit is the first PU in the AU) if it is the first VCL NAL unit following a PH NAL unit and one or more of the following conditions are true:

[0278] The value of nuh_layer_id of a VCL NAL unit is less than the nuh_layer_id of the previous picture in decoding order. The value of ph_pic_order_cnt_lsb of a VCL NAL unit is different from the value of ph_pic_order_cnt_lsb of the previous picture in decoding order. The PicOrderCntVal derived for a VCL NAL unit differs from the PicOrderCntVal of the previous picture in decoding order.

[0279] Let firstVclNalUnitInAu be the first VCL NAL unit of an AU. The first of the following NAL units that precede firstVclNalUnitInAu and follow the last VCL NAL unit that precedes firstVclNalUnitInAu defines the start of a new AU:

[0280] -AUD NAL units (if present), -DCI NAL units (if present), -VPS NAL units (if present), -SPS NAL units (if present), -PPS NAL units (if present), -Prefix APS NAL units (if present), -PH NAL units (if present), -Prefix SEI NAL unit (if present), - NAL units with nal_unit_type equal to RSV_NVCL_26 (if present), - NAL units whose nal_unit_type is in the range UNSPEC28..UNSPEC29 (if present).

[0281] NOTE: The first NAL unit, if any, that precedes firstVclNalUnitInAu and that follows the last VCL NAL unit that precedes firstVclNalUnitInAu can be one of the NAL units listed above.

[0282] If there is a bitstream conformance requirement, it shall be that the next PU in the specified layer after the PU containing the EOS NAL unit belongs to the same layer and is a CLVSS PU that is either an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1, or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1.

[0283] 7.4.2.4.4 Order of NAL units and coded pictures and their association with PUs

[0284] A PU contains one coded picture with zero or one PH NAL unit, one or more VCL NAL units, and zero or more other non-VCL NAL units. The association of VCL NAL units to coded pictures is described in Section 7.4.2.4.5. If a picture consists of two or more VCL NAL units, one PH NAL unit shall be present in the PU. If one PH NAL unit exists in a PU, the first VCL NAL unit of a picture is the first VCL NAL unit that follows this PH NAL unit in the decoding order of this picture. Otherwise (if there is no PH NAL unit in the PU), the first VCL NAL unit of a picture is the only VCL NAL unit of this picture. The order of the non-VCL NAL units (excluding the AUD and EOB NAL units) within a PU shall comply with the following constraints:

[0285] If one PH NAL unit exists in one PU, it shall precede the first VCL NAL unit of that PU. If there are DCI NAL units, VPS NAL units, SPS NAL units, PPS NAL units, prefix APS NAL units, prefix SEI NAL units, NAL units whose nal_unit_type is equal to RSV_NVCL_26, or NAL units in the range UNSPEC_28..UNSPEC_29 within a PU, they shall not follow the last VCL NAL unit of the PU. If there is one DCI NAL unit, VPS NAL unit, SPS NAL unit, or PPS NAL unit in a PU, it shall precede the PH NAL unit of the PU (if present) and the first VCL NAL unit of the PU. No NAL unit in a PU whose nal_unit_type is equal to SUFFIX_APS_NUT, SUFFIX_SEI_NUT, FD_NUT, or RSV_NVCL_27, or is in the range UNSPEC_30...UNSPEC_31, shall precede the first VCL NAL unit of the PU. If the EOS NAL unit exists in one PU, it shall be the last NAL unit among all NAL units in the PU other than the EOB NAL unit (if any).

[0286] 7.4.2.4.5 VCL NAL unit order and its association to coded pictures

[0287] The order of VCL NAL units in a coded picture is constrained as follows: For any two coded slice NAL units A and B of one coded picture, let subpicIdxA and subpicIdxB be their sub-picture level index values, and sliceAddrA and sliceddrB be their slice_address values. A coded slice NAL unit A shall precede a coded slice NAL unit B if any of the following conditions is true: -subpicIdxA is less than subpicIdxB. - subpicIdxA is equal to subpicIdxB and sliceAddrA is less than sliceAddrB.

[0288] 7.4.3. Raw Byte Sequence Payload, Trailing Bit, and Byte Alignment Semantics

[0289] 7.4.3.1 Decoding Capability Information RBSP Semantics

[0290] The DCI RBSP may be available to the decoder by either being present in the bitstream, being included in at least the first AU of the bitstream, or being provided by external means. NOTE 1 – The information contained in the DCI RBSP is not necessary for the operation of the decoding process. If present, all DCI NAL units in the bitstream shall have the same content.

[0291] dci_max_sublayers_minus1+1 specifies the maximum number of temporal sublayers that can be present in a layer in each CVS of the bitstream. The value of dci_max_sublayers_minus1 should be in the range of 0 to 6.

[0292] In bitstreams conforming to this version of this specification, dci_reserved_zero_bit shall be equal to 0. A value of 1 for dci_reserved_zero_bit is reserved for future use by ITU-T|ISO / IEC.

[0293] dci_num_ptls_minus1+1 specifies the number of profile_tier_level() syntax structures in a DCI NAL unit. It is a bitstream conformance requirement that each OLS in a CVS in a bitstream conforms to at least one of the profile_tier_level() syntax structures in a DCI NAL unit.

[0294] NOTE 2 - A DCI NAL unit may contain PTL information that may be carried in multiple profile_tier_level() syntax structures that collectively apply to multiple OLSs, eliminating the need to include PTL information separately for each OLS.

[0295] dci_extension_flag equal to 0 specifies that the DCI RBSP syntax structure does not include the dci_extension_data_flag syntax element. dci_extension_flag equal to 1 specifies that the DCI RBSP syntax structure includes the dci_extension_data_flag syntax element.

[0296] dci_extension_data_flag can have any value. Its presence and value do not affect a decoder's conformance to the profile. Decoders conforming to this specification version MUST ignore all dci_extension_data_flag syntax elements.

[0297] 7.4.3.2 Video Parameter Set RBSP Semantics

[0298] The VPS RBSP is available to the decoding process before it is referenced and is contained in at least one AU with Tempor alId equal to 0 or provided by external means. All VPS NAL units with a particular value of vps_video_parameter_set_id in the CVS shall have the same content.

[0299] vps_video_parameter_set_id provides an identifier for the VPS to which other syntax elements refer. The value of vps_video_parameter_set_id shall be greater than 0.

[0300] vps_max_layers_minus1+1 specifies the maximum number of layers allowed when each CVS references a VPS.

[0301] vps_max_sublayers_minus1+1 specifies the maximum number of temporal sublayers that can exist in each CVS layer that references the VPS. The value of vps_max_sublayers_minus1 should be in the range 0 to 6.

[0302] vps_all_layers_same_num_sublayers_flag equal to 1 specifies that all layers in each CVS that references the VPS have the same number of temporal sublayers. vps_all_layers_same_num_sublayers_flag equal to 0 specifies that layers in each CVS that references the VPS may or may not have the same number of temporal sublayers. If not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1.

[0303] vps_all_independent_layers_flag equal to 1 specifies that all layers in the CVS are coded independently without using inter-layer prediction. vps_all_independent_layers_flag equal to 0 specifies that one or more layers in the CVS may use inter-layer prediction. If not present, the value of vps_all_independent_layers_flag is inferred to be equal to 1.

[0304] vps_layer_id[i] specifies the value of nuh_layer_id for the i-th layer. For any two non-negative integer values ​​of m and n, when m is less than n, the value of vps_layer_id[m] shall be less than vps_layer_id[n].

[0305] vps_independent_layer_flag[i] equal to 1 specifies that the layer with index i does not use inter-layer prediction. vps_independent_layer_flag[i] equal to 0 specifies that the layer with index i can use inter-layer prediction and is present in the VPS if the j syntax element vps_direct_ref_layer_flag[i][j] is in the range of 0 to i-1 (inclusive). If not present, the value of vps_independent_layer_flag[i] is inferred to be equal to 1.

[0306] vps_direct_ref_layer_flag[i][j] equal to 0 specifies that the layer with index j is not a direct reference layer of the layer with index i. vps_direct_ref_layer_flag[i][j] equal to 1 specifies that the layer with index j is a direct reference layer of the layer with index i. When i and j are in the range of 0 to vps_max_layer_minus1, if vps_direct_ref_layer_flag[i][j] is not present, it is inferred to be equal to 0. If vps_independent_layer_flag[i] is equal to 0, there shall be at least one value of j in the range of 0 to i-1 such that the value of vps_direct_ref_layer_flag[i][j] is 1. The variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsdRefLayerFlag[j] are derived as follows:

[0307] for(i=0;i<=vps_max_layers_minus1;i++){ for(j=0;j<=vps_max_layers_minus1;j++){ dependencyFlag[i][j]=vps_direct_ref_layer_flag[i][j] for(k=0;k <i;k++) if(vps_direct_ref_layer_flag[i][k]&&dependencyFlag[k][j]) dependencyFlag[i][j]=1 } LayerUsedAsRefLayerFlag[i]=0 } for(i=0;i<=vps_max_layers_minus1;i++){ for(j=0,d=0,r=0;j<=vps_max_layers_minus1;j++){ (37) if(direct_ref_layer_flag[i][j]){ DirectRefLayerIdx[i][d++]=j LayerUsedAsRefLayerFlag[j]=1 } if(dependencyFlag[i][j]) RefLayerIdx[i][r++]=j } NumDirectRefLayers[i]=d NumRefLayers[i]=r }

[0308] The variable GeneralLayerIdx[i], which specifies the layer index of the layer with nuh_layer_id that is vps_layer_id[i], is derived as follows: for(i=0;i<=vps_max_layers_minus1;i++) (38) GeneralLayerIdx[vps_layer_id[i]]=i

[0309] For any two distinct values ​​of i and j, both in the range 0 to vps_max_layers_minus1, it is a bitstream conformance requirement that if dependencyFlag[i][j] is equal to 1, then the chroma_format_idc and bit_depth_minus8 applied to the ith layer shall be equal to the chroma_format_idc and bit_depth_minus8 applied to the jth layer, respectively.

[0310] If max_tid_ref_present_flag[i] is equal to 1, it specifies that the syntax element max_tid_il_ref_pics_plus1[i] is present. If max_tid_ref_present_flag[i] is equal to 0, it specifies that the syntax element max_tid_il_ref_pics_plus1[i] is not present.

[0311] If max_tid_il_ref_pics_plus1[i] is equal to 0, it specifies that inter-layer prediction is not used for non-IRAP pictures of the i-th layer. If max_tid_il_ref_pics_plus1[i]>0, it specifies that pictures with TemporalId greater than max_tid_il_ref_pics_plus1[i]-1 are not used as ILRPs to decode pictures of the i-th layer. If not present, the value of max_tid_il_ref_pics_plus1[i] is inferred to be equal to 7.

[0312] If each_layer_is_an_ols_flag is equal to 1, it specifies that each OLS contains only one layer, each layer in the CVS referencing the VPS is itself an OLS, and the single contained layer is the only output layer. If each_layer_is_an_ols_flag is equal to 0, an OLS may contain more than one layer. If vps_max_layers_minus1 is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 1. Otherwise, if vps_all_independent_layers_flag is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 0.

[0313] ols_mode_idc equal to 0 specifies that the total number of OLSs specified in the VPS is equal to vps_max_layers_minus1+1, where the i-th OLS contains layers with layer indices from 0 to i, and for each OLS, only the top layer in the OLS is output. ols_mode_idc equal to 1 specifies that the total number of OLSs specified in the VPS is equal to vps_max_layers_minus1+1, where the i-th OLS contains layers with layer indices from 0 to i, and for each OLS, outputs all layers in the OLS. If ols_mode_idc is equal to 2, it specifies that the total number of OLSs specified by the VPS are explicitly signaled, and for each OLS, it specifies that the output layer is explicitly signaled and that other layers are layers that are direct or indirect reference layers of the output layer of the OLS. The value of ols_mode_idc should be in the range from 0 to 2. The value 3 of ols_mode_idc is reserved for future use by ITU-T|ISO / IEC. If vps_all_independent_layers_flag is equal to 1 and each_layer_is_an_ols_flag is equal to 0, the value of ols_mode_idc is inferred to be equal to 2.

[0314] num_output_layer_sets_minus1+1 specifies the total number of OLSs specified in the VPS when ols_mode_idc is equal to 2. The variable TotalNumOlss, which specifies the total number of OLSs specified in the VPS, is derived as follows:

[0315] if(vps_max_layers_minus1==0) TotalNumOlss=1 else if(each_layer_is_an_ols_flag||ols_mode_idc==0||ols_mode_idc==1) TotalNumOlss=vps_max_layers_minus1+1(39) else if(ols_mode_idc==2) TotalNumOlss=num_output_layer_sets_minus1+1

[0316] ols_output_layer_flag[i][j] equal to 1 specifies that the layer with nuh_layer_id equal to vps_layer_id[j] is the output layer of the i-th OLS when ols_mode_idc is equal to 2. ols_output_layer_flag[i][j] equal to 0 specifies that the layer with nuh_layer_id equal to vps_layer_id[j] is not the output layer of the i-th OLS when ols_mode_id is equal to 2. The variable NumOutputLayersInOls[i] that specifies the number of output layers in the i-th OLS, the variable NumSubLayersInLayerInOls[i][j] that specifies the number of sublayers of the j-th layer in the i-th OLS, the variable OutputLayerIdInOls[i][j] that specifies the nuh_layer_id value of the j-th output layer in the i-th OLS, and the variable LayerUsedAsOutputLayerFlag[k] that specifies whether the k-th layer is used as an output layer in at least one OLS are derived as follows:

[0317] NumOutputLayersInOls[0]=1 OutputLayerIdInOls[0][0]=vps_layer_id[0] NumSubLayersInLayerInOLS[0][0]=vps_max_sub_layers_minus1+1 LayerUsedAsOutputLayerFlag[0]=1 for(i=1,i<=vps_max_layers_minus1;i++) { if(each_layer_is_an_ols_flag||ols_mode_idc<2) LayerUsedAsOutputLayerFlag[i]=1 else / *(!each_layer_is_an_ols_flag&&ols_mode_idc==2)* / LayerUsedAsOutputLayerFlag[i]=0 } for(i=1;i <TotalNumOlss;i++) if(each_layer_is_an_ols_flag||ols_mode_idc==0){ NumOutputLayersInOls[i]=1 OutputLayerIdInOls[i][0]=vps_layer_id[i] for(j=0;j<i&&(ols_mode_idc==0);j++) NumSubLayersInLayerInOLS[i][j]=max_tid_il_ref_pics_plus1[i] NumSubLayersInLayerInOLS[i][i]=vps_max_sub_layers_minus1+1 } else if(ols_mode_idc==1){ NumOutputLayersInOls[i]=i+1 for(j=0;j<NumOutputLayersInOls[i];j++){ OutputLayerIdInOls[i][j]=vps_layer_id[j] NumSubLayersInLayerInOLS[i][j]=vps_max_sub_layers_minus1+1 } } else if(ols_mode_idc==2) { for(j=0;j<=vps_max_layers_minus1;j++){ layerIncludedInOlsFlag[i][j]=0 NumSubLayersInLayerInOLS[i][j]=0 } for(k=0,j=0;k<=vps_max_layers_minus1;k++) (40) if(ols_output_layer_flag[i][k]){ layerIncludedInOlsFlag[i][k]=1 LayerUsedAsOutputLayerFlag[k]=1 OutputLayerIdx[i][j]=k OutputLayerIdInOls[i][j++]=vps_layer_id[k] NumSubLayersInLayerInOLS[i][j]=vps_max_sub_layers_minus1+1} NumOutputLayersInOls[i]=j for(j=0;j <NumOutputLayersInOls[i];j++){ idx=OutputLayerIdx[i][j] for(k=0;k <NumRefLayers[idx];k++){ layerIncludedInOlsFlag[i][RefLayerIdx[idx][k]]=1 if(NumSubLayersInLayerInOLS[i][RefLayerIdx[idx][k]] < max_tid_il_ref_pics_plus1[OutputLayerIdInOls[i][j]]) NumSubLayersInLayerInOLS[i][RefLayerIdx[idx][k]]= max_tid_il_ref_pics_plus1[OutputLayerIdInOls[i][j]] } } }

[0318] For each value of i in the range 0 to vps_max_layer_minus1, the values ​​of LayerUsedAsRefLayerFlag[i] and LayerUsedAsOutputLayerFlag[i] shall not both be equal to 0. In other words, there shall be no layer that is neither the output layer of at least one OLS nor a direct reference layer of another layer. For each OLS, there shall be at least one layer that is the output layer, i.e., for values ​​of i in the range 0 to TotalNumOlss-1 (inclusive), the value of NumOutputLayersInOls[i] shall be greater than or equal to 1. Specifies the variable NumLayersInOls[i] that specifies the number of layers in the i-th OLS, and the nuh_layer_id value of the j-th layer in the i-th OLS. The variable LayerIdInOls[i][j] is derived as follows.

[0319] NumLayersInOls[0]=1 LayerIdInOls[0][0]=vps_layer_id[0] for(i=1;i <TotalNumOlss;i++){ if(each_layer_is_an_ols_flag){ NumLayersInOls[i]=1 LayerIdInOls[i][0]=vps_layer_id[i] (41) } else if(ols_mode_idc=0||ols_mode_idc==1){ NumLayersInOls[i]=i+1 for(j=0;j <NumLayersInOls[i];j++) LayerIdInOls[i][j]=vps_layer_id[j] } else if(ols_mode_idc==2) { for(k=0,j=0;k<=vps_max_layers_minus1;k++) if(layerIncludedInOlsFlag[i][k]) LayerIdInOls[i][j++]=vps_layer_id[k] NumLayersInOls[i]=j } }

[0320] NOTE 1 - The 0th OLS only includes the lowest layer (i.e., the layer whose nuh_layer_id is vps_layer_id[0]), and for the 0th OLS, only the included layers are output.

[0321] The variable OlsLayerIdx[i][j] that specifies the OLS layer index of the layer whose nuh_layer_id is LayerIdInOls[i][j] is derived as follows: for(i=0;i <TotalNumOlss;i++) for j=0;j <NumLayersInOls[i];j++) (42) OlsLayerIdx[i][LayerIdInOls[i][j]]=j

[0322] The lowest layer in each OLS shall be an independent layer, i.e., for each i in the range 0 to TotalNumOlss-1, the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] shall be equal to 1. Each layer shall be included in at least one OLS specified by the VPS. In other words, for each layer for which a particular value of nuh_layer_id, nuhLayerId, is equal to one of vps_layer_id[k], for k in the range 0 to vps_max_layers_minus1, there shall be at least one pair of values, i and j, where i is in the range 0 to TotalNumOlss-1 and j is in the range NumLayersInOls[i]-1, such that the value of LayerIdInOls[i][j] is equal to nuhLayerId.

[0323] vps_num_ptls_minus1+1 specifies the number of profile_tier_level() syntax structures in the VPS. The value of vps_num_ptls_minus1 must be less than TotalNumOlss.

[0324] pt_present_flag[i] equal to 1 specifies that the i-th profile_tier_level() syntax structure in the VPS contains profile, tier, and general constraint information, and pt_present_flag[i] equal to 0 specifies that it is not present in the i-th profile_tier_level() syntax structure in the VPS. The value of pt_present_flag[0] is inferred to be equal to 1. If pt_present_flag[i] equals 0, the profile, tier, and general constraint information in the i-th profile_tier_level() syntax structure in the VPS is inferred to be the same as that in the (i-1)-th profile_tier_level() syntax structure in the VPS.

[0325] ptl_max_temporal_id[i] specifies the TemporalId of the highest sublayer representation for which level information exists in the i-th profile_tier_level() syntax structure of the VPS. The value of ptl_max_temporal_id[i] shall be in the range of 0 to vps_max_sublayers_minus1. If vps_max_sublayers_minus1=0, the value of ptl_max_temporal_id[i] is inferred to be equal to 0. If vps_max_sublayers_minus1 is greater than 0 and vps_all_layers_same_num_sublayers_flag is equal to 1, the value of ptl_max_temporal_id[i] is inferred to be equal to vps_max_sublayers_minus1.

[0326] vps_ptl_alignment_zero_bit=0.

[0327] ols_ptl_idx[i] specifies the index into the list of profile_tier_level() syntax structures in the VPS of the profile_tier_level() syntax structure that applies to the i-th OLS. If present, the value of ols_ptl_idx[i] shall be in the range 0 to vps_num_ptls_minus1. If vps_num_ptls_minus1 is equal to 0, the value of ols_ptl_idx[i] is inferred to be equal to 0. If NumLayersInOls[i]=1, the profile_tier_level() syntax structure that applies to the ith OLS also exists in the SPS that the layer of the ith OLS references. It is a bitstream conformance requirement that if NumLayersInOLS[i]=1, the profile_tier_level() syntax structure signaled in the VPS and the SPS of the ith OLS shall be identical.

[0328] vps_num_dpb_params specifies the number of dpb_parameters() syntax structures in the VPS. The value of vps_num_dpb_params is in the range of 0 to 16. If not present, the value of vps_num_dpb_params is inferred to be equal to 0.

[0329] vps_sublayer_dpb_params_present_flag is used to control the presence of the max_dec_pic_buffering_minus1[], max_num_reorder_pics[], and max_latency_increase_plus1[] syntax elements in the dpb_parameters() syntax structure of the VPS. If not present, vps_sub_dpb_params_info_present_flag is inferred to be equal to 0.

[0330] dpb_max_temporal_id[i] specifies the TemporalId of the highest sublayer representation for which the i-th dpb_parameters() syntax structure of the VPS may contain DPB parameters. The value of dpb_max_temporal_id[i] shall be in the range of 0 to vps_max_sublayers_minus1. If vps_max_sublayers_minus1=0, the value of dpb_max_temporal_id[i] is inferred to be equal to 0. If vps_max_sublayers_minus1 is greater than 0 and vps_all_layers_same_num_sublayers_flag=1, the value of dpb_max_temporal_id[i] is inferred to be equal to vps_max_sublayers_minus1.

[0331] ols_dpb_pic_width[i] specifies the width in units of luma samples of each picture storage buffer for the i-th OLS.

[0332] ols_dpb_pic_height[i] specifies the height of each picture storage buffer of the ith OLS in units of luma samples.

[0333] ols_dpb_params_idx[i] specifies the index into the list of dpb_parameters() syntax structures in the VPS for the dpb_parameters() syntax structure that applies to the i-th OLS, if NumLayersInOls[i] is greater than 1. If present, the value of ols_dpb_params_idx[i] shall be in the range 0 to vps_num_dpb_params-1. If ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0. If NumLayersInOls[i] is equal to 1, the dpb_parameters() syntax structure that applies to the ith OLS exists in the SPS that the layer in the ith OLS references.

[0334] vps_general_hrd_params_present_flag equal to 1 specifies that the syntax structure general_hrd_parameters() and other HRD parameters are present in the VPS RBSP syntax structure. vps_general_hrd_params_present_flag equal to 0 specifies that the syntax structure general_hrd_parameters() and other HRD parameters are not present in the VPS RBSP syntax structure. If not present, the value of vps_general_hrd_params_present_flag is inferred to be 0. If NumLayersInOls[i] is equal to 1, the general_hrd_parameters() syntax structure that applies to the ith OLS is present in the SPS referenced by the layer in the ith OLS.

[0335] vps_sublayer_cpb_params_present_flag equal to 1 specifies that the i-th ols_hrd_parameters() syntax structure in the VPS contains HRD parameters for sublayer representations whose TemporalId is in the range 0 to hrd_max_tid[i]. vps_sublayer_cpb_params_present_flag equal to 0 specifies that the i-th ols_hrd_parameters() syntax structure in the VPS contains only HRD parameters for sublayer representations whose TemporalId is equal to hrd_max_tid[i]. When vps_max_sublayers_minus1=0, the value of vps_sublayer_cpb_params_present_flag equal to 0 is inferred. If vps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters of sublayer representations with TemporalId in the range from 0 to hrd_max_tid[i]-1 are inferred to be equal to the same HRD parameters of sublayer representations with TemporalId equal to hrd_max_tid[i]-1. This includes the HRD parameters starting from the fixed_pic_rate_general_flag[i] syntax element up to the sublayer_hrd_parameters(i) syntax structure immediately below the condition "if(general_vcl_hrd_params_present_flag)" in the ols_hrd_parameters syntax structure.

[0336] num_ols_hrd_params_minus1+1 specifies the number of ols_hrd_parameters() syntax structures present in general_hrd_parameters() when vps_general_hrd_params_present_flag is equal to 1. The value of num_ols_hrd_params_minus1 shall be in the range of 0 to TotalNumOlss-1.

[0337] hrd_max_tid[i] specifies the TemporalId of the highest sublayer representation whose i-th ols_hrd_parameters() syntax structure contains HRD parameters. The value of hrd_max_tid[i] shall be in the range of 0 to vps_max_sublayers_minus1. If vps_max_sublayers_minus1 is equal to 0, the value of hrd_max_tid[i] is inferred to be equal to 0. If vps_max_sublayers_minus1 is greater than 0 and equal to vps_all_layers_same_num_sublayers_flag=1, the value of hrd_max_tid[i] is inferred to be equal to vps_max_sublayers_minus1.

[0338] ols_hrd_idx[i] specifies the index into the list of ols_hrd_parameters() syntax structures in the VPS for the ols_hrd_parameters() syntax structure that applies to the i-th OLS, if NumLayersInOls[i] is greater than 1. The value of ols_hrd_idx[[i] shall be in the range from 0 to num_ols_hrd_params_minus1. If NumLayersInOls[i] is equal to 1, the ols_hrd_parameters() syntax structure that applies to the ith OLS is present in the SPS referenced by the layer in the ith OLS. If the value of num_ols_hrd_param_minus1+1 is equal to TotalNumOLS, the value of ols_hrd_idx[i] is inferred to be equal to i. Otherwise, if NumLayersInOls[i] is greater than 1 and num_ols_hrd_params_minus1 is equal to 0, the value of ols_hrd_idx[[i] is inferred to be equal to 0.

[0339] If vps_extension_flag is equal to 0, it specifies that the VPS RBSP syntax structure does not include the vps_extension_data_flag syntax element. If vps_extension_flag is equal to 1, it specifies that the VPS RBSP syntax structure includes the vps_extension_data_flag syntax element.

[0340] vps_extension_data_flag can have any value. Its presence and value do not affect a decoder's conformance to the features specified in this specification version. Decoders conforming to this specification version MUST ignore all vps_extension_data_flag syntax elements.

[0341] 7.4.3.3 Sequence Parameter Set RBSP Semantics

[0342] The SPS RBSP is available to the decoding process before it is referenced and is contained in at least one AU whose TemporalId is equal to 0 or is provided by external means. All SPS NAL units with a particular value sps_seq_parameter_set_id in one CVS shall have the same content.

[0343] The sps_seq_parameter_set_id provides an identifier for the SPS that other syntax elements reference. SPS NAL units share the same value space for sps_seq_parameter_set_id regardless of the value of nuh_layer_id. Let spsLayerId be the value of nuh_layer_id of a particular SPS NAL unit, and vclLayerId be the value of nuh_layer_id of a particular VCL NAL unit. A particular VCL NAL unit shall not reference a particular SPS NAL unit unless its spsLayerId is less than or equal to vclLayerId and the layer whose nuh_layer_id is spsLayerId is included in at least one OLS that contains a layer with nuh_layer_id that is vclLayerId.

[0344] sps_video_parameter_set_id (if greater than 0) specifies the value of vps_video_parameter_set_id of the VPS referenced by the SPS. If sps_video_parameter_set_id is equal to 0, the following applies: -SPS does not refer to VPS. - When decoding each CLVS that references an SPS, the VPS is not referenced. A value of -vps_max_layers_minus1 is inferred to be equal to 0. A CVS shall contain only one layer (i.e., all VCL NAL units in a CVS shall have the same value of nuh_layer_id). -The value of GeneralLayerIdx[nuh_layer_id] is inferred to be equal to 0. The value of -vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is inferred to be equal to 1. If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the nuh_layer_id of the SPS referenced by the CLVS with the special nuh_layer_id value, nuhLayerId, shall be equal to nuhLayerId. The value of sps_video_parameter_set_id shall be the same in all SPSs referenced by CVSs within one CVS.

[0345] sps_max_sublayers_minus1+1 specifies the maximum number of temporal sublayers that can exist in each CLVS, with reference to the SPS. The value of sps_max_sublayers_minus1 must be in the range from 0 to vps_max_sublayers_minus1.

[0346] sps_reserved_zero_4bits shall be equal to 0 in bitstreams conforming to this version of this specification. Other values ​​of sps_reserved_zero_4bits are reserved for future use by ITU-T|ISO / IEC.

[0347] sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that the profile_tier_level() and dpb_parameters() syntax structures are present in the SPS, and that the general_hrd_parameters() and ols_hrd_parameters() syntax structures may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures are present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]].

[0348] A gdr_enabled_flag equal to 1 specifies that GDR pictures may be present in the CLVS referencing the SPS. A gdr_enabled_flag equal to 0 specifies that no GDR pictures may be present in the CLVS referencing the SPS.

[0349] chroma_format_idc indicates chroma sampling relative to luma sampling as specified in Section 6.2.

[0350] separate_colour_plane_flag=1 indicates that the three color components of the 4:4:4 chroma format are coded separately, while separate_colour_plane_flag=0 indicates that the color components are not coded separately. If separate_colour_plane_flag is not present, it is inferred to be equal to 0. If separate_colour_plane_flag is equal to 1, the coded picture consists of three separate components, each consisting of coded samples of one color plane (Y, Cb, or Cr), and uses the monochrome coding syntax. In this case, each color plane is associated with a specific color_plane_id value. NOTE 1 - There is no dependency between decoding processes for color planes with different colour_plane_id values. For example, decoding a monochrome image with one colour_plane_id value does not use data from monochrome images with a different colour_plane_id value for inter prediction. Based on the value of separate_colour_plane_flag, the value of the variable ChromaArrayType is assigned as follows: - If separate_colour_plane_flag is equal to 0, ChromaArrayType is set equal to chroma_format_idc. - Otherwise (separate_colour_plane_flag is equal to 1), ChromaArrayType is set equal to 0.

[0351] res_change_in_clvs_allowed_flag equal to 1 specifies that the spatial resolution of a picture may change within a CLVS that references an SPS. res_change_in_clvs_allowed_flag equal to 0 specifies that the spatial resolution of a picture may not change within any CLVS that references an SPS.

[0352] pic_width_max_in_luma_samples specifies the maximum width of each decoded picture that references an SPS in units of luma samples. pic_width_max_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8,MinCbSizeY). It is a bitstream conformance requirement that for any OLS with OLS index i that contains one or more layers referencing an SPS, the value of pic_width_max_in_luma_samples shall be less than or equal to ols_dpb_pic_width[i].

[0353] pic_height_max_in_luma_samples specifies the maximum height of each decoded picture that references an SPS in units of luma samples. pic_height_max_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8,MinCbSizeY). It is a bitstream conformance requirement that for any OLS with OLS index i that contains one or more layers referencing an SPS, the value of pic_height_max_in_luma_samples shall be less than or equal to OLS_DPB_pic_height[i].

[0354] sps_conformance_window_flag equal to 1 indicates that the next conformance cropping window offset parameter in the SPS follows next in the SPS. sps_conformance_window_flag equal to 0 indicates that no conformance cropping window offset parameter is present in the SPS.

[0355] sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset specify a cropping window that is applied to pictures with pic_width_in_luma_samples equal to pic_width_max_in_luma_samples and pic_height_in_luma_samples equal to pic_height_max_in_luma_samples. If sps_conformance_window_flag is equal to 0, the values ​​of sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset are inferred to be equal to 0. The adaptive cropping window includes luma samples having horizontal picture coordinates from SubWidthC*sps_conf_win_left_offset to pic_width_max_in_luma_samples-(SubWidthC*sps_conf_win_right_offset+1) and vertical picture coordinates from SubHeightC*sps_conf_win_top_offset to pic_height_max_in_luma_samples-(SubHeightC*sps_conf_win_bottom_offset+1). The value of SubWidthC*(sps_conf_win_left_offset+sps_conf_win_right_offset) shall be smaller than pic_width_max_in_luma_samples, and the value of SubHeightC*(sps_conf_win_top_offset+sps_conf_win_bottom_offset) shall be smaller than pic_height_max_in_luma_samples. If ChromaArrayType is not equal to 0, the corresponding specified samples of the two chroma arrays are samples with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample. NOTE 2 – The conformance cropping window offset parameters are applied only at the output side. All internal decoding processes are applied to the uncropped picture size.

[0356] sps_log2_ctu_size_minus5+5 specifies the size of the luma coding tree block for each CTU. The value of sps_log2_ctu_size_minus5 is in the range of 0 to 2. The value 3 of sps_log2_CTU_size_minus5 is reserved for future use by ITU-T|ISO / IEC. The variables CtbLog2SizeY and CtbSizeY are derived as follows: CtbLog2SizeY=sps_log2_ctu_size_minus5+5 (43) CtbSizeY=1< <CtbLog2SizeY (44)

[0357] subpic_info_present_flag equal to 1 specifies that subpicture information for CLVS is present and there can be one or more subpictures for each picture in CLVS. subpic_info_present_flag equal to 0 specifies that subpicture information for CLVS is not present and there is only one subpicture for each picture in CLVS. If res_change_in_clvs_allowed_flag is equal to 1, the value of subpic_info_present_flag shall be equal to 0. NOTE 3 - If the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the subpictures of the input bitstream to the sub-bitstream extraction process, it may be necessary to set the value of subpic_info_present_flag to 1 in the RBSP of the SPS.

[0358] sps_num_subpics_minus1+1 specifies the number of subpictures for each picture in the CLVS. The value of sps_num_subpics_minus1 shall be in the range of 0 to Ceil(pic_width_max_in_luma_samples÷CtbSizeY)*Ceil(pic_height_max_in_luma_samples÷CtbSizeY)-1. If not present, the value of sps_num_subpics_minus1 is inferred to be equal to 0.

[0359] sps_independent_subpics_flag equal to 1 specifies that intra-prediction, inter-prediction, and in-loop filtering operations across any sub-picture boundaries in CLVS are not possible. sps_independent_subpics_flag equal to 0 specifies that inter-prediction and in-loop filtering operations across sub-picture boundaries in CLVS are possible. If not present, the value of sps_independent_subpics_flag is inferred to be 0.

[0360] subpic_ctu_top_left_x[i] specifies the horizontal position of the top-left CTU of the ith subpicture, in CtbSizeY units. The syntax element is Ceil(Log2((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits in length. If not present, the value of subpic_ctu_top_left_x[i] is inferred to be equal to 0.

[0361] subpic_ctu_top_left_y[i] specifies the vertical position of the top-left CTU of the ith subpicture, in CtbSizeY units. The syntax element is Ceil(Log2((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits in length. If not present, the value of subpic_ctu_top_left_y[i] is inferred to be equal to 0.

[0362] subpic_width_minus1[i]+1 specifies the width of the ith subpicture in CtbSizeY units. The syntax element is Ceil(Log2((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits in length. If not present, the value of subpic_width_minus1[i] is inferred to be equal to ((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-subpic_ctu_top_left_x[i]-1.

[0363] subpic_height_minus1[i]+1 specifies the height of the ith subpicture in CtbSizeY units. The syntax element is Ceil(Log2((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits in length. If not present, the value of subpic_height_minus1[i] is inferred to be equal to ((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-subpic_ctu_top_left_y[i]-1.

[0364] subpic_treated_as_pic_flag[i] equal to 1 specifies that the i-th subpicture of each coded picture in CLVS is treated as a picture in the decoding process, excluding in-loop filtering operations. subpic_treated_pic_flag[i] equal to 0 specifies that the i-th subpicture of each coded picture in CLVS is not treated as a picture in the decoding process, excluding in-loop filtering operations. If not present, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to sps_independent_subpics_flag. If subpic_treated_as_pic_flag[i] is equal to 1, it is a bitstream conformance requirement that all of the following conditions are true for each output layer and its reference layers in the OLS, including the layer that contains the i-th subpicture as an output layer: All pictures in the output layer and its reference layers shall have the same value of pic_width_in_luma_samples and the same value of pic_height_in_luma_samples. -All SPSs referenced by the output layer and its reference layers shall have the same value of sps_num_subpics_minus1, and for each value j in the range 0 to sps_num_subpics_minus1, shall have the same values ​​of subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], and loop_filter_across_subpic_enabled_flag[j], respectively. All pictures in each access unit of the output layer, along with its reference layer, shall have the same value of SubpicIdVal[j] for values ​​of j in the range 0 to sps_num_subpics_minus1.

[0365] loop_filter_across_subpic_enabled_flag[i] equal to 1 specifies that in-loop filtering operations can be performed across the boundary of the i-th subpicture of each coded picture in CLVS.

[0366] loop_filter_across_subpic_enabled_flag[i] equal to 0 specifies that no interloop filtering operation is performed across the i-th subpicture boundary of each coded picture in CLVS. If not present, the value of loop_filter_across_subpic_enabled_pic_flag[i] is inferred to be equal to 1-sps_independent_subpics_flag. It is a bitstream conformance requirement that the shape of a sub-picture be such that, when decoded, its entire left boundary and its entire top boundary are made up of the picture boundary or the boundary of a previously decoded sub-picture.

[0367] sps_subpic_id_len_minus1+1 specifies the number of bits used to represent the syntax element sps_subpic_id[i], the syntax element pps_subpic_id[i] (if present), and the syntax element slice_subpic_id (if present). The value of sps_subpic_id_len_minus1 is in the range of 0 to 15. The value 1 < (sps_subpic_id_len_minus1+1) shall be greater than or equal to sps_num_subpics_minus1+1.

[0368] subpic_id_mapping_explicitly_signalled_flag equal to 1 specifies that subpicture ID mapping is explicitly signaled in either the SPS or the PPS referenced by the coded picture in CLVS. subpic_id_mapping_explicitly_signalled_flag equal to 0 specifies that subpicture ID mapping is not explicitly signaled to CLVS. If not present, the value of subpic_id_mapping_explicitly_signalled_flag is inferred to be 0.

[0369] subpic_id_mapping_in_sps_flag equal to 1 specifies that subpicture ID mapping is signaled in the SPS if subpic_id_mapping_explicitly_signalled_flag is equal to 1. subpic_id_mapping_in_sps_flag equal to 0 specifies that subpicture ID mapping is signaled in the PPS referenced by the CLVS coded picture if subpic_id_mapping_explicitly_signalled_flag is equal to 1.

[0370] sps_subpic_id[i] specifies the subpicture ID of the i-th subpicture. The length of the sps_subpic_id[i] syntax element is sps_subpic_id_len_minus1+1 bits.

[0371] bit_depth_minus8 specifies the bit depth of the samples in the luma and chroma array BitDepth and the value of the chroma quantization parameter range offset QpBdOffset as follows: BitDepth=8+bit_depth_minus8 (45) QpBdOffset=6*bit_depth_minus8 (46) bit_depth_minus8 is in the range 0 to 8.

[0372] sps_entropy_coding_sync_enabled_flag equal to 1 specifies that the specified synchronization process for context variables is invoked before decoding the first CTB in a row of CTBs for each tile in each picture with reference to the SPS, and that a specific storage process for context variables is invoked after decoding the CTU including the first CTB in a row of CTBs for each tile in each picture with reference to the SPS. sps_entropy_coding_sync_enabled_flag equal to 0 specifies that the specified synchronization process for context variables does not need to be invoked before decoding the CTU including the first CTB in a CTB column for each tile in each picture with reference to the SPS, and that the specified storage process for context variables does not need to be invoked after decoding the CTU including the first CTB in a row of CTBs for each tile in each picture with reference to the SPS.

[0373] sps_wpp_entry_point_offsets_present_flag equal to 1 specifies that signaling for entry point offsets of CTU rows may be present in the slice headers of pictures that reference the SPS if sps_entropy_coding_sync_enabled_flag is equal to 1. sps_wpp_entry_point_offsets_present_flag equal to 0 specifies that signaling for entry point offsets of CTU rows is absent in the slice headers of pictures that reference the SPS. If absent, the value of sps_wpp_entry_point_offsets_present_flag is inferred to be 0.

[0374] sps_weighted_pred_flag equal to 1 specifies that weighted prediction may be applied to P slices referencing an SPS. sps_weighted_pred_flag equal to 0 specifies that weighted prediction is not applied to P slices referencing an SPS.

[0375] sps_weighted_bipred_flag equal to 1 specifies that explicit weighted prediction may be applied to B slices referencing an SPS. sps_weighted_bipred_flag equal to 0 specifies that explicit weighted prediction is not applied to B slices referencing an SPS.

[0376] log2_max_pic_order_cnt_lsb_minus4 specifies the value of the variable MaxPicOrderCntLsb used in the decoding process of the picture order count as follows: MaxPicOrderCntLsb=2 (log2_max_pic_order_cnt_lsb_minus4+4) (47) The value of log2_max_pic_order_cnt_lsb_minus4 shall be in the range of 0 to 12.

[0377] sps_poc_msb_flag equal to 1 specifies that the ph_poc_msb_present_flag syntax element is present in the PH that references the SPS. sps_poc_msb_flag equal to 0 specifies that the ph_poc_msb_present_flag syntax element is not present in the PH that references the SPS.

[0378] If poc_msb_len_minus1+1, it specifies the length in bits of the poc_msb_val syntax element when included in a PH that references an SPS. The value of poc_msb_len_minus1 shall be in the range 0 to 32-log2_max_pic_order_cnt_lsb_minus4-5.

[0379] num_extra_ph_bits_bytes specifies the number of bytes of extra bits in the PH syntax structure of the coded picture that references the SPS. In bitstreams conforming to this version of this specification, the value of num_extra_ph_bits_bytes shall be equal to 0. Although this version of this specification requires that the value of num_extra_ph_bits_bytes be equal to 0, decoders conforming to this version of this specification shall allow the syntax to include a value of 1 or 2 for num_extra_ph_bits_bytes.

[0380] num_extra_sh_bits_bytes specifies the number of bytes of extra bits in the slice header of a coded picture that references an SPS. In bitstreams conforming to this version of this specification, the value of num_extra_sh_bits_bytes shall be equal to 0. Although this version of this specification requires that the value of num_extra_sh_bits_bytes be equal to 0, decoders conforming to this version of this specification shall allow the syntax to include a value of 1 or 2 for num_extra_sh_bits_bytes.

[0381] sps_sublayer_dpb_params_flag is used to control the presence of max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i], and max_latency_increase_plus1[i] syntax elements in the dpb_parameters() syntax structure of the SPS. If not present, the value of sps_sub_dpb_params_info_present_flag is inferred to be 0.

[0382] long_term_ref_pics_flag equal to 0 specifies that the LTRP is not used for inter prediction of any coded picture in CLVS. long_term_ref_pics_flag equal to 1 specifies that the LTRP may be used for inter prediction of one or more coded pictures in CLVS.

[0383] inter_layer_ref_pics_present_flag equal to 0 specifies that ILRP shall not be used for inter prediction of any coded picture in CLVS. inter_layer_ref_pic_flag equal to 1 specifies that ILRP may be used for inter prediction of one or more coded pictures in CLVS. If sps_video_parameter_set_id is equal to 0, the value of inter_layer_ref_pics_present_flag shall be inferred to be equal to 0. If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the value of inter_layer_ref_pics_present_flag shall be equal to 0.

[0384] sps_idr_rpl_present_flag equal to 1 specifies that the Reference Picture List syntax element is present in the slice header of the IDR picture. sps_idr_rpl_present_flag equal to 0 specifies that the Reference Picture List syntax element is not present in the slice header of the IDR picture.

[0385] rpl1_same_as_rpl0_flag equal to 1 specifies that the syntax element num_ref_pic_lists_in_sps[1] and the syntax structure ref_pic_list_struct(1,rplsIdx) are not present, and the following applies: - The value of num_ref_pic_lists_in_sps[1] is inferred to be equal to the value of num_ref_pic_lists_in_sps[0]. - The value of each component of ref_pic_list_struct(1,rplsIdx) is inferred to be equal to the value of the corresponding syntax element of ref_pic_list_struct(0,rplsIdx) for rplsIdx from 0 to num_ref_pic_lists_in_sps[0]-1.

[0386] num_ref_pic_lists_in_sps[i] specifies the number of ref_pic_list_struct(listIdx, rplsIdx) syntax structures whose listIdx is i and included in the SPS. The value of num_ref_pic_lists_in_sps[i] is in the range of 0 to 64. NOTE 4 - For each value of listIdx (equal to 0 or 1), the decoder shall reserve memory for a total number of num_ref_pic_lists_in_sps[i]+1 ref_pic_list_struct(listIdx,rplsIdx) syntax structures, since one ref_pic_list_struct(listIdx,rplsIdx) syntax structure may be directly signaled in the slice header of the current picture.

[0387] qtbtt_dual_tree_intra_flag equal to 1 specifies that, for I-slices, each CTU is divided into coding units with 64x64 luma samples using implicit quadtree partitioning, and these coding units are the roots of two separate coding_tree syntax structures for luma and chroma. qtbtt_dual_tree_intra_flag equal to 0 specifies that no separate coding_tree syntax is used for I-slices. If qtbtt_dual_tree_intra_flag is not present, it is inferred to be equal to 0.

[0388] log2_min_luma_coding_block_size_minus2+2 specifies the minimum luma coding block size. The value of log2_min_luma_coding_block_size_minus2 shall be within the range of 0 to Min(4,sps_log2_CTU_size_minus5+3). The variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC, and Vsize are derived as follows: MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2 (48) MinCbSizeY=1< <MinCbLog2SizeY (49) IbcBufWidthY=256*128 / CtbSizeY (50) IbcBufWidthC=IbcBufWidthY / SubWidthC (51) VSize=Min(64,CtbSizeY) (52) The value of MinCbSizeY shall be less than or equal to VSize. The variables CtbWidthC and CtbHeightC, which respectively define the width and height of the array of each chroma CTB, are derived as follows: - If chroma_format_idc is 0 (monochrome) or separate_colour_plane_flag is equal to 1, then CtbWidthC and CtbHeightC are both equal to 0. - Otherwise, CtbWidthC and CtbHeightC are derived as follows: CtbWidthC=CtbSizeY / SubWidthC (53) CtbHeightC=CtbSizeY / SubHeightC (54) When log2BlockWidth is from 0 to 4 and log2BlockHeight is from 0 to 4, taking 1<<log2BlockWidth and 1<<log2BlockHeight as inputs, call the initialization process of the right-up diagonal scan order array specified in section 6.5.2, and the output is assigned to DiagScanOrder[log2BlockWidth][log2BlockHeight]. When log2BlockWidth is from 0 to 6 and log2BlockHeight is from 0 to 6, taking 1<<log2BlockWidth and 1<<log2BlockHeight as inputs, call the initialization process of the horizontal and vertical scan order arrays specified in section 6.5.3, and the output is assigned to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].

[0389] The partition_constraints_override_enabled_flag equal to 1 defines the existence of the partition_constraints_override_flag in PH by referring to the SPS. The partition_constraints_override_enabled_flag equal to 0 defines that there is no partition_constraints_override_flag in the PH referring to the SPS.

[0390] sps_log2_diff_min_qt_min_cb_intra_slice_luma specifies the default difference between the base 2 logarithm of the minimum size of luma samples in luma leaf blocks resulting from quadtree partitioning of a CTU and the base 2 logarithm of the minimum coding block size of luma samples in luma CUs in slices with slice_type set to 2(I) that reference an SPS. If partition_constraints_override_enabled_flag is set to 1, the default difference can be overridden by ph_log2_diff_min_qt_min_cb_luma in a PH that references an SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_luma must be in the range of 0 to CtbLog2SizeY-MinCbLog2SizeY. The base 2 logarithm of the minimum size of luma samples in luma leaf blocks resulting from quadtree partitioning of a CTU is derived as follows: MinQtLog2SizeIntraY=sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY (55)

[0391] sps_max_mtt_hierarchy_depth_intra_slice_luma specifies the default maximum hierarchical depth of a coding unit resulting from a quadtree multi-type tree partitioning in a slice with slice_type equal to 2(I) that references an SPS. If partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchical depth can be overridden by ph_max_mtt_hierarchy_depth_intra_slice_luma present in a PH that references an SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2*(CtbLog2SizeY-MinCbLog2SizeY).

[0392] sps_log2_diff_max_bt_min_qt_intra_slice_luma specifies the default difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be split using binary splitting that references the SPS, and the minimum size (width or height) of luma samples of a luma leaf block that results from quadtree splitting of a CTU for slices with slice_type being 2(I). If partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_bt_min_qt_luma present in the PH that references the SPS. The value of sps_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY. If sps_log2_diff_max_bt_min_qt_intra_slice_luma is not present, a value of 0 for sps_log2_diff_max_bt_min_qt_intra_slice_luma is inferred.

[0393] sps_log2_diff_max_tt_min_qt_intra_slice_luma specifies the default difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be divided using ternary division that references the SPS, and the minimum size (width or height) of luma samples of a luma leaf block that results from quadtree division of a CTU for a slice with slice_type equal to 2(I). If partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_tt_min_qt_luma present in the PH that references the SPS. The value of sps_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY. If sps_log2_diff_max_tt_min_qt_intra_slice_luma is not present, the value of sps_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to 0.

[0394] sps_log2_diff_min_qt_min_cb_inter_slice specifies the default difference between the base 2 logarithm of the minimum size of luma samples of luma leaf blocks resulting from the quadtree partitioning of a CTU and the base 2 logarithm of the minimum luma coding block size of luma samples of luma CUs in slices with slice_type equal to 0 (B) or 1 (P) that refer to an SPS. If partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_min_qt_min_cb_luma in the PH that refer to an SPS. The value of sps_log2_diff_min_qt_min_cb_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY. The base 2 logarithm of the minimum size of luma samples of luma leaf blocks resulting from the quadtree partitioning of a CTU is derived as follows: MinQtLog2SizeInterY=sps_log2_diff_min_qt_min_cb_inter_slice+MinCbLog2SizeY (56)

[0395] sps_max_mtt_hierarchy_depth_inter_slice specifies the default maximum hierarchy depth of a coding unit resulting from a quadtree multi-type tree partitioning in a slice where slice_type referencing an SPS is 0 (B) or 1 (P). If partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth can be overridden by ph_max_mtt_hierarchy_depth_inter_slice present in a PH referencing an SPS. The value of sps_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY-MinCbLog2SizeY).

[0396] sps_log2_diff_max_min_qt_inter_slice specifies the default difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be split using binary splitting and the minimum size (width or height) of luma samples of a luma leaf block that results from quadtree splitting of a CTU of a slice with slice_type equal to 0 (B) or 1 (P) that references the SPS. If partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_bt_min_qt_luma that is present in the PH that references the SPS. The value of sps_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY. If sps_log2_diff_max_bt_min_qt_inter_slice is not present, the value of sps_log2_diff_max_bt_min_qt_inter_slice is inferred to be 0.

[0397] sps_log2_diff_max_tt_min_qt_inter_slice specifies the default difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be divided using ternary division and the minimum size (width or height) of luma samples of a luma leaf block that results from quadtree division of a CTU of a slice with slice_type equal to 0 (B) or 1 (P) that references the SPS. If partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_tt_min_qt_luma that is present in the PH that references the SPS. The value of sps_log2_diff_max_tt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY. If sps_log2_diff_max_tt_min_qt_inter_slice is not present, the value of sps_log2_diff_max_tt_min_qt_inter_slice is inferred to be 0.

[0398] sps_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the default difference between the base 2 logarithm of the minimum size of luma samples of a chroma leaf block by quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA and the base 2 logarithm of the minimum coding block size of luma samples of a chroma CU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) referring to the SPS. If partition_constraints_override_enabled_flag is equal to 1, the default difference is overridden by ph_log2_diff_min_qt_min_cb_chroma present in PH referring to the SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY. If not present, the value of sps_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to 0. The base 2 logarithm of the minimum size of luma samples in a chroma leaf block obtained as a result of quadtree decomposition of a CTU whose treeType is DUAL_TREE_CHROMA is derived as follows: MinQtLog2SizeIntraC=sps_log2_diff_min_qt_min_cb_intra_slice_chroma+MinCbLog2SizeY (57)

[0399] sps_max_mtt_hierarchy_depth_intra_slice_chroma specifies the default maximum hierarchical depth of a chroma coding unit resulting from multi-type tree partitioning of a chroma quadtree with treeType=DUAL_TREE_CHROMA and slice_type=2(I) that references an SPS. If partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchical depth can be overridden by ph_max_mtt_hierarchy_depth_chroma present in a PH that references an SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2*(CtbLog2SizeY-MinCbLog2SizeY). If not present, the value of sps_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to 0.

[0400] sps_log2_diff_max_bt_min_qt_intra_slice_chroma specifies the default difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a chroma coding block that can be divided using binary division and the minimum size (width or height) of luma samples of a chroma coding block that results from quadtree division of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) that references an SPS. If partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_bt_min_qt_chroma present in the PH that references the SPS. The value of sps_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC. If sps_log2_diff_max_bt_min_qt_intra_slice_chroma is not present, a value of 0 for sps_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred.

[0401] log2_diff_max_tt_min_qt_intra_slice_chroma specifies the default difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a chroma coding block that can be divided using ternary division and the minimum size (width or height) of luma samples of a chroma coding block that results from quadtree division of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) that references an SPS. If partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_tt_min_qt_chroma present in the PH that references the SPS. The value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC. If sps_log2_diff_max_tt_min_qt_intra_slice_chroma is not present, the value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to 0.

[0402] sps_max_luma_transform_size_64_flag equal to 1 specifies that the maximum transform size of luma samples is equal to 64. sps_max_luma_transformation_size_64_flag equal to 0 specifies that the maximum transform size of luma samples is equal to 32. If CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag is equal to 0. The variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, and MaxTbSizeY are derived as follows: MinTbLog2SizeY=2 (58) MaxTbLog2SizeY=sps_max_luma_transform_size_64_flag?6:5 (59) MinTbSizeY=1< <MinTbLog2SizeY (60) MaxTbSizeY=1< <MaxTbLog2SizeY (61)

[0403] sps_joint_cbcr_enabled_flag equal to 0 specifies that joint coding of chroma residual is disabled. sps_joint_cbcr_enabled_flag equal to 1 specifies that joint coding of chroma residual is enabled. If not present, the value of sps_joint_cbcr_enabled_flag is inferred to be equal to 0.

[0404] same_qp_table_for_chroma equal to 1 specifies that only one chroma QP mapping table is signaled, and that this table applies to Cb and Cr residuals, and also to the joint Cb-Cr residual if sps_joint_cbcr_enabled_flag is equal to 1. same_qp_table_for_chroma equal to 0 specifies that if sps_joint_cbcr_enabled_flag is equal to 1, then two chroma QP mapping tables, one for Cb and Cr and an additional one for joint Cb-Cr, are signaled in the SPS. If same_qp_table_for_chroma is not present in the bitstream, the value of same_qp_table_for_chroma equal to 1 is inferred.

[0405] qp_table_start_minus26[i]+26 specifies the starting luma and chroma QP used to describe the i-th chroma QP mapping table. The value of qp_table_start_minus26[i] shall be in the range of -26-QpBdOffset to 36. If qp_table_start_minus26[i] is not present in the bitstream, the value of qp_table_start_minus26[i] is inferred to be equal to 0.

[0406] num_points_in_qp_table_minus1[i]+1 specifies the number of points used to describe the i-th chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be in the range of 0 to 63+QpBdOffset. If num_points_in_qp_table_minus1[0] is not present in the bitstream, the value of num_points_in_qp_table_minus1[0] is inferred to be equal to 0.

[0407] delta_qp_in_val_minus1[i][j] specifies the delta value used to derive the input coordinate of the jth pivot point of the ith chroma QP mapping table. If delta_qp_in_val_minus1[0][j] is not present in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.

[0408] delta_qp_diff_val[i][j] Specifies the delta value used to derive the output coordinate of the jth pivot point of the i-th chroma QP mapping table. The i-th chroma QP mapping table ChromaQpTable[i], where i=0...numQpTables-1, is derived as follows:

[0409] qpInVal[i][0]=qp_table_start_minus26[i]+26 qpOutVal[i][0]=qpInVal[i][0] for(j=0;j<=num_points_in_qp_table_minus1[i];j++){ qpInVal[i][j+1]=qpInVal[i][j]+delta_qp_in_val_minus1[i][j]+1 qpOutVal[i][j+1]=qpOutVal[i][j]+(delta_qp_in_val_minus1[i][j]^delta_qp_diff_val[i][j]) } ChromaQpTable[i][qpInVal[i][0]]=qpOutVal[i][0] for(k=qpInVal[i][0]-1;k>=-QpBdOffset;k--) ChromaQpTable[i][k]=Clip3(-QpBdOffset,63,ChromaQpTable[i][k+1]-1) (62) for(j=0;j<=num_points_in_qp_table_minus1[i];j++){ sh=(delta_qp_in_val_minus1[i][j]+1)>>1 for(k=qpInVal[i][j]+1,m=1;k<=qpInval[i][j+1];k++,m++) ChromaQpTable[i][k]=ChromaQpTable[i][qpInVal[i][j]]+ ((qpOutVal[i][j+1]-qpOutVal[i][j])*m+sh) / (delta_qp_in_val_minus1[i][j]+1) } for(k=qpInVal[i][num_points_in_qp_table_minus1[i]+1]+1;k<=63;k++) ChromaQpTable[i][k]=Clip3(-QpBdOffset,63,ChromaQpTable[i][k-1]+1)

[0410] If same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k], for k in the range of -QpBdOffset to 63. Bitstream conformance requires that the values ​​of qpInVal[i][j] and qpOutVal[i][j] be in the range of -QpBdOffset to 63, with i in the range of 0 to numQpTables-1, and j in the range of 0 to num_points_in_qp_table_minus1[i]+1.

[0411] sps_sao_enabled_flag equal to 1 specifies that sample adaptive offset processing is applied to the reconstructed picture after deblocking filtering. sps_sao_enabled_flag equal to 0 specifies that sample adaptive offset processing is not applied to the reconstructed picture after deblocking filtering.

[0412] sps_alf_enabled_flag equal to 0 specifies that the adaptive loop filter is disabled. sps_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled.

[0413] sps_ccalf_enabled_flag equal to 0 specifies that the cross-component adaptive loop filter is disabled. sps_ccalf_enabled_flag equal to 1 specifies that the cross-component adaptive loop filter is enabled.

[0414] sps_transform_skip_enabled_flag equal to 1 specifies that transform_skip_flag may be present in the transform unit syntax. sps_transform_skip_enabled_flag equal to 0 specifies that transform_skip_flag is not present in the transform unit syntax.

[0415] log2_transform_skip_max_size_minus2 specifies the maximum block size used for transform skip, and specifies that it must be within the range of 0 to 3. The variable MaxTsSize is set equal to 1<<(log2_transform_skip_max_size_minus2+2).

[0416] sps_bdpcm_enabled_flag equal to 1 specifies that intra_bdpcm_luma_flag and intra_bdpcm_chroma_flag may be present in the coding unit syntax of an intra coding unit. sps_bdpcm_enabled_flag equal to 0 specifies that intra_bdpcm_luma_flag and intra_bdpcm_chroma_flag are not present in the intra coding unit syntax. If not present, the value of sps_bdpcm_enabled_flag is inferred to be equal to 0.

[0417] sps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction. sps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is applied. If the value of (CtbSizeY / MinCbSizeY+1) is greater than (pic_width_in_luma_samples / MinCbSizeY-1) and pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS, the value of sps_ref_wraparound_enabled_flag shall be equal to 0.

[0418] sps_temporal_mvp_enabled_flag equal to 1 specifies that the temporal motion vector predictor may be used in CLVS. sps_temporal_mvp_enabled_flag equal to 0 specifies that the temporal motion vector predictor is not used in CLVS.

[0419] sps_sbtmvp_enabled_flag equal to 1 specifies that sub-block based temporal motion vector predictors may be used in decoding pictures with all slices in CLVS whose slice_type is not I. sps_sbtmvp_enabled_flag equal to 0 specifies that sub-block based temporal motion vector predictors are not used in CLVS. If sps_sbtmvp_enabled_flag is not present, it is inferred to be equal to 0.

[0420] sps_amvr_enabled_flag equal to 1 specifies that adaptive motion vector differential resolution is used for motion vector coding. amvr_affine_amvr_enabled_flag equal to 0 specifies that adaptive vector differential resolution is not used for motion vector coding.

[0421] sps_bdof_enabled_flag equal to 0 specifies that bidirectional optical flow inter prediction is disabled. sps_bdof_enabled_flag equal to 1 specifies that bidirectional optical flow inter prediction is enabled.

[0422] sps_bdof_pic_present_flag equal to 1 specifies that ph_disable_bdof_flag is present in the PH referencing the SPS. sps_bdof_pic_present_flag equal to 0 specifies that ph_disable_bdof_flag is not present in the PH referencing the SPS. If sps_bdof_pic_present_flag is not present, the value of sps_bdof_pic_present_flag is inferred to be 0.

[0423] sps_smvd_enabled_flag equal to 1 specifies that symmetric motion vector differences may be used for motion vector decoding. sps_smvd_enabled_flag equal to 0 specifies that symmetric motion vector differences are not used for motion vector coding.

[0424] sps_dmvr_enabled_flag equal to 1 specifies that inter bi-directional prediction based on decoder motion vector refinement is enabled. sps_dmvr_enabled_flag equal to 0 specifies that inter bi-directional prediction based on decoder motion vector refinement is disabled.

[0425] sps_dmvr_pic_present_flag equal to 1 specifies that ph_disable_dmvr_flag is present in the PH that references the SPS. sps_dmvr_pic_present_flag equal to 0 specifies that ph_disable_dmvr_flag is not present in the PH that references the SPS. If sps_dmvr_pic_present_flag is not present, the value of sps_dmvr_pic_present_flag is inferred to be 0.

[0426] sps_mmvd_enabled_flag equal to 1 specifies that merge mode with motion vector difference is enabled. sps_mmvd_enabled_flag equal to 0 specifies that merge mode with motion vector difference is disabled.

[0427] sps_isp_enabled_flag equal to 1 specifies that intra prediction by sub-partitions is enabled. sps_isp_enabled_flag equal to 0 specifies that intra prediction by sub-partitions is disabled.

[0428] sps_mrl_enabled_flag equal to 1 specifies that intra prediction with multiple reference lines is enabled. sps_mrl_enabled_flag equal to 0 specifies that intra prediction with multiple reference lines is disabled.

[0429] sps_mip_enabled_flag equal to 1 specifies that matrix-based intra prediction is enabled. sps_mip_enabled_flag equal to 0 specifies that matrix-based intra prediction is disabled.

[0430] sps_cclm_enabled_flag equal to 0 specifies that cross-component linear model intra prediction from luma to chroma components is disabled. sps_cclm_enabled_flag equal to 1 specifies that cross-component linear model intra prediction from luma to chroma components is enabled. If sps_cclm_enabled_flag is not present, it is inferred to be equal to 0.

[0431] sps_chroma_horizontal_collocated_flag equal to 1 specifies that the prediction process operates in the designed manner for chroma sample positions that are not horizontally shifted relative to the corresponding luma sample positions. sps_chroma_horizontal_collocated_flag equal to 0 specifies that the prediction process operates in the designed manner for chroma sample positions that are shifted to the right by 0.5 luma sample units relative to the corresponding luma sample positions. If sps_chroma_horizontal_collocated_flag is not present, it is inferred to be equal to 0.

[0432] sps_chroma_vertical_collocated_flag equal to 1 specifies that the prediction process operates in the designed manner for chroma sample positions that are not vertically shifted relative to the corresponding luma sample positions. sps_chroma_vertical_collocated_flag equal to 0 specifies that the prediction process operates in the designed manner for chroma sample positions that are shifted to the right by 0.5 luma sample units relative to the corresponding luma sample positions. If sps_chroma_vertical_collocated_flag is not present, it is inferred to be equal to 1.

[0433] sps_mts_enabled_flag equal to 1 indicates that sps_explicit_mts_intra_enabled_flag is present in the syntax of the sequence parameter set RBSP and sps_explicit_mts_inter_enabled_flag is present in the syntax of the sequence parameter set RBSP. sps_mts_enabled_flag equal to 0 indicates that sps_explicit_mts_intra_enabled_flag is not present in the syntax of the sequence parameter set RBSP and that sps_explicit_mts_inter_enabled_flag is not present in the syntax of the sequence parameter set RBSP.

[0434] sps_explicit_mts_intra_enabled_flag equal to 1 specifies that mts_idx may be present in the intra coding unit syntax. sps_explicit_mts_intra_enabled_flag equal to 0 specifies that mts_idx is not present in the intra coding unit syntax. If not present, the value of sps_explicit_mts_intra_enabled_flag is inferred to be 0.

[0435] sps_explicit_mts_inter_enabled_flag equal to 1 specifies that mts_idx may be present in the inter-coding unit syntax. sps_explicit_mts_inter_enabled_flag equal to 0 specifies that mts_idx is not present in the inter-coding unit syntax. If not present, the value of sps_explicit_mts_inter_enabled_flag is inferred to be 0.

[0436] six_minus_max_num_merge_cand specifies the maximum number of merge motion vector prediction (MVP) candidates supported in SPS minus 6. The maximum number of merging MVP candidates, MaxNumMergeCand, is derived as follows: MaxNumMergeCand=6-six_minus_max_num_merge_cand (63) The value of MaxNumMergeCand is in the range of 1 to 6.

[0437] sps_sbt_enabled_flag equal to 0 specifies that sub-block transforms for inter-predicted CUs are disabled. sps_sbt_enabled_flag equal to 1 specifies that sub-block transforms for inter-predicted CUs are enabled.

[0438] sps_affine_enabled_flag Specifies whether affine-model-based motion compensation can be used for inter prediction. If sps_affine_enabled_flag is equal to 0, the syntax shall be constrained such that affine-model-based motion compensation is not used in CLVS and inter_affine_flag and cu_affine_type_flag are not present in the CLVS coding unit syntax. Otherwise (sps_affine_enabled_flag is equal to 1), affine-model-based motion compensation may be used in CLVS.

[0439] five_minus_max_num_subblock_merge_cand specifies that the maximum number of subblock-based merge motion vector prediction candidates supported in SPS is 5 minus.

[0440] sps_affine_type_flag Specifies whether motion compensation based on a six-parameter affine model can be used for inter prediction. If sps_affine_type_flag is equal to 0, the syntax shall be constrained such that motion compensation based on a six-parameter affine model is not used in CLVS and cu_affine_type_flag is not present in the coding unit syntax in CLVS. Otherwise (sps_affine_type_flag is equal to 1), motion compensation based on a six-parameter affine model may be used in CLVS. If not present, the value of sps_affine_type_flag is inferred to be equal to 0.

[0441] sps_affine_amvr_enabled_flag equal to 1 specifies that adaptive motion vector difference resolution is used for affine inter mode motion vector coding. sps_amvr_affine_amvr_enabled_flag equal to 0 specifies that adaptive motion vector difference resolution is not used for affine inter mode motion vector coding. If not present, the value of sps_affine_amvr_enabled_flag is inferred to be 0.

[0442] sps_affine_prof_enabled_flag Specifies whether prediction fine-tuning by optical flow can be used for affine motion compensation. If sps_affine_prof_enabled_flag is equal to 0, affine motion compensation shall not be fine-tuned by optical flow. Otherwise (sps_affine_prof_enabled_flag is equal to 1), optical flow can be used to fine-tune affine motion compensation. If not present, the value of sps_affine_prof_enabled_flag is inferred to be 0.

[0443] sps_prof_pic_present_flag equal to 1 specifies that ph_disable_prof_flag is present in the PH referencing the SPS. sps_prof_pic_present_flag equal to 0 specifies that ph_disable_prof_flag is not present in the PH referencing the SPS. If sps_prof_pic_present_flag is not present, the value of sps_prof_pic_present_flag is inferred to be 0.

[0444] sps_palette_enabled_flag equal to 1 specifies that pred_mode_plt_flag is included in the coding unit syntax. sps_palette_enabled_flag equal to 0 specifies that pred_mode_plt_flag is not included in the coding unit syntax. If sps_palette_enabled_flag is not present, it is inferred to be equal to 0.

[0445] sps_act_enabled_flag equal to 1 specifies that adaptive color transforms may be used and cu_act_enabled_flag may be present in the coding unit syntax. sps_act_enabled_flag equal to 0 specifies that adaptive color transforms are not used and cu_act_enabled_flag is not present in the coding unit syntax. If sps_act_enabled_flag is not present, it is inferred to be equal to 0.

[0446] min_qp_prime_ts_minus4 specifies the minimum allowed quantization parameter in transform skip mode as follows: QpPrimeTsMin=4+min_qp_prime_ts_minus4 (64) The value of min_qp_prime_ts_minus4 is in the range of 0 to 48.

[0447] sps_bcw_enabled_flag specifies whether a CU can use weighted bi-prediction for inter-prediction. If sps_bcw_enabled_flag is equal to 0, the syntax is constrained so that bi-prediction with CU weights is not used in CLVS and bcw_idx is not present in the coding unit syntax of CLVS. Otherwise (sps_bcw_enabled_flag is equal to 1), bi-prediction with CU weights can be used in CLVS.

[0448] sps_ibc_enabled_flag equal to 1 specifies that IBC prediction mode may be used for decoding pictures in CLVS. sps_ibc_enabled_flag equal to 0 specifies that IBC prediction mode is not used in CLVS. If sps_ibc_enabled_flag is not present, it is inferred to be equal to 0.

[0449] six_minus_max_num_ibc_merge_cand specifies the maximum number of IBC merge block vector prediction (BVP) candidates supported by SPS minus six. The maximum number of IBC merge BVP candidates, MaxNumIbcMergeCand, is derived as follows: if(sps_ibc_enabled_flag) MaxNumIbcMergeCand=6-six_minus_max_num_ibc_merge_cand (65) else MaxNumIbcMergeCand=0

[0450] sps_ciip_enabled_flag indicates that ciip_flag may be present in the residual coding syntax of an inter coding unit. If sps_ciip_enabled_flag is 0, it indicates that ciip_flag is not present in the coding syntax of an inter coding unit.

[0451] sps_fpel_mmvd_enabled_flag equal to 1 specifies that merge modes with motion vector differences use integer sample precision. sps_fpel_mmvd_enabled_flag equal to 0 specifies that merge modes with motion vector differences can use fractional sample precision.

[0452] sps_gpm_enabled_flag specifies whether shape partition-based motion compensation can be used for inter prediction. sps_gpm_enabled_flag equal to 0 specifies that shape partition-based motion compensation shall not be used in CLVS and shall constrain the syntax so that merge_gpm_partition_idx, merge_gpm_idx0, and merge_gpm_idx1 are not included in the CLVS coding unit syntax. sps_gpm_enabled_flag equal to 1 specifies that shape partition-based motion compensation can be used in CLVS. If not present, the value of sps_gpm_enabled_flag is inferred to be equal to 0.

[0453] max_num_merge_cand_minus_max_num_gpm_cand specifies the maximum number of geometric partition merge mode candidates supported by the SPS minus MaxNumMergeCand. If sps_gpm_enabled_flag is equal to 1 and MaxNumMergeCand is equal to 3 or greater, the maximum number of geometric split merge mode candidates, MaxNumGeoMergeCand, is derived as follows: if(sps_gpm_enabled_flag&&MaxNumMergeCand>=3) MaxNumGpmMergeCand=MaxNumMergeCand - max_num_merge_cand_minus_max_num_gpm_cand (66) else if(sps_gpm_enabled_flag&&MaxNumMergeCand==2) MaxNumMergeCand=2 else MaxNumGeoMergeCand=0 The value of MaxNumGeoMergeCand is in the range of 2 to MaxNumMergeCand.

[0454] sps_lmcs_enabled_flag equal to 1 indicates that luminance mapping with chroma scaling is used in CLVS. sps_lmcs_enabled_flag equal to 0 indicates that luminance mapping with chroma scaling is not used in CLVS.

[0455] sps_lfnst_enabled_flag equal to 1 specifies that lfnst_idx may be present in the intra-coding unit syntax. sps_lfnst_enabled_flag equal to 0 specifies that lfnst_idx is not present in the intra-coding unit syntax.

[0456] sps_ladf_enabled_flag equal to 1 specifies that sps_num_ladf_intervals_minus2, sps_ladf_lowest_interval_qp_offset, sps_ladf_qp_offset[i] and sps_ladf_delta_threshold_minus1[i] are present in the SPS.

[0457] sps_num_ladf_intervals_minus2+1 specifies the number of sps_ladf_delta_threshold_minus1[i] and sps_ladf_qp_offset[i] syntax elements present in the SPS. The value of sps_num_ladf_intervals_minus2 shall be in the range of 0 to 3.

[0458] sps_ladf_lowest_interval_qp_offset specifies the offset used to derive the variable qP as specified in Section 8.8.3.6.1. The value of sps_ladf_lowest_interval_qp_offset shall be between -63 and +63 inclusive.

[0459] sps_ladf_qp_offset[i] Specifies the offset array used to derive the variable qP as specified in Section 8.8.3.6.1. The value of sps_ladf_qp_offset[i] shall be between -63 and +63 inclusive.

[0460] sps_ladf_delta_threshold_minus1[i] is used to calculate the value of SpsLadfIntervalLowerBound[i], which specifies the lower bound of the i-th luminance intensity level interval. The value of sps_ladf_delta_threshold_minus1[i] must be between 0 and 2. BitDepth It should be in the range of -3 The value of SpsLadfIntervalLowerBound[0] is set equal to 0. For each value of i in the range 0 to sps_num_ladf_intervals_minus2, the variable SpsLadfIntervalLowerBound[i+1] is derived as follows: SpsLadfIntervalLowerBound[i+1]=SpsLadfIntervalLowerBound[i] (67) +sps_ladf_delta_threshold_minus1[i]+1

[0461] log2_parallel_merge_level_minus2+2 specifies the value of the variable Log2ParMrgLevel, which is used in the spatial merge candidate derivation process as specified in Section 8.5.2.3, the motion vector and reference index derivation process in sub-block merge mode as specified in Section 8.5.5.2, and controls the invocation of the history-based motion vector predictor list update process as specified in Section 8.5.2.1. The value of log2_parallel_merge_level_minus2 shall be in the range of 0 to CtbLog2SizeY-2 inclusive. The variable Log2ParMrgLevel is derived as follows: Log2ParMrgLevel=log2_parallel_merge_level_minus2+2 (68)

[0462] sps_scaling_list_enabled_flag equal to 1 specifies that the scaling list is used for scaling the transform coefficients. sps_scaling_list_enabled_flag equal to 0 specifies that the scaling list is not used for scaling the transform coefficients.

[0463] sps_dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled for pictures that reference an SPS. sps_dep_quant_enabled_flag equal to 1 specifies that dependent quantization may be enabled for pictures that reference an SPS.

[0464] sps_sign_data_hiding_enabled_flag equal to 0 specifies that sign bit hiding is disabled for pictures that reference an SPS. sps_sign_data_hiding_enabled_flag equal to 1 specifies that sign bit hiding may be enabled for pictures that reference an SPS. If sps_sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.

[0465] sps_virtual_boundaries_enabled_flag equal to 1 specifies that in-loop filtering disabling across virtual boundaries may be applied in CLVS coded pictures. sps_virtual_boundaries_enabled_flag equal to 0 specifies that in-loop filtering disabling across virtual boundaries is not applied in CLVS coded pictures. In-loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations.

[0466] sps_virtual_boundaries_present_flag equal to 1 specifies that virtual boundary information is signaled in the SPS. sps_virtual_boundaries_present_flag equal to 0 specifies that virtual boundary information is not signaled in the SPS. If there are one or more virtual boundaries signaled in the SPS, in-loop filtering operations across the virtual boundaries are disabled in pictures that reference the SPS. In-loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. If the value of res_change_in_clvs_allowed_flag is equal to 1, it is a bitstream conformance requirement that the value of sps_virtual_boundaries_present_flag shall be equal to 0.

[0467] sps_num_ver_virtual_boundaries Specifies the number of sps_virtual_boundaries_pos_x[i] syntax elements present in the SPS. If sps_num_ver_virtual_boundaries is not present, it is inferred to be equal to 0.

[0468] sps_virtual_boundaries_pos_x[i] Specifies the position of the i-th vertical virtual boundary in units of luma samples divided by 8. The value of sps_virtual_boundaries_pos_x[i] shall be in the range of 1 to Ceil(pic_width_in_luma_samples÷8)-1.

[0469] sps_num_hor_virtual_boundaries specifies the number of syntax elements of sps_virtual_boundaries_pos_y[i] present in the SPS. If sps_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0. If sps_virtual_boundaries_enabled_flag is equal to 1 and sps_virtual_boundaries_present_flag is equal to 1, the sum of sps_num_ver_virtual_boundaries and sps_num_hor_virtual_boundaries shall be greater than 0.

[0470] sps_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary in units of luma samples divided by 8. The value of sps_virtual_boundaries_pos_y[i] shall be in the range of 1 to Ceil(pic_height_in_luma_samples÷8)-1.

[0471] sps_general_hrd_params_present_flag equal to 1 specifies that the syntax structure general_hrd_parameters() is present in the SPS RBSP syntax structure. sps_general_hrd_params_present_flag equal to 0 specifies that the syntax structure general_hrd_parameters() is not present in the SPS RBSP syntax structure.

[0472] sps_sublayer_cpb_params_present_flag equal to 1 specifies that the syntax structure old_hrd_parameters() in the SPS RBSP contains HRD parameters for sublayer representations with TemporalId in the range of 0 to sps_max_sublayer_minus1. sps_sublayer_cpb_params_present_flag equal to 0 specifies that the syntax structure ols_hrd_parameters() in the SPS RBSP contains HRD parameters for sublayer representations with TemporalId of sps_max_sublayers_minus1 only. When sps_max_sublayers_minus1=0, the value of sps_sublayer_cpb_params_present_flag is inferred to be equal to 0. If sps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters of sublayer representations with TemporalId in the range 0 to sps_max_sublayers_munus1-1 are inferred to be equal to the same HRD parameters of sublayer representations with TemporalId equal to sps_max_sublayers_munus1. This includes the HRD parameters starting from the fixed_pic_rate_general_flag[i] syntax element up to the sublayer_hrd_parameters(i) syntax structure immediately below the condition "if(general_vcl_hrd_params_present_flag)" in the ols_hrd_parameters syntax structure.

[0473] field_seq_flag equal to 1 indicates that the CLVS conveys pictures representing fields. field_seq_flag equal to 0 indicates that the CLVS conveys pictures representing frames. When general_frame_only_constraint_flag is equal to 1, the value of field_seq_flag shall be equal to 0. If field_seq_flag is equal to 1, there shall be one Frame Field Information SEI message for every coded picture in CLVS. NOTE 5 – The specified decoding process does not treat pictures representing fields or frames separately. Therefore, a sequence of pictures representing fields is coded using the picture dimensions of the individual fields. For example, pictures representing 1080i fields will commonly have cropped output dimensions of 1920x540, and the sequence picture rate will usually represent the source field rate (typically between 50 and 60 Hz) instead of the source frame rate (typically between 25 and 30 Hz).

[0474] vui_parameters_present_flag equal to 1 specifies that the syntax structure vui_parameters() is present in the SPS RBSP syntax structure. vui_parameters_present_flag equal to 0 specifies that the syntax structure vui_parameters() is not present in the SPS RBSP syntax structure.

[0475] sps_extension_flag equal to 0 specifies that the SPS RBSP syntax structure does not include the sps_extension_data_flag syntax element. sps_extension_flag equal to 1 specifies that the sps_extension_data_flag syntax element is present in the SPS RBSP syntax structure.

[0476] sps_extension_data_flag can have any value. Its presence and value do not affect a decoder's conformance to the features specified in this specification version. Decoders conforming to this specification version must ignore all sps_extension_data_flag syntax elements.

[0477] 7.4.3.4 Picture Parameter Set RBSP Semantics

[0478] A PPS RBSP shall be available to the decoding process before it is referenced, or shall be contained within at least one AU with a TemporalId less than or equal to the TemporalId of the PPS NAL unit that references it, or shall be provided through external means. All PPS NAL units with a particular value of pps_pic_parameter_set_id within one PU shall have the same content.

[0479] pps_pic_parameter_set_id indicates the PPS to which other syntax elements refer. The value of pps_pic_parameter_set_id is in the range of 0 to 63. PPS NAL units share the same value space for pps_pic_parameter_set_id regardless of the nuh_layer_id value. Let ppsLayerId be the value of nuh_layer_id of a particular PPS NAL unit, and let vclLayerId be the value of nuh_layer_id of a particular VCL NAL unit. A particular VCL NAL unit shall not reference a particular PPS NAL unit unless its ppsLayerId is less than or equal to vclLayerId and the layer whose nuh_layer_id is ppsLayerId is contained in at least one OLS that contains a layer with nuh_layer_id that is vclLayerId.

[0480] pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id of the SPS. The value of pps_seq_parameter_set_id is in the range of 0 to 15. The value of pps_seq_parameter_set_id shall be the same in all PPSs referenced by coded pictures in one CLVS.

[0481] mixed_nalu_types_nalu_pic_flag equal to 1 specifies that each picture that references a PPS has two or more VCL NAL units, no VCL NAL units have the same value of nal_unit_type, and the picture is not an IRAP picture. mixed_nalu_types_in_pic_flag equal to 0 specifies that each picture that references a PPS has one or more VCL NAL units, and the VCL NALs of each picture that references a PPS have the same value of nal_unit_type. If no_mixed_nalu_types_in_pic_constraint_flag is equal to 1, the value of mixed_nalu_types_in_pic_flag shall be equal to 0. For each slice with a nal_unit_type value nalUnitTypeA in the range IDR_W_RADL to CRA_NUT, and which also contains one or more slices with another value of nal_unit_type (i.e., the value of mixed_nalu_types_in_pic_flag of picture picA is equal to 1), the following applies: - This slice shall belong to subpicA, whose corresponding subpic_treated_as_pic_flag[i] value is equal to 1. - This slice shall not belong to a subpicture of picA that contains a VCL NAL unit whose nal_unit_type is not equal to nalUnitTypeA. -If nalUnitTypeA is equal to CRA, for all PUs that follow the current picture in CLVS in decoding order and output order, RefPicList[0] and RefPicList[1] of slices in subpicA in those PUs shall not contain any pictures that precede picA in decoding order in the active entry. - Otherwise (i.e., nalUnitTypeA is IDR_W_RADL or IDR_N_LP), for all PUs in the CLVS that follow the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of slices in subpicA in these PUs shall contain any picture that precedes picA in decoding order in the active entry. NOTE 1 - mixed_nalu_types_in_pic_flag equal to 1 indicates that the picture referencing the PPS contains slices with different NAL unit types, e.g., is a coded picture resulting from a sub-picture bitstream merge operation, and must ensure matching of the bitstream structure and also alignment of the parameters of the original bitstreams. An example of such alignment is the following: If the value of sps_idr_rpl_flag is equal to 0 and mixed_nalu_types_in_pic_flag is equal to 1, the picture referencing the PPS cannot have slices with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.

[0482] pic_width_in_luma_samples specifies the width, in units of luma samples, of each picture decoded with reference to the PPS. pic_width_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8,MinCbSizeY), and shall be less than or equal to pic_width_max_in_luma_samples. If res_change_in_clvs_allowed_flag is equal to 0, the value of pic_width_in_luma_samples shall be equal to pic_width_max_in_luma_samples.

[0483] pic_height_in_luma_samples specifies the height, in units of luma samples, of each picture decoded with reference to the PPS. pic_height_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8,MinCbSizeY), and shall be less than or equal to pic_height_max_in_luma_samples. If res_change_in_clvs_allowed_flag is equal to 0, the value of pic_height_in_luma_samples shall be equal to pic_height_max_in_luma_samples. The variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC are derived as follows: PicWidthInCtbsY=Ceil(pic_width_in_luma_samples÷CtbSizeY) (69) PicHeightInCtbsY=Ceil(pic_height_in_luma_samples÷CtbSizeY) (70) PicSizeInCtbsY=PicWidthInCtbsY*PicHeightInCtbsY (71) PicWidthInMinCbsY=pic_width_in_luma_samples / MinCbSizeY (72) PicHeightInMinCbsY=pic_height_in_luma_samples / MinCbSizeY (73) PicSizeInMinCbsY=PicWidthInMinCbsY*PicHeightInMinCbsY (74) PicSizeInSamplesY=pic_width_in_luma_samples*pic_height_in_luma_samples (75) PicWidthInSamplesC=pic_width_in_luma_samples / SubWidthC (76) PicHeightInSamplesC=pic_height_in_luma_samples / SubHeightC (77)

[0484] A pps_conformance_window_flag equal to 1 indicates that the next conformance cropping window offset parameters in the SPS follow next in the PPS. A pps_conformance_window_flag equal to 0 indicates that no conformance cropping window offset parameters are present in the PPS.

[0485] pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset specify the samples of the CLVS picture output from the decoding process with respect to the rectangular area set by the output picture coordinates. If pps_conformance_window_flag is equal to 0, the values ​​of pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset are inferred to be equal to 0. The adaptive cropping window includes luma samples having horizontal picture coordinates from SubWidthC*pps_conf_win_left_offset to pic_width_in_luma_samples-(SubWidthC*pps_conf_win_right_offset+1) and vertical picture coordinates from SubHeightC*pps_conf_win_top_offset to pic_height_in_luma_samples-(SubHeightC*pps_conf_win_bottom_offset+1). The value of SubWidthC*(pps_conf_win_left_offset+pps_conf_win_right_offset) is smaller than pic_width_in_luma_samples, and the value of SubHeightC*(pps_conf_win_top_offset+pps_conf_win_bottom_offset) is smaller than pic_height_in_luma_samples. If ChromaArrayType is not equal to 0, the corresponding specified samples of the two chroma arrays are samples with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample. NOTE 2 – The conformance cropping window offset parameters are applied only at the output side. All internal decoding processes are applied to the uncropped picture size. Let ppsA and ppsB be any two PPSs that refer to the same SPS. It is a bitstream conformance requirement that if ppsA and ppsB have the same values ​​of pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, then ppsA and ppsB shall have the same values ​​of pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset, respectively. It is a bitstream conformance requirement that when pic_width_in_luma_samples is equal to pic_width_max_in_luma_samples and pic_height_in_luma_samples is equal to pic_height_max_in_luma_samples, pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset are equal to sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset, respectively.

[0486] scaling_window_explicit_signalling_flag equal to 1 specifies that the scaling window offset parameter is present in the PPS. scaling_window_explicit_signalling_flag equal to 0 specifies that the scaling window offset parameter is not present in the PPS. If res_change_in_clvs_allowed_flag is equal to 0, the value of scaling_window_explicit_signalling_flag shall be equal to 0.

[0487] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify offsets applied to the picture size for the calculation of the scaling ratio. If not present, the values ​​of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset are inferred to be equal to SubWidthC*conf_win_left_offset, SubWidthC*conf_win_right_offset, SubHeightC*conf_win_top_offset, and SubHeightC*conf_win_bottom_offset, respectively. The value of SubWidthC*(scaling_win_left_offset+scaling_win_right_offset) shall be smaller than pic_width_in_luma_samples, and the value of SubHeightC*(scaling_win_top_offset+scaling_win_bottom_offset) shall be smaller than pic_height_in_luma_samples. The PicOutputWidthL and PicOutputHeightL variables are derived as follows: PicOutputWidthL=pic_width_in_luma_samples- (78) SubWidthC*(scaling_win_right_offset+scaling_win_left_offset) PicOutputHeightL=pic_height_in_luma_samples- (79) SubWidthC*(scaling_win_bottom_offset+scaling_win_top_offset) The PicOutputWidthL and refPicOutputHeightL of the reference picture of the current picture that refers to this PPS are set to PicOutputWidthL and PicOutputHeightL, respectively. The bitstream conformance requirement is that all of the following conditions be satisfied. -PicOutputWidthL*2 shall be equal to or greater than refPicWidthInLumaSamples. -PicOutputHeightL*2 shall be equal to or greater than refPicHeightInLumaSamples. -PicOutputWidthL shall be less than or equal to refPicWidthInLumaSamples*8. -PicOutputHeightL shall be less than or equal to refPicHeightInLumaSamples*8. -PicOutputWidthL*pic_width_max_in_luma_samples shall be equal to or greater than refPicOutputWidthL*(pic_width_in_luma_samples-Max(8,MinCbSizeY). -PicOutputHeightL*pic_height_max_in_luma_samples shall be equal to or greater than refPicOutputHeightL*(pic_height_in_luma_samples-Max(8,MinCbSizeY)).

[0488] output_flag_present_flag equal to 1 indicates the presence of the pic_output_flag syntax element in the slice header that references the PPS. output_flag_present_flag equal to 0 indicates the absence of the pic_output_flag syntax element in the slice header that references the PPS.

[0489] subpic_id_mapping_in_pps_flag equal to 1 specifies that subpicture ID mapping is signaled in the PPS. subpic_id_mapping_in_pps_flag equal to 0 specifies that subpicture ID mapping is not signaled in the PPS. If subpic_id_mapping_explicitly_signalled_flag is equal to 0 and subpic_id_mapping_in_sps_flag is equal to 1, the value of subpic_id_mapping_in_pps_flag shall be equal to 0. Otherwise (subpic_id_mapping_explicitly_signalled_flag is equal to 1 and subpic_id_mapping_in_sps_flag is equal to 0), the value of subpic_id_mapping_in_pps_flag shall be equal to 1.

[0490] pps_num_subpics_minus1 shall be equal to sps_num_subpics_minus1.

[0491] pps_subpic_id_len_minus1 shall be equal to sps_subpic_id_len_minus1.

[0492] pps_subpic_id[i] specifies the subpicture ID of the i-th subpicture. The length of the pps_subpic_id[i] syntax element is pps_subpic_id_len_minus1+1 bits. The variable SubpicIdVal[i] is derived as follows for each value of i in the range 0 to sps_num_subpics_minus1: for(i=0;i<=sps_num_subpics_minus1;i++) if(subpic_id_mapping_explicitly_signalled_flag) SubpicIdVal[i]=subpic_id_mapping_in_pps_flag?pps_subpic_id[i]:sps_subpic_id[i] (80) else SubpicIdVal[i]=i A requirement for bitstream conformance is that both of the following constraints apply: For any two distinct values ​​of i and j in the range -0 to sps_num_subpics_minus1, SubpicIdVal[i] shall not be equal to SubpicIdVal[j]. -If the current picture is not the first picture in the CLVS, for each value of i in the range 0 to sps_num_subpics_minus1, if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous picture in decoding order in the same layer, the nal_unit_type of all coded slice NAL units of subpictures in the current picture with subpicture index i shall be equal to a specific value in the range IDR_W_RADL to CRA_NUT.

[0493] no_pic_partition_flag equal to 1 specifies that picture partitioning is not applied to each picture that references a PPS. no_pic_partition_flag equal to 0 specifies that each picture that references a PPS may be partitioned into two or more tiles or slices. It is a bitstream conformance requirement that the value of no_pic_partition_flag shall be the same for all PPSs referenced by coded pictures within one CLVS. If the value of sps_num_subpics_minus1+1 is greater than 1, it is a bitstream conformance requirement that the value of no_pic_partition_flag is not 1.

[0494] pps_log2_ctu_size_minus5+5 specifies the block size of the luma coding tree block of each CTU. pps_log2_ctu_size_minus5 shall be equal to sps_log2_ctu_size_minus5.

[0495] num_exp_tile_columns_minus1+1 explicitly specifies the number of tile column widths provided. The value of num_exp_tile_columns_minus1 shall be in the range from 0 to PicWidthInCtbsY-1. If no_pic_partition_flag is equal to 1, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.

[0496] num_exp_tile_rows_minus1 + 1 explicitly specifies the number of tile row heights provided. The value of num_exp_tile_rows_minus1 shall be in the range from 0 to PicHeightInCtbsY-1. If no_pic_partition_flag is equal to 1, the value of num_tile_rows_minus1 is inferred to be equal to 0.

[0497] tile_column_width_minus1[i]+1 specifies the width of the i-th tile column in CTB units of the i-th tile column, in the range 0 to num_exp_tile_columns_minus1-1. tile_column_width_minus1[num_exp_tile_columns_minus1] is used to derive the width of tile columns with indices greater than or equal to num_exp_tile_columns_minus1 as specified in Section 6.5.1. The value of tile_column_width_minus1[i] shall be in the range 0 to PicWidthInCtbsY-1. If not present, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY-1.

[0498] tile_row_height_minus1[i]+1 specifies the height of the ith tile column, in CTB units of the ith tile row, in the range 0 to num_exp_tile_rows_minus1-1. tile_row_height_minus1[num_exp_tile_rows_minus1] is used to derive the height of tile rows with indices greater than or equal to num_exp_tile_rows_minus1 as specified in Section 6.5.1. The value of tile_row_height_minus1[i] shall be in the range 0 to PicHeightInCtbsY-1. If not present, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY-1.

[0499] rect_slice_flag equal to 0 specifies that the tiles in each slice are arranged in raster scan order and slice information is not signaled in the PPS. rect_slice_flag equal to 1 specifies that the tiles in each slice cover a rectangular area of ​​the picture and slice information is signaled in the PPS. If not present, rect_slice_flag is inferred to be equal to 1. When subpic_info_present_flag is equal to 1, the value of rect_slice_flag shall be equal to 1.

[0500] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture may consist of one or more rectangular slices. If single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. If not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.

[0501] num_slices_in_pic_minus1+1 specifies the number of rectangular slices in each picture that reference the PPS. The value of num_slices_in_pic_minus1 shall be in the range of 0 to MaxSlicesPerpicture-1, inclusive. If no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0.

[0502] A tile_idx_delta_present_flag equal to 0 specifies that no tile_idx_delta values ​​are present in the PPS, and all rectangular slices in the picture that references the PPS are presented in raster order according to the process defined in Section 6.5.1. A tile_idx_delta_present_flag equal to 1 specifies that tile_idx_delta values ​​may be present in the PPS, and all rectangular slices in the picture that references the PPS are presented in the order indicated by the tile_idx_delta values. If not present, the value of tile_idx_delta_present_flag is inferred to be 0.

[0503] slice_width_in_tiles_minus1[i]+1 specifies the width of the i-th rectangular slice in tile columns. The value of slice_width_in_tiles_minus1[i] must be in the range from 0 to NumTileColumns-1. If slice_width_in_tiles_minus1[i] is not present, the following applies: - If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0. - Otherwise, infer the value of slice_width_in_tiles_minus1[i] as specified in Section 6.5.1.

[0504] slice_height_in_tiles_minus1[i]+1 specifies the height of the i-th rectangular slice in tile rows. The value of slice_height_in_tiles_minus1[i] must be in the range from 0 to NumTileRows-1. If slice_height_in_tiles_minus1[i] is not present, the following applies: - If NumTileRows is equal to 1, or tile_idx_delta_present_flag is equal to 0 and tileIdx%NumTileColumns is greater than 0, the value of slice_height_in_tiles_minus1[i] is inferred to be equal to 0. - Otherwise (NumTileRows is not equal to 1 and tile_idx_delta_present_flag is equal to 1 or tileIdx% NumTileColumns is equal to 0), if tile_idx_delta_present_flag is equal to 1 or tileIdx% NumTileColumns is equal to 0, the value of slice_height_in_tiles_minus1[i] is inferred to be equal to slice_height_in_tiles_minus1[i-1].

[0505] num_exp_slices_in_tile[i] specifies the number of slice heights explicitly provided for the current tile, including two or more rectangular slices. The value of num_exp_slices_in_tile[i] shall be in the range of 0 to RowHeight[tileY]-1, where tileY is the tile row index containing the i-th slice. If not present, the value of num_exp_slices_in_tile[i] is inferred to be equal to 0. If num_exp_slices_in_tile[i] is equal to 0, the value of the variable NumSlicesInTile[i] is derived to be equal to 1.

[0506] exp_slice_height_in_CTUs_minus1[j]+1 specifies the height of the jth rectangular slice in the current tile, in CTU rows. The value of exp_slice_height_in_CTUs_minus1[j] shall be in the range of 0 to RowHeight[tileY]-1, where tileY is the tile row index of the current tile. When num_exp_slices_in_tile[i] is greater than 0, the variables NumSliceSInTile[i] and SliceHeightInCtusMinus1[i+k] for k in the range 0 to NumSliceSinTile[i]-1 are derived as follows:

[0507] remainingHeightInCtbsY=RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns] numExpSliceInTile=num_exp_slices_in_tile[i] for(j=0;j <numExpSliceInTile-1;j++){ SliceHeightInCtusMinus1[i++]=exp_slice_height_in_ctu_minus1[j] remainingHeightInCtbsY-=SliceHeightInCtusMinus1[j] } uniformSliceHeightMinus1=SliceHeightInCtusMinus1[i-1] (81) while(remainingHeightInCtbsY>=(uniformSliceHeightMinus1+1)){ SliceHeightInCtusMinus1[i++]=uniformSliceHeightMinus1 remainingHeightInCtbsY-=(uniformSliceHeightMinus1+1) j++ } if(remainingHeightInCtbsY>0){ SliceHeightInCtusMinus1[i++]=remainingHeightInCtbsY j++ } NumSlicesInTile[i]=j

[0508] tile_idx_delta[i] specifies the difference between the tile index of the first tile in the i-th rectangular slice and the tile index of the first tile in the (i+1)-th rectangular slice. The value of tile_idx_delta[i] shall be in the range of -NumTilesInPic+1 to NumTilesInPic-1. If not present, the value of tile_idx_delta[i] is inferred to be equal to 0. If present, the value of tile_idx_delta[i] is inferred to be equal to 0.

[0509] loop_filter_across_tiles_enabled_flag equal to 1 specifies that in-loop filtering operations can occur across tile boundaries in pictures referencing the PPS. loop_filter_across_tiles_enabled_flag equal to 0 specifies that in-loop filtering operations cannot occur across tile boundaries in pictures referencing the PPS. In-loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. If not present, the value of loop_filter_across_tiles_enabled_flag is inferred to be equal to 1.

[0510] loop_filter_across_slices_enabled_flag equal to 1 specifies that in-loop filtering operations can be performed across slice boundaries in pictures referencing the PPS. loop_filter_across_slice_enabled_flag equal to 0 specifies that in-loop filtering operations are not performed across slice boundaries in pictures referencing the PPS. In-loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. If not present, the value of loop_filter_across_slices_enabled_flag is inferred to be equal to 0.

[0511] cabac_init_present_flag equal to 1 specifies that cabac_init_flag is present in the slice header that references the PPS. cabac_init_present_flag equal to 0 specifies that cabac_init_flag is not present in the slice header that references the PPS.

[0512] num_ref_idx_active_minus1[i] equal to 0 specifies the inferred value of the variable NumRefIdxActive[0] for P or B slices by num_ref_idx_active_override_flag=0 when i is equal to 0, and num_ref_idx_active_override_flag equal to 0 specifies the inferred value of the variable NumRefIdxActive[1] for B slices by num_ref_idx_active_override_flag=0 when i is equal to 1. The value of num_ref_idx_default_active_minus1[i] shall be in the range of 0 to 14.

[0513] rpl1_idx_present_flag equal to 0 specifies that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] are not present in the PH syntax structure or slice header of a picture that references the PPS. rpl1_idx_present_flag equal to 1 specifies that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] may be present in the PH syntax structure or slice header of a picture that references the PPS.

[0514] SliceQp per slice referencing init_qp_minus26+26PPS Y Specifies the initial value of SliceQp Y The initial value of init_qp_minus26 shall be modified at the picture level when a non-zero value of ph_qp_delta is decoded, or at the slice level when a non-zero value of slice_qp_delta is decoded. The value of init_qp_minus26 shall be in the range of -(26+QpBdOffset) to +37.

[0515] cu_qp_delta_enabled_flag equal to 1 specifies that the ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice syntax elements may be present in the PH that references the PPS, and cu_qp_delta_abs may be present in the transform unit syntax. cu_qp_delta_flag equal to 0 specifies that the ph_cu_qp_subdiv_intra_slice and ph_cu_qp_subdiv_inter_slice syntax elements are not present in the PH that references the PPS, and cu_qp_delta_abs is not present in the transform unit syntax.

[0516] pps_chroma_tool_offsets_present_flag equal to 1 specifies that chroma tool offset related syntax elements are present in the PPS RBSP syntax structure. pps_chroma_tool_offsets_present_flag equal to 0 specifies that chroma tool offset related syntax elements are present in the PPS RBSP syntax structure. If ChromaArrayType is equal to 0, the value of pps_chroma_tool_offsets_present_flag is equal to 0.

[0517] pps_cb_qp_offset, pps_cr_qp_offset are Qp' Cb , Qp' Cr The luminance quantization parameter Qp' used to derive Y pps_cb_qp_offset and pps_cr_qp_offset shall be in the range of -12 to +12. If ChromaArrayType is equal to 0, pps_cb_qp_offset and pps_cr_qp_offset shall not be used in the decoding process and the decoder shall ignore their values. If not present, the values ​​of pps_cb_qp_offset and pps_cr_qp_offset shall be inferred to be equal to 0.

[0518] pps_joint_cbcr_qp_offset_present_flag equal to 1 specifies that pps_joint_cbcr_qp_offset_value and joint_cbcr_qp_offset_list[i] are included in the PPS RBSP syntax structure. pps_joint_cbcr_qp_offset_present_flag equal to 0 specifies that pps_joint_cbcr_qp_offset_value and joint_cbcr_qp_offset_list[i] are not included in the PPS RBSP syntax structure. If ChromaArrayType is 0 or sps_joint_cbcr_enabled_flag is equal to 0, the value of pps_joint_cbcr_qp_offset_present_flag shall be equal to 0. If not present, the value of pps_joint_cbcr_qp_offset_present_flag is inferred.

[0519] pps_joint_cbcr_qp_offset_value is Qp' CbCr The luminance quantization parameter Qp' used to derive Y The value of pps_joint_cbcr_qp_offset_value shall be in the range of -12 to 12. If ChromaArrayType is equal to 0 or sps_joint_cbcr_enabled_flag is equal to 0, pps_joint_cbcr_qp_offset_value shall not be used in the decoding process and the decoding module shall ignore its value. If pps_joint_cbcr_qp_offset_present_flag is equal to 0, pps_joint_cbcr_qp_offset_value is not present and is inferred to be equal to 0.

[0520] If pps_slice_chroma_qp_offsets_present_flag is equal to 1, it specifies that the slice_cb_qp_offset and slice_cr_qp_offset syntax elements are present in the associated slice header. If pps_slice_slice_chroma_qp_offsets_present_flag is equal to 0, it specifies that the slice_cb_qp_offset and slice_cr_qp_offset syntax elements are not present in the associated slice header. If not present, the value of pps_slice_chroma_qp_offsets_present_flag is inferred.

[0521] pps_cu_chroma_qp_offset_list_enabled_flag equal to 1 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are present in the PH that references the PPS, and cu_chroma_qp_offset_flag may also be present in the transform unit syntax and palette coding syntax. pps_cu_chroma_qp_list_enabled_flag equal to 0 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are not present in the PH that references the PPS, and cu_chroma_qp_offset_flag is not present in the transform unit syntax and palette coding syntax. If not present, the value of pps_cu_chroma_qp_offset_list_enabled_flag is inferred to be equal to 0.

[0522] chroma_qp_offset_list_len_minus1+1 specifies the number of cb_qp_offset_list[i], cr_qp_offset_list[i] and joint_cbcr_qp_offset_list[i] syntax elements included in the PPS RBSP syntax structure. The value of chroma_qp_offset_list_len_minus1 should be in the range of 0 to 5.

[0523] cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] are Qp' Cb、 Qp' Cr、 Qp' CbCr Specifies the offset used in deriving cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i]. The values ​​of cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] shall be in the range of -12 to +12. If pps_joint_cbcr_qp_offset_present_flag is equal to 0, joint_cbcr_qp_offset_list[i] does not exist and is inferred to be equal to 0.

[0524] pps_weighted_pred_flag equal to 0 specifies that weighted prediction is not applied to P slices referencing the PPS. pps_weighted_pred_flag equal to 1 specifies that weighted prediction is applied to P slices referencing the PPS. If sps_weighted_pred_flag is equal to 0, the value of pps_weighted_pred_flag shall be equal to 0.

[0525] pps_weighted_bipred_flag equal to 0 specifies that explicit weighted prediction is not applied to B slices referencing a PPS. pps_weighted_bipred_flag equal to 1 specifies that explicit weighted prediction is applied to B slices referencing a PPS. If sps_weighted_bipred_flag is equal to 0, the value of pps_weighted_bipred_flag shall be equal to 0.

[0526] deblocking_filter_control_present_flag equal to 1 specifies the presence of a deblocking filter control syntax element in the PPS. deblocking_filter_control_present_flag equal to 0 specifies the absence of a deblocking filter control syntax element in the PPS.

[0527] deblocking_filter_override_enabled_flag equal to 1 specifies the presence of ph_deblocking_filter_override_flag in the PH referencing the PPS and specifies the presence of slice_deblocking_filter_override_flag in the slice header referencing the PPS. deblocking_filter_override_enabled_flag equal to 0 specifies the absence of ph_deblocking_filter_override_flag in the PH referencing the PPS and specifies the absence of slice_deblocking_filter_override_flag in the slice header referencing the PPS. If not present, the value of deblocking_filter_override_enabled_flag equal to 0 is inferred.

[0528] pps_deblocking_filter_disabled_flag equal to 1 specifies that the deblocking filter operation is not applied to slices that refer to PPSs for which slice_deblocking_filter_disabled_flag is not present. pps_deblocking_filter_disabled_flag equal to 0 specifies that the deblocking filter operation is applied to slices that refer to PPSs for which slice_deblocking_filter_disabled_flag is not present. If not present, the value of pps_deblocking_filter_disabled_flag is inferred to be equal to 0.

[0529] pps_beta_offset_div2 and pps_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) that are applied to the luma component of slices that reference the PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slice that references the PPS. The values ​​of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -12 to 12. If not present, the values ​​of pps_beta_offset_div2 and pps_tc_offset_div2 are both inferred to be equal to 0.

[0530] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) that are applied to the Cb component of a slice that references the PPS, unless the default deblocking parameter offsets are overridden by a deblocking parameter offset present in the picture header or slice header of the slice that references the PPS. The values ​​of pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 shall both be in the range of -12 to +12. If not present, the values ​​of pps_cb_offset_div2 and pps_cb_offset_div2 are inferred to be equal to 0.

[0531] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) that are applied to the Cr component of a slice that references the PPS, unless the default deblocking parameter offsets are overridden by a deblocking parameter offset present in the picture header or slice header of the slice that references the PPS. The values ​​of pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 shall both be in the range of -12 to +12. If not present, the values ​​of pps_cr_offset_div2 and pps_cr_offset_div2 are inferred to be equal to 0.

[0532] rpl_info_in_ph_flag equal to 1 specifies that reference picture list information is included in PH syntax structures and is not included in slice headers that reference PPSs that do not contain PH syntax structures. rpl_info_in_ph_flag equal to 0 specifies that reference picture list information is not included in PH syntax structures and may be present in slice headers that reference PPSs that do not contain PH syntax structures.

[0533] dbf_info_in_ph_flag equal to 1 specifies that deblocking filter information is present in the PH syntax structure and is not present in slice headers that reference PPSs that do not contain a PH syntax structure. dbf_info_in_ph_flag equal to 0 specifies that deblocking filter information is not present in the PH syntax structure and may be present in slice headers that reference PPSs that do not contain a PH syntax structure. If not present, the value of dbf_info_in_ph_flag is inferred to be equal to 0.

[0534] sao_info_in_ph_flag equal to 1 specifies that SAO filter information is present in the PH syntax structure and is not present in slice headers that reference PPSs that do not contain a PH syntax structure. sao_info_in_ph_flag equal to 0 specifies that SAO filter information is not present in the PH syntax structure and may be present in slice headers that reference PPSs that do not contain a PH syntax structure.

[0535] alf_info_in_ph_flag equal to 1 specifies that ALF information is present in the PH syntax structure and is not present in slice headers that reference PPSs that do not contain a PH syntax structure. alf_info_in_ph_flag equal to 0 specifies that ALF information is not present in the PH syntax structure and may be present in slice headers that reference PPSs that do not contain a PH syntax structure.

[0536] wp_info_in_ph_flag equal to 1 specifies that weighted prediction information may be present in the PH syntax structure and may not be present in slice headers that reference PPSs that do not contain a PH syntax structure. wp_info_in_ph_flag equal to 0 specifies that weighted prediction information is not present in the PH syntax structure and may be present in slice headers that reference PPSs that do not contain a PH syntax structure. If not present, the value of wp_info_in_ph_flag is inferred to be equal to 0.

[0537] qp_delta_info_in_ph_flag equal to 1 specifies that QP delta information is present in the PH syntax structure and is not present in slice headers referencing PPSs that do not contain a PH syntax structure. qp_delta_info_in_ph_flag equal to 0 specifies that QP delta information is not present in the PH syntax structure and may be present in slice headers referencing PPSs that do not contain a PH syntax structure.

[0538] pps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction. pps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is applied. If the value of CtbSizeY / MinCbSizeY+1 is greater than pic_width_in_luma_samples / MinCbSizeY-1, the value of pps_ref_wraparound_enabled_flag shall be equal to 0. If sps_ref_wraparound_enabled_flag is equal to 0, the value of pps_ref_wraparound_enabled_flag shall be equal to 0.

[0539] pps_ref_wraparound_offset+(CtbSizeY / MinCbSizeY)+2 specifies the offset, in units of MinCbSizeY luma samples, used to calculate the horizontal wraparound position. The value of pps_ref_wraparound_offset shall be in the range 0 to (pic_width_in_luma_samples / MinCbSizeY)-(CtbSizeY / MinCbSizeY)-2. The variable PpsRefWraparoundOffset is set equal to pps_ref_wraparound_offset+(CtbSizeY / MinCbSizeY)+2.

[0540] picture_header_extension_present_flag equal to 0 specifies that the PH extension syntax element is not present in PHs that reference the PPS. picture_header_extension_present_flag equal to 1 specifies that the PH extension syntax element is present in the PH that references the PPS. picture_header_extension_present_flag shall be equal to 0 in bitstreams conforming to this version of this specification.

[0541] slice_header_extension_present_flag equal to 0 specifies that the slice header extension syntax element is not present in the slice header of the coded picture that references the PPS. slice_header_extension_flag equal to 1 specifies that the slice header extension syntax element is present in the slice header of the coded picture that references the PPS. slice_header_extension_present_flag shall be equal to 0 in bitstreams conforming to this version of this specification.

[0542] pps_extension_flag equal to 0 specifies that the PPS RBSP syntax structure does not include the pps_extension_data_flag syntax element. pps_extension_flag equal to 1 specifies that the PPS RBSP syntax structure includes the pps_extension_data_flag syntax element.

[0543] pps_extension_data_flag can have any value. Its presence and value do not affect a decoder's conformance to the features specified in this specification version. Decoders conforming to this specification version must ignore all pps_extension_data_flag syntax elements.

[0544] 7.4.3.5 Adaptation Parameter Set Semantics

[0545] Each APS RBSP shall be available to the decoding process before it is referenced, or shall be contained within at least one AU with a TemporalId less than or equal to the TemporalId of the coded slice NAL unit that references it, or shall be provided through external means. All APS NAL units with a particular value of adaptation_parameter_set_id and with a particular value of aps_params_type within a PU shall have the same content, regardless of whether they are prefix or suffix APS NAL units.

[0546] The adaptation_parameter_set_id provides an identifier for the APS to which other syntax elements refer. If aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id shall be in the range 0 to 7. If aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 3. Let apsLayerId be the value of nuh_layer_id of a particular APS NAL unit, and vclLayerId be the value of nuh_layer_id of a particular VCL NAL unit. A particular VCL NAL unit shall not reference a particular APS NAL unit unless its apsLayerId is less than or equal to vclLayerId and the layer whose nuh_layer_id is apsLayerId is contained in at least one OLS that contains a layer with nuh_layer_id that is vclLayerId.

[0547] aps_params_type specifies the type of APS parameters implemented in the APS, as shown in Table 6.

[0548] [Table 35]

[0549] All APS NAL units with a particular value of aps_params_type share the same value space for adaptation_parameter_set_id, regardless of the value of nuh_layer_id. APS NAL units with different values ​​of aps_params_type use distinct value spaces for adaptation_parameter_set_id.

[0550] NOTE 1 - APS NAL units (with specific values ​​of adaptation_parameter_set_id and specific values ​​of aps_params_type) can be shared between pictures, and different slices within a picture can reference different ALF APSs. NOTE 2 - The suffix APS NAL unit associated with a particular VCL NAL unit (which precedes the suffix APS NAL unit in decoding order) is not used by the particular VCL NAL unit, but is used by the VCL NAL unit that follows the suffix APS NAL unit in decoding order.

[0551] aps_extension_flag equal to 0 specifies that the APS RBSP syntax structure does not include the aps_extension_data_flag syntax element. aps_extension_flag equal to 1 specifies that the APS RBSP syntax structure does include the aps_extension_data_flag syntax element.

[0552] aps_extension_data_flag can have any value. Its presence and value do not affect a decoder's conformance to the features specified in this specification version. Decoders conforming to this specification version must ignore all aps_extension_data_flag syntax elements.

[0553] 7.4.3.6 Picture Header RBSP Semantics

[0554] The PH RBSP contains the PH syntax structure, namely picture_header_structure().

[0555] 7.4.3.7 Picture Header Structure Semantics

[0556] A PH syntax structure contains information that is common to all slices of the coded picture associated with the PH syntax structure.

[0557] gdr_or_irap_pic_flag equal to 1 specifies that the current picture is a GDR or IRAP picture. gdr_or_irap_pic_flag equal to 0 specifies that the current picture may or may not be a GDR or IRAP picture.

[0558] gdr_pic_flag equal to 1 specifies that the picture associated with the PH is a GDR picture. gdr_pic_flag equal to 0 specifies that the picture associated with the PH is not a GDR picture. If not present, the value of gdr_pic_flag is inferred to be equal to 0. If gdr_enabled_flag is equal to 0, the value of gdr_pic_flag shall be equal to 0.

[0559] ph_inter_slice_allowed_flag equal to 0 specifies that all coded slices of the picture have slice_type 2. ph_inter_slice_allowed_flag equal to 1 specifies that a picture with slice_type equal to 0 or 1 may have one or more coded slices.

[0560] ph_intra_slice_allowed_flag equal to 0 specifies that all coded slices of the picture have slice_type equal to 0 or 1. ph_intra_slice_allowed_flag equal to 1 specifies that the picture may have one or more coded slices with slice_type equal to 2. If not present, a value of ph_intra_slice_allowed_flag equal to 1 is inferred. NOTE 1 - For bitstreams intended to perform sub-picture based bitstream merging without modifying the PH NAL units, the encoder is expected to set the values ​​of both ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag equal to 1.

[0561] non_reference_picture_flag equal to 1 specifies that the picture associated with the PH cannot be 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.

[0562] ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id of the PPS in use. The value of ph_pic_parameter_set_id is in the range of 0 to 63. It is a bitstream conformance requirement that the value of TemporalId of a PH shall be greater than or equal to the value of TemporalId of a PPS whose pps_pic_parameter_set_id is ph_pic_parameter_set_id.

[0563] ph_pic_order_cnt_lsb specifies the picture order count modulo MaxPicOrderCntLsb of the current picture. The length of the ph_pic_order_cnt_lsb syntax element is log2_max_pic_order_cnt_lsb_minus4+4 bits. The value of ph_pic_order_cnt_lsb shall be in the range of 0 to MaxPicOrderCntLsb-1.

[0564] The no_output_of_prior_pics_flag affects the output of the previously decoded picture in the DPB after decoding a CLVSS picture that is not the first picture in the bitstream.

[0565] recovery_poc_cnt specifies the recovery point in output order of the decoded picture. If the current picture is a GDR picture associated with the PH, and there is a picture following the current GDR picture in decoding order in a CLVS with a PicOrderCntVal equal to the PicOrderCntVal of the current GDR picture plus the value of recovery_poc_cnt, then this picture picA is called the recovery point picture. Otherwise, the first picture in output order with a PicOrderCntVal greater than the PicOrderCntVal of the current picture plus the value of recovery_poc_cnt is called the recovery point picture. The recovery point picture shall not precede the current GDR picture in decoding order. The value of recovery_poc_cnt shall be in the range of 0 to MaxPicOrderCntLsb-1. If the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows: RpPicOrderCntVal=PicOrderCntVal+recovery_poc_cnt (82) NOTE 2 - If gdr_enabled_flag is equal to 1 and the PicOrderCntVal of the current picture is greater than or equal to the RpPicOrderCntVal of the associated GDR picture, then the current and subsequent decoded pictures in output order exactly match the corresponding pictures produced by starting the decoding process from the previous IRAP picture (if any) that precedes the associated GDR picture in decoding order.

[0566] ph_extra_bit[i] may be equal to 1 or 0. Decoders conforming to this specification version must ignore the value of ph_extra_bit[i]. Its value does not affect the decoder's conformance to the features specified in this specification version.

[0567] ph_poc_msb_present_flag equal to 1 specifies that the syntax element poc_msb_val is present in PH. ph_poc_msb_present_flag equal to 0 specifies that the syntax element ph_msb_val is not present in PH. If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0 and there is a picture in the current AU of the current layer's reference layer, the value of ph_poc_msb_present_flag shall be equal to 0.

[0568] poc_msb_val specifies the POC MSB value of the current picture. The length of the syntax element poc_msb_val is poc_msb_len_minus1+1 bits.

[0569] ph_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled for all slices associated with the PH and may be applied to the Y, Cb, or Cr color components in the slice. ph_alf_enabled_flag equal to 0 specifies that the adaptive loop filter may be disabled for one or more or all slices associated with the PH. If not present, ph_alf_enabled_flag is inferred to be equal to 0.

[0570] ph_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slices associated with the PH.

[0571] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referenced by the luminance component of the slice associated with PH. The value of alf_luma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i]. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with the PH.

[0572] ph_alf_chroma_idc equal to 0 indicates that no adaptive loop filter is applied to the Cb and Cr color components. ph_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. ph_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. ph_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to the Cb and chrominance components. If ph_alf_chroma_idc is not present, it is inferred to be equal to 0.

[0573] ph_alf_aps_id_chroma Specifies the adaptation_parameter_set_id of the ALF APS referenced by the chroma component of the slice associated with the PH. The value of alf_chroma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma[i]. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma[i] shall be less than or equal to the TemporalId of the picture associated with the PH.

[0574] ph_cc_alf_cb_enabled_flag equal to 1 specifies that the cross-component filter for the Cb color component is enabled for all slices associated with the PH and may be applied to the Cb color component in the slice. ph_cc_alf_cb_enabled_flag equal to 0 specifies that the cross-component filter for the Cb color components may be disabled for one or more or all slices associated with the PH. If not present, ph_cc_alf_cb_enabled_flag is inferred to be equal to 0.

[0575] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the slice associated with the PH. The value of alf_cc_cb_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id.

[0576] ph_cc_alf_cr_enabled_flag equal to 1 specifies that the cross-component filter for the Cb color component is enabled for all slices associated with the PH and may be applied to the Cr color component in the slice. ph_cc_alf_cr_enabled_flag equal to 0 specifies that the cross-component filter for the Cr color component may be disabled for one or more or all slices associated with the PH. If not present, ph_cc_alf_cr_enabled_flag is inferred to be equal to 0.

[0577] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the slice associated with the PH. The value of alf_cc_cr_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id.

[0578] ph_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is enabled for all slices associated with the PH. ph_lmcs_enabled_flag equal to 0 specifies that luma mapping with chroma scaling is disabled for one or more or all slices associated with the PH. If not present, the value of ph_lmcs_enabled_flag is inferred to be equal to 0.

[0579] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referenced by the slice associated with the PH. The TemporalId of an APS NAL unit whose aps_params_type is equal to LMCS_APS and whose adaptation_parameter_set_id is ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with the PH.

[0580] ph_chroma_residual_scale_flag equal to 1 specifies that chroma residual scaling is enabled for all slices associated with the PH. ph_chroma_residual_scale_flag equal to 0 specifies that chroma residual scaling is disabled for one or more or all slices associated with the PH. If ph_chroma_residual_scale_flag is not present, it is inferred to be equal to 0.

[0581] ph_scaling_list_present_flag equal to 1 specifies that the scaling list data used for the slice associated with the PH is derived based on the scaling list data contained in the reference scaling list APS. ph_scaling_list_present_flag equal to 0 specifies that the scaling list used for the slice associated with the PH is set to 16. If not present, the value of ph_scaling_list_present_flag is inferred to be 0.

[0582] ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS. The TemporalId of an APS NAL unit whose aps_params_type is equal to SCALING_APS and whose adaptation_parameter_set_id is ph_scaling_list_aps_id shall be less than or equal to the TemporalId of the picture associated with the PH.

[0583] ph_virtual_boundaries_present_flag equal to 1 specifies that virtual boundary information is signaled in PH. ph_virtual_boundaries_present_flag equal to 0 specifies that virtual boundary information is not signaled in PH. If there are one or more virtual boundaries signaled in PH, in-loop filtering operations across virtual boundaries are disabled for the picture. In-loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. If not present, the value of ph_virtual_boundaries_present_flag is inferred to be 1. If subpic_info_present_flag is equal to 1, it is a bitstream conformance requirement that the value of ph_virtual_boundaries_present_flag shall be equal to 0. The variable VirtualBoundariesPresentFlag is derived as follows:

[0584] VirtualBoundariesPresentFlag=0 if(sps_virtual_boundaries_enabled_flag) VirtualBoundariesPresentFlag=sps_virtual_boundaries_present_flag|| ph_virtual_boundaries_present_flag (83)

[0585] ph_num_ver_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_x[i] syntax elements present in PH. If ph_num_ver_virtual_boundaries is not present, it is inferred to be equal to 0. The variable NumVerVirtualBoundaries is derived as follows:

[0586] NumVerVirtualBoundaries=0 if(sps_virtual_boundaries_enabled_flag) NumVerVirtualBoundaries=sps_virtual_boundaries_present_flag? sps_num_ver_virtual_boundaries:ph_num_ver_virtual_boundaries (84)

[0587] ph_virtual_boundaries_pos_x[i] Specifies the position of the i-th vertical virtual boundary in units of luma samples divided by 8. The value of ph_virtual_boundaries_pos_x[i] shall be in the range of 1 to Ceil(pic_width_in_luma_samples÷8)-1. Derive a list VirtualBoundariesPosX[i], for i from 0 to NumVerVirtualBoundaries-1, specifying the positions of the vertical virtual boundaries in units of luma samples as follows: for(i=0;i <NumVerVirtualBoundaries;i++) VirtualBoundariesPosX[i]=(sps_virtual_boundaries_present_flag? sps_virtual_boundaries_pos_x[i]:ph_virtual_boundaries_pos_x[i])*8 (85) The distance between any two vertical virtual boundaries shall be at least CtbSizeY luma samples.

[0588] ph_num_hor_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_y[i] syntax elements present in PH. If ph_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0. The parameter NumHorVirtualBoundaries is derived as follows:

[0589] NumHorVirtualBoundaries=0 if(sps_virtual_boundaries_enabled_flag) NumHorVirtualBoundaries=sps_virtual_boundaries_present_flag? sps_num_hor_virtual_boundaries:ph_num_hor_virtual_boundaries (86)

[0590] If sps_virtual_boundaries_enabled_flag is equal to 1 and ph_virtual_boundaries_present_flag is equal to 1, the sum of ph_num_ver_virtual_boundaries and ph_num_hor_virtual_boundaries shall be greater than 0.

[0591] ph_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary in units of luma samples divided by 8. The value of ph_virtual_boundaries_pos_y[i] shall be in the range of 1 to Ceil(pic_height_in_luma_samples÷8)-1. Derive a list VirtualBoundariesPosY[i], for i from 0 to NumHorVirtualBoundaries-1, specifying the positions of the horizontal virtual boundaries in units of luma samples as follows:

[0592] for(i=0;i <NumHorVirtualBoundaries;i++) VirtualBoundariesPosY[i]=(sps_virtual_boundaries_present_flag? sps_virtual_boundaries_pos_y[i]:ph_virtual_boundaries_pos_y[i])*8 (87) The distance between any two horizontal virtual boundaries shall be at least CtbSizeY luma samples.

[0593] pic_output_flag affects the output and discarding process of decoded pictures. If pic_output_flag is not present, it is inferred to be equal to 1.

[0594] partition_constraints_override_flag equal to 1 specifies that the partition constraint parameters are present in PH. partition_constraints_override_flag equal to 0 specifies that the partition constraint parameters are not present in PH. If not present, the value of partition_constraints_override_flag is inferred to be equal to 0.

[0595] ph_log2_diff_min_qt_min_cb_intra_slice_luma specifies the difference between the base 2 logarithm of the minimum size of luma samples of luma leaf blocks resulting from the quadtree decomposition of a CTU and the base 2 logarithm of the minimum coding block size of luma samples of luma CUs in slices with slice_type=2(I) associated with PH. The value of ph_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY-MinCbLog2SizeY. If not present, the value of ph_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_luma.

[0596] ph_max_mtt_hierarchy_depth_intra_slice_luma specifies the maximum hierarchical depth of a coding unit resulting from a quadtree multi-type tree partitioning in slices where the slice_type associated with PH is 2(I). The value of ph_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2*(CtbLog2SizeY-MinCbLog2SizeY). If not present, the value of ph_max_mtt_hierarchy_depth_intra_slice_luma is inferred to be equal to sps_max_mtt_hierarchy_depth__intra_slice_luma.

[0597] ph_log2_diff_max_bt_min_qt_intra_slice_luma specifies the difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be divided using binary division and the minimum size (width or height) of luma samples of a luma leaf block that results from quadtree division of a CTU for a slice with slice_type equal to 2(I) associated with PH. The value of ph_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY. If not present, the value of ph_log2_diff_max_bt_min_qt_intra_slice_luma is inferred to be equal to sps_log2_diff_max_bt_min_qt_intra_slice_luma.

[0598] ph_log2_diff_max_tt_min_qt_intra_slice_luma specifies the difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be divided using ternary division and the minimum size (width or height) of luma samples of a luma leaf block that results from a quadtree division of a CTU for a slice with slice_type equal to 2(I) associated with PH. The value of ph_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY. If not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_luma.

[0599] ph_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the difference between the base 2 logarithm of the minimum size of luma samples of a chroma CTU with treeType equal to DUAL_TREE_CHROMA by quadtree decomposition and the base 2 logarithm of the minimum coding block size of luma samples of a chroma CU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) associated with PH. The value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY. If not present, the value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to sps_log2_diff_min_qt_min_cb_chroma.

[0600] ph_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchical depth of a chroma coding unit resulting from a multi-type tree partitioning of a chroma quadtree with a treeType of DUAL_TREE_CHROMA where the slice_type associated with PH is 2(I). The value of ph_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2*(CtbLog2SizeY-MinCbLog2SizeY). If not present, the value of ph_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to sps_max_mtt_hierarchy_depth_intra_slice_chroma.

[0601] ph_log2_diff_max_bt_min_qt_intra_slice_chroma specifies the difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a chroma coding block that can be divided using binary division and the minimum size (width or height) of luma samples of a chroma coding block that results from quadtree division of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice where the slice_type associated with PH is 2(I). The value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC. If not present, the value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_bt_min_qt_intra_slice_chroma.

[0602] ph_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a chroma coding block that can be divided using ternary division and the minimum size (width or height) of luma samples of a chroma coding block that results from quadtree division of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice where the slice_type associated with PH is 2(I). The value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC. If not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_chroma.

[0603] ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of coding units in an intra slice that conveys cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of ph_cu_qp_delta_subdiv_intra_slice shall be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma). If not present, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.

[0604] ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of a coding unit in an intra slice that conveys cu_chroma_qp_offset_flag. The value of ph_cu_qp_offset_subdiv_intra_slice shall be within the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma). If not present, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.

[0605] ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the base 2 logarithm of the minimum size of luma samples of a luma leaf block resulting from the quadtree decomposition of a CTU and the base 2 logarithm of the minimum luma coding block size of luma samples for a luma CU in a slice whose slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_log2_diff_min_qt_min_cb_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY. If not present, the value of ph_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_inter_slice.

[0606] ph_max_mtt_hierarchy_depth_inter_slice specifies the maximum hierarchical depth of a coding unit by multi-type tree partitioning of a quadtree leaf in slices where the slice_type associated with PH is 0 (B) or 1 (P). The value of ph_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY-MinCbLog2SizeY). If not present, the value of ph_max_mtt_hierarchy_depth_inter_slice is inferred to be equal to sps_max_mtt_hierarchy_depth_inter_slice.

[0607] ph_log2_diff_max_bt_min_qt_inter_slice specifies the difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be divided using binary division and the minimum size (width or height) of luma samples of a luma leaf block that results from quadtree division of a CTU in a slice that is 0 (B) or 1 (P) associated with PH. The value of ph_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY. If not present, the value of ph_log2_diff_max_bt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_bt_min_qt_inter_slice.

[0608] ph_log2_diff_max_tt_min_qt_inter_slice specifies the difference between the base 2 logarithm of the maximum size (width or height) of luma samples of a luma coding block that can be divided using ternary division and the minimum size (width or height) of luma samples of a luma leaf block that results from quadtree division of a CTU in a slice that is 0 (B) or 1 (P) associated with PH. The value of ph_log2_diff_max_tt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY. If not present, the value of ph_log2_diff_max_tt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_tt_min_qt_inter_slice.

[0609] ph_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value of coding units in an inter-slice that carries cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of ph_cu_qp_delta_subdiv_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeInterY+ph_max_mtt_hierarchy_depth_inter_slice). If not present, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.

[0610] ph_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value of a coding unit in an inter-slice that carries cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_inter_slice shall be within the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeInterY+ph_max_mtt_hierarchy_depth_inter_slice). If not present, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.

[0611] ph_temporal_mvp_enabled_flag specifies whether a temporal motion vector predictor can be used for inter prediction of the slice associated with the PH. If ph_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the slice associated with the PH shall be constrained so that a temporal motion vector predictor is not used for decoding the slice. Otherwise (if ph_temporal_mvp_enabled_flag is equal to 1), a temporal motion vector predictor may be used for decoding the slice associated with the PH. If not present, the value of ph_temporal_mvp_enabled_flag is inferred to be equal to 0. If the spatial resolution of the reference picture in the DPB is not the same as that of the current picture, the value of ph_temporal_mvp_enabled_flag shall be equal to 0. The maximum number of subblock-based merge MVP candidates, MaxNumSubblockMergeCand, is derived as follows:

[0612] if(sps_affine_enabled_flag) MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand (88) else MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag&&ph_temporal_mvp_enable_flag The value of MaxNumSubblockMergeCand is in the range of 0 to 5.

[0613] ph_collocated_from_I0_flag equal to 1 specifies that the co-located pictures used for temporal motion vector prediction are derived from reference picture list 0. ph_collocated_from_I0_flag equal to 0 specifies that the co-located pictures used for temporal motion vector prediction are derived from reference picture list 1.

[0614] ph_collocated_ref_idx specifies the reference index of the co-located picture used for temporal motion vector prediction. When ph_collocated_from_l0_flag is equal to 1, ph_collocated_ref_idx refers to an entry in reference picture list 0, and the value of ph_collocated_ref_idx shall be in the range of 0 to num_ref_entries[0][PicRplsIdx[0]]-1. If ph_collocated_from_l0_flag is equal to 0, ph_collocated_ref_idx refers to an entry in reference picture list 1, and the value of ph_collocated_ref_idx shall be in the range from 0 to num_ref_entries[0][PicRplsIdx[1]]-1. If not present, the value of ph_collocated_ref_idx is inferred to be equal to 0.

[0615] mvd_l1_zero_flag equal to 1 indicates that the mvd_coding(x0,y0,1) syntax structure was not parsed and MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compIdx] are set to 0 for compIdx=0..1 and cpIdx=0..2. mvd_l1_zero_flag equal to 0 indicates that the mvd_coding(x0,y0,1) syntax structure was parsed.

[0616] ph_fpel_mmvd_enabled_flag equal to 1 specifies that merge mode with motion vector differences uses integer sample precision of the slice associated with PH. ph_fpel_mmvd_enabled_flag equal to 0 specifies that merge mode with motion vector differences uses fractional sample precision of the slice associated with PH. If not present, the value of ph_fpel_mmvd_enabled_flag is inferred to be 0.

[0617] ph_disable_bdof_flag equal to 1 specifies that inter bi-prediction based on bi-directional optical flow inter prediction is disabled in the slice associated with PH. ph_disable_bdof_flag equal to 0 specifies that inter bi-prediction based on bi-directional optical flow inter prediction may or may not be enabled in the slice associated with PH. If ph_disable_bdof_flag is not present, the following applies: - If sps_bdof_enabled_flag is equal to 1, the value of ph_disable_bdof_flag is inferred to be equal to 0. - Otherwise (if sps_bdof_enabled_flag is equal to 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.

[0618] ph_disable_dmvr_flag equal to 1 specifies that inter bi-directional prediction based on decoder motion vector refinement is disabled in the slice associated with PH. ph_disable_dmvr_flag equal to 0 specifies that inter bi-directional prediction based on decoder motion vector refinement may or may not be enabled in the slice associated with PH. If ph_disable_dmvr_flag is not present, the following applies: If -sps_dmvr_enabled_flag is equal to 1, the value of ph_disable_dmvr_flag is inferred to be equal to 0. Otherwise (if sps_dmvr_enable_flag is equal to 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.

[0619] ph_disable_prof_flag equal to 1 specifies that optical flow prediction refinement is disabled for slices associated with PH. ph_disable_prof_flag equal to 0 specifies that optical flow prediction refinement may or may not be enabled for slices associated with PH. If ph_disable_prof_flag is not present, the following applies: If -sps_affine_prof_enabled_flag is equal to 1, the value of ph_disable_prof_flag is inferred to be equal to 0. - Otherwise (if sps_affine_prof_enabled_flag is equal to 0), the value of ph_disable_prof_flag is inferred to be equal to 1.

[0620] ph_qp_delta is the Qp used for coding blocks in a picture until modified by the value of CuQpDeltaVal in the coding unit layer. Y Specifies the initial value of If qp_delta_info_in_ph_flag is equal to 1, the Qp for all slices of the picture Y quantization parameter SliceQp Y The first value of is derived as follows: SliceQp Y =26+init_qp_minus26+ph_qp_delta (89) SliceQp Y The value is in the range of -QpBdOffset to 63.

[0621] ph_joint_cbcr_sign_flag specifies whether the co-located residual samples of both chroma components have opposite signs in transform units for which tu_joint_cbcr_residual_flag[x0][y0] is equal to 1. When tu_joint_cbcr_residual_flag[x0][y0] is equal to 1 for a transform unit, ph_joint_cbcr_sign_flag equal to 0 specifies that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the co-located Cb (or Cr) residual sample, and ph_joint_cbcr_sign_flag equal to 1 specifies that the sign of each residual sample of the Cr (or Cb) component is represented by the opposite sign of the co-located Cb (or Cr) residual sample.

[0622] ph_sao_luma_enabled_flag equal to 1 specifies that SAO is enabled for the luma component in all slices associated with the PH, and ph_sao_luma_enabled_flag equal to 0 specifies that SAO for the luma component may be disabled for one or more or all slices associated with the PH. If ph_sao_luma_enabled_flag is not present, it is inferred to be equal to 0.

[0623] ph_sao_chroma_enabled_flag equal to 1 specifies that SAO is enabled for chroma components in all slices associated with the PH, and ph_sao_chroma_enabled_flag equal to 0 specifies that SAO for the luma component may be disabled for one or more or all slices associated with the PH. If ph_sao_chroma_enabled_flag is not present, it is inferred to be equal to 0.

[0624] ph_dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled for the current picture. ph_dep_quant_enabled_flag equal to 1 specifies that dependent quantization is enabled for the current picture. If ph_dep_quant_enabled_flag is not present, it is inferred to be equal to 0.

[0625] pic_sign_data_hiding_enabled_flag equal to 0 specifies that sign bit hiding is disabled for the current picture. pic_sign_data_hiding_enabled_flag equal to 1 specifies that sign bit hiding is enabled for the current picture. If pic_sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.

[0626] ph_deblocking_filter_override_flag equal to 1 specifies that deblocking parameters are present in PH. ph_deblocking_filter_override_flag equal to 0 specifies that deblocking parameters are not present in PH. If not present, the value of ph_deblocking_filter_override_flag is inferred to be equal to 0.

[0627] ph_deblocking_filter_disabled_flag equal to 1 specifies that the operation of a deblocking filter is not applied to the slice associated with the PH. ph_deblocking_filter_disabled_flag equal to 0 specifies that the operation of a deblocking filter is applied to the slice associated with the PH. If ph_deblocking_filter_disabled_flag is not present, it is inferred to be equal to pps_deblocking_filter_disabled_flag.

[0628] ph_beta_offset_div2 and ph_tc_offset_div2 specify the offset (divided by 2) of the β and tC deblocking parameters applied to the luma component of the slice associated with PH. The values ​​of ph_beta_offset_div2 and ph_tc_offset_div2 shall both be in the range of -12 to 12. If not present, the values ​​of ph_beta_offset_div2 and ph_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[0629] ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 specify the offset (divided by 2) of the β and tC deblocking parameters applied to the Cb component of the slice associated with PH. The values ​​of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 shall both be in the range of -12 to 12. If not present, the values ​​of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are inferred to be equal to pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2, respectively.

[0630] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the offset (divided by 2) of the β and tC deblocking parameters applied to the Cr component of the slice associated with PH. The values ​​of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 shall both be in the range of -12 to 12. If not present, the values ​​of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are inferred to be equal to pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2, respectively.

[0631] ph_extension_length specifies the length of the PH extension data in bytes, not including the bits used for signaling the ph_extension_length itself. The value of ph_extension_length is in the range 0 to 256. If not present, the value of ph_extension_length is inferred to be equal to 0.

[0632] ph_extension_data_byte can have any value. Decoders conforming to this specification version must ignore the value of ph_extension_data_byte. The value does not affect the decoder's conformance to the features specified in this specification version.

[0633] 7.4.8 Slice Header Semantics

[0634] 7.4.8.1 General slice header semantics

[0635] The variable CuQpDeltaVal, which specifies the difference between the luma quantization parameter and its prediction for the coding unit containing cu_qp_delta_abs, is set to 0. The Qp' for the coding unit containing cu_chroma_qp_offset_flag is set to 0. cb , Qp' cr , Qp' CbCr The variable CuQpOffset specifies the value used when determining each value of the quantization parameter. cb , CuQpOffset cr , and CuQpOffset CbCr are all set equal to 0.

[0636] 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. It is a bitstream conformance requirement that the value of picture_header_in_slice_header_flag shall be the same for all coded slices in a CLVS. It is a bitstream conformance requirement that if picture_header_in_slice_header_flag is equal to 1 for one coded slice, there shall be no VCL NAL units in the CLVS with nal_unit_type being PH_NUT. If picture_header_in_slice_header_flag is equal to 0, all coded slices in the current picture shall have picture_header_in_slice_header_flag equal to 0, and the current PU shall have a PH NAL unit.

[0637] slice_subpic_id specifies the subpicture ID of the subpicture that contains the slice. If slice_subpic_id is present, the value of the variable CurrSubpicIdx is derived such that SubpicIdVal[CurrSubpicIdx] is equal to slice_subpic_id. Otherwise (slice_subpic_id is not present), CurrSubpicIdx is derived to be equal to 0. The length of slice_subpic_id is sps_subpic_id_len_minus1+1 bits.

[0638] slice_address specifies the slice address of the slice. If not present, the value of slice_address is inferred to be equal to 0. If rect_slice_flag is equal to 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be equal to 0. If rect_slice_flag is equal to 0, the following applies: -The slice address is the raster scan tile index. - The length of slice_address is Ceil(Log2(NumTilesInPic)) bits. The value of -slice_address should be in the range 0 to NumTilesInPic-1. Otherwise (rect_slice_flag is equal to 1), the following applies: - The slice address is the sub-picture level slice index of the slice. - The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits. The value of -slice_address must be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx]-1. The requirements for bitstream conformance are that the following constraints apply: If -rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address must not be equal to the value of slice_address of any other coded slice NAL unit in the same coded picture. Otherwise, the pair of slice_subpic_id and slice_address values ​​must not be equal to the pair of slice_subpic_id and slice_address values ​​of any other coded slice NAL unit in the same coded picture. The shape of a picture slice must be such that when each CTU is decoded, its entire left boundary and its entire top boundary contain the boundary of one picture or the boundary of a previously decoded CTU.

[0639] sh_extra_bit[i] may be equal to 1 or 0. Decoders conforming to this specification version must ignore the value of sh_extra_bit[i]. Its value does not affect the decoder's conformance to the features specified in this specification version.

[0640] num_tiles_in_slice_minus1+1 (if present) specifies the number of tiles in the slice. The value of num_tiles_in_slice_minus1 should be in the range from 0 to NumTilesInPic-1. The variable NumCtusInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i], which specifies the picture raster scan address of the ith CTB in the slice, where i ranges from 0 to NumCTUsInCurrSlice-1, are derived as follows:

[0641] if(rect_slice_flag){ picLevelSliceIdx=slice_address for(j=0;j <CurrSubpicIdx;j++) picLevelSliceIdx+=NumSlicesInSubpic[j] NumCtusInCurrSlice=NumCtusInSlice[picLevelSliceIdx] for(i=0;i <NumCtusInCurrSlice;i++) CtbAddrInCurrSlice[i]=CtbAddrInSlice[picLevelSliceIdx][i] (117) } else{ NumCtusInCurrSlice=0 for(tileIdx=slice_address;tileIdx<=slice_address+num_tiles_in_slice_minus1;tileIdx++){ tileX = tileIdx % NumTileColumns tileY = tileIdx / NumTileColumns for (ctbY = tileRowBd[tileY]; ctbY < tileRowBd[tileY + 1]; ctbY++) { for (ctbX = tileColBd[tileX]; ctbX < tileColBd[tileX + 1]; ctbX++) { CtbAddrInCurrSlice[NumCtusInCurrSlice] = ctbY * PicWidthInCtb + ctbX NumCtusInCurrSlice++ } } } }

[0642] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos are derived as follows.

[0643] if (subpic_treated_as_pic_flag[CurrSubpicIdx]) { SubpicLeftBoundaryPos = subpic_ctu_top_left_x[CurrSubpicIdx] * CtbSizeY SubpicRightBoundaryPos = Min(pic_width_max_in_luma_samples - 1, (subpic_ctu_top_left_x[CurrSubpicIdx] + subpic_width_minus1[CurrSubpicIdx] + 1) * CtbSizeY - 1) SubpicTopBoundaryPos = subpic_ctu_top_left_y[CurrSubpicIdx] * CtbSizeY (118) SubpicBotBoundaryPos=Min(pic_height_max_in_luma_samples-1, (subpic_ctu_top_left_y[CurrSubpicIdx]+ subpic_height_minus1[CurrSubpicIdx]+1)*CtbSizeY-1) }

[0644] slice_type specifies the coding type of the slice according to Table 9.

[0645] [Table 36]

[0646] If not present, the value of slice_type is inferred to be equal to 2. If ph_intra_slice_allowed_flag is equal to 0, the value of slice_type shall be equal to 0 or 1. If nal_unit_type is in the range IDR_W_RADL~CRA_NUT and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2. The variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY and MaxMttDepthC are derived as follows:

[0647] If slice_type equals 2(I), MinQtLog2SizeY=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_luma (119) MinQtLog2SizeC=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_chroma (120) MaxBtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_bt_min_qt_intra_slice_luma) (121) MaxBtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_bt_min_qt_intra_slice_chroma) (122) MaxTtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_tt_min_qt_intra_slice_luma) (123) MaxTtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_tt_min_qt_intra_slice_chroma) (124) MaxMttDepthY=ph_max_mtt_hierarchy_depth_intra_slice_luma (125) MaxMttDepthC=ph_max_mtt_hierarchy_depth_intra_slice_chroma (126) CuQpDeltaSubdiv=ph_cu_qp_delta_subdiv_intra_slice (127) CuChromaQpOffsetSubdiv=ph_cu_chroma_qp_offset_subdiv_intra_slice (128) Otherwise(slice_type equal to0(B)or1(P)), MinQtLog2SizeY=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_inter_slice (129) MinQtLog2SizeC=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_inter_slice (130) MaxBtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_bt_min_qt_inter_slice) (131) MaxBtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_bt_min_qt_inter_slice) (132) MaxTtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_tt_min_qt_inter_slice) (133) MaxTtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_tt_min_qt_inter_slice) (134) MaxMttDepthY=ph_max_mtt_hierarchy_depth_inter_slice (135) MaxMttDepthC=ph_max_mtt_hierarchy_depth_inter_slice (136) CuQpDeltaSubdiv=ph_cu_qp_delta_subdiv_inter_slice (137) CuChromaQpOffsetSubdiv=ph_cu_chroma_qp_offset_subdiv_inter_slice (138) MinQtSizeY=1<<MinQtLog2SizeY (139) MinQtSizeC=1<<MinQtLog2SizeC (140) MinBtSizeY=1<<MinCbLog2SizeY (141) MinTtSizeY=1<<MinCbLog2SizeY (142)

[0648] slice_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled and may be applied to the Y, Cb, or Cr color components in one slice. slice_alf_enabled_flag equal to 0 specifies that all color components in the slice are disabled. If not present, the value of slice_alf_enabled_flag is inferred to be ph_alf_enabled_flag.

[0649] slice_num_alf_aps_ids_luma specifies the number of ALF APSs that the slice references. If slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma is not present, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of ph_num_alf_aps_ids_luma.

[0650] slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS to which the luma component of the slice refers. The TemporalId of an APS NAL unit whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the coded slice NAL unit. If slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_luma[i] is not present, the value of slice_alf_aps_id_luma[i] is inferred to be equal to the value of ph_alf_aps_id_luma[i]. The value of alf_luma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i].

[0651] slice_alf_chroma_idc equal to 0 indicates that the adaptive loop filter is not applied to the Cb and Cr color components. slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. slice_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to the Cb and chrominance components. If slice_alf_chroma_idc is not present, it is inferred to be equal to ph_alf_chroma_idc.

[0652] slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS to which the chroma components of the slice refer. The TemporalId of an APS NAL unit whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the coded slice NAL unit. If slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma is not present, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma. The value of alf_chroma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma[i].

[0653] slice_cc_alf_cb_enabled_flag equal to 0 specifies that the cross-component filter is not applied to the Cb color components. slice_cc_alf_cb_enabled_flag equal to 1 specifies that the cross-component filter is enabled and may or may not be applied to the Cb color components. If slice_cc_alf_cb_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cb_enabled_flag.

[0654] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id referenced by the Cb color component of the slice. The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. If slice_cc_alf_cb_enabled_flag equals 1 and slice_cc_alf_cb_aps_id is not present, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id. The value of alf_cc_cb_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id.

[0655] slice_cc_alf_cr_enabled_flag equal to 0 specifies that the cross-component filter is not applied to the Cr color component. slice_cc_alf_cb_enabled_flag equal to 1 specifies that the cross-component adaptive loop filter is enabled and may or may not be applied to the Cr color component. If slice_cc_alf_cr_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cr_enabled_flag.

[0656] slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id to which the Cr color component of the slice refers. The TemporalId of an APS NAL unit whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. If slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id is not present, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id. The value of alf_cc_cr_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id.

[0657] colour_plane_id identifies the colour plane associated with the current slice if separate_colour_plane_flag is equal to 1. The value of colour_plane_id shall be in the range 0 to 2, where colour_plane_id values ​​0, 1 and 2 correspond to the Y, Cb and Cr planes, respectively. The colour_plane_id value 3 is reserved for future use by ITU-T|ISO / IEC. NOTE 1 – There is no dependency between the decoding processes of different color planes of a picture.

[0658] A num_idx_active_override_flag equal to 1 specifies that the syntax element num_ref_idx_active_minus1[0] is present in P slices and B slices, and that the syntax element num_ref_idx_active_minus1[1] is present in B slices. A num_ref_idx_active_override_flag equal to 0 specifies that the syntax elements num_ref_idx_active_minus1[0] and num_ref_idx_active_minus1[1] are not present. If not present, the value of num_ref_idx_active_override_flag is inferred to be equal to 0.

[0659] num_ref_idx_active_minus1[i] is used to derive the variable NumRefIdxActive[i], as defined in Equation 143. The value of num_ref_idx_active_minus1[i] should be in the range of 0 to 14, inclusive. If i is equal to 0 or 1, when the current slice is a B slice, if num_ref_idx_active_override_flag is equal to 1 and num_ref_idx_active_minus1[i] is not present, it is inferred that num_ref_idx_active_minus1[i] is not 0. When the current slice is a P slice, if num_ref_idx_active_override_flag is equal to 1 and num_ref_idx_active_minus1[0] is not present, it is inferred that num_ref_idx_active_minus1[0] is not 0. The variable NumRefIdxActive[i] is derived as follows:

[0660] for(i=0;i<2;i++){ if(slice_type==B||(slice_type==P&&i==0)){ if(num_ref_idx_active_override_flag) NumRefIdxActive[i]=num_ref_idx_active_minus1[i]+1 (143) else { if(num_ref_entries[i][RplsIdx[i]]>=num_ref_idx_default_active_minus1[i]+1) NumRefIdxActive[i]=num_ref_idx_default_active_minus1[i]+1 else NumRefIdxActive[i]=num_ref_entries[i][RplsIdx[i]] } }else / *slice_type==I||(slice_type==P&&i==1)* / NumRefIdxActive[i]=0 }

[0661] The value of NumRefIdxActive[i]-1 specifies the maximum reference index of reference picture list i that can be used to decode a slice. If the value of NumRefIdxActive[i] is equal to 0, the slice can be decoded without using any reference index of reference picture list i. When the current slice is a P slice, the value of NumRefIdxActive[0] shall be greater than 0. If the current slice is a B slice, both NumRefIdxActive[0] and NumRefIdxActive[1] shall be greater than 0.

[0662] cabac_init_flag Specifies how to determine the initialization table to be used in the context variable initialization process. If cabac_init_flag is not present, it is inferred to be equal to 0.

[0663] slice_collocated_from_I0_flag equal to 1 specifies that the co-located pictures used for temporal motion vector prediction are derived from reference picture list 0. slice_collocated_from_I0_flag equal to 0 specifies that the co-located pictures used for temporal motion vector prediction are derived from reference picture list 1. If slice_type is B or P, ph_temporal_mvp_enabled_flag is equal to 1, and slice_collocated_from_l0_flag is not present, the following applies: - If rpl_info_in_ph_flag is equal to 1, slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag. - otherwise (if rpl_info_in_ph_flag is equal to 0 and slice_type is equal to P, the value of slice_collocated_from_l0_flag is inferred to be equal to 1).

[0664] slice_collocated_ref_idx, which specifies the reference index of the co-located picture used for temporal motion vector prediction. If slice_type is P or slice_type is equal to B and collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to an entry in reference picture list 0. The numeric value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0]-1. If slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, the value of slice_collocated_ref_idx refers to an entry in reference picture list 1, and slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1]-1. If slice_collocated_ref_idx is not present, the following applies: - If rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx. Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0. It is a bitstream compatibility requirement that the picture referenced by slice_collocated_ref_idx shall be the same for all slices of a coded picture. It is a bitstream conformance requirement that the values ​​of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referenced by slice_collocated_ref_idx shall be the same as pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture, respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? j0:j1][slice_collocated_ref_idx] shall be equal to 0.

[0665] slice_qp_delta is the Qp used for coding blocks in a slice. Y Specifies the initial value of CuQpDeltaVal at the coding unit layer, until modified by the value of CuQpDeltaVal at the coding unit layer. If qp_delta_info_in_ph_flag is equal to 0, the Qp of the slice Y Quantization parameter SliceQp Y The initial value of is derived as follows: SliceQp Y =26+init_qp_minus26+slice_qp_delta (144) SliceQp Y The value is in the range of -QpBdOffset to 63. When any of the following conditions is true: - The value of wp_info_in_ph_flag is equal to 1, pps_weighted_pred_flag is equal to 1, and slice_type is P. - The value of wp_info_in_ph_flag is equal to 1, pps_weighted_bipred_flag is equal to 1, and slice_type is B. The following applies: The value of NumRefIdxActive[0] shall be less than or equal to the value of NumWeightsL0. For each reference picture index i, RefPicList[0][i], in the range of -0 to NumRefIdxActive[0]-1, the luma weight, Cb weight, and Cr weight applied to the reference picture index are applied to LumaWeightL0[i], ChromaWeightL0[0][i], and ChromaWeightL0[1][i], respectively. If wp_info_in_ph_flag is equal to 1, pps_weighted_bipred_flag is equal to 1, and slice_type is equal to B, the following applies: The value of NumRefIdxActive[1] shall be less than or equal to the value of NumWeightsL1. For each reference picture index i, RefPicList[1][i], in the range of -0 to NumRefIdxActive[1]-1, the luma weight, Cb weight, and Cr weight applied to the reference picture index are applied to LumaWeightL1[i], ChromaWeightL1[0][i], and ChromaWeightL1[1][i], respectively.

[0666] slice_cb_qp_offset Qp' cb Specifies the difference to add to the value of pps_cb_qp_offset when determining the value of the quantization parameter. The value of slice_cb_qp_offset shall be between -12 and +12 inclusive. If slice_cb_qp_offset is not present, it is inferred to be equal to 0. The value of pps_cb_qp_offset+slice_cb_qp_offset shall be within the range of -12 to +12.

[0667] slice_cr_qp_offset Qp' crSpecifies the difference to add to the value of pps_cr_qp_offset when determining the value of the quantization parameter. The value of slice_cr_qp_offset shall be between -12 and +12 inclusive. If slice_cr_qp_offset is not present, it is inferred to be equal to 0. The value of pps_cr_qp_offset+slice_cr_qp_offset shall be in the range of -12 to +12.

[0668] slice_joint_cbcr_qp_offset Qp' CbCr Specifies the difference to add to the value of pps_joint_cbcr_qp_offset when determining the value of slice_joint_cbcr_qp_offset. The value of slice_joint_cbcr_qp_offset shall be between -12 and +12 inclusive. If slice_joint_cbcr_qp_offset is not present, it is inferred to be equal to 0. The value of pps_joint_cbcr_qp_offset_value+slice_joint_cbcr_qp_offset shall be between -12 and +12 inclusive.

[0669] cu_chroma_qp_offset_enabled_flag equal to 1 specifies that cu_chroma_qp_offset_flag may be present in transform units and palette coding syntax. cu_chroma_qp_offset_enabled_flag equal to 0 specifies that cu_chroma_qp_offset_flag is not present in transform units or palette coding syntax. If not present, the value of cu_chroma_qp_offset_enabled_flag is inferred to be equal to 0.

[0670] slice_sao_luma_flag equal to 1 specifies that SAO is enabled for the luma component in the current slice. slice_sao_luma_flag equal to 0 specifies that SAO is disabled for the luma component in the current slice. If slice_sao_luma_flag is not present, it is inferred to be equal to ph_sao_luma_enabled_flag.

[0671] slice_sao_chroma_flag equal to 1 specifies that SAO is enabled for chroma components in the current slice. slice_sao_chroma_flag equal to 0 specifies that SAO is disabled for chroma components in the current slice. If slice_sao_chroma_flag is not present, it is inferred to be equal to ph_sao_chroma_enabled_flag.

[0672] slice_deblocking_filter_override_flag equal to 1 specifies that deblocking parameters are present in the slice header. slice_deblocking_filter_override_flag equal to 0 specifies that deblocking parameters are not present in the slice header. If not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.

[0673] slice_deblocking_filter_disabled_flag equal to 1 specifies that the operation of a deblocking filter is not applied to the current slice. slice_deblocking_filter_disabled_flag equal to 0 specifies that the operation of a deblocking filter is applied to the current slice. If slice_deblocking_filter_disabled_flag is not present, it is inferred to be equal to ph_deblocking_filter_disabled_flag.

[0674] slice_beta_offset_div2 and slice_tc_offset_div2 specify the β and tC deblocking parameter offsets (divided by 2) applied to the luma component of the current slice. The values ​​of slice_cr_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range of -12 to 12. If not present, the values ​​of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to ph_beta_offset_div2 and ph_tc_offset_div2, respectively.

[0675] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the β and tC deblocking parameter offsets (divided by 2) applied to the Cb component of the current slice. The values ​​of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 shall both be in the range of -12 to 12. If not present, the values ​​of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 are inferred to be equal to ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2, respectively.

[0676] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the beta and tC deblocking parameter offsets (divided by 2) applied to the Cr component of the current slice. The values ​​of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 shall both be in the range of -12 to 12. If not present, the values ​​of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 are inferred to be equal to ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2, respectively.

[0677] slice_ts_residual_coding_disabled_flag equal to 1 specifies that the residual_coding() syntax structure is used to parse the residual samples of the transform skip blocks for the current slice. slice_ts_residual_coding_disabled_flag equal to 0 specifies that the residual_ts_coding() syntax structure is used to parse the residual samples of the transform skip blocks for the current slice. If slice_ts_residual_coding_disabled_flag is not present, it is inferred to be equal to 0.

[0678] slice_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is enabled for the current slice. slice_lmcs_enabled_flag equal to 0 specifies that luma mapping with chroma scaling is not enabled for the current slice. If slice_lmcs_enabled_flag is not present, it is inferred to be equal to 0.

[0679] slice_scaling_list_present_flag equal to 1 specifies that the scaling list data used for the current slice is derived based on the scaling list data contained in the reference scaling list APS with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id. slice_scaling_list_present_flag equal to 0 specifies that the scaling list data used for the current picture is the derived default scaling list data specified in clause 7.4.3.21. If not present, the value of slice_scaling_list_present_flag is inferred to be 0. The variable NumEntryPoints, which defines the number of entry points in the current slice, is derived as follows:

[0680] NumEntryPoints=0 for(i=1;i <NumCtusInCurrSlice;i++){ ctbAddrX=CtbAddrInCurrSlice[i]%PicWidthInCtbsY ctbAddrY=CtbAddrInCurrSlice[i] / PicWidthInCtbsY (145) prevCtbAddrX=CtbAddrInCurrSlice[i-1]%PicWidthInCtbsY prevCtbAddrY=CtbAddrInCurrSlice[i-1] / PicWidthInCtbsY if(CtbToTileRowBd[ctbAddrY]!=CtbToTileRowBd[prevCtbAddrY]|| CtbToTileColBd[ctbAddrX]!=CtbToTileColBd[prevCtbAddrX]|| (ctbAddrY!=prevCtbAddrY&&sps_entry_point_offsets_present_flag)) NumEntryPoints++ }

[0681] offset_len_minus1+1 specifies the length in bits of the entry_point_offset_minus1[i] syntax element. The value of offset_len_minus1 shall be in the range 0 to 31.

[0682] entry_point_offset_minus1[i]+1 specifies the offset of the ith entry point in bytes, expressed as offset_len_minus1 plus 1 bit. The slice data following the slice header consists of NumEntryPoints+1 subsets, with subset index values ​​ranging from 0 to NumEntryPoints. The first byte of the slice data is byte 0. If present, an emulation prevention byte that appears in the slice data portion of a coded slice NAL unit is counted as part of the slice data for subset identification. Subset 0 consists of bytes 0 through entry_point_offset_minus1[0] of the coded slice data, subset k, ranging from 1 to NumEntryPoints-1, consisting of bytes firstByte[k] through lastByte[k] of the coded slice data, where firstByte[k] and lastByte[k] are defined as follows:

[0683]

number

[0684] The last subset (subset index equals NumEntryPoints) consists of the remaining bytes of the coded slice data. If sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains one or more complete tiles, each subset shall consist of all coded bits of all CTUs in the slice that are within the same tile, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the number of tiles in the slice. If sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains a subset of CTU rows from a single tile, NumEntryPoints shall be equal to 0 and the number of subsets shall be equal to 1. The subset shall consist of all coded bits of all CTUs in the slice. If sps_entropy_coding_sync_enabled_flag is equal to 1, each subset, where k is in the range from 0 to NumEntryPoints, shall consist of the coded bits of all CTUs in a CTU row within a tile, and the number of subsets (i.e., the value of NumEntryPoints+1) shall be equal to the total number of tile-specific CTU rows in the slice.

[0685] slice_header_extension_length specifies the length of the slice header extension data in bytes. It does not include the bits used for signaling slice_header_extension_length itself. The value of slice_header_extension_length should be in the range from 0 to 256. If not present, the value of slice_header_extension_length is inferred to be equal to 0.

[0686] slice_header_extension_data_byte[i] may have any value. Decoders conforming to this specification version must ignore the value of all slice_header_extension_data_byte[i] syntax elements. The value does not affect the decoder's conformance to the features specified in this specification version.

[0687] Exemplary Technical Problems Addressed by the Disclosed Technical Solutions

[0688] There are several potential problems with the current HLS design, which are described below.

[0689] (1) Controlling the temporal prediction flag in the SPS, picture header, and slice header causes problems for P slices and / or B slices. a) Picture header and slice level control of temporal prediction flags may result in uninitialized co-located pictures and / or co-located reference indices for P slices. b) Slice_collocated_ref_idx, which refers to an entry in reference picture list 1, may be used for P slices. c) For P slices, the value of slice_collocated_ref_idx refers to one entry in reference picture list 0 may exceed the range from 0 to NumRefIdxActive[0]-1. d) Picture-level and slice-level temporal prediction flags relate to whether the co-located picture is from L0 or L1 and which reference picture it refers to, but there is no high-level control over whether temporal prediction is allowed, etc., which may not be clear enough.

[0690] (2) The semantics of subpicture-related syntax elements may need to be modified to allow for a more accurate interpretation that takes into account the interaction of related syntax elements. a) sps_independent_subpics_flag may be equal to 0 if only one subpicture is present. b) If there is only one slice in the subpicture, the value of slice_width_in_tiles_minus1 must be calculated, not inferred. c) If there is only one slice and / or one tile in the picture, single_slice_per_subpic_flag may be equal to 0. d) If not present, such as when no_pic_partition_flag is equal to 1, single_slice_per_subpic_flag is inferred to be equal to 0. It is a bitstream conformance requirement that no_pic_partition_flag shall not have the value 1 when the value of sps_num_subpics_minus1+1 is greater than 1. Therefore, a picture has only one subpicture, and a subpicture has only one slice, so single_slice_per_subpic_flag should be equal to 1.

[0691] (3) In the sub-picture sub-bitstream extraction process, some syntax elements may not be set correctly. a) Syntax elements such as sps_independent_subpics_flag, subpic_treated_as_pic_flag, loop_filter_across_subpic_enabled_flag, and no_pic_partition_flag for subpictures extracted from the sub-bitstream extraction process are not written and may not be preferred. b) The sub-picture sub-bitstream extraction process depends on the sub-picture ID, which may change from picture to picture, which may result in extracting different sub-picture indices from different pictures, which may not be desirable. c) Writing 1 to sps_num_subpics_minus1 and pps_num_subpics_minus1 of the output bistream in the sub-picture sub-bitstream extraction process indicates that two sub-pictures should be extracted at once, which may not be desirable.

[0692] (4) Syntax elements in the reference picture list may be present in an IDR picture without any use.

[0693] (5) This split information is said to be identical for luma and chroma in the prediction tree, but this is not true.

[0694] (6) The coding tool syntax elements are not conditioned or constrained by the corresponding general constraint flags, and the values ​​of some general constraint flags are not conditioned or constrained by the associated constraints, which may lead to some conflicts. a) res_change_in_clvs_allowed_flag is not constrained by the value of the general constraint flag no_res_change_in_clvs_constraint_flag. b) window_explicit_signalling_flag is not constrained by no_res_change_in_clvs_constraint_flag. c) window_explicit_signalling_flag is not constrained by res_change_in_clvs_allowed_flag. d) The value of sps_num_subpics_minus1 is not constrained by one_subpic_per_pic_constraint_flag. e) subpic_treated_as_pic_flag is not constrained by one_subpic_per_pic_constraint_flag and / or sps_num_subpics_minus1 and / or pps_num_subpics_minus1. f) loop_filter_across_subpic_enabled_flag is not constrained by one_subpic_per_pic_constraint_flag and / or sps_num_subpics_minus1 and / or pps_num_subpics_minus1. g) one_subpic_per_pic_constraint_flag is not constrained by one_slice_per_pic_constraint_flag. h) no_bdpcm_constraint_flag is not constrained by no_transform_skip_constraint_flag. i) num_slices_in_pic_minus1 is not constrained by one_slice_per_pic_constraint_flag. j) num_tiles_in_slice_minus1 is not constrained by one_slice_per_pic_constraint_flag.

[0695] Exemplary Techniques and Embodiments

[0696] [ka]

[0697] Temporal Prediction Related HLS

[0698] 1. Two levels of control in TMVP are available: one at the picture level and the other at the slice / tile / subpicture / brick level. a) In one example, the first syntax element indicating whether there is at least one inter-coded slice that references this flag may enable TMVP and be signaled at the picture level (e.g., represented by ph_temporal_mvp_allowed_flag). i. In one example, it may be signaled in the picture header or PPS. ii. In one example, it may be conditionally signaled that TMVP is enabled in the SPS, and / or the current picture contains at least one inter-coded slice, and / or RPL is present in the current picture header, etc. b) In one example, a second syntax element indicating whether the current slice enables TMVP may be signaled at the slice level (e.g., represented as sh_temporal_mvp_allowed_flag), which may depend on the first syntax element. In one example, sh_temporal_mvp_allowed_flag may be signaled only if ph_temporal_mvp_allowed_flag is equal to 1. Otherwise, it is inferred to be equal to 0. ii. In one example, sh_temporal_mvp_allowed_flag may be signaled only if ph_temporal_mvp_allowed_flag is equal to 0. Otherwise, it is inferred to be equal to 1. c) In one example, a second syntax element indicating whether the current slice has TMVP enabled may be signaled at the slice level (e.g., indicated by sh_temporal_mvp_allowed_flag), which may depend on the presence of an RPL in the current slice header, and / or TMVP being enabled in the SPS, and / or the current slice being an inter-coded slice. d) In one example, a third syntax element (eg, tmvp_info_in_ph_flag) is signaled to indicate whether TMVP information is signaled in the picture header or slice header. i. TMVP information may include information about whether TMVP is enabled. ii. TMVP information may include information about co-located reference pictures. In one example, tmvp_info_in_ph_flag is signaled only if TMVP is enabled at the sequence level (e.g., sps_temporal_mvp_enabled_flag is equal to 1). e) In one example, if a second syntax element is not present, the second syntax element is inferred to be equal to a default value (e.g., the value of the first syntax element). For example, if sh_temporal_mvp_allowed_flag is not present, it is inferred to be equal to ph_temporal_mvp_allowed_flag.

[0699] 2. Whether and / or how to inherit co-located picture information (e.g., co-located pictures are from list 0, reference picture indices for co-located pictures) from PH to SH depends at least on whether slice type and reference picture list information is present in the PH syntax structure (e.g., rpl_info_in_ph_flag=1). a) In one example, if slice_type is equal to P, then if rpl_info_in_ph_flag is equal to 1 (and / or ph_temporal_mvp_enabled_flag is equal to 1), slice_collocated_from_l0_flag is set equal to 1 regardless of the value of ph_collocated_from_l0_flag. i. Alternatively, if slice_type is equal to P, slice_collocated_from_l0_flag may be inferred to be equal to 1, regardless of other conditions. b) In another example, when slice_type is equal to B and slice_collocated_from_l0_flag is equal to 1, the value of slice_collocated_ref_idx, which refers to an entry in the reference picture list 0, shall be within the range from 0 to NumRefIdxActive[0] - 1. c) In one example, when slice_type is equal to P and TMVP is enabled, slice_collocated_from_l0_flag may be inferred to be equal to 1. d) In one example, when slice_type is equal to P, TMVP is enabled, and slice_collocated_ref_idx is within the range from 0 to NumRefIdxActive[0] - 1, the following holds. e) In one example, when slice_type is equal to P and TMVP is enabled, RprConstraintsActive[0][<slice_collocated_ref_idx] for the P slice may be required to be equal to 0. f) In one example, the following exemplary modifications can be introduced. Define slice_collocated_ref_idx, the reference index of the picture placed at the same position used for temporal motion vector prediction.

[0700]

Chemical formula

[0701] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, the value of slice_collocated_ref_idx refers to an entry in the reference picture list 1, and slice_collocated_ref_idx shall be within the range from 0 to NumRefIdxActive[1] - 1. If slice_collocated_ref_idx is not present, the following applies: - If rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx. Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0. It is a bitstream compatibility requirement that the picture referenced by slice_collocated_ref_idx shall be the same for all slices of a coded picture. It is a bitstream conformance requirement that the values ​​of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referenced by slice_collocated_ref_idx shall be the same as pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture, respectively, and that RprConstraintsActive[slice_collocated_from_l0_flag?0:1][slice_collocated_ref_idx] shall be equal to 0. g) In one example, if ph_collocated_from_l0_flag is equal to 0, the picture may be required not to contain a P slice. i. In one example, the following exemplary modifications can be introduced: slice_type specifies the coding type of the slice according to Table 9.

[0702] [Table 37]

[0703] If not present, the value of slice_type is inferred to be equal to 2. If ph_intra_slice_allowed_flag is equal to 0, the value of slice_type shall be equal to 0 or 1. If nal_unit_type is in the range IDR_W_RADL~CRA_NUT and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.

[0704] [ka]

[0705] ii. Alternatively, whether to signal the slice type may depend on whether the co-located picture is from list 0 or not. 1. In one example, if all of the following conditions are true, the signaling of a slice type that references the current picture header may be skipped: -rpl_info_in_ph_flag equals 1. -ph_temporal_mvp_enabled_flag equals 1. -ph_intra_slice_allowed_flag equals 0. -ph_collocated_from_l0_flag equals 0. Alternatively, the slice type may be inferred as a B slice. h) In one example, if the value of ph_temporal_mvp_enabled_flag is equal to 1 and rpl_info_in_ph_flag is equal to 1, it may be inferred that the value of slice_collocated_from_l0_flag for a P slice is always equal to 1. The following exemplary modifications can be introduced: slice_collocated_from_l0_flag equal to 1 specifies that the co-located pictures used for temporal motion vector prediction are derived from reference picture list 0. slice_collocated_from_l0_flag equal to 0 specifies that the co-located pictures used for temporal motion vector prediction are derived from reference picture list 1. [[If slice_type is equal to B or P, ph_temporal_mvp_enabled_flag is equal to 1, and slice_collocated_from_l0_flag is not present, the following applies: - If rpl_info_in_ph_flag is equal to 1, slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag. - Otherwise (if rpl_info_in_ph_flag is equal to 0 and slice_type is equal to P), the value of slice_collocated_from_l0_flag is inferred to be equal to 1.

[0706] [ka]

[0707] i) In one example, if slice_type is equal to P and slice_collocated_from_l0_flag is equal to 0, it is said that slice_collocated_ref_idx refers to an inactive entry in reference picture list 1, and it is required that a reference picture referenced by that inactive entry in reference picture list 1 may be referenced by an active entry in reference picture list 0. The following exemplary modifications can be introduced:

[0708] [ka]

[0709] If slice_collocated_ref_idx is not present, the following applies: - If rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx. Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0. It is a bitstream compatibility requirement that the picture referenced by slice_collocated_ref_idx shall be the same for all slices of a coded picture. It is a bitstream conformance requirement that the values ​​of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referenced by slice_collocated_ref_idx shall be the same as pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture, respectively, and that RprConstraintsActive[slice_collocated_from_l0_flag?j0:j1][slice_collocated_ref_idx] shall be equal to 0.

[0710] j) Alternatively, B slices and P slices that reference the same picture header may use different co-located pictures. i. In one example, even if the RPL is signaled in the picture header, the reference picture index of the co-located picture may still be signaled in the slice header. 1. In one example, if the current slice is equal to a P slice, RPL is signaled in the picture header, temporal motion vector prediction is enabled (e.g., ph_temporal_mvp_enabled_flag is true), and if ph_collocated_from_l0_flag is equal to 0, the reference picture index of the co-located picture may further be signaled. a) Alternatively, it further points to reference picture list 0. ii. In one example, two co-located reference picture indexes may be signaled or derived, one for B slices and the other for P slices, referencing the same picture header. 1. In one example, two indices may be signaled only if ph_collocated_from_l0_flag is equal to 0. k) In one example, an indication of whether there are both B and P slices that reference the same picture header may be signaled. i. Alternatively, the picture header may signal an indication of the type of slices that refer to the same picture header. ii. Alternatively, an indication of whether there are only B slices (excluding P slices) that refer to the same picture header may be signaled. iii. Alternatively, an indication of whether there are only P slices (excluding B slices) that refer to the same picture header may be signaled. iv. Alternatively, an indication of whether there are only B-slices and I-slices that reference the same picture header may be signaled. v. Alternatively, an indication of whether there are only P slices and I slices that reference the same picture header may be signaled. vi. Alternatively, an indication of the type of slices referencing the same picture header may be signaled in the picture header only if the RPL is signaled in the picture header. vii. Alternatively, the RPL is signaled in a picture header only if an indication of the type of slice that references the same picture header is signaled in the picture header. l) Alternatively, if slice_type is equal to P and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx may be modified before use and is mapped to an index in the range of 0 to NumRefIdxActive[0]-1. i. In one example, if slice_type is P and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx points to an entry in reference picture list 0, slice_collocated_ref_idx is set to (slice_collocated_ref_idx>(NumRefIdxActive[0]-1)?default_col_ref_idx:slice_collocated_ref_idx), and the variable default_col_ref_idx is in the range from 0 to NumRefIdxActive[0]-1. 1. In one example, the variable default_col_ref_idx is set to 0. 2. In one example, this variable may be signaled. m) In a conforming bitstream, it may not be permitted for two slices associated with one picture header to be a P slice and the other a B slice. n) In a conforming bitstream, it may not be permitted for two slices associated with one picture header in which RPL is signaled to be a P slice and the other a B slice. o) In a conforming bitstream, this slice may not be allowed to be a P slice, other than a slice associated with one picture header whose RPL is signaled with two reference picture lists.

[0711] Subpicture related HLS

[0712] 3. The number of subpictures for each picture in CLVS (eg, sps_num_subpics_minus1 and / or pps_num_subpics_minus1) may be conditioned by a general constraint flag such as one_subpic_per_pic_constraint_flag. a) In one example, if a general constraint flag such as one_subpic_per_pic_constraint_flag is equal to 1, the values ​​of sps_num_subpics_minus1 and / or pps_num_subpics_minus1 may be required to be equal to 0.

[0713] [ka]

[0714] 4. Whether a syntax element (e.g., sps_independent_subpics_flag) specifying "no intra prediction, no inter prediction, and no in-loop filtering operations performed across any subpicture boundaries in CLVS" is signaled may depend on the number of subpictures of each picture in CLVS (e.g., sps_num_subpics_minus1). a) In one example, if there is only one subpicture in each picture in CLVS, the syntax element sps_independent_subpics_flag may be inferred as not being signaled and equal to 1.

[0715] [ka]

[0716] 5. The value of subpic_treated_as_pic_flag may depend on whether there is only one subpicture in the picture. a) In one example, if one_subpic_per_pic_constraint_flag is equal to 1, then the value of subpic_treated_as_pic_flag may be required to be equal to 1 or may be inferred to be equal to 1. b) In one example, if sps_num_subpics_minus1 is equal to 0, the value of subpic_treated_as_pic_flag may be required or inferred to be equal to 1. c) In one example, if pps_num_subpics_minus1 is equal to 0, the value of subpic_treated_as_pic_flag may be required to be equal to 1.

[0717] 6. The value of loop_filter_across_subpic_enabled_flag may depend on whether there is only one subpicture in the picture. a) In one example, if one_subpic_per_pic_constraint_flag is equal to 1, the value of loop_filter_across_subpic_enabled_flag may be required or inferred to be equal to 0. b) In one example, if sps_num_subpics_minus1 is equal to 0, the value of loop_filter_across_subpic_enabled_flag may be required or inferred to be equal to 0. c) In one example, if pps_num_subpics_minus1 is equal to 0, the value of loop_filter_across_subpic_enabled_flag may be required to be equal to 0.

[0718] 7. Whether to specify the width in tile columns of the i-th rectangular slice (e.g., slice_width_in_tiles_minus1) may depend on single_slice_per_subpic_flag. a) In one example, if slice_width_in_tiles_minus1 is not present but single_slice_per_subpic_flag is equal to 1, the value of slice_width_in_tiles_minus1 may not be set.

[0719] [ka]

[0720] 8. Whether each subpicture consists of only one rectangular slice (eg, single_slice_per_subpic_flag) may be conditioned by a general constraint flag such as one_slice_per_pic_constraint_flag. a) In another example, if the syntax element single_slice_per_subpic_flag is not present, the value of single_slice_per_subpic_flag may be inferred to be equal to 1. b) In another example, if the syntax element single_slice_per_subpic_flag is not present, the value of single_slice_per_subpic_flag may be inferred according to whether the current picture is partitioned or not (e.g., no_pic_partition_flag). c) In one example, the following exemplary modifications can be introduced: single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture may consist of one or more rectangular slices. If single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. [[If not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.]]

[0721] [ka]

[0722] [ka]

[0723] [ka]

[0724] [ka]

[0725] 9. In one example, for the derivation of output sub-bitstreams during sub-picture sub-bitstream extraction, extracted sub-pictures across different pictures in CLVS may be required to have the same sub-picture index. a) For example, it may be required that the target sub-picture ID of the extracted sub-picture can refer to the same sub-picture index between different pictures in the CLVS. b) For example, if subpic_id_mapping_explicitly_signalled_flag is equal to 1, then it may be required that subpicture ID mapping is not signaled in PPS when subpicture sub-bitstream extraction is processed (e.g., subpic_id_mapping_in_pps_flag is equal to 0). i. In one example, if subpic_id_mapping_explicitly_signalled_flag is equal to 1, then subpicture ID mapping may be required to be signaled to the SPS when subpicture sub-bitstream extraction is processed (e.g., subpic_id_mapping_in_sps_flag is equal to 1). c) For example, which sub-picture to extract in the sub-picture sub-bitstream extraction process may depend on the sub-picture index. d) For example, which syntax elements to rewrite and / or remove in the sub-picture sub-bitstream extraction process may depend on the sub-picture index. e) In one example, the following exemplary modifications can be introduced:

[0726] C.7 Subpicture sub-bitstream extraction process

[0727] [ka]

[0728] The output of this process is the sub-bitstream outBitstream. The requirement for bitstream conformance with respect to an input bitstream is that any output sub-bitstream that satisfies all of the following conditions is a conforming bitstream:

[0729] [ka]

[0730] The output sub-bitstream outBitstream is derived as follows: The ExtractBitstream procedure specified in Appendix C.6 is invoked with inBitstream, targetIdx, and tIdTarget as inputs, and the output of this procedure is assigned to outBitstream. If external means not specified herein are available to provide replacement parameter sets to the sub-bitstream outBitstream, replace all parameter sets with replacement parameter sets. Otherwise, if a Sub-picture Level Information SEI message is present in inBitstream, the following applies:

[0731] [ka]

[0732] [ka]

[0733] [ka]

[0734] [ka]

[0735] - When outBitstream contains an SEI NAL unit containing a scalable nested SEI message applicable to outBitstream with nesting_ols_flag equal to 1 and nesting_subpic_flag equal to 1, extract the appropriate non-scalable nested SEI message with payloadType equal to 1 (picture timing) or 130 (decoding unit information) from the scalable nested SEI message and place the extracted SEI message in outBitstream.

[0736] 10. In one example, with regard to the derivation of the output sub-bitstream during sub-picture sub-bitstream extraction, the extracted sub-bitstream may be treated as a single sub-picture in the output bitstream. a) In one example, the syntax element sps_independent_subpics_flag may be rewritten to be equal to 1 for syntax structures that refer to output sub-bitstreams with extracted sub-pictures. b) In one example, the syntax elements subpic_treated_as_pic_flag and / or loop_filter_across_subpic_enabled_flag referenced to subpictures extracted in all output layers may not be signaled (e.g., may be removed) from the syntax structure of the output sub-bitstream. i. In one example, the syntax element subpic_treated_as_pic_flag may be inferred to be equal to 1 for syntax structures referenced to output sub-bitstreams that have extracted sub-pictures. ii. In one example, the syntax element loop_filter_across_subpic_enabled_flag may be inferred to be equal to 0 for syntax structures referenced to output sub-bitstreams with extracted sub-pictures. c) In one example, the values ​​of sps_num_subpics_minus1 in all referenced SPS NAL units and pps_num_subpics_minus1 in all referenced PPS NAL units that have extracted subpictures may be rewritten to be equal to 0. d) In one example, the syntax element no_pic_partition_flag may be rewritten to a syntax structure called output sub-bitstream with extracted sub-pictures. i. For example, whether to rewrite the syntax element no_pic_partition_flag may depend on the number of tiles / slices in the output bitstream that contain the extracted sub-picture. 1. In one example, if there is only one tile and one slice in the extracted subpicture, the syntax element no_pic_partition_flag may be rewritten to be equal to 1 for syntax structures that reference an output sub-bitstream with the extracted subpicture. 2. Alternatively, if the number of tiles and / or slices in the extracted subpicture is greater than 1, the syntax element no_pic_partition_flag may be equal to 0 for syntax structures that reference an output sub-bitstream having the extracted subpicture. e) In one example, the following exemplary modifications can be introduced:

[0737] C.7 Subpicture sub-bitstream extraction process

[0738] The output sub-bitstream outBitstream is derived as follows: The ExtractBitstream procedure specified in Appendix C.6 is invoked with inBitstream, targetIdx, and tIdTarget as inputs, and the output of this procedure is assigned to outBitstream. If external means not specified herein are available to provide replacement parameter sets to the sub-bitstream outBitstream, replace all parameter sets with replacement parameter sets. Otherwise, if a Sub-picture Level Information SEI message is present in inBitstream, the following applies: - Rewrite the value of general_level_idc of the ols_ptl_idx[targetOlsIdx]-th entry of the profile_tier_level() syntax structure list of all referenced VPS NAL units to be equal to the SubpicSetLevelIdc derived in D.3.8 for the subpicture set consisting of subpictures with subpicture IDs equal to all entries of subpicIdTarget[]. - Rewrite the values ​​of cpb_size_value_minus1[tIdTarget][j] and bit_rate_value_minus1[tIdTarget][j] of the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry in the list of ols_hrd_parameters() syntax structures of all referenced VPS NAL units to correspond to SubpicSetCpbSizeVcl[0], SubpicSetCpbSizeNal[0], SubpicSetBitrateVcl[0], SubpicSetBitrateNal[0] as derived in D.3.8 for the subpicture set consisting of subpicture IDs equal to all entries of subpicIdTarget[] and subpictures with j in the range from 0 to hrd_cpb_cnt_minus1. For the i-th layer, where i is in the range 0 to NumLayersInOls[targetolsIdx]-1, the following applies: - subpicId is set equal to the value of subpicIdTarget[i]. - Rewrite the value of general_level_idc of the profile_tier_level() syntax structure of SPS NAL units with sps_ptl_dpb_hrd_params_present_flag equal to 1 to be equal to SubpicSetLevelIdc derived in D.3.8 for the set consisting of the subpicture with subpicture ID subpicId. - Rewrite the values ​​of cpb_size_value_minus1[tIdTarget][j] and bit_rate_value_minus1[tIdTarget][j] of the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry in the list of ols_hrd_parameters() syntax structures of all referenced SPS NAL units to correspond to SubpicCpbSizeVcl[0][SubpicIdList[subPicId]], SubpicCpbSizeNal[0][SubpicIdList[subPicId]], SubpicBitrateVcl[0][SubpicIdList[subPicId]], and SubpicBitrateNal[0][SubpicIdList[subPicId]] as derived in D.3.8 for subpictures with subpicture ID equal to subpicId and subpicture with j in the range from 0 to hrd_cpb_cnt_minus1. - Rewrite the values ​​of pic_width_max_in_luma_samples and pic_height_max_in_luma_samples of all referencing SPS NAL units and the values ​​of pic_width_in_luma_samples and pic_width_in_luma_samples of all referencing PPS NAL units to be equal to subpic_width_minus1[SubpicIdList[subPicId]] and subpic_height_minus1[SubpicIdList[subPicId]]. - Rewrite the values ​​of sps_num_subpics_minus1 of all referenced SPS NAL units and pps_num_subpics_minus1 of all referenced PPS NAL units to 1. - If the syntax elements subpic_ctu_top_left_x[SubpicIdList[subPicId]] and subpic_ctu_top_left_y[SubpicIdList[subPicId]] exist in all the SPS NAL units they refer to, they are rewritten to 0.

[0739] [ka]

[0740] - In all referencing SPS NAL units and for each j where SubpicIdList[j] is not equal to subPicId, remove the subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], subpic_treated_as_pic_flag[j], loop_filter_across_subpic_enabled_flag[j], and sps_subpic_id[j] syntax elements. - In all referenced PPSs, rewrite syntax elements related to tiling and slice structure, removing all tile rows, tile columns, and slices that are not associated with a subpicture whose subpicture ID is equal to subPicId. - Remove all VCL NAL units from outBitstream whose nuh_layer_id is equal to the nuh_layer_id of the i layer and whose slice_subpic_id is not equal to subPicId. - If sli_cbr_constraint_flag is 1, remove all NAL units with nal_unit_type equal to FD_NUT and filler payload SEI messages that are not associated with VCL NAL units of subpicIdTarget[] and set cbr_flag[tIdTarget][j] equal to 1 for the j-th (j in the range 0 to hrd_cpb_cnt_minus1) CBP in the ols_hrd_idx[targetOlsIdx]-th entry of the list of ols_hrd_parameters() syntax structures for all referenced VPS and SPS NAL units. Otherwise (if sli_cbr_constraint_flag is equal to 0), remove all NAL units and filler payload SEI messages with nal_unit_type equal to FD_NUT and set cbr_flag[tIdTarget][j] equal to 0.

[0741] NAL unit related HLS

[0742] 11. The reference picture list syntax element may be present in the slice header of an IDR picture, i.e., sps_idr_rpl_present_flag may be equal to 1 in case of bitstream merging. a) In one example, if an output bistream (e.g., mixed_nalu_types_in_pic_flag is equal to 1) is merged from two input bistreams during bistream merging, and the NAL unit type of one of the input bistreams may be an IRAP VCL NAL unit type such as IDR, it may be required that the RPL of the IDR bistream must be available (i.e., sps_idr_rpl_present_flag is equal to 1 for that IDR input bistream). b) In one example, the following exemplary modifications can be introduced: sps_idr_rpl_present_flag equal to 1 specifies that the Reference Picture List syntax element is present in the slice header of the IDR picture. sps_idr_rpl_present_flag equal to 0 specifies that the Reference Picture List syntax element is not present in the slice header of the IDR picture.

[0743] [ka]

[0744] Split-related

[0745] 12. Block (ie, CTB, TB, PB, CB, etc.) partition information for luma and chroma may be different for each prediction tree. a) In one example, in the case of a chroma dual tree, the block partition structure and / or the partition syntax elements for luma and chroma may be different. b) In one example, for a local dual tree, the block partition structure and / or the partition syntax elements for luma and chroma may be different. c) In one example, the following exemplary modifications can be introduced:

[0746] [ka]

[0747] General Constraint Flags

[0748] 13. Syntax elements in parameter sets (eg, SPS / VPS / PPS) and / or picture headers and / or slice headers may be adjusted by general constraint flags. a) In one example, the enable flag for a coding tool may be conditioned by a corresponding general constraint flag. i. In one example, an enable flag shall be equal to 0 if the corresponding general constraint flag is equal to 1. ii. In one example, an enable flag may be overwritten by a corresponding general constraint flag. For example, if a general constraint flag is equal to 1, the corresponding enable flag may be set to 0. b) In one example, whether an enable flag is signaled may depend on the corresponding general constraint flag. i. In one example, an enable flag may be absent if the corresponding general constraint flag is equal to 1. ii. In one example, the enable flag may be inferred to be equal to 0 if not present.

[0749] 14. Whether the spatial resolution of a picture changes within a CLVS with reference to the SPS (eg, res_change_in_clvs_allowed_flag) may be regulated by general constraint flags such as no_res_change_in_clvs_constraint_flag. a) In one example, if the syntax no_res_change_in_clvs_constraint_flag is equal to 1, then res_change_in_clvs_allowed_flag may not be present. b) In one example, res_change_in_clvs_allowed_flag may be inferred to be equal to 0 if the syntax res_change_in_clvs_allowed_flag is not present.

[0750] 15. Whether a scaling window offset parameter is present in a PPS (e.g., scaling_window_explicit_signalling_flag) may depend on whether the spatial resolution of a picture changes within the CLVS that references the SPS (e.g., res_change_in_clvs_allowed_flag) and / or on general constraint flags such as no_res_change_in_clvs_constraint_flag. a) In one example, scaling_window_explicit_signalling_flag may be inferred to be equal to 0 when the syntax scaling_window_explicit_signalling_flag is not present. b) In one example, if res_change_in_clvs_allowed_flag is equal to 0, scaling_window_explicit_signalling_flag may not be present. c) In one example, if no_res_change_in_clvs_constraint_flag is equal to 1, scaling_window_explicit_signalling_flag may not be present.

[0751] 16. The presence of one_subpic_per_pic_constraint_flag may depend on the syntax one_slice_per_pic_constraint_flag. a) In one example, if one_slice_per_pic_constraint_flag is equal to 1, then one_subpic_per_pic_constraint_flag may not be present and may be inferred to be equal to 1. b) In one example, if one_slice_per_pic_constraint_flag is equal to 0, one_subpic_per_pic_constraint_flag may be present.

[0752] 17. The general constraint flag no_bdpcm_constraint_flag may be conditioned by the general constraint flag no_transform_skip_constraint_flag. a) In one example, the general constraint flag no_bdpcm_constraint_flag is equal to 1 if the general constraint flag no_transform_skip_constraint_flag is equal to 1. b) In one example, whether the general constraint flag no_bdpcm_constraint_flag is signaled may depend on the syntax no_transform_skip_constraint_flag. i. In one example, if no_transform_skip_constraint_flag is equal to 1, the general constraint flag no_bdpcm_constraint_flag may not be present. ii. In one example, if no_bdpcm_constraint_flag is not present, the syntax no_bdpcm_constraint_flag is inferred to be equal to 1.

[0753] 18. Whether one general constraint flag is signaled may depend on other general constraint flags. a) In one example, several constraint group flags can be defined, and other general constraint flags may be conditioned by these constraint group flags. i. In one example, constraint flags may be grouped according to tool type (including but not limited to prediction, transform, quantization, inter, intra) or profile. ii. In one example, the constraint flags belonging to a group may be derived from the corresponding constraint group flags. In one example, whether a constraint flag belonging to a group is signaled may depend on the corresponding constraint group flag. For example, if the constraint group flag is equal to 0, the constraint flag belonging to this group may not be signaled.

[0754] General constraint flag semantics

[0755] [ka]

[0756] [ka]

[0757] [ka]

[0758] 1 is a block diagram illustrating an example video processing system 100 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 100. System 100 may include an input 102 for receiving video content. The video content may be received in a raw or uncompressed format, e.g., 8- or 10-bit multi-module pixel values, or in a compressed or encoded format. Input 102 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, PON (Passive Optical Network), and wireless interfaces such as Wi-Fi or cellular interfaces.

[0759] System 100 may include a coding component 104 capable of implementing various coding or encoding methods described herein. Coding component 104 may reduce the average bit rate of video from input 102 to the output of coding component 104 to generate a coded representation of the video. Thus, coding techniques are sometimes referred to as video compression or video transcoding techniques. The output of coding component 104 may be stored or transmitted via a connected communication, as represented by component 106. The bitstream (or coded) representation of the video received at input 102, stored, or communicated may be used by component 108 to generate pixel values ​​or displayable video that are sent to display interface 110. The process of generating user-viewable video from the bitstream representation is sometimes referred to as video unpacking. Furthermore, while certain video processing operations are referred to as "coding" operations or tools, it will be understood that the coding tools or operations are used in an encoder, and that corresponding decoding tools or operations that reverse the results of the encoding are performed by a decoder.

[0760] Examples of peripheral bus interfaces or display interfaces may include USB (Universal Serial Bus), HDMI (High Definition Multimedia Interface), DisplayPort, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The techniques described herein may be implemented in various electronic devices such as mobile phones, laptops, smartphones, or other de...

Claims

1. A method for processing video data, converting between a video including a video picture including a video slice and a bitstream of said video; the bitstream conforms to format rules; the format rule specifies disabling use of reference picture resampling (RPR) of a reference picture in a particular reference picture list when the video slice has a slice type P and temporal motion vector prediction of the video picture is enabled, the reference picture being indicated by a first syntax element that identifies a reference index of a co-located picture used for the temporal motion vector prediction; the particular reference picture list is reference picture list 0; if the slice type of the video slice is P and the temporal motion vector prediction of the video picture is enabled, a value of a second syntax element is inferred to be equal to 1; a value of the second syntax element equal to 1 indicates that the co-located picture used for the temporal motion vector prediction is derived from the reference picture list 0; If the value of the second syntax element is equal to 1, the reference picture list 0 is determined as the specific reference picture list. method.

2. the particular reference picture list is determined based on the value of the second syntax element in a slice header of the video slice; the second syntax element indicates whether the co-located picture used for the temporal motion vector prediction is derived from the reference picture list 0. The method of claim 1.

3. if the slice type of the video slice is P and the temporal motion vector prediction of the video picture is enabled, a value of the first syntax element is in the range from 0 to a maximum reference index of the reference picture list 0 that is allowed to be used for the video slice. The method of claim 1.

4. the converting includes encoding the video into the bitstream. The method according to any one of claims 1 to 3.

5. the converting includes decoding the video from the bitstream. The method according to any one of claims 1 to 3.

6. 1. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions, the apparatus comprising: The instructions, when executed by the processing device, cause the processing device to: converting between a video including a video picture including a video slice and a bitstream of said video; the bitstream conforms to format rules; the format rule specifies disabling use of reference picture resampling (RPR) of a reference picture in a particular reference picture list when the video slice has a slice type P and temporal motion vector prediction of the video picture is enabled, the reference picture being indicated by a first syntax element that identifies a reference index of a co-located picture used for the temporal motion vector prediction; the particular reference picture list is reference picture list 0; if the slice type of the video slice is P and the temporal motion vector prediction of the video picture is enabled, a value of a second syntax element is inferred to be equal to 1; a value of the second syntax element equal to 1 indicates that the co-located picture used for the temporal motion vector prediction is derived from the reference picture list 0; If the value of the second syntax element is equal to 1, the reference picture list 0 is determined as the specific reference picture list. Device.

7. A non-transitory computer-readable storage medium storing instructions, comprising: The instructions may be for causing a processor to: converting between a video including a video picture including a video slice and a bitstream of said video; the bitstream conforms to format rules; the format rule specifies disabling use of reference picture resampling (RPR) of a reference picture in a particular reference picture list when the video slice has a slice type P and temporal motion vector prediction of the video picture is enabled, the reference picture being indicated by a first syntax element that identifies a reference index of a co-located picture used for the temporal motion vector prediction; the particular reference picture list is reference picture list 0; if the slice type of the video slice is P and the temporal motion vector prediction of the video picture is enabled, a value of a second syntax element is inferred to be equal to 1; a value of the second syntax element equal to 1 indicates that the co-located picture used for the temporal motion vector prediction is derived from the reference picture list 0; If the value of the second syntax element is equal to 1, the reference picture list 0 is determined as the specific reference picture list. A non-transitory computer-readable storage medium.

8. 1. A method for storing a video bitstream, comprising the steps of: generating a bitstream of the video including video pictures including video slices; storing the bitstream on a non-transitory computer readable recording medium; Including, the bitstream conforms to format rules; the format rule specifies disabling use of reference picture resampling (RPR) of a reference picture in a particular reference picture list when the video slice has a slice type P and temporal motion vector prediction of the video picture is enabled, the reference picture being indicated by a first syntax element that identifies a reference index of a co-located picture used for the temporal motion vector prediction; the particular reference picture list is reference picture list 0; if the slice type of the video slice is P and the temporal motion vector prediction of the video picture is enabled, a value of a second syntax element is inferred to be equal to 1; a value of the second syntax element equal to 1 indicates that the co-located picture used for the temporal motion vector prediction is derived from the reference picture list 0; If the value of the second syntax element is equal to 1, the reference picture list 0 is determined as the specific reference picture list. method.