Constraints of Different Coding and Decoding Tools

By applying format rules in video encoding and decoding representation and using control information to process video encoding and decoding representation, the problem of inefficient video encoding and decoding in the prior art is solved, and more efficient bandwidth utilization and video processing capabilities are achieved.

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

Patent Information

Application Number
CN202180017646.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-02-29
Filing Date
2021-02-26
Publication Date
2025-06-24
Estimated Expiration
2041-02-26

AI Technical Summary

Technical Problem

The prior art is difficult to effectively utilize control information during video encoding and decoding, resulting in inefficiency and increased bandwidth usage.

Method used

The codec representation of video is processed by using format rules in video codec representations, including the control sequence parameter set (SPS) level, picture header (PH) level, stripe header (SH) level, and constraint flag values.

Benefits of technology

It realizes more efficient video encoding and decoding, reduces bandwidth usage, and improves the flexibility and adaptability of video processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115244933B_ABST
    Figure CN115244933B_ABST
Patent Text Reader

Abstract

Methods, systems, and apparatuses for video processing are described. A method for processing video includes performing a conversion between a video and a bitstream of the video according to formatting rules, where the formatting rules specify one or more general constraint flags included in a general constraint syntax structure associated with the video indicating whether corresponding syntax elements are included in a sequence parameter set (SPS) and / or a picture parameter set (PPS) and / or a picture header (PH) and / or a slice header (SH), or constraining values of syntax elements in the SPS and / or PPS and / or PH and / or SH.
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 / 078190, filed on February 26, 2021, which claims the priority and benefits of International Patent Application No. PCT / CN2020 / 077325, filed on February 29, 2020. All of the above - mentioned patent applications are hereby incorporated by reference in their entirety. Technical field

[0003] This patent relates to image and video encoding, decoding, and decoding. Background art

[0004] In the Internet and other digital communication networks, digital video occupies the largest bandwidth. With the increase in the number of connected user devices capable of receiving and displaying video, it is expected that the bandwidth demand for digital video will continue to grow. Summary of the invention

[0005] Techniques are disclosed herein that can be used by video encoders and decoders to process an encoded - decoded representation of video using control information useful for decoding the encoded - decoded representation.

[0006] In one example aspect, a video processing method is disclosed. The method includes performing a conversion between a video having one or more pictures and an encoded - decoded representation of the video, each of the one or more pictures including exactly one slice; the encoded - decoded representation conforms to format rules; the format rules specify that a first field in the encoded - decoded representation indicating the profile, tier, and level to which the encoded - decoded representation conforms includes a second field that indicates whether a syntax structure signaling various constraints observed during the conversion exists in the first field.

[0007] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and one or more slices and an encoded - decoded representation of the video, the encoded - decoded representation conforming to format rules, the format rules specifying that the values of one or more constraint flags at a first level in the encoded - decoded representation control the occurrence of one or more syntax elements at the sequence parameter set (SPS) level or the picture header (PH) level or the slice header (SH) level.

[0008] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and one or more slices and an encoded - decoded representation of the video, the encoded - decoded representation conforming to format rules, the format rules specifying that the values of one or more constraint flags at a first level in the encoded - decoded representation constrain the values of one or more syntax elements at the picture parameter set (PPS) level.

[0009] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and one or more slices and a coded representation of the video, the coded representation conforming to format rules specifying that the coded representation includes an adaptive parameter set, the adaptive parameter set including syntax elements that are identifiers of a video parameter set and / or a sequence parameter set and / or a picture parameter set.

[0010] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and one or more slices and a coded representation of the video, the coded representation conforming to format rules specifying one or more general constraint flags applicable to the conversion; the one or more general constraint flags indicating the applicability of general constraint information included in the coded representation to the conversion.

[0011] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video and a coded representation of the video, the coded representation conforming to format rules that specify that the coded representation conditionally includes a general constraint structure carrying general constraint information based on characteristics of the video or the conversion.

[0012] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to format rules that specify that values of one or more general constraint flags at a first level in the bitstream control the occurrence of one or more syntax elements at a sequence parameter set (SPS) level or a picture header (PH) level or a slice header (SH) level.

[0013] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to format rules, and the format rules specify that a first field indicating profile, tier, and level (PTL) information of the bitstream includes a second field that indicates whether there is a syntax structure in the first field indicating one or more constraints applicable to the conversion.

[0014] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to format rules, and the format rules specify whether syntax elements in a sequence parameter set (SPS) are based on values of general constraint flags.

[0015] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to format rules, and the format rules specify that a value of a syntax element in a sequence parameter set (SPS) is equal to a specific value based on a value of a general constraint flag.

[0016] In another exemplary aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify that syntax elements are conditionally included in a picture header (PH) or a slice header (SH) in the bitstream based on the value of a general constraint flag.

[0017] In another exemplary aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify adding a bitstream constraint such that the value of a syntax element in a picture header (PH) or a slice header (SH) is equal to a specific value based on the value of a general constraint flag.

[0018] In another exemplary aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify the value of a first general constraint flag indicating a constraint imposed during the conversion in a syntax structure or include a value based on a second general constraint flag in the syntax structure.

[0019] In another exemplary aspect, another video processing method is disclosed. The method includes: performing a conversion between a video including one or more slices and a bitstream of the video according to formatting rules, and the formatting rules specify that the value of one or more general constraint flags at a first level constrains the value of one or more syntax elements in a picture parameter set (PPS).

[0020] In another exemplary aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify the value of an SPS syntax element at the SPS (sequence parameter set) level and / or a PPS syntax element at the PPS (picture parameter set) level or control the inclusion of one or more related syntax elements at the SPS level, PPS level, PH (picture header) level, or SH (slice header) level.

[0021] In another exemplary aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify including one or more general constraint flags indicating whether a corresponding syntax element is included in a sequence parameter set (SPS) and / or a picture parameter set (PPS) and / or a picture header (PH) and / or a slice header (SH) in a general constraint syntax structure associated with the video, or constraining the value of a syntax element in the SPS and / or PPS and / or PH and / or SH.

[0022] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify an adaptive parameter set (APS) associated with the video that uses one or more syntax elements including identifiers of a video parameter set (VPS) and / or a sequence parameter set (SPS) and / or a picture parameter set (PPS).

[0023] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify a redundancy indication of information in a general constraint information syntax structure associated with the video.

[0024] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video and a bitstream of the video according to formatting rules, and the formatting rules specify whether and / or how to indicate a general constraint structure carrying general constraint information based on characteristics of the bitstream.

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

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

[0027] 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.

[0028] These and other features will be described herein. BRIEF DESCRIPTION OF THE DRAWINGS

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

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

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

[0032] Figure 4 is a block diagram showing a video codec system according to some embodiments of the present disclosure.

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

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

[0035] Figure 7A and Figure 7B are flowcharts of examples of video processing methods.

[0036] Figures 8A to 8G are flowcharts of examples of video processing methods.

[0037] Figures 9A to 9D are flowcharts of examples of video processing methods. Detailed implementation manners

[0038] In this document, chapter titles are used for easy understanding, rather than restricting the applicability of the technologies and embodiments disclosed in each chapter only to that chapter. In addition, in some descriptions, the use of H.266 terms is only for easy understanding, rather than for restricting the scope of the disclosed technologies. Therefore, the technologies described herein are also applicable to other video codec protocols and designs.

[0039] 1. Preliminary discussion

[0040] This document relates to video codec technologies. Specifically, it relates to the design of syntax related to constraint flags in video coding and decoding. This idea can be applied alone or in various combinations to any video codec standard or non-standard video codec that supports multi-layer video coding and decoding, such as the multi-functional video coding (VVC) being developed.

[0041] 2. Abbreviations

[0042] APS Adaptive Parameter Set

[0043] AU Access Unit

[0044] AUD Access Unit Delimiter

[0045] AVC Advanced Video Coding

[0046] CLVS Coded Layer Video Sequence

[0047] CPB Coded Picture Buffer

[0048] CRA Complete Random Access

[0049] CTU Coding Tree Unit

[0050] CVS Coded Video Sequence

[0051] DPB Decoded Picture Buffer

[0052] DPS Decoding Parameter Set

[0053] EOB End of Bitstream

[0054] EOS Sequence End

[0055] GDR Gradual Decoding Refresh

[0056] HEVC High Efficiency Video Coding

[0057] HRD Hypothetical Reference Decoder

[0058] IDR Instantaneous Decoding Refresh

[0059] JEM Joint Exploration Model

[0060] MCTS Motion Constrained Tile Set

[0061] NAL Network Abstraction Layer

[0062] OLS Output Layer Set

[0063] PH Picture Header

[0064] PPS Picture Parameter Set

[0065] PTL Profile, Tier and Level

[0066] PU Picture Unit

[0067] RBSP Raw Byte Sequence Payload

[0068] SEI Supplemental Enhancement Information

[0069] SH Slice Header

[0070] SPS Sequence Parameter Set

[0071] SVC Scalable Video Coding

[0072] VCL Video Coding Layer

[0073] VPS Video Parameter Set

[0074] VTM VVC Test Model

[0075] VUI Video Usability Information

[0076] VVC Versatile Video Coding

[0077] 3. Introduction to Video Coding

[0078] Video coding standards have mainly evolved through the well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, ISO / IEC developed MPEG-1 and MPEG-4 video, and the two organizations jointly developed the H.262 / MPEG-2 video standard and the H.264 / MPEG-4 Advanced Video Coding (AVC) and H.265 / HEVC standards. Since H.262, video coding standards have been based on a hybrid video coding structure, which uses temporal prediction plus transform coding. To explore future video coding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and incorporated them into a reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly, and the goal of the new coding standard is to reduce the bitrate by 50% compared to HEVC. The new video coding standard was officially named Versatile Video Coding (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was also released at that time. Due to the continuous efforts in VVC standardization, new coding technologies have been incorporated into the VVC standard at each JVET meeting. The working draft of VVC and the test model VTM are updated after each meeting. The VVC project now aims to be technically completed (FDIS) at the meeting in July 2020.

[0079] 3.1. General Profile, Tier, Level Syntax and Semantics

[0080] In the latest VVC draft text, the general profile, tier, level syntax and semantics are as follows:

[0081]

[0082]

[0083] The profile_tier_level() syntax structure provides level information and, optionally, profile, tier, sub-profile, and general constraint information.

[0084] When the profile_tier_level() syntax structure is included in the VPS, OlsInScope is one or more OLSs specified by the VPS. When the profile_tier_level() syntax structure is included in the SPS, OlsInScope is the OLS of the layer that includes only the lowest layer among the layers of the reference SPS, and the lowest layer is an independent layer.

[0085] general_profile_idc indicates the profile that OlsInScope conforms to, as specified in Annex A. Except for the values specified in Annex A, the bitstream shall not contain the value of general_profile_idc. Other values of general_profile_idc are reserved for future use by ITU-T|ISO / IEC.

[0086] general_tier_flag specifies the tier context used to interpret general_level_idc, as specified in Annex A.

[0087] general_level_idc indicates the level that OlsInScope conforms to, as specified in Annex A. Except for the values specified in Annex A, the bitstream shall not contain the value of general_level_idc. Other values of general_level_idc are reserved for future use by ITU-T|ISO / IEC.

[0088] Note 1 – Larger values of general_level_idc indicate higher levels. The maximum level signaled in the DCI NAL unit of OlsInScope can be higher than but not lower than the level signaled in the SPS of the CLVS contained within OlsInScope.

[0089] Note 2 – When OlsInScope conforms to multiple profiles, general_profile_idc shall indicate the profile that provides the preferred decoding result or the preferred bitstream identification, as determined by the encoder (in a manner not specified in this specification).

[0090] Note 3 – When the CVSs of OlsInScope conform to different profiles, multiple profile_tier_level() syntax structures may be included in the DCI NAL unit such that for each CVS of OlsInScope, there is at least one set of the indicated profile, tier, and level of a decoder capable of decoding the CVS.

[0091] num_sub_profiles specifies the number of syntax elements of general_sub_profile_idc[i].

[0092] general_sub_profile_idc[i] indicates the i-th interoperability metadata registered as specified in Rec. ITU-T T.35, the content of which is not specified in this specification.

[0093] sublayer_level_present_flag[i] being equal to 1 specifies that level information exists in the profile_tier_level() syntax structure of the sublayer representation with TemporalId equal to i. sublayer_level_present_flag[i] being equal to 0 specifies that level information does not exist in the profile_tier_level() syntax structure of the sublayer representation with TemporalId equal to i.

[0094] ptl_alignment_zero_bits shall be equal to 0.

[0095] Except for the specification of the inferred value for non-existent cases, the semantics of the syntax element sublayer_level_idc[i] are the same as those of the syntax element general_level_idc, but apply to the sublayer representation with TemporalId equal to i.

[0096] When not present, the value of sublayer_level_idc[i] is inferred as follows:

[0097] - sublayer_level_idc[maxNumSubLayersMinus1] is inferred to be equal to general_level_idc of the same profile_tier_level() structure,

[0098] - for i from maxNumSubLayersMinus1 - 1 down to 0 (in descending order of the i value) (including maxNumSubLayersMinus1 - 1 and 0), sublayer_level_idc[i] is inferred to be equal to sublayer_level_idc[i + 1].

[0099] 3.2. General Constraint Information Syntax and Semantics

[0100] In the latest VVC draft text, the general constraint information syntax and semantics are as follows:

[0101]

[0102]

[0103]

[0104] The general_progressive_source_flag and general_interlaced_source_flag are interpreted as follows:

[0105] - If general_progressive_source_flag equals 1 and general_interlaced_source_flag equals 0, the source scan type of the pictures in OlsInScope should be interpreted as progressive only.

[0106] - Otherwise, if general_progressive_source_flag equals 0 and general_interlaced_source_flag equals 1, the source scan type of the pictures in OlsInScope should be interpreted as interlaced only.

[0107] - Otherwise, if general_progressive_source_flag equals 0 and general_interlaced_source_flag equals 0, the source scan type of the pictures in OlsInScope should be interpreted as unknown or unspecified.

[0108] - Otherwise (general_progressive_source_flag equals 1 and general_interlaced_source_flag equals 1), use the syntax element source_scan_type in the frame field information SEI message to indicate the source scan type of each picture in OlsInScope at the picture level. The bitstream conformance requirement is that when general_progressive_source_flag equals 1 and general_interlaced_source_flag equals 1, the frame field information SEI message shall be present in each AU.

[0109] Note 1 – The decoder may ignore the values of general_progressive_source_flag and general_interlaced_source_flag. Additionally, the actual source scan type of the picture is outside the scope of this specification, and the method by which the encoder selects the values of general_progressive_source_flag and general_interlaced_source_flag is not specified.

[0110] A value of general_non_packed_constraint_flag equal to 1 specifies that no frame-packing arrangement SEI messages shall be present in the bitstream of OlsInScope. A value of general_non_packed_constraint_flag equal to 0 does not impose such a constraint.

[0111] Note 2 – The decoder may ignore the value of general_non_packed_constraint_flag since there are no decoding process requirements associated with the presence or interpretation of frame-packing arrangement SEI messages.

[0112] A value of general_frame_only_constraint_flag equal to 1 specifies that OlsInScope conveys pictures representing frames. A value of general_frame_only_constraint_flag equal to 0 specifies that OlsInScope conveys pictures that may or may not represent frames.

[0113] Note 3 – The decoder may ignore the value of general_frame_only_constraint_flag since there are no decoding process requirements associated with it.

[0114] A value of general_non_projected_constraint_flag equal to 1 specifies that no equirectangular projection SEI messages or generalized cube map projection SEI messages shall be present in the bitstream of OlsInScope. A value of general_non_projected_constraint_flag equal to 0 does not impose such a constraint.

[0115] Note 4 – The decoder may ignore the value of general_non_projected_constraint_flag since there are no decoding process requirements associated with the presence or interpretation of equirectangular projection SEI messages and generalized cube map projection SEI messages.

[0116] An intra_only_constraint_flag equal to 1 specifies that slice_type shall be equal to I. An intra_only_constraint_flag equal to 0 does not impose such a constraint.

[0117] max_bitdepth_constraint_idc specifies that bit_depth_minus8 shall be in the range from 0 to max_bitdepth_constraint_idc (including 0 and max_bitdepth_constraint_idc).

[0118] max_chroma_format_constraint_idc specifies that chroma_format_idc shall be in the range from 0 to max_chroma_format_constraint_idc (including 0 and max_chroma_format_constraint_idc).

[0119] A no_res_change_in_clvs_constraint_flag equal to 1 specifies that res_change_in_clvs_allowed_flag shall be equal to 0. A no_res_change_in_clvs_constraint_flag equal to 0 does not impose such a constraint.

[0120] A one_tile_per_pic_constraint_flag equal to 1 specifies that each picture shall contain only one tile. A one_tile_per_pic_constraint_flag equal to 0 does not impose such a constraint.

[0121] A one_slice_per_pic_constraint_flag equal to 1 specifies that each picture shall contain only one slice. A one_slice_per_pic_constraint_flag equal to 0 does not impose such a constraint.

[0122] A one_subpic_per_pic_constraint_flag equal to 1 specifies that each picture shall contain only one sub-picture. A one_subpic_per_pic_constraint_flag equal to 0 does not impose such a constraint. When one_slice_per_pic_constraint_flag is equal to 1, the value of one_subpic_per_pic_constraint_flag shall be equal to 1.

[0123] When no_qtbtt_dual_tree_intra_constraint_flag is equal to 1, it specifies that qtbtt_dual_tree_intra_flag should be equal to 0. When no_qtbtt_dual_tree_intra_constraint_flag is equal to 0, such a constraint is not imposed.

[0124] When no_partition_constraints_override_constraint_flag is equal to 1, it specifies that partition_constraints_override_enabled_flag should be equal to 0. When no_partition_constraints_override_constraint_flag is equal to 0, such a constraint is not imposed.

[0125] When no_sao_constraint_flag is equal to 1, it specifies that sps_sao_enabled_flag should be equal to 0. When no_sao_constraint_flag is equal to 0, such a constraint is not imposed.

[0126] When no_alf_constraint_flag is equal to 1, it specifies that sps_alf_enabled_flag should be equal to 0. When no_alf_constraint_flag is equal to 0, such a constraint is not imposed.

[0127] When no_ccalf_constraint_flag is equal to 1, it specifies that sps_ccalf_enabled_flag should be equal to 0. When no_ccalf_constraint_flag is equal to 0, such a constraint is not imposed.

[0128] When no_joint_cbcr_constraint_flag is equal to 1, it specifies that sps_joint_cbcr_enabled_flag should be equal to 0. When no_joint_cbcr_constraint_flag is equal to 0, such a constraint is not imposed.

[0129] When no_ref_wraparound_constraint_flag is equal to 1, it specifies that sps_ref_wraparound_enabled_flag should be equal to 0. When no_ref_wraparound_constraint_flag is equal to 0, such a constraint is not imposed.

[0130] The no_temporal_mvp_constraint_flag being equal to 1 specifies that the sps_temporal_mvp_enabled_flag shall be equal to 0. The no_temporal_mvp_constraint_flag being equal to 0 does not impose such a constraint.

[0131] The no_sbtmvp_constraint_flag being equal to 1 specifies that the sps_sbtmvp_enabled_flag shall be equal to 0. The no_sbtmvp_constraint_flag being equal to 0 does not impose such a constraint.

[0132] The no_amvr_constraint_flag being equal to 1 specifies that the sps_amvr_enabled_flag shall be equal to 0. The no_amvr_constraint_flag being equal to 0 does not impose such a constraint.

[0133] The no_bdof_constraint_flag being equal to 1 specifies that the sps_bdof_enabled_flag shall be equal to 0. The no_bdof_constraint_flag being equal to 0 does not impose such a constraint.

[0134] The no_dmvr_constraint_flag being equal to 1 specifies that the sps_dmvr_enabled_flag shall be equal to 0. The no_dmvr_constraint_flag being equal to 0 does not impose such a constraint.

[0135] The no_cclm_constraint_flag being equal to 1 specifies that the sps_cclm_enabled_flag shall be equal to 0. The no_cclm_constraint_flag being equal to 0 does not impose such a constraint.

[0136] The no_mts_constraint_flag being equal to 1 specifies that the sps_mts_enabled_flag shall be equal to 0. The no_mts_constraint_flag being equal to 0 does not impose such a constraint.

[0137] The no_sbt_constraint_flag being equal to 1 specifies that the sps_sbt_enabled_flag shall be equal to 0. The no_sbt_constraint_flag being equal to 0 does not impose such a constraint.

[0138] A no_affine_motion_constraint_flag value of 1 specifies that the sps_affine_enabled_flag shall be equal to 0. A no_affine_motion_constraint_flag value of 0 does not impose such a constraint.

[0139] A no_bcw_constraint_flag value of 1 specifies that the sps_bcw_enabled_flag shall be equal to 0. A no_bcw_constraint_flag value of 0 does not impose such a constraint.

[0140] A no_ibc_constraint_flag value of 1 specifies that the sps_ibc_enabled_flag shall be equal to 0. A no_ibc_constraint_flag value of 0 does not impose such a constraint.

[0141] A no_ciip_constraint_flag value of 1 specifies that the sps_ciip_enabled_flag shall be equal to 0. A no_cipp_constraint_flag value of 0 does not impose such a constraint.

[0142] A no_fpel_mmvd_constraint_flag value of 1 specifies that the sps_fpel_mmvd_enabled_flag shall be equal to 0. A no_fpel_mmvd_constraint_flag value of 0 does not impose such a constraint.

[0143] A no_gpm_constraint_flag value of 1 specifies that the sps_gpm_enabled_flag shall be equal to 0. A no_gpm_constraint_flag value of 0 does not impose such a constraint.

[0144] A no_ladf_constraint_flag value of 1 specifies that the sps_ladf_enabled_flag shall be equal to 0. A no_ladf_constraint_flag value of 0 does not impose such a constraint.

[0145] A no_transform_skip_constraint_flag value of 1 specifies that the sps_transfrom_skip_enabled_flag shall be equal to 0. A no_transform_skip_constraint_flag value of 0 does not impose such a constraint.

[0146] A no_bdpcm_constraint_flag equal to 1 specifies that the sps_bdpcm_enabled_flag shall be equal to 0. A no_bdpcm_constraint_flag equal to 0 does not impose such a constraint.

[0147] A no_qp_delta_constraint_flag equal to 1 specifies that for bitstream conformance, the cu_qp_delta_enabled_flag shall be equal to 0. A no_qp_delta_constraint_flag equal to 0 does not impose such a constraint.

[0148] A no_dep_quant_constraint_flag equal to 1 specifies that for bitstream conformance, the sps_dep_quant_enabled_flag shall be equal to 0. A no_dep_quant_constraint_flag equal to 0 does not impose such a constraint.

[0149] A no_sign_data_hiding_constraint_flag equal to 1 specifies that for bitstream conformance, the sps_sign_data_hiding_enabled_flag shall be equal to 0. A no_sign_data_hiding_constraint_flag equal to 0 does not impose such a constraint.

[0150] A no_mixed_nalu_types_in_pic_constraint_flag equal to 1 specifies that for bitstream conformance, the mixed_nalu_types_in_pic_flag shall be equal to 0. A no_mixed_nalu_types_in_pic_constraint_flag equal to 0 does not impose such a constraint.

[0151] A no_trail_constraint_flag equal to 1 specifies that there shall be no NAL unit with nuh_unit_type equal to TRAIL_NUT in OlsInScope. A no_trail_constraint_flag equal to 0 does not impose such a constraint.

[0152] A no_stsa_constraint_flag equal to 1 specifies that there shall be no NAL unit with nuh_unit_type equal to STSA_NUT in OlsInScope. A no_stsa_constraint_flag equal to 0 does not impose such a constraint.

[0153] When no_rasl_constraint_flag equals 1, it specifies that there should be no NAL unit with nuh_unit_type equal to RASL_NUT in OlsInScope. When no_rasl_constraint_flag equals 0, such a constraint is not imposed.

[0154] When no_radl_constraint_flag equals 1, it specifies that there should be no NAL unit with nuh_unit_type equal to RADL_NUT in OlsInScope. When no_radl_constraint_flag equals 0, such a constraint is not imposed.

[0155] When no_idr_constraint_flag equals 1, it specifies that there should be no NAL unit with nuh_unit_type equal to IDR_W_RADL or IDR_N_LP in OlsInScope. When no_idr_constraint_flag equals 0, such a constraint is not imposed.

[0156] When no_cra_constraint_flag equals 1, it specifies that there should be no NAL unit with nuh_unit_type equal to CRA_NUT in OlsInScope. When no_cra_constraint_flag equals 0, such a constraint is not imposed.

[0157] When no_gdr_constraint_flag equals 1, it specifies that there should be no NAL unit with nuh_unit_type equal to GDR_NUT in OlsInScope. When no_gdr_constraint_flag equals 0, such a constraint is not imposed.

[0158] When no_aps_constraint_flag equals 1, it specifies that there should be no NAL unit with nuh_unit_type equal to PREFIX_APS_NUT or SUFFIX_APS_NUT in OlsInScope. When no_aps_constraint_flag equals 0, such a constraint is not imposed.

[0159] gci_alignment_zero_bits shall be equal to 0.

[0160] num_reserved_constraint_bytes specifies the number of reserved constraint bytes. The value of num_reserved_constraint_bytes shall be 0. Other values of num_reserved_constraint_bytes are reserved for future use by ITU-T|ISO / IEC and shall not be present in the bitstream conforming to this version of the specification.

[0161] gci_reserved_constraint_byte[i] may 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 conforming to this version of the specification shall ignore the values of all gci_reserved_constraint_byte[i] syntax elements.

[0162] 3.3 DCI Syntax and Semantics

[0163] In the latest VVC draft text, the DCI syntax and semantics are as follows:

[0164]

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

[0166] Note 1 – The information contained in the DCI RBSP is not essential for the operation of the decoding process specified in Clauses 2 to 9 of this specification.

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

[0168] dci_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers in the layers that can be present in each CVS of the bitstream. The value of dci_max_sublayers_minus1 shall be in the range from 0 to 6 (inclusive of 0 and 6).

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

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

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

[0172] Note 2 – The DCI NAL unit may include PTL information that applies jointly to multiple OLSs and may be carried in multiple profile_tier_level() syntax structures, and there is no need to include the PTL information for each OLS separately.

[0173] When dci_extension_flag is equal to 0, it specifies that the dci_extension_data_flag syntax element does not exist in the DCI RBSP syntax structure. When dci_extension_flag is equal to 1, it specifies that the dci_extension_data_flag syntax element exists in the DCI RBSP syntax structure.

[0174] dci_extension_data_flag can have any value. Its presence and value do not affect the decoder's conformance to the profiles specified in Annex A. Decoders compliant with this version of the specification shall ignore all dci_extension_data_flag syntax elements.

[0175] 3.4. VPS Syntax and Semantics

[0176] In the latest VVC draft text, the VPS syntax and semantics are as follows:

[0177]

[0178]

[0179]

[0180]

[0181] The VPS RBSP shall be available for the decoding process before being referenced, including in at least one AU with TemporalId equal to 0 or provided by external means.

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

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

[0184] vps_max_layers_minus1 plus 1 specifies the maximum allowed number of layers in each CVS of the reference VPS.

[0185] vps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sub-layers in the layers that can exist in each CVS of the reference VPS. The value of vps_max_sublayers_minus1 shall be in the range from 0 to 6 (inclusive of 0 and 6).

[0186] vps_all_layers_same_num_sublayers_flag being equal to 1 specifies that the number of temporal sub-layers is the same for all layers in each CV of the reference VPS. vps_all_layers_same_num_sublayers_flag being equal to 0 specifies that the layers in each CV of the reference VPS may or may not have the same number of temporal sub-layers. When not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1.

[0187] vps_all_independent_layers_flag being equal to 1 specifies that all layers in the CVS are independently encoded and decoded without using inter-layer prediction. vps_all_independent_layers_flag being 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.

[0188] vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer. For any two non-negative integer values 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].

[0189] vps_independent_layer_flag[i] being equal to 1 specifies that the layer with index i does not use inter-layer prediction. vps_independent_layer_flag[i] being equal to 0 specifies that the layer with index i may use inter-layer prediction and the syntax element vps_direct_ref_layer_flag[i][j] (where j is in the range from 0 to i - 1 (inclusive of 0 and i - 1)) is present in the VPS. When not present, the value of vps_independent_layer_flag[i] is inferred to be equal to 1.

[0190] vps_direct_ref_layer_flag[i][j] being equal to 0 specifies that the layer with index j is not a direct reference layer of the layer with index i. vps_direct_ref_layer_flag[i][j] being equal to 1 specifies 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] does not exist for i and j in the range from 0 to vps_max_layers_minus1 (including 0 and vps_max_layers_minus1), it is inferred to be equal to 0. When vps_independent_layer_flag[i] is equal to 0, there should be at least one value of j in the range from 0 to i - 1 (including 0 and i - 1) such that the value of vps_direct_ref_layer_flag[i][j] is equal to 1.

[0191] The variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsRefLayerFlag[j] are derived as follows:

[0192]

[0193]

[0194] 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:

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

[0196] GeneralLayerIdx[vps_layer_id[i]] = i

[0197] For any two different values i and j both in the range from 0 to vps_max_layers_minus1, inclusive of 0 and vps_max_layers_minus1, when dependencyFlag[i][j] equals 1, the requirement for bitstream consistency is that the values of chroma_format_idc and bit_depth_minus8 applicable to the i-th layer should be equal to the values of chroma_format_idc and bit_depth_minus8 applicable to the j-th layer, respectively.

[0198] max_tid_ref_present_flag[i] being equal to 1 specifies the presence of the syntax element max_tid_il_ref_pics_plus1[i]. max_tid_ref_present_flag[i] being equal to 0 specifies the absence of the syntax element max_tid_il_ref_pics_plus1[i].

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

[0200] 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 reference VPS is an OLS by itself, where the single included layer is the only output layer. each_layer_is_an_ols_flag being equal to 0 specifies that an OLS can contain more than one layer. If vps_max_layers_minus1 equals 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 1. Otherwise, when vps_all_independent_layers_flag equals 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 0.

[0201] 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 the layers with layer indices from 0 to i (including 0 and i), and for each OLS, only the highest layer in the OLS is output.

[0202] 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 (including 0 and i), and for each OLS, all the layers in the OLS are output.

[0203] 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 the layers that are direct or indirect reference layers of the output layers of the OLS.

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

[0205] 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.

[0206] 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.

[0207] The variable TotalNumOlss that specifies the total number of OLSs specified by the VPS is derived as follows:

[0208]

[0209]

[0210] ols_output_layer_flag[i][j] being equal to 1 specifies that when ols_mode_idc is equal to 2, the layer with nuh_layer_id equal to vps_layer_id[j] is the output layer of the i-th OLS. ols_output_layer_flag[i][j] being equal to 0 specifies that when ols_mode_idc is equal to 2, the layer with nuh_layer_id equal to vps_layer_id[j] is not the output layer of the i-th OLS.

[0211] 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 are derived as follows:

[0212]

[0213]

[0214]

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

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

[0217] 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 are derived as follows:

[0218]

[0219]

[0220] 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, the output only includes the included layer.

[0221] The variable OlsLayerIdx[i][j], which specifies the OLS layer index of the layer with nuh_layer_id equal to LayerIdInOls[i][j], is derived as follows:

[0222]

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

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

[0225] 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 should be less than TotalNumOlss.

[0226] When pt_present_flag[i] equals 1, it specifies that the configuration file, tier, and general constraint information exist in the i-th profile_tier_level() syntax structure in the VPS. When pt_present_flag[i] equals 0, it specifies that the configuration file, tier, and general constraint information do not exist 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] equals 0, the configuration file, tier, and general constraint information of the i-th profile_tier_level() syntax structure in the VPS are inferred to be the same as those of the (i - 1)-th profile_tier_level() syntax structure in the VPS.

[0227] ptl_max_temporal_id[i] specifies the TemporalId represented by the highest sublayer where the level information exists 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 from 0 to vps_max_sublayers_minus1 (including 0 and vps_max_sublayers_minus1). When vps_max_sublayers_minus1 equals 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 equals 1, the value of ptl_max_temporal_id[i] is inferred to be equal to vps_max_sublayers_minus1.

[0228] vps_ptl_alignment_zero_bit shall be equal to 0.

[0229] ols_ptl_idx[i] specifies the index of the profile_tier_level() syntax structure applicable to the i-th OLS in the list of profile_tier_level() syntax structures in the VPS. When present, the value of ols_ptl_idx[i] shall be in the range from 0 to vps_num_ptls_minus1 (including 0 and vps_num_ptls_minus1). When vps_num_ptls_minus1 equals 0, the value of ols_ptl_idx[i] is inferred to be equal to 0.

[0230] When NumLayersInOls[i] is equal to 1, the profile_tier_level() syntax structure applicable to the i-th OLS also exists in the SPS referred to by the layers in the i-th OLS. The requirement for bitstream consistency is that when NumLayersInOls[i] is equal to 1, the profile_tier_level() syntax structure signaled in the VPS and SPS for the i-th OLS should be the same.

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

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

[0233] dpb_max_temporal_id[i] specifies the highest sublayer representation's TemporalId for which DPB parameters can 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 of 0 and vps_max_sublayers_minus1). 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.

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

[0235] ols_dpb_pic_height[i] specifies the height of each picture storage buffer of the i-th OLS in units of luma samples.

[0236] ols_dpb_params_idx[i] specifies the index of the list of dpb_parameters() syntax structures in the VPS that is applicable to the ith 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.

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

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

[0239] When NumLayersInOls[i] is equal to 1, the general_hrd_parameters() syntax structure applicable to the i-th OLS exists in the SPS referenced by the layers in the i-th OLS.

[0240] 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 for sublayer representations with TemporalId in the range from 0 to hrd_max_tid[i] (including 0 and hrd_max_tid[i]). 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 for the sublayer representation with TemporalId equal to only 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.

[0241] When vps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters for sublayer representations with TemporalId in the range from 0 to hrd_max_tid[i] - 1 (including 0 and hrd_max_tid[i] - 1) are inferred to be the same as the HRD parameters for the sublayer representation 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 immediately under the condition "if(general_vcl_hrd_params_present_flag)" in the ols_hrd_parameters syntax structure.

[0242] 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 from 0 to TotalNumOlss - 1 (including 0 and TotalNumOlss - 1).

[0243] hrd_max_tid[i] specifies the TemporalId represented by the highest sublayer in 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 (including 0 and vps_max_sublayers_minus1). 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.

[0244] 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 (including 0 and num_ols_hrd_params_minus1).

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

[0246] 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.

[0247] vps_extension_flag being equal to 0 specifies that no vps_extension_data_flag syntax element exists in the VPS RBSP syntax structure. vps_extension_flag being equal to 1 specifies that the vps_extension_data_flag syntax element exists in the VPS RBSP syntax structure.

[0248] The 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.

[0249] 3.5. SPS Syntax and Semantics

[0250] In the latest VVC draft text, the SPS syntax and semantics are as follows:

[0251]

[0252]

[0253]

[0254]

[0255]

[0256]

[0257]

[0258]

[0259] The SPS RBSP shall be available for the decoding process before being referenced, including in at least one AU with TemporalId equal to 0 or provided by external means.

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

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

[0262] Regardless of the value of nuh_layer_id, SPS NAL units share the same value space for sps_seq_parameter_set_id.

[0263] Let spsLayerId be the value of nuh_layer_id of a particular SPS NAL unit and vclLayerId be the value of nuh_layer_id of a particular VCL NAL unit. A particular VCL NAL unit shall not refer to a particular 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.

[0264] When sps_video_parameter_set_id is greater than 0, it specifies the value of vps_video_parameter_set_id of the VPS that the SPS refers to.

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

[0266] - The SPS does not refer to the VPS.

[0267] - When decoding each CLVS that refers to the SPS, the VPS is not referred to.

[0268] - The value of vps_max_layers_minus1 is inferred to be equal to 0.

[0269] - 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).

[0270] - The value of GeneralLayerIdx[nuh_layer_id] is inferred to be equal to 0.

[0271] - The value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is inferred to be equal to 1.

[0272] When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the SPS referred to by a CLVS with a particular nuh_layer_id value nuhLayerId shall have a nuh_layer_id equal to nuhLayerId.

[0273] The value of sps_video_parameter_set_id shall be the same in all SPSs referred to by the CLVSs in the CVS.

[0274] sps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that can be present in each CLVS of the reference SPS. The value of sps_max_sublayers_minus1 shall be in the range from 0 to vps_max_sublayers_minus1, inclusive of 0 and vps_max_sublayers_minus1.

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

[0276] 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 are present in the SPS, and the general_hrd_parameters() syntax structure and the ols_hrd_parameters() syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag being equal to 0 specifies that none of these four syntax structures are present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]].

[0277] gdr_enabled_flag being equal to 1 specifies that GDR pictures can be present in the CLVS of the reference SPS. gdr_enabled_flag being equal to 0 specifies that GDR pictures are not present in the CLVS of the reference SPS.

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

[0279] When separate_colour_plane_flag equals 1, it specifies that the three colour components in the 4:4:4 chroma format are separately encoded and decoded. When separate_colour_plane_flag equals 0, it specifies that the colour 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 of which consists of the encoded and decoded samples of a colour plane (Y, Cb, or Cr), and the monochrome encoding and decoding syntax is used. In this case, each colour plane is associated with a specific colour_plane_id value.

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

[0281] Depending on the value of separate_colour_plane_flag, the value of the variable ChromaArrayType is assigned as follows:

[0282] - If separate_colour_plane_flag equals 0, ChromaArrayType is set to be equal to chroma_format_idc.

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

[0284] When res_change_in_clvs_allowed_flag equals 1, it specifies that the spatial resolution of the picture can be changed within the CLVS of the reference SPS. When res_change_in_clvs_allowed_flag equals 0, it specifies that the spatial resolution of the picture is not changed within any CLVS of the reference SPS.

[0285] pic_width_max_in_luma_samples specifies the maximum width of each decoded picture of the reference SPS, in luma samples. pic_width_max_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8, MinCbSizeY).

[0286] The requirement for bitstream conformance is that for any OLS with OLS index i that contains one or more layers of the reference SPS, the value of pic_width_max_in_luma_samples should be less than or equal to the value of ols_dpb_pic_width[i].

[0287] pic_height_max_in_luma_samples specifies the maximum height of each decoded picture of the reference SPS, in luminance samples. pic_height_max_in_luma_samples should not be equal to 0 and should be an integer multiple of Max(8, MinCbSizeY).

[0288] The requirement for bitstream conformance is that for any OLS with OLS index i that contains one or more layers of the reference SPS, the value of pic_height_max_in_luma_samples should be less than or equal to the value of ols_dpb_pic_height[i].

[0289] sps_conformance_window_flag being equal to 1 indicates that the conformance cropping window offset parameter in the SPS follows the next one. sps_conformance_window_flag being equal to 0 indicates that the conformance cropping window offset parameter does not exist in the SPS.

[0290] 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 pictures 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.

[0291] The consistency cropping window contains luma samples with horizontal picture coordinates from SubWidthC * sps_conf_win_left_offset to pic_width_max_in_luma_samples - (SubWidthC *

[0292] sps_conf_win_right_offset + 1) (including SubWidthC * sps_conf_win_left_offset and pic_width_max_in_luma_samples - (SubWidthC *

[0293] sps_conf_win_right_offset + 1)) and vertical picture coordinates from SubHeightC * sps_conf_win_top_offset to pic_height_max_in_luma_samples - (SubHeightC * sps_conf_win_bottom_offset + 1) (including SubHeightC * sps_conf_win_top_offset and pic_height_max_in_luma_samples - (SubHeightC * sps_conf_win_bottom_offset + 1)).

[0294] 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.

[0295] 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.

[0296] 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.

[0297] 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 of 0 and 2). The value 3 of sps_log2_ctu_size_minus5 is reserved for future use by ITU-T|ISO / IEC.

[0298] The variables CtbLog2SizeY and CtbSizeY are derived as follows:

[0299] CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5 (43)

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

[0301] subpic_info_present_flag being equal to 1 specifies that sub-picture information is present for CLVS, and there may be one or more sub-pictures in each picture of CLVS. subpic_info_present_flag being equal to 0 specifies that sub-picture information is not present for CLVS, and there is only one sub-picture in each picture of CLVS.

[0302] When res_change_in_clvs_allowed_flag is equal to 1, the value of subpic_info_present_flag shall be equal to 0.

[0303] Note 3 – When the bitstream is the result of the 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 be equal to 1 in the RBSP of the SPS.

[0304] sps_num_subpics_minus1 plus 1 specifies the number of sub - pictures of 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 (including 0 and Ceil(pic_width_max_in_luma_samples÷CtbSizeY)*Ceil(pic_height_max_in_luma_samples÷CtbSizeY)-1). When it is absent, the value of sps_num_subpics_minus1 is inferred to be equal to 0.

[0305] sps_independent_subpics_flag being equal to 1 specifies that intra - prediction, inter - prediction, and loop - filtering operations shall not be performed across any sub - picture boundaries in CLVS. sps_independent_subpics_flag being equal to 0 specifies that inter - prediction or loop - filtering operations across sub - picture boundaries in CLVS are allowed. When it is absent, the value of sps_independent_subpics_flag is inferred to be equal to 0.

[0306] subpic_ctu_top_left_x[i] specifies the horizontal position of the top - left CTU 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 it is absent, the value of subpic_ctu_top_left_x[i] is inferred to be equal to 0.

[0307] subpic_ctu_top_left_y[i] specifies the vertical position of the top - left CTU 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 it is absent, the value of subpic_ctu_top_left_y[i] is inferred to be equal to 0.

[0308] 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.

[0309] 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.

[0310] 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 in the decoding process that excludes loop filter 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 in the decoding process that excludes loop filter operations. When absent, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to sps_independent_subpics_flag.

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

[0312] - All pictures in the output layer and its reference layer shall have the same value of pic_width_in_luma_samples and the same value of pic_height_in_luma_samples.

[0313] - For each value of j in the range from 0 to sps_num_subpics_minus1, inclusive (including 0 and sps_num_subpics_minus1), all SPSs referenced by the output layer and its reference layer shall have the same value of sps_num_subpics_minus1, and shall respectively have the same values of 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].

[0314] - For each value of j in the range from 0 to sps_num_subpics_minus1, inclusive (including 0 and sps_num_subpics_minus1), all pictures in each access unit in the output layer and its reference layer shall have the same value of SubpicIdVal[j].

[0315] 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 subpicture in each coded picture in the CLVS. loop_filter_across_subpic_enabled_flag[i] being equal to 0 specifies that loop filtering operations are not performed across the boundaries of the i-th subpicture in each coded picture in the CLVS. When absent, the value of loop_filter_across_subpic_enabled_flag[i] is inferred to be equal to 1 - sps_independent_subpics_flag.

[0316] The requirement for bitstream compliance is that the shape of the subpictures shall be such that each subpicture, when decoded, shall have its entire left boundary and its entire upper boundary composed of the picture boundary or of the boundaries of previously decoded subpictures.

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

[0318] subpic_id_mapping_explicitly_signalled_flag being equal to 1 specifies that the subpicture ID mapping is signalled explicitly in the SPS or in the PPS referenced by the coded pictures of the CLVS. subpic_id_mapping_explicitly_signalled_flag being equal to 0 specifies that the subpicture 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.

[0319] subpic_id_mapping_in_sps_flag being equal to 1 specifies that when subpic_id_mapping_explicitly_signalled_flag is equal to 1, the subpicture ID mapping is signalled in the SPS. subpic_id_mapping_in_sps_flag being equal to 0 specifies that when subpic_id_mapping_explicitly_signalled_flag is equal to 1, the subpicture ID mapping is signalled in the PPS referenced by the coded pictures of the CLVS.

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

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

[0322] BitDepth = 8 + bit_depth_minus8 (45)

[0323] QpBdOffset = 6 * bit_depth_minus8 (46)

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

[0325] The sps_entropy_coding_sync_enabled_flag being equal to 1 specifies that a specific synchronization process of context variables is called before decoding the CTU of the first CTB in a row of CTBs in each slice in each picture that refers to the SPS, and a specific storage process of context variables is called after decoding the CTU of the first CTB in a row of CTBs in each slice in each picture that refers to the SPS. The sps_entropy_coding_sync_enabled_flag being equal to 0 specifies that no specific synchronization process of context variables needs to be called before decoding the CTU of the first CTB in a row of CTBs in each slice in each picture that refers to the SPS, and no specific storage process of context variables needs to be called after decoding the CTU of the first CTB in a row of CTBs in each slice in each picture that refers to the SPS.

[0326] 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 for the entry point offsets for CTU rows can be present in the slice headers of pictures that refer to the SPS. The sps_wpp_entry_point_offsets_present_flag being equal to 0 specifies that signaling for the entry point offsets for CTU rows is not present in the slice headers of pictures that refer to the SPS. When not present, the value of the sps_wpp_entry_point_offsets_present_flag is inferred to be equal to 0.

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

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

[0329] log2_max_pic_order_cnt_lsb_minus4 specifies the value of the variable MaxPicOrderCntLsb used in the decoding process of picture order count as follows:

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

[0331] The value of log2_max_pic_order_cnt_lsb_minus4 shall be in the range of 0 to 12 (inclusive of 0 and 12).

[0332] sps_poc_msb_flag being equal to 1 specifies that the ph_poc_msb_present_flag syntax element exists in the PH of the reference SPS. sps_poc_msb_flag being equal to 0 specifies that the ph_poc_msb_present_flag syntax element does not exist in the PH of the reference SPS.

[0333] poc_msb_len_minus1 plus 1 specifies the length (in bits) of the poc_msb_val syntax element when it exists in the PH of the reference 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 of 0 and 32 - log2_max_pic_order_cnt_lsb_minus4 - 5).

[0334] num_extra_ph_bits_bytes specifies the number of bytes of extra bits in the PH syntax structure of the coded / decoded pictures of the reference SPS. The value of num_extra_ph_bits_bytes shall be equal to 0 in the bitstream conforming to this version of the specification. Although the value of num_extra_ph_bits_bytes is required to be equal to 0 in this version of the specification, a decoder conforming to this version of the specification shall allow the value of num_extra_ph_bits_bytes to be equal to 1 or 2 to appear in the syntax.

[0335] num_extra_sh_bits_bytes specifies the number of bytes of extra bits in the slice header of the decoded / encoded pictures of the reference SPS. The value of num_extra_sh_bits_bytes shall be equal to 0 in the bitstream conforming to this version of the specification. Although the value of num_extra_sh_bits_bytes is required to be equal to 0 in this version of the specification, a decoder conforming to this version of the specification should allow the value of num_extra_sh_bits_bytes to be equal to 1 or 2 to appear in the syntax.

[0336] sps_sublayer_dpb_params_flag is used to control the presence of the syntax elements max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i], and max_latency_increase_plus1[i] 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.

[0337] long_term_ref_pics_flag being equal to 0 specifies that no LTRP is used for inter prediction of any decoded / encoded pictures in the CLVS. long_term_ref_pics_flag being equal to 1 specifies that LTRP can be used for inter prediction of one or more decoded / encoded pictures in the CLVS.

[0338] inter_layer_ref_pics_present_flag being equal to 0 specifies that no ILRP is used for inter prediction of any decoded / encoded pictures in the CLVS. inter_layer_ref_pic_flag being equal to 1 specifies that ILRP can be used for inter prediction of one or more decoded / encoded pictures in the CLVS. When sps_video_parameter_set_id is equal to 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]] is equal to 1, the value of inter_layer_ref_pics_present_flag shall be equal to 0. [Ed.(YK): Check if there is a better name for this syntax element.]

[0339] The sps_idr_rpl_present_flag being equal to 1 specifies that the reference picture list syntax elements are present in the slice header of an IDR picture. The sps_idr_rpl_present_flag being equal to 0 specifies that the reference picture list syntax elements are not present in the slice header of an IDR picture.

[0340] The rpl1_same_as_rpl0_flag being equal to 1 specifies that the syntax elements num_ref_pic_lists_in_sps[1] and the syntax structure ref_pic_list_struct(1, rplsIdx) are not present, and the following applies:

[0341] - 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].

[0342] - 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), where rplsIdx ranges from 0 to num_ref_pic_lists_in_sps[0] - 1.

[0343] 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 in the range of 0 to 64 (including 0 and 64).

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

[0345] When qtbtt_dual_tree_intra_flag equals 1, it specifies that for an I slice, each CTU is partitioned into coding units with 64×64 luma samples using an implicit quadtree partition, and these coding units are the roots of two separate coding_tree syntax structures for luma and chroma. When qtbtt_dual_tree_intra_flag equals 0, it specifies that the separate coding_tree syntax structures are not used for I slices. When qtbtt_dual_tree_intra_flag does not exist, it is inferred to be equal to 0.

[0346] 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 within the range of 0 to Min(4, sps_log2_ctu_size_minus5 + 3) (including 0 and Min(4, sps_log2_ctu_size_minus5 + 3)).

[0347] The variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC, and Vsize are derived as follows:

[0348] MinCbLog2SizeY = log2_min_luma_coding_block_size_minus2 + 2 (48)

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

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

[0351] IbcBufWidthC = IbcBufWidthY / SubWidthC (51)

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

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

[0354] The variables CtbWidthC and CtbHeightC, which specify the width and height of the array of each chroma CTB respectively, are derived as follows:

[0355] - 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.

[0356] - Otherwise, CtbWidthC and CtbHeightC are derived as follows:

[0357] CtbWidthC = CtbSizeY / SubWidthC (53)

[0358] CtbHeightC = CtbSizeY / SubHeightC (54)

[0359] For log2BlockWidth in the range from 0 to 4 and log2BlockHeight in the range from 0 to 4 (including 0 and 4), the initialization process of the upper-right diagonal scan order array as specified in Clause 6.5.2 is scheduled, where 1 << log2BlockWidth and 1 << log2BlockHeight are used as inputs, and the output is assigned to DiagScanOrder[log2BlockWidth][log2BlockHeight].

[0360] For log2BlockWidth in the range from 0 to 6 and log2BlockHeight in the range from 0 to 6 (including 0 and 6), the initialization processes of the horizontal and vertical traversal scan order arrays as specified in Clause 6.5.3 are called, where 1 << log2BlockWidth and 1 << log2BlockHeight are used as inputs, and the outputs are assigned to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].

[0361] partition_constraints_override_enabled_flag being equal to 1 specifies the presence of partition_constraints_override_flag in the PH of the reference SPS. partition_constraints_override_enabled_flag being equal to 0 specifies the absence of partition_constraints_override_flag in the PH of the reference SPS.

[0362] sps_log2_diff_min_qt_min_cb_intra_slice_luma specifies the default difference between the log2 of the minimum size in the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU and the log2 of the minimum decoded block size in the luma samples of the luma CUs in a slice where the slice_type of the reference SPS is equal to 2 (I). 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 of the reference SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range from 0 to CtbLog2SizeY - MinCbLog2SizeY (including 0 and CtbLog2SizeY - MinCbLog2SizeY). The log2 of the minimum size in the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU is derived as follows:

[0363] MinQtLog2SizeIntraY = sps_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY (55)

[0364] sps_max_mtt_hierarchy_depth_intra_slice_luma specifies the default maximum hierarchy depth of the coding units resulting from the multi-type tree partitioning of the quadtree leaves in a slice where the slice_type of the reference SPS is equal to 2 (I). When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth can be overridden by ph_max_mtt_hierarchy_depth_intra_slice_luma present in the PH of the reference SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range from 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including 0 and 2 * (CtbLog2SizeY - MinCbLog2SizeY)).

[0365] sps_log2_diff_max_bt_min_qt_intra_slice_luma specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a luma coding block that can be partitioned using 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 in the reference SPS is equal to 2 (I). When the 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 of the reference SPS. The value of sps_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range from 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive of 0 and CtbLog2SizeY - MinQtLog2SizeIntraY. 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.

[0366] sps_log2_diff_max_tt_min_qt_intra_slice_luma specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a luma coding block that can be partitioned using 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 in the reference SPS is equal to 2 (I). When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by byph_log2_diff_max_tt_min_qt_luma present in the PH of the reference SPS. The value of sps_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range from 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive of 0 and CtbLog2SizeY - MinQtLog2SizeIntraY. 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.

[0367] sps_log2_diff_min_qt_min_cb_inter_slice specifies the default difference between the base-2 logarithm of the minimum size of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU and the base-2 logarithm of the minimum luma coding block size of the luma samples in a luma CU in a slice where the slice_type in the reference SPS is equal to 0 (B) or 1 (P). 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 of the reference SPS. The value of sps_log2_diff_min_qt_min_cb_inter_slice shall be in the range from 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive of 0 and CtbLog2SizeY - MinCbLog2SizeY. The base-2 logarithm of the minimum size of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU is derived as follows:

[0368] MinQtLog2SizeInterY = sps_log2_diff_min_qt_min_cb_inter_slice + MinCbLog2SizeY (56)

[0369] sps_max_mtt_hierarchy_depth_inter_slice specifies the default maximum hierarchical depth of the coding tree units generated by the multi-type tree partitioning of the quadtree leaves in the slices with slice_type equal to 0 (B) or 1 (P) in the reference 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_inter_slice present in the PH of the reference SPS. The value of sps_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including 0 and 2 * (CtbLog2SizeY - MinCbLog2SizeY)).

[0370] 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) of the luma samples in the luma coding blocks that can be partitioned using 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 with slice_type equal to 0 (B) or 1 (P) in the reference 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 of the reference SPS. The value of sps_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY (including 0 and CtbLog2SizeY - MinQtLog2SizeInterY). When sps_log2_diff_max_bt_min_qt_inter_slice does not exist, the value of sps_log2_diff_max_bt_min_qt_inter_slice is inferred to be equal to 0.

[0371] sps_log2_diff_max_tt_min_qt_inter_slice specifies the default difference between the logarithm to the base 2 of the maximum size (width or height) of the luma samples in a luma coding block that can be partitioned using 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 in the reference SPS where slice_type is equal to 0 (B) or 1 (P). 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 of the reference SPS. The value of sps_log2_diff_max_tt_min_qt_inter_slice shall be in the range from 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive of 0 and CtbLog2SizeY - MinQtLog2SizeInterY. 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.

[0372] sps_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the default difference between the minimum size in log2 of the luma 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 size in log2 of the decoded block size of the luma samples in the chroma CUs with treeType equal to DUAL_TREE_CHROMA in slices with slice_type equal to 2 (I) of the reference 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_chroma present in the PH of the reference SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY (including 0 and CtbLog2SizeY - MinCbLog2SizeY). When not present, the value of sps_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to 0. The minimum size in log2 of the luma samples in the chroma leaf blocks resulting from the quadtree partitioning of the CTUs with treeType equal to DUAL_TREE_CHROMA is derived as follows:

[0373] MinQtLog2SizeIntraC = sps_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY (57)

[0374] sps_max_mtt_hierarchy_depth_intra_slice_chroma specifies the default maximum hierarchical depth of chroma coding units generated from the multi-type tree partitioning of chroma quadtree leaves with treeType equal to DUAL_TREE_CHROMA in slices where the slice_type of the reference SPS is equal to 2 (I). 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 of the reference SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including 0 and 2 * (CtbLog2SizeY - MinCbLog2SizeY)). When not present, the value of sps_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to 0.

[0375] 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 block that can be partitioned using binary partitioning and the minimum size (width or height) of the luma samples in a chroma leaf block generated from the quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in slices where the slice_type of the reference SPS is equal to 2 (I). When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_bt_min_qt_chroma present in the PH of the reference SPS. The value of sps_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC (including 0 and CtbLog2SizeY - MinQtLog2SizeIntraC). 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.

[0376] 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 the chroma coding blocks that can be partitioned using ternary partitioning and the minimum size (width or height) of the luma samples in the chroma leaf blocks resulting from the quadtree partitioning of the chroma CTUs with treeType equal to DUAL_TREE_CHROMA in slices where the slice_type of the reference SPS is equal to 2 (I). When the 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 of the reference SPS. The value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC (including 0 and CtbLog2SizeY - MinQtLog2SizeIntraC). 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.

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

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

[0379] The variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, and MaxTbSizeY are derived as follows:

[0380] MinTbLog2SizeY = 2 (58)

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

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

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

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

[0385] When same_qp_table_for_chroma is equal to 1, it indicates that only one chrominance QP mapping table is signaled, and when sps_joint_cbcr_enabled_flag is equal to 1, this table applies to both Cb and Cr residuals and additionally to the joint Cb - Cr residuals. When same_qp_table_for_chroma is equal to 0, it indicates that chrominance QP mapping tables are signaled in the SPS. When sps_joint_cbcr_enabled_flag is equal to 1, two tables are used for Cb and Cr, and an additional table is used for the 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.

[0386] 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 (including -26 - QpBdOffset and 36). 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.

[0387] num_points_in_qp_table_minus1[i] + 1 specifies the number of points used to describe the i-th chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be in the range of 0 to 63 + QpBdOffset (including 0 and 63 + QpBdOffset). When num_points_in_qp_table_minus1[0] does not exist in the bitstream, the value of num_points_in_qp_table_minus1[0] is inferred to be equal to 0.

[0388] delta_qp_in_val_minus1[i][j] specifies the incremental value for deriving the input coordinate 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.

[0389] delta_qp_diff_val[i][j] specifies the incremental value for deriving the output coordinate of the j-th pivot point of the i-th chroma QP mapping table.

[0390] The i-th chroma QP mapping table ChromaQpTable[i] (where i = 0..numQpTables - 1) is derived as follows:

[0391]

[0392]

[0393] 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], where k is in the range of -QpBdOffset to 63 (including -QpBdOffset and 63).

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

[0395] When sps_sao_enabled_flag is equal to 1, it specifies that the sample adaptive offset process is applied to the reconstructed picture after the deblocking filter process. When sps_sao_enabled_flag is equal to 0, it specifies that the sample adaptive offset process is not applied to the reconstructed picture after the deblocking filter process.

[0396] When sps_alf_enabled_flag is equal to 0, it specifies that the adaptive loop filter is disabled. When sps_alf_enabled_flag is equal to 1, it specifies that the adaptive loop filter is enabled.

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

[0398] When sps_transform_skip_enabled_flag is equal to 1, it specifies that transform_skip_flag can exist in the transform unit syntax. When sps_transform_skip_enabled_flag is equal to 0, it specifies that transform_skip_flag does not exist in the transform unit syntax.

[0399] log2_transform_skip_max_size_minus2 specifies the maximum block size for transform skip, and it should be within the range from 0 to 3 (including 0 and 3).

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

[0401] 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.

[0402] 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. [Ed.(YK): The semantics here still depend on the PPS syntax element.]

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

[0404] When sps_sbtmvp_enabled_flag equals 1, it specifies that the sub-block based temporal motion vector prediction value can be used to decode pictures with slice_type not equal to I for all slices in CLVS. When sps_sbtmvp_enabled_flag equals 0, it specifies 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.

[0405] When sps_amvr_enabled_flag equals 1, it specifies that adaptive motion vector difference resolution is used for motion vector coding. When amvr_enabled_flag equals 0, it specifies that adaptive motion vector difference resolution is not used for motion vector coding.

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

[0407] When sps_bdof_pic_present_flag equals 1, it specifies that ph_disable_bdof_flag exists in the PH of the reference SPS. When sps_bdof_pic_present_flag equals 0, it specifies that ph_disable_bdof_flag does not exist in the PH of the reference SPS. When sps_bdof_pic_present_flag does not exist, its value is inferred to be equal to 0.

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

[0409] When sps_dmvr_enabled_flag equals 1, it specifies that inter-frame bidirectional prediction based on decoder motion vector refinement is enabled. When sps_dmvr_enabled_flag equals 0, it specifies that inter-frame bidirectional prediction based on decoder motion vector refinement is disabled.

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

[0411] 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.

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

[0413] 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.

[0414] 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.

[0415] 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.

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

[0417] When sps_chroma_vertical_collocated_flag equals 1, it specifies that the prediction process operates in a manner designed for chroma sample positions that are not vertically shifted relative to the corresponding luma sample positions. When sps_chroma_vertical_collocated_flag equals 0, it specifies that the prediction process operates in a manner designed for chroma sample positions that are vertically shifted by 0.5 luma samples downwards relative to the corresponding luma sample positions. When sps_chroma_vertical_collocated_flag does not exist, it is inferred to be equal to 1.

[0418] The sps_mts_enabled_flag being equal to 1 specifies that the sps_explicit_mts_intra_enabled_flag is present in the sequence parameter set RBSP syntax and that the sps_explicit_mts_inter_enabled_flag is present in the sequence parameter set RBSP syntax. The sps_mts_enabled_flag being equal to 0 specifies that the sps_explicit_mts_intra_enabled_flag is not present in the sequence parameter set RBSP syntax and that the sps_explicit_mts_inter_enabled_flag is not present in the sequence parameter set RBSP syntax.

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

[0420] The sps_explicit_mts_inter_enabled_flag being equal to 1 specifies that the mts_idx may be present in the inter coding unit syntax. The sps_explicit_mts_inter_enabled_flag being equal to 0 specifies that the mts_idx is not present in the inter coding unit syntax. When not present, the value of the sps_explicit_mts_inter_enabled_flag is inferred to be equal to 0.

[0421] six_minus_max_num_merge_cand specifies the maximum number of Merge motion vector prediction (MVP) candidates supported in the SPS subtracted from 6. The value of six_minus_max_num_merge_cand shall be in the range from 0 to 5 (inclusive of 0 and 5).

[0422] The maximum number of Merge MVP candidates, MaxNumMergeCand, is derived as follows:

[0423] MaxNumMergeCand = 6 - six_minus_max_num_merge_cand (63)

[0424] The sps_sbt_enabled_flag being equal to 0 specifies that the sub-block transform for the inter prediction CU is disabled. The sps_sbt_enabled_flag being equal to 1 specifies that the sub-block transform for the inter prediction CU is enabled.

[0425] The sps_affine_enabled_flag specifies whether motion compensation based on the affine model can be used for inter prediction. If the sps_affine_enabled_flag is equal to 0, the syntax shall be constrained such that no motion compensation based on the affine model is used in the CLVS, and the inter_affine_flag and cu_affine_type_flag do not exist in the syntax of the coding unit in the CLVS. Otherwise (the sps_affine_enabled_flag is equal to 1), motion compensation based on the affine model can be used in the CLVS.

[0426] five_minus_max_num_subblock_merge_cand specifies the maximum number of sub-block-based Merge motion vector prediction candidates supported in the SPS subtracted from 5.

[0427] 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 constrained such that no motion compensation based on the 6-parameter affine model is used in the CLVS, and the cu_affine_type_flag does not exist in the syntax of the coding unit in the CLVS. Otherwise (the sps_affine_type_flag is equal to 1), motion compensation based on the 6-parameter affine model can be used in the CLVS. When it does not exist, the value of the sps_affine_type_flag is inferred to be equal to 0.

[0428] The sps_affine_amvr_enabled_flag being equal to 1 specifies that adaptive motion vector difference resolution is used for the motion vector coding of the affine inter mode. The sps_affine_amvr_enabled_flag being equal to 0 specifies that adaptive motion vector difference resolution is not used for the motion vector coding of the affine inter mode. When it does not exist, the value of the sps_affine_amvr_enabled_flag is inferred to be equal to 0.

[0429] The sps_affine_prof_enabled_flag specifies whether the prediction refinement 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 refined using optical flow. Otherwise (the sps_affine_prof_enabled_flag is equal to 1), affine motion compensation can be refined using optical flow. When not present, the value of the sps_affine_prof_enabled_flag is inferred to be equal to 0.

[0430] The sps_prof_pic_present_flag being equal to 1 specifies that the ph_disable_prof_flag is present in the PH of the reference SPS. The sps_prof_pic_present_flag being equal to 0 specifies that the ph_disable_prof_flag is not present in the PH of the reference 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.

[0431] The sps_palette_enabled_flag being equal to 1 specifies that the pred_mode_plt_flag may be present in the codec unit syntax. The sps_palette_enabled_flag being equal to 0 specifies that the pred_mode_plt_flag is not present in the codec unit syntax. When the sps_palette_enabled_flag is not present, it is inferred to be equal to 0.

[0432] The sps_act_enabled_flag being equal to 1 specifies that the adaptive color transform can be used and the cu_act_enabled_flag may be present in the codec unit syntax. The sps_act_enabled_flag being equal to 0 specifies that the adaptive color transform is not used and the cu_act_enabled_flag is not present in the codec unit syntax. When the sps_act_enabled_flag is not present, it is inferred to be equal to 0.

[0433] min_qp_prime_ts_minus4 specifies the minimum allowed quantization parameter for the transform skip mode as follows:

[0434] QpPrimeTsMin = 4 + min_qp_prime_ts_minus4 (64)

[0435] The value of min_qp_prime_ts_minus4 shall be in the range of 0 to 48, inclusive of 0 and 48.

[0436] The sps_bcw_enabled_flag specifies whether bidirectional prediction with CU weights can be used for inter prediction. If the sps_bcw_enabled_flag is equal to 0, the syntax shall be constrained such that bidirectional prediction with CU weights is not used in the CLVS and the bcw_idx does not exist in the coding unit syntax of the CLVS. Otherwise (the sps_bcw_enabled_flag is equal to 1), bidirectional prediction with CU weights can be used in the CLVS.

[0437] The sps_ibc_enabled_flag being equal to 1 specifies that the IBC prediction mode can be used to decode pictures in the CLVS. The sps_ibc_enabled_flag being equal to 0 specifies that the IBC prediction mode is not used in the CLVS. When the sps_ibc_enabled_flag does not exist, it is inferred to be equal to 0.

[0438] The six_minus_max_num_ibc_merge_cand specifies the maximum number of IBC Merge block vector prediction (BVP) candidates supported in the SPS subtracted from 6. The value of six_minus_max_num_ibc_merge_cand shall be in the range of 0 to 5, inclusive of 0 and 5.

[0439] The maximum number of IBC Merge BVP candidates, MaxNumIbcMergeCand, is derived as follows:

[0440]

[0441] The sps_ciip_enabled_flag specifies that the ciip_flag can exist in the coding unit syntax of the inter coding unit. The sps_ciip_enabled_flag being equal to 0 specifies that the ciip_flag does not exist in the coding unit syntax of the inter coding unit.

[0442] The sps_fpel_mmvd_enabled_flag being equal to 1 specifies that the Merge mode with motion vector difference uses integer sample precision. The sps_fpel_mmvd_enabled_flag being equal to 0 specifies that the Merge mode with motion vector difference can use fractional sample precision.

[0443] The sps_gpm_enabled_flag specifies whether motion compensation based on geometric partitioning can be used for inter prediction. An sps_gpm_enabled_flag equal to 0 specifies that the syntax shall be constrained such that motion compensation based on geometric partitioning is not used in CLVS, and merge_gpm_partition_idx, merge_gpm_idx0, and merge_gpm_idx1 do not exist in the codec unit syntax of CLVS. An sps_gpm_enabled_flag equal to 1 specifies that motion compensation based on geometric partitioning can be used in CLVS. When not present, the value of sps_gpm_enabled_flag is inferred to be equal to 0.

[0444] max_num_merge_cand_minus_max_num_gpm_cand specifies the maximum number of geometric partitioning Merge mode candidates supported in the SPS that is subtracted from MaxNumMergeCand.

[0445] The maximum number of geometric partitioning Merge mode candidates, MaxNumGpmMergeCand, is derived as follows:

[0446]

[0447]

[0448] The value of MaxNumGpmMergeCand shall be in the range from 2 to MaxNumMergeCand, inclusive of 2 and MaxNumMergeCand.

[0449] An sps_lmcs_enabled_flag equal to 1 specifies that luminance mapping and chrominance scaling are used in CLVS. An sps_lmcs_enabled_flag equal to 0 specifies that luminance mapping and chrominance scaling are not used in CLVS.

[0450] An sps_lfnst_enabled_flag equal to 1 specifies that lfnst_idx can exist in the intra codec unit syntax. An sps_lfnst_enabled_flag equal to 0 specifies that lfnst_idx does not exist in the intra codec unit syntax.

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

[0452] sps_num_ladf_intervals_minus2 plus 1 specifies the number of the sps_ladf_delta_threshold_minus1[i] and sps_ladf_qp_offset[i] syntax elements present in the SPS. The value of sps_num_ladf_intervals_minus2 shall be in the range of 0 to 3 (inclusive of 0 and 3).

[0453] sps_ladf_lowest_interval_qp_offset specifies the offset used for deriving the variable qP, as specified 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 of -63 and 63).

[0454] sps_ladf_qp_offset[i] specifies the array of offsets used for deriving the variable qP, as specified 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 of -63 and 63).

[0455] 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 of 0 and 2 BitDepth -3).

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

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

[0458]

[0459] log2_parallel_merge_level_minus2 plus 2 specifies the value of the variable Log2ParMrgLevel, which is used in the derivation process of spatial Merge candidates as specified in Clause 8.5.2.3, the derivation process of motion vectors and reference indices in the sub-block Merge mode as specified in Clause 8.5.5.2, and controls the invocation of 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 from 0 to CtbLog2SizeY - 2, inclusive of 0 and CtbLog2SizeY - 2. The variable Log2ParMrgLevel is derived as follows:

[0460] Log2ParMrgLevel = log2_parallel_merge_level_minus2 + 2 (68)

[0461] 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.

[0462] sps_dep_quant_enabled_flag being equal to 0 specifies that dependent quantization is disabled for pictures of the reference SPS. sps_dep_quant_enabled_flag being equal to 1 specifies that dependent quantization can be enabled for pictures of the reference SPS.

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

[0464] The sps_virtual_boundaries_enabled_flag being equal to 1 specifies that loop filtering across virtual boundaries can be applied to coded / decoded pictures in CLVS. The sps_virtual_boundaries_enabled_flag being equal to 0 specifies that loop filtering across virtual boundaries is not applied to coded / decoded pictures in CLVS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations.

[0465] The sps_virtual_boundaries_present_flag being equal to 1 specifies that information on virtual boundaries is signaled in the SPS. The sps_virtual_boundaries_present_flag being equal to 0 specifies that information on virtual boundaries is not signaled in the SPS. When one or more virtual boundaries are signaled in the SPS, loop filtering operations across virtual boundaries are disabled in pictures that refer to the SPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations.

[0466] The requirement for bitstream conformance is that when the value of res_change_in_clvs_allowed_flag is equal to 1, the value of sps_virtual_boundaries_present_flag shall be equal to 0.

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

[0468] sps_virtual_boundaries_pos_x[i] specifies the position of the i-th vertical virtual boundary, in units of luma samples divided by 8. The value of sps_virtual_boundaries_pos_x[i] shall be in the range of 1 to Ceil(pic_width_in_luma_samples÷8) - 1 (including 1 and Ceil(pic_width_in_luma_samples÷8) - 1). [Ed.(VD): pic_width_in_luma_samples is in the PPS, not in the SPS.]

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

[0470] 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.

[0471] sps_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary, in units of luma samples divided by 8. The value of sps_virtual_boundaries_pos_y[i] shall be in the range of 1 to Ceil(pic_height_in_luma_samples÷8) - 1 (including 1 and Ceil(pic_height_in_luma_samples÷8) - 1). [Ed.(VD): pic_height_in_luma_samples is in the PPS, not in the SPS.]

[0472] sps_general_hrd_params_present_flag being equal to 1 specifies that the syntax structure general_hrd_parameters() exists in the SPS RBSP syntax structure. sps_general_hrd_params_present_flag being equal to 0 specifies that the syntax structure general_hrd_parameters() does not exist in the SPS RBSP syntax structure.

[0473] The sps_sublayer_cpb_params_present_flag being equal to 1 specifies that the syntax structure old_hrd_parameters() in the SPS RBSP includes the HRD parameters represented by sublayers with TemporalId in the range from 0 to sps_max_sublayers_minus1 (inclusive of 0 and sps_max_sublayers_minus1). The sps_sublayer_cpb_params_present_flag being equal to 0 specifies that the syntax structure ols_hrd_parameters() in the SPS RBSP includes the HRD parameters represented by the sublayer with TemporalId equal to only sps_max_sublayers_minus1. When sps_max_sublayers_minus1 is equal to 0, the value of sps_sublayer_cpb_params_present_flag is inferred to be equal to 0.

[0474] When sps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters represented by sublayers with TemporalId in the range from 0 to sps_max_sublayers_minus1 (inclusive of 0 and sps_max_sublayers_minus1) are inferred to be the same as the HRD parameters represented by the sublayer with TemporalId 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 immediately under the condition "if(general_vcl_hrd_params_present_flag)" in the ols_hrd_parameters syntax structure.

[0475] The field_seq_flag being equal to 1 indicates that the CLVS transmits a picture representing a field. The field_seq_flag being equal to 0 indicates that the CLVS transmits a picture representing a frame. When general_frame_only_constraint_flag is equal to 1, the value of field_seq_flag shall be equal to 0.

[0476] When field_seq_flag is equal to 1, the frame field information SEI message shall be present for each coded picture in the CLVS.

[0477] Note 5 – The specified decoding process does not distinguish between pictures representing fields or frames. Thus, a sequence of pictures representing fields will be coded and decoded with the picture dimensions of a single field. For example, a picture representing a 1080i field typically has a cropped output dimension of 1920x540, and the sequence picture rate typically represents the rate of the source field (usually between 50 and 60 Hz), rather than the source frame rate (usually between 25 and 30 Hz).

[0478] 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.

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

[0480] 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.

[0481] 3.6. PPS Syntax and Semantics

[0482] In the latest VVC draft text, the PPS syntax and semantics are as follows:

[0483]

[0484]

[0485]

[0486]

[0487]

[0488] The PPS RBSP shall be available for the decoding process before being referenced, including in at least one AU with a TemporalId less than or equal to the TemporalId of the PPS NAL unit or provided by external means.

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

[0490] pps_pic_parameter_set_id identifies the PPS that other syntax elements refer to. The value of pps_pic_parameter_set_id shall be in the range of 0 to 63 (including 0 and 63).

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

[0492] Let ppsLayerId be the value of nuh_layer_id of a specific PPS 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 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.

[0493] pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id of the SPS. The value of pps_seq_parameter_set_id shall be in the range of 0 to 15 (including 0 and 15). The value of pps_seq_parameter_set_id shall be the same in all PPSs referred to by coded pictures in the CLVS.

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

[0495] When no_mixed_nalu_types_in_pic_constraint_flag equals 1, the value of mixed_nalu_types_in_pic_flag shall equal 0.

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

[0497] - The slice shall belong to subpicture subpicA for which the value of subpic_treated_as_pic_flag[i] equals 1.

[0498] - The slice shall not belong to a subpicture of picA that contains VCL NAL units with nal_unit_type not equal to nalUnitTypeA.

[0499] - If nalUnitTypeA equals CRA, for all subsequent PUs in CLVS in decoding order and output order after the current picture, neither RefPicList[0] nor RefPicList[1] of the slices in subpicA of these PUs shall include any picture in active entries that is before picA in decoding order.

[0500] - Otherwise (i.e., nalUnitTypeA equals IDR_W_RADL or IDR_N_LP), for all PUs in CLVS in decoding order after the current picture, neither RefPicList[0] nor RefPicList[1] of the slices in subpicA of these PUs shall include any picture in active entries that is before picA in decoding order.

[0501] Note 1 – A value of mixed_nalu_types_in_pic_flag equal to 1 specifies that the picture referred to by the reference PPS contains slices with different NAL unit types, e.g., decoded pictures resulting from sub-picture bitstream merging operations where the encoder must ensure further alignment matching the bitstream structure and the parameters of the original bitstream. An example of such alignment is as follows: When the value of sps_idr_rpl_flag is equal to 0 and the value of mixed_nalu_types_in_pic_flag is equal to 1, the picture referred to by the reference PPS shall not have slices with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.

[0502] pic_width_in_luma_samples specifies the width of each decoded picture referred to by the reference 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.

[0503] 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.

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

[0505] 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.

[0506] The variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC are derived as follows:

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

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

[0509] PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY (71)

[0510] PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY (72)

[0511] PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY (73)

[0512] PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY (74)

[0513] PicSizeInSamplesY =

[0514] pic_width_in_luma_samples * pic_height_in_luma_samples (75)

[0515] PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC (76)

[0516] PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC (77)

[0517] The pps_conformance_window_flag being equal to 1 indicates that the conformance cropping window offset parameter follows the next one in the PPS. The pps_conformance_window_flag being equal to 0 indicates that the conformance cropping window offset parameter does not exist in the PPS.

[0518] The 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 from the decoding process, according to the rectangular region specified in the picture coordinates for output. When the 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.

[0519] The conformance cropping window contains the 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) (including SubWidthC * pps_conf_win_left_offset and 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) (including SubHeightC * pps_conf_win_top_offset and pic_height_in_luma_samples - (SubHeightC * pps_conf_win_bottom_offset + 1)).

[0520] 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 SubHeightC * (pps_conf_win_top_offset + pps_conf_win_bottom_offset) shall be less than pic_height_in_luma_samples.

[0521] 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.

[0522] 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.

[0523] Let ppsA and ppsB be any two PPSs that refer to the same SPS. The requirement for bitstream consistency 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.

[0524] 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, the requirement for bitstream consistency 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.

[0525] When scaling_window_explicit_signalling_flag equals 1, it specifies that the scaling window offset parameter exists in the PPS. When scaling_window_explicit_signalling_flag equals 0, it specifies that the scaling window offset parameter does not exist in the PPS. When res_change_in_clvs_allowed_flag equals 0, the value of scaling_window_explicit_signalling_flag shall equal 0.

[0526] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify the offsets applied to the picture dimensions for scaling ratio calculation. When they do not exist, 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 pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset, respectively.

[0527] 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.

[0528] The variables PicOutputWidthL and PicOutputHeightL are derived as follows:

[0529] PicOutputWidthL = pic_width_in_luma_samples - (78)

[0530] SubWidthC * (scaling_win_right_offset + scaling_win_left_offset)

[0531] PicOutputHeightL = pic_height_in_luma_samples - (79)

[0532] SubWidthC * (scaling_win_bottom_offset + scaling_win_top_offset)

[0533] Make refPicOutputWidthL and refPicOutputHeightL be the PicOutputWidthL and PicOutputHeightL of the reference picture of the current picture referring to this PPS respectively. The requirements for bitstream consistency are that all of the following conditions are met:

[0534] - PicOutputWidthL * 2 shall be greater than or equal to refPicWidthInLumaSamples.

[0535] - PicOutputHeightL * 2 shall be greater than or equal to refPicHeightInLumaSamples.

[0536] - PicOutputWidthL shall be less than or equal to refPicWidthInLumaSamples * 8.

[0537] - PicOutputHeightL shall be less than or equal to refPicHeightInLumaSamples * 8.

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

[0539] - PicOutputHeightL * pic_height_max_in_luma_samples shall be greater than or equal to

[0540] refPicOutputHeightL * (pic_height_in_luma_samples - Max(8, MinCbSizeY)).

[0541] The output_flag_present_flag being equal to 1 indicates that the pic_output_flag syntax element is present in the slice header of the reference PPS. The output_flag_present_flag being equal to 0 indicates that the pic_output_flag syntax element is not present in the slice header of the reference PPS.

[0542] The subpic_id_mapping_in_pps_flag being equal to 1 specifies signalling of sub-picture ID mapping in the PPS. The subpic_id_mapping_in_pps_flag being equal to 0 specifies no signalling of sub-picture ID mapping in the PPS. If the subpic_id_mapping_explicitly_signalled_flag is 0 or the subpic_id_mapping_in_sps_flag is equal to 1, the value of the subpic_id_mapping_in_pps_flag shall be equal to 0. Otherwise (the subpic_id_mapping_explicitly_signalled_flag is equal to 1 and the subpic_id_mapping_in_sps_flag is equal to 0), the value of the subpic_id_mapping_in_pps_flag shall be equal to 1.

[0543] The pps_num_subpics_minus1 shall be equal to the sps_num_subpics_minus1.

[0544] The pps_subpic_id_len_minus1 shall be equal to the sps_subpic_id_len_minus1.

[0545] The 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.

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

[0547]

[0548]

[0549] The requirements for bitstream consistency are that the following two constraints apply:

[0550] - For any two different values i and j in the range from 0 to sps_num_subpics_minus1 (including 0 and sps_num_subpics_minus1), SubpicIdVal[i] shall not be equal to SubpicIdVal[j].

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

[0552] no_pic_partition_flag being equal to 1 specifies that no picture partitioning is applied to each picture of the reference PPS. no_pic_partition_flag being equal to 0 specifies that each picture of the reference PPS can be partitioned into more than one slice or strip.

[0553] The requirement for bitstream consistency is that the value of no_pic_partition_flag shall be the same for all PPSs referred to by the coded pictures within CLVS.

[0554] The 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 shall not be equal to 1.

[0555] pps_log2_ctu_size_minus5 plus 5 specifies the luma coded tree block size of each CTU. pps_log2_ctu_size_minus5 shall be equal to sps_log2_ctu_size_minus5.

[0556] 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 of 0 and PicWidthInCtbsY - 1. When no_pic_partition_flag equals 1, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.

[0557] 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 of 0 and PicHeightInCtbsY - 1. When no_pic_partition_flag equals 1, the value of num_tile_rows_minus1 is inferred to be equal to 0.

[0558] tile_column_width_minus1[i] plus 1 specifies the width of the i-th tile column, in CTBs, where i is in the range of 0 to num_exp_tile_columns_minus1 - 1, inclusive of 0 and num_exp_tile_columns_minus1 - 1. tile_column_width_minus1[num_exp_tile_columns_minus1] is used to derive the widths 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 of 0 and PicWidthInCtbsY - 1. When not present, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY - 1.

[0559] tile_row_height_minus1[i] plus 1 specifies the height of the i-th tile row, in units of CTBs, where i ranges from 0 to num_exp_tile_rows_minus1 - 1 (inclusive of 0 and num_exp_tile_rows_minus1 - 1). tile_row_height_minus1[num_exp_tile_rows_minus1] is used to derive the height of tile rows with indices greater than or equal to num_exp_tile_rows_minus1, as specified in Clause 6.5.1. The value of tile_row_height_minus1[i] shall be in the range from 0 to PicHeightInCtbsY - 1 (inclusive of 0 and PicHeightInCtbsY - 1). When not present, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY - 1.

[0560] rect_slice_flag being 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 being 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.

[0561] single_slice_per_subpic_flag being equal to 1 specifies that each subpicture consists of one and only one rectangular strip. single_slice_per_subpic_flag being equal to 0 specifies that each subpicture may 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.

[0562] num_slices_in_pic_minus1 + 1 specifies the number of rectangular stripes in each picture of the reference PPS. The value of num_slices_in_pic_minus1 shall be in the range of 0 to MaxSlicesPerPicture - 1 (inclusive of 0 and MaxSlicesPerPicture - 1), where MaxSlicesPerPicture is specified in Annex A. When no_pic_partition_flag equals 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0.

[0563] tile_idx_delta_present_flag being equal to 0 specifies that the tile_idx_delta value does not exist in the PPS, and all rectangular stripes in the picture of the reference PPS are specified in raster order according to the process defined in Clause 6.5.1. tile_idx_delta_present_flag being equal to 1 specifies that the tile_idx_delta value may exist in the PPS, and all rectangular stripes in the picture of the reference PPS are specified in the order indicated by the value of tile_idx_delta. When not present, the value of tile_idx_delta_present_flag is inferred to be equal to 0.

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

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

[0566] - If NumTileColumns equals 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.

[0567] - Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred as specified in Clause 6.5.1.

[0568] slice_height_in_tiles_minus1[i] plus 1 specifies the height of the i-th rectangular strip in units of tile rows. The value of slice_height_in_tiles_minus1[i] shall be in the range of 0 to NumTileRows-1 (including 0 and NumTileRows-1).

[0569] When slice_height_in_tiles_minus1[i] does not exist, the following applies:

[0570] - 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.

[0571] - 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].

[0572] num_exp_slices_in_tile[i] specifies the number of explicitly provided strip heights in the current tile that contains more than one rectangular strip. The value of num_exp_slices_in_tile[i] shall be in the range of 0 to RowHeight[tileY]-1 (including 0 and RowHeight[tileY]-1), where tileY is the tile row index containing the i-th strip. When it does not exist, 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 derived to be equal to 1.

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

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

[0575]

[0576] tile_idx_delta[i] specifies the difference between the slice index of the first slice in the i-th rectangular stripe and the slice index of the first slice in the (i + 1)-th rectangular stripe. The value of tile_idx_delta[i] shall be in the range from -NumTilesInPic + 1 to NumTilesInPic - 1 (including -NumTilesInPic + 1 and NumTilesInPic - 1). When it does not exist, the value of tile_idx_delta[i] is inferred to be equal to 0. When it exists, the value of tile_idx_delta[i] shall not be equal to 0.

[0577] loop_filter_across_tiles_enabled_flag being equal to 1 specifies that loop filter operations can be performed across slice boundaries in the picture of the reference PPS. loop_filter_across_tiles_enabled_flag being equal to 0 specifies that loop filter operations are not performed across slice boundaries in the picture of the reference PPS. Loop filter operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When it does not exist, the value of loop_filter_across_tiles_enabled_flag is inferred to be equal to 1.

[0578] The loop_filter_across_slices_enabled_flag being equal to 1 specifies that loop filtering operations can be performed across slice boundaries in pictures that reference the PPS. The loop_filter_across_slices_enabled_flag being equal to 0 specifies that loop filtering operations are not performed across slice boundaries in pictures that reference the PPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of the loop_filter_across_slices_enabled_flag is inferred to be equal to 0.

[0579] The cabac_init_present_flag being equal to 1 specifies that the cabac_init_flag is present in the slice header of the PPS being referenced. The cabac_init_present_flag being equal to 0 specifies that the cabac_init_flag is not present in the slice header of the PPS being referenced.

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

[0581] The rpl1_idx_present_flag being equal to 0 specifies that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] are not present in the PH syntax structure or the slice header of pictures that reference the PPS. The rpl1_idx_present_flag being equal to 1 specifies that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] may be present in the PH syntax structure or the slice header of pictures that reference the PPS.

[0582] init_qp_minus26 plus 26 specifies the initial value of SliceQp Y for each slice of the PPS being referenced. When a non-zero value of ph_qp_delta is decoded, SliceQp YThe initial value is modified at the picture level, or when a non-zero value of slice_qp_delta is decoded, SliceQp Y 's initial value is modified at the slice level. The value of init_qp_minus26 shall be in the range of -(26 + QpBdOffset) to +37 (including -(26 + QpBdOffset) and +37).

[0583] 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 of the reference 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 of the reference PPS, and cu_qp_delta_abs does not exist in the transform unit syntax.

[0584] 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_flag 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.

[0585] pps_cb_qp_offset and pps_cr_qp_offset respectively specify for deriving Qp′ Cb and Qp′ Cr of 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 (including -12 and +12). When ChromaArrayType equals 0, pps_cb_qp_offset and pps_cr_qp_offset are not used in 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.

[0586] The pps_joint_cbcr_qp_offset_present_flag being equal to 1 specifies that pps_joint_cbcr_qp_offset_value and joint_cbcr_qp_offset_list[i] are present in the PPS RBSP syntax structure. The pps_joint_cbcr_qp_offset_present_flag being equal to 0 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 is equal to 0 or sps_joint_cbcr_enabled_flag is equal to 0, the value of pps_joint_cbcr_qp_offset_present_flag shall be equal to 0. When not present, the value of pps_joint_cbcr_qp_offset_present_flag is inferred to be equal to 0.

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

[0588] When pps_slice_chroma_qp_offsets_present_flag equals 1, it indicates 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 indicates 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.

[0589] When pps_cu_chroma_qp_offset_list_enabled_flag equals 1, it indicates 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 of the reference 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 indicates 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 of the reference 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.

[0590] chroma_qp_offset_list_len_minus1 plus 1 specifies the number of the 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 (including 0 and 5).

[0591] cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] specify the offsets used in 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 is equal to 0, joint_cbcr_qp_offset_list[i] does not exist and is inferred to be equal to 0.

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

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

[0594] deblocking_filter_control_present_flag being equal to 1 specifies the presence of deblocking filter control syntax elements in the PPS. deblocking_filter_control_present_flag being equal to 0 specifies the absence of deblocking filter control syntax elements in the PPS.

[0595] The deblocking_filter_override_enabled_flag being equal to 1 specifies the presence of ph_deblocking_filter_override_flag in the PH of the reference PPS or slice_deblocking_filter_override_flag in the slice header of the reference PPS. The deblocking_filter_override_enabled_flag being equal to 0 specifies the absence of ph_deblocking_filter_override_flag in the PH of the reference PPS or slice_deblocking_filter_override_flag in the slice header of the reference PPS. When absent, the value of the deblocking_filter_override_enabled_flag is inferred to be equal to 0.

[0596] The pps_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of the deblocking filter is not applied to slices that reference a PPS in which slice_deblocking_filter_disabled_flag is absent. The pps_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter is applied to slices that reference a PPS in which slice_deblocking_filter_disabled_flag is absent. When absent, the value of the pps_deblocking_filter_disabled_flag is inferred to be equal to 0.

[0597] 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 slices that reference the PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or the slice header of the slice that references 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 of -12 and 12). When absent, the values of both pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[0598] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets of β and tC (divided by 2) for the Cb component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or the slice header of the slices of the reference PPS. The values of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 shall be in the range of -12 to 12 (inclusive of -12 and 12). When not present, the values of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are inferred to be equal to 0.

[0599] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets of β and tC (divided by 2) for the Cr component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or the slice header of the slices of the reference PPS. The values of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 shall be in the range of -12 to 12 (inclusive of -12 and 12). When not present, the values of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are inferred to be equal to 0.

[0600] rpl_info_in_ph_flag being equal to 1 specifies that the reference picture list information exists in the PH syntax structure and not in the slice header of the reference PPS that does not contain the PH syntax structure. rpl_info_in_ph_flag being equal to 0 specifies that the reference picture list information does not exist in the PH syntax structure and may exist in the slice header of the reference PPS that does not contain the PH syntax structure.

[0601] dbf_info_in_ph_flag being equal to 1 specifies that the deblocking filter information exists in the PH syntax structure and not in the slice header of the reference PPS that does not contain the PH syntax structure. dbf_info_in_ph_flag being equal to 0 specifies that the deblocking filter information does not exist in the PH syntax structure and may exist in the slice header of the reference 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.

[0602] 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 of the reference PPS that does not contain 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 of the reference PPS that does not contain the PH syntax structure.

[0603] 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 of the reference PPS that does not contain 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 of the reference PPS that does not contain the PH syntax structure.

[0604] 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 of the reference PPS that does not contain 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 of the reference PPS that does not contain the PH syntax structure. When it does not exist, the value of wp_info_in_ph_flag is inferred to be equal to 0.

[0605] 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 of the reference PPS that does not contain 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 of the reference PPS that does not contain the PH syntax structure.

[0606] 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.

[0607] The pps_ref_wraparound_offset plus (CtbSizeY / MinCbSizeY)+2 specifies the offset used to calculate the horizontal wraparound position, in units of MinCbSizeY luma samples. The value of pps_ref_wraparound_offset shall be in the range from 0 to (pic_width_in_luma_samples / MinCbSizeY)-(CtbSizeY / MinCbSizeY)-2, inclusive of 0 and (pic_width_in_luma_samples / MinCbSizeY)-(CtbSizeY / MinCbSizeY)-2).

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

[0609] picture_header_extension_present_flag being equal to 0 specifies that no picture header extension syntax elements are present in the picture header of the reference PPS. picture_header_extension_present_flag being equal to 1 specifies that picture header extension syntax elements are present in the picture header of the reference PPS. picture_header_extension_present_flag shall be equal to 0 in the bitstream conforming to this version of the specification.

[0610] slice_header_extension_present_flag being equal to 0 specifies that no slice header extension syntax elements are present in the slice headers of the coded pictures of the reference PPS. slice_header_extension_present_flag being equal to 1 specifies that slice header extension syntax elements are present in the slice headers of the coded pictures of the reference PPS. slice_header_extension_present_flag shall be equal to 0 in the bitstream conforming to this version of the specification.

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

[0612] The pps_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 pps_extension_data_flag syntax elements.

[0613] 3.7. APS Syntax and Semantics

[0614] In the latest VVC draft text, the APS syntax and semantics are as follows:

[0615]

[0616]

[0617] The APS RBSP contains the ALF syntax structure, i.e., alf_data().

[0618]

[0619]

[0620]

[0621] The APS RBSP contains the LMCS syntax structure, i.e., lmcs_data().

[0622]

[0623]

[0624] The APS RBSP contains the scaling list data syntax structure, i.e., scaling_list_data().

[0625]

[0626] Each APS RBSP shall be available for the decoding process before being referenced, including in at least one AU with a TemporalId less than or equal to the TemporalId of the coded slice NAL unit that references it or provided by external means.

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

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

[0629] 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 (including 0 and 7).

[0630] 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 (including 0 and 3).

[0631] Let apsLayerId be the value of nuh_layer_id for a particular APS NAL unit, and vclLayerId be the value of nuh_layer_id for a particular VCL NAL unit. A particular VCL NAL unit shall not refer to a particular 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.

[0632] aps_params_type specifies the type of APS parameters carried in the APS, as specified in Table 6.

[0633] Table 6 – APS parameter type codes and types of APS parameters

[0634]

[0635] Regardless of the value of nuh_layer_id, all APS NAL units with a particular value of aps_params_type 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.

[0636] 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 across pictures, and different slices within a picture can refer to different ALF APSs.

[0637] Note 2 – The suffix APS NAL unit associated with a particular VCL NAL unit (where the VCL NAL unit is before the suffix APS NAL unit in decoding order) is not used by the particular VCL NAL unit, but is used by the VCL NAL unit that is after the suffix APS NAL unit in decoding order.

[0638] An aps_extension_flag equal to 0 specifies that no aps_extension_data_flag syntax element is present in the APS RBSP syntax structure. An aps_extension_flag equal to 1 specifies that an aps_extension_data_flag syntax element is present in the APS RBSP syntax structure.

[0639] The 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 the specification. Decoders compliant with this version of the specification shall ignore all aps_extension_data_flag syntax elements.

[0640] An alf_luma_filter_signal_flag equal to 1 specifies that the luma filter set is signaled. An alf_luma_filter_signal_flag equal to 0 specifies that the luma filter set is not signaled.

[0641] An alf_chroma_filter_signal_flag equal to 1 specifies that the chroma filter is signaled. An alf_chroma_filter_signal_flag equal to 0 specifies that the chroma filter is not signaled. When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.

[0642] At least one of the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag shall be equal to 1.

[0643] The variable NumAlfFilters, which specifies the number of different adaptive loop filters, is set to be equal to 25.

[0644] When alf_luma_clip_flag equals 0, it specifies that linear adaptive loop filtering is applied to the luma component. When alf_luma_clip_flag equals 1, it specifies that non-linear adaptive loop filtering can be applied to the luma component.

[0645] alf_luma_num_filters_signalled_minus1 plus 1 specifies the number of categories of adaptive loop filters for which the luma coefficients can be signalled. The value of alf_luma_num_filters_signalled_minus1 shall be in the range from 0 to NumAlfFilters - 1, inclusive (including 0 and NumAlfFilters - 1).

[0646] alf_luma_coeff_delta_idx[filtIdx] specifies the index of the signalled adaptive loop filter luma coefficient delta for the filter category indicated by filtIdx in the range from 0 to NumAlfFilters - 1. When alf_luma_coeff_delta_idx[filtIdx] is absent, it is inferred to be equal to 0. The length of alf_luma_coeff_delta_idx[filtIdx] is Ceil(Log2(alf_luma_num_filters_signalled_minus1 + 1)) bits. The value of alf_luma_coeff_delta_idx[filtIdx] shall be in the range from 0 to alf_luma_num_filters_signalled_minus1, inclusive (including 0 and alf_luma_num_filters_signalled_minus1).

[0647] alf_luma_coeff_abs[sfIdx][j] specifies the absolute value of the j-th coefficient of the signalled luma filter indicated by sfIdx. When alf_luma_coeff_abs[sfIdx][j] is absent, it is inferred to be equal to 0. The value of alf_luma_coeff_abs[sfIdx][j] shall be in the range from 0 to 128, inclusive (including 0 and 128).

[0648] alf_luma_coeff_sign[sfIdx][j] specifies the sign of the j-th luma coefficient of the filter indicated by sfIdx, as follows:

[0649] - If alf_luma_coeff_sign[sfIdx][j] equals 0, the corresponding luma filter coefficient is positive.

[0650] - Otherwise (alf_luma_coeff_sign[sfIdx][j] equals 1), the corresponding luma filter coefficient is negative.

[0651] When alf_luma_coeff_sign[sfIdx][j] does not exist, it is inferred to be equal to 0.

[0652] The variable filtCoeff[sfIdx][j] (where sfIdx = 0..alf_luma_num_filters_signalled_minus1, j = 0..11) is initialized as follows:

[0653] filtCoeff[sfIdx][j] = alf_luma_coeff_abs[sfIdx][j] * (93)

[0654] (1 - 2 * alf_luma_coeff_sign[sfIdx][j])

[0655] Having elements AlfCoeff L [adaptation_parameter_set_id][filtIdx][j] (where filtIdx = 0..NumAlfFilters - 1 and j = 0..11) of the luma filter coefficient AlfCoeff L [adaptation_parameter_set_id] is derived as follows:

[0656] AlfCoeff L [adaptation_parameter_set_id][filtIdx][j] = filtCoeff[alf_luma_coeff_delta_idx[filtIdx]][j] (94)

[0657] The fixed filter coefficient AlfFixFiltCoeff[i][j] (where i = 0..64, j = 0..11) and the filter mapping class AlfClassToFiltMap[m][n] (where m = 0..15 and n = 0..24) are derived as follows:

[0658] AlfFixFiltCoeff = (95)

[0659] {

[0660] {0,0,2,-3,1,-4,1,7,-1,1,-1,5}

[0661] {0,0,0,0,0,-1,0,1,0,0,-1,2}

[0662] {0,0,0,0,0,0,0,1,0,0,0,0}

[0663] {0,0,0,0,0,0,0,0,0,0,-1,1}

[0664] {2,2,-7,-3,0,-5,13,22,12,-3,-3,17}

[0665] {-1,0,6,-8,1,-5,1,23,0,2,-5,10}

[0666] {0,0,-1,-1,0,-1,2,1,0,0,-1,4}

[0667] {0,0,3,-11,1,0,-1,35,5,2,-9,9}

[0668] {0,0,8,-8,-2,-7,4,4,2,1,-1,25}

[0669] {0,0,1,-1,0,-3,1,3,-1,1,-1,3}

[0670] {0,0,3,-3,0,-6,5,-1,2,1,-4,21}

[0671] {-7,1,5,4,-3,5,11,13,12,-8,11,12}

[0672] {-5,-3,6,-2,-3,8,14,15,2,-7,11,16}

[0673] {2,-1,-6,-5,-2,-2,20,14,-4,0,-3,25}

[0674] {3,1,-8,-4,0,-8,22,5,-3,2,-10,29}

[0675] {2,1,-7,-1,2,-11,23,-5,0,2,-10,29}

[0676] {-6,-3,8,9,-4,8,9,7,14,-2,8,9}

[0677] {2,1,-4,-7,0,-8,17,22,1,-1,-4,23}

[0678] {3,0,-5,-7,0,-7,15,18,-5,0,-5,27}

[0679] {2,0,0,-7,1,-10,13,13,-4,2,-7,24}

[0680] {3,3,-13,4,-2,-5,9,21,25,-2,-3,12}

[0681] {-5,-2,7,-3,-7,9,8,9,16,-2,15,12}

[0682] {0,-1,0,-7,-5,4,11,11,8,-6,12,21}

[0683] {3,-2,-3,-8,-4,-1,16,15,-2,-3,3,26}

[0684] {2,1,-5,-4,-1,-8,16,4,-2,1,-7,33}

[0685] {2,1,-4,-2,1,-10,17,-2,0,2,-11,33}

[0686] {1,-2,7,-15,-16,10,8,8,20,11,14,11}

[0687] {2,2,3,-13,-13,4,8,12,2,-3,16,24}

[0688] {1,4,0,-7,-8,-4,9,9,-2,-2,8,29}

[0689] {1,1,2,-4,-1,-6,6,3,-1,-1,-3,30}

[0690] {-7,3,2,10,-2,3,7,11,19,-7,8,10}

[0691] {0,-2,-5,-3,-2,4,20,15,-1,-3,-1,22}

[0692] {3,-1,-8,-4,-1,-4,22,8,-4,2,-8,28}

[0693] {0,3,-14,3,0,1,19,17,8,-3,-7,20}

[0694] {0,2,-1,-8,3,-6,5,21,1,1,-9,13}

[0695] {-4,-2,8,20,-2,2,3,5,21,4,6,1}

[0696] {2,-2,-3,-9,-4,2,14,16,3,-6,8,24}

[0697] {2,1,5,-16,-7,2,3,11,15,-3,11,22}

[0698] {1,2,3,-11,-2,-5,4,8,9,-3,-2,26}

[0699] {0,-1,10,-9,-1,-8,2,3,4,0,0,29}

[0700] {1,2,0,-5,1,-9,9,3,0,1,-7,20}

[0701] {-2,8,-6,-4,3,-9,-8,45,14,2,-13,7}

[0702] {1,-1,16,-19,-8,-4,-3,2,19,0,4,30}

[0703] {1,1,-3,0,2,-11,15,-5,1,2,-9,24}

[0704] {0,1,-2,0,1,-4,4,0,0,1,-4,7}

[0705] {0,1,2,-5,1,-6,4,10,-2,1,-4,10}

[0706] {3,0,-3,-6,-2,-6,14,8,-1,-1,-3,31}

[0707] {0,1,0,-2,1,-6,5,1,0,1,-5,13}

[0708] {3,1,9,-19,-21,9,7,6,13,5,15,21}

[0709] {2,4,3,-12,-13,1,7,8,3,0,12,26}

[0710] {3,1,-8,-2,0,-6,18,2,-2,3,-10,23}

[0711] {1,1,-4,-1,1,-5,8,1,-1,2,-5,10}

[0712] {0, 1, -1, 0, 0, -2, 2, 0, 0, 1, -2, 3}

[0713] {1, 1, -2, -7, 1, -7, 14, 18, 0, 0, -7, 21}

[0714] {0, 1, 0, -2, 0, -7, 8, 1, -2, 0, -3, 24}

[0715] {0, 1, 1, -2, 2, -10, 10, 0, -2, 1, -7, 23}

[0716] {0, 2, 2, -11, 2, -4, -3, 39, 7, 1, -10, 9}

[0717] {1, 0, 13, -16, -5, -6, -1, 8, 6, 0, 6, 29}

[0718] {1, 3, 1, -6, -4, -7, 9, 6, -3, -2, 3, 33}

[0719] {4, 0, -17, -1, -1, 5, 26, 8, -2, 3, -15, 30}

[0720] {0, 1, -2, 0, 2, -8, 12, -6, 1, 1, -6, 16}

[0721] {0, 0, 0, -1, 1, -4, 4, 0, 0, 0, -3, 11}

[0722] {0, 1, 2, -8, 2, -6, 5, 15, 0, 2, -7, 9}

[0723] {1, -1, 12, -15, -7, -2, 3, 6, 6, -1, 7, 30}

[0724] },

[0725] AlfClassToFiltMap = (96)

[0726] {

[0727] {8, 2, 2, 2, 3, 4, 53, 9, 9, 52, 4, 4, 5, 9, 2, 8, 10, 9, 1, 3, 39, 39, 10, 9, 52}

[0728] {11, 12, 13, 14, 15, 30, 11, 17, 18, 19, 16, 20, 20, 4, 53, 21, 22, 23, 14, 25, 26, 26, 27, 28, 10}

[0729] {16,12,31,32,14,16,30,33,53,34,35,16,20,4,7,16,21,36,18,19,21,26,37,38,39}

[0730] {35,11,13,14,43,35,16,4,34,62,35,35,30,56,7,35,21,38,24,40,16,21,48,57,39}

[0731] {11,31,32,43,44,16,4,17,34,45,30,20,20,7,5,21,22,46,40,47,26,48,63,58,10}

[0732] {12,13,50,51,52,11,17,53,45,9,30,4,53,19,0,22,23,25,43,44,37,27,28,10,55}

[0733] {30,33,62,51,44,20,41,56,34,45,20,41,41,56,5,30,56,38,40,47,11,37,42,57,8}

[0734] {35,11,23,32,14,35,20,4,17,18,21,20,20,20,4,16,21,36,46,25,41,26,48,49,58}

[0735] {12,31,59,59,3,33,33,59,59,52,4,33,17,59,55,22,36,59,59,60,22,36,59,25,55}

[0736] {31,25,15,60,60,22,17,19,55,55,20,20,53,19,55,22,46,25,43,60,37,28,10,55,52}

[0737] {12,31,32,50,51,11,33,53,19,45,16,4,4,53,5,22,36,18,25,43,26,27,27,28,10}

[0738] {5,2,44,52,3,4,53,45,9,3,4,56,5,0,2,5,10,47,52,3,63,39,10,9,52}

[0739] {12,34,44,44,3,56,56,62,45,9,56,56,7,5,0,22,38,40,47,52,48,57,39,10,9}

[0740] {35,11,23,14,51,35,20,41,56,62,16,20,41,56,7,16,21,38,24,40,26,26,42,57,39}

[0741] {33,34,51,51,52,41,41,34,62,0,41,41,56,7,5,56,38,38,40,44,37,42,57,39,10}

[0742] {16,31,32,15,60,30,4,17,19,25,22,20,4,53,19,21,22,46,25,55,26,48,63,58,55}

[0743] },

[0744] The requirement for bitstream consistency is that the value of AlfCoeff L [adaptation_parameter_set_id][filtIdx][j] (where filtIdx = 0..NumAlfFilters-1 and j = 0..11) should be in the range of -2 7 to 2 7 -1 (including -2 7 and 2 7 -1).

[0745] alf_luma_clip_idx[sfIdx][j] specifies the clipping index of the clipping value to be used before multiplying the j-th coefficient of the luma filter signalled by sfIdx. The requirement for bitstream consistency is that the value of alf_luma_clip_idx[sfIdx][j] (where sfIdx = 0..alf_luma_num_filters_signalled_minus1 and j = 0..11) should be in the range of 0 to 3 (including 0 and 3).

[0746] The luma filter clipping value AlfClip with elements AlfClip L [adaptation_parameter_set_id][filtIdx][j] (where filtIdx = 0..NumAlfFilters-1 and j = 0..11) L[adaptation_parameter_set_id] is derived according to BitDepth and as specified in Table 8 with clipIdx set to be equal to alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j].

[0747] When alf_chroma_clip_flag is equal to 0, it specifies that linear adaptive loop filtering is applied to the chrominance components; when alf_chroma_clip_flag is equal to 1, it specifies that non-linear adaptive loop filtering is applied to the chrominance components. When it does not exist, alf_chroma_clip_flag is inferred to be equal to 0.

[0748] alf_chroma_num_alt_filters_minus1 plus 1 specifies the number of alternative filters for the chrominance components. The value of alf_chroma_num_alt_filters_minus1 should be in the range from 0 to 7 (including 0 and 7).

[0749] alf_chroma_coeff_abs[altIdx][j] specifies the absolute value of the j-th chroma filter coefficient of the alternative chroma filter with index altIdx. When alf_chroma_coeff_abs[altIdx][j] does not exist, it is inferred to be equal to 0. The value of alf_chroma_coeff_abs[sfIdx][j] should be in the range from 0 to 128 (including 0 and 128).

[0750] alf_chroma_coeff_sign[altIdx][j] specifies the sign of the j-th chroma filter coefficient of the alternative chroma filter with index altIdx as follows:

[0751] - If alf_chroma_coeff_sign[altIdx][j] is equal to 0, the corresponding chroma filter coefficient is positive.

[0752] - Otherwise (alf_chroma_coeff_sign[altIdx][j] is equal to 1), the corresponding chroma filter coefficient is negative.

[0753] When alf_chroma_coeff_sign[altIdx][j] does not exist, it is inferred to be equal to 0.

[0754] Having elements AlfCoeff CThe chroma filter coefficients AlfCoeff of [[adaptation_parameter_set_id]][altIdx][j] (where altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5) C [[adaptation_parameter_set_id]][altIdx] is derived as follows:

[0755] AlfCoeff C [[adaptation_parameter_set_id]][altIdx][j] = alf_chroma_coeff_abs[altIdx][j] * (97)

[0756] (1 - 2 * alf_chroma_coeff_sign[altIdx][j])

[0757] The requirement for bitstream consistency is that AlfCoeff C the value of [[adaptation_parameter_set_id]][altIdx][j] (where altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5) should be in the range of -2 7 to 2 7 - 1 (including -2 7 and 2 7 - 1).

[0758] alf_cc_cb_filter_signal_flag equal to 1 signals the cross-component filter for the Cb color component. alf_cc_cb_filter_signal_flag equal to 0 does not signal the cross-component filter for the Cb color component. When ChromaArrayType is equal to 0, alf_cc_cb_filter_signal_flag should be equal to 0.

[0759] alf_cc_cb_filters_signalled_minus1 plus 1 specifies the number of cross-component filters for the Cb color component signaled in the current ALFAPS. The value of alf_cc_cb_filters_signalled_minus1 should be in the range of 0 to 3 (including 0 and 3).

[0760] alf_cc_cb_mapped_coeff_abs[k][j] specifies the absolute value of the j-th mapped coefficient of the k-th cross-component filter signaled for the Cb color component. When alf_cc_cb_mapped_coeff_abs[k][j] is not present, it is inferred to be equal to 0.

[0761] alf_cc_cb_coeff_sign[k][j] specifies the sign of the j-th coefficient of the k-th cross-component filter signaled for the Cb color component, as follows:

[0762] - If alf_cc_cb_coeff_sign[k][j] is equal to 0, the corresponding cross-component filter coefficient is positive.

[0763] - Otherwise (alf_cc_cb_sign[k][j] is equal to 1), the corresponding cross-component filter coefficient is negative.

[0764] When alf_cc_cb_coeff_sign[k][j] is not present, it is inferred to be equal to 0.

[0765] The k-th cross-component filter coefficient CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] (where j = 0..6) is derived as follows:

[0766] - If alf_cc_cb_mapped_coeff_abs[k][j] is equal to 0, then CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] is set to be equal to 0.

[0767] - Otherwise, CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] is set to be equal to (1 - 2 * alf_cc_cb_coeff_sign[k][j]) * 2 alf_cc_cb_mapped_coeff_abs[k][j]-1 .

[0768] When alf_cc_cr_filter_signal_flag equals 1, it specifies that the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag equals 0, it specifies that the cross-component filter for the Cr color component is not signaled. When ChromaArrayType equals 0, alf_cc_cr_filter_signal_flag shall equal 0.

[0769] alf_cc_cr_filters_signalled_minus1 plus 1 specifies the number of cross-component filters for the Cr color component signaled in the current ALF APS. The value of alf_cc_cr_filters_signalled_minus1 shall be in the range of 0 to 3 (inclusive of 0 and 3).

[0770] alf_cc_cr_mapped_coeff_abs[k][j] specifies the absolute value of the j-th mapped coefficient of the k-th cross-component filter signaled for the Cr color component. When alf_cc_cr_mapped_coeff_abs[k][j] does not exist, it is inferred to be equal to 0.

[0771] alf_cc_cr_coeff_sign[k][j] specifies the sign of the j-th coefficient of the k-th cross-component filter signaled for the Cr color component, as follows:

[0772] - If alf_cc_cr_coeff_sign[k][j] equals 0, the corresponding cross-component filter coefficient is positive.

[0773] - Otherwise (alf_cc_cr_sign[k][j] equals 1), the corresponding cross-component filter coefficient is negative.

[0774] When alf_cc_cr_coeff_sign[k][j] does not exist, it is inferred to be equal to 0.

[0775] The k-th cross-component filter coefficient CcAlfApsCoeff Cr [adaptation_parameter_set_id][k][j] (where j = 0..6) is derived as follows:

[0776] - If alf_cc_cr_mapped_coeff_abs[k][j] equals 0, then CcAlfApsCoeff Cr[adaptation_parameter_set_id][k][j] is set to be equal to 0.

[0777] - Otherwise, CcAlfApsCoeff Cr [adaptation_parameter_set_id][k][j] is set to be equal to (1 - 2 * alf_cc_cr_coeff_sign[k][j]) * 2 alf_cc_cr_mapped_coeff_abs[k][j]-1 .

[0778] alf_chroma_clip_idx[altIdx][j] specifies the clipping index of the clipping value to be used before multiplying the j-th coefficient of the alternative chroma filter with index altIdx. The requirement for bitstream conformance is that the value of alf_chroma_clip_idx[altIdx][j] (where altIdx = 0..alf_chroma_num_alt_filters_minus1, j = 0..5) should be in the range of 0 to 3 (including 0 and 3).

[0779] Having elements AlfClip C The chroma filter clipping value AlfClip of [adaptation_parameter_set_id][altIdx][j] (where altIdx = 0..alf_chroma_num_alt_filters_minus1, j = 0..5) C [adaptation_parameter_set_id][altIdx] is derived according to BitDepth and clipIdx which is set to be equal to alf_chroma_clip_idx[altIdx][j] as specified in Table 8.

[0780] Table 8 - Specification of AlfClip according to BitDepth and clipIdx

[0781]

[0782] lmcs_min_bin_idx specifies the minimum binary bit index to be used in the luminance mapping with chroma scaling construction process. The value of lmcs_min_bin_idx should be in the range of 0 to 15 (including 0 and 15).

[0783] lmcs_delta_max_bin_idx specifies the delta value between 15 and the maximum binary bit index LmcsMaxBinIdx used in the luminance mapping with chroma scaling construction process. The value of lmcs_delta_max_bin_idx shall be in the range from 0 to 15 (including 0 and 15). The value of LmcsMaxBinIdx is set to be equal to 15 - lmcs_delta_max_bin_idx. The value of LmcsMaxBinIdx shall be greater than or equal to lmcs_min_bin_idx.

[0784] lmcs_delta_cw_prec_minus1 plus 1 specifies the number of bits used for the representation of the syntax lmcs_delta_abs_cw[i]. The value of lmcs_delta_cw_prec_minus1 shall be in the range from 0 to BitDepth - 2 (including 0 and BitDepth - 2).

[0785] lmcs_delta_abs_cw[i] specifies the absolute delta codeword value of the i-th binary bit.

[0786] lmcs_delta_sign_cw_flag[i] specifies the sign of the variable lmcsDeltaCW[i] as follows:

[0787] - If lmcs_delta_sign_cw_flag[i] is equal to 0, then lmcsDeltaCW[i] is positive.

[0788] - Otherwise (lmcs_delta_sign_cw_flag[i] is not equal to 0), lmcsDeltaCW[i] is negative.

[0789] When lmcs_delta_sign_cw_flag[i] does not exist, it is inferred to be equal to 0.

[0790] The variable OrgCW is derived as follows:

[0791] OrgCW = (1 << BitDepth) / 16 (98)

[0792] The variable lmcsDeltaCW[i] (where i = lmcs_min_bin_idx..LmcsMaxBinIdx) is derived as follows:

[0793] lmcsDeltaCW[i] =

[0794] (1 - 2 * lmcs_delta_sign_cw_flag[i]) * lmcs_delta_abs_cw[i] (99)

[0795] The variable lmcsCW[i] is derived as follows:

[0796] - For i = 0..lmcs_min_bin_idx - 1, lmcsCW[i] is set to be equal to 0.

[0797] - For i = lmcs_min_bin_idx..LmcsMaxBinIdx, the following applies:

[0798] lmcsCW[i] = OrgCW + lmcsDeltaCW[i] (100)

[0799] The value of lmcsCW[i] shall be in the range of (OrgCW >> 3) to (OrgCW << 3 - 1) (including (OrgCW >> 3) and (OrgCW << 3 - 1)).

[0800] - For i = LmcsMaxBinIdx + 1..15, lmcsCW[i] is set to be equal to 0.

[0801] The requirement for bitstream consistency is that the following condition is true:

[0802]

[0803] The variable InputPivot[i] (where i = 0..16) is derived as follows:

[0804] InputPivot[i] = i * OrgCW (102)

[0805] The variables LmcsPivot[i] (where i = 0..16), the variables ScaleCoeff[i] and InvScaleCoeff[i] (where i = 0..15) are derived as follows:

[0806]

[0807] The requirement for bitstream consistency is that for i = lmcs_min_bin_idx..LmcsMaxBinIdx, when the value of LmcsPivot[i] is not a multiple of 1 << (BitDepth - 5), the value of (LmcsPivot[i] >> (BitDepth - 5)) shall not be equal to the value of (LmcsPivot[i + 1] >> (BitDepth - 5)).

[0808] The lmcs_delta_abs_crs specifies the absolute codeword value of the variable lmcsDeltaCrs. The value of lmcs_delta_abs_crs shall be in the range of 0 to 7 (including 0 and 7). When it does not exist, lmcs_delta_abs_crs is inferred to be equal to 0.

[0809] The lmcs_delta_sign_crs_flag specifies the sign of the variable lmcsDeltaCrs. When it does not exist, lmcs_delta_sign_crs_flag is inferred to be equal to 0.

[0810] The variable lmcsDeltaCrs is derived as follows:

[0811] lmcsDeltaCrs = (1 - 2 * lmcs_delta_sign_crs_flag) * lmcs_delta_abs_crs (104)

[0813] The requirement for bitstream consistency is that when lmcsCW[i] is not equal to 0, (lmcsCW[i] + lmcsDeltaCrs) shall be in the range of (OrgCW >> 3) to ((OrgCW << 3) - 1) (including (OrgCW >> 3) and ((OrgCW << 3) - 1)).

[0814] The variable ChromaScaleCoeff[i] (where i = 0...15) is derived as follows:

[0815]

[0816] scaling_matrix_for_lfnst_disabled_flag being equal to 1 specifies that the scaling matrix shall not be applied to blocks coded using LFNST. scaling_matrix_for_lfnst_disabled_flag being equal to 0 specifies that the scaling matrix may be applied to blocks coded using LFNST.

[0817] The scaling_list_chroma_present_flag being equal to 1 specifies that the chroma scaling list is present in scaling_list_data(). The scaling_list_chroma_present_flag being equal to 0 specifies that the chroma scaling list is not present in scaling_list_data(). The requirement for bitstream conformance is that when ChromaArrayType is equal to 0, the scaling_list_chroma_present_flag shall be equal to 0, and when ChromaArrayType is not equal to 0, the scaling_list_chroma_present_flag shall be equal to 1.

[0818] The scaling_list_copy_mode_flag[id] being equal to 1 specifies that the value of the scaling list is the same as the value of the reference scaling list. The reference scaling list is specified by scaling_list_pred_id_delta[id]. The scaling_list_copy_mode_flag[id] being equal to 0 specifies the existence of scaling_list_pred_mode_flag.

[0819] The scaling_list_pred_mode_flag[id] being equal to 1 specifies that the value of the scaling list can be predicted from the reference scaling list. The reference scaling list is specified by scaling_list_pred_id_delta[id]. The scaling_list_pred_mode_flag[id] being equal to 0 specifies that the value of the scaling list is signaled explicitly. When not present, the value of scaling_list_pred_mode_flag[id] is inferred to be equal to 0.

[0820] scaling_list_pred_id_delta[id] specifies the reference scaling list used to derive the predicted scaling matrix ScalingMatrixPred[id]. When not present, the value of scaling_list_pred_id_delta[id] is inferred to be equal to 0. The value of scaling_list_pred_id_delta[id] shall be in the range of 0 to maxIdDelta, where maxIdDelta is derived according to id as follows:

[0821] maxIdDelta = (id < 2)? id : ((id < 8)? (id - 2) : (id - 8)) (106)

[0822] The variables refId and matrixSize are derived as follows:

[0823] refId = id - scaling_list_pred_id_delta[id] (107)

[0824] matrixSize = (id < 2)? 2 : ((id < 8)? 4 : 8) (108)

[0825] (matrixSize) x (matrixSize) array ScalingMatrixPred[x][y] (where x = 0..matrixSize - 1, y = 0..matrixSize - 1) and the variable ScalingMatrixDCPred are derived as follows:

[0826] - When both scaling_list_copy_mode_flag[id] and scaling_list_pred_mode_flag[id] are equal to 0, all elements of ScalingMatrixPred are set to be equal to 8, and the value of ScalingMatrixDCPred is set to be equal to 8.

[0827] - Otherwise, when scaling_list_pred_id_delta[id] is equal to 0, all elements of ScalingMatrixPred are set to be equal to 16, and ScalingMatrixDCPred is set to be equal to 16.

[0828] - Otherwise (scaling_list_copy_mode_flag[id] or scaling_list_pred_mode_flag[id] is equal to 1, and scaling_list_pred_id_delta[id] is greater than 0), ScalingMatrixPred is set to be equal to ScalingMatrixRec[refId], and the following applies to ScalingMatrixDCPred:

[0829] - If refId is greater than 13, ScalingMatrixDCPred is set to be equal to ScalingMatrixDCRec[refId - 14].

[0830] - Otherwise (refId is less than or equal to 13), ScalingMatrixDCPred is set to be equal to ScalingMatrixPred[0][0].

[0831] When id is greater than 13, scaling_list_dc_coef[id - 14] is used to derive the value of variable ScalingMatrixDC[id - 14] as follows:

[0832] ScalingMatrixDCRec[id - 14] = (ScalingMatrixDCPred + scaling_list_dc_coef[id - 14]) & 255 (109)

[0833] When it does not exist, the value of scaling_list_dc_coef[id - 14] is inferred to be equal to 0. The value of scaling_list_dc_coef[id–14] should be in the range of -128 to 127 (including -128 and 127). The value of ScalingMatrixDCRec[id - 14] should be greater than 0.

[0834] scaling_list_delta_coef[id][i] specifies the difference between the current matrix coefficient ScalingList[id][i] and the previous matrix coefficient ScalingList[id][i - 1] when scaling_list_copy_mode_flag[id] is equal to 0. The value of scaling_list_delta_coef[id][i] should be in the range of -128 to 127 (including -128 and 127). When scaling_list_copy_mode_flag[id] is equal to 1, all elements of ScalingList[id] are set to be equal to 0.

[0835] (matrixSize)x(matrixSize) array ScalingMatrixRec[id] is derived as follows:

[0836] ScalingMatrixRec[id][x][y] = (ScalingMatrixPred[x][y] + ScalingList[id][k]) & 255 (110)

[0837] where k = 0..(matrixSize * matrixSize - 1),

[0838] x =

[0839] DiagScanOrder[Log2(matrixSize)][Log2(matrixSize)][k][0], and

[0840] y =

[0841] DiagScanOrder[Log2(matrixSize)][Log2(matrixSize)][k][1]

[0842] The value of ScalingMatrixRec[id][x][y] should be greater than 0.

[0843] 3.8. PH Syntax and Semantics

[0844] In the latest VVC draft text, the PH syntax and semantics are as follows:

[0845]

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

[0847]

[0848]

[0849]

[0850]

[0851]

[0852]

[0853] The PH syntax structure contains information common to all slices of the coded picture associated with the PH syntax structure.

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

[0855] gdr_pic_flag being equal to 1 specifies that the picture associated with the PH is a GDR picture. gdr_pic_flag being equal to 0 specifies that the picture associated with the PH is not a GDR picture. When absent, 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 should be equal to 0.

[0856] The ph_inter_slice_allowed_flag being equal to 0 specifies that all coded slices of the picture have a slice_type equal to 2. The ph_inter_slice_allowed_flag being equal to 1 specifies that there may or may not be one or more coded slices in the picture with a slice_type equal to 0 or 1.

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

[0858] Note 1 – For bitstreams for which sub-picture based bitstream merging should be performed without changing the PH NAL units, the encoder is expected to set the values of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag equal to 1.

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

[0860] The ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id of the PPS being used. The value of ph_pic_parameter_set_id shall be in the range from 0 to 63, inclusive (including 0 and 63).

[0861] The requirement for bitstream conformance is that the value of the TemporalId of the PH shall be greater than or equal to the value of the TemporalId of the PPS having a pps_pic_parameter_set_id equal to ph_pic_parameter_set_id.

[0862] ph_pic_order_cnt_lsb specifies the picture order count of the current picture modulo MaxPicOrderCntLsb. 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 (including 0 and MaxPicOrderCntLsb - 1).

[0863] no_output_of_prior_pics_flag affects the output of prior decoded pictures in the DPB after decoding a CLVSS picture that is not the first picture in the bitstream as specified in Annex C.

[0864] recovery_poc_cnt specifies the recovery point of the decoded pictures in output order. If the current picture is a GDR picture associated with PH, and there is a picture picA in the CLVS with a PicOrderCntVal equal to the value of PicOrderCntVal of the current GDR picture plus recovery_poc_cnt that is after the current GDR picture in decoding order, then picture picA is called the recovery point picture. Otherwise, the first picture in output order with a PicOrderCntVal greater than the value of PicOrderCntVal of the current picture plus recovery_poc_cnt is called the recovery point picture. In 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 (including 0 and MaxPicOrderCntLsb - 1).

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

[0866] RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (82)

[0867] 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 decoded picture and subsequent decoded pictures in output order exactly match the corresponding pictures generated by starting the decoding process from the prior IRAP picture (when present) that is before the associated GDR picture in decoding order.

[0868] ph_extra_bit[i] can be equal to 1 or 0. The decoder conforming to this version of the specification shall ignore the value of ph_extra_bit[i]. Its value does not affect the profile specified in this version of the specification for the decoder.

[0869] 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.

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

[0871] 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.

[0872] ph_num_alf_aps_ids_luma specifies the number of ALF APSs referred to by the slices associated with the PH.

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

[0874] 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 ph_alf_aps_id_luma[i] shall be equal to 1.

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

[0876] ph_alf_chroma_idc equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. ph_alf_chroma_idc equal to 1 specifies that the adaptive loop filter is applied to the Cb color component. ph_alf_chroma_idc equal to 2 specifies that the adaptive loop filter is applied to the Cr color component. ph_alf_chroma_idc equal to 3 specifies 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.

[0877] 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.

[0878] The value of alf_chroma_filter_signal_flag of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma shall be equal to 1.

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

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

[0881] The ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS that references the Cb color component of the slices associated with the PH.

[0882] The value of the 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.

[0883] The TemporalId 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 less than or equal to the TemporalId of the picture associated with the PH.

[0884] The ph_cc_alf_cr_enabled_flag being equal to 1 specifies that the cross-component filter for the Cr color component is enabled for all slices associated with the PH and can be applied to the Cr color component in the slices. The ph_cc_alf_cr_enabled_flag being equal to 0 specifies that the cross-component filter for the Cr color component can be disabled for one, more than one, or all slices associated with the PH. When not present, the ph_cc_alf_cr_enabled_flag is inferred to be equal to 0.

[0885] The ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS that references the Cr color component of the slices associated with the PH.

[0886] The value of the 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.

[0887] The TemporalId 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 less than or equal to the TemporalId of the picture associated with the PH.

[0888] The ph_lmcs_enabled_flag being equal to 1 specifies that luminance mapping and chrominance scaling are enabled for all slices associated with the PH. The ph_lmcs_enabled_flag being equal to 0 specifies that luminance mapping and chrominance scaling are disabled for one, more than one, or all slices associated with the PH. When not present, the value of the ph_lmcs_enabled_flag is inferred to be equal to 0.

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

[0890] The ph_chroma_residual_scale_flag being equal to 1 specifies that chrominance residual scaling is enabled for all slices associated with the PH. The ph_chroma_residual_scale_flag being equal to 0 specifies that chrominance residual scaling may be disabled for one, more than one, or all slices associated with the PH. When the ph_chroma_residual_scale_flag is not present, it is inferred to be equal to 0.

[0891] The ph_scaling_list_present_flag being equal to 1 specifies that the scaling list data for the slices associated with the PH is derived based on the scaling list data contained in the referenced scaling list APS. The ph_scaling_list_present_flag being equal to 0 specifies that the scaling list data for the slices associated with the PH is set to be equal to 16. When not present, the value of the ph_scaling_list_present_flag is inferred to be equal to 0.

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

[0893] The ph_virtual_boundaries_present_flag being equal to 1 specifies that information on virtual boundaries is signaled in the PH. The ph_virtual_boundaries_present_flag being equal to 0 specifies that information on virtual boundaries is not signaled in the PH. When one or more virtual boundaries are signaled in the PH, loop filtering operations across virtual boundaries in the picture are disabled. 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.

[0894] The 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.

[0895] The variable VirtualBoundariesPresentFlag is derived as follows:

[0896]

[0897] 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.

[0898] The variable NumVerVirtualBoundaries is derived as follows:

[0899]

[0900]

[0901] 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 from 1 to Ceil(pic_width_in_luma_samples÷8)-1 (including 1 and Ceil(pic_width_in_luma_samples÷8)-1).

[0902] The list of positions of the specified vertical virtual boundaries, VirtualBoundariesPosX[i] (where i ranges from 0 to NumVerVirtualBoundaries - 1, inclusive of 0 and NumVerVirtualBoundaries - 1), in units of luma samples, is derived as follows:

[0903]

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

[0905] 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.

[0906] The parameter NumHorVirtualBoundaries is derived as follows:

[0907]

[0908] 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.

[0909] 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 from 1 to Ceil(pic_height_in_luma_samples÷8) - 1, inclusive of 1 and Ceil(pic_height_in_luma_samples÷8) - 1).

[0910] The list of positions of the specified horizontal virtual boundaries, VirtualBoundariesPosY[i] (where i ranges from 0 to NumHorVirtualBoundaries - 1, inclusive of 0 and NumHorVirtualBoundaries - 1), in units of luma samples, is derived as follows:

[0911]

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

[0913] The pic_output_flag affects the decoded picture output and removal process as specified in Annex C. When the pic_output_flag is not present, it is inferred to be equal to 1.

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

[0915] The ph_log2_diff_min_qt_min_cb_intra_slice_luma specifies the difference between the base-2 logarithm of the minimum size in luma samples of a luma leaf block resulting from the quadtree partitioning of a CTU and the base-2 logarithm of the minimum decoded block size in luma samples of a luma CU in a slice with slice_type equal to 2 (I) 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 (including 0 and CtbLog2SizeY - MinCbLog2SizeY). 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.

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

[0917] 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) in the luma samples of the luma coding blocks that can be partitioned using binary partitioning and the minimum size (width or height) in the luma samples of the luma leaf blocks generated from the quadtree partitioning of the CTUs in the slice with slice_type associated with PH 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 (including 0 and CtbLog2SizeY - MinQtLog2SizeIntraY). 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.

[0918] 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 be partitioned using 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 from 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive of 0 and CtbLog2SizeY - MinQtLog2SizeIntraY. When not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_luma.

[0919] ph_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the difference between the base-2 logarithm of the minimum size of the luma samples in a chroma leaf block resulting from the quadtree partitioning of a chroma CTU where treeType is equal to DUAL_TREE_CHROMA and the base-2 logarithm of the minimum coding block size of the luma samples in a chroma CU where treeType is 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_min_qt_min_cb_intra_slice_chroma shall be in the range from 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive of 0 and CtbLog2SizeY - MinCbLog2SizeY. 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_min_cb_intra_slice_chroma.

[0920] ph_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchical depth of chroma coding units generated from a multi-type tree partition of chroma quadtree leaves 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_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (including 0 and 2*(CtbLog2SizeY - MinCbLog2SizeY)). 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.

[0921] 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 in a chroma coding block that can be partitioned using binary partitioning and the minimum size (width or height) of the luma samples in a chroma leaf block generated from a quadtree partition of a chroma CTU 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 (including 0 and CtbLog2SizeY - MinQtLog2SizeIntraC). 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.

[0922] ph_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the difference between the maximum size (width or height) in terms of base-2 logarithm of the luma samples of the chroma coding blocks that can be partitioned using 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 the 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 (including 0 and CtbLog2SizeY - MinQtLog2SizeIntraC). 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.

[0923] ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of the coding units in the intra slice that carry 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) (including 0 and 2 * (CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma)).

[0924] When not present, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.

[0925] ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of the coding units in an intra slice that conveys the 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 of 0 and 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma).

[0926] When not present, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.

[0927] ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the log2 of the minimum size of the luma samples in the luma leaf blocks resulting from the quadtree partitioning of the CTU and the log2 of the minimum luma coding block size of the luma CUs in a slice associated with a PH with slice_type 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 of 0 and CtbLog2SizeY - MinCbLog2SizeY. 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_inter_slice.

[0928] ph_max_mtt_hierarchy_depth_inter_slice specifies the maximum hierarchical depth of the coding tree units generated from the multi-type tree partition 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) (including 0 and 2*(CtbLog2SizeY - MinCbLog2SizeY)). When absent, the value of ph_max_mtt_hierarchy_depth_inter_slice is inferred to be equal to sps_max_mtt_hierarchy_depth_inter_slice.

[0929] ph_log2_diff_max_bt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum size (width or height) in the luma samples of the luma coding blocks that can be partitioned using binary partitioning and the minimum size (width or height) in the luma samples of the luma leaf blocks generated from the quadtree partition 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 (including 0 and CtbLog2SizeY - MinQtLog2SizeInterY). When 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.

[0930] ph_log2_diff_max_tt_min_qt_inter_slice specifies the difference between the logarithm to the base 2 of the maximum size (width or height) of the luma samples in the luma coding tree blocks that can be partitioned using ternary partitioning and the minimum size (width or height) of the luma samples in the luma leaf blocks resulting from the quadtree partitioning of the CTUs in the slice 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 from 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive of 0 and CtbLog2SizeY - MinQtLog2SizeInterY. When not present, the value of ph_log2_diff_max_tt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_tt_min_qt_inter_slice.

[0931] ph_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding units in the inter slice that conveys 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 from 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice), inclusive of 0 and 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice).

[0932] When not present, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.

[0933] ph_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding unit in the inter slice that transmits the 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 of 0 and 2*(CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice).

[0934] When it is not present, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.

[0935] 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 no temporal motion vector prediction value is 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 in the decoding of the slice associated with PH. When it is not present, 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.

[0936] The maximum number of subblock-based merged MVP candidates, MaxNumSubblockMergeCand, is derived as follows:

[0937]

[0938] The value of MaxNumSubblockMergeCand shall be in the range of 0 to 5, inclusive of 0 and 5.

[0939] ph_collocated_from_l0_flag being equal to 1 specifies that the collocated picture used 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 used for temporal motion vector prediction is derived from reference picture list 1.

[0940] ph_collocated_ref_idx specifies the reference index of the collocated picture used for temporal motion vector prediction.

[0941] When ph_collocated_from_l0_flag is equal to 1, ph_collocated_ref_idx refers to an entry in reference picture list 0, and the value of ph_collocated_ref_idx shall be in the range from 0 to num_ref_entries[0][RplsIdx[0]] - 1 (including 0 and num_ref_entries[0][RplsIdx[0]] - 1).

[0942] 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 shall be in the range from 0 to num_ref_entries[1][RplsIdx[1]] - 1 (including 0 and num_ref_entries[1][RplsIdx[1]] - 1).

[0943] When not present, the value of ph_collocated_ref_idx is inferred to be equal to 0.

[0944] 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.

[0945] The ph_fpel_mmvd_enabled_flag being equal to 1 specifies that the Merge mode with motion vector difference uses integer sample precision in the slice associated with PH. The ph_fpel_mmvd_enabled_flag being equal to 0 specifies that the Merge mode with motion vector difference may use fractional sample precision in the slice associated with PH. When not present, the value of ph_fpel_mmvd_enabled_flag is inferred to be 0.

[0946] The ph_disable_bdof_flag being equal to 1 specifies that the inter - bidirectional prediction based on bidirectional optical flow for inter - prediction is disabled in the slice associated with PH. The ph_disable_bdof_flag being equal to 0 specifies that the inter - bidirectional prediction based on bidirectional optical flow for inter - prediction may or may not be enabled in the slice associated with PH.

[0947] When the ph_disable_bdof_flag is not present, the following applies:

[0948] – If the sps_bdof_enabled_flag is equal to 1, the value of ph_disable_bdof_flag is inferred to be equal to 0.

[0949] – Otherwise (sps_bdof_enabled_flag is equal to 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.

[0950] The ph_disable_dmvr_flag being equal to 1 specifies that the inter - bidirectional prediction based on decoder motion vector refinement is disabled in the slice associated with PH. The ph_disable_dmvr_flag being equal to 0 specifies that the inter - bidirectional prediction based on decoder motion vector refinement may or may not be enabled in the slice associated with PH.

[0951] When the ph_disable_dmvr_flag is not present, the following applies:

[0952] – If the sps_dmvr_enabled_flag is equal to 1, the value of ph_disable_dmvr_flag is inferred to be equal to 0.

[0953] – Otherwise (sps_dmvr_enabled_flag is equal to 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.

[0954] ph_disable_prof_flag being equal to 1 specifies that prediction refinement using optical flow is disabled in the slices associated with PH. ph_disable_prof_flag being equal to 0 specifies that prediction refinement using optical flow may or may not be enabled in the slices associated with PH.

[0955] When ph_disable_prof_flag is not present, the following applies:

[0956] – If sps_affine_prof_enabled_flag is equal to 1, the value of ph_disable_prof_flag is inferred to be equal to 0.

[0957] – Otherwise (sps_affine_prof_enabled_flag is equal to 0), the value of ph_disable_prof_flag is inferred to be equal to 1.

[0958] ph_qp_delta specifies the initial value of the Qp to be used for the coding / decoding blocks in the picture until modified by the value of CuQpDeltaVal in the coding unit layer. Y of.

[0959] When qp_delta_info_in_ph_flag is equal to 1, the initial value of the quantization parameter SliceQp for all slices of the picture Y is derived as follows: Y SliceQp

[0960] SliceQp Y = 26 + init_qp_minus26 + ph_qp_delta (89)

[0961] SliceQp Y shall be in the range of -QpBdOffset to +63 (including -QpBdOffset and +63).

[0962] The ph_joint_cbcr_sign_flag specifies whether the co-located residual samples of the two chrominance components have inverted signs in the transform unit where tu_joint_cbcr_residual_flag[x0][y0] is equal to 1. When tu_joint_cbcr_residual_flag[x0][y0] of the transform unit is equal to 1, ph_joint_cbcr_sign_flag being equal to 0 specifies that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the co-located Cb (or Cr) residual sample, and ph_joint_cbcr_sign_flag being equal to 1 specifies that the sign of each residual sample of the Cr (or Cb) component is given by the inverted sign of the co-located Cb (or Cr) residual sample.

[0963] The ph_sao_luma_enabled_flag being equal to 1 specifies that SAO is enabled for the luma component in all slices associated with PH; the ph_sao_luma_enabled_flag being equal to 0 specifies that SAO for the luma component can be disabled for one, more than one, or all slices associated with PH. When the ph_sao_luma_enabled_flag is absent, it is inferred to be equal to 0.

[0964] The ph_sao_chroma_enabled_flag being equal to 1 specifies that SAO is enabled for the chrominance component in all slices associated with PH; the ph_sao_chroma_enabled_flag being equal to 0 specifies that SAO for the chrominance component can be disabled for one, more than one, or all slices associated with PH. When the ph_sao_chroma_enabled_flag is absent, it is inferred to be equal to 0.

[0965] The ph_dep_quant_enabled_flag being equal to 0 specifies that dependent quantization is disabled for the current picture. The ph_dep_quant_enabled_flag being equal to 1 specifies that dependent quantization is enabled for the current picture. When the ph_dep_quant_enabled_flag is absent, it is inferred to be equal to 0.

[0966] The pic_sign_data_hiding_enabled_flag being equal to 0 specifies that sign bit hiding is disabled for the current picture. The pic_sign_data_hiding_enabled_flag being equal to 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.

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

[0968] 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 the PH. The ph_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter is applied to the slices associated with the PH. When ph_deblocking_filter_disabled_flag is not present, it is inferred to be equal to pps_deblocking_filter_disabled_flag.

[0969] 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 the PH. The values of ph_beta_offset_div2 and ph_tc_offset_div2 should be in the range of -12 to 12 (including -12 and 12). When not present, the values of ph_beta_offset_div2 and ph_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[0970] 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 the PH. The values of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 should be in the range of -12 to 12 (including -12 and 12). When not present, the values of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are inferred to be equal to pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2, respectively.

[0971] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets of β and tC (divided by 2) applied to the Cr component of the slice associated with PH. The values of both ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 shall be in the range of -12 to 12 (including -12 and 12). 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.

[0972] ph_extension_length specifies the length of the PH extension data in bytes, excluding the bits used for signaling ph_extension_length itself. The value of ph_extension_length shall be in the range of 0 to 256 (including 0 and 256). When absent, the value of ph_extension_length is inferred to be equal to 0.

[0973] ph_extension_data_byte can have any value. Decoders compliant with this version of the specification shall ignore the value of ph_extension_data_byte. Its value does not affect the profiles specified in this version of the specification for which the decoder is compliant.

[0974] 3.9.SH Syntax and Semantics

[0975] In the latest VVC draft text, the SH syntax and semantics are as follows:

[0976]

[0977]

[0978]

[0979]

[0980] The variable CuQpDeltaVal, which specifies the difference between the luma quantization parameter of the coding unit containing cu_qp_delta_abs and its prediction, is set to be equal to 0. Specify to be used in determining Qp′ of the coding unit containing cu_chroma_qp_offset_flag Cb 、Qp′ Cr and Qp′ CbCrThe variable CuQpOffset of the value used when quantizing the corresponding value of the quantization parameter Cb , CuQpOffset Cr and CuQpOffset CbCr are all set to be equal to 0.

[0981] picture_header_in_slice_header_flag being equal to 1 specifies that the PH syntax structure exists in the slice header. picture_header_in_slice_header_flag being equal to 0 specifies that the PH syntax structure does not exist in the slice header.

[0982] The requirement for bitstream consistency is that the value of picture_header_in_slice_header_flag should be the same in all coded slices in the CLVS.

[0983] When picture_header_in_slice_header_flag of a coded slice is equal to 1, the requirement for bitstream consistency is that there should be no VCL NAL unit with nal_unit_type equal to PH_NUT in the CLVS.

[0984] When picture_header_in_slice_header_flag is equal to 0, all coded slices in the current picture should have picture_header_in_slice_header_flag equal to 0, and the current PU should have a PH NAL unit.

[0985] slice_subpic_id specifies the sub-picture ID of the sub-picture containing the slice. If slice_subpic_id exists, the value of the variable CurrSubpicIdx is derived such that SubpicIdVal[CurrSubpicIdx] is equal to slice_subpic_id. Otherwise (slice_subpic_id does not exist), CurrSubpicIdx is derived to be equal to 0. The length of slice_subpic_id is sps_subpic_id_len_minus1 + 1 bits.

[0986] slice_address specifies the slice address of the slice. When it does not exist, the value of slice_address is inferred to be equal to 0. When rect_slice_flag is equal to 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be equal to 0.

[0987] If rect_slice_flag is equal to 0, the following applies:

[0988] - The strip address is the raster scan slice index.

[0989] - The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.

[0990] - The value of slice_address shall be in the range from 0 to NumTilesInPic - 1 (including 0 and NumTilesInPic - 1).

[0991] Otherwise (rect_slice_flag is equal to 1), the following applies:

[0992] - The strip address is the sub - picture level strip index of the strip.

[0993] - The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.

[0994] - The value of slice_address shall be in the range from 0 to NumSlicesInSubpic[CurrSubpicIdx] - 1 (including 0 and NumSlicesInSubpic[CurrSubpicIdx] - 1).

[0995] The following constraints apply to the requirements of bit - stream consistency:

[0996] - If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address shall not be equal to the value of slice_address of any other coded strip NAL unit of the same coded picture.

[0997] - Otherwise, a pair of slice_subpic_id and slice_address values shall not be equal to a pair of slice_subpic_id and slice_address values of any other coded strip NAL unit of the same coded picture.

[0998] - The shape of the strips of a picture shall be such that each CTU, when decoded, shall have its entire left boundary and its entire upper boundary composed of the picture boundary or of the boundaries of (one or more) previously decoded CTUs.

[0999] sh_extra_bit[i] can be equal to 1 or 0. The decoder conforming to this version of the specification shall ignore the value of sh_extra_bit[i]. Its value does not affect the profile specified in this version of the specification for the decoder.

[1000] num_tiles_in_slice_minus1 plus 1 (when present) specifies the number of tiles in the slice. The value of num_tiles_in_slice_minus1 shall be in the range of 0 to NumTilesInPic - 1 (including 0 and NumTilesInPic - 1).

[1001] 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 slice (where i ranges from 0 to NumCtusInCurrSlice - 1, including 0 and NumCtusInCurrSlice - 1) are derived as follows:

[1002]

[1003]

[1004] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos are derived as follows:

[1005]

[1006]

[1007] slice_type specifies the coding / decoding type of the slice according to Table 9.

[1008] Table 9 – Associated names with slice_type

[1009] slice_type Name of slice_type 0 B (B band) 1 P (P band) 2 I (I band)

[1010] When not present, the value of slice_type is inferred to be equal to 2.

[1011] 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 (including IDR_W_RADL and CRA_NUT), and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.

[1012] The variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY and MaxMttDepthC are derived as follows:

[1013] - If slice_type is equal to 2 (I), the following applies:

[1014] MinQtLog2SizeY =

[1015] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_luma(119)

[1016] MinQtLog2SizeC =

[1017] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_chroma (120)

[1019] MaxBtSizeY = 1 <<

[1020] (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)

[1025] MaxTtSizeY = 1 <<

[1026] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma) (123)

[1028] MaxTtSizeC = 1 <<

[1029] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma) (124)

[1031] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma (125)

[1032] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma(126)

[1033] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice (127)

[1034] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice (128)

[1036] - Otherwise (slice_type equals 0 (B) or 1 (P)), the following applies:

[1037] MinQtLog2SizeY =

[1038] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (129)

[1039] MinQtLog2SizeC =

[1040] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (130)MaxBtSizeY = 1 <<

[1041] (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice) (131) MaxBtSizeC = 1 <<

[1042] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice) (132)

[1043] MaxTtSizeY = 1 <<

[1044] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice) (133)

[1045] MaxTtSizeC = 1 <<

[1046] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_inter_slice) (134)

[1047] MaxMttDepthY = ph_max_mtt_hierarchy_depth_inter_slice (135)

[1048] MaxMttDepthC = ph_max_mtt_hierarchy_depth_inter_slice (136)

[1049] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (137)

[1050] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice (138)

[1052] - Applicable to the following:

[1053] MinQtSizeY = 1 << MinQtLog2SizeY (139)

[1054] MinQtSizeC = 1 << MinQtLog2SizeC (140)

[1055] MinBtSizeY = 1 << MinCbLog2SizeY (141)

[1056] MinTtSizeY = 1 << MinCbLog2SizeY (142)

[1057] The slice_alf_enabled_flag being equal to 1 specifies that the adaptive loop filter is enabled and can be applied to the Y, Cb, or Cr color components in the slice. The slice_alf_enabled_flag being equal to 0 specifies that the adaptive loop filter is disabled for all color components in the slice. When not present, the value of the slice_alf_enabled_flag is inferred to be equal to the ph_alf_enabled_flag.

[1058] slice_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slice. When the slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma is not present, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of ph_num_alf_aps_ids_luma.

[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 having an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be less than or equal to the TemporalId of the coded slice NAL unit. When the slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_luma[i] is not present, the value of slice_alf_aps_id_luma[i] is inferred to be equal to the value of ph_alf_aps_id_luma[i].

[1060] The value of the alf_luma_filter_signal_flag of the APS NAL unit having an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be equal to 1.

[1061] A slice_alf_chroma_idc equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. A slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. A slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. A slice_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to 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 that the chroma component of the slice refers to. The TemporalId of the APS NAL unit with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_alf_enabled_flag is equal to 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 value of alf_chroma_filter_signal_flag of the APS NAL unit with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be equal to 1.

[1064] A slice_cc_alf_cb_enabled_flag equal to 0 specifies that the cross-component filter is not applied to the Cb color component. A slice_cc_alf_cb_enabled_flag equal to 1 indicates that the cross-component filter is enabled and may 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 adaptation_parameter_set_id that slice_cc_alf_cb_aps_id specifies the Cb color component reference of the slice.

[1066] 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_cb_aps_id should be less than or equal to the TemporalId of the coded 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 the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id should be equal to 1.

[1068] slice_cc_alf_cr_enabled_flag being equal to 0 specifies that the cross-component filter is not applied to the Cr color component. slice_cc_alf_cb_enabled_flag being 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 specifies the adaptation_parameter_set_id for the Cr color component reference 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 should be less than or equal to the TemporalId of the coded 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 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 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 should be in the range from 0 to 2 (inclusive of 0 and 2). 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 dependency between the decoding processes of different colour planes of a picture.

[1073] The num_ref_idx_active_override_flag being equal to 1 specifies that the syntax element num_ref_idx_active_minus1[0] exists for P slices and B slices, and the syntax element num_ref_idx_active_minus1[1] exists for B slices. The num_ref_idx_active_override_flag being equal to 0 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] as specified in Formula 143. The value of num_ref_idx_active_minus1[i] shall be in the range of 0 to 14 (inclusive of 0 and 14).

[1075] For i equal to 0 or 1, when the current slice is a B slice, the 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, the 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] The variable NumRefIdxActive[i] is derived as follows:

[1078]

[1079]

[1080] The value of NumRefIdxActive[i] - 1 specifies the maximum reference index of reference picture list i that can be used to decode the slice. When the value of NumRefIdxActive[i] is equal to 0, no reference index of reference picture list i can be used to decode the slice.

[1081] When the current slice is a P slice, the value of NumRefIdxActive[0] should be greater than 0.

[1082] When the current slice is a B slice, both NumRefIdxActive[0] and NumRefIdxActive[1] should be greater than 0.

[1083] cabac_init_flag specifies the method for determining the initialization table used during the initialization of context variables. When cabac_init_flag does not exist, it is inferred to be equal to 0.

[1084] slice_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. slice_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.

[1085] 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:

[1086] - 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.

[1087] - 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.

[1088] slice_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.

[1089] When slice_type is equal to P or when 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 should be in the range from 0 to NumRefIdxActive[0] - 1 (including 0 and NumRefIdxActive[0] - 1).

[1090] 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 of 0 and NumRefIdxActive[1] - 1).

[1091] When slice_collocated_ref_idx does not exist, the following applies:

[1092] - 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.

[1093] - Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.

[1094] The 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.

[1095] The 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.

[1096] slice_qp_delta specifies the initial Qp value to be used for coded blocks in a slice until modified by the value of CuQpDeltaVal in the coded unit layer. Y of

[1097] When qp_delta_info_in_ph_flag is equal to 0, the Qp of the slice YInitial value of quantization parameter SliceQp Y is derived as follows:

[1098] SliceQp Y = 26 + init_qp_minus26 + slice_qp_delta (144)

[1099] SliceQp Y shall be in the range of -QpBdOffset to +63 (including -QpBdOffset and +63).

[1100] When any of the following conditions is true:

[1101] - The value of wp_info_in_ph_flag is equal to 1, pps_weighted_pred_flag is equal to 1, and slice_type is equal to P.

[1102] - The value of wp_info_in_ph_flag is equal to 1, pps_weighted_bipred_flag is equal to 1, and slice_type is equal to B.

[1103] the following applies:

[1104] - The value of NumRefIdxActive[0] shall be less than or equal to the value of NumWeightsL0.

[1105] - For each reference picture index RefPicList[0][i] (where i is in the range from 0 to NumRefIdxActive[0] - 1 (including 0 and NumRefIdxActive[0] - 1)), 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.

[1106] 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:

[1107] - The value of NumRefIdxActive[1] shall be less than or equal to the value of NumWeightsL1.

[1108] - For each reference picture index RefPicList[1][i] where i ranges from 0 to NumRefIdxActive[1] - 1 (inclusive of 0 and NumRefIdxActive[1] - 1), the luminance weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL1[i], ChromaWeightL1[0][i], and ChromaWeightL1[1][i], respectively.

[1109] slice_cb_qp_offset specifies the difference to be added to the value of pps_cb_qp_offset when determining the value of Qp′ Cb The value of slice_cb_qp_offset shall be in the range of -12 to +12 (inclusive of -12 and +12). 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 of -12 and +12).

[1110] slice_cr_qp_offset specifies the difference to be added to the value of pps_cr_qp_offset when determining the value of Qp′ Cr The value of slice_cr_qp_offset shall be in the range of -12 to +12 (inclusive of -12 and +12). 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 of -12 and +12).

[1111] slice_joint_cbcr_qp_offset specifies the difference to be added to the value of pps_joint_cbcr_qp_offset_value when determining the value of Qp′ CbCr The value of slice_joint_cbcr_qp_offset shall be in the range of -12 to +12 (inclusive of -12 and +12). 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 of -12 and +12).

[1112] When cu_chroma_qp_offset_enabled_flag equals 1, it specifies that cu_chroma_qp_offset_flag may exist in the transform unit and palette coding / decoding syntax. When cu_chroma_qp_offset_enabled_flag equals 0, it 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.

[1113] When slice_sao_luma_flag equals 1, it specifies that SAO is enabled for the luma component in the current slice; when slice_sao_luma_flag equals 0, it specifies that SAO is 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.

[1114] When slice_sao_chroma_flag equals 1, it specifies that SAO is enabled for the chroma component in the current slice; when slice_sao_chroma_flag equals 0, it specifies that SAO is 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.

[1115] When slice_deblocking_filter_override_flag equals 1, it specifies that the deblocking parameters exist in the slice header. When slice_deblocking_filter_override_flag equals 0, it specifies that the deblocking parameters do not exist 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.

[1116] A value of slice_deblocking_filter_disabled_flag equal to 1 specifies that the operation of the deblocking filter is not applied to the current slice. A value of slice_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter is applied to the current slice. When slice_deblocking_filter_disabled_flag is not present, it is inferred to be equal to ph_deblocking_filter_disabled_flag.

[1117] 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 both slice_beta_offset_div2 and slice_tc_offset_div2 shall be in the range of -12 to 12, inclusive (including -12 and 12). When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to ph_beta_offset_div2 and ph_tc_offset_div2, respectively.

[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 Cb component of the current slice. The values of both slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 shall be in the range of -12 to 12, inclusive (including -12 and 12). When not present, the values of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 are inferred to be equal to ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2, respectively.

[1119] 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 both be in the range of -12 to 12, inclusive of -12 and 12. When not present, the values of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 are inferred to be equal to ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2, respectively.

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

[1121] slice_lmcs_enabled_flag being equal to 1 specifies that luminance mapping and chrominance scaling are enabled for the current slice. slice_lmcs_enabled_flag being equal to 0 specifies that luminance mapping and chrominance scaling are not enabled for the current slice. When slice_lmcs_enabled_flag is not present, it is inferred to be equal to 0.

[1122] slice_scaling_list_present_flag being 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. slice_scaling_list_present_flag being 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 slice_scaling_list_present_flag is inferred to be equal to 0.

[1123] The variable NumEntryPoints that specifies the number of entry points in the current strip is derived as follows:

[1124]

[1125] 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 (including 0 and 31).

[1126] entry_point_offset_minus1[i] plus 1 specifies the i-th entry point offset in bytes and is represented by offset_len_minus1 plus 1 bits. The strip data after the strip header consists of NumEntryPoints + 1 subsets, where the subset index values range from 0 to NumEntryPoints (including 0 and NumEntryPoints). The first byte of the strip data is considered byte 0. When present, the emulation prevention byte that appears in the strip data part of the decoded / encoded strip NAL unit is counted as part of the strip data for the purpose of subset identification. Subset 0 consists of bytes 0 to entry_point_offset_minus1[0] (including 0 and entry_point_offset_minus1[0]) of the decoded / encoded strip data, and subset k (where k is in the range of 1 to NumEntryPoints - 1 (including 1 and NumEntryPoints - 1)) consists of bytes firstByte[k] to lastByte[k] (including firstByte[k] and lastByte[k]) of the decoded / encoded strip data, where firstByte[k] and lastByte[k] are defined as:

[1127]

[1128] lastByte[k] = firstByte[k] + entry_point_offset_minus1[k] (147)

[1129] The last subset (subset index equal to NumEntryPoints) consists of the remaining bytes of the decoded / encoded strip data.

[1130] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains one or more complete slices, each subset shall consist of all the coded bits of all CTUs within the same slice in the slice, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the number of slices in the slice.

[1131] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice 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 CTUs in the slice.

[1132] When sps_entropy_coding_sync_enabled_flag is equal to 1, each subset k (where k ranges from 0 to NumEntryPoints, inclusive of 0 and NumEntryPoints) shall consist of all the coded bits of all CTUs in the CTU rows within the slice, 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 slice.

[1133] 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 from 0 to 256, inclusive of 0 and 256. When absent, the value of slice_header_extension_length is inferred to be equal to 0.

[1134] slice_header_extension_data_byte[i] can have any value. Decoders compliant with this version of the specification shall ignore the values of all slice_header_extension_data_byte[i] syntax elements. Its value does not affect the profile specified in this version of the specification for which the decoder is compliant.

[1135] 3.10. Reference Picture List Syntax

[1136] In the latest VVC draft text, the syntax structure ref_pic_lists() and semantics are as follows:

[1137]

[1138] The ref_pic_lists() syntax structure can be present in the PH syntax structure or in the slice header.

[1139] rpl_sps_flag[i] being equal to 1 specifies that the reference picture list i in ref_pic_lists() is derived based on one of the ref_pic_list_struct(listIdx,rplsIdx) syntax structures in the SPS with listIdx equal to i. rpl_sps_flag[i] being equal to 0 specifies that the reference picture list i of the picture is derived based on the ref_pic_list_struct(listIdx,rplsIdx) syntax structure directly included in ref_pic_lists() with listIdx equal to i.

[1140] When rpl_sps_flag[i] is not present, the following applies:

[1141] - If num_ref_pic_lists_in_sps[i] is equal to 0, the value of rpl_sps_flag[i] is inferred to be equal to 0.

[1142] - Otherwise (num_ref_pic_lists_in_sps[i] > 0), when rpl1_idx_present_flag is equal to 0 and i is equal to 1, the value of rpl_sps_flag[1] is inferred to be equal to rpl_sps_flag[0].

[1143] rpl_idx[i] specifies the index of the ref_pic_list_struct(listIdx, rplsIdx) syntax structure with listIdx equal to i in the list of ref_pic_list_struct(listIdx, rplsIdx) syntax structures included in the SPS for which listIdx is equal to i and which is used for the derivation of reference picture list i for the current picture. The syntax element rpl_idx[i] is represented by Ceil(Log2(num_ref_pic_lists_in_sps[i])) bits. When not present, the value of rpl_idx[i] is inferred to be equal to 0. The value of rpl_idx[i] shall be in the range of 0 to num_ref_pic_lists_in_sps[i] - 1, inclusive of 0 and num_ref_pic_lists_in_sps[i] - 1. When rpl_sps_flag[i] is equal to 1 and num_ref_pic_lists_in_sps[i] is equal to 1, the value of rpl_idx[i] is inferred to be equal to 0. When rpl_sps_flag[i] is equal to 1 and rpl1_idx_present_flag is equal to 0, the value of rpl_idx[1] is inferred to be equal to rpl_idx[0].

[1144] The variable RplsIdx[i] is derived as follows:

[1145] RplsIdx[i] = rpl_sps_flag[i]? rpl_idx[i] : num_ref_pic_lists_in_sps[i] (149)

[1147] poc_lsb_lt[i][j] specifies the value of the picture order count modulo MaxPicOrderCntLsb of the j-th LTRP entry in the i-th reference picture list in the ref_pic_lists() syntax structure. The poc_lsb_lt[i][j] syntax element has a length of log2_max_pic_order_cnt_lsb_minus4 + 4 bits.

[1148] The variable PocLsbLt[i][j] is derived as follows:

[1149] PocLsbLt[i][j] = ltrp_in_header_flag[i][RplsIdx[i]]? (150)

[1150] poc_lsb_lt[i][j] := rpls_poc_lsb_lt[listIdx][RplsIdx[i]][j]

[1151] The delta_poc_msb_present_flag[i][j] being equal to 1 indicates the existence of delta_poc_msb_cycle_lt[i][j]. The delta_poc_msb_present_flag[i][j] being equal to 0 indicates the non-existence of delta_poc_msb_cycle_lt[i][j].

[1152] Let prevTid0Pic be the previous picture in decoding order, having the same nuh_layer_id as the slice or picture header of the ref_pic_lists() syntax structure, having a TemporalId equal to 0, and not being a RASL or RADL picture. Let setOfPrevPocVals be the set consisting of:

[1153] - the PicOrderCntVal of prevTid0Pic,

[1154] - the PicOrderCntVal of each picture that is referenced by an entry in RefPicList[0] or RefPicList[1] of prevTid0Pic and has the same nuh_layer_id as the current picture,

[1155] - the PicOrderCntVal of each picture that is in decoding order after prevTid0Pic, has the same nuh_layer_id as the current picture, and is in decoding order before the current picture.

[1156] When there are more than one value in setOfPrevPocVals whose value modulo MaxPicOrderCntLsb is equal to PocLsbLt[i][j], the value of delta_poc_msb_present_flag[i][j] shall be equal to 1.

[1157]

[1158] The value of delta_poc_msb_cycle_lt[i][j] shall be in the range from 0 to 2 (32-log2_max_pic_order_cnt_lsb_minus4-4) (including 0 and 2 (32-log2_max_pic_order_cnt_lsb_minus4-4) ). When it does not exist, the value of delta_poc_msb_cycle_lt[i][j] is inferred to be equal to 0.

[1159] 3.11. Syntax of Reference Picture List Structure

[1160] In the latest VVC draft text, the syntax structure ref_pic_lists() and its semantics are as follows:

[1161]

[1162] The ref_pic_list_struct(listIdx,rplsIdx) syntax structure can exist in the SPS, PH syntax structure, or slice header. Depending on whether the syntax structure is included in the SPS, PH syntax structure, or slice header, the following applies:

[1163] - If it exists in the PH syntax structure or slice header, the ref_pic_list_struct(listIdx,rplsIdx) syntax structure specifies the reference picture list listIdx of the current picture (the picture containing the slice).

[1164] - Otherwise (if it exists in the SPS), the ref_pic_list_struct(listIdx,rplsIdx) syntax structure specifies the candidates for the reference picture list listIdx, and the term "current picture" in the semantics specified in the remainder of this clause refers to 1) a PH syntax structure having a ph_rpl_idx[listIdx] equal to the index in the list containing the ref_pic_list_struct(listIdx,rplsIdx) syntax structure included in the SPS, or one or more slices having a slice_rpl_idx[listIdx] equal to the index in the list containing the ref_pic_list_struct(listIdx,rplsIdx) syntax structure included in the SPS, and 2) each picture in the CVS that references the SPS.

[1165] num_ref_entries[listIdx][rplsIdx] specifies the number of entries in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure. The value of num_ref_entries[listIdx][rplsIdx] shall be in the range of 0 to MaxDpbSize + 13 (including 0 and MaxDpbSize + 13), where MaxDpbSize is specified in Clause A.4.2.

[1166] ltrp_in_header_flag[listIdx][rplsIdx] equal to 0 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is present in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure. ltrp_in_header_flag[listIdx][rplsIdx] equal to 1 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is not present in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure.

[1167] inter_layer_ref_pic_flag[listIdx][rplsIdx][i] equal to 1 specifies that the i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is an ILRP entry. inter_layer_ref_pic_flag[listIdx][rplsIdx][i] equal to 0 specifies that the i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is not an ILRP entry. When not present, the value of inter_layer_ref_pic_flag[listIdx][rplsIdx][i] is inferred to be equal to 0.

[1168] st_ref_pic_flag[listIdx][rplsIdx][i] equal to 1 specifies that the i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is a STRP entry. st_ref_pic_flag[listIdx][rplsIdx][i] equal to 0 specifies that the i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is a LTRP entry. When inter_layer_ref_pic_flag[listIdx][rplsIdx][i] is equal to 0 and st_ref_pic_flag[listIdx][rplsIdx][i] is not present, the value of st_ref_pic_flag[listIdx][rplsIdx][i] is inferred to be equal to 1.

[1169] The variable NumLtrpEntries[listIdx][rplsIdx] is derived as follows:

[1170]

[1171] abs_delta_poc_st[listIdx][rplsIdx][i] specifies the value of the variable AbsDeltaPocSt[listIdx][rplsIdx][i] as follows:

[1172]

[1173] The value of abs_delta_poc_st[listIdx][rplsIdx][i] shall be in the range of 0 to 2 15 -1 (including 0 and 2 15 -1).

[1174] strp_entry_sign_flag[listIdx][rplsIdx][i] being equal to 1 specifies that the i-th entry in the syntax structure ref_pic_list_struct(listIdx,rplsIdx) has a value greater than or equal to 0. strp_entry_sign_flag[listIdx][rplsIdx][i] being equal to 0 specifies that the i-th entry in the syntax structure ref_pic_list_struct(listIdx,rplsIdx) has a value less than 0. When not present, the value of strp_entry_sign_flag[listIdx][rplsIdx][i] is inferred to be equal to 1.

[1175] The list DeltaPocValSt[listIdx][rplsIdx] is derived as follows:

[1176]

[1177] rpls_poc_lsb_lt[listIdx][rplsIdx][i] specifies the value of the picture order count modulo MaxPicOrderCntLsb of the picture referred to by the i-th entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure. The length of the rpls_poc_lsb_lt[listIdx][rplsIdx][i] syntax element is log2_max_pic_order_cnt_lsb_minus4 + 4 bits.

[1178] ilrp_idx[listIdx][rplsIdx][i] specifies the index of the ILRP for the list of direct reference layers for the i-th entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure. The value of ilrp_idx[listIdx][rplsIdx][i] shall be in the range of 0 to NumDirectRefLayers[GeneralLayerIdx[nuh_layer_id]] - 1, inclusive of 0 and NumDirectRefLayers[GeneralLayerIdx[nuh_layer_id]] - 1.

[1179] 4. Examples of technical problems solved by the disclosed technology

[1180] The existing design of the constraint flag has the following problems:

[1181] 1) Currently, as long as there is a PTL syntax structure with profileTierPresentFlag equal to 1, all general constraint flags / fields are signaled in that PTL syntax structure (SS). Considering that the PTL syntax structure can be included in the DCI (one or more times, each time profileTierPresentFlag equals 1), in the VPS (one or more times, the first time profileTierPresentFlag equals 1, and the other times profileTierPresentFlag equals 0 or 1), and in the SPS (zero or one time, profileTierPresentFlag equals 1), there may be a lot of redundant signaling of general constraint flags / fields. In addition, it is possible that no general constraint is applicable, and in this case, at least one set of general constraint flags / fields is still signaled for the bitstream of each OLS.

[1182] 2) In the latest VVC draft text, the general constraint flag is used to constrain the values of some SPS / PH / SH syntax elements (SE) or their combinations via bitstream constraints in the semantics. However, they can also be used to condition the existence of such related SPS / PH / SH SEs, which will allow skipping the signaling of bits whose values are known, thus avoiding waste of bits.

[1183] a. In the general_constraint_info() syntax in the latest VVC draft text, syntax elements such as the no_aps_constraint_flag affect a set of techniques such as ALF, CCALF, LMCS, scaling lists, etc. However, the current design does not cover all cases (e.g., in terms of specifying constraints on the values of relevant syntax elements or conditioning the presence of relevant syntax elements).

[1184] 3) In the latest VVC draft text, some PPS SEs related to the general constraint flag can only have specific values according to the value of a specific general constraint flag. However, some semantic constraints are missing to prohibit illegal values of such PPS SEs.

[1185] 4) In the general_constraint_info() syntax in the latest VVC draft text, a bunch of general constraint flags interact, i.e., the specific value of a general constraint flag depends on the values of other general constraint flags. However, there is a lack of constraints to prohibit illegal values of such general constraint flags through bitstream constraints or syntax conditions.

[1186] 5) Some syntax elements can be added to the SPS and / or PPS to condition the presence of some SPS / PPS / PH / SH syntax elements, thus saving bits.

[1187] 6) In the general_constraint_info() syntax in the latest VVC draft text, constraint flags including a subset of codec tools and functions are included. However, there are other codec tools (e.g., WPP, entropy coding synchronization, weighted prediction, weighted bi-prediction, SMVD, MMVD, ISP, MRL, MIP, LFNST, palette, ACT, scaling lists, etc.) and functions (e.g., only single layer, only one sub-picture, no inter-layer prediction, no virtual boundary, no long-term reference, no 32×32 maximum luma transform size, no MER, etc.) that do not have corresponding constraint flags.

[1188] 7) In the latest VVC draft text, APS does not refer to PPS, SPS, or VPS. However, the semantics of some APS SEs depend on the values of SEs in VPS, SPS, or PPS. All such dependencies should be removed, or the PPS or SPS or VPS ID should be added to the APS syntax to allow referencing PPS or SPS or VPS, thus allowing such semantic dependencies.

[1189] 5. Example embodiments and techniques

[1190] To solve the above problems and some other problems not mentioned, the methods outlined below are disclosed. The present invention should be considered as an example for explaining general concepts and should not be construed in a narrow way. In addition, these inventions can be applied individually or combined in any way.

[1191] 1. Regarding the signaling of general constraint flags / fields generally used to solve the first problem, one or more of the following methods are disclosed:

[1192] 1) An existence flag can be added to the PTL syntax structure to specify whether the general_constraint_info() syntax structure exists in the PTL syntax structure.

[1193] a. In one example, when the general_constraint_info() syntax structure does not exist for OLS, default values are inferred for each of the general constraint flags / fields.

[1194] i. In one example, when the general_constraint_info() syntax structure does not exist for OLS, each of the general constraint flags / fields is inferred to have a value that specifies no specific constraint is imposed on the bitstream of OLS. For example, the intra_only_constraint_flag,

[1195] no_res_change_in_clvs_constraint_flag and

[1196] one_tile_per_pic_constraint_flag are all inferred to be equal to 0.

[1197] b. In one example, when there are more than one PTL syntax structures in the DCI, it may be required that at most one of these PTL syntax structures contains the general_constraint_info() syntax structure, and when present, this general_constraint_info() syntax structure applies to the entire bitstream.

[1198] i. In addition, it may be required that only the first PTL syntax structure in the DCI can contain the general_constraint_info() syntax structure, and the general constraint information associated with the first DCI PTL syntax structure in the DCI (signaled explicitly or inferred) is considered to be the general constraint information associated with the DCI, which applies to the entire bitstream.

[1199] c. In one example, when DCI is present in the bitstream, it may be required that neither the PTL syntax structure in the VPS nor the SPS shall contain the general_constraint_info() syntax structure, and the general constraint information associated with the DCI (either explicitly signaled or inferred) shall apply to each OLS in each CVS in the bitstream.

[1200] i. Alternatively, when DCI is present in the bitstream, it may be required that the PTL syntax structure in the VPS shall not contain the general_constraint_info() syntax structure, and the general constraint information associated with the DCI (either explicitly signaled or inferred) shall apply to each OLS in each CVS in the bitstream that contains more than one layer.

[1201] d. In one example, when there is more than one PTL syntax structure in the VPS, it may be required that only one of these PTL syntax structures can contain the general_constraint_info() syntax structure, and this general_constraint_info() syntax structure shall apply to each OLS in each CVS in the bitstream.

[1202] i. Alternatively, when there is more than one PTL syntax structure in the VPS, it may be required that only the first PTL syntax structure in the VPS can contain the general_constraint_info() syntax structure, and the general constraint information associated with the first PTL syntax structure (either explicitly signaled or inferred) shall apply to each OLS in each CVS in the bitstream.

[1203] e. In one example, when more than one PTL (and / or general_constraint_info()) syntax structure is signaled in the DCI and / or SPS and / or VPS, these PTL (and / or general_constraint_info()) syntax structures must have the same content in the conforming bitstream.

[1204] i. In one example, when more than one PTL (and / or general_constraint_info()) syntax structure is signaled for an OLS, these PTL (and / or general_constraint_info()) syntax structures must have the same content in the conforming bitstream.

[1205] ii. In one example, when more than one PTL (and / or general_constraint_info()) syntax structure is signaled for CVS signaling, these PTL (and / or general_constraint_info()) syntax structures must have the same content in the conformant bitstream.

[1206] f. In one example, signaling of at most one PTL (and / or general_constraint_info()) syntax structure is allowed in DCI and / or SPS and / or VPS in the conformant bitstream.

[1207] i. In one example, signaling of at most one PTL (and / or general_constraint_info()) syntax structure is allowed in the conformant bitstream for OLS signaling.

[1208] ii. In one example, signaling of at most one PTL (and / or general_constraint_info()) syntax structure is allowed in the conformant bitstream for CVS signaling.

[1209] g. In one example, when multiple PTL syntax structures are signaled in DCI targeting multiple OLSs, syntax elements can be added to the DCI syntax structure to specify the index of the PTL syntax structure applicable to the i-th OLS in the list of PLT syntax structures in the DCI.

[1210] i. Additionally, if there is only one OLS in the bitstream, signaling of the above syntax elements can be skipped and / or the value of the syntax elements can be inferred as a specific value (e.g., 0).

[1211] h. In one example, when there are multiple general_constraint_info()) syntax structures in DCI and / or SPS and / or VPS and the values of specific general constraint flags / fields are different for OLSs, as long as any one of the general constraint flags imposes a specific constraint, that specific constraint is applied to that OLS.

[1212] i. In one example, when any general constraint flag in VPS / SPS specifies a specific constraint on an OLS while the corresponding general constraint flag in DCI specifies no specific constraint on the OLS, the OLS can conform to the more restrictive constraint (e.g., imposing such a specific constraint on the OLS as indicated by VPS / SPS).

[1213] 1. Alternatively, when any general constraint flag in the VPS / SPS specifies no specific constraint on the OLS, while the corresponding general constraint flag in the DCI specifies a specific constraint on the OLS, the OLS can comply with the more stringent constraint (e.g., impose such a specific constraint on the OLS as indicated by the DCI).

[1214] ii. In one example, for any specific aspect associated with the general constraint syntax element that imposes a constraint on the OLS, the corresponding general constraint syntax element carried in the DCI must have a value indicating a less strict but not more strict value than the same constraint value on that aspect indicated in the VPS / SPS.

[1215] 1. In one example, if any general constraint flag / field in the VPS / SPS specifies no specific constraint on the OLS, bitstream consistency can be added to require that the value of the corresponding general constraint flag in the DCI be equal to 0 for that OLS (in this case, the value of the corresponding general constraint flag in the DCI cannot be equal to 1).

[1216] 2. In one example, if any general constraint flag / field in the VPS / SPS specifies a specific constraint on the OLS, the value of the corresponding general constraint flag in the DCI can be equal to 0 or 1 for that OLS.

[1217] iii. Alternatively, conversely, for any specific aspect associated with the general constraint syntax element that imposes a constraint on the OLS, the corresponding general constraint syntax element carried in the DCI must have a value indicating a more strict but not less strict value than the same constraint value on that aspect indicated in the VPS / SPS.

[1218] 1. In one example, if any general constraint flag / field in the VPS / SPS specifies a specific constraint on the OLS, bitstream consistency can be added to require that the value of the corresponding general constraint flag in the DCI be equal to 1 for that OLS (in this case, the value of the corresponding general constraint flag in the DCI cannot be equal to 0).

[1219] 2. In one example, if any general constraint flag / field in the VPS / SPS specifies no specific constraint on the OLS, the value of the corresponding general constraint flag in the DCI can be equal to 0 or 1 for that OLS.

[1220] i. In one example, multiple sets of different default values of the general constraint flag / field can be predefined.

[1221] i. Additionally, alternatively, an indication of one of the multiple sets can be signaled in the DCI / VPS / SPS.

[1222] ii. Alternatively, only one set is predefined.

[1223] 1. Additionally, alternatively, a flag may exist in the DCI / VPS / SPS to specify whether to use a set.

[1224] iii. In one example, for one of the multiple sets, each of the general constraint flags / fields is inferred to specify a value that does not impose a specific constraint on the bitstream of the OLS. For example, the values of intra_only_constraint_flag, no_res_change_in_clvs_constraint_flag, and one_tile_per_pic_constraint_flag are all inferred to be equal to 0.

[1225] iv. In one example, for one or some of the multiple sets, the value of max_bitdepth_constraint_idc may be inferred to be equal to a specific value, such as 2.

[1226] 2. Regarding the signaling of SPS / PH / SH syntax elements based on general constraint flags for solving the second problem:

[1227] 1) According to the value of the general constraint flag, the signaling of the corresponding syntax element in SPS / PH / SH may be skipped, for example, as in the first embodiment.

[1228] a. In one example, the signaling of some SPS syntax elements may be skipped according to some general constraint flags.

[1229] i. For example, when the value of the general constraint field max_chroma_format_constraint_idc is equal to 0, the signaling of the corresponding SPS syntax element chroma_format_idc may be skipped.

[1230] a) Additionally, when max_chroma_format_constraint_idc is equal to 0, the value of chroma_format_idc is inferred to be equal to 0.

[1231] ii. For example, when the value of the general constraint field max_bitdepth_constraint_idc is equal to 0, the signaling of the corresponding SPS syntax element bit_depth_minus8 may be skipped.

[1232] a) Additionally, optionally, when max_bitdepth_constraint_idc is equal to 0, the value of bit_depth_minus8 is inferred to be equal to 0.

[1233] iii. For example, when the value of the general constraint flag no_aps_constraint_flag is equal to 1, signaling of APS-related SPS syntax elements (such as sps_lmcs_enabled_flag, sps_scaling_list_enabled_flag, sps_alf_enabled_flag, sps_ccalf_enabled_flag, etc.) can be skipped.

[1234] a) Optionally, when no_aps_constraint_flag is equal to 1, the value of each of the above APS-related SPS syntax elements is inferred to be equal to 0.

[1235] b) Additionally, alternatively, when the value of the general constraint flag no_aps_constraint_flag is equal to 1, NAL unit types equal to PREFIX_APS_NUT or SUFFIX_APS_NUT are not allowed.

[1236] iv. For example, when the value of the general constraint flag intra_only_constraint_flag is equal to 1, signaling of one or more inter-frame related SPS syntax elements (such as sps_weighted_pred_flag, sps_weighted_bipred_flag, long_term_ref_pics_flag, sps_idr_rpl_present_flag, rpl1_same_as_rpl0_flag, gdr_enabled_flag, res_change_in_clvs_allowed_flag, sps_ref_wraparound_enabled_flag, sps_temporal_mvp_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sbt_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) can be skipped.

[1237] a) Additionally, when intra_only_constraint_flag is equal to 1, the value of each of the above inter-frame related SPS syntax elements is inferred to be equal to 0.

[1238] v. For example, when the value of the general constraint flag Y2 is equal to 1, signaling of the corresponding SPS syntax element Y1 can be skipped.

[1239] a) Additionally, when it does not exist (when the general constraint flag Y2 is equal to 1), the value of the corresponding SPS syntax element Y1 is inferred to be equal to 0.

[1240] b) For example, Y1 is sps_ladf_enabled_flag and Y2 is no_ladf_constraint_flag.

[1241] c) For example, Y1 is gdr_enabled_flag and Y2 is no_gdr_constraint_flag.

[1242] d) For example, Y1 is res_change_in_clvs_allowed_flag, and Y2 is no_res_change_in_clvs_constraint_flag.

[1243] e) For example, Y1 is qtbtt_dual_tree_intra_flag, and Y2 is no_qtbtt_dual_tree_intra_constraint_flag.

[1244] f) For example, Y1 is partition_constraints_override_enabled_flag, and Y2 is no_partition_constraints_override_constraint_flag.

[1245] g) For example, Y1 is sps_joint_cbcr_enabled_flag, and Y2 is no_joint_cbcr_constraint_flag.

[1246] h) For example, Y1 is sps_sao_enabled_flag, and Y2 is no_sao_constraint_flag.

[1247] i) For example, Y1 is sps_alf_enabled_flag, and Y2 is no_alf_constraint_flag.

[1248] j) For example, Y1 is sps_ccalf_enabled_flag, and Y2 is no_ccalf_constraint_flag.

[1249] k) For example, Y1 is sps_transform_skip_enabled_flag, and Y2 is no_transform_skip_constraint_flag.

[1250] l) For example, Y1 is sps_bdpcm_enabled_flag, and Y2 is no_bdpcm_constraint_flag.

[1251] m) For example, Y1 is sps_ref_wraparound_enabled_flag, and Y2 is no_ref_wraparound_constraint_flag.

[1252] n) For example, Y1 is sps_temporal_mvp_enabled_flag, and Y2 is no_temporal_mvp_constraint_flag.

[1253] o) For example, Y1 is sps_sbtmvp_enabled_flag, and Y2 is no_sbtmvp_constraint_flag.

[1254] p) For example, Y1 is sps_amvr_enabled_flag, and Y2 is no_amvr_constraint_flag.

[1255] q) For example, Y1 is sps_bdof_enabled_flag, and Y2 is no_bdof_constraint_flag.

[1256] r) For example, Y1 is sps_dmvr_enabled_flag, and Y2 is no_dmvr_constraint_flag.

[1257] s) For example, Y1 is sps_cclm_enabled_flag, and Y2 is no_cclm_constraint_flag.

[1258] t) For example, Y1 is sps_mts_enabled_flag, and Y2 is no_mts_constraint_flag.

[1259] u) For example, Y1 is sps_sbt_enabled_flag, and Y2 is no_sbt_constraint_flag.

[1260] v) For example, Y1 is sps_affine_enabled_flag, and Y2 is no_affine_motion_constraint_flag.

[1261] w) For example, Y1 is sps_bcw_enabled_flag, and Y2 is no_bcw_constraint_flag.

[1262] x) For example, Y1 is sps_ibc_enabled_flag, and Y2 is no_ibc_constraint_flag.

[1263] y) For example, Y1 is sps_ciip_enabled_flag, and Y2 is no_ciip_constraint_flag.

[1264] z) For example, Y1 is sps_fpel_mmvd_enabled_flag, and Y2 is no_fpel_mmvd_constraint_flag.

[1265] aa) For example, Y1 is sps_dep_quant_enabled_flag, and Y2 is no_dep_quant_constraint_flag.

[1266] bb) For example, Y1 is sps_sign_data_hiding_enabled_flag, and Y2 is no_sign_data_hiding_constraint_flag.

[1267] cc) For example, Y1 is sps_gpm_enabled_flag, and Y2 is no_gpm_constraint_flag.

[1268] vi. Alternatively, bitstream constraints can be added to require that the values of relevant syntax elements in the SPS be equal to specific values based on the values of the corresponding general constraint flags.

[1269] a) In one example (in this case, the above SPS syntax element Y1 is signaled or inferred), bitstream constraints can be added such that when the general constraint flag Y2 is equal to 1, the value of the corresponding SPS syntax element Y1 is required to be equal to 0.

[1270] b) In one example (in this case, the SPS syntax elements related to APS are signaled or inferred), bitstream constraints can be added such that when no_aps_constraint_flag is equal to 1, the values of each APS-related SPS syntax element (such as sps_lmcs_enabled_flag, sps_scaling_list_enabled_flag, sps_alf_enabled_flag, sps_ccalf_enabled_flag, etc.) are required to be equal to 0.

[1271] c) In one example (in which case the inter - frame related SPS syntax elements are signaled or inferred), bit - stream constraints can be added such that when intra_only_constraint_flag equals 1, it is required that the value of each of the above - mentioned inter - frame related SPS syntax elements (such as sps_weighted_pred_flag, sps_weighted_bipred_flag, long_term_ref_pics_flag, sps_idr_rpl_present_flag, rpl1_same_as_rpl0_flag, gdr_enabled_flag, res_change_in_clvs_allowed_flag, sps_ref_wraparound_enabled_flag, sps_temporal_mvp_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sbt_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) equals 0.

[1272] b. In one example, signaling of one or more PH syntax elements can be skipped according to the value of some general constraint flags.

[1273] i. For example, when intra_only_constraint_flag equals 1, signaling of inter - frame related PH syntax elements such as ph_inter_slice_allowed_flag can be skipped.

[1274] a) Additionally, when intra_only_constraint_flag equals 1, the value of each of the inter - frame related PH syntax elements such as ph_inter_slice_allowed_flag is inferred to be equal to 0.

[1275] ii. For example, when the intra_only_constraint flag is equal to 1, signaling of PH syntax elements in the syntax structures ref_pic_lists() and ref_pic_list_struct(listIdx, rplsIdx) included in PH can be skipped.

[1276] a) For example, when the intra_only_constraint_flag is equal to 1, syntax elements in the syntax structure ref_pic_lists() included in PH, such as rpl_sps_flag[], rpl_idx[], poc_lsb_lt[][], delta_poc_msb_present_flag[][], delta_poc_msb_cycle_lt[][], can be skipped.

[1277] b) For example, when the intra_only_constraint_flag is equal to 1, syntax elements in the syntax structure ref_pic_list_struct(listIdx, rplsIdx) included in PH, such as num_ref_entries[][], ltrp_in_header_flag[][], inter_layer_ref_pic_flag[][][], st_ref_pic_flag[][][], abs_delta_poc_st[][][], strp_entry_sign_flag[][][], rpls_poc_lsb_lt[][][], ilrp_idx[][][], can be skipped.

[1278] iii. Alternatively (in this case, according to the value of the relevant general constraint flag / field, the corresponding syntax elements in PH are not conditionally signaled or skipped), in one example, a bitstream constraint can be added to require the value of the relevant syntax elements in PH to be equal to a specific value based on the value of the corresponding general constraint flag.

[1279] a) In one example (in this case, the PH syntax element ph_inter_slice_allowed_flag is signaled or inferred), when the intra_only_constraint_flag is equal to 1, a bitstream constraint can be added such that each value of the inter-frame related PH syntax elements such as ph_inter_slice_allowed_flag is required to be equal to 0.

[1280] b) In one example (in this case, the syntax elements in ref_pic_lists() included in PH and ref_pic_list_struct(listIdx, rplsIdx) are signaled or inferred), bitstream constraints can be added such that it is required that the syntax elements in the reference picture lists included in PH are never used.

[1281] c. In one example, signaling of one or more SH syntax elements can be skipped according to the value of some general constraint flags.

[1282] i. For example, when the value of intra_only_constraint_flag is equal to 1, signaling of the RPL-related SH syntax element num_ref_idx_active_override_flag can be skipped.

[1283] a) Additionally, when intra_only_constraint_flag is equal to 1, the value of num_ref_idx_active_override_flag is inferred to be equal to 0.

[1284] ii. For example, when intra_only_constraint_flag is equal to 1, signaling of the RPL-related syntax elements in the syntax structure ref_pic_lists() and the syntax structure ref_pic_list_struct(listIdx, rplsIdx) included in SH can be skipped.

[1285] a) For example, when intra_only_constraint_flag is equal to 1, the syntax elements in the syntax structure ref_pic_lists() included in SH, such as rpl_sps_flag[], rpl_idx[], poc_lsb_lt[][], delta_poc_msb_present_flag[][], delta_poc_msb_cycle_lt[][], can be skipped.

[1286] b) For example, when intra_only_constraint_flag is equal to 1, the syntax elements in the syntax structure ref_pic_list_struct(listIdx, rplsIdx) included in SH, such as num_ref_entries[][], ltrp_in_header_flag[][], inter_layer_ref_pic_flag[][][], st_ref_pic_flag[][][], abs_delta_poc_st[][][], strp_entry_sign_flag[][][], rpls_poc_lsb_lt[][][], ilrp_idx[][][], can be skipped.

[1287] iii. Alternatively (in this case, according to the value of the relevant general constraint flag / field, the corresponding syntax elements in SH are not signaled or skipped conditionally), in one example, bitstream constraints can be added to require that the value of each of the relevant syntax elements in SH is equal to a specific value according to the value of the corresponding general constraint flag.

[1288] a) In one example (in this case, the SH syntax element num_ref_idx_active_override_flag is signaled or inferred), when intra_only_constraint_flag is equal to 1, bitstream constraints can be added such that the syntax element num_ref_idx_active_override_flag in SH is required to be equal to 0.

[1289] b) In one example (in this case, the SH syntax elements in ref_pic_lists() and ref_pic_list_struct(listIdx, rplsIdx) included in SH are signaled or inferred), when intra_only_constraint_flag is equal to 1, bitstream constraints can be added such that the syntax elements in the reference picture lists included in SH are never used.

[1290] d. In the above examples, the general constraint flag / field for signaling to determine whether to skip one or more SH syntax elements can be replaced by a new syntax element in SPS / PPS / PH / SH.

[1291] e. In the above examples, the general constraint flag / field for signaling to determine whether to skip one or more PH syntax elements can be replaced by a new syntax element in SPS / PPS / PH.

[1292] f. In the above example, the general constraint flag / field for the signaling used to determine whether to skip one or more SPS syntax elements can be replaced by a new syntax element in the SPS.

[1293] 3. Constraints on the PPS syntax elements based on the general constraint flag for solving the third problem:

[1294] 1) According to the value of the general constraint flag, the value of the corresponding syntax element in the PPS can be constrained, for example, as in the second embodiment.

[1295] a. In one example, according to the value of the general constraint flag, a bitstream constraint can be added such that the value of the syntax element in the PPS is required to be equal to a specific value.

[1296] i. For example, when one_tile_per_pic_constraint_flag is equal to 1, the values of num_exp_tile_columns_minus1 and / or num_exp_tile_rows_minus1 and / or rect_slice_flag are required to be equal to 0.

[1297] ii. For example, when one_slice_per_pic_constraint_flag is equal to 1, the value of rect_slice_flag is required to be equal to 1.

[1298] iii. For example, when both one_tile_per_pic_constraint_flag and one_slice_per_pic_constraint flag are equal to 1, the value of no_pic_partition_flag is required to be equal to 1.

[1299] iv. For example, when the intra_only_constraint flag is equal to 1, the values of rpl1_idx_present_flag and num_ref_idx_default_active_minus1[] are required to be equal to 0.

[1300] 4. Constraints on the general constraint flag for prohibiting illegal values of such general constraint flags for solving the fourth problem:

[1301] 1) In the syntax general_constraint_info(), the value of a general constraint flag can depend on the value of another general constraint flag, for example, as in the third embodiment.

[1302] a. In one example, depending on the value of the general constraint flag signaled earlier, signaling of some general constraint flags in the syntax general_constraint_info() may be skipped.

[1303] i. In one example, when the value of one_slice_per_pic_constraint_flag is equal to 1, signaling of the syntax element one_subpic_per_pic_constraint_flag in the syntax general_constraint_info() may be skipped.

[1304] 1. Additionally, when one_slice_per_pic_constraint_flag is equal to 1, the value of one_subpic_per_pic_constraint_flag is inferred to be equal to 1.

[1305] ii. In one example, when the value of no_transform_skip_constraint_flag is equal to 1, signaling of the syntax element no_bdpcm_constraint_flag in the syntax general_constraint_info() may be skipped.

[1306] 1. Additionally, when no_transform_skip_constraint_flag is equal to 1, the value of no_bdpcm_constraint_flag is inferred to be equal to 1.

[1307] iii. For example, when the value of intra_only_constraint_flag is equal to 1, the inter - frame related syntax elements (such as no_res_change_in_clvs_constraint_flag, no_ref_wraparound_constraint_flag, no_temporal_mvp_constraint_flag, no_sbtmvp_constraint_flag, no_amvr_constraint_flag, no_bdof_constraint_flag, no_dmvr_constraint_flag, no_sbt_constraint_flag, no_affine_motion_constraint_flag, no_bcw_constraint_flag, no_ciip_constraint_flag, no_fpel_mmvd_constraint_flag, no_gpm_constraint_flag) in the general_constraint_info() syntax structure can be skipped from signaling.

[1308] 2. Additionally, when intra_only_constraint_flag is equal to 1,

[1309] the value of each of the above - mentioned inter - frame related syntax elements in the general_constraint_info() syntax structure is inferred to be equal to 1.

[1310] b. In one example, alternatively (in this case, depending on the value of an earlier general constraint flag, the general constraint flag is not signaled conditionally or skipped), bit - stream constraints can be added such that a value of a general constraint flag is required to be equal to a specific value according to the value(s) of the relevant earlier general constraint flag(s).

[1311] i. In one example, when intra_only_constraint_flag is equal to 1, it is required that the value of each of the inter - frame related general constraint flags mentioned in the above bullet points is equal to 1.

[1312] ii. In one example, when intra_only_constraint_flag is equal to 1, it is required that at least one of the values of no_idr_constraint_flag and no_cra_constraint_flag is equal to 0.

[1313] iii. In one example, when no_transform_skip_constraint_flag equals 1, it is required that the value of no_bdpcm_constraint_flag equals 1.

[1314] iv. In one example, when no_aps_constraint_flag equals 1, it is required that the value of no_alf_constraint_flag equals 1.

[1315] c. In one example, additionally, bitstream constraints can be added to require that the values of some general constraint flags equal specific values and, if necessary, equal specific values under specific conditions.

[1316] i. In one example, bitstream constraints can be added to constrain the values of combinations of multiple general constraint flags. For example, it is required that at least one of the values of no_gdr_constraint_flag, no_idr_constraint_flag, and no_cra_constraint_flag equals 0.

[1317] ii. In one example, bitstream constraints can be added to constrain the range of the general constraint field.

[1318] 1. For example, it is required that max_bitdepth_constraint_idc be within the range from 0 to X (e.g., X = 8), including 0 and X.

[1319] 2. For example, when general_profile_idc equals A (e.g., A = 1), it is required that max_bitdepth_constraint_idc be within the range from 0 to B (e.g., B = 2), including 0 and B.

[1320] 5. Regarding adding new SPS / PPS syntax elements for solving the fifth problem:

[1321] 1) New SPS and / or PPS syntax elements can be added to condition relevant syntax elements in SPS / PPS / PH / SH, for example, as in the fourth embodiment.

[1322] a. In one example, new SPS syntax elements (e.g., sps_intra_only_flag) and / or new PPS syntax elements (e.g., pps_intra_only_flag) can be added to condition syntax elements related to inter prediction in SPS / PPS / PH / SH.

[1323] i. In one example, when the general constraint flag intra_only_constraint_flag is equal to 1, signaling of the new SPS syntax element sps_intra_only_flag and / or the new PPS syntax element pps_intra_only_flag can be skipped.

[1324] 1. Additionally, when intra_only_constraint_flag is equal to 1, the value of the new SPS syntax element sps_intra_only_flag is inferred to be equal to 1, and / or, the value of the new PPS syntax element pps_intra_only_flag is inferred to be equal to 1.

[1325] ii. In one example, in the case where the value of the new PPS syntax element (e.g., sps_intra_only_flag) is equal to 1, signaling of inter-frame related SPS syntax elements (such as sps_weighted_pred_flag, sps_weighted_bipred_flag, long_term_ref_pics_flag, sps_idr_rpl_present_flag, rpl1_same_as_rpl0_flag, gdr_enabled_flag, res_change_in_clvs_allowed_flag, sps_ref_wraparound_enabled_flag, sps_temporal_mvp_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sbt_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) can be skipped

[1326] 2. Additionally, when the new PPS syntax element sps_intra_only_flag is equal to 1, the value of each of the inter-frame related SPS syntax elements is inferred to be equal to a specific value (such as 0 or 1).

[1327] iii. In one example, when the value of a new SPS / PPS syntax element (e.g., sps_intra_only_flag and / or pps_intra_only_flag) is equal to 1, signaling of the corresponding inter-frame related and RPL related syntax elements included in PH and / or SH can be skipped.

[1328] 1. In one example, the above-mentioned inter-frame related PH syntax element can be ph_inter_slice_allowed_flag.

[1329] 2. In one example, the above-mentioned RPL related SH syntax element can be num_ref_idx_active_override_flag.

[1330] 3. In one example, the above-mentioned corresponding RPL related syntax elements can be the syntax elements in the syntax structures ref_pic_lists() and ref_pic_list_struct(listIdx, rplsIdx) included in PH and / or SH.

[1331] 4. Additionally, when the new syntax elements sps_intra_only_flag and / or pps_intra_only_flag are equal to 1, the value of each of the corresponding inter-frame related and RPL related syntax elements in PH and / or SH is inferred to be equal to a specific value (such as 0 or 1).

[1332] iv. In one example, when the value of a new PPS syntax element (e.g., pps_intra_only_flag) is equal to 1, signaling of the corresponding PPS syntax element can be skipped.

[1333] 1. For example, the above-mentioned corresponding PPS syntax element can be rpl1_idx_present_flag.

[1334] 2. For example, the above-mentioned corresponding PPS syntax element can be num_ref_idx_default_active_minus1[].

[1335] 3. Additionally, when the new PPS syntax element pps_intra_only_flag is equal to 1, the value of the corresponding PPS syntax element is inferred to be equal to a specific value (such as 0 or 1).

[1336] v. Alternatively (in this case, depending on the value of intra_only_constraint_flag, the new SPS and / or PPS syntax elements sps_intra_only_flag and / or pps_intra_only_flag are conditionally signaled or skipped), in one example, when intra_only_constraint_flag is equal to 1, bitstream constraints can be added to require that the values of the new SPS and / or PPS syntax elements sps_intra_only_flag and / or pps_intra_only_flag be equal to 1.

[1337] vi. Alternatively (in this case, depending on the values of the new SPS / PPS syntax elements, the SPS / PPS / PH / SH syntax elements related to the new SPS / PPS syntax elements are not conditionally signaled or skipped), in one example, depending on the values of the new SPS / PPS syntax elements, bitstream constraints can be added to require that the value of each of the relevant syntax elements in SPS / PPS / PH / SH be equal to a specific value (such as 0 or 1).

[1338] 1. In one example (in this case, the new PPS syntax element pps_intra_only_flag is signaled or inferred), additionally, when the new SPS syntax element sps_intra_only_flag is equal to 1, bitstream constraints can be added to require that the value of the new PPS syntax element pps_intra_only_flag be equal to 1.

[1339] 2. In one example (in this case, the SPS syntax elements related to the new SPS syntax element are signaled or inferred), bitstream constraints can be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1, the values of the inter-frame related SPS syntax elements are required to be equal to 0.

[1340] 3. In one example (in this case, the PPS syntax elements related to the new SPS / PPS syntax elements are signaled or inferred), in one example, bitstream constraints can be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1, or when the new PPS syntax element pps_intra_only_flag is equal to 1, the values of the inter-frame related PPS syntax elements are required to be equal to 0.

[1341] 4. In one example (in this case, the PH / SH syntax elements related to the new SPS / PPS syntax elements are signaled or inferred), bitstream constraints can be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1 and / or the new PPS syntax element pps_intra_only_flag is equal to 1, the values of the corresponding inter-frame related and / or RPL related syntax elements included in the PH / SH are required to be equal to specific values (such as 0 or 1).

[1342] 6. Regarding adding a new general constraint flag / field for solving the sixth problem:

[1343] 1) In the syntax general_constraint_info(), new general constraint flags can be added. In addition, these new general constraint flags can be used to condition related syntax elements in SPS / PPS / PH / SH or to constrain the values of related syntax elements in SPS / PPS / PH / SH through bitstream constraints. For example, as in the fifth embodiment.

[1344] a. For example, new general constraint flags can be added to implement one or more functions as described below.

[1345] i. For example, add a new general constraint flag to disable inter-layer prediction and / or only allow one layer. For example, add a new syntax element no_inter_layer_prediction_constraint_flag. In addition, this new syntax element can be used to condition the signaling or constrain the value of the SPS syntax element inter_layer_ref_pics_present_flag.

[1346] ii. For example, add a new general constraint flag to disable long-term reference. For example, a new syntax element no_long_term_ref_pics_constraint_flag. In addition, this new syntax element can be used to condition the signaling or constrain the value of the SPS syntax element long_term_ref_pics_flag.

[1347] iii. For example, add a new general constraint flag to disable the maximum transform size equal to 32×32. For example, a new syntax element no_max_luma_transform_size 64_constraint_flag. In addition, this new syntax element can be used to condition the signaling or constrain the value of the SPS syntax element sps_max_luma_transform_size_64_flag.

[1348] iv. For example, add a new general constraint flag to disable MER, e.g., the new syntax element no_parallel_merge_level_constraint_flag. Additionally, this new syntax element can be used to condition or constrain the signaling of the SPS syntax element log2_parallel_merge_level_minus2 or its value.

[1349] v. For example, add a new general constraint flag to prohibit the existence of wavefront parallel processing entry point offsets, e.g., the new syntax element no_wpp_entry_point_offset_present_constraint_flag. Additionally, this new syntax element can be used to condition or constrain the signaling of the SPS syntax element sps_wpp_entry_point_offsets_present_flag or its value.

[1350] vi. For example, add a new general constraint flag to disable entropy coding synchronization points (i.e., wavefront parallel processing), e.g., the new syntax element no_entropy_coding_sync_constraint_flag. Additionally, this new syntax element can be used to condition or constrain the signaling of the SPS syntax element sps_entropy_coding_sync_enabled_flag or its value.

[1351] b. For example, new general constraint flags can be added to con...

Claims

1. A method for processing video data, comprising: Performing a conversion between a video and a bitstream of the video according to format rules, wherein the format rules specify including one or more general constraint flags to constrain values of corresponding syntax elements in a sequence parameter set (SPS) and control corresponding encoding / decoding tools; and the one or more general constraint flags include a first general constraint flag, when the first general constraint flag is equal to 1, a first syntax element in the corresponding syntax elements in the SPS is equal to 0, and a maximum transform size equal to 64×64 in luminance samples indicated by the first syntax element is disabled, and a maximum transform size in luminance samples of the SPS is equal to 32×32.

2. The method according to claim 1, wherein The one or more general constraint flags include a second general constraint flag, and when the second general constraint flag is equal to 1, a second syntax element in the corresponding syntax elements in the SPS is equal to 0, and a symmetric motion vector difference (SMVD) encoding / decoding tool controlled by the second syntax element is disabled.

3. The method according to claim 1, wherein The one or more general constraint flags include a third general constraint flag, and when the third general constraint flag is equal to 1, a third syntax element in the corresponding syntax elements in the SPS is equal to 0, and a Merge mode with motion vector difference (MMVD) encoding / decoding tool controlled by the third syntax element is disabled.

4. The method according to claim 1, wherein, The one or more general constraint flags include a fourth general constraint flag, and when the fourth general constraint flag is equal to 1, a fourth syntax element in the corresponding syntax elements in the SPS is equal to 0, and an intra prediction using sub - partitioning (ISP) encoding / decoding tool controlled by the fourth syntax element is disabled.

5. The method according to claim 1, wherein, The one or more general constraint flags include a fifth general constraint flag, and when the fifth general constraint flag is equal to 1, a fifth syntax element in the corresponding syntax elements in the SPS is equal to 0, and an intra prediction with multiple reference lines (MRL) encoding / decoding tool controlled by the fifth syntax element is disabled.

6. The method according to claim 1, wherein The one or more general constraint flags include a sixth general constraint flag, and when the sixth general constraint flag is equal to 1, a sixth syntax element in the corresponding syntax elements in the SPS is equal to 0, and a matrix - based intra prediction (MIP) encoding / decoding tool controlled by the sixth syntax element is disabled.

7. The method according to claim 1, wherein, The one or more general constraint flags include a seventh general constraint flag, and when the seventh general constraint flag is equal to 1, a seventh syntax element in the corresponding syntax elements in the SPS is equal to 0, and a palette encoding / decoding tool controlled by the seventh syntax element is disabled.

8. The method according to claim 1, wherein The one or more general constraint flags include an eighth general constraint flag, and when the eighth general constraint flag is equal to 1, an eighth syntax element in the corresponding syntax elements in the SPS is equal to 0, and an adaptive color transform (ACT) encoding / decoding tool controlled by the eighth syntax element is disabled.

9. The method according to claim 1, wherein, The one or more general constraint flags include a ninth general constraint flag, and when the ninth general constraint flag is equal to 1, a ninth syntax element in the corresponding syntax element in the SPS is equal to 0, and a low-frequency non-separable transform (LFNST) codec tool controlled by the ninth syntax element is disabled.

10. The method according to claim 1, wherein The one or more general constraint flags include a tenth general constraint flag, and when the tenth general constraint flag is equal to 1, a tenth syntax element in the corresponding syntax element in the SPS is equal to 0, and a virtual boundary controlled by the tenth syntax element is disabled.

11. The method according to claim 1, wherein, The one or more general constraint flags include an eleventh general constraint flag, and when the eleventh general constraint flag is equal to 1, an eleventh syntax element and a twelfth syntax element in the corresponding syntax element in the SPS are equal to 0, and a weighted prediction codec tool controlled by the eleventh syntax element and a weighted bi-prediction codec tool controlled by the twelfth syntax element are disabled.

12. The method according to claim 1, wherein, The conversion includes encoding the video into the bitstream.

13. The method according to claim 1, wherein The conversion includes decoding the video from the bitstream.

14. 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 the video and a bitstream of the video according to format rules, Among them, The format rules specify one or more general constraint flags to constrain values of corresponding syntax elements in a sequence parameter set (SPS) and control corresponding codec tools; And the one or more general constraint flags include a first general constraint flag, and when the first general constraint flag is equal to 1, a first syntax element in the corresponding syntax element in the SPS is equal to 0, and a maximum transform size equal to 64×64 in the luminance samples indicated by the first syntax element is disabled, and the maximum transform size in the luminance samples of the SPS is equal to 32×32.

15. The device according to claim 14, wherein, The one or more general constraint flags include a second general constraint flag, and when the second general constraint flag is equal to 1, a second syntax element in the corresponding syntax element in the SPS is equal to 0, and a symmetric motion vector difference (SMVD) codec tool controlled by the second syntax element is disabled; The one or more general constraint flags include a third general constraint flag, and when the third general constraint flag is equal to 1, a third syntax element in the corresponding syntax element in the SPS is equal to 0, and a Merge mode with motion vector difference (MMVD) codec tool controlled by the third syntax element is disabled; The one or more general constraint flags include a fourth general constraint flag, and when the fourth general constraint flag is equal to 1, a fourth syntax element in the corresponding syntax element in the SPS is equal to 0, and an intra prediction with sub-division (ISP) codec tool controlled by the fourth syntax element is disabled; The one or more general constraint flags include a fifth general constraint flag, and when the fifth general constraint flag is equal to 1, a fifth syntax element in the corresponding syntax element in the SPS is equal to 0, and the intra prediction MRL codec tool with multiple reference lines controlled by the fifth syntax element is disabled; The one or more general constraint flags include a sixth general constraint flag, and when the sixth general constraint flag is equal to 1, a sixth syntax element in the corresponding syntax element in the SPS is equal to 0, and the matrix-based intra prediction MIP codec tool controlled by the sixth syntax element is disabled; The one or more general constraint flags include a seventh general constraint flag, and when the seventh general constraint flag is equal to 1, a seventh syntax element in the corresponding syntax element in the SPS is equal to 0, and the palette codec tool controlled by the seventh syntax element is disabled; The one or more general constraint flags include an eighth general constraint flag, and when the eighth general constraint flag is equal to 1, an eighth syntax element in the corresponding syntax element in the SPS is equal to 0, and the adaptive color transform ACT codec tool controlled by the eighth syntax element is disabled; The one or more general constraint flags include a ninth general constraint flag, and when the ninth general constraint flag is equal to 1, a ninth syntax element in the corresponding syntax element in the SPS is equal to 0, and the low-frequency non-separable transform LFNST codec tool controlled by the ninth syntax element is disabled; The one or more general constraint flags include a tenth general constraint flag, and when the tenth general constraint flag is equal to 1, a tenth syntax element in the corresponding syntax element in the SPS is equal to 0, and the virtual boundary controlled by the tenth syntax element is disabled; 16. The apparatus according to claim 14, wherein, The one or more general constraint flags include an eleventh general constraint flag, and when the eleventh general constraint flag is equal to 1, an eleventh syntax element and a twelfth syntax element in the corresponding syntax element in the SPS are equal to 0, and the weighted prediction codec tool controlled by the eleventh syntax element and the weighted bi-prediction codec tool controlled by the twelfth syntax element are disabled; 17. A non-transitory computer-readable storage medium storing instructions that cause a processor to: Perform a conversion between a video and a bitstream of the video according to format rules, Among them, The format rules specify one or more general constraint flags to constrain values of corresponding syntax elements in a sequence parameter set SPS and control corresponding codec tools; And the one or more general constraint flags include a first general constraint flag, when the first general constraint flag is equal to 1, a first syntax element in the corresponding syntax element in the SPS is equal to 0, and the maximum transform size equal to 64×64 in the luma samples indicated by the first syntax element is disabled, and the maximum transform size in the luma samples of the SPS is equal to 32×32.

18. The non-transitory computer-readable storage medium according to claim 17, wherein, The one or more general constraint flags include a second general constraint flag, and when the second general constraint flag is equal to 1, a second syntax element in the corresponding syntax element in the SPS is equal to 0, and the symmetric motion vector difference SMVD codec tool controlled by the second syntax element is disabled; The one or more general constraint flags include a third general constraint flag, and when the third general constraint flag is equal to 1, a third syntax element in the corresponding syntax element in the SPS is equal to 0, and the Merge mode with motion vector difference MMVD codec tool controlled by the third syntax element is disabled; The one or more general constraint flags include a fourth general constraint flag, and when the fourth general constraint flag is equal to 1, a fourth syntax element in the corresponding syntax element in the SPS is equal to 0, and the intra prediction using sub - partitioning ISP codec tool controlled by the fourth syntax element is disabled; The one or more general constraint flags include a fifth general constraint flag, and when the fifth general constraint flag is equal to 1, a fifth syntax element in the corresponding syntax element in the SPS is equal to 0, and the intra prediction with multiple reference lines MRL codec tool controlled by the fifth syntax element is disabled; The one or more general constraint flags include a sixth general constraint flag, and when the sixth general constraint flag is equal to 1, a sixth syntax element in the corresponding syntax element in the SPS is equal to 0, and the matrix - based intra prediction MIP codec tool controlled by the sixth syntax element is disabled; The one or more general constraint flags include a seventh general constraint flag, and when the seventh general constraint flag is equal to 1, a seventh syntax element in the corresponding syntax element in the SPS is equal to 0, and the palette codec tool controlled by the seventh syntax element is disabled; The one or more general constraint flags include an eighth general constraint flag, and when the eighth general constraint flag is equal to 1, an eighth syntax element in the corresponding syntax element in the SPS is equal to 0, and the adaptive color transform ACT codec tool controlled by the eighth syntax element is disabled; The one or more general constraint flags include a ninth general constraint flag, and when the ninth general constraint flag is equal to 1, a ninth syntax element in the corresponding syntax element in the SPS is equal to 0, and the low - frequency non - separable transform LFNST codec tool controlled by the ninth syntax element is disabled; The one or more general constraint flags include a tenth general constraint flag, and when the tenth general constraint flag is equal to 1, a tenth syntax element in the corresponding syntax element in the SPS is equal to 0, and the virtual boundary controlled by the tenth syntax element is disabled; And the one or more general constraint flags include an eleventh general constraint flag, and when the eleventh general constraint flag is equal to 1, an eleventh syntax element and a twelfth syntax element in the corresponding syntax element in the SPS are equal to 0, and a weighted prediction codec tool controlled by the eleventh syntax element and a weighted bi-prediction codec tool controlled by the twelfth syntax element are disabled.

19. A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method executed by a video processing device, wherein the method includes: generating the bitstream of the video according to format rules, wherein the format rules specify one or more general constraint flags to constrain values of corresponding syntax elements in a sequence parameter set (SPS) and control corresponding codec tools; and the one or more general constraint flags include a first general constraint flag, and when the first general constraint flag is equal to 1, a first syntax element in the corresponding syntax element in the SPS is equal to 0, and a maximum transform size equal to 64×64 in the luminance samples indicated by the first syntax element is disabled, and the maximum transform size in the luminance samples of the SPS is equal to 32×32; 20. The non-transitory computer-readable recording medium according to claim 19, wherein, the one or more general constraint flags include a second general constraint flag, and when the second general constraint flag is equal to 1, a second syntax element in the corresponding syntax element in the SPS is equal to 0, and a symmetric motion vector difference (SMVD) codec tool controlled by the second syntax element is disabled; the one or more general constraint flags include a third general constraint flag, and when the third general constraint flag is equal to 1, a third syntax element in the corresponding syntax element in the SPS is equal to 0, and a Merge mode with motion vector difference (MMVD) codec tool controlled by the third syntax element is disabled; the one or more general constraint flags include a fourth general constraint flag, and when the fourth general constraint flag is equal to 1, a fourth syntax element in the corresponding syntax element in the SPS is equal to 0, and an intra prediction with sub-division (ISP) codec tool controlled by the fourth syntax element is disabled; the one or more general constraint flags include a fifth general constraint flag, and when the fifth general constraint flag is equal to 1, a fifth syntax element in the corresponding syntax element in the SPS is equal to 0, and an intra prediction with multiple reference lines (MRL) codec tool controlled by the fifth syntax element is disabled; the one or more general constraint flags include a sixth general constraint flag, and when the sixth general constraint flag is equal to 1, a sixth syntax element in the corresponding syntax element in the SPS is equal to 0, and a matrix-based intra prediction (MIP) codec tool controlled by the sixth syntax element is disabled; The one or more general constraint flags include a seventh general constraint flag, and when the seventh general constraint flag is equal to 1, a seventh syntax element in the corresponding syntax element in the SPS is equal to 0, and a palette coding / decoding tool controlled by the seventh syntax element is disabled; The one or more general constraint flags include an eighth general constraint flag, and when the eighth general constraint flag is equal to 1, an eighth syntax element in the corresponding syntax element in the SPS is equal to 0, and an adaptive color transform (ACT) coding / decoding tool controlled by the eighth syntax element is disabled; The one or more general constraint flags include a ninth general constraint flag, and when the ninth general constraint flag is equal to 1, a ninth syntax element in the corresponding syntax element in the SPS is equal to 0, and a low-frequency non-separable transform (LFNST) coding / decoding tool controlled by the ninth syntax element is disabled; The one or more general constraint flags include a tenth general constraint flag, and when the tenth general constraint flag is equal to 1, a tenth syntax element in the corresponding syntax element in the SPS is equal to 0, and a virtual boundary controlled by the tenth syntax element is disabled; And the one or more general constraint flags include an eleventh general constraint flag, and when the eleventh general constraint flag is equal to 1, an eleventh syntax element and a twelfth syntax element in the corresponding syntax element in the SPS are equal to 0, and a weighted prediction coding / decoding tool controlled by the eleventh syntax element and a weighted bi-prediction coding / decoding tool controlled by the twelfth syntax element are disabled.

21. A method for storing a bitstream of a video, comprising: generating the bitstream of the video according to format rules, storing the bitstream in a non-transitory computer-readable recording medium, wherein the format rules specify one or more general constraint flags to constrain values of corresponding syntax elements in a sequence parameter set (SPS) and control corresponding coding / decoding tools; And the one or more general constraint flags include a first general constraint flag, when the first general constraint flag is equal to 1, a first syntax element in the corresponding syntax element in the SPS is equal to 0, and a maximum transform size equal to 64×64 in the luminance samples indicated by the first syntax element is disabled, and a maximum transform size in the luminance samples of the SPS is equal to 32×32.

Citation Information

Patent Citations

  • Encoder and decoder

    JP2007243427A

  • Video parameter set for HEVC and extensions

    WO2014008290A1