Sub-picture signaling in a video bitstream

By performing the conversion of video stripes during the video encoding and decoding process and adopting specific format rules, the problem of inefficient video encoding and decoding in the prior art is solved, and more efficient bandwidth usage and video data processing are achieved.

CN115191114BActive Publication Date: 2025-06-13DOUYIN VISION CO LTD +1
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180014513.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-02-14
Filing Date
2021-02-10
Publication Date
2025-06-13
Estimated Expiration
2041-02-10

AI Technical Summary

Technical Problem

The prior art is difficult to effectively solve the problem of the growth of bandwidth use of digital video in the Internet and digital communication networks, especially in the process of video encoding and decoding, where there is inefficiency.

Method used

By performing the conversion of video stripes during the video encoding and decoding process, including the conversion between a video picture with a video strip and a video bitstream, a specific format rule is used to determine the strip type of the video stripes and its corresponding codec information.

Benefits of technology

It improves the efficiency of the video encoding and decoding process, optimizes bandwidth usage, and meets the demand for increasing video usage.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115191114B_ABST
    Figure CN115191114B_ABST
Patent Text Reader

Abstract

Methods, apparatuses, and systems for video processing including video encoding or video decoding are described. An example method includes performing a conversion between a video including video pictures and a bitstream of the video according to format rules, where the video pictures include one or more sub-pictures. The format rules specify that whether each of one or more sub-pictures in a video picture includes a single strip is determined based on a constraint flag.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - reference to related applications

[0002] This application is based on International Patent Application No. PCT / CN2021 / 076547 filed on February 10, 2021, which claims the priority and benefit of International Patent Application PCT / CN2020 / 075194 filed on February 14, 2020. All of the above - mentioned patent applications are hereby incorporated by reference in their entirety. Technical field

[0003] This patent document relates to picture encoding and decoding as well as video encoding and decoding. Background art

[0004] Digital video accounts for the largest bandwidth usage on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, it is expected that the bandwidth demand for digital video usage will continue to grow. Summary of the invention

[0005] This document discloses techniques that can be used by video encoders and decoders for video processing, where a conversion is performed between the coded - decoded representation of a video and the pixel values of the video.

[0006] In one example aspect, a video processing method is disclosed. The method includes performing a conversion between a video including a video picture having video strips and a bit - stream of the video. The bit - stream conforms to a format rule that specifies the manner in which the strip type of a video strip determines the inheritance of specific information from a picture header of the video picture by a strip header of the video strip.

[0007] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between a video including a video picture having video strips and a bit - stream of the video. The bit - stream conforms to a format rule that specifies that the strip type of a video strip determines the value of a first syntax element in the video strip header. The first syntax element specifies a reference index of a collocated picture for temporal motion vector prediction.

[0008] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between a video including a video picture having video strips and a bit - stream of the video. The bit - stream conforms to a format rule that specifies that when the strip type of a video strip is of P - type and temporal motion vector prediction is enabled, the use of reference picture resampling (RPR) for reference pictures in a collocated reference picture list is disabled. The reference pictures are indicated by the reference index of the collocated pictures of the video strip for temporal motion vector prediction.

[0009] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including video pictures having video slices and a bitstream of the video. The bitstream conforms to a format rule that specifies that, in the case where a syntax element in a video slice header indicates that the video slice is not collocated with reference picture list 0, the slice type of the video slice excludes type P.

[0010] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including video pictures having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that specifies that, in response to a plurality of sub-pictures in a video picture selectively including a first syntax element indicating whether an operation is performed across boundaries of sub-pictures in a coded video sequence.

[0011] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including video pictures having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that specifies that a plurality of sub-pictures in a video picture in the bitstream are constrained by a constraint flag in the bitstream.

[0012] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including video pictures having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that specifies a manner in which the number of slices in a sub-picture determines a syntax element signaling the width of a slice, where the width of the slice is specified as the number of column slices.

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

[0014] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including video pictures and a bitstream of the video. At least one of the video pictures includes one or more sub-pictures. The bitstream conforms to a format rule that specifies that, for determining an output sub-bitstream of one or more target sub-pictures in a converted sub-picture sub-bitstream extraction process, the same sub-picture index is used for each target sub-picture across different video pictures.

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

[0016] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including an Instantaneous Decoding Refresh (IDR) picture and a bitstream of the video. The bitstream conforms to a format rule that specifies that one or more syntax elements associated with a reference picture list are present in a slice header of the IDR picture.

[0017] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including a luminance video block and a chrominance video block and a bitstream of the video. The luminance video block is segmented according to a luminance segmentation tree, and the chrominance video block is segmented according to a chrominance segmentation tree. The bitstream includes luminance block partitioning information indicating the luminance segmentation tree and chrominance block partitioning information indicating the chrominance segmentation tree. The bitstream conforms to a rule that allows the chrominance block partitioning information to be different from the luminance block partitioning information.

[0018] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including a video picture having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that specifies that one or more syntax structures are constrained based on a constraint flag of a syntax element including regular constraint information.

[0019] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video including a video picture having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies the manner in which a strip type of the video slice determines specific information from a picture header of the video picture to be inherited by a strip header of the video slice.

[0020] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video and a codec representation of the video, wherein the codec representation conforms to a syntax rule. The rule specifies that a first indicator at the video picture level and a second indicator at the video region level indicate the use of a temporal motion vector prediction codec tool during the conversion. The rule specifies conditions for omitting the first indicator and / or the second indicator in the codec representation.

[0021] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video and a codec representation of the video, where the codec representation conforms to syntax rules; wherein the syntax rules specify that information of a header at the video region level is inferred as information of a header at the video unit level.

[0022] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video including a plurality of pictures organized as a hierarchical video sequence and a codec representation of the video; wherein one or more fields in the codec representation indicate a plurality of sub-pictures in the video unit.

[0023] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video including a plurality of pictures organized as a hierarchical video sequence and a codec representation of the video; wherein the codec representation conforms to format rules that specify that the value of a second field indicating the number of sub-pictures in a video unit controls whether the second field indicates the applicability of cross-sub-picture codec tools for the conversion.

[0024] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video including a plurality of pictures organized as a hierarchical video sequence and a codec representation of the video; wherein the codec representation conforms to format rules that specify that the number of sub-pictures of each video unit controls the value of a syntax element in the codec representation.

[0025] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video including a plurality of pictures organized as a hierarchical video sequence and a codec representation of the video, wherein the codec representation conforms to format rules that specify that the field value indicating whether a single video strip appears in a video unit controls the codec characteristics of a rectangular strip of the video.

[0026] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video including a plurality of pictures organized as a hierarchical video sequence and a codec representation of the video; wherein the codec representation conforms to syntax rules such that extracted sub-pictures across different pictures in the codec representation of the hierarchical video sequence have the same sub-picture index.

[0027] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video including a plurality of pictures organized as a layer-by-layer video sequence and an encoded / decoded representation of the video; wherein, the encoded / decoded representation conforms to a syntax rule, that is, the sub-bitstream extracted for the sub-picture sub-bitstream conforms to the format of a single sub-picture.

[0028] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between video units in a video region of a video including a plurality of pictures organized as a layer-by-layer video sequence and an encoded / decoded representation of the video; wherein, the encoded / decoded representation conforms to a format rule that specifies one or more constraint flags that control the occurrence of one or more syntax elements in a syntax structure in the encoded / decoded representation.

[0029] In yet another example aspect, a video encoder device is disclosed. The video encoder includes a processor configured to implement the above method.

[0030] In yet another example aspect, a video decoder device is disclosed. The video decoder includes a processor configured to implement the above method.

[0031] In yet another example aspect, a computer-readable medium storing code is disclosed. The code embodies one of the methods described herein in the form of processor-executable code.

[0032] These features and other features are described in this document. BRIEF DESCRIPTION OF THE DRAWINGS

[0033] Figure 1 is a block diagram of an example video processing system.

[0034] Figure 2 is a block diagram of a video processing device.

[0035] Figure 3 is a flowchart of an example method of video processing.

[0036] Figure 4 is a block diagram showing a video encoding / decoding system according to some embodiments of the present disclosure.

[0037] Figure 5 is a block diagram showing an encoder according to some embodiments of the present disclosure.

[0038] Figure 6 is a block diagram showing a decoder according to some embodiments of the present disclosure.

[0039] Figure 7 is a flowchart representation of a video processing method according to the present technology.

[0040] Figure 8 It is a flowchart representation of another video processing method according to the present technology.

[0041] Figure 9 It is a flowchart representation of another video processing method according to the present technology.

[0042] Figure 10 It is a flowchart representation of another video processing method according to the present technology.

[0043] Figure 11 It is a flowchart representation of another video processing method according to the present technology.

[0044] Figure 12 It is a flowchart representation of another video processing method according to the present technology.

[0045] Figure 13 It is a flowchart representation of another video processing method according to the present technology.

[0046] Figure 14 It is a flowchart representation of another video processing method according to the present technology.

[0047] Figure 15 It is a flowchart representation of another video processing method according to the present technology.

[0048] Figure 16 It is a flowchart representation of another video processing method according to the present technology.

[0049] Figure 17 It is a flowchart representation of another video processing method according to the present technology.

[0050] Figure 18 It is a flowchart representation of another video processing method according to the present technology.

[0051] Figure 19 It is a flowchart representation of yet another video processing method according to the present technology. Detailed implementation manners

[0052] In this document, the use of chapter headings is for ease of understanding and does not limit the technologies and embodiments disclosed in each chapter to only that chapter. Additionally, in some specifications, the use of the H.266 term is only for ease of understanding and not to limit the scope of the disclosed technologies. Thus, the technologies described herein are also applicable to other video codec protocols and designs. Furthermore, examples of how the current version of the VCC standard can be modified by inserting new text (highlighted) or deleting current text (struck - through) are used to describe some of the technologies.

[0053] This document is related to video coding and decoding technologies. Specifically, it is about the High-Level Syntax (HLS) in video coding and decoding and related technologies. It can be applied to existing video coding and decoding standards such as HEVC or standards to be completed (Versatile Video Coding). It can also be applicable to future video coding and decoding standards or video codecs.

[0054] Video coding and decoding standards have mainly evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the H.262 / MPEG-2 video standard and the H.264 / MPEG-4 Advanced Video Coding (AVC) standard as well as the H.265 / HEVC standard. Since H.262, video coding and decoding standards have been based on a hybrid video coding and decoding structure, in which temporal prediction plus transform coding is used. To explore future video coding and decoding 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 applied to a reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly simultaneously, and the goal of the new coding and decoding standard is to reduce the bitrate by 50% compared to HEVC. At the JVET meeting in April 2018, the new video coding and decoding standard was officially named Versatile Video Coding (VVC), and the first version of the VVC Test Model (VTM) was released at that time. With continuous efforts dedicated to VVC standardization, each JVET meeting adopts new coding and decoding technologies for the VCC standard.

[0055] Example Definitions

[0056] The following definitions are used in this document.

[0057] Access Unit (AU): A set of PUs belonging to different layers and containing coded pictures associated with the same time instance for output from the DPB.

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

[0059] AC Transform Coefficient: Any transform coefficient with a non-zero frequency index in at least one of the two dimensions.

[0060] ALF APS: The APS that controls the ALF process.

[0061] Adaptive Parameter Set (APS): A syntax structure containing syntax elements that are deterministically applicable to zero or more slices as determined by zero or more syntax elements found in the slice header.

[0062] Associated IRAP Picture (of a particular picture): The previous IRAP picture (when present) in the decoding order that has the same nuh_layer_id value as the particular picture.

[0063] Associated Non-VCL NAL Unit: The non-VCL NAL unit (when present) of a VCL NAL unit, where the VCL NAL unit is the associated VCL NAL unit of the non-VCL NAL unit.

[0064] Associated VCL NAL Unit: The previous VCL NAL unit in the decoding order of a non-VCL NAL unit whose nal_unit_type is equal to a value in the range EOS_NUT, EOB_NUT, SUFFIX_APS_NUT, SUFFIX_SEI_NUT, FD_NUT, RSV_NVCL_27, or UNSPEC_30..UNSPEC_31; or the next VCL NAL unit in the decoding order.

[0065] Bit: One bit of a bit string.

[0066] Binarization: A set of bit strings for all possible values of a syntax element.

[0067] Binarization Process: The unique mapping process that maps all possible values of a syntax element onto a set of bit strings.

[0068] Binary Partition: The division of a rectangular MxN block of samples into two blocks, where a vertical partition results in a first (M / 2)xN block and a second (M / 2)xN block, and a horizontal partition results in a first Mx(N / 2) block and a second Mx(N / 2) block.

[0069] Bit String: The intermediate binary representation of the binarized syntax element values from a syntax element.

[0070] Bi-Predicted (B) Slice: A slice that is decoded using intra prediction or inter prediction using up to two motion vectors and reference indices to predict the sample values of each block.

[0071] Bitstream: A sequence of bits in the form of a NAL bitstream or byte stream that forms the identification of an AU sequence, and the AU sequences form one or more coded video sequences (CVS).

[0072] Block: An MxN (M columns x N rows) array of samples, or an MxN array of transform coefficients.

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

[0074] Byte: A sequence of 8 bits, where when written or read as a sequence of bit values, the leftmost and rightmost bits represent the most significant bit and the least significant bit, respectively.

[0075] Byte alignment: A position in a bitstream is byte-aligned when it is an 8-bit integer multiple of the position of the first bit in the bitstream; and a bit or byte or syntax element is said to be byte-aligned when it appears at a byte-aligned position in the bitstream.

[0076] Byte stream: An encapsulation of a NAL unit stream that contains start code prefixes and NAL units.

[0077] May: A term used to indicate behavior that is allowed but not necessarily required.

[0078] Chroma: An adjective, represented by the symbols Cb and Cr, that specifies that a sample array or a single sample represents one of two color difference signals related to the primary colors. Note that the term chroma is used instead of the term chrominance to avoid using the meaning of the linear light transfer characteristics typically associated with the term chrominance.

[0079] Clean Random Access (CRA) PU: A PU in which the coded picture is a CRA picture.

[0080] Clean Random Access (CRA) picture: An IRAP picture in which the nal_unit_type of each VCL NAL unit is equal to CRA_NUT. Note that a CRA picture does not refer to any picture other than itself for inter prediction during its decoding process, and can be the first picture in the bitstream in decoding order, or can appear later in the bitstream. A CRA picture may have associated RADL or RASL pictures. When the NoOutputBeforeRecoveryFlag of a CRA picture is equal to 1, the decoder does not output the associated RASL pictures because they may not be decodable since they may contain references to pictures that do not exist in the bitstream.

[0081] Coded Layer Video Sequence (CLVS): The PU sequence with the same nuh_layer_id value consists of CLVSS PUs in decoding order, followed by zero or more PUs that are not CLVSS PUs, including all subsequent PUs but excluding any subsequent PUs that are CLVSS PUs. It should be noted that CLVSS PUs can be IDR PUs, CRA PUs, or GDR PUs. For each IDR PU, each CRA PU with HandleCraAsCvsStartFlag equal to 1, and each CRA or GDR PU that is the first PU in the bitstream layer in decoding order or the first PU in the bitstream layer after an EOS NAL unit in decoding order, the value of NoOutputBeforeRecoveryFlag is equal to 1.

[0082] Coded Layer Video Sequence Start (CLVSS) PU: A PU where the coded picture is a CLVSS picture.

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

[0084] Coded Picture: The coded representation of a picture, including VCL NAL units with a specific value of nuh_layer_id within an AU and containing all CTUs of the picture.

[0085] Coded Picture Buffer (CPB): A first-in-first-out buffer that contains DUs in decoding order as specified in the Hypothetical Reference Decoder.

[0086] Coded Representation: A data element represented in its coded form.

[0087] Coded Video Sequence (CVS): A sequence of AUs consisting of CVSS AUs in decoding order, followed by zero or more AUs that are not CVSS AUs, including all subsequent AUs but excluding any subsequent AUs that are CVSS AUs.

[0088] Coded Video Sequence Start (CVSS) AU: An AU where each layer in the CVS has PUs and the coded picture in each PU is a CLVSS picture.

[0089] Coded Block: A block of samples with some M values and N values, such that dividing a CTB into coded blocks is a kind of segmentation.

[0090] Coding Tree Block (CTB): An N×N sample block for a certain N value, and thus partitioning the components into CTBs is a kind of segmentation.

[0091] Coding Tree Unit (CTU): A CTB of luma samples, two corresponding CTBs of chroma samples of a picture with three sample arrays, or a CTB of samples of a monochrome picture, or a picture decoded using three separate color planes and a syntax structure for coding / decoding samples.

[0092] Coding Unit (CU): A coding / decoding block of luma samples, two corresponding coding / decoding blocks of chroma samples of a picture with three sample arrays, or a coding / decoding block of samples of a monochrome picture, or a picture decoded using three separate color planes and a syntax structure for coding / decoding samples.

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

[0094] Context variable: A variable specified for the adaptive binary arithmetic decoding process of a binary bit by an equation that includes the most recently decoded binary bits.

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

[0096] Decoded picture: A picture produced by applying the decoding process to a coded picture.

[0097] Decoded Picture Buffer (DPB): A buffer that holds decoded pictures for use in reference as specified by the Hypothetical Reference Decoder, output reordering, or output delay.

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

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

[0100] Decoding process: The process specified in this specification for reading a bitstream and deriving a decoded picture therefrom.

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

[0102] Emulation prevention byte: A byte equal to 0x03 present in a NAL unit when the syntax elements of a bitstream form a pattern of certain byte values in such a way that a byte sequence ensuring contiguous byte alignment in the NAL unit cannot contain a start code prefix.

[0103] Encoder: An embodiment of an encoding process.

[0104] Encoding process: A process for generating a bitstream compliant with this specification that is not specified in this specification.

[0105] Filler data NAL unit: A NAL unit for which nal_unit_type is equal to FD_NUT.

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

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

[0108] Gradual decoding refresh (GDR) AU: An AU in which each coded / decoded picture in the current PU is a GDR picture.

[0109] Gradual decoding refresh (GDR) PU: A PU in which the coded / decoded picture is a GDR picture.

[0110] Gradual decoding refresh (GDR) picture: A picture for which the nal_unit_type of each VCL NAL unit is equal to GDR_NUT.

[0111] Hypothetical reference decoder (HRD): A hypothetical decoder model that specifies variability constraints for a conforming stream of NAL units or a conforming byte stream that may be produced by an encoding process.

[0112] Hypothetical stream scheduler (HSS): A hypothetical decoder model used to check the consistency of a bitstream or a decoder with respect to the timing and data flow of the bitstream input to the hypothetical reference decoder.

[0113] Informative: Used to refer to a term provided in this specification that does not establish any mandatory requirements consistent with this specification and is therefore not considered part of this specification.

[0114] Instantaneous decoding refresh (IDR) PU: A PU in which the coded / decoded picture is an IDR picture.

[0115] Instantaneous Decoding Refresh (IDR) Picture: An IRAP picture where the nal_unit_type of each VCL NAL unit is equal to IDR_W_RADL or IDR_N_LP. Note that an IDR picture does not reference any pictures other than itself for inter-prediction during its decoding process and can be the first picture in the bitstream in decoding order or can appear later in the bitstream. Each IDR picture is the first picture of the CVS in decoding order. When the IDR picture has a nal_unit_type of IDR_W_RADL for each VCL NAL unit, it may have associated RADL pictures. When the IDR picture has a nal_unit_type of IDR_N_LP for each VCL NAL unit, it does not have any associated leading pictures. An IDR picture does not have associated RASL pictures.

[0116] Inter-Layer Reference Picture (ILRP): A picture in the same AU as the current picture where the nuh_layer_id is less than the nuh_layer_id of the current picture and is marked as "for long-term reference".

[0117] Inter-prediction Coding: Coding of coding blocks, slices, or pictures that use inter-prediction.

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

[0119] Intra-Block Copy (IBC) Prediction: Prediction derived in a manner that depends on data elements (e.g., sample values or block vectors) of the same decoded slice without referencing reference pictures.

[0120] Intra-prediction Coding: Coding of coding blocks, slices, or pictures that use intra-prediction.

[0121] Intra-prediction: Prediction derived only from data elements (e.g., sample values) of the same decoded slice without referencing reference pictures.

[0122] Inter-prediction Random Access Point (IRAP) AU: An AU where each layer in the CVS has a PU and the decoded picture in each PU is an IRAP picture.

[0123] Intra-prediction Random Access Point (IRAP) PU: A PU where the decoded picture is an IRAP picture.

[0124] Intra Random Access Point (IRAP) picture: A coded picture in which all VCL NAL units have the same nal_unit_type value in the range from IDR_W_RADL to CRA_NUT, inclusive. Note that an IRAP picture does not refer to any picture other than itself for inter prediction during its decoding process, and can be a CRA picture or an IDR picture. The first picture in the bitstream in decoding order must be an IRAP or GDR picture. If the necessary parameter sets are available when they are needed, IRAP pictures and all subsequent non-RASL pictures in decoding order in the CVS can be decoded correctly without performing decoding processing on any pictures before the IRAP picture in decoding order. It should also be noted that the value of mixed_nalu_types_in_pic_flag for an IRAP picture is equal to 0. When the mixed_nalu_types_in_pic_flag of a picture is equal to 0, and the nal_unit_type of any slice of the picture is in the range from IDR_W_RADL to CRA_NUT, inclusive, all other slices of the picture have the same nal_unit_type value, and the picture is called an IRAP picture.

[0125] Intra (I) slice: A slice decoded using only intra prediction.

[0126] Layer: A set of VCL NAL units all having a specific value of nuh_layer_id and the associated non-VCL NAL units.

[0127] Previous picture: A picture that is in the same layer as the associated IRAP picture and is before the associated IRAP picture in output order.

[0128] Leaf: A terminating node of a tree that is the root node of a tree of depth 0.

[0129] Level: A set of definitions of constraints on the values that the syntax elements and variables of this specification may take or on the values of transform coefficients before scaling. Note that all profiles define the same set of levels, and most aspects of each level definition are common across different profiles. Within the specified constraints, individual implementations may support different levels for each supported profile.

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

[0131] List 0 (List 1) prediction: Inter prediction of slice content using a reference index pointing to reference picture list 0 (list 1).

[0132] LMCS APS: APS that controls the LMCS process.

[0133] Long-Term Reference Picture (LTRP): A picture where the nuh_layer_id is equal to the nuh_layer_id of the current picture and is marked as "for long-term reference".

[0134] Luminance: An adjective, denoted by the symbol or subscript Y or L, specifying that a sample array or a single sample represents a monochromatic signal related to a primary color. Note that the term luminance is used instead of the term luminance to avoid the meaning related to the linear light transfer characteristic usually associated with the term luminance. Sometimes the symbol L is used instead of the symbol Y to avoid confusion with the symbol y used for the vertical position.

[0135] Luminance Mapping with Chrominance 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 chrominance samples.

[0136] May: A term used to refer to an action that is allowed but not necessarily required. Note that in some places where the optional nature of the described action is to be emphasized, the phrase "may or may not" is used for emphasis. The use of this term in this document is only to emphasize that the requirement is adopted in an example embodiment of the codec standard and does not limit the scope of the disclosed technology.

[0137] Motion Vector: A two-dimensional vector used for inter-frame prediction that provides an offset from coordinates in a decoded picture to coordinates in a reference picture.

[0138] Multi-Type Tree: A tree where a parent node can be divided into two child nodes using a binary partition or into three child nodes using a ternary partition, and each child node can become a parent node for another partition into two or three child nodes.

[0139] Must: A term used to indicate an observation of a requirement or the meaning of a requirement specified elsewhere in this specification (used only in an informative context). The use of this term in this document is only to emphasize that the requirement is adopted in an example embodiment of the codec standard and not to limit the scope of the disclosed technology.

[0140] Network Abstraction Layer (NAL) Unit: A syntax structure that contains an indication of the data type to be followed and bytes containing the data in the form of RBSP, optionally interspersed with emulation prevention bytes.

[0141] Network Abstraction Layer (NAL) Unit Stream: A sequence of NAL units.

[0142] Note: A term used to prefix an informative note (used only in an informative context).

[0143] Operation Point (OP): A time-domain subset of the OLS, identified by the highest value of the OLS index and the TemporalId.

[0144] Output layer: A layer of the set of output layers of the output.

[0145] Output Layer Set (OLS): A hierarchical level consisting of a specified set of layers, where one or more layers in the layer set are specified as output layers.

[0146] Output Layer Set (OLS) layer index: The index of a layer in the OLS to the list of layers in the OLS.

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

[0148] Output time: The time at which a decoded picture will be output from the DPB as specified by the HRD according to the output timing DPB operation (used for decoded pictures output from the DPB).

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

[0150] Partition: The division of a set into subsets such that each element of the set is exactly in one of the subsets.

[0151] 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, and 4:4:4 color formats. Note that a picture can be a frame or a field. However, in a CVS, either all pictures are frames or all pictures are fields.

[0152] Picture Header (PH): A syntax structure that contains the syntax elements applicable to all slices of an encoded / decoded picture.

[0153] Picture-level slice index: When rect_slice_flag is equal to 1, the index of a slice to the list of slices in the picture in the order signaled in the PPS.

[0154] 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 will be output from the DPB, indicates the position of the associated picture in the output order relative to the output order positions of other pictures in the same CLVS that will be output from the DPB.

[0155] Picture Parameter Set (PPS): A syntax structure, as determined by the syntax elements in each slice header, that contains the syntax elements applicable to zero or more complete encoded / decoded pictures.

[0156] Picture Unit (PU): A set of NAL units that are related to each other according to a specified classification rule, are consecutive in decoding order, and contain only one coded picture.

[0157] Prediction: An example of the prediction process.

[0158] Prediction process: Estimating the currently decoded data element (e.g., sample value or motion vector) using a predicted value.

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

[0160] Predicted value: A specified value or a combination of previously decoded data elements (e.g., sample value or motion vector) used in the decoding process of subsequent data elements.

[0161] Profile: A specified subset of the syntax of this specification.

[0162] Quadtree: A tree in which a parent node can be divided into four child nodes, and each child node can become a parent node that is divided into four child nodes.

[0163] Quantization parameter: A variable used by the decoding process to scale the transform coefficient levels.

[0164] Random access: The behavior of starting the bitstream decoding process at a point other than the start point of the stream.

[0165] Random Access Decodable Leading (RADL) PU: A PU in which the coded picture is a RADL picture.

[0166] Random Access Decodable Leading (RADL) picture: A coded picture in which the nal_unit_type of each VCL NAL unit is equal to RADL_NUT. Note that all RADL pictures are leading pictures. RADL pictures are not used as reference pictures for the decoding process of subsequent pictures of the same associated IRAP picture. When field_seq_flag is equal to 0, all RADL pictures (if any) will precede all non-leading pictures of the same associated IRAP picture in decoding order.

[0167] Random Access Skipped Leading (RASL) PU: A PU in which the coded picture is a RASL picture.

[0168] Random Access Skipped Leading (RASL) Picture: A coded picture where the nal_unit_type of each VCL NAL unit is equal to RASL_NUT. Note that all RASL pictures are leading pictures of the associated CRA picture. When the NoOutputBeforeRecoveryFlag of the associated CRA picture is equal to 1, RASL pictures are not output and may not be decoded correctly since RASL pictures 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. When field_seq_flag is equal to 0, all RASL pictures (if any) will precede, in decoding order, all non-leading pictures of the same associated CRA picture.

[0169] Raster Scan: The mapping of a rectangular two-dimensional pattern to a one-dimensional pattern such that the first entry in the one-dimensional pattern is from the top row of the left-to-right scanned two-dimensional pattern and then the second, third, etc. rows (downward) of each left-to-right scanned pattern.

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

[0171] Raw Byte Sequence Payload (RBSP) Stop Bit: A bit equal to 1 in the Raw Byte Sequence Payload (RBSP) that is located after a string of data bits and that can be used to identify the position of the end within the RBSP by searching for the RBSP stop bit (the last non-zero bit in the RBSP) from the end of the RBSP.

[0172] Reference Index: An index into a reference picture list.

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

[0174] List of reference pictures: The list of reference pictures for inter prediction of P slices or B slices. Note that two lists of reference pictures, list of reference pictures 0 and list of reference pictures 1, are generated for each slice that is not an IDR picture. The only set of pictures referred to by all entries in the two lists of reference pictures associated with a picture consists of all reference pictures that can be used for inter prediction of the associated picture or any picture after the associated picture in decoding order. For the decoding process of P slices, only list of reference pictures 0 is used for inter prediction. For the decoding process of B slices, both list of reference pictures 0 and list of reference pictures 1 are used for inter prediction. For the decoding of slice data of I slices, there is no list of reference pictures for inter prediction.

[0175] List of reference pictures 0: The list of reference pictures for inter prediction of P or the first list of reference pictures for inter prediction of B slices.

[0176] List of reference pictures 1: The second list of reference pictures for inter prediction of B slices.

[0177] Reserved: A term that can be used to specify some values of specific syntax elements for future use by ITU-T|ISO / IEC and should not be used in bitstreams that conform to this version of this specification, but can be used in bitstreams that conform to future extensions of this specification by ITU-T|ISO / IEC.

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

[0179] Scaling: The process of obtaining transformed coefficients by multiplying the levels of transformed coefficients by a factor.

[0180] Scaling list: A list that associates each frequency index with a scaling factor of the scaling process.

[0181] Scaling list APS: An APS with syntax elements for constructing a scaling list.

[0182] Sequence parameter set (SPS): A syntax structure that contains syntax elements applicable to zero or more complete CLVSs, as determined by the content of the syntax elements found in the PPSs referred to by the syntax elements in each picture header.

[0183] Shall: A term used to indicate a mandatory requirement that complies with this specification. Note that when used to indicate a mandatory constraint on the value of a syntax element or on the result obtained by an operation through a specified decoding process, it is the responsibility of the encoder to ensure that the constraint is met. When used with reference to an operation performed by a decoding process, any decoding process that produces the same cropped decoded picture as the output of the decoding process described in this specification complies with the decoding process requirements of this specification. The use of this term in this document is only to emphasize example embodiments of the standard that adopt this requirement, rather than to limit the scope of the disclosed technology.

[0184] Short-Term Reference Picture (STRP): A picture with the nuh_layer_id equal to that of the current picture and marked as "for short-term reference".

[0185] Should: A term used to refer to an action of an implementation that is encouraged to be followed under normal expected circumstances, but is not a mandatory requirement that complies with this specification. The use of this term in this document is only to emphasize example embodiments of the standard that adopt this requirement, rather than to limit the scope of the disclosed technology.

[0186] Slice: An integer number of complete slices or an integer number of consecutive complete CTU rows within a picture that are contained in a single NAL unit.

[0187] Slice header: A part of the decoded slice that contains data elements related to all slices or CTU rows within the picture represented in the slice.

[0188] Source: A term used to describe video material or certain of its properties before encoding.

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

[0190] Stepwise Temporal Sub-Layer Access (STSA) PU: A PU where the decoded picture is an STSA picture.

[0191] Stepwise Temporal Sub-layer Access (STSA) Picture: A coded picture where the nal_unit_type of each VCL NAL unit is equal to STSA_NUT. Note that for inter prediction reference, pictures with the same TemporalId as the STSA picture are not used for the STSA picture. For inter prediction reference, pictures after the STSA picture in decoding order with the same TemporalId as the STSA picture do not use pictures before the STSA picture in decoding order with the same TemporalId as the STSA picture. The STSA picture enables switching from the immediately lower sub-layer up to the sub-layer containing the STSA picture at the STSA picture. The TemporalId of the STSA picture must be greater than 0.

[0192] Syntax Element Bit String (SODB): A sequence of bits representing the syntax elements present in the raw byte sequence payload before the stop bit of the raw byte sequence payload, where the leftmost bit is considered the first and most significant bit, and the rightmost bit is considered the last and least significant bit.

[0193] Sub-bitstream Extraction Process: A specified process by which NAL units in the bitstream that do not belong to the target set (determined by the target OLS index and target highest TemporalId) are removed from the bitstream, where the output sub-bitstream consists of the NAL units in the bitstream that belong to the target set.

[0194] Sub-layer: A temporal scalability layer of a temporally scalable bitstream, consisting of VCL NAL units with a specific value of the TemporalId variable and associated non-VCL NAL units.

[0195] Sub-layer Representation: A subset of the bitstream consisting of the NAL units of a specific sub-layer and the lower sub-layers.

[0196] Sub-picture: A rectangular region of one or more slices within a picture.

[0197] Sub-picture-level Slice Index: When rect_slice_flag is equal to 1, the index of the slice in the slice list to the sub-picture in the order signaled in the PPS.

[0198] Supplemental Enhancement Information (SEI) Message: A syntax structure with specified semantics that conveys information not required by the decoding process to determine the values of samples in the decoded picture.

[0199] Syntax Element: A data element represented in the bitstream.

[0200] Syntax Structure: Zero or more syntax elements that appear together in the bitstream in a specified order.

[0201] Ternary partition: Divide the rectangular MxN block of sample points into three blocks, where the vertical partition produces the first (M / 4)xN block, the second (M / 2)xN block, and the third (M / 4)xN block, and the horizontal partition produces the first Mx(N / 4) block, the second Mx(N / 2) block, and the third Mx(N / 4) block.

[0202] Tier: A specified class of level constraints imposed on the values of syntax elements in a bitstream, where the level constraints are nested within the tier, and a decoder that conforms to a certain tier and level will be able to decode all bitstreams that conform to the same tier or lower tier or any level under that level of the same level.

[0203] Slice: A rectangular region of CTUs within a specific slice column and specific slice row in a picture.

[0204] Slice column: A rectangular region of CTUs, whose height is equal to the height of the picture, and whose width is specified by a syntax element in the picture parameter set.

[0205] Slice row: A rectangular region of CTUs, whose height is specified by a syntax element in the picture parameter set, and whose width is equal to the width of the picture.

[0206] Slice scan: A specific sequence order of CTUs that divides a picture, where the CTUs are continuously sorted in the CTU raster scan within a slice, and the slices in the picture are continuously arranged in the raster scan of the slices in the picture.

[0207] Subsequent picture: A non-IRAP picture that follows an associated IRAP picture in output order and is not a STSA picture. Note that the subsequent pictures associated with an IRAP picture also follow the IRAP picture in decoding order. A picture that follows an associated IRAP picture in output order and precedes the associated IRAP picture in decoding order is not allowed.

[0208] Transformation: A part of the decoding process through which a block of transform coefficients is converted into a block of values in the spatial domain.

[0209] Transform block: A rectangular MxN sample point block generated according to the transformation during the decoding process.

[0210] Transform coefficient: During the decoding process, a scalar that is considered to be in the frequency domain and is associated with a specific one-dimensional or two-dimensional frequency index in the transformation.

[0211] Transform coefficient level: An integer representing the value associated with a specific two-dimensional frequency index during the decoding process before the scaling of the transform coefficient value is calculated.

[0212] Transform Unit (TU): When using a single codec unit tree for luminance and chrominance, the transform block of the luminance samples of a picture and the two corresponding transform blocks of the chrominance samples; or, when using two separate codec unit trees for luminance and chrominance, the transform block of the luminance samples or the two transform blocks of the chrominance samples, and the syntax structure for transforming the samples of the transform block.

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

[0214] Not specified: A term that can be used to specify some values of a particular syntax element to indicate that these values have no meaning specified in this specification and will not have a specified meaning as part of a future version of this specification.

[0215] Video Coding Layer (VCL) NAL unit: A collective term for codec strip NAL units and subsets of NAL units that have reserved values of nal_unit_type classified as VCL NAL units in this specification.

[0216] Some example bitstreams and picture formats, partitioning, scanning processes, and neighborhood relationships are described as follows. 6.3 Partitioning of Pictures, Sub - pictures, Strips, Slices, and CTUs

[0217] 6.3.2 Blocks, Quad - trees, and Multi - type Tree Structures

[0218] Samples are processed in units of CTB. The array size of each luminance CTB in width and height is CtbSizeY (in samples). The width and height of the array of each chrominance CTB are CtbWidthC and CtbHeightC (in samples), respectively.

[0219] Each CTB is assigned a splitting signaling to identify the block size for intra - prediction or inter - prediction and transform coding. The splitting is a recursive quadtree splitting. The root of the quadtree is associated with the CTB. The quadtree is divided until reaching a leaf, which is called a quadtree leaf. When the component width is not an integer multiple of the CTB size, the CTB at the right - hand component boundary is incomplete. When the component height is not an integer multiple of the CTB size, the CTB at the bottom - hand component boundary is incomplete.

[0220] The coding block is the root node of two trees (a prediction tree and a transform tree). The prediction tree specifies the position and size of the prediction block. The transform tree specifies the position and size of the transform block. The partitioning information for luminance and chrominance is the same for the prediction tree and may be the same or different for the transform tree.

[0221] Blocks and associated syntax structures are grouped into a "unit" structure as follows:

[0222] – One transform block (for monochrome pictures or when separate_colour_plane_flag equals 1) or three transform blocks (for the luminance and chrominance components of pictures in 4:2:0, 4:2:2 or 4:4:4 colour formats), along with the associated transform syntax structure units, are associated with the transform unit.

[0223] – One coding / decoding block (for monochrome pictures or when separate_colour_plane_flag equals 1) or three coding / decoding blocks (luminance and chrominance), the associated coding / decoding syntax structure and the associated transform unit are associated with the coding / decoding unit.

[0224] – One CTB (for monochrome pictures or when separate_colour_plane_flag equals 1) or three CTBs (luminance and chrominance), the associated coding tree syntax structure and the associated coding / decoding unit are associated with the CTU.

[0225] 7 Syntax and Semantics

[0226] 7.3 Syntax in Tabular Form

[0227] 7.3.1 NAL Unit Syntax

[0228] 7.3.1.1 General NAL Unit Syntax

[0229]

[0230] 7.3.1.2 NAL Unit Header Syntax

[0231]

[0232] 7.3.2 Raw Byte Sequence Payload, Subsequent Bits and Byte Alignment Syntax

[0233] 7.3.2.1 Decoding Capability Information RBSP Syntax

[0234]

[0235] 7.3.2.2 Video Parameter Set RBSP Syntax

[0236]

[0237]

[0238]

[0239] 7.3.2.3 Sequence Parameter Set RBSP Syntax

[0240]

[0241]

[0242]

[0243]

[0244]

[0245]

[0246]

[0247] 7.3.2.4 Picture Parameter Set RBSP Syntax

[0248]

[0249]

[0250]

[0251]

[0252] 7.3.2.5 Adaptive Parameter Set RBSP Syntax

[0253]

[0254]

[0255] 7.3.2.6 Picture Header RBSP Syntax

[0256]

[0257] 7.3.2.7 Picture Header Structure Syntax

[0258]

[0259]

[0260]

[0261]

[0262]

[0263] 7.3.2.8 Supplementary Enhancement Information RBSP Syntax

[0264]

[0265] 7.3.2.9 AU Delimiter RBSP Syntax

[0266]

[0267] 7.3.2.10 End of the sequence RBSP syntax

[0268] end_of_seq_rbsp(){ Descriptor }

[0269] 7.3.2.11 End of the bitstream RBSP syntax

[0270] end_of_bitstream_rbsp(){ Descriptor }

[0271] 7.4 Semantics

[0272] 7.4.1 General

[0273] The semantics associated with the syntax structures and with the syntax elements within these structures are specified in this section. When the semantics of a syntax element are specified using a table or a set of tables, any value not specified in the table shall not appear in the bitstream, unless otherwise specified in this specification.

[0274] 7.4.2 NAL unit semantics

[0275] 7.4.2.1 General NAL unit semantics

[0276] NumBytesInNalUnit specifies the size of the NAL unit in bytes. This value is required for decoding the NAL unit. Some form of delimitation of the NAL unit boundary is necessary to enable the inference of NumBytesInNalUnit. One such delimitation method for byte stream formats is specified in this specification. Other delimitation methods may be specified outside this specification.

[0277] Note 1 – The video coding layer (VCL) is specified to efficiently represent the content of video data. The NAL is specified to format this data and provide header information in a way suitable for transmission over various communication channels or storage media. All data is contained within NAL units, each of which contains an integral number of bytes. The NAL unit specifies a common format for packet-oriented and bitstream systems. The format of the NAL unit for packet-oriented transmission and byte streams is the same, except that each NAL unit may be preceded by a start code prefix and additional padding bytes in byte stream formats.

[0278] rbsp_byte[i] is the i-th byte of the RBSP. The RBSP is specified as an ordered sequence of bytes as follows:

[0279] The RBSP contains a string of data bits (SODB) as follows:

[0280] – If the SODB is empty (i.e., has a length of zero bits), then the RBSP is also empty.

[0281] – Otherwise, the RBSP contains the SODB as follows:

[0282] 1) The first byte of the RBSP contains the first (most significant, leftmost) octet of the SODB;

[0283] The next byte of the RBSP contains the next octet of the SODB, and so on until there are fewer than eight bits remaining of the SODB.

[0284] 2) The rbsp_trailing_bits() syntax structure is located after the SODB as follows:

[0285] i) The first (most significant, leftmost) bit of the last byte of the RBSP contains the remaining bits of the SODB, if any.

[0286] ii) The next bit consists of a single bit equal to 1 (i.e., rbsp_stop_one_bit).

[0287] iii) When rbsp_stop_one_bit is not the last bit of a byte-aligned byte, one or more zero-valued bits (i.e., instances of rbsp_alignment_zero_bit) occur to cause byte alignment.

[0288] 3) In some RBSPs, one or more cabac_zero_word 16-bit syntax elements equal to 0x0000 may be present after rbsp_training_bits() at the end of the RBSP.

[0289] The “_rbsp” suffix is used in the syntax tables to denote syntax structures having these RBSP properties. These structures are carried in the NAL unit as the content of the rbsp_byte[i] data bytes. The association of RBSP syntax structures with NAL units is specified in Table 5.

[0290] Note 2 – When the boundaries of the RBSP are known, the decoder can extract the SODB from the RBSP by concatenating the bits of the RBSP bytes and discarding the rbsp_stop_one_bit (the last (least significant, rightmost) bit equal to 1) and any following (less significant, more right) bits equal to 0. The data required for the decoding process is contained in the SODB portion of the RBSP.

[0291] emulation_prevention_three_byte is a byte equal to 0x03. When emulation_prevention_three_byte is present in the NAL unit, it shall be discarded by the decoding process.

[0292] The last byte of the NAL unit shall not be equal to 0x00.

[0293] Within the NAL unit, the following three-byte sequences shall not appear at any byte-aligned position:

[0294] – 0x000000

[0295] – 0x000001

[0296] – 0x000002

[0297] Within the NAL unit, any four-byte sequence starting with 0x000003 shall not appear at any byte-aligned position, except for the following sequences:

[0298] – 0x00000300

[0299] – 0x00000301

[0300] – 0x00000302

[0301] – 0x00000303

[0302] 7.4.2.2 NAL Unit Header Semantics

[0303] The forbidden_zero_bit shall be equal to 0.

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

[0305] The nuh_layer_id specifies the identifier of the layer to which a VCL NAL unit belongs or the layer to which a non-VCL NAL unit applies. The value of the nuh_layer_id shall be in the range from 0 to 55 (inclusive). Other values of the nuh_layer_id are reserved for future use by ITU-T|ISO / IEC.

[0306] For all VCL NAL units of a coded picture, the value of the nuh_layer_id shall be the same. The value of the nuh_layer_id for a coded picture or a PU is the value of the nuh_layer_id for the VCL NAL units of the coded picture or the PU.

[0307] The nuh_layer_id values of AUD, PH, EOS, and FD NAL units are subject to the following constraints:

[0308] – If nal_unit_type is equal to AUD_NUT, nuh_layer_id shall be equal to vps_layer_id[0].

[0309] – Otherwise, when nal_unit_type is equal to PH_NUT, EOS_NUT, or FD_NUT, nuh_layer_id shall be equal to the nuh_layer_id of the associated VCL NAL unit.

[0310] Note 1 – The nuh_layer_id values of DCI, VPS, and EOB NAL units are not restricted.

[0311] For all pictures of CVSS AU, the value of nal_unit_type shall be the same.

[0312] nal_unit_type specifies the NAL unit type, i.e., the type of the RBSP data structure contained in the NAL unit as specified in Table 5.

[0313] NAL units with nal_unit_type in the range UNSPEC_28…UNSPEC_31 (inclusive) (whose semantics are not specified) shall not affect the decoding process specified in this specification.

[0314] Note 2 – NAL unit types in the range UNSPEC_28…UNSPEC_31 (inclusive) may be used as determined by the application. The decoding process for these values of nal_unit_type is not specified in this specification. Since different applications may use these NAL unit types for different purposes, great care must be taken when designing an encoder that generates NAL units using these nal_unit_type values and when designing a decoder that interprets the content of NAL units using these nal_unit_type values. This specification does not define any management of these values. These nal_unit_type values may only be applicable in contexts where "conflicts" (i.e., different definitions of the meaning of the content of NAL units with the same nal_unit_type value) are unimportant, impossible, or are managed (e.g., defined or administered) in the control application or transmission specification, or in an environment that controls the bitstream distribution.

[0315] For purposes other than the following: determining the amount of data in the DU of a bitstream decoder, the content of all NAL units using the reserved values of nal_unit_type shall be ignored (deleted and discarded from the bitstream).

[0316] Note 3 – This requirement allows for future definition of compatible extensions to this specification.

[0317] Table 5 – NAL unit type codes and NAL unit type categories

[0318]

[0319]

[0320] Note 4 – A Clean Random Access (CRA) picture may have associated RASL or RADL pictures present in the bitstream.

[0321] Note 5 – An Instantaneous Decoding Refresh (IDR) picture with nal_unit_type equal to IDR_N_LP has no associated leading pictures in the bitstream. An IDR picture with nal_unit_type equal to IDR_W_RADL has no associated RASL pictures present in the bitstream, but may have associated RADL pictures in the bitstream.

[0322] For the VCL NAL units of any particular picture, the following applies:

[0323] – If mixed_nalu_types_in_pic_flag is equal to 0, then for all coded slice NAL units of the picture, the value of nal_unit_type shall be the same. The picture or PU is said to have the same NAL unit type as the coded slice NAL units of the picture or PU.

[0324] – Otherwise (mixed_nalu_types_in_pic_flag is equal to 1), the VCL NAL units of one or more sub - pictures in the picture all have a particular 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 in the picture all have a particular different value of nal_unit_type equal to TRAIL_NUT, RADL_NUT, or RASL_NUT.

[0325] For a single - layer bitstream, the following constraints apply:

[0326] – Except for the first picture in the bitstream in decoding order, each picture is considered to be associated with the previous IRAP picture in decoding order.

[0327] – When a picture is a leading picture of an IRAP picture, it shall be a RADL picture or a RASL picture.

[0328] – When a picture is a subsequent picture of an IRAP picture, it shall not be a RADL picture or a RASL picture.

[0329] – There shall be no RASL pictures in the bitstream associated with an IDR picture.

[0330] – There shall be no RADL pictures in the bitstream associated with an IDR picture with nal_unit_type equal to IDR_N_LP.

[0331] Note 6: If each parameter set is available when it is referenced (in the bitstream or by an external means not specified in this specification), random access can be performed at the IRAP PU position by discarding all PUs before the IRAP PU (and correctly decoding the IRAP picture and all subsequent non-RASL pictures in decoding order).

[0332] – Any picture before an IRAP picture in decoding order shall be before the IRAP picture in output order and shall be before any RADL picture associated with the IRAP picture in output order.

[0333] – Any RASL picture associated with a CRA picture shall be before any RADL picture associated with the CRA picture in output order.

[0334] – Any RASL picture associated with a CRA picture shall immediately follow any IRAP picture before the CRA picture in decoding order in output order.

[0335] – If field_seq_flag is equal to 0 and the current picture is a leading picture associated with an IRAP picture, it shall be before all non-leading pictures associated with the same IRAP picture in decoding order. Otherwise, let picA and picB be the first and last leading pictures associated with the IRAP picture in decoding order, respectively. There shall be at most one non-leading picture before picA in decoding order, and there shall be no non-leading pictures between picA and picB in decoding order.

[0336] num_temporal_id_plus1 minus 1 specifies the temporal identifier of the NAL unit.

[0337] The value of nuh_temporal_id_plus1 shall not be equal to 0.

[0338] Derive the variable TemporalId as follows:

[0339] TemporalId = nuh_temporal_id_plus1 - 1 (36)

[0340] When nal_unit_type is in the range from IDR_W_RADL to RSV_IRAP_12 (inclusive), TemporalId shall be equal to 0.

[0341] When nal_unit_type is equal to STSA_NUT and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, TemporalId shall not be equal to 0.

[0342] For all VCL NAL units of an AU, the value of TemporalId shall be the same. The TemporalId value of an encoded / decoded picture PU or AU is the TemporalId value of the VCL NAL units of the encoded / decoded picture PU or AU. The TemporalId value of a sublayer representation is the maximum value of the TemporalIds of all VCL NAL units in the sublayer representation.

[0343] The TemporalId value of non-VCL NAL units is subject to the following constraints:

[0344] – If nal_unit_type is equal to DCI_NUT, VPS_NUT or SPS_NUT, then TemporalId shall be equal to 0, and the TemporalId of the AU containing the NAL unit shall be equal to 0.

[0345] - Otherwise, if nal_unit_type is equal to PH_NUT, then TemporalId shall be equal to the TemporalId of the PU containing the NAL unit.

[0346] – Otherwise, if nal_unit_type is equal to EOS_NUT or EOB_NUT, then TemporalId shall be equal to 0.

[0347] – Otherwise, if nal_unit_type is equal to AUD_NUT, FD_NUT, PREFIX_SEI_NUT or SUFFIX_SEI_NUT, then TemporalId shall be equal to the TemporalId of the AU containing the NAL unit.

[0348] – Otherwise, when nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT or SUFFIX_APS_NUT, the TemporalId shall be greater than or equal to the TemporalId of the PU containing the NAL unit.

[0349] Note 7 - When the NAL unit is a non-VCL NAL unit, the value of the TemporalId is equal to the minimum of the TemporalId values of all AUs applicable to the non-VCL NAL unit. When nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT or SUFFIX_APS_NUT, the TemporalId may be greater than or equal to the TemporalId containing the AU, since all PPSs and APSs can be included at the beginning of the bitstream (e.g., when they are transmitted out-of-band and the receiver places them at the beginning of the bitstream), where the TemporalId of the first decoded picture is equal to 0.

[0350] 7.4.2.3 Encapsulation of SODB in RBSP (Informative)

[0351] This clause does not form part of this specification.

[0352] For the following purposes, the encapsulation form of SODB in RBSP and the use of emulation_prevention_three_byte for encapsulation of RBSP within the NAL unit are described:

[0353] – To prevent the emulation of start codes within the NAL unit while allowing the representation of any SODB within the NAL unit,

[0354] – To enable the identification of the end of the SODB within the NAL unit by searching for rbsp_stop_one_bit starting from the end of the RBSP in the RBSP data,

[0355] – To enable the NAL unit to be larger than the SODB in some cases (using one or more cabac_zero_word syntax elements).

[0356] The encoder can generate the NAL unit from the RBSP through the following procedure:

[0357] 1. Search for the byte-aligned bits of the following binary pattern in the RBSP data:

[0358] ‘00000000 00000000 000000xx’ (where ’xx’ represents any two-bit pattern: “00”, “01”, “10” or “11”),

[0359] and insert a byte equal to 0x03 to replace the bit pattern with the pattern:

[0360] '00000000 00000000 00000011 000000xx',

[0361] and finally, when the last byte of the RBSP data is equal to 0x00 (which occurs only when the RBSP ends with a cabac_zero_word), append a last byte equal to 0x03 to the end of the data. When searching for the next occurrence of byte-aligned bits with the binary pattern specified above in the RBSP data, the last zero byte of the byte-aligned three-byte sequence 0x000000 in the RBSP (which is replaced with the four-byte sequence 0x00000300) will be considered.

[0362] 2. The resulting byte sequence is then prefixed with a NAL unit header, where nal_unit_type indicates the type of the RBSP data structure within the NAL unit.

[0363] The process specified above results in the construction of the entire NAL unit.

[0364] This process can allow any SODB to be represented within the NAL unit while ensuring the following two items:

[0365] – No byte-aligned start code prefix is emulated within the NAL unit.

[0366] – Within the NAL unit, no sequence of 8 zero-valued bits followed by a start code prefix is emulated regardless of the byte alignment.

[0367] 7.4.2.4 Order of NAL units in the bitstream

[0368] 7.4.2.4.1 General

[0369] The subclauses of Clause 7.4.2.4 specify the restrictions on the order of NAL units in the bitstream.

[0370] Any order of NAL units in the bitstream that obeys these constraints is referred to in this document as the decoding order of the NAL units.

[0371] Within a NAL unit, the syntax in clauses 7.3 and D.2 specifies the decoding order of syntax elements. When the NAL unit specified in this specification includes VUI parameters or any 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 those syntax elements. The decoder shall be able to receive NAL units and their syntax elements in the decoding order.

[0372] 7.4.2.4.2 Order of AUs and their association with CVSs

[0373] The bitstream consists of one or more CVSs.

[0374] A CVS consists of one or more AUs. The order of PUs and their association with AUs are described in clause 7.4.2.4.3.

[0375] The first AU of a CVS is the CVSS AU, where each current PU is a CLVSS PU, which is an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1 or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1.

[0376] For each layer present in a CVS, each CVSS AU shall have PUs.

[0377] Bitstream conformance requires that, when present, the next AU after the AU containing the EOS NAL unit shall be a CVSS AU.

[0378] 7.4.2.4.3 Order of PUs and their association with AUs

[0379] An AU consists of one or more PUs in increasing order of nuh_layer_id. The order of NAL units and coded pictures and their association with PUs are described in clause 7.4.2.4.4.

[0380] There can be at most one AUD NAL unit in an AU. When an AUD NAL unit is present in an AU, it shall be the first NAL unit of the AU and, therefore, it is the first NAL unit of the first PU of the AU.

[0381] There can be at most one EOB NAL unit in an AU. When an EOB NAL unit is present in an AU, it shall be the last NAL unit of the AU and, therefore, it is the last NAL unit of the last PU of the AU.

[0382] When the VCL NAL unit is the first VCL NAL unit after a PH NAL unit and one or more of the following conditions hold, the VCL NAL unit is the first VCL NAL unit of an AU (and thus, the PU containing the VCL NAL unit is the first PU of an AU):

[0383] - The value of nuh_layer_id of the VCL NAL unit is less than the nuh_layer_id of the previous picture in decoding order.

[0384] – The value of ph_pic_order_cnt_lsb of the VCL NAL unit is different in decoding order from the ph_pic_order_cnt_lsb of the previous picture.

[0385] – The PicOrderCntVal derived for the VCL NAL unit is different in decoding order from the PicOrderCntVal of the previous picture.

[0386] Let FirstVclNalUnitInAu be the first VCL NAL unit of an AU. The start of a new AU is specified by the first of any of the following NAL units before FirstVclNalUnitInAu and after the last VCL NAL unit (if any) before FirstVclNalUnitInAu:

[0387] – AUD NAL unit (if it exists),

[0388] – DCI NAL unit (if it exists),

[0389] – VPS NAL unit (if it exists),

[0390] – SPS NAL unit (if it exists),

[0391] – PPS NAL unit (if it exists),

[0392] – Prefix APS NAL unit (if it exists),

[0393] – PH NAL unit (if it exists),

[0394] – Prefix SEI NAL unit (if it exists),

[0395] – NAL unit with nal_unit_type equal to RSV_NVCL_26 (if it exists),

[0396] – NAL unit with nal_unit_type in the range UNSPEC28..UNSPEC29 (if any).

[0397] Note: The first NAL unit (if any) before firstVclNalUnitInAu and after the last VCL NAL unit before firstVclNalUnitInAu can only be one of the NAL units listed above.

[0398] One requirement for bitstream conformance is that when present, the next picture unit (PU) of a particular layer after a PU that belongs to the same layer and contains an EOS NAL unit shall be a CLVSS PU, which is either an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1 or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1.

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

[0400] A PU consists of zero or one PH NAL unit, one coded picture (including one or more VCL NAL units), and zero or more other non-VCL NAL units. The association of VCL NAL units with the coded picture is described in Clause 7.4.2.4.5.

[0401] When a picture consists of more than one VCL NAL unit, a PH NAL unit shall be present in the PU.

[0402] If a PH NAL unit is present in the PU, the first VCL NAL unit of the picture is the first VCL NAL unit that follows the PH NAL unit in the decoding order of the picture. Otherwise (no PH NAL unit in the PU), the first VCL NAL unit of the picture is the only VCL NAL unit of the picture.

[0403] The order of non-VCL NAL units (except AUD and EOB NAL units) within a PU shall comply with the following constraints:

[0404] – When a PH NAL unit is present in the PU, it shall be before the first VCL NAL unit of the PU.

[0405] – When any DCI NAL unit, VPS NAL unit, SPS NAL unit, PPS NAL unit, prefix APS NAL unit, prefix SEI NAL unit, NAL unit with nal_unit_type equal to RSV_NVCL_26, or NAL unit with nal_unit_type in the range UNSPEC_28..UNSPEC_29 is present in the PU, they shall not follow the last VCL NAL unit of the PU.

[0406] – When any DCI NAL unit, VPS NAL unit, SPS NAL unit, or PPS NAL unit is present in a PU, they shall be located before the PH NAL unit (if present) of the PU and shall be located before the first VCL NAL unit of the PU.

[0407] – NAL units in a PU with nal_unit_type equal to SUFFIX_APS_NUT, SUFFIX_SEI_NUT, FD_NUT, or RSV_NVCL_27, or in the range of UNSPEC_30..UNSPEC_31 shall not be located before the first VCL NAL unit of the PU.

[0408] – When an EOS NAL unit is present in a PU, it shall be the last NAL unit among all NAL units except the EOB NAL unit (if present).

[0409] 7.4.2.4.5 Order of VCL NAL Units and Their Association with Decoded / Encoded Pictures

[0410] The order of VCL NAL units within a decoded / encoded picture is subject to the following constraints:

[0411] – For any two decoded / encoded slice NAL units A and B of a decoded / encoded picture, let subpicIdxA and subpicIdxB be their sub-picture level index values, and sliceAddrA and sliceAddrB be their slice_address values.

[0412] – The decoded / encoded slice NAL unit A shall be located before the decoded / encoded slice NAL unit B when any of the following conditions is true:

[0413] – subpicIdxA is less than subpicIdxB.

[0414] – subpicIdxA is equal to subpicIdxB, and sliceAddrA is less than sliceAddrB.

[0415] 7.4.3. Raw Byte Sequence Payload, Trailing Bits, and Byte Alignment Semantics

[0416] 7.4.3.1 Decoding Capability Information RBSP Semantics

[0417] The DCI RBSP can be made available to the decoder by being present in the bitstream, included in at least the first AU of the bitstream, or provided by external means.

[0418] Note 1 – The information contained in the DCI RBSP is not essential for the operation of the decoding process.

[0419] When present, all DCI NAL units in the bitstream shall have the same content.

[0420] dci_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers in the layers that may be present in each CVS of the bitstream. The value of dci_max_sublayers_minus1 shall be between 0 and 6, inclusive of 0 and 6.

[0421] dci_reserved_zero_bit shall be equal to 0 in a bitstream compliant with this version of this specification. The value 1 of dci_reserved_zero_bit is reserved for future use by ITU-T|ISO / IEC.

[0422] dci_num_ptls_minus1 plus 1 specifies the number of profile_tier_level() syntax structures in the DCI NAL unit.

[0423] The requirement for bitstream conformance is that each OLS in the CVSs in the bitstream shall conform to at least one profile_tier_level() syntax structure in the DCI NAL unit.

[0424] Note 2: The DCI NAL unit may include PTL information, possibly carried in multiple profile_tier_level() syntax structures, which together apply to multiple OLSs and there is no need to include the PTL information for each OLS separately.

[0425] A dci_extension_flag equal to 0 specifies that the dci_extension_data_flag syntax element is not present in the DCI RBSP syntax structure. A dci_extension_flag equal to 1 specifies that the dci_extension_data_flag syntax element is present in the DCI RBSP syntax structure.

[0426] dci_extension_data_flag may have any value. Its presence and value do not affect the decoder's conformance to the profile. Decoders compliant with this version of this specification shall ignore all dci_extension_data_flag syntax elements.

[0427] 7.4.3.2 Video parameter set RBSP semantics

[0428] The VPS RBSP shall be available for the decoding process before being referenced, included in at least one AU with TemporalId equal to 0, or provided externally.

[0429] All VPS NAL units with a specific value of vps_video_parameter_set_id in the CVS shall have the same content.

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

[0431] vps_max_layers_minus1 plus 1 specifies the maximum allowed number of layers in each CVS that references the VPS.

[0432] vps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that may exist in the layers in each CVS that references the VPS. The value of vps_max_sublayers_minus1 shall be between 0 and 6 (inclusive of 0 and 6).

[0433] 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 the layers in each CVS that references the VPS may or may not have the same number of temporal sublayers. When not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1.

[0434] vps_all_independent_layers_flag equal to 1 specifies independent encoding and decoding of all layers in the CVS 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. When not present, the value of vps_all_independent_layers_flag is inferred to be equal to 1.

[0435] vps_layer_id[i] specifies the nuh_layer_id value of 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 the value of vps_layer_id[n].

[0436] When vps_independent_layer_flag[i] is equal to 1, it is specified that the layer with index i does not use inter-layer prediction. When vps_independent_layer_flag[i] is equal to 0, it is specified that the layer with index i can use inter-layer prediction, and the syntax element vps_direct_ref_layer_flag[i][j] (where j ranges from 0 to i - 1 (inclusive)) exists in the VPS. When it does not exist, the value of vps_independent_layer_flag[i] is inferred to be equal to 1.

[0437] When vps_direct_ref_layer_flag[i][j] is equal to 0, it is specified that the layer with index j is not a direct reference layer of the layer with index i. When vps_direct_ref_layer_flag[i][j] is equal to 1, it is specified that the layer with index j is a direct reference layer of the layer with index i. When vps_direct_ref_layer_flag[i][j] (where i and j range from 0 to vps_max_layers_minus1 (inclusive)) does not exist, it is inferred to be equal to 0. When vps_independent_layer_flag[i] is equal to 0, there should be at least one j value in the range from 0 to i - 1 (inclusive) such that the value of vps_direct_ref_layer_flag[i][j] is equal to 1.

[0438] The derivation of the variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsRefLayerFlag[j] is as follows:

[0439]

[0440]

[0441] The variable GeneralLayerIdx[i] that specifies the layer index of the layer with nuh_layer_id equal to vps_layer_id[i] is derived as follows:

[0442] for(i = 0; i <= vps_max_layers_minus1; i++) (38)

[0443] GeneralLayerIdx[vps_layer_id[i]] = i

[0444] For any two different values of i and j in the range of 0 to vps_max_layers_minus1 (inclusive), when dependencyFlag[i][j] is equal to 1, the bitstream conformance requirement is that the values of chroma_format_idc and bit_depth_minus8 applicable to layer i should be equal to the values of chroma_format_idc and bit_depth_minus8 applicable to layer j, respectively.

[0445] max_tid_ref_present_flag[i] being equal to 1 specifies the existence of the syntax element max_tid_il_ref_pics_plus1[i]. max_tid_ref_present_flag[i] being equal to 0 specifies the non-existence of the syntax element max_tid_il_ref_pics_plus1[i].

[0446] max_tid_il_ref_pics_plus1[i] being equal to 0 specifies that inter-layer prediction is not used for non-IRAP pictures of layer i. max_tid_il_ref_pics_plus1[i] being greater than 0 specifies that for decoding pictures of layer i, no pictures with a TemporalId greater than max_tid_il_ref_pics_plus1[i] - 1 are used as ILRP. When not present, the value of max_tid_il_ref_pics_plus1[i] is inferred to be equal to 7.

[0447] each_layer_is_an_ols_flag being equal to 1 specifies that each OLS contains only one layer, and each layer in the CVS of the VPS reference is itself an OLS, where the single included layer is the only output layer. each_layer_is_an_ols_flag being equal to 0 indicates that an OLS may contain multiple layers. 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, when 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.

[0448] ols_mode_idc being equal to 0 specifies that the total number of OLSs specified by the VPS is equal to vps_max_layers_minus1 + 1, the i-th OLS includes layers with layer indices from 0 to i (inclusive), and for each OLS, only the highest layer in the OLS is output.

[0449] ols_mode_idc being equal to 1 specifies that the total number of OLSs specified by the VPS is equal to vps_max_layers_minus1 + 1, the i-th OLS includes the layers with layer indices from 0 to i (inclusive), and for each OLS, all the layers in the output OLS are output.

[0450] ols_mode_idc being equal to 2 specifies that the total number of OLSs specified by the VPS is signaled explicitly, and for each OLS, the output layers are signaled explicitly, and the other layers are direct or indirect reference layers of the output layers of the OLS.

[0451] The value of ols_mode_idc shall be in the range of 0 to 2 (inclusive). The value 3 of ols_mode_idc is reserved for future use by ITU-T|ISO / IEC.

[0452] When 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.

[0453] num_output_layer_sets_minus1 plus 1 specifies the total number of OLSs specified by the VPS when ols_mode_idc is equal to 2.

[0454] Derive the variable TotalNumOlss that specifies the total number of OLSs specified by the VPS as follows:

[0455]

[0456] ols_output_layer_flag[i][j] being 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] being 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_idc is equal to 2.

[0457] Derive 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 sub-layers in 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 in the following manner:

[0458]

[0459]

[0460] For each i value in the range from 0 to vps_max_layers_minus1 (inclusive), the values of LayerUsedAsRefLayerFlag[i] and LayerUsedAsOutputLayerFlag[i] should not both be equal to 0. In other words, there should not be a layer that is neither an output layer of at least one OLS nor a direct reference layer of any other layer.

[0461] For each OLS, there should be at least one layer as an output layer. In other words, for any i value in the range from 0 to TotalNumOlss - 1 (inclusive), the value of NumOutputLayersInOls[i] should be greater than or equal to 1.

[0462] Derive the variable NumLayersInOls[i] that specifies the number of layers in the i-th OLS and the variable LayerIdInOls[i][j] that specifies the nuh_layer_id value of the j-th layer in the i-th OLS in the following manner:

[0463]

[0464]

[0465] Note 1 – The 0-th OLS only contains the lowest layer (i.e., the layer with nuh_layer_id equal to vps_layer_id[0]), and for the 0-th OLS, only the contained layer is output.

[0466] Derive the variable OlsLayerIdx[i][j] that specifies the OLS layer index of the layer with nuh_layer_id equal to LayerIdInOls[i][j] in the following manner:

[0467]

[0468] The lowest layer in each OLS shall be an independent layer. In other words, for each i in the range from 0 to TotalNumOlss - 1 (inclusive), the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]] shall be equal to 1.

[0469] Each layer shall be included in at least one OLS specified by the VPS. In other words, for each layer where the specific value nuh_layer_id nuhLayerId is equal to one of vps_layer_id[k] (for k in the range from 0 to vps_max_layers_minus1 (inclusive)), there shall be at least one pair of values of i and j, where i is in the range from 0 to TotalNumOlss - 1 (inclusive) and j is in the range from 0 to NumLayersInOls[i] - 1 (inclusive), such that the value of LayerIdInOls[i][j] is equal to nuhLayerId.

[0470] vps_num_ptls_minus1 plus 1 specifies the number of profile_tier_level() syntax structures in the VPS. The value of vps_num_ptls_minus1 shall be less than TotalNumOlss.

[0471] pt_present_flag[i] being equal to 1 specifies the presence of profile, tier, and general constraint information in the i-th profile_tier_level() syntax structure in the VPS. pt_present_flag[i] being equal to 0 specifies the absence of profile, tier, and general constraint information 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. When pt_present_flag[i] is equal to 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.

[0472] ptl_max_temporal_id[i] specifies the TemporalId of the highest sublayer representation with level information in the i-th profile_tier_level() syntax structure in the VPS. The value of ptl_max_temporal_id[i] shall be in the range of 0 to vps_max_sublayers_minus1 (inclusive). When vps_max_sublayers_minus1 is equal to 0, the value of ptl_max_temporal_id[i] is inferred to be equal to 0. When 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.

[0473] vps_ptl_alignment_zero_bit shall be equal to 0.

[0474] ols_ptl_idx[i] specifies the index of the profile_tier_level() syntax structure in the list of profile_tier_level() syntax structures in the VPS that applies to the i-th OLS. When present, the value of ols_ptl_idx[i] shall be in the range of 0 to vps_num_ptls_minus1 (inclusive). When vps_num_ptls_minus1 is equal to 0, the value of ols_ptl_idx[i] is inferred to be equal to 0.

[0475] When NumLayersInOls[i] is equal to 1, the profile_tier_level() syntax structure that applies to the i-th OLS also exists in the SPS referred to by the layer in the i-th OLS. A requirement for bitstream compliance is that when NumLayersInOls[i] is equal to 1, the profile_tier_level() syntax structures signaled in the VPS and SPS for the i-th OLS shall be the same.

[0476] vps_num_dpb_params specifies the number of dpb_parameters() syntax structures in the VPS. The value of vps_num_dpb_params shall be between 0 and 16 (inclusive). When not present, the value of vps_num_dpb_params is inferred to be equal to 0.

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

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

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

[0480] ols_dpb_pic_height[i] specifies the height of each picture storage buffer of the i-th OLS, in units of luminance samples.

[0481] ols_dpb_params_idx[i] specifies the index of the dpb_parameters() syntax structure in the list of dpb_parameters() syntax structures in the VPS that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params-1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.

[0482] When NumLayersInOls[i] is equal to 1, the dpb_parameters() syntax structure applicable to the i-th OLS exists in the SPS referred to by the layer in the i-th OLS.

[0483] The vps_general_hrd_params_present_flag being equal to 1 specifies that the syntax structure general_hrd_parameters() and other HRD parameters exist in the VPS RBSP syntax structure. The vps_general_hrd_params_present_flag being equal to 0 specifies that the syntax structure general_hrd_parameters() and other HRD parameters do not exist in the VPS RBSP syntax structure. When not present, the value of vps_general_hrd_params_present_flag is inferred to be equal to 0.

[0484] When NumLayersInOls[i] is equal to 1, the general_hrd_parameters() syntax structure applicable to the i-th OLS appears in the SPS referred to by the layer in the i-th OLS.

[0485] The vps_sublayer_cpb_params_present_flag being equal to 1 specifies that the i-th ols_hrd_parameters() syntax structure in the VPS contains HRD parameters represented by sublayers, where the TemporalId is between 0 and hrd_max_tid[i] (inclusive). The vps_sublayer_cpb_params_present_flag being equal to 0 specifies that the i-th ols_hrd_parameters() syntax structure in the VPS contains HRD parameters represented by sublayers, where the TemporalId is only equal to hrd_max_tid[i]. When vps_max_sublayers_minus1 is equal to 0, the value of vps_sublayer_cpb_params_present_flag is inferred to be equal to 0.

[0486] When vps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters represented by the sublayer with a TemporalId in the range of 0 to hrd_max_tid[i] (inclusive) are inferred to be the same as the HRD parameters represented by the sublayer with TemporalId equal to hrd_max_tid[i]. These include the HRD parameters starting from the fixed_pic_rate_general_flag[i] syntax element up to the sublayer_hrd_parameters(i) syntax structure under the "if(general_vcl_hrd_params_present_flag)" condition in the ols_hrd_parameters syntax structure.

[0487] num_ols_hrd_params_minus1 plus 1 specifies the number of ols_hrd_parameters() syntax structures present in the general_hrd_parameters() syntax structure 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 (inclusive).

[0488] hrd_max_tid[i] specifies the TemporalId of the highest sublayer representation for which the HRD parameters are included in the i-th ols_hrd_parameters() syntax structure. The value of hrd_max_tid[i] shall be in the range of 0 to vps_max_sublayers_minus1 (inclusive). When vps_max_sublayers_minus1 is equal to 0, the value of hrd_max_tid[i] is inferred to be equal to 0. When vps_max_sublayers_minus1 is greater than 0 and vps_all_layers_same_num_sublayers_flag is equal to 1, the value of hrd_max_tid[i] is inferred to be equal to vps_max_sublayers_minus1.

[0489] ols_hrd_idx[i] specifies the index of the ols_hrd_parameters() syntax structure applicable to the i-th OLS in the list of ols_hrd_parameters() syntax structures in the VPS when NumLayersInOls[i] is greater than 1. The value of ols_hrd_idx[[i] shall be in the range of 0 to num_ols_hrd_params_minus1 (inclusive).

[0490] When NumLayersInOls[i] is equal to 1, the ols_hrd_parameters() syntax structure applicable to the i-th OLS appears in the SPS referenced by the layer in the i-th OLS.

[0491] If the value of num_ols_hrd_param_minus1 + 1 is equal to TotalNumOlss, the value of ols_hrd_idx[i] is inferred to be equal to i. Otherwise, when 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.

[0492] vps_extension_flag being equal to 0 specifies that there is no vps_extension_data_flag syntax element present in the VPS RBSP syntax structure. vps_extension_flag being equal to 1 specifies that there is a vps_extension_data_flag syntax element present in the VPS RBSP syntax structure.

[0493] vps_extension_data_flag can have any value. Its presence and value do not affect the decoder's compliance with the profiles specified in this version of the specification. Decoders compliant with this version of the specification shall ignore all vps_extension_data_flag syntax elements.

[0494] 7.4.3.3 Sequence Parameter Set RBSP Semantics

[0495] The SPS RBSP shall be available for the decoding process before it is referenced, included in at least one AU where TemporalId is equal to 0, or provided externally.

[0496] All SPS NAL units with a specific value of sps_seq_parameter_set_id in the CVS shall have the same content.

[0497] The sps_seq_parameter_set_id provides an identifier for the SPS for reference by other syntax elements.

[0498] Regardless of the value of nuh_layer_id, the SPS NAL unit shares the same value space of sps_seq_parameter_set_id.

[0499] Let spsLayerId be the value of nuh_layer_id of a specific SPS NAL unit, and vclLayerId be the value of nuh_layer_id of a specific VCL NAL unit. A specific VCL NAL unit shall not refer to a specific SPS NAL unit unless spsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to spsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.

[0500] When sps_video_parameter_set_id is greater than 0, it specifies the value of vps_video_parameter_set_id of the VPS referred to by the SPS.

[0501] When sps_video_parameter_set_id is equal to 0, the following applies:

[0502] – The SPS does not refer to a VPS.

[0503] – When decoding each CLVS that refers to the SPS, no VPS is referred to.

[0504] – The value of vps_max_layers_minus1 is inferred to be equal to 0.

[0505] – The CVS shall contain only one layer (i.e., all VCL NAL units in the CVS shall have the same value of nuh_layer_id).

[0506] – The value of GeneralLayerIdx[nuh_layer_id] is inferred to be equal to 0.

[0507] – The value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is inferred to be equal to 1.

[0508] When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the nuh_layer_id of the SPS referred to by the CLVS with a specific nuh_layer_id value nuhLayerId shall be equal to nuhLayerId.

[0509] In all SPSs referred to by the CLVS in the CVS, the value of sps_video_parameter_set_id shall be the same.

[0510] sps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that may exist in each CLVS that refers to the SPS. The value of sps_max_sublayers_minus1 shall be in the range of 0 to vps_max_sublayers_minus1 (inclusive).

[0511] sps_reserved_zero_4bits shall be equal to 0 in the bitstream that conforms to this version of this specification. Other values of sps_reserved_zero_4bits are reserved for future use by ITU-T|ISO / IEC.

[0512] sps_ptl_dpb_hrd_params_present_flag being equal to 1 specifies that the profile_tier_level() syntax structure and the dpb_parameters() syntax structure exist in the SPS, and the general_hrd_parameters() syntax structure and the ols_hrd_parameters() syntax structure may also exist in the SPS. sps_ptl_dpb_hrd_params_present_flag being equal to 0 specifies that these four syntax structures do not exist 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]].

[0513] gdr_enabled_flag being equal to 1 specifies that GDR pictures may exist in the CLVS that refers to the SPS. gdr_enabled_flag being equal to 0 specifies that GDR pictures do not exist in the CLVS that refers to the SPS.

[0514] chroma_format_idc specifies the chroma sampling relative to the luma sampling as specified in Clause 6.2.

[0515] When separate_colour_plane_flag equals 1, it is specified that the three color components in the 4:4:4 chroma format are separately encoded and decoded. When separate_colour_plane_flag equals 0, it is specified that the color components are not separately encoded and decoded. When separate_colour_plane_flag does not exist, it is inferred to be equal to 0. When separate_colour_plane_flag equals 1, the decoded picture consists of three separate components, each composed of the encoded and decoded samples of a color plane (Y, Cb, or Cr), and the monochrome encoding and decoding syntax is used. In this case, each color plane is associated with a specific_color_plane_id value.

[0516] Note 1 – There is no dependency in the decoding process between color planes with different color_plane_id values. For example, the decoding process of a monochrome picture with one color_plane_id value does not use any data from a monochrome picture with a different color_plane_id value for inter-frame prediction.

[0517] According to the value of separate_colour_plane_flag, the value of the variable ChromaArrayType is assigned as follows:

[0518] – If separate_colour_plane_flag equals 0, ChromaArrayType is set to be equal to chroma_format_idc.

[0519] – Otherwise (separate_colour_plane_flag equals 1), ChromaArrayType is set to be equal to 0.

[0520] When res_change_in_clvs_allowed_flag equals 1, it is specified that the spatial resolution of the picture may change within the CLVS that references the SPS. When res_change_in_clvs_allowed_flag equals 0, it is specified that the spatial resolution of the picture does not change within any CLVS that references the SPS.

[0521] pic_width_max_in_luma_samples specifies the maximum width of each decoded picture that references the SPS, in terms 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).

[0522] One requirement for bitstream conformance is that for any OLS that contains an OLS index i that references one or more SPS layers, the value of pic_width_max_in_luma_samples shall be less than or equal to the value of ols_dpb_pic_width[i].

[0523] pic_height_max_in_luma_samples specifies the maximum height of each decoded picture that references the SPS, in luma samples. pic_height_max_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8, MinCbSizeY).

[0524] One requirement for bitstream conformance is that for any OLS that contains an OLS index i that references one or more layers of the SPS, the value of pic_height_max_in_luma_samples shall be less than or equal to the value of ols_dpb_pic_height[i].

[0525] sps_conformance_window_flag being equal to 1 indicates that the conformance cropping window offset parameters follow immediately in the SPS. sps_conformance_window_flag being equal to 0 indicates that there are no conformance cropping window offset parameters in the SPS.

[0526] sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset specify the cropping window applied to the picture where 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. When 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.

[0527] The consistency cropping window contains luma samples, where the horizontal picture coordinates range from SubWidthC * sps_conf_win_left_offset to pic_width_max_in_luma_samples - (SubWidthC * sps_conf_win_right_offset + 1) and the vertical picture coordinates range from SubHeightC * sps_conf_win_top_offset to pic_height_max_in_luma_samples - (SubHeightC * sps_conf_win_bottom_offset + 1) (inclusive).

[0528] The value of SubWidthC * (sps_conf_win_left_offset + sps_conf_win_right_offset) shall be less than pic_width_max_in_luma_samples, and the value of SubHeightC * (sps_conf_win_top_offset + sps_conf_win_bottom_offset) shall be less than pic_height_max_in_luma_samples.

[0529] When ChromaArrayType is not equal to 0, the corresponding specified samples of the two chroma arrays are the samples with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample.

[0530] Note 2 – The consistency cropping window offset parameters are only applied to the output. All internal decoding processes are applied to the uncropped picture size.

[0531] sps_log2_ctu_size_minus5 plus 5 specifies the luma coding tree block size of each CTU. The value of sps_log2_ctu_size_minus5 shall be in the range of 0 to 2 (inclusive). The value 3 of sps_log2_ctu_size_minus5 is reserved for future use by ITU - T|ISO / IEC.

[0532] The derivation of the variables CtbLog2SizeY and CtbSizeY is as follows:

[0533] CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5 (43)

[0534] CtbSizeY = 1 << CtbLog2SizeY (44)

[0535] When subpic_info_present_flag equals 1, it is specified that there is sub-picture information for CLVS, and there may be one or more sub-pictures in each picture of CLVS. When subpic_info_present_flag equals 0, it is specified that there is no sub-picture information for CLVS, and there is only one sub-picture in each picture of CLVS.

[0536] When res_change_in_clvs_allowed_flag equals 1, the value of subpic_info_present_flag shall equal 0.

[0537] Note 3 – When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the sub-pictures of the input bitstream of the sub-bitstream extraction process, it may be necessary to set the value of subpic_info_present_flag to equal 1 in the RBSP of the SPS.

[0538] sps_num_subpics_minus1 plus 1 specifies the number of sub-pictures in each picture in 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 (inclusive). When it does not exist, the value of sps_num_subpics_minus1 is inferred to be equal to 0.

[0539] When sps_independent_subpics_flag equals 1, it is specified that no intra prediction, inter prediction, and loop filter operations can be performed across any sub-picture boundaries in CLVS. When sps_independent_subpics_flag equals 0, it is specified that inter prediction or loop filter operations across sub-picture boundaries in CLVS are allowed. When it does not exist, the value of sps_independent_subpics_flag is inferred to be equal to 0.

[0540] subpic_ctu_top_left_x[i] specifies the horizontal position of the top - left CTU of the i - th sub - picture in units of CTB size. The length of the syntax element is Ceil(Log2((pic_width_max_in_luma_samples + CtbSizeY - 1)>>CtbLog2SizeY)) bits. When absent, the value of subpic_ctu_top_left_x[i] is inferred to be equal to 0.

[0541] subpic_ctu_top_left_y[i] specifies the vertical position of the top - left CTU of the i - th sub - picture in units of CTB size. The length of the syntax element is Ceil(Log2((pic_height_max_in_luma_samples + CtbSizeY - 1)>>CtbLog2SizeY)) bits. When absent, the value of subpic_ctu_top_left_y[i] is inferred to be equal to 0.

[0542] subpic_width_minus1[i]+1 specifies the width of the i - th sub - picture in units of CtbSizeY. The length of the syntax element is Ceil(Log2((pic_width_max_in_luma_samples + CtbSizeY - 1)>>CtbLog2SizeY)) bits. When absent, 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.

[0543] subpic_height_minus1[i]+1 specifies the height of the i - th sub - picture in units of CtbSizeY. The length of the syntax element is Ceil(Log2((pic_height_max_in_luma_samples + CtbSizeY - 1)>>CtbLog2SizeY)) bits. When absent, 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.

[0544] subpic_treated_as_pic_flag[i] being equal to 1 specifies that the i-th sub-picture of each coded picture in CLVS is treated as a picture during decoding, excluding loop filtering operations. subpic_treated_as_pic_flag[i] being equal to 0 specifies that the i-th sub-picture of each coded picture in CLVS is not treated as a picture during decoding, excluding loop filtering operations. When not present, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to sps_independent_subpics_flag.

[0545] When subpic_treated_as_pic_flag[i] is equal to 1, the requirement for bitstream consistency is that for each output layer and its reference layer in the OLS that includes the layer containing the i-th sub-picture as the output layer, all of the following conditions are true:

[0546] – All pictures in the output layer and its reference layer shall have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.

[0547] – All SPSs referenced by the output layer and its reference layer shall have the same sps_num_subpics_minus1 value, and shall respectively have the same subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], and loop_filter_across_subpic_enabled_flag[j] values (for each j value in the range from 0 to sps_num_subpics_minus1 inclusive).

[0548] – For each j value in the range from 0 to sps_num_subpics_minus1 inclusive, all pictures in each access unit in the output layer and its reference layer shall have the same SubpicIdVal[j] value.

[0549] loop_filter_across_subpic_enabled_flag[i] being equal to 1 specifies that loop filtering operations can be performed across the boundaries of the i-th sub-picture in each coded picture in CLVS.

[0550] When loop_filter_across_subpic_enabled_flag[i] equals 0, the loop filtering operation is not performed across the boundaries of the i-th sub-picture in each coded picture in the CLVS. When not present, the value of loop_filter_across_subpic_enabled_pic_flag[i] is inferred to be equal to 1 - sps_independent_subpics_flag.

[0551] A requirement for bitstream conformance is that the shape of the sub-pictures should be such that each sub-picture, when decoded, has its entire left and top boundaries formed by the picture boundary or the boundaries of previously decoded sub-pictures.

[0552] 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 shall be between 0 and 15 (inclusive). The value of 1 << (sps_subpic_id_len_minus1 + 1) shall be greater than or equal to sps_num_subpics_minus1 + 1.

[0553] When subpic_id_mapping_explicitly_signalled_flag equals 1, the sub-picture ID mapping is signalled explicitly in the SPS or in the PPS referenced by the coded pictures in the CLVS. When subpic_id_mapping_explicitly_signalled_flag equals 0, the sub-picture ID mapping is not signalled explicitly for the CLVS. When not present, the value of subpic_id_mapping_explicitly_signalled_flag is inferred to be equal to 0.

[0554] When subpic_id_mapping_explicitly_signalled_flag equals 1, subpic_id_mapping_in_sps_flag equals 1 signals the sub-picture ID mapping in the SPS. When subpic_id_mapping_explicitly_signalled_flag equals 1, subpic_id_mapping_in_sps_flag equals 0 signals the sub-picture ID mapping in the PPS referenced by the coded pictures in the CLVS.

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

[0556] bit_depth_minus8 specifies the bit depth BitDepth of the samples of the luma array and chroma array, and the value of the luma and chroma quantization parameter range offset QpBdOffset, as follows:

[0557] BitDepth = 8 + bit_depth_minus8 (45)

[0558] QpBdOffset = 6 * bit_depth_minus8 (46)

[0559] bit_depth_minus8 shall be in the range of 0 to 8 (inclusive).

[0560] sps_entropy_coding_sync_enabled_flag being equal to 1 specifies that a specific synchronization process of context variables is called before decoding a CTU that includes the first CTB of each CTB row in each slice of each picture that references the SPS, and a specific storage process of context variables is called after decoding a CTU that includes the first CTB of each CTB row in each slice of each picture that references the SPS.

[0561] sps_entropy_coding_sync_enabled_flag being equal to 0 specifies that a specific synchronization process of context variables is not required before decoding a CTU that includes the first CTB of each CTB row in each slice of each picture that references the SPS, and a specific storage process of context variables is not required after decoding a CTU that includes the first CTB of each CTB row in each slice of each picture that references the SPS.

[0562] The sps_wpp_entry_point_offsets_present_flag being equal to 1 specifies that when the sps_entropy_coding_sync_enabled_flag is equal to 1, signaling of the entry point offsets for CTU rows may be present in the slice headers of pictures that reference the SPS. The sps_wpp_entry_point_offsets_present_flag being equal to 0 specifies that signaling of the entry point offsets for CTU rows is not present in the slice headers of pictures that reference the SPS. When not present, the value of the sps_wpp_entry_point_offsets_present_flag is inferred to be equal to 0.

[0563] The sps_weighted_pred_flag being equal to 1 specifies that weighted prediction can be applied to P slices that reference the SPS. The sps_weighted_pred_flag being equal to 0 specifies that weighted prediction is not applied to P slices that reference the SPS.

[0564] The sps_weighted_bipred_flag being equal to 1 specifies that explicit weighted prediction can be applied to B slices that reference the SPS. The sps_weighted_bipred_flag being equal to 0 specifies that explicit weighted prediction is not applied to B slices that reference the SPS.

[0565] log2_max_pic_order_cnt_lsb_minus4 specifies the value of the variable MaxPicOrderCntLsb used for picture order counting during decoding, as follows:

[0566] MaxPicOrderCntLsb = 2 (log2_max_pic_order_cnt_lsb_minus4+4 ) (47)

[0567] The value of log2_max_pic_order_cnt_lsb_minus4 shall be between 0 and 12 (inclusive).

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

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

[0570] num_extra_ph_bits_bytes specifies the number of bytes of extra bits in the PH syntax structure of a coded picture that references an SPS. In a bitstream compliant with 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 the value of num_extra_ph_bits_bytes to be equal to 0, a decoder compliant with this version of this specification shall allow the value of num_extra_ph_bits_bytes to be equal to 1 or 2 to appear in the syntax.

[0571] 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 a bitstream compliant with 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 the value of num_extra_sh_bits_bytes to be equal to 0, a decoder compliant with this version of this specification shall allow the value of num_extra_sh_bits_bytes to be equal to 1 or 2 to appear in the syntax.

[0572] sps_sublayer_dpb_params_flag is used to control the presence of the 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 in the SPS. When not present, the value of sps_sub_dpb_params_info_present_flag is inferred to be equal to 0.

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

[0574] When inter_layer_ref_pics_present_flag equals 0, it is specified that no ILRP is used for inter - prediction of any coded pictures in CLVS. When inter_layer_ref_pic_flag equals 1, it is specified that ILRP can be used for inter - prediction of one or more coded pictures in CLVS. When sps_video_parameter_set_id equals 0, the value of inter_layer_ref_pics_present_flag is inferred to be equal to 0. When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 1, the value of inter_layer_ref_pics_present_flag shall be equal to 0.

[0575] When sps_idr_rpl_present_flag equals 1, it is specified that the reference picture list syntax elements are present in the slice header of IDR pictures. When sps_idr_rpl_present_flag equals 0, it is specified that the reference picture list syntax elements are not present in the slice header of IDR pictures.

[0576] When rpl1_same_as_rpl0_flag equals 1, it is specified that the syntax elements num_ref_pic_lists_in_sps[1] and the syntax structure ref_pic_list_struct(1,rplsIdx) do not exist, and the following applies:

[0577] – 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].

[0578] – The value of each syntax element in ref_pic_list_struct(1,rplsIdx) is inferred to be equal to the corresponding syntax element in ref_pic_list_struct(0,rplsIdx) of rplsIdx, ranging from 0 to num_ref_pic_lists_in_sps[0] - 1.

[0579] num_ref_pic_lists_in_sps[i] specifies the number of ref_pic_list_struct(listIdx,rplsIdx) syntax structures with listIdx equal to i included in the SPS. The value of num_ref_pic_lists_in_sps[i] shall be between 0 and 64 (inclusive).

[0580] Note 4 – For each value of listIdx (equal to 0 or 1), since there may be one ref_pic_list_struct(listIdx, rplsIdx) syntax structure directly signaled in the slice header of the current picture, the decoder shall allocate memory for the total number of num_ref_pic_lists_in_sps[i] + 1 ref_pic_list_struct(listIdx, rplsIdx) syntax structures.

[0581] When qtbtt_dual_tree_intra_flag is equal to 1, it is specified that for I slices, each CTU is split into coding units with 64×64 luma samples using implicit quadtree partitioning, and these coding units are the roots of two separate coding tree syntax structures for luma and chroma. When qtbtt_dual_tree_intra_flag is equal to 0, it is specified that separate coding tree syntax structures are not used for I slices. When qtbtt_dual_tree_intra_flag is absent, it is inferred to be equal to 0.

[0582] log2_min_luma_coding_block_size_minus2 plus 2 specifies the minimum luma coding block size. The value range of log2_min_luma_coding_block_size_minus2 shall be in the range of 0 to Min(4, sps_log2_ctu_size_minus5 + 3) (inclusive).

[0583] The derivation of the variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC, and Vsize is as follows:

[0584] MinCbLog2SizeY = log2_min_luma_coding_block_size_minus2 + 2 (48)

[0585] MinCbSizeY = 1 << MinCbLog2SizeY (49)

[0587] IbcBufWidthY = 256 * 128 / CtbSizeY (50)

[0589] IbcBufWidthC = IbcBufWidthY / SubWidthC (51)

[0590] VSize = Min(64, CtbSizeY) (52)

[0591] The value of MinCbSizeY shall be less than or equal to VSize.

[0592] Derive the variables CtbWidthC and CtbHeightC that respectively specify the width and height of the array of each chroma CTB in the following manner:

[0593] – If chroma_format_idc is equal to 0 (monochrome) or separate_colour_plane_flag is equal to 1, then both CtbWidthC and CtbHeightC are equal to 0.

[0594] – Otherwise, derive CtbWidthC and CtbHeightC in the following manner:

[0595] CtbWidthC = CtbSizeY / SubWidthC (53)

[0596] CtbHeightC = CtbSizeY / SubHeightC (54)

[0597] For log2BlockWidth in the range from 0 to 4 (inclusive) and log2BlockHeight in the range from 0 to 4 (inclusive), call the upper-right diagonal scan order array initialization process specified in Clause 6.5.2 with 1 << log2BlockWidth and 1 << log2BlockHeight as inputs, and assign the output to DiagScanOrder[log2BlockWidth][log2BlockHeight].

[0598] For log2BlockWidth in the range from 0 to 6 (inclusive) and log2BlockHeight in the range from 0 to 6 (inclusive), call the horizontal and vertical traversal scan order array initialization process specified in Clause 6.5.3 with 1 << log2BlockWidth and 1 << log2BlockHeight as inputs, and assign the output to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].

[0599] The partition_constraints_override_enabled_flag being equal to 1 specifies the existence of the partition_constraints_override_flag in the PH that references the SPS. The partition_constraints_override_enabled_flag being equal to 0 specifies the non - existence of the partition_constraints_override_flag in the PH that references the SPS.

[0600] sps_log2_diff_min_qt_min_cb_intra_slice_luma specifies the default difference between the base - 2 logarithm of the minimum size among the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU and the base - 2 logarithm of the minimum decoded block size among the luma samples of the luma CUs in the slice, where slice_type is equal to 2(I) that references the SPS. When the partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_min_qt_min_cb_luma existing in the PH that references the SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY (inclusive). Derive the base - 2 logarithm of the minimum size among the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU as follows:

[0601] MinQtLog2SizeIntraY = sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY(55)

[0602] sps_max_mtt_hierarchy_depth_intra_slice_luma specifies the default maximum hierarchical depth of the coding tree unit that is generated by the quadtree partitioning of the quadtree leaf in the slice where slice_type is equal to 2(I) that refers to the SPS. When 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 in the PH that refers to the SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive).

[0603] 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) in the luma samples of the luma coding tree block for which binary partitioning can be used and the minimum size (width or height) in the luma samples of the luma leaf block, where the luma leaf block is generated by the quadtree partitioning of the CTU in the slice where slice_type is equal to 2(I) that refers to the SPS. When 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 refers to 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 (inclusive). When sps_log2_diff_max_bt_min_qt_intra_slice_luma is not present, the value of sps_log2_diff_max_bt_min_qt_intra_slice_luma is inferred to be equal to 0.

[0604] 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) among the luma samples of a luma coding block for which ternary partitioning is allowed and the minimum size (width or height) among the luma samples of a luma leaf block, where the luma leaf block is generated by the quadtree partitioning of a CTU with slice_type equal to 2(I) referring to the SPS. When 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 referring to 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 (inclusive). When 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.

[0605] sps_log2_diff_min_qt_min_cb_inter_slice specifies the default difference between the base-2 logarithm of the minimum size among the luma samples of a luma leaf block generated by the quadtree partitioning of a CTU and the base-2 logarithm of the minimum luma coding block size among the luma samples of a luma CU in a slice, where slice_type is equal to 0(B) or 1(P) referring to the SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_min_qt_min_cb_luma present in the PH referring to the SPS. The value of sps_log2_diff_min_qt_min_cb_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY (inclusive). The base-2 logarithm of the minimum size among the luma samples of a luma leaf block generated by the quadtree partitioning of a CTU is derived as follows:

[0606] MinQtLog2SizeInterY = sps_log2_diff_min_qt_min_cb_inter_slice + MinCbLog2SizeY (56)

[0608] sps_max_mtt_hierarchy_depth_inter_slice specifies the default maximum hierarchy depth of a coding unit that is generated by performing multi-type tree partitioning on quadtree leaves in a slice where slice_type is equal to 0 (B) or 1 (P) that refers to the SPS. When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth may be overridden by ph_max_mtt_hierarchy_depth_inter_slice present in the PH that refers to the SPS. The value of sps_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) inclusive.

[0609] sps_log2_diff_max_bt_min_qt_inter_slice specifies the default difference between the base 2 logarithm of the maximum size (width or height) in the luma samples of a luma coding block that may use binary partitioning and the minimum size (width or height) in the luma samples of a luma leaf block, where the luma leaf block is generated by quadtree partitioning of a CTU in a slice where slice_type is equal to 0 (B) or 1 (P) that refers to the SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference may be overridden by ph_log2_diff_max_bt_min_qt_luma present in the PH that refers to the SPS. The value of sps_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY inclusive. When 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 equal to 0.

[0610] 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) among the luma samples of a luma coded block for which ternary partitioning is allowed and the minimum size (width or height) among the luma samples of a luma leaf block, where the luma leaf block is generated by quadtree partitioning of a CTU in a slice where slice_type equals 0(B) or 1(P) referring to the SPS. When partition_constraints_override_enabled_flag equals 1, the default difference can be overridden by referring to ph_log2_diff_max_tt_min_qt_luma present in the PH of the SPS. The value of sps_log2_diff_max_tt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When 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 equal to 0.

[0611] sps_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the default difference between the base-2 logarithm of the minimum size among the luma samples of a chroma leaf block generated by quadtree partitioning of a chroma CTU where treeType equals DUAL_TREE_CHROMA and the base-2 logarithm of the minimum coded block size among the luma samples of a chroma CU where treeType equals DUAL_TREE_CHROMA in a slice where slice_type equals 2(I) referring to the SPS. When partition_constraints_override_enabled_flag equals 1, the default difference can be overridden by referring to ph_log2_diff_min_qt_min_cb_chroma present in the PH of 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, inclusive. When 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 among the luma samples of a chroma leaf block generated by quadtree partitioning of a CTU where treeType equals DUAL_TREE_CHROMA is derived as follows:

[0612] MinQtLog2SizeIntraC = sps_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY (57)

[0613] sps_max_mtt_hierarchy_depth_intra_slice_chroma specifies the default maximum hierarchical depth of the chroma coding unit that is generated by the multi-type tree partitioning of the chroma quad-tree leaf with treeType equal to DUAL_TREE_CHROMA in the slice with slice_type equal to 2(I) that refers to the SPS. When 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 the PH that refers to the SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive). When not present, the value of sps_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to 0.

[0614] 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 the luma samples in a chroma coding tree block that can be partitioned using binary partitioning and the minimum size (width or height) of the luma samples in a chroma leaf block, where the chroma leaf block is produced by the quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) referencing the SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by referencing ph_log2_diff_max_bt_min_qt_chroma present in the PH referencing 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, inclusive. When sps_log2_diff_max_bt_min_qt_intra_slice_chroma is not present, the value of sps_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred to be equal to 0.

[0615] sps_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 the luma samples in a chroma coding block that can use ternary partitioning and the minimum size (width or height) of the luma samples in a chroma leaf block resulting from the quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice where slice_type is equal to 2(I) referencing the SPS. When 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 referencing 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 (inclusive). When 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.

[0616] sps_max_luma_transform_size_64_flag being equal to 1 specifies that the maximum transform size of the luma samples is equal to 64. sps_max_luma_transform_size_64_flag being equal to 0 specifies that the maximum transform size of the luma samples is equal to 32.

[0617] When CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag shall be equal to 0.

[0618] Derive the variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, and MaxTbSizeY as follows:

[0619] MinTbLog2SizeY = 2 (58)

[0620] MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag? 6 : 5 (59)

[0621] MinTbSizeY = 1 << MinTbLog2SizeY (60)

[0622] MaxTbSizeY = 1 << MaxTbLog2SizeY (61)

[0623] When sps_joint_cbcr_enabled_flag is equal to 0, it is specified that joint coding of chrominance residuals is disabled. When sps_joint_cbcr_enabled_flag is equal to 1, it is specified that joint coding of chrominance residuals is enabled. When it is not present, the value of sps_joint_cbcr_enabled_flag is inferred to be equal to 0.

[0624] When sps_joint_cbcr_enabled_flag is equal to 1, when same_qp_table_for_chroma is equal to 1, it is specified that only one chrominance QP mapping table is signaled, and this table applies to both Cb and Cr residuals and also to joint Cb - Cr residuals. When same_qp_table_for_chroma is equal to 0, when sps_joint_cbcr_enabled_flag is equal to 1, the chrominance QP mapping tables are signaled in the SPS, two for Cb and Cr respectively, and another for joint Cb - Cr. When same_qp_table_for_chroma is not present in the bitstream, the value of same_qp_table_for_chroma is inferred to be equal to 1.

[0625] qp_table_start_minus26[i] plus 26 specifies the starting luma and chroma QPs for describing the i-th chrominance QP mapping table. The value of qp_table_start_minus26[i] shall be in the range from -26 - QpBdOffset to 36 (inclusive). When 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.

[0626] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points for describing the i-th chrominance QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be in the range from 0 to 63 + QpBdOffset (inclusive). When 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.

[0627] delta_qp_in_val_minus1[i][j] specifies the increment value for deriving the input coordinates of the j-th pivot point of the i-th chroma QP mapping table. When delta_qp_in_val_minus1[0][j] does not exist in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.

[0628] delta_qp_diff_val[i][j] specifies the increment value for deriving the output coordinates of the j-th pivot point of the i-th chroma QP mapping table.

[0629] Derive the i-th chroma QP mapping table ChromaQpTable[i] (for i = 0...numQpTables - 1) as follows:

[0630]

[0631]

[0632] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set to be equal to ChromaQpTable[0][k] (for k in the range from -QpBdOffset to 63 (inclusive)).

[0633] The requirement for bitstream consistency is that the values of qpInVal[i][j] and qpOutVal[i][j] should be in the range from -QpBdOffset to 63 (inclusive), for i in the range from 0 to numQpTables - 1 (inclusive), and for j in the range from 0 to num_points_in_qp_table_minus1[i] + 1 (inclusive).

[0634] sps_sao_enabled_flag being equal to 1 specifies that after the deblocking filtering process, the sample adaptive offset process is applied to the reconstructed picture. sps_sao_enabled_flag being equal to 0 specifies that after the deblocking filtering process, the sample adaptive offset process is not applied to the reconstructed picture.

[0635] sps_alf_enabled_flag being equal to 0 specifies that the cross-component adaptive loop filter is disabled. sps_alf_enabled_flag being equal to 1 specifies that the adaptive loop filter is enabled.

[0636] When sps_ccalf_enabled_flag equals 0, it specifies that the cross-component adaptive loop filter is disabled. When sps_ccalf_enabled_flag equals 1, it specifies that the cross-component adaptive loop filter can be enabled.

[0637] When sps_transform_skip_enabled_flag equals 1, it specifies that transform_skip_flag may exist in the transform unit syntax. When sps_transform_skip_enabled_flag equals 0, it specifies that transform_skip_flag does not exist in the transform unit syntax.

[0638] log2_transform_skip_max_size_minus2 specifies the maximum block size for transform skip and shall be in the range of 0 to 3 (inclusive).

[0639] The variable MaxTsSize is set to be equal to 1<<(log2_transform_skip_max_size_minus2 + 2).

[0640] When sps_bdpcm_enabled_flag equals 1, it specifies that intra_bdpcm_luma_flag and intra_bdpcm_chroma_flag may exist in the coding unit syntax of the intra-coded unit. When sps_bdpcm_enabled_flag equals 0, it specifies that intra_bdpcm_luma_flag and intra_bdpcm_chroma_flag do not exist in the coding unit syntax of the intra-coded unit. When they do not exist, the value of sps_bdpcm_enabled_flag is inferred to be equal to 0.

[0641] When sps_ref_wraparound_enabled_flag equals 1, it specifies that horizontal wrap-around motion compensation is applied in inter prediction. When sps_ref_wraparound_enabled_flag equals 0, it specifies that horizontal wrap-around motion compensation is not applied. When the value of (CtbSizeY / MinCbSizeY + 1) is greater than (pic_width_in_luma_samples / MinCbSizeY - 1), where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that refers to the SPS, the value of sps_ref_wraparound_enabled_flag shall be equal to 0.

[0642] When sps_temporal_mvp_enabled_flag equals 1, it is specified that the temporal motion vector prediction value can be used in CLVS. When sps_temporal_mvp_enabled_flag equals 0, it is specified that the temporal motion vector prediction value is not used in CLVS.

[0643] When sps_sbtmvp_enabled_flag equals 1, it is specified that the sub-block based temporal motion vector prediction value can be used for decoding pictures where the slice_type of all slices in CLVS is not equal to I. When sps_sbtmvp_enabled_flag equals 0, it is specified that the sub-block based temporal motion vector prediction value is not used in CLVS. When sps_sbtmvp_enabled_flag does not exist, it is inferred to be equal to 0.

[0644] When sps_amvr_enabled_flag equals 1, it is specified that adaptive motion vector difference resolution is used in motion vector encoding and decoding. When amvr_enabled_flag equals 0, it is specified that adaptive motion vector difference resolution is not used in motion vector encoding and decoding.

[0645] When sps_bdof_enabled_flag equals 0, it is specified that bidirectional optical flow inter-frame prediction is disabled. When sps_bdof_enabled_flag equals 1, it is specified that bidirectional optical flow inter-frame prediction is enabled.

[0646] When sps_bdof_pic_present_flag equals 1, it is specified that ph_disable_bdof_flag exists in the PH that references the SPS. When sps_bdof_pic_present_flag equals 0, it is specified that ph_disable_bdof_flag does not exist in the PH that references the SPS. When sps_bdof_pic_present_flag does not exist, the value of sps_bdof_pic_present_flag is inferred to be equal to 0.

[0647] When sps_smvd_enabled_flag equals 1, it is specified that symmetric motion vector difference can be used for motion vector decoding. When sps_smvd_enabled_flag equals 0, it is specified that symmetric motion vector difference is not used in motion vector encoding and decoding.

[0648] When sps_dmvr_enabled_flag equals 1, it is specified that decoder motion vector optimization based on inter-frame dual prediction is enabled. When sps_dmvr_enabled_flag equals 0, it is specified that decoder motion vector optimization based on inter-frame dual prediction is disabled.

[0649] When sps_dmvr_pic_present_flag equals 1, it specifies that ph_disable_dmvr_flag exists in the PH that references the SPS. When sps_dmvr_pic_present_flag equals 0, it specifies that ph_disable_dmvr_flag does not exist in the PH that references the SPS. When sps_dmvr_pic_present_flag does not exist, its value is inferred to be equal to 0.

[0650] When sps_mmvd_enabled_flag equals 1, it specifies that the merge mode with motion vector difference is enabled. When sps_mmvd_enabled_flag equals 0, it specifies that the merge mode with motion vector difference is disabled.

[0651] When sps_isp_enabled_flag equals 1, it specifies that intra prediction with sub - partitions is enabled. When sps_isp_enabled_flag equals 0, it specifies that intra prediction with sub - partitions is disabled.

[0652] When sps_mrl_enabled_flag equals 1, it specifies that intra prediction with multiple reference lines is enabled. When sps_mrl_enabled_flag equals 0, it specifies that intra prediction with multiple reference lines is disabled.

[0653] When sps_mip_enabled_flag equals 1, it specifies that matrix - based intra prediction is enabled. When sps_mip_enabled_flag equals 0, it specifies that matrix - based intra prediction is disabled.

[0654] When sps_cclm_enabled_flag equals 0, it specifies that cross - component linear model intra prediction from the luma component to the chroma component is disabled. When sps_cclm_enabled_flag equals 1, it specifies that cross - component linear model intra prediction from the luma component to the chroma component is enabled. When sps_cclm_enabled_flag does not exist, it is inferred to be equal to 0.

[0655] When sps_chroma_horizontal_collocated_flag equals 1, it specifies that the prediction process operates in a manner designed for the chroma sample position that is not horizontally shifted relative to the corresponding luma sample position. When sps_chroma_horizontal_collocated_flag equals 0, it specifies that the prediction process operates in a manner designed for the chroma sample position that is shifted to the right by 0.5 luma samples relative to the corresponding luma sample position. When sps_chroma_horizontal_collocated_flag is absent, it is inferred to be equal to 1.

[0656] When sps_chroma_vertical_collocated_flag equals 1, it specifies that the prediction process operates in a manner designed for the chroma sample position that is not vertically shifted relative to the corresponding luma sample position. When sps_chroma_vertical_collocated_flag equals 0, it specifies that the prediction process operates in a manner designed for the chroma sample position that is shifted down by 0.5 luma samples relative to the corresponding luma sample position. When sps_chroma_vertical_collocated_flag is absent, it is inferred to be equal to 1.

[0657] When sps_mts_enabled_flag equals 1, it specifies that sps_explicit_mts_intra_enabled_flag is present in the sequence parameter set RBSP syntax and sps_explicit_mts_inter_enabled_flag is present in the sequence parameter set RBSP syntax. When sps_mts_enabled_flag equals 0, it specifies that sps_explicit_mts_intra_enabled_flag is not present in the sequence parameter set RBSP syntax and sps_explicit_mts_inter_enabled_flag is not present in the sequence parameter set RBSP syntax.

[0658] When sps_explicit_mts_intra_enabled_flag equals 1, it specifies that mts_idx may be present in the intra coded unit syntax. When sps_explicit_mts_intra_enabled_flag equals 0, it specifies that mts_idx is not present in the intra coded unit syntax. When absent, the value of sps_explicit_mts_intra_enabled_flag is inferred to be equal to 0.

[0659] When sps_explicit_mts_inter_enabled_flag equals 1, it is specified that mts_idx may exist in the inter - frame coding unit syntax. When sps_explicit_mts_inter_enabled_flag equals 0, it is specified that mts_idx does not exist in the inter - frame coding unit syntax. When it does not exist, the value of sps_explicit_mts_inter_enabled_flag is inferred to be equal to 0.

[0660] six_minus_max_num_merge_cand specifies subtracting the maximum number of merging motion vector prediction (MVP) candidates supported in the SPS from 6. The maximum number of merging MVP candidates, MaxNumMergeCand, is derived as follows:

[0661] MaxNumMergeCand = 6 - six_minus_max_num_merge_cand (63)

[0662] The value of MaxNumMergeCand shall be in the range from 1 to 6 (inclusive).

[0663] When sps_sbt_enabled_flag equals 0, it is specified that the sub - block transform of the inter - frame prediction CU is disabled. When sps_sbt_enabled_flag equals 1, it is specified that the sub - block transform of the inter - frame prediction CU is enabled.

[0664] sps_affine_enabled_flag specifies whether motion compensation based on the affine model can be used for inter - frame prediction. If sps_affine_enabled_flag equals 0, the syntax shall be restricted such that motion compensation based on the affine model is not used in the CLVS, and inter_affine_flag and cu_affine_type_flag do not exist in the coding unit syntax of the CLVS. Otherwise (sps_affine_enabled_flag equals 1), motion compensation based on the affine model can be used in the CLVS.

[0665] five_minus_max_num_subblock_merge_cand specifies subtracting the maximum number of sub - block - based merging motion vector prediction candidates supported in the SPS from 5.

[0666] The sps_affine_type_flag specifies whether motion compensation based on the 6-parameter affine model can be used for inter prediction. If the sps_affine_type_flag is equal to 0, the syntax shall be restricted such that motion compensation based on the 6-parameter affine model is not used in CLVS and the cu_affine_type_flag does not exist in the coding unit syntax in CLVS. Otherwise (the sps_affine_type_flag is equal to 1), motion compensation based on the 6-parameter affine model can be used in CLVS. When it is not present, the value of the sps_affine_type_flag is inferred to be equal to 0.

[0667] The sps_affine_amvr_enabled_flag being equal to 1 specifies the use of adaptive motion vector difference resolution in the coding of motion vectors in the affine inter mode. The sps_affine_amvr_enabled_flag being equal to 0 specifies that adaptive motion vector difference resolution is not used in the coding of motion vectors in the affine inter mode. When it is not present, the value of the sps_affine_amvr_enabled_flag is inferred to be equal to 0.

[0668] The sps_affine_prof_enabled_flag specifies whether prediction optimization using optical flow can be used for affine motion compensation. If the sps_affine_prof_enabled_flag is equal to 0, affine motion compensation shall not be optimized using optical flow. Otherwise (the sps_affine_prof_enabled_flag is equal to 1), affine motion compensation can be optimized using optical flow. When it is not present, the value of the sps_affine_prof_enabled_flag is inferred to be equal to 0.

[0669] The sps_prof_pic_present_flag being equal to 1 specifies the presence of the ph_disable_prof_flag in the PH that references the SPS. The sps_prof_pic_present_flag being equal to 0 specifies the absence of the ph_disable_prof_flag in the PH that references the SPS. When the sps_prof_pic_present_flag is not present, the value of the sps_prof_pic_present_flag is inferred to be equal to 0.

[0670] When sps_palette_enabled_flag equals 1, it specifies that pred_mode_plt_flag may exist in the codec unit syntax. When sps_palette_enabled_flag equals 0, it specifies that pred_mode_plt_flag does not exist in the codec unit syntax. When sps_palette_enabled_flag does not exist, it is inferred to be equal to 0.

[0671] When sps_act_enabled_flag equals 1, it specifies that adaptive color transform can be used and cu_act_enabled_flag may appear in the codec unit syntax. When sps_act_enabled_flag equals 0, it specifies that adaptive color transform is not used and cu_act_enabled_flag does not exist in the codec unit syntax. When sps_act_enabled_flag does not exist, it is inferred to be equal to 0.

[0672] min_qp_prime_ts_minus4 specifies the minimum allowable quantization parameter for the transform skip mode as follows:

[0673] QpPrimeTsMin = 4 + min_qp_prime_ts_minus4 (64)

[0674] The value of min_qp_prime_ts_minus4 shall be in the range of 0 to 48 (inclusive).

[0675] sps_bcw_enabled_flag specifies whether dual prediction with CU weights can be used for inter prediction. If sps_bcw_enabled_flag equals 0, the syntax shall be restricted such that dual prediction with CU weights is not used in CLVS and bcw_idx does not exist in the codec unit syntax of CLVS. Otherwise (sps_bcw_enabled_flag equals 1), dual prediction with CU weights can be used in CLVS.

[0676] When sps_ibc_enabled_flag equals 1, it specifies that the IBC prediction mode can be used for decoding pictures in CLVS. When sps_ibc_enabled_flag equals 0, it specifies that the IBC prediction mode is not used in CLVS. When sps_ibc_enabled_flag does not exist, it is inferred to be equal to 0.

[0677] six_minus_max_num_ibc_merge_cand specifies subtracting the maximum number of IBC merging block vector prediction (BVP) candidates supported in the SPS from 6.

[0678] Derive the maximum number of IBC merging BVP candidates, MaxNumIbcMergeCand, as follows:

[0679]

[0680] sps_ciip_enabled_flag specifies that ciip_flag may appear in the codec unit syntax for inter-frame codec units. sps_ciip_enabled_flag being equal to 0 specifies that ciip_flag does not exist in the codec unit syntax for inter-frame codec units.

[0681] sps_fpel_mmvd_enabled_flag being equal to 1 specifies that the merge mode with motion vector difference uses integer sample precision. sps_fpel_mmvd_enabled_flag being equal to 0 specifies that the merge mode with motion vector difference may use fractional sample precision.

[0682] sps_gpm_enabled_flag specifies whether geometric partition-based motion compensation can be used for inter-frame prediction. sps_gpm_enabled_flag being equal to 0 specifies that the syntax should be constrained such that geometric partition-based motion compensation is not used in the CLVS, and merge_gpm_partition_idx, merge_gpm_idx0, and merge_gpm_idx1 do not exist in the codec unit syntax of the CLVS. sps_gpm_enabled_flag being equal to 1 specifies that geometric partition-based motion compensation can be used in the CLVS. When absent, the value of sps_gpm_enabled_flag is inferred to be equal to 0.

[0683] max_num_merge_cand_minus_max_num_gpm_cand specifies subtracting the maximum number of geometric partition merge mode candidates supported in the SPS from MaxNumMergeCand.

[0684] If sps_gpm_enabled_flag is equal to 1 and MaxNumMergeCand is greater than or equal to 3, derive the maximum number of geometric partition merge mode candidates, MaxNumGeoMergeCand, as follows:

[0685]

[0686]

[0687] The value of MaxNumGeoMergeCand shall be in the range of 2 to MaxNumMergeCand, inclusive.

[0688] When sps_lmcs_enabled_flag equals 1, it specifies the use of luminance mapping with chroma scaling in CLVS. When sps_lmcs_enabled_flag equals 0, it specifies that luminance mapping with chroma scaling is not used in CLVS.

[0689] When sps_lfnst_enabled_flag equals 1, it specifies that lfnst_idx may exist in the intra-coded unit syntax. When sps_lfnst_enabled_flag equals 0, it specifies that lfnst_idx does not exist in the intra-coded unit syntax.

[0690] When sps_ladf_enabled_flag equals 1, it specifies the existence of sps_num_ladf_intervals_minus2, sps_ladf_lowest_interval_qp_offset, sps_ladf_qp_offset[i], and sps_ladf_delta_threshold_minus1[i] in the SPS.

[0691] sps_num_ladf_interval_minus2 plus 1 specifies the number of sps_ladf_delta_threshold_minus1[i] and sps_ladf_qp_offset[i] syntax elements existing in the SPS. The value of sps_num_ladf_intervals_minus2 shall be in the range of 0 to 3, inclusive.

[0692] sps_ladf_lowest_interval_qp_offset specifies the offset used to derive the variable qP as defined in Clause 8.8.3.6.1. The value of sps_ladf_lowest_interval_qp_offset shall be in the range of -63 to 63, inclusive.

[0693] sps_ladf_qp_offset[i] specifies the offset array used to derive the variable qP as defined in Clause 8.8.3.6.1. The value of sps_ladf_qp_offset[i] shall be in the range of -63 to 63, inclusive.

[0694] 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] shall be in the range of 0 to 2 BitDepth -3 (inclusive).

[0695] The value of SpsLadfIntervalLowerBound[0] is set to be equal to 0.

[0696] For each i value in the range of 0 to sps_num_ladf_intervals_minus2 (inclusive), the variable SpsLadfIntervalLowerBound[i + 1] is derived as follows:

[0697] SpsLadfIntervalLowerBound[i + 1] = SpsLadfIntervalLowerBound[i] (67)

[0698] + sps_ladf_delta_threshold_minus1[i] + 1

[0699] log2_parallel_merge_level_minus2 plus 2 specifies the value of the variable Log2ParMrgLevel, which is used in the derivation process of spatial merging candidates specified in Clause 8.5.2.3, the derivation process of motion vectors and reference indices in the sub-block merge mode specified in Clause 8.5.5.2, and the call to control the update process of the history-based motion vector prediction value list in Clause 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:

[0700] Log2ParMrgLevel = log2_parallel_merge_level_minus2 + 2 (68)

[0701] sps_scaling_list_enabled_flag being equal to 1 specifies that the scaling list is used for the scaling process of transform coefficients. sps_scaling_list_enabled_flag being equal to 0 specifies that the scaling list is not used for the scaling process of transform coefficients.

[0702] When sps_dep_quant_enabled_flag equals 0, it specifies that the relevant quantization is disabled for pictures that reference the SPS. When sps_dep_quant_enabled_flag equals 1, it specifies that the relevant quantization can be enabled for pictures that reference the SPS.

[0703] When sps_sign_data_hiding_enabled_flag equals 0, it specifies that the sign bit hiding is disabled for pictures that reference the SPS. When sps_sign_data_hiding_enabled_flag equals 1, it specifies that the sign bit hiding can be enabled for pictures that reference the SPS. When sps_sign_data_hiding_enabled_flag does not exist, it is inferred to be equal to 0.

[0704] When sps_virtual_boundaries_enabled_flag equals 1, it specifies that the loop filtering across virtual boundaries can be applied to coded pictures in the CLVS. When sps_virtual_boundaries_enabled_flag equals 0, it specifies that the loop filtering across virtual boundaries is not applied to coded pictures in the CLVS. The loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations.

[0705] When sps_virtual_boundaries_present_flag equals 1, it specifies that the information of virtual boundaries is signaled in the SPS. When sps_virtual_boundaries_present_flag equals 0, it specifies that the information of virtual boundaries is not signaled in the SPS. When there is one or more virtual boundary signaling in the SPS, the loop filtering operations across virtual boundaries are disabled in pictures that reference the SPS. The loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations.

[0706] One requirement for bitstream conformance is that when the value of res_change_in_clvs_allowed_flag equals 1, the value of sps_virtual_boundaries_present_flag should equal 0.

[0707] sps_num_ver_virtual_boundaries specifies the number of sps_virtual_boundaries_pos_x[i] syntax elements present in the SPS. When sps_num_ver_virtual_boundaries does not exist, it is inferred to be equal to 0.

[0708] sps_virtual_boundaries_pos_x[i] specifies the position of the i-th vertical virtual boundary in units of luminance 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 (inclusive).

[0709] sps_num_hor_virtual_boundaries specifies the number of sps_virtual_boundaries_pos_y[i] syntax elements present in the SPS. When sps_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0.

[0710] When 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.

[0711] sps_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary in units of luminance 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 (inclusive).

[0712] sps_general_hrd_params_present_flag being 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 being equal to 0 specifies that the syntax structure general_hrd_parameters() is not present in the SPS RBSP syntax structure.

[0713] When sps_sublayer_cpb_params_present_flag equals 1, it specifies that the syntax structure old_hrd_parameters() in the SPS RBSP includes HRD parameters represented by sublayers, where TemporalId is in the range from 0 to sps_max_sublayers_minus1 (inclusive). When sps_sublayer_cpb_params_present_flag equals 0, it specifies that the syntax structure ols_hrd_parameters() in the SPS RBSP includes HRD parameters represented by sublayers, where TemporalId is only equal to sps_max_sublayers_minus1. When sps_max_sublayers_minus1 equals 0, the value of sps_sublayer_cpb_params_present_flag is inferred to be equal to 0.

[0714] When sps_sublayer_cpb_params_present_flag equals 0, the HRD parameters represented by sublayers (where TemporalId is in the range from 0 to sps_max_sublayers_minus1 - 1 (inclusive)) are inferred to be the same as the HRD parameters represented by sublayers (where TemporalId is equal to sps_max_sublayers_minus1). These include the HRD parameters starting from the fixed_pic_rate_general_flag[i] syntax element until the sublayer_hrd_parameters(i) syntax structure under the "if(general_vcl_hrd_params_present_flag)" condition in the ols_hrd_parameters syntax structure.

[0715] When field_seq_flag equals 1, it indicates that the CLVS conveys a picture representing a field. When field_seq_flag equals 0, it indicates that the CLVS conveys a picture representing a frame. When general_frame_only_constraint_flag equals 1, the value of field_seq_flag shall be equal to 0.

[0716] When field_seq_flag equals 1, a frame field information SEI message shall be presented for each coded picture in the CLVS.

[0717] Note 5 – The specified decoding process does not treat pictures representing fields or frames differently. Thus, the picture sequence of a representation field will be encoded and decoded using the picture dimensions of a single field. For example, a picture representing a 1080i field will typically have a cropped output dimension of 1920x540, and the sequence picture rate will typically represent the rate of the source field (usually between 50 and 60 Hz), rather than the source frame rate (usually between 25 and 30 Hz).

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

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

[0720] The sps_extension_data_flag can have any value. Its presence and value do not affect the decoder's compliance with the profiles specified in this version of the specification. Decoders compliant with this version of the specification shall ignore all sps_extension_data_flag syntax elements.

[0721] 7.4.3.4 Picture Parameter Set RBSP semantics

[0722] The PPS RBSP shall be available for the decoding process before being referenced, included in at least one AU where the TemporalId is less than or equal to the TemporalId of the PPS NAL unit, or provided externally.

[0723] All PPS NAL units with a specific value of pps_pic_parameter_set_id within a PU shall have the same content.

[0724] The pps_pic_parameter_set_id identifies the PPS for reference by other syntax elements. The value of pps_pic_parameter_set_id shall be in the range from 0 to 63, inclusive.

[0725] Regardless of the value of nuh_layer_id, PPS NAL units share the same value space of pps_pic_parameter_set_id.

[0726] Let ppsLayerId be the value of nuh_layer_id for a particular PPS NAL unit, and let vclLayerId be the value of nuh_layer_id for a particular VCL NAL unit. A particular VCL NAL unit shall not reference a particular PPS NAL unit unless ppsLayerId is less than or equal to vclLayerId, and the layer with nuh_layer_id equal to ppsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.

[0727] pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id for the SPS. The value of pps_seq_parameter_set_id shall be in the range of 0 to 15 (inclusive). The value of pps_seq_parameter_set_id shall be the same in all PPSs referenced by coded pictures in the CLVS.

[0728] mixed_nalu_types_in_pic_flag being equal to 1 specifies that each picture that references a PPS has multiple VCL NAL units that do not have the same nal_unit_type value, and the picture is not an IRAP picture. mixed_nalu_types_in_pic_flag being equal to 0 specifies that each picture that references a PPS has one or more VCL NAL units, and the VCL NAL units of each picture that references a PPS have the same nal_unit_type value.

[0729] When 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.

[0730] For each slice in picture picA with a nal_unit_type value nalUnitTypeA in the range from IDR_W_RADL to CRA_NUT (inclusive), and where picture picA also contains one or more slices with another nal_unit_type value (i.e., the value of mixed_nalu_types_in_pic_flag for picture picA is equal to 1), the following applies:

[0731] – The strip shall belong to sub - picture subpicA, and the value of subpic_treated_as_pic_flag[i] corresponding to it shall be equal to 1.

[0732] – The strip shall not belong to the sub - picture of picA that contains VCL NAL units, where nal_unit_type is not equal to nalUnitTypeA.

[0733] – If nalUnitTypeA is equal to CRA, then for all subsequent PUs in CLVS after the current picture in decoding order and output order, neither RefPicList[0] nor RefPicList[1] of the strips in subpicA of those PUs shall include any picture before picA in decoding order in the active list.

[0734] – Otherwise (i.e., nalUnitTypeA is equal to IDR_W_RADL or IDR_N_LP), for all PUs in CLVS after the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of the strips in subpicA of those PUs shall include any picture before picA in decoding order in the active list.

[0735] Note 1 – mixed_nalu_types_in_pic_flag equal to 1 indicates that the picture referring to the PPS contains strips with different NAL unit types. For example, for the coded pictures resulting from sub - picture bit - stream merging operations, the encoder must ensure further alignment of the matching bit - stream structure and the parameters of the original bit - stream. An example of such alignment is as follows: when the value of sps_idr_rpl_flag is equal to 0 and mixed_nalu_types_in_pic_flag is equal to 1, the picture referring to the PPS cannot have strips with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.

[0736] pic_width_in_luma_samples specifies the width of each decoded picture referring to the PPS in luma samples. 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.

[0737] When 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.

[0738] pic_height_in_luma_samples specifies the height of each decoded picture that references the PPS in terms of luma samples. pic_height_in_luma_samples shall not be equal to 0, and shall be an integer multiple of Max(8, MinCbSizeY), and shall be less than or equal to pic_height_max_in_luma_samples.

[0739] When 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.

[0740] Derive the variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC as follows:

[0741] PicWidthInCtbsY = Ceil(pic_width_in_luma_samples ÷ CtbSizeY) (69)

[0742] PicHeightInCtbsY = Ceil(pic_height_in_luma_samples ÷ CtbSizeY) (70)

[0743] PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY (71)

[0744] PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY (72)

[0745] PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY (73)

[0746] PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY (74)

[0747] PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples (75)

[0748] PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC (76)

[0749] PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC (77)

[0750] The pps_conformance_window_flag being equal to 1 indicates the conformance cropping window offset parameter immediately following in the PPS. The pps_conformance_window_flag being equal to 0 indicates that there is no conformance cropping window offset parameter in the PPS.

[0751] 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 picture in the CLVS output during the decoding process, with the output being a rectangular region specified in the picture coordinates. When 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.

[0752] The conformant cropping window contains luma samples with 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) (inclusive).

[0753] The value of SubWidthC*(pps_conf_win_left_offset+pps_conf_win_right_offset) shall be less than pic_width_in_luma_samples, and the value of SubweightC*(pps_conf_win_top_offset+pps_conf_win_bottom_offset) shall be less than pic_height_in_luma_samples.

[0754] When ChromaArrayType is not equal to 0, the corresponding specified samples of the two chroma arrays are the samples with picture coordinates (x / SubWidthC, y / SubHeightC), where (x,y) are the picture coordinates of the specified luma samples.

[0755] Note 2 – The conformant cropping window offset parameters are only applied to the output. All internal decoding processes are applied to the uncropped picture size.

[0756] Let ppsA and ppsB be any two PPSs that refer to the same SPS. A requirement for bitstream conformance is that when ppsA and ppsB have the same values of pic_width_in_luma_samples and pic_height_in_luma_samples respectively, 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.

[0757] 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, a requirement for bitstream conformance is that 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.

[0758] A value of scaling_window_explicit_signalling_flag equal to 1 specifies the presence of scaling window offset parameters in the PPS. A value of scaling_window_explicit_signalling_flag equal to 0 specifies the absence of scaling window offset parameters in the PPS. When res_change_in_clvs_allowed_flag is equal to 0, the value of scaling_window_explicit_signalling_flag shall be equal to 0.

[0759] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify the offsets of the picture dimensions applied to the scaling ratio calculation. When 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.

[0760] The value of SubWidthC * (scaling_win_left_offset + scaling_win_right_offset) shall be less than pic_width_in_luma_samples, and the value of SubHeightC * (scaling_win_top_offset + scaling_win_bottom_offset) shall be less than pic_height_in_luma_samples.

[0761] Derive the variables PicOutputWidthL and PicOutputHeightL as follows:

[0762] PicOutputWidthL = pic_width_in_luma_samples - (78)

[0763] SubWidthC * (scaling_win_right_offset + scaling_win_left_offset)

[0764] PicOutputHeightL = pic_height_in_luma_samples - (79)

[0765] SubWidthC * (scaling_win_bottom_offset + scaling_win_top_offset)

[0766] Let refPicOutputWidthL and refPicOutputHeightL be the PicOutputWidthL and PicOutputHeightL of the reference picture of the current picture that references this PPS, respectively. The bitstream conformance requirement is that all of the following conditions are met:

[0767] – PicOutputWidthL * 2 shall be greater than or equal to refPicWidthInLumaSamples.

[0768] – PicOutputHeightL * 2 shall be greater than or equal to refPicHeightInLumaSamples.

[0769] – PicOutputWidthL shall be less than or equal to refPicWidthInLumaSamples * 8.

[0770] – PicOutputHeightL shall be less than or equal to refPicHeightInLumaSamples * 8.

[0771] – PicOutputWidthL * pic_width_max_in_luma_samples shall be greater than or equal to refPicOutputWidthL * (pic_width_in_luma_samples - Max(8, MinCbSizeY)).

[0772] – PicOutputHeightL * pic_height_max_in_luma_samples shall be greater than or equal to refPicOutputHeightL * (pic_height_in_luma_samples - Max(8, MinCbSizeY)).

[0773] output_flag_present_flag being equal to 1 indicates that the pic_output_flag syntax element is present in the slice header that references the PPS. output_flag_present_flag being equal to 0 indicates that the pic_output_flag syntax element is not present in the slice header that references the PPS.

[0774] subpic_id_mapping_in_pps_flag being equal to 1 specifies signalling of sub - picture ID mapping in the PPS. subpic_id_mapping_in_pps_flag being equal to 0 specifies no signalling of sub - picture ID mapping in the PPS. If subpic_id_mapping_explicitly_signalled_flag is 0 or 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.

[0775] pps_num_subpics_minus1 shall be equal to sps_num_subpics_minus1.

[0776] pps_subpic_id_len_minus1 shall be equal to sps_subpic_id_len_minus1.

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

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

[0779]

[0780] The requirements for bitstream conformance are the application of the following two constraints:

[0781] – For any two differences of i and j in the range from 0 to sps_num_subpics_minus1 (inclusive), SubpicIdVal[i] shall not be equal to SubpicIdVal[j].

[0782] – When the current picture is not the first picture of a CLVS, for each value of i in the range from 0 to sps_num_subpics_minus1 (inclusive), if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous picture in the decoding order in the same layer, then the nal_unit_type of all coded and decoded slice NAL units of the sub-picture with sub-picture index i in the current picture shall be equal to a specific value in the range from IDR_W_RADL to CRA_NUT (inclusive).

[0783] no_pic_partition_flag being equal to 1 specifies that no picture partitioning is applied to each picture that references the PPS. no_pic_partition_flag being equal to 0 specifies that each picture that references the PPS can be partitioned into multiple slices or strips.

[0784] One requirement for bitstream conformance is that for all PPSs referenced by coded pictures in a CLVS, the value of no_pic_partition_flag shall be the same.

[0785] One requirement for bitstream conformance is that when the value of sps_num_subpics_minus1 + 1 is greater than 1, the value of no_pic_partition_flag shall not be equal to 1.

[0786] pps_log2_ctu_size_minus5 plus 5 specifies the luma coding tree block size of each CTU.

[0787] pps_log2_ctu_size_minus5 shall be equal to sps_log2_ctu_size_minus5.

[0788] num_exp_tile_columns_minus1 plus 1 specifies the number of explicitly provided tile column widths. The value of num_exp_tile_columns_minus1 shall be in the range of 0 to PicWidthInCtbsY-1 (inclusive). When no_pic_partition_flag is equal to 1, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.

[0789] num_exp_tile_rows_minus1 plus 1 specifies the number of explicitly provided tile row heights. The value of num_exp_tile_rows_minus1 shall be in the range of 0 to PicHeightInCtbsY-1 (inclusive). When no_pic_partition_flag is equal to 1, the value of num_tile_rows_minus1 is inferred to be equal to 0.

[0790] tile_column_width_minus1[i] plus 1 specifies the width of the i-th tile column in CTB units, for i in the range of 0 to num_exp_tile_columns_minus1-1 (inclusive).

[0791] 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 Clause 6.5.1. The value of tile_column_width_minus1[i] shall be in the range of 0 to PicWidthInCtbsY-1 (inclusive). When not present, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY-1.

[0792] tile_row_height_minus1[i] + 1 specifies the height of the ith tile row in CTB units, for i in the range 0 to num_exp_tile_rows_minus1-1 (inclusive). 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 clause 6.5.1. The value of tile_row_height_minus1[i] shall be in the range 0 to PicHeightInCtbsY-1 (inclusive). When not present, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY-1.

[0793] rect_slice_flag equal to 0 specifies that the slices within each strip are in raster scan order and the strip information is not signaled in the PPS. rect_slice_flag equal to 1 specifies that the slices within each strip cover a rectangular region of the picture and the strip information is signaled in the PPS. When 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.

[0794] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular strip. single_slice_per_subpic_flag equal to 0 specifies that each subpicture can consist of one or more rectangular strips. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.

[0795] num_slices_in_pic_minus1 + 1 specifies the number of rectangular strips in each picture that references the PPS. The value of num_slices_in_pic_minus1 shall be in the range 0 to MaxSlicesPerPicture-1 (inclusive), where MaxSlicesPerPicture. When no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0.

[0796] The tile_idx_delta_present_flag being equal to 0 specifies that the tile_idx_delta value is not present in the PPS, and all the rectangular slices in the picture that references the PPS are specified in raster order according to the process defined in Clause 6.5.1. The tile_idx_delta_present_flag being equal to 1 specifies that the tile_idx_delta value may be present in the PPS, and all the rectangular slices in the picture that references the PPS are specified in raster order according to the process defined in Clause 6.5.1. When not present, the value of tile_idx_delta_present_flag is inferred to be equal to 0.

[0797] slice_width_in_tiles_minus1[i] + 1 specifies the width of the i-th rectangular slice in terms of slice columns. The value of slice_width_in_tiles_minus1[i] shall be in the range of 0 to NumTileColumns - 1 (inclusive).

[0798] When slice_width_in_tiles_minus1[i] is not present, the following applies:

[0799] – If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.

[0800] – Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred according to the provisions of Clause 6.5.1.

[0801] slice_height_in_tiles_minus1[i] + 1 specifies the height of the i-th rectangular slice in terms of slice rows. The value of slice_height_in_tiles_minus1[i] shall be in the range of 0 to NumTileRows - 1 (inclusive).

[0802] When slice_height_in_tiles_minus1[i] is not present, the following applies:

[0803] – 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.

[0804] – Otherwise (NumTileRows is not equal to 1, and tile_idx_delta_present_flag is equal to 1 or tileIdx % NumTileColumns is equal to 0), when 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].

[0805] num_exp_slices_in_tile[i] specifies the number of explicitly provided slice heights in the current slice that consists of multiple rectangular stripes. The value of num_exp_slices_in_tile[i] shall be in the range of 0 to RowHeight[tileY] - 1 (inclusive), where tileY is the slice row index of the slice containing the i-th stripe. When not present, the value of num_exp_slices_in_tile[i] is inferred to be equal to 0. When num_exp_slices_in_tile[i] is equal to 0, the value of the variable NumSlicesInTile[i] is inferred to be equal to 1.

[0806] exp_slice_height_in_ctus_minus1[j] plus 1 specifies the height of the j-th rectangular stripe in the current slice in terms of CTU rows. The value of exp_slice_height_in_ctus_minus1[j] shall be in the range of 0 to RowHeight[tileY] - 1 (inclusive), where tileY is the slice row index of the current slice.

[0807] When num_exp_slices_in_tile[i] is greater than 0, the variables NumSlicesInTile[i] and SliceHeightInCtusMinus1[i + k] (for k in the range of 0 to NumSlicesInTile[i] - 1 (inclusive)) are derived as follows:

[0808]

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

[0810] loop_filter_across_tiles_enabled_flag being equal to 1 specifies that loop filter operations can be performed across tile boundaries in the picture that references the PPS. loop_filter_across_tiles_enabled_flag being equal to 0 specifies that loop filter operations shall not be performed across tile boundaries in the picture that references the PPS. Loop filter operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When it is not present, the value of loop_filter_across_tiles_enabled_flag is inferred to be equal to 1.

[0811] loop_filter_across_slices_enabled_flag being equal to 1 specifies that loop filter operations can be performed across slice boundaries in the picture that references the PPS. loop_filter_across_slice_enabled_flag being equal to 0 specifies that loop filter operations shall not be performed across slice boundaries in the picture that references the PPS. Loop filter operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When it is not present, the value of loop_filter_across_slices_enabled_flag is inferred to be equal to 0.

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

[0813] Incrementing num_ref_idx_default_active_minus1[i] by 1 (when i equals 0) specifies the inferred value of NumRefIdxActive[0] for P or B slices (where num_ref_idx_active_override_flag equals 0), and when i equals 1, specifies the inferred value of NumRefIdxActive[1] for B slices (where num_ref_idx_active_override_flag equals 0). The value of num_ref_idx_default_active_minus1[i] shall be in the range of 0 to 14 (inclusive).

[0814] When rpl1_idx_present_flag equals 0, it specifies that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] do not exist in the PH syntax structure or slice header of a picture that references the PPS. When rpl1_idx_present_flag equals 1, it specifies that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] may exist in the PH syntax structure or slice header of a picture that references the PPS.

[0815] Adding 26 to init_qp_minus26 specifies the initial value of SliceQp for each slice that references the PPS Y When decoding a non-zero value of ph_qp_delta, the initial value of SliceQP is modified at the picture level Y When decoding a non-zero value of slice_qp_delta, the initial value of SliceQp is modified at the slice level Y The initial value. The value of init_qp_minus26 shall be in the range of -(26 + QpBdOffset) to +37 (inclusive).

[0816] When cu_qp_delta_enabled_flag equals 1, it specifies that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice exist in the PH that references the PPS, and cu_qp_delta_abs may exist in the transform unit syntax. When cu_qp_delta_enabled_flag equals 0, it specifies that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice do not exist in the PH that references the PPS, and cu_qp_delta_abs does not exist in the transform unit syntax.

[0817] When pps_chroma_tool_offsets_present_flag equals 1, it specifies that the syntax elements related to chroma tool offsets exist in the PPS RBSP syntax structure. When pps_chroma_tool_offsets_present_falg equals 0, it specifies that the syntax elements related to chroma tool offsets do not exist in the PPS RBSP syntax structure. When ChromaArrayType equals 0, the value of pps_chroma_tool_offsets_present_flag shall equal 0.

[0818] pps_cb_qp_offset and pps_cr_qp_offset are used to derive Qp' Cb and Qp' Cr for the luma quantization parameter Qp' Y offsets. The values of pps_cb_qp_offset and pps_cr_qp_offset shall be in the range of -12 to +12 (inclusive). When ChromaArrayType equals 0, pps_cb_qp_offset and pps_cr_qp_offset are not used during the decoding process, and the decoder shall ignore their values. When not present, the values of pps_cb_qp_offset and pps_cr_qp_offset are inferred to be equal to 0.

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

[0820] pps_joint_cbcr_qp_offset_value specifies the offset used to derive the luma quantization parameter Qp' CbCr for the luma quantization parameter Qp' Y The value of pps_joint_cbcr_qp_offset_value shall be in the range of -12 to +12 (inclusive). When ChromaArrayType equals 0 or sps_joint_cbcr_enabled_flag equals 0, pps_joint_cbcr_qp_offset_value is not used during the decoding process and the decoder shall ignore its value. When pps_joint_cbcr_qp_offset_present_flag equals 0, pps_joint_cbcr_qp_offset_value is not present and is inferred to equal 0.

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

[0822] When pps_cu_chroma_qp_offset_list_enabled_flag equals 1, it 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 the cu_chroma_qp_offset_flag may be present in the transform unit syntax and palette coding / decoding syntax. When pps_cu_chroma_qp_offset_list_enabled_flag equals 0, it 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 the cu_chroma_qp_offset_flag is not present in the transform unit syntax and palette coding / decoding syntax. When not present, the value of pps_cu_chroma_qp_offset_list_enabled_flag is inferred to be equal to 0.

[0823] chroma_qp_offset_list_len_minus1 plus 1 specifies the number of cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] syntax elements present in the PPS RBSP syntax structure. The value of chroma_qp_offset_list_len_minus1 shall be in the range of 0 to 5 (inclusive).

[0824] cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] are specified to be the offsets used for the derivation of Qp' Cb , Qp' Cr , and Qp' CbCr . 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 (inclusive). When pps_joint_cbcr_qp_offset_present_flag equals 0, joint_cbcr_qp_offset_list[i] does not exist and is inferred to be equal to 0.

[0825] pps_weighted_pred_flag being equal to 0 specifies that weighted prediction shall not be applied to P slices that reference the PPS. pps_weighted_pred_flag being equal to 1 specifies that weighted prediction shall be applied to P slices that reference the PPS. When sps_weighted_pred_flag equals 0, the value of pps_weighted_pred_flag shall be equal to 0.

[0826] pps_weighted_bipred_flag being equal to 0 specifies that explicit weighted prediction shall not be applied to B slices that reference the PPS. pps_weighted_bipred_flag being equal to 1 specifies that explicit weighted prediction shall be applied to B slices that reference the PPS. When sps_weighted_bipred_flag equals 0, the value of pps_weighted_bipred_flag shall be equal to 0.

[0827] deblocking_filter_control_present_flag being equal to 1 specifies whether there are deblocking filter control syntax elements in the PPS. deblocking_filter_control_present_flag being equal to 0 specifies that there are no deblocking filter control syntax elements in the PPS.

[0828] The deblocking_filter_override_enabled_flag being equal to 1 specifies that ph_deblocking_filter_override_flag exists in the PH that references the PPS, or slice_deblocking_filter_override_flag exists in the slice header that references the PPS. The deblocking_filter_override_enabled_flag being equal to 0 specifies that ph_deblocking_filter_override_flag does not exist in the PH that references the PPS, or slice_deblocking_filter_override_flag does not exist in the slice header that references the PPS. When it does not exist, the value of the deblocking_filter_override_enabled_flag is inferred to be equal to 0.

[0829] The pps_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of the deblocking filter should not be applied to the slices that reference the PPS where slice_deblocking_filter_disabled_flag does not exist.

[0830] The pps_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter should not be applied to the slices that reference the PPS where slice_deblocking_filter_disabled_flag does not exist. When it does not exist, the value of the pps_deblocking_filter_disabled_flag is inferred to be equal to 0.

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

[0832] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) for the Cb 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_cb_beta_offset_div2 and pps_cb_tc_offset_div2 shall each be in the range of -12 to 12, inclusive. When not present, the values of pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are inferred to be equal to 0.

[0833] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets for β and tC (divided by 2) for the Cr 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_cr_beta_offset_div2 and pps_cr_tc_offset_div2 shall each be in the range of -12 to 12, inclusive. When not present, the values of pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are inferred to be equal to 0.

[0834] rpl_info_in_ph_flag being equal to 1 specifies that reference picture list information is present in the PH syntax structure and not present in the slice header of slices that reference a PPS that does not contain the PH syntax structure. rpl_info_in_ph_flag being equal to 0 specifies that reference picture list information is not present in the PH syntax structure and may be present in the slice header of slices that reference a PPS that does not contain the PH syntax structure.

[0835] dbf_info_in_ph_flag being equal to 1 specifies that deblocking filter information is present in the PH syntax structure and not present in the slice header of slices that reference a PPS that does not contain the PH syntax structure. dbf_info_in_ph_flag being equal to 0 specifies that deblocking filter information is not present in the PH syntax structure and may be present in the slice header of slices that reference a PPS that does not contain the PH syntax structure. When not present, the value of dbf_info_in_ph_flag is inferred to be equal to 0.

[0836] When sao_info_in_ph_flag equals 1, it specifies that the SAO filter information exists in the PH syntax structure and does not exist in the slice header that references a PPS not containing the PH syntax structure. When sao_info_in_ph_flag equals 0, it specifies that the SAO filter information does not exist in the PH syntax structure and may exist in the slice header that references a PPS not containing the PH syntax structure.

[0837] When alf_info_in_ph_flag equals 1, it specifies that the ALF information exists in the PH syntax structure and does not exist in the slice header that references a PPS not containing the PH syntax structure. When alf_info_in_ph_flag equals 0, it specifies that the ALF information does not exist in the PH syntax structure and may exist in the slice header that references a PPS not containing the PH syntax structure.

[0838] When wp_info_in_ph_flag equals 1, it specifies that the weighted prediction information may exist in the PH syntax structure and does not exist in the slice header that references a PPS not containing the PH syntax structure. When wp_info_in_ph_flag equals 0, it specifies that the weighted prediction information does not exist in the PH syntax structure and may exist in the slice header that references a PPS not containing the PH syntax structure. When it does not exist, the value of wp_info_in_ph_flag is inferred to be equal to 0.

[0839] When qp_delta_info_in_ph_flag equals 1, it specifies that the QP delta information exists in the PH syntax structure and does not exist in the slice header that references a PPS not containing the PH syntax structure. When qp_delta_info_in_ph_flag equals 0, it specifies that the QP delta information does not exist in the PH syntax structure and may exist in the slice header that references a PPS not containing the PH syntax structure.

[0840] When pps_ref_wraparound_enabled_flag equals 1, it specifies that horizontal wrap-around motion compensation is applied in inter prediction. When pps_ref_wraparound_enabled_flag equals 0, it specifies that horizontal wrap-around motion compensation is not applied. When 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. When sps_ref_wraparound_enabled_flag equals 0, the value of pps_ref_wraparound_enabled_flag shall be equal to 0.

[0841] pps_ref_wraparound_offset plus (CtbSizeY / MinCbSizeY) + 2 is specified to calculate the offset for the horizontal wraparound position in units of MinCbSizeY luma samples. The value of pps_ref_wraparound_offset shall be in the range of 0 to (pic_width_in_luma_samples / MinCbSizeY) - (CtbSizeY / MinCbSizeY) - 2 (inclusive).

[0842] The variable PpsRefWraparoundOffset is set to be equal to pps_ref_wraparound_offset + (CtbSizeY / MinCbSizeY) + 2.

[0843] picture_header_extension_present_flag being equal to 0 specifies that there is no picture header extension syntax element in the PH that references the PPS. picture_header_extension_present_flag being equal to 1 specifies that the picture header extension syntax element exists in the PH that references the PPS. picture_header_extension_present_flag shall be equal to 0 in the bitstream compliant with this version of the specification.

[0844] slice_header_extension_present_flag being equal to 0 specifies that there is no slice header extension syntax element in the slice header of the coded picture that references the PPS. slice_header_extension_present_flag being equal to 1 specifies that the slice header extension syntax element exists in the slice header of the coded picture that references the PPS. slice_header_extension_present_flag shall be equal to 0 in the bitstream compliant with this version of the specification.

[0845] pps_extension_flag being equal to 0 specifies that there is no pps_extension_data_flag syntax element in the PPS RBSP syntax structure. pps_extension_flag being equal to 1 specifies that the pps_extension_data_flag syntax element exists in the PPS RBSP syntax structure.

[0846] The pps_extension_data_flag may have any value. Its presence and value shall not affect the conformance of the decoder to the profiles specified in this version of this specification. Decoders compliant with this version of this specification shall ignore all pps_extension_data_flag syntax elements.

[0847] 7.4.3.5 Adaptive Parameter Set semantics

[0848] Each APS RBSP shall be available for the decoding process before it is referenced, included in at least one AU (whose TemporalId is less than or equal to the TemporalId of the coded slice NAL unit that references it), or provided externally.

[0849] All APS NAL units within a PU having a specific value of adaptation_parameter_set_id and a specific value of aps_params_type, whether they are prefix or suffix APS NAL units, shall have the same content.

[0850] The adaptation_parameter_set_id provides an identifier for an APS for reference by other syntax elements.

[0851] When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 7 (inclusive).

[0852] When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 3 (inclusive).

[0853] Let apsLayerId be the value of nuh_layer_id for a specific APS NAL unit, and vclLayerId be the value of nuh_layer_id for a specific VCL NAL unit. A specific VCL NAL unit shall not reference a specific APS NAL unit unless apsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to apsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.

[0854] The aps_params_type specifies the type of APS parameters carried in the APS, as shown in Table 6.

[0855] Table 6 – APS parameter type codes and APS parameter types

[0856]

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

[0858] Note 1 – An APS NAL unit (with a particular value of adaptation_parameter_set_id and a particular value of aps_params_type) can be shared between pictures, and different slices within a picture can refer to different ALF APSs.

[0859] Note 2 – A suffix APS NAL unit associated with a particular VCL NAL unit (this VCL NAL unit being before the suffix APS NAL unit in decoding order) is not for use by the particular VCL NAL unit, but for VCL NAL units that come after the suffix APS NAL unit in decoding order.

[0860] aps_extension_flag being equal to 0 specifies that the aps_extension_data_flag syntax element is not present in the APS RBSP syntax structure. aps_extension_flag being equal to 1 specifies that the aps_extension_data_flag syntax element is present in the APS RBSP syntax structure.

[0861] aps_extension_data_flag can have any value. Its presence and value do not affect the decoder's compliance with the profiles specified in this version of this specification. Decoders compliant with this version of this specification shall ignore all aps_extension_data_flag syntax elements.

[0862] 7.4.3.6 Picture header RBSP semantics

[0863] The PH RBSP contains the PH syntax structure, i.e., picture_header_structure().

[0864] 7.4.3.7 Picture header structure semantics

[0865] The PH syntax structure contains general information for all slices of the coded pictures associated with the PH syntax structure.

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

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

[0868] A ph_inter_slice_allowed_flag equal to 0 specifies that the slice_type of all coded slices of the picture is equal to 2. A ph_inter_slice_allowed_flag equal to 1 specifies that there may or may not be one or more coded slices with slice_type equal to 0 or 1 in the picture.

[0869] A ph_intra_slice_allowed_flag equal to 0 specifies that the slice_type of all coded slices of the picture is equal to 0 or 1. A ph_intra_slice_allowed_flag equal to 1 specifies that there may or may not be one or more coded slices with slice_type equal to 2 in the picture. When not present, the value of ph_intra_slice_allowed_flag is inferred to be equal to 1.

[0870] Note 1 – For bitstreams that support sub-picture based bitstream merging without changing the PH NAL unit, the encoder is expected to set the values of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag to be equal to 1.

[0871] A non_reference_picture_flag equal to 1 specifies that the picture associated with PH is never used as a reference picture. A non_reference_picture_flag equal to 0 specifies that the picture associated with PH may or may not be used as a reference picture.

[0872] The ph_pic_parameter_set_id specifies the value of the pps_pic_parameter_set_id of the PPS in use. The value of ph_pic_parameter_set_id shall be in the range of 0 to 63 (inclusive).

[0873] A requirement for bitstream compliance is that the TemporalId value of the PH shall be greater than or equal to the TemporalId value of the PPS whose pps_pic_parameter_set_id is equal to ph_pic_parameter_set_id.

[0874] The 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 (inclusive).

[0875] After decoding a CLVSS picture that is not the first picture in the bitstream, the no_output_of_prior_pics_flag affects the output of previously decoded pictures in the DPB.

[0876] The recovery_poc_cnt specifies the recovery point of the decoded pictures in output order. If the current picture is a GDR picture associated with the PH and there is a picture picA in the CLVS that follows the current GDR picture in decoding order and whose PicOrderCntVal is equal to the PicOrderCntVal of the current GDR picture plus the value of recovery_poc_cnt, then the picture picA is called a recovery point picture. Otherwise, the first picture in output order whose PicOrderCntVal is greater than the PicOrderCntVal of the current picture plus the value of recovery_poc_cnt is called a recovery point picture. In the decoding order, the recovery point picture shall not be before the current GDR picture. The value of recovery_poc_cnt shall be in the range of 0 to MaxPicOrderCntLsb - 1 (inclusive).

[0877] When the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows:

[0878] RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (82)

[0879] Note 2 – When 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, the current and subsequent decoded pictures match exactly in output order with the corresponding pictures generated by decoding starting from the previous IRAP picture (if any), and are before the associated GDR picture in the decoding order.

[0880] ph_extra_bit[i] can be equal to 1 or 0. A decoder compliant with this version of this specification shall ignore the value of ph_extra_bit[i]. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.

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

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

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

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

[0885] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referenced by the luma component of the slice associated with the PH.

[0886] The value of alf_luma_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be equal to 1.

[0887] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.

[0888] ph_alf_chroma_idc being equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. ph_alf_chroma_idc being equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. ph_alf_chroma_idc being equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. ph_alf_chroma_idc being equal to 3 indicates that the adaptive loop filter is applied to the Cb and Cr color components. When ph_alf_chroma_idc is absent, it is inferred to be equal to 0.

[0889] 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 PH.

[0890] The value of alf_chroma_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma shall be equal to 1.

[0891] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma shall be less than or equal to the TemporalId of the picture associated with PH.

[0892] When ph_cc_alf_cb_enabled_flag equals 1, it specifies that the cross-component filter for the Cb color component is enabled for all slices associated with PH and can be applied to the Cb color component in the slices. When ph_cc_alf_cb_enabled_flag equals 0, it specifies that the cross-component filter for the Cb color component can be disabled for one or more or all slices associated with PH. When it is absent, ph_cc_alf_cb_enabled_flag is inferred to be equal to 0.

[0893] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the slices associated with PH.

[0894] The value of alf_cc_cb_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id shall be equal to 1.

[0895] When ph_cc_alf_cr_enabled_flag equals 1, it specifies that the cross-component filter for the Cr color component is enabled for all slices associated with PH and can be applied to the Cr color component in the slices. When ph_cc_alf_cr_enabled_flag equals 0, it specifies that the cross-component filter for the Cr color component can be disabled for one or more or all slices associated with PH. When it is absent, ph_cc_alf_cr_enabled_flag is inferred to be equal to 0.

[0896] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the slices associated with PH.

[0897] The value of alf_cc_cr_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id shall be equal to 1.

[0898] When ph_lmcs_enabled_flag equals 1, it specifies that luminance mapping with chroma scaling is enabled for all slices associated with PH. When ph_lmcs_enabled_flag equals 0, it specifies that luminance mapping with chroma scaling can be disabled for one or more or all slices associated with PH. When it is absent, the value of ph_lmcs_enabled_flag is inferred to be equal to 0.

[0899] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referenced by the slices associated with PH. The TemporalId of the APS NAL unit with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id should be less than or equal to the TemporalId of the picture associated with PH.

[0900] When ph_chroma_residual_scale_flag equals 1, it specifies that chroma residual scaling is enabled for all slices associated with PH. When ph_chroma_residual_scale_flag equals 0, it specifies that chroma residual scaling can be disabled for one or more or all slices associated with PH. When ph_chroma_residual_scale_flag is absent, it is inferred to be equal to 0.

[0901] When ph_scaling_list_present_flag equals 1, it specifies that the scaling list data for the slices associated with PH is derived based on the scaling list data contained in the reference scaling list APS. When ph_scaling_list_present_flag equals 0, it specifies that the scaling list data for the slices associated with PH is set to be equal to 16. When it is absent, the value of ph_scaling_list_present_flag is inferred to be equal to 0.

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

[0903] The ph_virtual_boundaries_present_flag being equal to 1 specifies that information about virtual boundaries is signaled in the PH. The ph_virtual_boundaries_present_flag being equal to 0 specifies that information about virtual boundaries is not signaled in the PH. When one or more virtual boundaries are signaled in the PH, loop filtering operations are disabled across the virtual boundaries in the picture. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of ph_virtual_boundaries_present_flag is inferred to be equal to 0.

[0904] One requirement for bitstream conformance is that when subpic_info_present_flag is equal to 1, the value of ph_virtual_boundaries_present_flag shall be equal to 0.

[0905] The variable VirtualBoundariesPresentFlag is derived as follows:

[0906]

[0907] ph_num_ver_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_x[i] syntax elements present in the PH. When ph_num_ver_virtual_boundaries is not present, it is inferred to be equal to 0.

[0908] The variable NumVerVirtualBoundaries is derived as follows:

[0909]

[0910] 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 (inclusive).

[0911] The list VirtualBoundariesPosX[i] (for i in the range from 0 to NumVirtualBoundaries-1 inclusive), specifying the position of the vertical virtual boundary in units of luma samples, is derived as follows:

[0912]

[0913] The distance between any two vertical virtual boundaries shall be greater than or equal to CtbSizeY luma samples.

[0914] ph_num_hor_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_y[i] syntax elements present in the PH. When ph_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0.

[0915] Derive the parameter NumHorVirtualBoundaries as follows:

[0916]

[0917] When 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.

[0918] 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 (inclusive).

[0919] Derive the list VirtualBoundariesPosY[i] (for i in the range from 0 to NumVirtualBoundaries-1 (inclusive)), in units of luma samples, to specify the positions of the horizontal virtual boundaries as follows:

[0920]

[0921] The distance between any two horizontal virtual boundaries shall be greater than or equal to CtbSizeY luma samples.

[0922] pic_output_flag affects the decoded picture output and deletion process. When pic_output_flag is not present, it is inferred to be equal to 1.

[0923] The partition_constraints_override_flag being equal to 1 specifies that the partition constraint parameters exist in the PH. The partition_constraints_override_flag being equal to 0 specifies that the partition constraint parameters do not exist in the PH. When not present, the value of the partition_constraints_override_flag is inferred to be equal to 0.

[0924] ph_log2_diff_min_qt_min_cb_intra_slice_luma specifies the difference between the minimum base-2 logarithm of the size of the luminance samples in the luminance leaf blocks resulting from the quadtree partitioning of the CTU and the minimum base-2 logarithm of the size of the smallest decoded block of the luminance samples in the luminance CUs in the slices with slice_type equal to 2 associated with the PH. The value of ph_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range from 0 to CtbLog2SizeY - MinCbLog2SizeY (inclusive). When 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_intra_slice_luma.

[0925] ph_max_mtt_hierarchy_depth_intra_slice_luma specifies the maximum hierarchical depth of the coding units resulting from the multi-type tree partitioning of the quadtree leaves in the slices with slice_type equal to 2 (I) associated with the PH. The value of ph_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range from 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (inclusive). When 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.

[0926] 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 the luma samples in a luma coding block that can use binary partitioning and the minimum size (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When absent, 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.

[0927] 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 the luma samples in a luma coding block that can use ternary partitioning and the minimum size (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When absent, 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.

[0928] ph_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the difference between the minimum base-2 logarithm of the size of the luminance samples in the chroma leaf blocks resulting from the quadtree partitioning of the chroma CTUs with treeType equal to DUAL_TREE_CHROMA and the minimum base-2 logarithm of the size of the smallest decoded block of the luminance samples in the chroma CUs 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 from 0 to CtbLog2SizeY - MinCbLog2SizeY (inclusive). When 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_cb_intra_slice_chroma.

[0929] ph_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchical depth of the chroma coded / decoded units resulting from the multi-type tree partitioning of the chroma quadtree leaves with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) associated with PH. The value of ph_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range from 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (inclusive). When 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.

[0930] 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 the luma samples of the chroma coding blocks that can use binary partitioning and the minimum size (width or height) of the luma samples of the chroma leaf blocks resulting from the quadtree partitioning of the chroma CTUs with treeType equal to DUAL_TREE_CHROMA in a slice where the slice_type associated with PH is equal to 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 (inclusive). When 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.

[0931] 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 the luma samples of the chroma coding blocks that can use ternary partitioning and the minimum size (width or height) of the luma samples of the chroma leaf blocks resulting from the quadtree partitioning of the chroma CTUs with treeType equal to DUAL_TREE_CHROMA in a slice where the slice_type associated with PH is equal to 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 (inclusive). When 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.

[0932] The ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of the coding / decoding unit in the intra slice that represents 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) (inclusive).

[0933] When it does not exist, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.

[0934] The ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of the coding / decoding unit in the intra slice that represents cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_intra_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma) (inclusive).

[0935] When it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.

[0936] The ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the base-2 logarithm of the minimum size among the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU and the base-2 logarithm of the minimum luma coding block size among the luma samples of the luma CUs in the slice associated with PH where the slice_type 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 (inclusive). When it does not exist, 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.

[0937] ph_max_mtt_hierarchy_depth_inter_slice specifies the maximum hierarchical depth of the coding tree units generated by the multi-type tree partitioning of the quadtree leaves in the slices where the slice_type associated with PH is equal to 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) (inclusive). When it is absent, the value of ph_max_mtt_hierarchy_depth_inter_slice is inferred to be equal to sps_max_mtt_hierarchy_depth_inter_slice.

[0938] 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 the luma samples in the luma coding blocks that can use binary partitioning and the minimum size (width or height) of the luma samples in the luma leaf blocks generated by the quadtree partitioning of the CTUs in the slices where the slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY (inclusive). When it is absent, 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.

[0939] 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 the luma samples in the luma coding blocks that can use ternary partitioning and the minimum size (width or height) of the luma samples in the luma leaf blocks generated by the quadtree partitioning of the CTUs in the slices where the slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_log2_diff_max_tt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY (inclusive). When it is absent, 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.

[0940] ph_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding / decoding unit in the inter-slice of 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) (inclusive).

[0941] When it is absent, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.

[0942] ph_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding / decoding unit in the inter-slice representing cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice) (inclusive).

[0943] When it is absent, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.

[0944] ph_temporal_mvp_enabled_flag specifies whether the temporal motion vector prediction value can be used for the inter prediction of the slice associated with PH. If ph_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the slice associated with PH shall be constrained such that the temporal motion vector prediction value is not used in the decoding of the slice. Otherwise (ph_temporal_mvp_enabled_flag is equal to 1), the temporal motion vector prediction value can be used to decode the slice associated with PH. When it is absent, the value of ph_temporal_mvp_enabled_flag is inferred to be equal to 0. When no reference picture in the DPB has the same spatial resolution as the current picture, the value of ph_temporal_mvp_enabled_flag shall be equal to 0.

[0945] Derive the maximum number of sub - block - based merging MVP candidates, MaxNumSubblockMergeCand, as follows:

[0946]

[0947] The value of MaxNumSubblockMergeCand should be in the range of 0 to 5 (inclusive).

[0948] ph_collocated_from_l0_flag being equal to 1 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 0. ph_collocated_from_l0_flag being equal to 0 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 1.

[0949] ph_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.

[0950] 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 should be in the range of 0 to num_ref_entries[0][PicRplsIdx[0]] - 1 (inclusive).

[0951] When 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 should be in the range of 0 to num_ref_entries[1][PicRplsIdx[1]] - 1 (inclusive).

[0952] When it does not exist, the value of ph_collocated_ref_idx is inferred to be equal to 0.

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

[0954] When ph_fpel_mmvd_enabled_flag equals 1, it specifies that the merge mode with motion vector difference uses integer sample precision in the slice associated with PH. When ph_fpel_mmvd_enabled_flag equals 0, it specifies that the merge mode with motion vector difference can use fractional sample precision in the slice associated with PH. When absent, the value of ph_fpel_mmvd_enabled_flag is inferred to be 0.

[0955] When ph_disable_bdof_flag equals 1, it specifies that the inter - bidirectional prediction based on bidirectional optical flow is disabled in the slice associated with PH. When ph_disable_bdof_flag equals 0, it specifies that the inter - bidirectional prediction based on bidirectional optical flow can be either enabled or disabled in the slice associated with PH.

[0956] When ph_disable_bdof_flag is absent, the following applies:

[0957] – If sps_bdof_enabled_flag equals 1, the value of ph_disable_bdof_flag is inferred to be equal to 0.

[0958] – Otherwise (sps_bdof_enabled_flag equals 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.

[0959] When ph_disable_dmvr_flag equals 1, it specifies that the inter - bidirectional prediction based on decoder motion vector refinement is disabled in the slice associated with PH. When ph_disable_dmvr_flag equals 0, it specifies that the inter - bidirectional prediction based on decoder motion vector refinement can be either enabled or disabled in the slice associated with PH.

[0960] When ph_disable_dmvr_flag is absent, the following applies:

[0961] – If sps_dmvr_enabled_flag equals 1, the value of ph_disable_dmvr_flag is inferred to be equal to 0.

[0962] – Otherwise (sps_dmvr_enabled_flag equals 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.

[0963] ph_disable_prof_flag being equal to 1 specifies that prediction optimization with optical flow is disabled in the slice associated with PH. ph_disable_prof_flag being equal to 0 specifies that prediction optimization with optical flow may or may not be enabled in the slice associated with PH.

[0964] When ph_disable_prof_flag is not present, the following applies:

[0965] – If sps_affine_prof_enabled_flag is equal to 1, the value of ph_disable_prof_flag is inferred to be equal to 0.

[0966] – Otherwise (sps_affine_prof_enabled_flag is equal to 0), the value of ph_disable_prof_flag is inferred to be equal to 1.

[0967] ph_qp_delta specifies the initial value of Qp to be used for the coding / decoding blocks in the picture Y until it is modified by the value of CuQpDeltaVal in the coding / decoding unit layer.

[0968] When qp_delta_info_in_ph_flag is equal to 1, the Qp of all slices of the picture is derived as follows Y The initial value of the quantization parameter SliceQp Y :

[0969] SliceQp Y = 26 + init_qp_minus26 + ph_qp_delta (89)

[0970] SliceQp Y shall be in the range from -QpBdOffset to +63 (inclusive).

[0971] The ph_joint_cbcr_sign_flag specifies whether the juxtaposed residual samples of the two chrominance components have inverted signs in the transform unit where tu_joint_cbcr_residual_flag[x0][y0] equals 1. When tu_joint_cbcr_residual_flag[x0][y0] equals 1 for a transform unit, ph_joint_cbcr_sign_flag equals 0 specifies that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the juxtaposed Cb (or Cr) residual sample, and ph_joint_cbcr_sign_flag equals 1 specifies that the sign of each residual sample of the Cr (or Cb) component is given by the inverted sign of the juxtaposed Cb (or Cr) residual sample.

[0972] The ph_sao_luma_enabled_flag equals 1 specifies that SAO is enabled for the luma component in all slices associated with PH; the ph_sao_luma_enabled_flag equals 0 specifies that SAO for the luma component can be disabled for one or more or all slices associated with PH. When the ph_sao_luma_enabled_flag is absent, it is inferred to be equal to 0.

[0973] The ph_sao_chroma_enabled_flag equals 1 specifies that SAO is enabled for the chrominance component in all slices associated with PH; the ph_sao_chroma_enabled_flag equals 0 specifies that SAO for the chrominance component can be disabled for one or more or all slices associated with PH. When the ph_sao_chroma_enabled_flag is absent, it is inferred to be equal to 0.

[0974] The ph_dep_quant_enabled_flag equals 0 specifies that the relevant quantization is disabled for the current picture. The ph_dep_quant_enabled_flag equals 1 specifies that the relevant quantization is enabled for the current picture. When the ph_dep_quant_enabled_flag is absent, it is inferred to be equal to 0.

[0975] The pic_sign_data_hiding_enabled_flag equals 0 specifies that sign bit hiding is disabled for the current picture. The pic_sign_data_hiding_enabled_flag equals 1 specifies that sign bit hiding is enabled for the current picture. When the pic_sign_data_hiding_enabled_flag is absent, it is inferred to be equal to 0.

[0976] The ph_deblocking_filter_override_flag being equal to 1 specifies the presence of deblocking parameters in PH. The ph_deblocking_filter_override_flag being equal to 0 specifies the absence of deblocking parameters in PH. When absent, the value of ph_deblocking_filter_override_flag is inferred to be equal to 0.

[0977] The ph_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of the deblocking filter is not applied to the slices associated with PH. The ph_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter is not applied to the slices associated with PH. When ph_deblocking_filter_disabled_flag is absent, it is inferred to be equal to pps_deblocking_filter_disabled_flag.

[0978] ph_beta_offset_div2 and ph_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) of the luma component applied to the slices associated with PH. The values of both ph_beta_offset_div2 and ph_tc_offset_div2 should be in the range of -12 to 12 (inclusive). When absent, 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.

[0979] ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) of the Cb component applied to the slices associated with PH. The values of both ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 should be in the range of -12 to 12 (inclusive). When absent, 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.

[0980] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) of 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 (inclusive). When absent, 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.

[0981] ph_extension_length specifies the length of the PH extension data in bytes, excluding the bits used to signal ph_extension_length itself. The value of ph_extension_length shall be in the range of 0 to 256 (inclusive). When absent, the value of ph_extension_length is inferred to be equal to 0.

[0982] ph_extension_data_byte can have any value. Decoders compliant with this version of this specification shall ignore the value of ph_extension_data_byte. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.

[0983] 7.4.8 Slice Header Semantics

[0984] 7.4.8.1 General Slice Header Semantics

[0985] The variable CuQpDeltaVal is set to be equal to 0, which specifies the difference between the quantization parameter of the coding unit containing cu_qp_delta_abs and its prediction. It is specified that when determining the respective values of Qp' Cb 、Qp' Cr and Qp' CbCr of the quantization parameter, the variables CuQpOffset Cb 、CuQpOffset Cr and CuQpOffset CbCr are all set to be equal to 0.

[0986] A value of picture_header_in_slice_header_flag equal to 1 specifies that the PH syntax structure is present in the slice header. A value of picture_header_in_slice_header_flag equal to 0 specifies that the PH syntax structure is not present in the slice header.

[0987] A requirement for bitstream conformance is that the value of picture_header_in_slice_header_flag in all decoded slices in the CLVS shall be the same.

[0988] When the picture_header_in_slice_header_flag of a decoded slice is equal to 1, the requirement for bitstream conformance is that no VCL NAL unit with nal_unit_type equal to PH_NUT shall be present in the CLVS.

[0989] When picture_header_in_slice_header_flag is equal to 0, the picture_header_in_slice_header_flag of all decoded slices in the current picture shall be equal to 0, and the current PU shall have a PH NAL unit.

[0990] slice_subpic_id specifies the sub-picture ID of the sub-picture containing the slice. If slice_subpic_id is present, the value of the derived 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.

[0991] slice_address specifies the slice address of the slice. When not present, the value of slice_address is inferred to be equal to 0. When rect_slice_flag is equal to 1 and NumSlicesInSubpic[CurrSubicIdx] is equal to 1, the value of slice_address is inferred to be equal to 0.

[0992] If rect_slice_flag is equal to 0, the following applies:

[0993] - The slice address is the raster scan slice index.

[0994] - The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.

[0995] - The value of slice_address shall be in the range of 0 to NumTilesInPic-1 (inclusive).

[0996] Otherwise (rect_slice_flag equals 1), the following applies:

[0997] - The slice address is the sub-picture level slice index of the slice.

[0998] - The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.

[0999] - The value of slice_address shall be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx]-1 (inclusive).

[1000] The requirements for bitstream conformance are to apply the following constraints:

[1001] - If rect_slice_flag equals 0 or subpic_info_present_flag equals 0, the value of slice_address shall not be equal to the value of slice_address of any other coded slice NAL unit of the same coded picture.

[1002] - Otherwise, the slice_subpic_id and slice_address value pair shall not be equal to the slice_subpic_id and slice_address value pair of any other coded slice NAL unit of the same coded picture.

[1003] - The shape of the slices of the picture shall be such that when each CTU is decoded, its entire left boundary and its entire top boundary shall be composed of the picture boundary or the boundary of a previously decoded CTU.

[1004] sh_extra_bit[i] can be equal to 1 or 0. Decoders compliant with this version of this specification shall ignore the value of sh_extra_bit[i]. Its value does not affect the decoder's conformance to the profiles specified in this version of the specification.

[1005] num_tiles_in_slice_minus1 plus 1 (when present) specifies the number of slices in a strip. The value of num_tiles_in_slice_minus1 shall be in the range of 0 to NumTilesInPic-1 (inclusive).

[1006] Derive the variable NumCtusInCurrSlice that specifies the number of CTUs in the current slice and the list CtbAddrInCurrSlice[i] that specifies the picture raster scan address of the i-th CTB within the strip (for i in the range of 0 to NumCtusInCurrSlice-1 (inclusive)) as follows:

[1007]

[1008] Derive the variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos as follows:

[1009]

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

[1011] Table 9 - Associated with the name of slice_type

[1012] slice_type Name of slice_type 0 B (B slice) 1 P (P slice) 2 I (I slice)

[1013] When not present, the value of slice_type is inferred to be equal to 2.

[1014] When ph_intra_slice_allowed_flag is equal to 0, the value of slice_type shall be equal to 0 or 1. When nal_unit_type is in the range of IDR_W_RADL to CRA_NUT (inclusive) and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.

[1015] Derive the variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC as follows: If slice_type is equal to 2 (I),

[1016] MinQtLog2SizeY =

[1017] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_luma(119)

[1018] MinQtLog2SizeC =

[1019] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_chroma(120)

[1020] MaxBtSizeY = 1 <<

[1021] (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_intra_slice_luma)(121)

[1022] MaxBtSizeC = 1 <<

[1023] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_intra_slice_chroma)(122)

[1024] MaxTtSizeY = 1 <<

[1025] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma)(123)

[1026] MaxTtSizeC = 1 <<

[1027] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma)(124)

[1028] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma(125)

[1029] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma(126)

[1030] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice(127)

[1031] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice(128)

[1032] Otherwise (slice_type equal to 0(B) or 1(P)),

[1033] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (129)

[1035] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (130)

[1037] MaxBtSizeY = 1 <<

[1038] (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice)(131)

[1039] MaxBtSizeC = 1 <<

[1040] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice)(132)

[1041] MaxTtSizeY = 1 <<

[1042] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice) (133)

[1043] MaxTtSizeC = 1 <<

[1044] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_inter_slice) (134)

[1045] MaxMttDepthY = ph_max_mtt_hierarchy_depth_inter_slice (135)

[1046] MaxMttDepthC = ph_max_mtt_hierarchy_depth_inter_slice (136)

[1047] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (137)

[1048] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice(138)

[1049] MinQtSizeY = 1 << MinQtLog2SizeY (139)

[1051] MinQtSizeC = 1 << MinQtLog2SizeC (140)

[1053] MinBtSizeY = 1 << MinCbLog2SizeY (141)

[1055] MinTtSizeY = 1 << MinCbLog2SizeY (142)

[1057] When slice_alf_enabled_flag equals 1, it specifies that the adaptive loop filter is enabled and can be applied to the Y, Cb, or Cr color components in the slice. When slice_alf_enabled_flag equals 0, it specifies that the adaptive loop filter is disabled for all color components in the slice. When not present, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.

[1058] slice_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slice. When slice_alf_enabled_flag equals 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.

[1059] slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referenced by the luma component of the slice. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the decoded slice NAL unit. When slice_alf_enabled_flag equals 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].

[1060] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be equal to 1.

[1061] When slice_alf_chroma_idc equals 0, it is specified that the adaptive loop filter is not applied to the Cb and Cr color components. When slice_alf_chroma_idc equals 1, it indicates that the adaptive loop filter is applied to the Cb color component. When slice_alf_chroma_idc equals 2, it indicates that the adaptive loop filter is applied to the Cr color component. When slice_alf_chroma_idc equals 3, it indicates that the adaptive loop filter is applied to both the Cb and Cr color components. When slice_alf_chroma_idc is absent, it is inferred to be equal to ph_alf_chroma_idc.

[1062] slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referred to by the chroma component of the slice. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the decoded slice NAL unit. When slice_alf_enabled_flag equals 1 and slice_alf_aps_id_chroma is absent, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.

[1063] The alf_chroma_filter_signal_flag value of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be equal to 1.

[1064] When slice_cc_alf_cb_enabled_flag equals 0, it is specified that the cross-component filter is not applied to the Cb color component. When slice_cc_alf_cb_enabled_flag equals 1, it indicates that the cross-component filter is enabled and can be applied to the Cb color component. When slice_cc_alf_cb_enabled_flag is absent, it is inferred to be equal to ph_cc_alf_cb_enabled_flag.

[1065] The slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id referred to by the Cb color component of the slice.

[1066] 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 decoded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 1 and slice_cc_alf_cb_aps_id does not exist, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id.

[1067] The value of alf_cc_cb_filter_signal_flag 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 equal to 1.

[1068] 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 indicates that the cross-component adaptive loop filter is enabled and can be applied to the Cr color component. When slice_cc_alf_cr_enabled_flag does not exist, it is inferred to be equal to ph_cc_alf_cr_enabled_flag.

[1069] The slice_cc_alf_cr_aps_id refers to the adaptation_parameter_set_id for the Cr color component of the slice. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the decoded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.

[1070] The alf_cc_cr_filter_signal_flag value of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be equal to 1.

[1071] When separate_colour_plane_flag is equal to 1, colour_plane_id identifies the colour plane associated with the current slice. The value of colour_plane_id shall be in the range 0 to 2 (inclusive). The colour_plane_id values 0, 1, and 2 correspond to the Y, Cb, and Cr planes respectively. The value 3 of colour_plane_id is reserved for future use by ITU-T|ISO / IEC.

[1072] Note 1 – There is no correlation between the decoding processes of the different colour planes of a picture.

[1073] When num_ref_idx_active_override_flag is equal to 1, it specifies that the syntax element num_ref_idx_active_minus1[0] exists for P and B slices, and the syntax element num_ref_idx_active_minus1[1] exists for B slices. When num_ref_idx_active_override_flag is equal to 0, it specifies that the syntax elements num_ref_idx_active_minus1[0] and num_ref_idx_active_minus1[1] do not exist. When they do not exist, the value of num_ref_idx_active_override_flag is inferred to be equal to 1.

[1074] num_ref_idx_active_minus1[i] is used to derive the variable NumRefIdxActive[i] specified in Equation 143. The value of num_ref_idx_active_minus1[i] shall be in the range of 0 to 14 (inclusive).

[1075] For i equal to 0 or 1, when the current slice is a B slice, num_ref_idx_active_override_flag is equal to 1, and num_ref_idx_active_minus1[i] does not exist, num_ref_idx_active_minus1[i] is inferred to be equal to 0.

[1076] When the current slice is a P slice, num_ref_idx_active_override_flag is equal to 1, and num_ref_idx_active_minus1[0] does not exist, num_ref_idx_active_minus1[0] is inferred to be equal to 0.

[1077] Derive the variable NumRefIdxActive[i] in the following manner:

[1078]

[1079] The value of NumRefIdxActive[i] - 1 specifies the maximum reference index that can be used for decoding the reference picture list i of the slice. When the value of NumRefIdxActive[i] is equal to 0, no reference index of the reference picture list i can be used for decoding the slice.

[1080] When the current slice is a P slice, the value of NumRefIdxActive[0] shall be greater than 0.

[1081] When the current slice is a B slice, both NumRefIdxActive[0] and NumRefIdxActive[1] shall be greater than 0.

[1082] cabac_init_flag specifies the method for determining the initialization table used in the context variable initialization process. When cabac_init_flag does not exist, it is inferred to be equal to 0.

[1083] A slice_collocated_from_l0_flag equal to 1 specifies the collocated picture derived from reference picture list 0 for temporal motion vector prediction. A slice_collocated_from_l0_flag equal to 0 specifies the collocated picture derived from reference picture list 1 for temporal motion vector prediction.

[1084] When 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:

[1085] – If rpl_info_in_ph_flag is equal to 1, then slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag.

[1086] – Otherwise (rpl_info_in_ph_flag is equal to 0 and if slice_type is equal to P), then the value of slice_collocated_from_l0_flag is inferred to be equal to 1.

[1087] slice_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.

[1088] When slice_type is equal to 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, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0] - 1 (inclusive).

[1089] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to an entry in reference picture list 1, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1] - 1 (inclusive).

[1090] When slice_collocated_ref_idx is not present, the following applies:

[1091] – 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.

[1092] – Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.

[1093] A requirement for bitstream consistency is that the picture referred to by slice_collocated_ref_idx should be the same for all slices of the coded picture.

[1094] A requirement for bitstream consistency is that the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referred to by slice_collocated_ref_idx should be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] should be equal to 0.

[1095] slice_qp_delta specifies the initial value of Qp Y for the coded blocks in a slice until modified by the CuQpDeltaVal value in the coded unit layer.

[1096] When qp_delta_info_in_ph_flag is equal to 0, the Qp of the slice is derived as follows Y The initial value of the quantization parameter SliceQp Y :

[1097] SliceQp Y = 26 + init_qp_minus26 + slice_qp_delta (144)

[1098] SliceQp Y The value of should be in the range from -QpBdOffset to +63 (inclusive).

[1099] When any of the following conditions is true:

[1100] – The value of wp_info_in_ph_flag is equal to 1, the value of pps_weighted_pred_flag is equal to 1, and the value of slice_type is equal to P.

[1101] – The value of wp_info_in_ph_flag is equal to 1, the value of pps_weighted_bipred_flag is equal to 1, and the value of slice_type is equal to B.

[1102] The following applies:

[1103] – The value of NumRefIdxActive[0] shall be less than or equal to the value of NumWeightsL0.

[1104] – For each reference picture index RefPicList[0][i] (for i in the range 0 to NumRefIdxActive[0] - 1, inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL0[i], ChromaWeightL0[0][i], and ChromaWeightL0[1][i], respectively.

[1105] When 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:

[1106] – The value of NumRefIdxActive[1] shall be less than or equal to the value of NumWeightsL1.

[1107] – For each reference picture index RefPicList[1][i] (for i in the range 0 to NumRefIdxActive[1] - 1, inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL1[i], ChromaWeightL1[0][i], and ChromaWeightL1[1][i], respectively.

[1108] slice_cb_qp_offset specifies in determining Qp' CbThe difference to be added to pps_cb_qp_offset when quantizing the parameter value. The value of slice_cb_qp_offset shall be in the range of -12 to +12 (inclusive). When slice_cb_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_cb_qp_offset + slice_cb_qp_offset shall be in the range of -12 to +12 (inclusive).

[1109] slice_cr_qp_offset specifies that when determining Qp' Cr The difference to be added to pps_cr_qp_offset when quantizing the parameter value. The value of slice_cr_qp_offset shall be in the range of -12 to +12 (inclusive). When slice_cr_qp_offset does not exist, 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 (inclusive).

[1110] slice_joint_cbcr_qp_offset specifies that when determining the value of Qp' CbCr The difference to be added to pps_joint_cbcr_qp_offset_value. The value of slice_joint_cbcr_qp_offset shall be in the range of -12 to +12 (inclusive). When slice_joint_cbcr_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_joint_cbcr_qp_offset_value + slice_joint_cbcr_qp_offset shall be in the range of -12 to +12 (inclusive).

[1111] cu_chroma_qp_offset_enabled_flag being equal to 1 specifies that cu_chroma_qp_offset_flag may exist in the transform unit and palette coding / decoding syntax. cu_chroma_qp_offset_enabled_flag being equal to 0 specifies that cu_chroma_qp_offset_flag does not exist in the transform unit or palette coding / decoding syntax. When it does not exist, the value of cu_chroma_qp_offset_enabled_flag is inferred to be equal to 0.

[1112] When slice_sao_luma_flag equals 1, SAO is specified to be enabled for the luma component in the current slice; when slice_sao_luma_flag equals 0, SAO is specified to be disabled for the luma component in the current slice. When slice_sao_luma_flag does not exist, it is inferred to be equal to ph_sao_luma_enabled_flag.

[1113] When slice_sao_chroma_flag equals 1, SAO is specified to be enabled for the chroma component in the current slice; when slice_sao_chroma_flag equals 0, SAO is specified to be disabled for the chroma component in the current slice. When slice_sao_chroma_flag does not exist, it is inferred to be equal to ph_sao_chroma_enabled_flag.

[1114] When slice_deblocking_filter_override_flag equals 1, it is specified that there are deblocking parameters in the slice header. When slice_deblocking_filter_override_flag equals 0, it is specified that there are no deblocking parameters in the slice header. When it does not exist, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.

[1115] When slice_deblocking_filter_disabled_flag equals 1, it is specified that the deblocking filter operation is not applied to the current slice. When slice_deblocking_filter_disabled_flag equals 0, it is specified that the deblocking filter operation is applied to the current slice. When slice_deblocking_filter_disabled_flag does not exist, it is inferred to be equal to ph_deblocking_filter_disabled_flag.

[1116] slice_beta_offset_div2 and slice_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the luma component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall each be in the range of -12 to 12, inclusive. When absent, 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.

[1117] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (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 each be in the range of -12 to 12, inclusive. When absent, 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.

[1118] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (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 each be in the range of -12 to 12, inclusive. When absent, 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.

[1119] The slice_ts_residual_coding_disabled_flag specifies that the residual_coding() syntax structure is used to parse the residual samples of the transform skipped blocks of the current slice. A 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 skipped blocks of the current slice. When the slice_ts_residual_coding_disabled_flag is not present, it is inferred to be equal to 0.

[1120] A slice_lmcs_enabled_flag equal to 1 specifies that luminance mapping with chroma scaling is enabled for the current slice. A slice_lmcs_enabled_flag equal to 0 specifies that luminance mapping with chroma scaling is not enabled for the current slice. When the slice_lmcs_enabled_flag is not present, it is inferred to be equal to 0.

[1121] A slice_scaling_list_present_flag equal to 1 specifies that the scaling list data for the current slice is derived from 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. A slice_scaling_list_present_flag equal to 0 specifies that the scaling list data for the current picture is the default scaling list data derived as specified in Clause 7.4.3.21. When not present, the value of the slice_scaling_list_present_flag is inferred to be equal to 0.

[1122] The variable NumEntryPoints that specifies the number of entry points in the current slice is derived as follows:

[1123]

[1124] offset_len_minus1 plus 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 of 0 to 31 (inclusive).

[1125] entry_point_offset_minus1[i] + 1 specifies the i-th entry point offset in bytes, and is represented by offset_len_minus1 + 1 bits. The strip data following the strip header consists of NumEntryPoints + 1 subsets, where the subset index values range from 0 to NumEntryPoints (inclusive). The first byte of the strip data is considered byte 0. When present, for the purpose of subset identification, the emulation prevention bytes that appear in the strip data part of the coded strip NAL unit are counted as part of the strip data. Subset 0 consists of bytes 0 to entry_point_offset_minus1[0] (inclusive) of the coded strip data, subset k consists of bytes firstByte[k] to lastByte[k] (inclusive) of the coded strip data (where k is in the range from 1 to NumEntryPoints - 1 (inclusive)), where firstByte[k] and lastByte[k] are defined as:

[1126]

[1127] lastByte[k] = firstByte[k] + entry_point_offset_minus1[k] (147)

[1128] The last subset (subset index equal to NumEntryPoints) consists of the remaining bytes of the coded strip data.

[1129] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the strip contains one or more complete slices, each subset shall consist of all the coded bits of all the CTUs within the same slice in the strip, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the number of slices in the strip.

[1130] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the strip contains a subset of CTU rows from a single slice, NumEntryPoints shall be 0 and the number of subsets shall be 1. The subset shall consist of all the coded bits of all the CTUs in the strip.

[1131] When sps_entropy_coding_sync_enabled_flag equals 1, each subset k (where k ranges from 0 to NumEntryPoints, inclusive) shall consist of all the coded and decoded bits of all CTUs in a slice-internal CTU row, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the total number of slice-specific CTU rows in the strip.

[1132] slice_header_extension_length specifies the length of the slice header extension data in bytes, excluding the bits used to signal slice_header_extension_length itself. The value of slice_header_extension_length shall be in the range of 0 to 256, inclusive. When it is not present, the value of slice_header_extension_length is inferred to be equal to 0.

[1133] slice_header_extension_data_byte[i] can have any value. Decoders compliant with this version of this specification shall ignore the values of all slice_header_extension_data_byte[i] syntax elements. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.

[1134] Example technical problems solved by the disclosed technical solution

[1135] There are several potential problems in the current design of HLS, which are described as follows.

[1136] (1) The control of the temporal prediction flags in the SPS, picture header, and slice header causes problems for P slices and / or B slices.

[1137] a) The picture header and slice-level control of the temporal prediction flags may lead to uninitialized collocated pictures and / or collocated reference indices for P slices.

[1138] b) Slice_collocated_ref_idx referring to an entry in reference picture list 1 can be used for P slices.

[1139] c) For P slices, the value of slice_collocated_ref_idx referring to an entry in reference picture list 0 may be out of the range of 0 to NumRefIdxActive[0] - 1.

[1140] d) The picture-level and strip-level temporal prediction flags relate to whether the collocated picture is from L0 or L1 and which reference pictures are cited, but there is no high-level control such as whether temporal prediction is allowed, which may not be clear enough.

[1141] (2) Considering the interaction of relevant syntax elements, it may be necessary to modify the semantics of sub-picture related syntax elements to obtain a more accurate interpretation.

[1142] a) When there is only one sub-picture, sps_independent_subpics_flag may be equal to 0.

[1143] b) When there is only one strip in the sub-picture, the value of slice_width_in_tiles_minus1 still needs to be calculated instead of inferred.

[1144] c) When there is only one strip and / or one slice in the picture, single_slice_per_subpic_flag may be equal to 0.

[1145] d) When single_slice_per_subpic_flag does not exist, for example when no_pic_partition_flag is equal to 1, then single_slice_per_subpic_flag is inferred as 0. A requirement for bitstream consistency is that when the value of sps_num_subpics_minus1 + 1 is greater than 1, the value of no_pic_partition_flag should not be equal to 1. Therefore, there is only one sub-picture in a picture. And since there is only one strip in the sub-picture, in this case, single_slice_per_subpic_flag should be equal to 1.

[1146] (3) During the sub-picture sub-bitstream extraction process, some syntax elements are not set correctly.

[1147] a) The syntax elements of the sub-picture extracted from the sub-bitstream extraction process are not written, such as sps_independent_subpics_flag, subpic_treated_as_pic_flag, loop_filter_across_subpic_enabled_flag, and no_pic_partition_flag, which may be undesirable.

[1148] b) The sub-picture sub-bitstream extraction process depends on the sub-picture ID, which can change based on different pictures. This will result in different sub-picture indices being extracted from different pictures, which may be undesirable.

[1149] c) The sps_num_subpics_minus1 and pps_num_subpics_minus1 of the output stream of the sub-picture sub-bitstream extraction process are written as 1, which indicates that two sub-pictures should be extracted at a time, which may not be desired.

[1150] (4) Syntax elements on the reference picture list may appear in IDR pictures without any use.

[1151] (5) For the luma and chroma of the prediction tree, the partitioning information is considered the same, which is incorrect.

[1152] (6) The syntax elements of the codec tool are not restricted or constrained by the corresponding general constraint flag, and the values of some general constraint flags are not restricted by the relevant constraints, which may cause some conflicts.

[1153] 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.

[1154] b) scaling_window_explicit_signalling_flag is not constrained by no_res_change_in_clvs_constraint_flag.

[1155] c) scaling_window_explicit_signalling_flag is not constrained by res_change_in_clvs_allowed_flag.

[1156] d) The value of sps_num_subpics_minus1 is not constrained by one_subpic_per_pic_constraint_flag.

[1157] 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.

[1158] f) The loop_filter_across_subpic_enabled_flag is not constrained by the one_subpic_per_pic_constraint_flag and / or sps_num_subpics_minus1 and / or pps_num_subpics_minus1.

[1159] g) The one_subpic_per_pic_constraint_flag is not constrained by the one_slice_per_pic_constraint_flag.

[1160] h) The no_bdpcm_constraint_flag is not constrained by the no_transform_skip_constraint_flag.

[1161] i) The num_slices_in_pic_minus1 is not constrained by the one_slice_per_pic_constraint_flag.

[1162] j) The num_tiles_in_slice_minus1 is not constrained by the one_slice_per_pic_constraint_flag.

[1163] Example Techniques and Embodiments

[1164] The following detailed inventions should be regarded as examples explaining general concepts. These inventions should not be interpreted narrowly. In addition, these inventions can be combined in any way. In the following description, the deleted parts are marked between [[]], and the added parts are marked as Underlined bold italic .

[1165] Time Domain Prediction Related HLS

[1166] 1. Two levels of control of TMVP can be utilized, and one is at the picture level and the other is at the slice / strip / sub-picture / tile level.

[1167] a) In one example, a first syntax element indicating whether there is at least one inter-coded slice referencing the flag can be signaled at the picture level to enable TMVP (e.g., indicated by ).

[1168] i. In one example, it can be signaled in the picture header or PPS.

[1169] ii. In one example, it may be signaled conditionally, e.g., according to TMVP enabled in SPS and / or at least one inter-coded slice present in the current picture header and / or RPL.

[1170] b) In one example, a second syntax element indicating whether TMVP is enabled for the current slice may be signaled at the slice level (e.g., indicated by ), which may depend on the first syntax element.

[1171] i. In one example, may be signaled only when it is equal to 1. Otherwise, it is inferred as 0.

[1172] ii. In one example, may be signaled only when it is equal to 0. Otherwise, it is inferred as 1.

[1173] c) In one example, a second syntax element indicating whether TMVP is enabled for the current slice may be signaled at the slice level (e.g., indicated by ), which may depend on the RPL present in the current slice header and / or TMVP enabled in SPS and / or the current slice being an inter-coded slice.

[1174] d) In one example, a third syntax element (e.g., tmvp_info_in_ph_flag) is signaled to indicate whether the TMVP information is signaled in the picture header or in the slice header.

[1175] i. The TMVP information may include information on whether TMVP is enabled.

[1176] ii. The TMVP information may include information on the collocated reference pictures.

[1177] iii. In one example, tmvp_info_in_ph_flag is signaled only when TMVP is enabled at the sequence level. (e.g., is equal to 1).

[1178] e) In one example, the second syntax element is inferred to be equal to a default value (e.g., the value of the first syntax element) when it is absent. For example, when absent, is inferred to be equal to .

[1179] 2. Whether and / or how to inherit collocated picture information from PH to SH (e.g., the collocated picture comes from List 0; the reference picture index of the collocated picture) depends at least on the slice type and whether the reference picture list information exists in the PH syntax structure (e.g., is 1).

[1180] a) In one example, when is equal to P, is equal to 1 (or / and is equal to 1), slice_collocated_from_l0_flag is set to 1, regardless of the value of .

[1181] i. Alternatively, when slice_type is equal to P, can be inferred to be equal to 1 regardless of other conditions.

[1182] b) In another example, when is equal to B and is equal to 1, refers to an entry in Reference Picture List 0, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[0] - 1 (inclusive).

[1183] c) In one example, when is equal to P, when TMVP is enabled, can be inferred to be 1.

[1184] d) In one example, when is equal to P and TMVP is enabled and is in the range of 0 to NumRefIdxActive[0] - 1 (inclusive).

[1185] e) In one example, when is equal to P and TMVP is enabled, RprConstraintsActive[0][slice_collocated_ref_idx] of the P slice may need to be equal to 0.

[1186] f) In one example, the following example modification can be introduced.

[1187] Specify the reference index of the collocated picture for time-domain motion vector prediction.

[1188] When slice_type is equal to P or slice_type is equal to B and slice_collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to an entry in reference picture list 0, , and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0] - 1 (inclusive).

[1189] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to an entry in reference picture list 1, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1] - 1 (inclusive).

[1190] When slice_collocated_ref_idx does not exist, the following applies:

[1191] – 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.

[1192] – Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.

[1193] A requirement for bitstream consistency is that the picture referred to by slice_collocated_ref_idx shall be the same for all slices of the coded picture.

[1194] A requirement for bitstream consistency is that the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referred to by slice_collocated_ref_idx shall be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture, respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] shall be equal to 0.

[1195] g) In one example, when is equal to 0, it may be required that the picture does not contain P stripes.

[1196] i. In one example, the following example modifications may be introduced.

[1197] Specify the encoding and decoding types of the stripes according to Table 9.

[1198] Table 9 - Name association of slice_type

[1199] slice_type Name of slice_type 0 B (B slice) 1 P (P slice) 2 I (I slice)

[1200] When it does not exist, the value of slice_type is inferred to be equal to 2.

[1201] When ph_intra_slice_allowed_flag is equal to 0, the value of slice_type shall be equal to 0 or 1. When nal_unit_type is in the range from IDR_W_RADL to CRA_NUT (inclusive), and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.

[1202]

[1203] ii. Alternatively, whether to signal the stripe type may depend on whether the collocated picture is from list 0.

[1204] 1. In one example, if all of the following conditions are true, the signaling of the stripe type for the stripes referring to the current picture header may be skipped.

[1205] – rpl_info_in_ph_flag is equal to 1

[1206] – ph_temporal_mvp_enabled_flag is equal to 1

[1207] – ph_intra_slice_allowed_flag is equal to 0

[1208] – ph_collocated_from_l0_flag is equal to 0

[1209] Alternatively, in addition, the stripe type may be inferred to be a B stripe.

[1210] h) In one example, when is equal to 1 and When it is equal to 1, the value of the P stripe can always be inferred to be equal to 1. The following example modifications can be introduced.

[1211] Being equal to 1 specifies the collocated picture derived from reference picture list 0 for temporal motion vector prediction. slice_collocated_from_l0_flag being equal to 0 specifies the collocated picture derived from reference picture list 1 for temporal motion vector prediction.

[1212] [[When slice_type is equal to B or P, ph_temporal_mvp_enabled_flag is equal to 1, and slice_collocated_from_l0_flag does not exist, the following applies:

[1213] – 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.

[1214] – Otherwise (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.]]

[1215]

[1216] i) In one example, when is equal to P and is equal to 0, can be considered to refer to an inactive entry in reference picture list 1, and it may be required that the reference picture referred to by this inactive entry in reference picture list 1 should also be referred to by an active entry in reference picture list 0. The following example modifications can be introduced.

[1217] Specifies the reference index of the collocated picture for temporal motion vector prediction.

[1218] When slice_type is equal to 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, and the value of slice_collocated_ref_idx should be in the range from 0 to NumRefIdxActive[0] - 1 (inclusive).

[1219] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to an entry in Reference Picture List 1, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1] - 1 (inclusive).

[1220]

[1221] When slice_collocated_ref_idx does not exist, the following applies:

[1222] – 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.

[1223] – Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.

[1224] One requirement for bitstream consistency is that the picture referred to by slice_collocated_ref_idx shall be the same for all slices of the coded picture.

[1225] One requirement for bitstream consistency is that the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referred to by slice_collocated_ref_idx shall be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture, respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] shall be equal to 0.

[1226] j) Alternatively, B and P slices that reference the same picture header may use different collocated pictures.

[1227] i. In one example, even if the RPL is signaled in the picture header, the reference picture index of the collocated picture may be further signaled in the slice header.

[1228] 1. In one example, when the current slice is a P-slice, signal in the picture header the RPL signal to enable temporal motion vector prediction (e.g., is true), and is equal to 0, the reference picture index of the collocated picture can be further signaled.

[1229] a) Alternatively, in addition, it also points to reference picture list 0.

[1230] ii. In one example, two collocated reference picture indices can be signaled or derived, and one of them is for B-slices and the other is for P-slices that refer to the same picture header.

[1231] 1. In one example, these two indices can be signaled only when is equal to 0.

[1232] k) In one example, an indication of whether there are B-slices and P-slices that refer to the same picture header can be signaled.

[1233] i. Alternatively, an indication of the type of slices that refer to the same picture header can be signaled in the picture header.

[1234] ii. Alternatively, an indication of whether there are only B-slices (excluding P-slices) that refer to the same picture header can be signaled.

[1235] iii. Alternatively, an indication of whether there are only P-slices (excluding B-slices) that refer to the same picture header can be signaled.

[1236] iv. Alternatively, an indication of whether there are only B-slices and I-slices that refer to the same picture header can be signaled.

[1237] v. Alternatively, an indication of whether there are only P-slices and I-slices that refer to the same picture header can be signaled.

[1238] vi. Alternatively, an indication of the slice type that refers to the same picture header can be signaled in the picture header only when RPL is signaled in the picture header.

[1239] vii. Alternatively, RPL is signaled in the picture header only when an indication of the slice type that refers to the same picture header is signaled in the picture header.

[1240] l) Alternatively, when is equal to P and is equal to 0, it can be modified before using , for example, mapped to an index in the range from 0 to NumRefIdxActive[0] - 1 (inclusive).

[1241] i. In one example, when equals P and equals 0, reference the entry in reference picture list 0, and is set to (( (NumRefIdxActive[0] > 1)? default_col_ref_idx : slice_collocated_ref_idx), where the variable default_col_ref_idx is in the range from 0 to NumRefIdxActive[0] - 1 (inclusive).

[1242] 1. In one example, the variable default_col_ref_idx is set to 0.

[1243] 2. In one example, the variable can be signaled.

[1244] m) In the compliant bitstream, two slices associated with a picture header may not be allowed, where one is a P slice and the other is a B slice.

[1245] n) In the compliant bitstream, two slices associated with a picture header that signals an RPL may not be allowed, where one is a P slice and the other is a B slice.

[1246] o) In the compliant bitstream, a slice associated with a picture header that signals an RPL using two reference picture lists may not be allowed, but the slice is a P slice.

[1247] Sub-picture related HLS

[1248] 3. The number of sub - pictures in each picture in CLVS (e.g., and / or ) can be adjusted by a general constraint flag (e.g., ).

[1249] a) In one example, when the general constraint flag (e.g., ) equals 1, it may be required that and / or have values equal to 0.

[1250] b) In one example, the following example modification can be introduced.

[1251] The "plus 1" rule specifies the number of sub - pictures in each picture in 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 (inclusive). When not present, the value of sps_num_subpics_minus1 is inferred to be equal to 0.

[1252] 4. Whether signaling the syntax element that specifies "intra - prediction - free, inter - prediction - free, and loop - filter - free operations performed across any sub - picture boundary in CLVS" (e.g., ) may depend on the number of sub - pictures in each picture in CLVS (e.g., ).

[1253] a) In one example, when there is only one sub - picture in each picture in CLVS, the syntax element may not be signaled and is inferred to be 1.

[1254] b) In one example, the following example modification can be introduced.

[1255] Equal to 1 specifies that intra - prediction, inter - prediction, and loop - filtering operations cannot be performed across any sub - picture boundary in CLVS. sps_independent_subpics_flag equal to 0 specifies that inter - prediction or loop - filtering operations across sub - picture boundaries in CLVS are allowed. When not present, the value of sps_independent_subpics_flag is inferred to be equal to [[0]]1.

[1256] c) In one example, the following example modification can be introduced.

[1257] Equal to 1 specifies that intra - prediction, inter - prediction, and loop - filtering operations cannot be performed across any sub - picture boundary in CLVS. sps_independent_subpics_flag equal to 0 specifies that inter - prediction or loop - filtering operations across sub - picture boundaries in CLVS are allowed. When not present, the value of sps_independent_subpics_flag is inferred to be equal to 0.

[1258] 5. The value may depend on whether there is only one sub - picture in the image.

[1259] a) In one example, if equals 1, then the value of may need to be equal to 1, or be inferred as equal to 1.

[1260] b) In one example, if equals 0, then the value of may need to be equal to 1, or be inferred as equal to 1.

[1261] c) In one example, if equals 0, then the value of may need to be equal to 1.

[1262] 6. The value may depend on whether there is only one sub - picture in the image.

[1263] a) In one example, if equals 1, then the value of may need to be equal to 0, or be inferred as equal to 0.

[1264] b) In one example, if equals 0, then the value of may need to be equal to 0, or be inferred as equal to 0.

[1265] c) In one example, if equals 0, then the value of may need to be equal to 0.

[1266] 7. Whether the width of the i - th rectangular strip in terms of tile columns is specified (e.g., ), may depend on .

[1267] a) In one example, when does not exist but equals 1, then the value of may not be set.

[1268] b) In one example, the following example modification can be introduced.

[1269] [i + 1] specifies the width of the i - th rectangular strip in terms of tile columns. The value of slice_width_in_tiles_minus1[i] should be in the range from 0 to NumTileColumns - 1 (inclusive).

[1270] When slice_width_in_tiles_minus1[i] does not exist , the following applies:

[1271] – If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.

[1272] – Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred according to the provisions of Clause 6.5.1.

[1273] 8. Whether each sub-picture consists of one and only one rectangular strip (e.g., ), can be adjusted by a general constraint flag (e.g., ).

[1274] a) In another example, when the syntax element does not exist, the value can be inferred to be equal to 1.

[1275] b) In another example, when the syntax element does not exist, the value of can be inferred according to whether the current picture is segmented (e.g., ).

[1276] c) In an example, the following example modification can be introduced.

[1277] Being equal to 1 stipulates that each sub-picture consists of one and only one rectangular strip. single_slice_per_subpic_flag being equal to 0 stipulates that each sub-picture can consist of one or more rectangular strips. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. [[When it does not exist, the value of single_slice_per_subpic_flag is inferred to be equal to 0.]]

[1278] d) In an example, the following example modification can be introduced.

[1279] Equal to 1 specifies that each sub - picture consists of one and only one rectangular strip. single_slice_per_subpic_flag equal to 0 specifies that each sub - picture can consist of one or more rectangular strips. When single_slice_per_subpic_flag is equal to 1, num_slice_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When absent, the value of single_slice_per_subpic_flag is inferred to be equal to 0.

[1280] e) In one example, the following example modification can be introduced.

[1281] Equal to 1 specifies that each sub - picture consists of one and only one rectangular strip. single_slice_per_subpic_flag equal to 0 specifies that each sub - picture can consist of one or more rectangular strips. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When absent, the value of single_slice_per_subpic_flag is inferred to be equal to 0.

[1282] f) In one example, the following example modification can be introduced.

[1283] Equal to 1 specifies that each sub - picture consists of one and only one rectangular strip. single_slice_per_subpic_flag equal to 0 specifies that each sub - picture can consist of one or more rectangular strips. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When absent, the value of single_slice_per_subpic_flag is inferred to be equal to 0.

[1284] g) In one example, the following example modification can be introduced.

[1285] When single_slice_per_subpic_flag equals 1, it is specified that each sub-picture consists of one and only one rectangular strip. When single_slice_per_subpic_flag equals 0, it is specified that each sub-picture may consist of one or more rectangular strips. When single_slice_per_subpic_flag equals 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to [[0]] .

[1286] 9. In one example, regarding the derivation of outputting sub-bitstreams during sub-picture sub-bitstream extraction, the extracted sub-pictures across different pictures in the CLVS may need to have the same sub-picture index.

[1287] a) For example, the target sub-picture ID for which sub-pictures may need to be extracted can refer to the same sub-picture index among different pictures in the CLVS.

[1288] b) For example, if equals 1, and when processing sub-picture sub-bitstream extraction, it may be necessary not to signal the sub-picture ID mapping in the PPS (e.g., equals 0).

[1289] i. In one example, if equals 1, and when processing sub-picture sub-bitstream extraction, it may be necessary to signal the sub-picture ID mapping in the SPS (e.g., equals 1).

[1290] c) For example, which sub-picture to extract during sub-picture sub-bitstream extraction may depend on the sub-picture index.

[1291] d) For example, which syntax elements to rewrite and / or remove during sub-picture sub-bitstream extraction may depend on the sub-picture index.

[1292] e) In one example, the following example modifications can be introduced.

[1293] C.7 Sub-picture sub-bitstream extraction process

[1294] The input to this process is the bitstream inBitstream, the target OLS index targetOlsIdx, the target maximum TemporalId value tIdTarget, and an array of the target sub-picture [[ID]] values for each layer subpicIdxTarget[].

[1295] The output of this process is the sub-bitstream outBitstream.

[1296] The requirement for bitstream consistency of the input bitstream is that any output sub-bitstream that meets all of the following conditions should be a consistent bitstream:

[1297] – The output sub-bitstream is the output of the process specified in this clause, where the bitstream targetOlsIdx is equal to the index of the OLS list specified by the VPS, and subpicIdxTarget[] is equal to the sub-picture ID present in the OLS, as input.

[1298] – The output sub-bitstream contains at least one VCL NAL unit, where each nuh_layer_id value is equal to LayerIdInOls[targetOlsIdx].

[1299] – The output sub-bitstream contains at least one VCL NAL unit with a TemporalId equal to tIdTarget.

[1300] Note - The consistent bitstream contains one or more coded slice NAL units with a TemporalId equal to 0, but does not necessarily contain coded slice NAL units with a nuh_layer_id equal to 0.

[1301] – The output sub-bitstream contains at least one VCL NAL unit, where nuh_layer_id is equal to LayerIdInOls[targetOlsIdx][i], and where slice_subpic_id is equal to the value in subpicIdxTarget[i] (for each i in the range 0 to NumLayersInOls[targetOlsIdx]-1).

[1302] Derive the output sub-bitstream outBitstream as follows:

[1303] – The sub-bitstream extraction process specified in Annex C.6 is called with inBitstream, targetOlsIdx, and tIdTarget as inputs, and the output of this process is assigned to outBitstream.

[1304] – If some external means not specified in this specification can be used to provide a replacement parameter set for the sub-bitstream outBitstream, then replace all parameter sets with the replacement parameter set.

[1305] – Otherwise, when there is a sub-picture level information SEI message in inBitstream, the following applies:

[1306] – For all entries with sub - picture ID equal to subpicIdxTarget[], rewrite the general_level_idc value in the ols_ptl_idx[targetOlsIdx] - th entry in the profile_tier_level() syntax structure list in all referenced VPS NAL units to be equal to the SubpicSetLevelIdc derived in D.3.8.

[1307] For the sub - picture set consisting of sub - pictures with sub - picture ID equal to all entries in subpicIdxTarget[] and for j in the range 0 to hrd_cpb_cnt_minus1, rewrite the values of cpb_size_value_minus1[tIdTarget][j] and bit_rate_value_minus1[tIdTarget][j] for the j - th CPB in the ols_hrd_parameters() syntax structure list in all referenced VPS NAL units to correspond to SubpicSetCpbSizeVcl[0], SubpicSetCpbSizeNal[0], SubpicSetBitrateVcl[0], and SubpicSetBitrateNal[0] derived in D.3.8.

[1308] For the i - th layer where i is in the range 0 to NumLayersInOls[targetOlsIdx] - 1, the following applies.

[1309] – subpicIdx is set to be equal to the value of subpicIdxTarget[i].

[1310] – For the set of sub - pictures consisting of sub - pictures [[ID]] equal to subpicIdx, rewrite the value of general_level_idc in the profile_tier_level() syntax structure in all referenced SPS NAL units where sps_ptl_dpb_hrd_params_present_flag equal to 1 to be equal to the SubpicSetLevelIdc derived in D.3.8.

[1311] – For 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_parameters() syntax structure list entry at ols_hrd_idx[targetOlsIdx] in all referenced SPS NAL units, corresponding to SubpicCpbSizeVcl[0][SubpicIdxList[subPicIdx]], SubpicBitrateVcl[0][SubpicIdxList[subPicIdx]], and SubpicBitrateNal[0][SubpicIdxList[subPicIdx]], as derived for the subpicture [[ID]] equal to subpicIdx and for j ranging from 0 to hrd_cpb_cnt_minus1.

[1312] – Set the values of pic_width_max_in_luma_samples and pic_height_max_in_luma_samples in all referenced SPS NAL units, and the values of pic_width_in_luma_samples and pic_height_in_luma_samples in all referenced PPS NAL units, to be equal to subpic_width_minus1[SubpicIdxList[subPicIdx]] and subpic_height_minus1[SubpicIdxList[subPicIdx]].

[1313] Rewrite the values of sps_num_subpics_minus1 in all referenced SPS NAL units and pps_num_subpics_minus1 in all referenced PPS NAL units to 1.

[1314] Rewrite the syntax elements subpic_ctu_top_left_x[SubpicIdxList[subPicIdx]] and subpic_ctu_top_left_y[SubpicIdxList[subPicIdx]] in the referenced SPS NAL units to 0 (if they exist).

[1315] For each j where SubpicIdxList[j] is not equal to subPicIdx, delete the syntax elements 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] in all referenced SPS NAL units.

[1316] Rewrite all syntax elements related to slice and strip structures in all referenced PPSs to delete all slice rows, slice columns, and strips that are not related to the subpicture with subpicture ID equal to subPicIdx.

[1317] Delete all VCL NAL units from outBitstream where nuh_layer_id is equal to the nuh_layer_id of the i-th layer and slice_subpic_id is not equal to subPicIdx.

[1318] When sli_cbr_constraint_flag is equal to 1, delete all NAL units with nal_unit_type equal to FD_NUT and filter payload SEI messages that are not associated with the VCL NAL units of the subpictures in subpicIdxTarget[], and set cbr_flag[tIdTarget][j] equal to 1 for the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry in the ols_hrd_parameters() syntax structure list in all referenced VPS NAL units and SPS NAL units, where j ranges from 0 to hrd_cpb_cnt_minus1. Otherwise, (sli_cbr_constraint_flag is equal to 0), delete all NAL units with nal_unit_type equal to FD_NUT and filter payload SEI messages, and set cbr_flag[tIdTarget][j]

[1319] to be equal to 0.

[1320] – When the outBitstream contains an SEI NAL unit of an extensible nested SEI message applicable to the outBitstream (where nesting_ols_flag is equal to 1 and nesting_subpic_flag is equal to 1), extract the appropriate non-extensible nested SEI message from the extensible nested SEI message, where payloadType is equal to 1 (picture timing) or 130 (decoding unit information), and place the extracted SEI message into the outBitstream.

[1321] 10. In one example, regarding the derivation of the output sub-bitstream during sub-picture sub-bitstream extraction, the extracted sub-bitstream can be regarded as a single sub-picture in the output bitstream.

[1322] a) In one example, for a syntax structure that references the output sub-bitstream with an extracted sub-picture, the syntax element can be rewritten to be equal to 1.

[1323] b) In one example, the syntax element that references the extracted sub-picture in all output layers may not be signaled (e.g., can be removed) from the syntax structure of the output sub-bitstream and / or .

[1324] i. In one example, for a syntax structure that references the output sub-bitstream with an extracted sub-picture, the syntax element can be inferred to be equal to 1.

[1325] ii. In one example, for a syntax structure that references the output sub-bitstream with an extracted sub-picture, the syntax element can be inferred to be equal to 0.

[1326] c) In one example, the value of in all referenced SPS NAL units and the value of in all referenced PPS NAL units with an extracted sub-picture can be rewritten to be equal to 0.

[1327] d) In one example, for a syntax structure that references the output sub-bitstream with an extracted sub-picture, the syntax element can be rewritten.

[1328] i. For example, whether the syntax element is rewritten may depend on the number of slices / strips in the output bitstream that contain the extracted sub-picture.

[1329] 1. In one example, if there is only one slice and one strip in the extracted sub - picture, for the syntax structure that references the output sub - bitstream with the extracted sub - picture, the syntax element

[1330] can be rewritten to be equal to 1.

[1331] 2. Alternatively...

Claims

1. A method for processing video data, comprising: Performing a conversion between a video including video pictures and a bitstream of the video according to format rules, wherein, the video pictures are segmented into one or more sub-pictures; wherein the format rules specify determining a value of a first syntax element indicating whether each of the one or more sub-pictures in the video pictures consists of a single strip based on a second syntax element indicating whether picture segmentation is applied to the video pictures, wherein when the value of the second syntax element is equal to 1, the value of the first syntax element is inferred to be equal to 1, and wherein the value of the first syntax element being equal to 1 indicates that each of the one or more sub-pictures in the video pictures contains a single strip, and the value of the second syntax element being equal to 1 indicates that picture segmentation is not applied to the video pictures.

2. The method according to claim 1, wherein, the single strip indicates only one rectangular strip.

3. The method according to claim 1, wherein, the video includes one or more codec layer video sequences (CLVSs), and the format rules further specify that a list of target sub-picture index values is used as an input for a sub-picture sub-bitstream extraction process.

4. The method according to claim 3, wherein, determining a way to modify a third syntax element used to determine an output sub-bitstream in the sub-picture sub-bitstream extraction process based on the sub-picture index.

5. The method according to claim 4, wherein, the way to modify the third syntax element includes rewriting and / or removing the syntax element.

6. The method according to claim 3, wherein, each target sub-picture index value and a sub-picture ID indicated by a fourth syntax element of the bitstream satisfy subpicIdVal[target sub-picture index value] being equal to the sub-picture ID, where subpicIdVal[] is a mapping function.

7. The method according to claim 1, wherein, the conversion includes encoding the video into the bitstream.

8. The method according to claim 1, wherein, the conversion includes decoding the video from the bitstream.

9. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein, the instructions, when executed by the processor, cause the processor to: Perform a conversion between a video including video pictures and a bitstream of the video according to format rules, wherein the video pictures are segmented into one or more sub-pictures; wherein the format rules specify determining a value of a first syntax element indicating whether each of the one or more sub-pictures in the video pictures consists of a single strip based on a second syntax element indicating whether picture segmentation is applied to the video pictures, wherein when the value of the second syntax element is equal to 1, the value of the first syntax element is inferred to be equal to 1, and Wherein, a value of the first syntax element being equal to 1 indicates that each of the one or more sub-pictures in the video picture includes a single strip, and a value of the second syntax element being equal to 1 indicates that picture segmentation is not applied to the video picture.

10. The apparatus according to claim 9, wherein, the single strip indicates only one rectangular strip.

11. The apparatus according to claim 9, wherein, the video includes one or more codec layer video sequences (CLVSs), and the format rule further specifies that a list of target sub-picture index values is used as an input to a sub-picture sub-bitstream extraction process.

12. The apparatus according to claim 11, wherein, a manner of modifying a third syntax element for determining an output sub-bitstream in the sub-picture sub-bitstream extraction process is determined based on the sub-picture index; wherein the manner of modifying the third syntax element includes rewriting and / or removing the syntax element.

13. The apparatus according to claim 11, wherein, each target sub-picture index value and a sub-picture ID indicated by a fourth syntax element of the bitstream satisfy that subpicIdVal[target sub-picture index value] is equal to the sub-picture ID, where subpicIdVal[] is a mapping function.

14. A non-transitory computer-readable storage medium storing instructions that cause a processor to: perform a conversion between a video including a video picture and a bitstream of the video according to a format rule, wherein, the video picture is segmented into one or more sub-pictures; wherein the format rule specifies determining a value of a first syntax element indicating whether each of the one or more sub-pictures in the video picture is composed of a single strip based on a second syntax element indicating whether picture segmentation is applied to the video picture; wherein, when the value of the second syntax element is equal to 1, the value of the first syntax element is inferred to be equal to 1; wherein a value of the first syntax element being equal to 1 indicates that each of the one or more sub-pictures in the video picture includes a single strip, and a value of the second syntax element being equal to 1 indicates that picture segmentation is not applied to the video picture.

15. The non-transitory computer-readable storage medium according to claim 14, wherein, the single strip indicates only one rectangular strip.

16. The non-transitory computer-readable storage medium according to claim 14, wherein, the video includes one or more codec layer video sequences (CLVSs), and the format rule further specifies that a list of target sub-picture index values is used as an input to a sub-picture sub-bitstream extraction process; wherein a manner of modifying a third syntax element for determining an output sub-bitstream in the sub-picture sub-bitstream extraction process is determined based on the sub-picture index; wherein the manner of modifying the third syntax element includes rewriting and / or removing the syntax element; Among them, each target sub-picture index value and the sub-picture ID indicated by the fourth syntax element of the bitstream satisfy that subpicIdVal[target sub-picture index value] is equal to the sub-picture ID, where subpicIdVal[] is a mapping function.

17. A non-transitory computer-readable recording medium storing a video bitstream generated by a method executed by a video processing device, wherein, the method includes: generating a bitstream of a video including video pictures according to format rules, wherein the video pictures are divided into one or more sub-pictures; wherein the format rules specify determining the value of a first syntax element indicating whether each of the one or more sub-pictures in the video picture consists of a single strip based on a second syntax element indicating whether picture segmentation is applied to the video picture; wherein when the value of the second syntax element is equal to 1, the value of the first syntax element is inferred to be equal to 1; wherein the value of the first syntax element being equal to 1 indicates that each of the one or more sub-pictures in the video picture contains a single strip, and the value of the second syntax element being equal to 1 indicates that picture segmentation is not applied to the video picture.

18. The non-transitory computer-readable recording medium according to claim 17, wherein, the single strip indicates that there is only one rectangular strip; wherein the video includes one or more codec layer video sequences (CLVSs), and the format rules further specify that a list of target sub-picture index values is used as an input to the sub-picture sub-bitstream extraction process; wherein based on the sub-picture index, a way to modify a third syntax element used to determine the output sub-bitstream in the sub-picture sub-bitstream extraction process is determined; wherein the way to modify the third syntax element includes rewriting and / or removing the syntax element; and wherein each target sub-picture index value and the sub-picture ID indicated by the fourth syntax element of the bitstream satisfy that subpic dval[target sub-picture index value] is equal to the sub-picture ID, where subpic dval[] is a mapping function.

19. A method for storing a bitstream of a video, including: generating a bitstream of a video including video pictures according to format rules, wherein the video pictures are divided into one or more sub-pictures; and storing the bitstream in a non-transitory computer-readable recording medium, wherein the format rules specify determining the value of a first syntax element indicating whether each of the one or more sub-pictures in the video picture consists of a single strip based on a second syntax element indicating whether picture segmentation is applied to the video picture; wherein when the value of the second syntax element is equal to 1, the value of the first syntax element is inferred to be equal to 1; wherein the value of the first syntax element being equal to 1 indicates that each of the one or more sub-pictures in the video picture contains a single strip, and the value of the second syntax element being equal to 1 indicates that picture segmentation is not applied to the video picture.

Citation Information

Patent Citations

  • Conformance constraint for collocated reference index in video coding

    CN109076235A

  • Method and Apparatus for Estimating Optical Flow for Motion Compensation

    KR1020180119084A