Signaling of generic constraint flags
By introducing general constraint information syntax elements and grade, layer, and level information syntax structures, the problem of insufficient resource utilization in multi-layer video encoding and decoding is solved, and the encoding and decoding efficiency is improved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- DOUYIN VISION CO LTD
- Filing Date
- 2021-05-24
- Publication Date
- 2026-04-21
AI Technical Summary
Existing video codec standards lack effective constraint flag design when handling multi-layer video codecs, resulting in insufficient resource utilization and low efficiency during the codec process.
It introduces general constraint information syntax elements and grade, layer, and level information syntax structures, and ensures the reasonable allocation of resources and efficiency improvement in the video encoding and decoding process by constraining the position and existence conditions of syntax elements through rules.
By standardizing the location and existence conditions of syntax elements, the resource utilization efficiency of the video encoding and decoding process is improved, and the performance and efficiency of multi-layer video encoding and decoding are enhanced.
Smart Images

Figure CN115804092B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application is a continuation of International Patent Application No. PCT / CN2021 / 095386, filed on May 24, 2021, and claims priority and benefit to International Patent Application No. PCT / CN2020 / 091740, filed on May 22, 2020. The entire disclosure of all the aforementioned patent applications is incorporated herein by reference. Technical Field
[0003] This patent document relates to image and video encoding and decoding. Background Technology
[0004] Digital video accounts for the largest share of bandwidth usage on the internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention
[0005] This document discloses techniques that can be used by video encoders and decoders to process codec representations using control information useful for decoding the codec representations of video.
[0006] In one example aspect, a video processing method is disclosed. The method includes performing a conversion between a video and a video bitstream according to rules, wherein the rules specify that syntax elements are included in a grade, layer, level information syntax structure to indicate whether one or more general constraint information syntax elements are included in a general constraint information syntax structure and / or whether the general constraint information syntax structure is included in a grade, layer, level information syntax structure.
[0007] In another example, a different video processing method is disclosed. This method includes performing a conversion between video and video bitstreams according to rules, wherein a syntax structure includes information of one or more video codec layers included in the bitstream and corresponding to one or more output layer sets; and wherein the rules specify that the starting position of syntax elements in the syntax structure that specify level information conforming to one or more output layer sets is constrained to be aligned with byte boundaries.
[0008] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video and a video bitstream according to rules, wherein the rules specify a syntax structure indicating constraint information about the bitstream; wherein the rules specify that the syntax structure is allowed to include syntax elements not aligned with byte boundaries.
[0009] In another example, a different video processing method is disclosed. This method involves performing a conversion between video and video bitstreams according to rules, where the rules specify where and how reserved bits are included in a syntax structure indicating one or more codec constraints applicable to the conversion.
[0010] In another example, a different video processing method is disclosed. This method includes: for a conversion between a video and a bitstream of video comprising one or more images containing one or more stripes, determining, according to a rule, that only I-stripes are enabled for the conversion; and performing the conversion according to that determination, wherein the rule specifies that, in response to the only I-stripes being enabled, the bitstream conforms to one or more additional constraints.
[0011] In another example, a different video processing method is disclosed. This method includes performing a conversion between video and video bitstreams according to rules, wherein the rules specify one or more syntax elements in a sequence parameter set, a picture parameter set, a picture header, or a sequence header that are constrained according to a general constraint information syntax element indicating constraints applicable to the conversion.
[0012] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video and a video bitstream according to rules, wherein the rules specify whether or how a first syntactic element in a syntactic structure indicating one or more constraints applicable to the conversion is indicated depends on whether or how a second syntactic element is indicated in the syntactic structure.
[0013] In another example, a different video processing method is disclosed. This method includes performing a conversion between video and video bitstreams according to rules, wherein the rules specify whether or how syntax elements indicating general constraints on the conversion are included in the bitstream depends on the level and / or grade used for the conversion.
[0014] In yet another example, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the methods described above.
[0015] In yet another example, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the methods described above.
[0016] In yet another example, a computer-readable medium storing code is disclosed. This code embodies one of the methods described herein in the form of processor-executable code.
[0017] These and other features will be described in this document. Attached Figure Description
[0018] Figure 1 This is a block diagram of an example video processing system.
[0019] Figure 2 This is a block diagram of a video processing device.
[0020] Figure 3 This is a flowchart of an example method for video processing.
[0021] Figure 4 This is a block diagram illustrating a video encoding / decoding system according to some embodiments of the disclosed technology.
[0022] Figure 5 This is a block diagram illustrating an encoder according to some embodiments of the disclosed technology.
[0023] Figure 6 This is a block diagram illustrating a decoder according to some embodiments of the disclosed technology.
[0024] Figure 7 This is a flowchart of an example method for video processing based on some implementations of the disclosed technology.
[0025] Figure 8A and Figure 8B This is a flowchart of an example method for video processing based on some implementations of the disclosed technology.
[0026] Figures 9A to 9E This is a flowchart of an example method for video processing based on some implementations of the disclosed technology. Detailed Implementation
[0027] Chapter headings are used in this document for ease of understanding, and the applicability of the technologies and embodiments disclosed in each chapter is not limited to that chapter alone. Furthermore, the use of H.266 technical terminology in some descriptions is merely for ease of understanding and not to limit the scope of the disclosed technologies. Therefore, the technologies described herein are also applicable to other video codec protocols and designs.
[0028] 1. Introduction
[0029] This document relates to video codec technology. Specifically, it concerns the design of constraint flag-related syntax in video codecs. 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 codecs, such as the Multi-Functional Video Codec (VVC) currently under development.
[0030] 2. Abbreviation
[0031] APS Adaptive Parameter Set
[0032] AU Access Unit
[0033] AUD Access Unit Separator
[0034] AVC Advanced Video Codec
[0035] CLVS codec layer video sequence
[0036] CPB image buffer
[0037] CRA Fully Random Access
[0038] CTU (Codec Tree Unit)
[0039] CVS codec video sequence
[0040] DPB Decoding Image Buffer
[0041] DPS Decoding Parameter Set
[0042] EOB End of Bitstream
[0043] End of EOS sequence
[0044] GDR gradually decoded and refreshed
[0045] HEVC High-Efficiency Video Encoding and Decoding
[0046] HRD Assumption Reference Decoder
[0047] IDR Instant Decoding and Refresh
[0048] JEM Joint Exploration Model
[0049] MCTS Motion Restraint Piece Set
[0050] NAL Network Abstraction Layer
[0051] OLS Output Layer Set
[0052] PH image header
[0053] PPS Image Parameter Set
[0054] PTL levels, tiers, and grades
[0055] PU Image Unit
[0056] RBSP raw byte sequence payload
[0057] SEI Assist Enhancement Information
[0058] SH strip header
[0059] SPS Sequence Parameter Set
[0060] SVC Scalable Video Codec
[0061] VCL (Video Codec Layer)
[0062] VPS Video Parameter Set
[0063] VTM VVC Test Model
[0064] VUI Video Availability Information
[0065] VVC Multi-Functional Video Encoding and Decoding
[0066] 3. Background
[0067] Video codec standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Visual. The two organizations jointly developed the H.262 / MPEG-2 video, H.264 / MPEG-4 Advanced Video Coding (AVC), and H.265 / HEVC standards. Since H.262, video codec standards have been based on a hybrid video codec architecture, employing temporal prediction plus transform coding. To explore future video codec 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 reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly, and the goal of new codec standards is to reduce the bitrate by 50% compared to HEVC. The new video codec standard was officially named Multifunctional Video Codec (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 ongoing efforts to standardize VVC, new codec technologies have been adopted into the VVC standard at every JVET meeting. The VVC working draft and test model VTM are updated after each meeting. The current goal of the VVC project is to achieve Technical Finalization (FDIS) at the meeting in July 2020.
[0068] 3.1. General grade, level, and hierarchy syntax and semantics
[0069] In the latest VVC draft text, the general level, hierarchy, and semantics are as follows:
[0070]
[0071]
[0072] The profile_tier_level() syntax provides level information and, optionally, tier, level, subtier, and general constraint information.
[0073] When the `profile_tier_level()` syntax is included in a VPS, `OlsInScope` is one or more OLSs specified by the VPS. When the `profile_tier_level()` syntax is included in an SPS, `OlsInScope` is the OLS that includes only the lowest layer among the layers of the reference SPS, and that lowest layer is an independent layer.
[0074] `general_profile_idc` indicates the profile that OlsInScope conforms to, as specified in Appendix A. The bitstream should not contain a value for `general_profile_idc` other than those specified in Appendix A. Other values for `general_profile_idc` are reserved for future use by ITU-T|ISO / IEC.
[0075] The general_tier_flag specifies the layer context used to interpret the general_level_idc, as specified in Appendix A.
[0076] `general_level_idc` indicates the level of compliance with OlsInScope, as specified in Appendix A. The bitstream should not contain values other than those specified in Appendix A. Other values for `general_level_idc` are reserved for future use by ITU-T|ISO / IEC.
[0077] Note 1 – A larger value for general_level_idc indicates a higher level. The maximum level of signaling notification in the DCI NAL unit of OlsInScope can be higher than, but not lower than, the level of signaling notification in the SPS of the CLVS contained within OlsInScope.
[0078] Note 2 – When OlsInScope is matched with multiple profiles, general_profile_idc should indicate the profile that provides the preferred decoding result or preferred bitstream identifier, as determined by the encoder (in a manner not specified in this specification).
[0079] Note 3 – When the CVS of OlsInScope conforms to different tiers, multiple profile_tier_level() syntax structures can be included in the DCI NAL unit, such that for each CVS of OlsInScope, there is at least one set of indicated tiers, layers, and levels of the decoder capable of decoding the CVS.
[0080] num_sub_profiles specifies the number of syntax elements in general_sub_profile_idc[i].
[0081] 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.
[0082] A sublayer_level_present_flag[i] equal to 1 indicates that the level information exists in the profile_tier_level() syntax structure of the sublayer representation with TemporalId equal to i. A sublayer_level_present_flag[i] equal to 0 indicates that the level information does not exist in the profile_tier_level() syntax structure of the sublayer representation with TemporalId equal to i.
[0083] ptl_alignment_zero_bits should be equal to 0.
[0084] The semantics of the syntax element sublayer_level_idc[i] are the same as those of the syntax element general_level_idc, except for the specification of inference of non-existent values, but it applies to sublayer representations where TemporalId equals i.
[0085] When it does not exist, the value of sublayer_level_idc[i] is inferred as follows:
[0086] -sublayer_level_idc[maxNumSubLayersMinus1] is inferred to be equal to general_level_idc of the same profile_tier_level() structure.
[0087] - For i from maxNumSubLayersMinus1-1 to 0 (in descending order of i value) (inclusive of maxNumSubLayersMinus1-1 and 0), sublayer_level_idc[i] is inferred to be equal to sublayer_level_idc[i+1].
[0088] 3.2. General Constraint Information Syntax and Semantics
[0089] In the latest VVC draft text, the syntax and semantics of general constraint information are as follows:
[0090]
[0091]
[0092] general_progressive_source_flag and general_interlaced_source_flag are interpreted as follows:
[0093] - If general_progressive_source_flag equals 1 and general_interlaced_source_flag equals 0, then the source scan type of the image in OlsInScope should be interpreted as a line-by-line scan only.
[0094] Otherwise, if general_progressive_source_flag equals 0 and general_interlaced_source_flag equals 1, the source scan type of the image in OlsInScope should be interpreted as interlaced scan only.
[0095] Otherwise, if general_progressive_source_flag equals 0 and general_interlaced_source_flag equals 0, the source scan type of the image in OlsInScope should be interpreted as unknown or unspecified.
[0096] Otherwise (general_progressive_source_flag equals 1, and general_interlaced_source_flag equals 1), the source scan type for each image in OlsInScope is indicated at the image level using the syntax element source_scan_type in the Frame Field Information (SEI) message. The requirement for bitstream consistency is that the Frame Field Information (SEI) message should be present in every AU when both general_progressive_source_flag and general_interlaced_source_flag are equal to 1.
[0097] Note 1 – The decoder may ignore the values of general_progressive_source_flag and general_interlaced_source_flag. Furthermore, the actual source scan type of the image 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.
[0098] A `general_non_packed_constraint_flag` value of 1 specifies that no frame encapsulation arrangement (SEI) messages should exist in the OlsInScope bitstream. A `general_non_packed_constraint_flag` value of 0 does not impose such a constraint.
[0099] Note 2 – The decoder can ignore the value of general_non_packed_constraint_flag because there is no decoding process requirement associated with the presence or interpretation of the frame encapsulation arrangement SEI message.
[0100] A `general_frame_only_constraint_flag` value of 1 specifies that OlsInScope transmits images representing frames. A `general_frame_only_constraint_flag` value of 0 specifies that OlsInScope may or may not represent frames.
[0101] Note 3 – The decoder can ignore the value of general_frame_only_constraint_flag because there is no requirement for it in the associated decoding process.
[0102] A `general_non_projected_constraint_flag` value of 1 specifies that no equirectangular projection SEI messages or generalized cube projection SEI messages should exist in the OlsInScope bitstream. A `general_non_projected_constraint_flag` value of 0 does not impose such a constraint.
[0103] Note 4 – The decoder may ignore the value of general_non_projected_constraint_flag because there is no decoding process requirement associated with the presence or interpretation of the isorectangular projection SEI message and the generalized cube projection SEI message.
[0104] An intra_only_constraint_flag value of 1 specifies that slice_type should be equal to I. An intra_only_constraint_flag value of 0 does not impose such a constraint.
[0105] The max_bitdepth_constraint_idc specifies that bit_depth_minus8 should be in the range of 0 to max_bitdepth_constraint_idc (inclusive).
[0106] max_chroma_format_constraint_idc specifies that chroma_format_idc should be in the range of 0 to max_chroma_format_constraint_idc (inclusive).
[0107] A value of 1 for `no_res_change_in_clvs_constraint_flag` specifies that `res_change_in_clvs_allowed_flag` should be 0. A value of 0 for `no_res_change_in_clvs_constraint_flag` does not impose such a constraint.
[0108] A value of 1 for `one_tile_per_pic_constraint_flag` specifies that each image should contain only one tile. A value of 0 for `one_tile_per_pic_constraint_flag` does not impose this constraint.
[0109] A value of 1 for `one_slice_per_pic_constraint_flag` specifies that each image should contain only one slice. A value of 0 for `one_slice_per_pic_constraint_flag` imposes no such constraint.
[0110] `one_subpic_per_pic_constraint_flag` equal to 1 specifies that each image should contain only one subpic. `one_subpic_per_pic_constraint_flag` equal to 0 imposes no such constraint. When `one_slice_per_pic_constraint_flag` equals 1, the value of `one_subpic_per_pic_constraint_flag` should be equal to 1.
[0111] A value of 1 for `no_qtbtt_dual_tree_intra_constraint_flag` specifies that `qtbtt_dual_tree_intra_flag` should be 0. A value of 0 for `no_qtbtt_dual_tree_intra_constraint_flag` does not impose such a constraint.
[0112] A value of 1 for `no_partition_constraints_override_constraint_flag` indicates that `partition_constraints_override_enabled_flag` should be 0. A value of 0 for `no_partition_constraints_override_constraint_flag` disables the imposition of such constraints.
[0113] A value of 1 for no_sao_constraint_flag indicates that sps_sao_enabled_flag should be 0. A value of 0 for no_sao_constraint_flag does not impose such a constraint.
[0114] A value of 1 for no_alf_constraint_flag specifies that sps_alf_enabled_flag should be 0. A value of 0 for no_alf_constraint_flag does not impose such a constraint.
[0115] A value of 1 for no_ccalf_constraint_flag indicates that sps_ccalf_enabled_flag should be 0. A value of 0 for no_ccalf_constraint_flag does not impose such a constraint.
[0116] A value of 1 for no_joint_cbcr_constraint_flag indicates that sps_joint_cbcr_enabled_flag should be 0, while a value of 0 for no_joint_cbcr_constraint_flag means that no such constraint is imposed.
[0117] A value of 1 for `no_ref_wraparound_constraint_flag` specifies that `sps_ref_wraparound_enabled_flag` should be 0. A value of 0 for `no_ref_wraparound_constraint_flag` disables this constraint.
[0118] A value of 1 for `no_temporal_mvp_constraint_flag` specifies that `sps_temporal_mvp_enabled_flag` should be 0. A value of 0 for `no_temporal_mvp_constraint_flag` does not impose this constraint.
[0119] A value of 1 for `no_sbtmvp_constraint_flag` specifies that `sps_sbtmvp_enabled_flag` should be 0. A value of 0 for `no_sbtmvp_constraint_flag` does not impose this constraint.
[0120] A value of 1 for no_amvr_constraint_flag indicates that sps_amvr_enabled_flag should be 0. A value of 0 for no_amvr_constraint_flag does not impose such a constraint.
[0121] A value of 1 for `no_bdof_constraint_flag` specifies that `sps_bdof_enabled_flag` should be 0. A value of 0 for `no_bdof_constraint_flag` does not impose such a constraint.
[0122] A value of 1 for `no_dmvr_constraint_flag` specifies that `sps_dmvr_enabled_flag` should be 0. A value of 0 for `no_dmvr_constraint_flag` does not impose this constraint.
[0123] A value of 1 for no_cclm_constraint_flag indicates that sps_cclm_enabled_flag should be 0. A value of 0 for no_cclm_constraint_flag does not impose such a constraint.
[0124] A value of 1 for `no_mts_constraint_flag` specifies that `sps_mts_enabled_flag` should be 0. A value of 0 for `no_mts_constraint_flag` does not impose this constraint.
[0125] A value of 1 for `no_sbt_constraint_flag` specifies that `sps_sbt_enabled_flag` should be 0. A value of 0 for `no_sbt_constraint_flag` does not impose such a constraint.
[0126] A value of 1 for `no_affine_motion_constraint_flag` specifies that `sps_affine_enabled_flag` should be 0. A value of 0 for `no_affine_motion_constraint_flag` disables this constraint.
[0127] A value of 1 for `no_bcw_constraint_flag` specifies that `sps_bcw_enabled_flag` should be 0. A value of 0 for `no_bcw_constraint_flag` does not impose this constraint.
[0128] A value of 1 for `no_ibc_constraint_flag` specifies that `sps_ibc_enabled_flag` should be 0. A value of 0 for `no_ibc_constraint_flag` does not impose this constraint.
[0129] A value of 1 for `no_ciip_constraint_flag` specifies that `sps_ciip_enabled_flag` should be 0. A value of 0 for `no_cipp_constraint_flag` does not impose such a constraint.
[0130] A value of 1 for `no_fpel_mmvd_constraint_flag` specifies that `sps_fpel_mmvd_enabled_flag` should be 0. A value of 0 for `no_fpel_mmvd_constraint_flag` does not impose such a constraint.
[0131] A value of 1 for no_gpm_constraint_flag indicates that sps_gpm_enabled_flag should be 0. A value of 0 for no_gpm_constraint_flag does not impose such a constraint.
[0132] A value of 1 for no_ladf_constraint_flag indicates that sps_ladf_enabled_flag should be 0. A value of 0 for no_ladf_constraint_flag does not impose such a constraint.
[0133] A value of 1 for `no_transform_skip_constraint_flag` indicates that `sps_transform_skip_enabled_flag` should be 0. A value of 0 for `no_transform_skip_constraint_flag` does not impose this constraint.
[0134] A value of 1 for `no_bdpcm_constraint_flag` specifies that `sps_bdpcm_enabled_flag` should be 0. A value of 0 for `no_bdpcm_constraint_flag` does not impose this constraint.
[0135] A value of 1 for no_qp_delta_constraint_flag indicates that bitstream consistency is required, and cu_qp_delta_enabled_flag should be 0. A value of 0 for no_qp_delta_constraint_flag does not impose such a constraint.
[0136] A value of 1 for no_dep_quant_constraint_flag specifies that bitstream consistency is required, and that sps_dep_quant_enabled_flag should be 0. A value of 0 for no_dep_quant_constraint_flag does not impose such a constraint.
[0137] A value of 1 for `no_sign_data_hiding_constraint_flag` specifies that the requirement for bitstream consistency is that `sps_sign_data_hiding_enabled_flag` should be 0. A value of 0 for `no_sign_data_hiding_constraint_flag` does not impose such a constraint.
[0138] A value of 1 for `no_mixed_nalu_types_in_pic_constraint_flag` specifies that bitstream consistency is required, and `mixed_nalu_types_in_pic_flag` should be 0. A value of 0 for `no_mixed_nalu_types_in_pic_constraint_flag` does not impose such a constraint.
[0139] A `no_trail_constraint_flag` value of 1 specifies that NAL units with `nuh_unit_type` equal to `TRAIL_NUT` should not exist in `OlsInScope`. A `no_trail_constraint_flag` value of 0 does not impose such a constraint.
[0140] A value of no_stsa_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to STSA_NUT should not exist in OlsInScope. A value of no_stsa_constraint_flag equal to 0 does not impose such a constraint.
[0141] A value of no_rasl_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to RASL_NUT should not exist in OlsInScope. A value of no_rasl_constraint_flag equal to 0 does not impose such a constraint.
[0142] A value of no_radl_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to RADL_NUT should not exist in OlsInScope. A value of no_radl_constraint_flag equal to 0 does not impose such a constraint.
[0143] A `no_idr_constraint_flag` value of 1 specifies that NAL units with `nuh_unit_type` equal to `IDR_W_RADL` or `IDR_N_LP` should not exist in OlsInScope. A `no_idr_constraint_flag` value of 0 does not impose such a constraint.
[0144] A no_cra_constraint_flag value of 1 specifies that NAL units with nuh_unit_type equal to CRA_NUT should not exist in OlsInScope. A no_cra_constraint_flag value of 0 does not impose such a constraint.
[0145] A value of 1 for `no_gdr_constraint_flag` specifies that NAL units with `nuh_unit_type` equal to `GDR_NUT` should not exist in `OlsInScope`. A value of 0 for `no_gdr_constraint_flag` does not impose such a constraint.
[0146] A value of 1 for `no_aps_constraint_flag` specifies that NAL units with `nuh_unit_type` equal to `PREFIX_APS_NUT` or `SUFFIX_APS_NUT` should not exist in `OlsInScope`. A value of 0 for `no_aps_constraint_flag` does not impose such a constraint.
[0147] gci_alignment_zero_bits should be equal to 0.
[0148] `num_reserved_constraint_bytes` specifies the number of bytes reserved for constraint. The value of `num_reserved_constraint_bytes` should be 0. Other values of `num_reserved_constraint_bytes` are reserved for future use by ITU-T|ISO / IEC and should not exist in the bitstream conforming to this version of the specification.
[0149] The `gci_reserved_constraint_byte[i]` can have any value. Its presence and value do not affect the grade specified in this version of the specification for the decoder. Decoders conforming to this version of the specification should ignore the values of all `gci_reserved_constraint_byte[i]` syntax elements.
[0150] 3.3. DCI Syntax and Semantics
[0151] In the latest VVC draft text, the DCI syntax and semantics are as follows:
[0152]
[0153]
[0154] The DCI RBSP can be made available to the decoder by existing in the bitstream, being included in at least the first AU of the bitstream, or being provided by external means.
[0155] Note 1 – The information contained in the DCI RBSP is not required for the operation of the decoding process specified in Clauses 2 through 9 of this specification.
[0156] When present, all DCI NAL units in the bitstream should have the same content.
[0157] The increment of 1 in dci_max_sublayers_minus1 specifies the maximum number of temporal sublayers that can exist in each CVS of the bitstream. The value of dci_max_sublayers_minus1 should be in the range of 0 to 6 (inclusive).
[0158] The value of dci_reserved_zero_bit should 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.
[0159] The increment of dci_num_ptls_minus1 by 1 specifies the number of profile_tier_level() syntax structures in the DCI NAL unit.
[0160] The requirement for bitstream consistency is that each OLS in the CVS of the bitstream should conform to at least one profile_tier_level() syntax structure in the DCI NAL unit.
[0161] Note 2 – DCI NAL units may include PTL information that is common to multiple OLS and may be carried in multiple profile_tier_level() syntax structures, and do not need to include PTL information for each OLS separately.
[0162] A value of 0 for dci_extension_flag indicates that no dci_extension_data_flag syntax element exists in the DCI RBSP syntax structure. A value of 1 for dci_extension_flag indicates that the dci_extension_data_flag syntax element exists in the DCI RBSP syntax structure.
[0163] The `dci_extension_data_flag` can have any value. Its presence and value do not affect the decoder's conformance to the grade specified in Appendix A. Decoders of this version that conform to this specification should ignore all `dci_extension_data_flag` syntax elements.
[0164] 3.4. VPS Syntax and Semantics
[0165] In the latest VVC draft text, the VPS syntax and semantics are as follows:
[0166]
[0167]
[0168]
[0169] The VPS RBSP should be available for the decoding process before being referenced, either in at least one AU with TemporalId equal to 0 or provided by external means.
[0170] All VPS NAL units in CVS that have a specific value for vps_video_parameter_set_id should have the same content.
[0171] The `vps_video_parameter_set_id` provides an identifier for the VPS, which is then referenced by other syntax elements. The value of `vps_video_parameter_set_id` should be greater than 0.
[0172] The increment of vps_max_layers_minus1 specifies the maximum allowed number of layers in each CVS of the reference VPS.
[0173] Increasing 1 in `vps_max_sublayers_minus1` specifies the maximum number of temporal sublayers that can exist in each CVS of the reference VPS. The value of `vps_max_sublayers_minus1` should be in the range of 0 to 6 (inclusive).
[0174] `vps_all_layers_same_num_sublayers_flag` equal to 1 indicates that the number of temporal sublayers is the same for all layers in each CV of the reference VPS. `vps_all_layers_same_num_sublayers_flag` equal to 0 indicates that layers in each CV of the reference VPS may or may not have the same number of temporal sublayers. When it does not exist, the value of `vps_all_layers_same_num_sublayers_flag` is inferred to be equal to 1.
[0175] A `vps_all_independent_layers_flag` value of 1 indicates that all layers in the CVS are encoded and decoded independently without using inter-frame layer prediction. A `vps_all_independent_layers_flag` value of 0 indicates that one or more layers in the CVS can use inter-frame layer prediction. When it does not exist, the value of `vps_all_independent_layers_flag` is inferred to be equal to 1.
[0176] 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] should be less than vps_layer_id[n].
[0177] A value of 1 for `vps_independent_layer_flag[i]` indicates that the layer with index `i` does not use inter-frame layer prediction. A value of 0 for `vps_independent_layer_flag[i]` indicates that the layer with index `i` can use inter-frame layer prediction, and the syntax element `vps_direct_ref_layer_flag[i][j]` (where `j` is in the range 0 to `i-1`, inclusive) exists in the VPS. When it does not exist, the value of `vps_independent_layer_flag[i]` is inferred to be 1.
[0178] `vps_direct_ref_layer_flag[i][j]` equal to 0 indicates that the layer with index `j` is not a direct reference layer to the layer with index `i`. `vps_direct_ref_layer_flag[i][j]` equal to 1 indicates that the layer with index `j` is a direct reference layer to the layer with index `i`. `vps_direct_ref_layer_flag[i][j]` is inferred to be equal to 0 when it does not exist for `i` and `j` in the range 0 to `vps_max_layers_minus1` (inclusive). When `vps_independent_layer_flag[i]` equals 0, there should be at least one value for `j` in the range 0 to `i-1` (inclusive) such that the value of `vps_direct_ref_layer_flag[i][j]` is equal to 1.
[0179] The variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsRefLayerFlag[j] are derived as follows:
[0180]
[0181]
[0182] The variable GeneralLayerIdx[i], which specifies the layer index of the layer whose nuh_layer_id is equal to vps_layer_id[i], is deduced as follows:
[0183]
[0184] For any two distinct values i and j that are both in the range of 0 to vps_max_layers_minus1 (inclusive), 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.
[0185] A value of 1 for `max_tid_ref_present_flag[i]` indicates that the syntax element `max_tid_il_ref_pics_plus1[i]` exists. A value of 0 for `max_tid_ref_present_flag[i]` indicates that the syntax element `max_tid_il_ref_pics_plus1[i]` does not exist.
[0186] A value of 0 for `max_tid_il_ref_pics_plus1[i]` indicates that the non-IRAP image of layer i is not used for inter-frame layer prediction. A value greater than 0 for `max_tid_il_ref_pics_plus1[i]` indicates that, for decoding the image of layer i, no image with a TemporalId greater than `max_tid_il_ref_pics_plus1[i] - 1` is used for ILRP. When no such image exists, the value of `max_tid_il_ref_pics_plus1[i]` is inferred to be equal to 7.
[0187] `each_layer_is_an_ols_flag` equal to 1 indicates that each OLS contains only one layer, and each layer in the reference VPS's CVS is itself an OLS, where the individually included layer is the only output layer. `each_layer_is_an_ols_flag` equal to 0 indicates 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.
[0188] The value of ols_mode_idc equals 0, which means that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1. The i-th OLS includes layers with layer indices from 0 to i (inclusive), and for each OLS, only the highest layer in the OLS is output.
[0189] The value of ols_mode_idc equals 1, which specifies that the total number of OLS specified by the VPS is equal to vps_max_layers_minus1+1. The i-th OLS includes layers with layer indices from 0 to i (inclusive), and for each OLS, all layers in the OLS are output.
[0190] The value of ols_mode_idc equal to 2 indicates that the total number of OLS specified by the VPS is explicitly signaled, and for each OLS, the output layer is explicitly signaled, and the other layers are layers that are direct or indirect reference layers to the output layer of the OLS.
[0191] The value of ols_mode_idc should be in the range of 0 to 2 (inclusive). The value of ols_mode_idc 3 is reserved for future use by ITU-T|ISO / IEC.
[0192] When vps_all_independent_layers_flag equals 1 and each_layer_is_an_ols_flag equals 0, the value of ols_mode_idc is inferred to be equal to 2.
[0193] The increment of 1 in num_output_layer_sets_minus1 specifies the total number of OLS specified by the VPS when ols_mode_idc equals 2.
[0194] The variable TotalNumOlss, which specifies the total number of OLS values assigned by the VPS, is derived as follows:
[0195]
[0196] `ols_output_layer_flag[i][j]` equal to 1 indicates that when `ols_mode_idc` equals 2, the layer whose `nuh_layer_id` equals `vps_layer_id[j]` is the output layer of the i-th OLS. `ols_output_layer_flag[i][j]` equal to 0 indicates that when `ols_mode_idc` equals 2, the layer whose `nuh_layer_id` equals `vps_layer_id[j]` is not the output layer of the i-th OLS.
[0197] The variables NumOutputLayersInOls[i], which specify the number of output layers in the i-th OLS, NumSubLayersInLayerInOLS[i][j], which specify the number of sublayers in the j-th layer in the i-th OLS, OutputLayerIdInOls[i][j], which specify the nuh_layer_id value of the j-th output layer in the i-th OLS, and LayerUsedAsOutputLayerFlag[k], which specify whether the k-th layer is used as an output layer in at least one OLS, are derived as follows:
[0198]
[0199]
[0200] For each value of i in the range from 0 to vps_max_layers_minus1 (inclusive), the values of LayerUsedAsRefLayerFlag[i] and LayerUsedAsOutputLayerFlag[i] should not both be equal to 0. In other words, there should be no layer that is neither the output layer of at least one OLS nor a direct reference layer of any other layer.
[0201] For each OLS, there should be at least one layer as the output layer. In other words, for any value of i in the range of 0 to TotalNumOlss-1 (inclusive), the value of NumOutputLayersInOls[i] should be greater than or equal to 1.
[0202] The variables NumLayersInOls[i], which specify the number of layers in the i-th OLS, and LayerIdInOls[i][j], which specify the nuh_layer_id value of the j-th layer in the i-th OLS, are derived as follows:
[0203]
[0204] Note 1 – The 0th OLS contains only the lowest layer (i.e., the layer whose nuh_layer_id is equal to vps_layer_id[0]), and for the 0th OLS, the output only includes the layer.
[0205] The variable OlsLayerIdx[i][j], which specifies that nuh_layer_id is equal to LayerIdInOls[i][j], is derived as follows:
[0206]
[0207] The lowest layer of each OLS should be an independent layer. In other words, for each i in the range of 0 to TotalNumOlss-1 (inclusive), the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] should be equal to 1.
[0208] Each layer should be included in at least one OLS specified by the VPS. In other words, for each layer for a specific value of nuh_layer_id, nuhLayerId equal to one of vps_layer_id[k] (k being in the range of 0 to vps_max_layers_minus1, inclusive), there should be at least one pair of values i and j (where i is in the range of 0 to TotalNumOlss-1, inclusive, and j is in the range of NumLayersInOls[i]-1, inclusive) such that the value of LayerIdInOls[i][j] is equal to nuhLayerId.
[0209] Increasing `vps_num_ptls_minus1` by 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`.
[0210] `pt_present_flag[i]` equal to 1 indicates that the tier, level, and general constraint information exists in the `i`th `profile_tier_level()` syntax structure in the VPS. `pt_present_flag[i]` equal to 0 indicates that the tier, level, and general constraint information does 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 tier, level, and general constraint information of the `i`th `profile_tier_level()` syntax structure in the VPS is inferred to be the same as that of the `(i-1)`th `profile_tier_level()` syntax structure in the VPS.
[0211] `ptl_max_temporal_id[i]` specifies the TemporalId of the highest sublayer representation in the `i`th `profile_tier_level()` syntax structure within the VPS where the level information resides. The value of `ptl_max_temporal_id[i]` should be in the range of 0 to `vps_max_sublayers_minus1` (inclusive). When `vps_max_sublayers_minus1` equals 0, the value of `ptl_max_temporal_id[i]` is inferred to be 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`.
[0212] vps_ptl_alignment_zero_bit should be equal to 0.
[0213] `ols_ptl_idx[i]` specifies the index of the list of `profile_tier_level()` syntax structures in the VPS for the `profile_tier_level()` syntax structure applicable to the `i`-th OLS. When present, the value of `ols_ptl_idx[i]` should be in the range of 0 to `vps_num_ptls_minus1` (inclusive). When `vps_num_ptls_minus1` is equal to 0, the value of `ols_ptl_idx[i]` is inferred to be equal to 0.
[0214] When NumLayersInOls[i] equals 1, the profile_tier_level() syntax structure applicable to the i-th OLS also exists in the SPS referenced by the layer in the i-th OLS. The requirement for bitstream consistency is that when NumLayersInOls[i] equals 1, the profile_tier_level() syntax structure for signaling notification in the i-th OLS in the VPS and SPS should be the same.
[0215] `vps_num_dpb_params` specifies the number of `dpb_parameters()` syntax structures in the VPS. The value of `vps_num_dpb_params` should be in the range of 0 to 16 (inclusive). If it does not exist, the value of `vps_num_dpb_params` is inferred to be 0.
[0216] `vps_sublayer_dpb_params_present_flag` controls the presence of the `max_dec_pic_buffering_minus1[]`, `max_num_reorder_pics[]`, and `max_latency_increase_plus1[]` syntax elements in the `dpb_parameters()` syntax structure of the VPS. When these elements are not present, `vps_sub_dpb_params_info_present_flag` is inferred to be equal to 0.
[0217] `dpb_max_temporal_id[i]` specifies the TemporalId of the highest sublayer representation in the i-th `dpb_parameters()` syntax structure in the VPS that the DPB parameter can exist in. The value of `dpb_max_temporal_id[i]` should be in the range of 0 to `vps_max_sublayers_minus1` (inclusive). When `vps_max_sublayers_minus1` equals 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` equals 1, the value of `dpb_max_temporal_id[i]` is inferred to be equal to `vps_max_sublayers_minus1`.
[0218] ols_dpb_pic_width[i] specifies the width of the image storage buffer for the i-th OLS, in units of luminance samples.
[0219] ols_dpb_pic_height[i] specifies the height of each image storage buffer in the i-th OLS, in units of luminance samples.
[0220] `ols_dpb_params_idx[i]` specifies the index of the list of `dpb_parameters()` syntax structures in the VPS for the `dpb_parameters()` syntax structure applicable to the `i`-th OLS when `NumLayersInOls[i]` is greater than 1. When present, the value of `ols_dpb_params_idx[i]` should be in the range of 0 to `vps_num_dpb_params-1` (inclusive). When `ols_dpb_params_idx[i]` does not exist, its value is inferred to be 0.
[0221] When NumLayersInOls[i] equals 1, the dpb_parameters() syntax structure applicable to the i-th OLS exists in the SPS referenced by the layer in the i-th OLS.
[0222] A value of 1 for `vps_general_hrd_params_present_flag` indicates that the syntax structure `general_hrd_parameters()` and other HRD parameters exist in the VPS RBSP syntax structure. A value of 0 for `vps_general_hrd_params_present_flag` indicates that the syntax structure `general_hrd_parameters()` and other HRD parameters do not exist in the VPS RBSP syntax structure. When they do not exist, the value of `vps_general_hrd_params_present_flag` is inferred to be 0.
[0223] When NumLayersInOls[i] equals 1, the general_hrd_parameters() syntax structure applicable to the i-th OLS exists in the SPS referenced by the layer in the i-th OLS.
[0224] `vps_sublayer_cpb_params_present_flag` equal to 1 specifies that the `i`th `ols_hrd_parameters()` syntax structure in the VPS contains the HRD parameters of the sublayer representation whose TemporalId is in the range of 0 to `hrd_max_tid[i]` (inclusive). `vps_sublayer_cpb_params_present_flag` equal to 0 specifies that the `i`th `ols_hrd_parameters()` syntax structure in the VPS contains the HRD parameters of the sublayer representation whose TemporalId is only equal to `hrd_max_tid[i]`. When `vps_max_sublayers_minus1` equals 0, the value of `vps_sublayer_cpb_params_present_flag` is inferred to be 0.
[0225] When vps_sublayer_cpb_params_present_flag equals 0, the HRD parameters of the sublayer representation with TemporalId in the range of 0 to hrd_max_tid[i]-1 (inclusive) are inferred to be the same as those of the sublayer representation with TemporalId equal to hrd_max_tid[i]. These include the HRD parameters from the fixed_pic_rate_general_flag[i] syntax element up to the sublayer_hrd_parameters(i) syntax structure immediately following the condition "if(general_vcl_hrd_params_present_flag)" in the ols_hrd_parameters syntax structure.
[0226] Increasing 1 to num_ols_hrd_params_minus1 specifies the number of ols_hrd_parameters() syntax structures present in the general_hrd_parameters() syntax structure when vps_general_hrd_params_present_flag equals 1. The value of num_ols_hrd_params_minus1 should be in the range of 0 to TotalNumOlss-1 (inclusive).
[0227] `hrd_max_tid[i]` specifies the TemporalId of the highest sublayer representation of the HRD parameter included in the `i`th `ols_hrd_parameters()` syntax structure. The value of `hrd_max_tid[i]` should be in the range of 0 to `vps_max_sublayers_minus1` (inclusive). When `vps_max_sublayers_minus1` equals 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` equals 1, the value of `hrd_max_tid[i]` is inferred to be equal to `vps_max_sublayers_minus1`.
[0228] `ols_hrd_idx[i]` specifies the index of the list of `ols_hrd_parameters()` syntax structures in the VPS for the `ols_hrd_parameters()` syntax structure applicable to the `i`-th OLS when `NumLayersInOls[i]` is greater than 1. The value of `ols_hrd_idx[i]` should be in the range from 0 to `num_ols_hrd_params_minus1` (inclusive).
[0229] When NumLayersInOls[i] equals 1, the ols_hrd_parameters() syntax structure applicable to the i-th OLS exists in the SPS referenced by the layer in the i-th OLS.
[0230] If the value of num_ols_hrd_param_minus1+1 equals TotalNumOlss, then 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 equals 0, the value of ols_hrd_idx[[i]] is inferred to be equal to 0.
[0231] A value of 0 for `vps_extension_flag` indicates that the `vps_extension_data_flag` syntax element does not exist in the VPS RBSP syntax structure. A value of 1 for `vps_extension_flag` indicates that the `vps_extension_data_flag` syntax element exists in the VPS RBSP syntax structure.
[0232] The `vps_extension_data_flag` flag can have any value. Its presence and value do not affect the decoder's conformance to the tier specified in this version of the specification. Decoders conforming to this version of the specification should ignore all `vps_extension_data_flag` syntax elements.
[0233] 3.5. SPS Syntax and Semantics
[0234] In the latest VVC draft text, the SPS syntax and semantics are as follows:
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242] The SPS RBSP should be available for the decoding process before being referenced, either in at least one AU where TemporalId equals 0 or through external means.
[0243] All SPS NAL cells in CVS that have a specific value of sps_seq_parameter_set_id should have the same content.
[0244] sps_seq_parameter_set_id provides an identifier for SPS for reference by other syntax elements.
[0245] Regardless of the nuh_layer_id value, SPS NAL cells share the same value space for sps_seq_parameter_set_id.
[0246] Let spsLayerId be the value of nuh_layer_id for a specific SPS NAL cell, and vclLayerId be the value of nuh_layer_id for a specific VCL NAL cell. A specific VCL NAL cell should not reference a specific SPS NAL cell unless spsLayerId is less than or equal to vclLayerId, and the layer whose nuh_layer_id is equal to spsLayerId is included in at least one OLS that includes a layer whose nuh_layer_id is equal to vclLayerId.
[0247] When sps_video_parameter_set_id is greater than 0, it specifies the value of vps_video_parameter_set_id of the VPS that SPS references.
[0248] When sps_video_parameter_set_id equals 0, the following applies:
[0249] -SPS does not reference VPS.
[0250] - When decoding each CLVS of the reference SPS, the VPS is not referenced.
[0251] The value of -vps_max_layers_minus1 is inferred to be equal to 0.
[0252] - The CVS should contain only one layer (i.e., all VCL NAL units in the CVS should have the same nuh_layer_id value).
[0253] The value of -GeneralLayerIdx[nuh_layer_id] is inferred to be equal to 0.
[0254] The value of -vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is inferred to be equal to 1.
[0255] When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 1, the SPS referenced by the CLVS with a specific nuh_layer_id value nuhLayerId should have a nuh_layer_id equal to nuhLayerId.
[0256] The value of sps_video_parameter_set_id should be the same across all SPS referenced by CLVS in CVS.
[0257] Increasing 1 in sps_max_sublayers_minus1 specifies the maximum number of temporal sublayers that can exist in each CLVS of the reference SPS. The value of sps_max_sublayers_minus1 should be in the range of 0 to vps_max_sublayers_minus1 (inclusive).
[0258] sps_reserved_zero_4bits should be equal to 0 in the bitstream conforming to this version of the specification. Other values for sps_reserved_zero_4bits are reserved for future use by ITU-T|ISO / IEC.
[0259] `sps_ptl_dpb_hrd_params_present_flag` equal to 1 indicates that the `profile_tier_level()` and `dpb_parameters()` syntax structures exist in SPS, and the `general_hrd_parameters()` and `ols_hrd_parameters()` syntax structures can also exist in SPS. `sps_ptl_dpb_hrd_params_present_flag` equal to 0 indicates that none of these four syntax structures exist in SPS. The value of `sps_ptl_dpb_hrd_params_present_flag` should be equal to `vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]`.
[0260] A `gdr_enabled_flag` value of 1 indicates that GDR images can exist in the CLVS of the reference SPS. A `gdr_enabled_flag` value of 0 indicates that GDR images do not exist in the CLVS of the reference SPS.
[0261] chroma_format_idc specifies the chroma sampling relative to the luminance sampling, as specified in Clause 6.2.
[0262] `separate_colour_plane_flag` equal to 1 specifies that the three color components of the 4:4:4 chroma format are encoded and decoded separately. `separate_colour_plane_flag` equal to 0 specifies that the color components are not encoded and decoded separately. When `separate_colour_plane_flag` does not exist, it is inferred to be equal to 0. When `separate_colour_plane_flag` equals 1, the encoded image consists of three separate components, each composed of encoded samples of a color plane (Y, Cb, or Cr), and uses monochrome codec syntax. In this case, each color plane is associated with a specific `colour_plane_id` value.
[0263] Note 1 – The decoding process between color planes with different colour_plane_id values is independent. For example, the decoding process of a monochrome image with one colour_plane_id value does not use any data from monochrome images with different colour_plane_id values for inter-frame prediction.
[0264] Based on the value of separate_colour_plane_flag, the variable ChromaArrayType is assigned the following value:
[0265] - If separate_colour_plane_flag equals 0, then ChromaArrayType is set to equal chroma_format_idc.
[0266] Otherwise (if separate_colour_plane_flag equals 1), ChromaArrayType is set to 0.
[0267] `res_change_in_clvs_allowed_flag` equal to 1 indicates that the image spatial resolution can be changed within the CLVS of the reference SPS. `res_change_in_clvs_allowed_flag` equal to 0 indicates that the image spatial resolution cannot be changed within any CLVS of the reference SPS.
[0268] `pic_width_max_in_luma_samples` specifies the maximum width of each decoded image from the reference SPS, in luminance samples. `pic_width_max_in_luma_samples` should not be equal to 0 and should be an integer multiple of `Max(8, MinCbSizeY)`.
[0269] The requirement for bitstream consistency is that, for any OLS with an OLS index i that contains one or more layers of a 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].
[0270] `pic_height_max_in_luma_samples` specifies the maximum height of each decoded image from 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)`.
[0271] The requirement for bitstream consistency is that, for any OLS with an OLS index i that contains one or more layers of a 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].
[0272] A `sps_conformance_window_flag` value of 1 indicates that the consistency trimming window offset parameter follows the next one in the SPS. A `sps_conformance_window_flag` value of 0 indicates that the consistency trimming window offset parameter does not exist in the SPS.
[0273] `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 images where `pic_width_in_luma_samples` equals `pic_width_max_in_luma_samples` and `pic_height_in_luma_samples` equals `pic_height_max_in_luma_samples`. When `sps_conformance_window_flag` equals 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.
[0274] The consistent cropping window contains luminance samples at horizontal image coordinates from SubWidthC*sps_conf_win_left_offset to pic_width_max_in_luma_samples-(SubWidthC*sps_conf_win_right_offset+1) (including SubWidthC*sps_conf_win_left_offset and pic_width_max_in_luma_samples-(SubWidthC*sps_conf_win_right_offset+1)) and vertical image 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)).
[0275] The value of SubWidthC*(sps_conf_win_left_offset+sps_conf_win_right_offset) should be less than pic_width_max_in_luma_samples, and the value of SubHeightC*(sps_conf_win_top_offset+sps_conf_win_bottom_offset) should be less than pic_height_max_in_luma_samples.
[0276] When ChromaArrayType is not equal to 0, the corresponding specified sample points of the two chroma arrays are sample points with image coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the image coordinates of the specified luminance sample point.
[0277] Note 2 – The consistent cropping window offset parameter is applied only to the output. All internal decoding processes are applied to the uncropped image size.
[0278] The value of sps_log2_ctu_size_minus5 plus 5 specifies the luminance codec tree block size for each CTU. The value of sps_log2_ctu_size_minus5 should be in the range of 0 to 2 (inclusive). The value of sps_log2_ctu_size_minus5 is 3, which is reserved for future use by ITU-T|ISO / IEC.
[0279] The variables CtbLog2SizeY and CtbSizeY are derived as follows:
[0280] CtbLog2SizeY=sps_log2_ctu_size_minus5+5 (43)
[0281] CtbSizeY = 1 <CtbLog2SizeY (44)
[0282] A subpic_info_present_flag value of 1 indicates that subpick information exists for CLVS, and there can be one or more subpicks in each image of CLVS. A subpic_info_present_flag value of 0 indicates that subpick information does not exist for CLVS, and there is only one subpick in each image of CLVS.
[0283] When res_change_in_clvs_allowed_flag equals 1, the value of subpic_info_present_flag should be equal to 0.
[0284] Note 3 – When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of subpictures of the input bitstream of the sub-bitstream extraction process, it may be necessary to set the value of subpic_info_present_flag to 1 in the RBSP of the SPS.
[0285] `sps_num_subpics_minus1` incremented by 1 specifies the number of subpicks for each picture in CLVS. The value of `sps_num_subpics_minus1` should be in the range of 0 to `Ceil(pic_width_max_in_luma_samples÷CtbSizeY)*Ceil(pic_height_max_in_luma_samples÷CtbSizeY)-1` (inclusive). When it does not exist, the value of `sps_num_subpics_minus1` is inferred to be 0.
[0286] A value of 1 for `sps_independent_subpics_flag` indicates that intra-frame prediction, inter-frame prediction, and loop filtering operations cannot be performed across any subpicture boundary in the CLVS. A value of 0 for `sps_independent_subpics_flag` indicates that inter-frame prediction or loop filtering operations are allowed across subpicture boundaries in the CLVS. When it does not exist, the value of `sps_independent_subpics_flag` is inferred to be 0.
[0287] `subpic_ctu_top_left_x[i]` specifies the horizontal position of the top-left corner CTU of the i-th subpicture, 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 does not exist, the value of `subpic_ctu_top_left_x[i]` is inferred to be equal to 0.
[0288] `subpic_ctu_top_left_y[i]` specifies the vertical position of the top-left corner CTU of the i-th subpicture, in units of `CtbSizeY`. The length of this syntax element is `Ceil(Log2((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY))` bits. If it does not exist, the value of `subpic_ctu_top_left_y[i]` is inferred to be 0.
[0289] `subpic_width_minus1[i]` incremented by 1 specifies the width of the i-th subpicture, 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 does not exist, 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`.
[0290] `subpic_height_minus1[i]` incremented by 1 specifies the height of the i-th subpicture, 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 does not exist, 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`.
[0291] A subpic_treated_as_pic_flag[i] equal to 1 indicates that the i-th subpic of each codec image in CLVS is considered as a picture in the decoding process excluding loop filtering operations. A subpic_treated_as_pic_flag[i] equal to 0 indicates that the i-th subpic of each codec image in CLVS is not considered as a picture in the decoding process excluding loop filtering operations. When it does not exist, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to sps_independent_subpics_flag.
[0292] When subpic_treated_as_pic_flag[i] equals 1, the bitstream consistency requirement is that for each output layer and its reference layer in an OLS that includes the layer containing the i-th subpic as the output layer, all of the following conditions are true:
[0293] - All images in the output layer and its reference layer should have the same value for pic_width_in_luma_samples and pic_height_in_luma_samples.
[0294] - For each value of j in the range of 0 to sps_num_subpics_minus1 (inclusive), all SPS referenced by the output layer and its reference layer should have the same value of sps_num_subpics_minus1, and should 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], respectively.
[0295] - For each value of j in the range of 0 to sps_num_subpics_minus1 (inclusive), all pictures in each access unit of the output layer and its reference layer should have the same value of SubpicIdVal[j].
[0296] A loop filter_across_subpic_enabled_flag[i] equal to 1 indicates that loop filtering can be performed across the boundary of the i-th subpic in each codec image in CLVS. A loop filter_across_subpic_enabled_flag[i] equal to 0 indicates that loop filtering is not performed across the boundary of the i-th subpic in each codec image in CLVS. When it does not exist, the value of loop filter_across_subpic_enabled_flag[i] is inferred to be equal to 1 - sps_independent_subpics_flag.
[0297] The requirement for bitstream consistency is that the shape of a sub-image should be such that, during decoding, the entire left and entire top boundaries of each sub-image should be composed of the image boundary or the boundaries of the previously decoded sub-images.
[0298] The increment of 1 in `sps_subpic_id_len_minus1` specifies the number of bits used to represent the syntax elements `sps_subpic_id[i]`, `pps_subpic_id[i]` (if present), and `slice_subpic_id` (if present). The value of `sps_subpic_id_len_minus1` should be in the range of 0 to 15 (inclusive). The value of `1 << (sps_subpic_id_len_minus1 + 1)` should be greater than or equal to `sps_num_subpics_minus1 + 1`.
[0299] A subpic_id_mapping_explicitly_signalled_flag value of 1 indicates that the subpicture ID mapping is explicitly signaled in the SPS or in the PPS referenced by the CLVS codec image. A subpic_id_mapping_explicitly_signalled_flag value of 0 indicates that the subpicture ID mapping is not explicitly signaled to CLVS. When it does not exist, the value of subpic_id_mapping_explicitly_signalled_flag is inferred to be 0.
[0300] When `subpic_id_mapping_in_sps_flag` equals 1, the subpic ID mapping is signaled in the SPS when `subpic_id_mapping_explicitly_signalled_flag` equals 1. When `subpic_id_mapping_in_sps_flag` equals 0, the subpic ID mapping is signaled in the PPS referenced by the CLVS encoder / decoder.
[0301] sps_subpic_id[i] specifies the subpick ID of the i-th subpick. The length of the sps_subpic_id[i] syntax element is sps_subpic_id_len_minus1+1 bits.
[0302] The values of bit_depth_minus8 specify the bit depth BitDepth of the samples in the luma and chroma arrays, and the range offset QpBdOffset of the luma and chroma quantization parameters, as follows:
[0303] BitDepth=8+bit_depth_minus8 (45)
[0304] QpBdOffset=6*bit_depth_minus8 (46)
[0305] bit_depth_minus8 should be in the range of 0 to 8 (inclusive).
[0306] `sps_entropy_coding_sync_enabled_flag` equal to 1 specifies that the context-specific synchronization procedure is called before the CTU of the first CTB in a row of CTBs in each slice of each picture including the reference SPS, and after the CTU of the first CTB in a row of CTBs in each slice of each picture including the reference SPS. `sps_entropy_coding_sync_enabled_flag` equal to 0 specifies that the context-specific synchronization procedure is not required before the CTU of the first CTB in a row of CTBs in each slice of each picture including the reference SPS, and after the CTU of the first CTB in a row of CTBs in each slice of each picture including the reference SPS.
[0307] `sps_wpp_entry_point_offsets_present_flag` equal to 1 indicates that signaling for the entry point offset of the CTU line can exist in the strip header of the reference SPS image when `sps_entropy_coding_sync_enabled_flag` equals 1. `sps_wpp_entry_point_offsets_present_flag` equal to 0 indicates that signaling for the entry point offset of the CTU line does not exist in the strip header of the reference SPS image. When it does not exist, the value of `sps_wpp_entry_point_offsets_present_flag` is inferred to be 0.
[0308] A value of 1 for `sps_weighted_pred_flag` indicates that weighted predictions can be applied to the P-strips of the reference SPS. A value of 0 for `sps_weighted_pred_flag` indicates that weighted predictions should not be applied to the P-strips of the reference SPS.
[0309] A value of 1 for `sps_weighted_bipred_flag` indicates that explicit weighted predictions can be applied to the B-bands of the reference SPS. A value of 0 for `sps_weighted_bipred_flag` indicates that explicit weighted predictions should not be applied to the B-bands of the reference SPS.
[0310] The value of the variable MaxPicOrderCntLsb, specified by log2_max_pic_order_cnt_lsb_minus4, used in the decoding process for image order counting is as follows:
[0311] MaxPicOrderCntLsb=2 (log2_max_pic_order_cnt_lsb_minus4+4) (47)
[0312] The value of log2_max_pic_order_cnt_lsb_minus4 should be in the range of 0 to 12 (inclusive).
[0313] A value of 1 for sps_poc_msb_flag indicates that the ph_poc_msb_present_flag syntax element exists in the PH of the reference SPS. A value of 0 for sps_poc_msb_flag indicates that the ph_poc_msb_present_flag syntax element does not exist in the PH of the reference SPS.
[0314] Incrementing 1 by 1 to poc_msb_len_minus1 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 should be in the range of 0 to 32-log2_max_pic_order_cnt_lsb_minus4-5 (inclusive).
[0315] `num_extra_ph_bits_bytes` specifies the number of extra bits in the PH syntax structure of the SPS-compliant encoded / decoded image. The value of `num_extra_ph_bits_bytes` should be equal to 0 in this version of the specification. Although this version of the specification requires `num_extra_ph_bits_bytes` to be equal to 0, decoders conforming to this version of the specification should allow values of 1 or 2 for `num_extra_ph_bits_bytes` in the syntax.
[0316] `num_extra_sh_bits_bytes` specifies the number of extra bits in the stripe header of the SPS-compliant encoded / decoded image. The value of `num_extra_sh_bits_bytes` should be equal to 0 in this version of the bitstream conforming to this specification. Although this version of the specification requires `num_extra_sh_bits_bytes` to be equal to 0, decoders conforming to this version of the specification should allow values of 1 or 2 in the syntax.
[0317] `sps_sublayer_dpb_params_flag` controls 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 SPS. When these elements are not present, the value of `sps_sub_dpb_params_info_present_flag` is inferred to be 0.
[0318] A long_term_ref_pics_flag value of 0 indicates that no LTRP is used for inter-frame prediction of any codec pictures in CLVS. A long_term_ref_pics_flag value of 1 indicates that LTRP can be used for inter-frame prediction of one or more codec pictures in CLVS.
[0319] `inter_layer_ref_pics_present_flag` equal to 0 indicates that no ILRP is used for inter-frame prediction of any codec images in CLVS. `inter_layer_ref_pic_flag` equal to 1 indicates that ILRP can be used for inter-frame prediction of one or more codec images in CLVS. When `sps_video_parameter_set_id` equals 0, the value of `inter_layer_ref_pics_present_flag` is inferred to be 0. When `vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]` equals 1, the value of `inter_layer_ref_pics_present_flag` should be 0. [Ed.(YK): Check if there is a better name for this syntax element.]
[0320] `sps_idr_rpl_present_flag` equal to 1 indicates that the reference image list syntax element exists in the bar header of the IDR image. `sps_idr_rpl_present_flag` equal to 0 indicates that the reference image list syntax element does not exist in the bar header of the IDR image.
[0321] The fact that rpl1_same_as_rpl0_flag equals 1 indicates that the syntax element num_ref_pic_lists_in_sps[1] and the syntax structure ref_pic_list_struct(1,rplsIdx) do not exist, and the following applies:
[0322] 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].
[0323] The value of each syntax element in -ref_pic_list_struct(1,rplsIdx) is inferred to be equal to the value of 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.
[0324] 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] should be in the range of 0 to 64 (inclusive).
[0325] Note 4 – For each value of listIdx (equal to 0 or 1), the decoder should allocate memory for a total of num_ref_pic_lists_in_sps[i]+1 ref_pic_list_struct(listIdx,rplsIdx) syntax structures, because one ref_pic_list_struct(listIdx,rplsIdx) syntax structure can be signaled directly in the strip header of the current picture.
[0326] `qtbtt_dual_tree_intra_flag` equal to 1 specifies that, for I-stripes, each CTU is divided into codec units with 64×64 luma samples using implicit quadtree partitioning, and these codec units are the roots of two separate `coding_tree` syntax structures for luma and chroma. `qtbtt_dual_tree_intra_flag` equal to 0 specifies that separate `coding_tree` syntax structures are not used for I-stripes. When `qtbtt_dual_tree_intra_flag` does not exist, it is inferred to be equal to 0.
[0327] The value of log2_min_luma_coding_block_size_minus2 plus 2 specifies the minimum luma codec block size. The value of log2_min_luma_coding_block_size_minus2 should be in the range of 0 to Min(4,sps_log2_ctu_size_minus5+3) (inclusive).
[0328] The variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC, and Vsize are derived as follows:
[0329] MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2 (48)
[0330] MinCbSizeY=1< <MinCbLog2SizeY (49)
[0331] IbcBufWidthY=256*128 / CtbSizeY (50)
[0332] IbcBufWidthC=IbcBufWidthY / SubWidthC (51)
[0333] VSize = Min(64, CtbSizeY) (52)
[0334] The value of MinCbSizeY should be less than or equal to VSize.
[0335] The variables CtbWidthC and CtbHeightC, which specify the width and height of the array for each chroma CTB, are derived as follows:
[0336] - 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.
[0337] - Otherwise, CtbWidthC and CtbHeightC are derived as follows:
[0338] CtbWidthC = CtbSizeY / SubWidthC (53)
[0339] CtbHeightC = CtbSizeY / SubHeightC (54)
[0340] For log2BlockWidth ranging from 0 to 4 and log2BlockHeight ranging 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].
[0341] For log2BlockWidth ranging from 0 to 6 and log2BlockHeight ranging from 0 to 6 (including 0 and 6), the initialization process of the horizontal and vertical traversal scan order arrays as specified in Clause 6.5.3 is called, where 1 << log2BlockWidth and 1 << log2BlockHeight are used as inputs, and the output is assigned to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].
[0342] partition_constraints_override_enabled_flag being equal to 1 specifies the existence 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.
[0343] `sps_log2_diff_min_qt_min_cb_intra_slice_luma` specifies the default difference between the base-2 logarithm of the smallest size of the luminance samples in the luminance leaf blocks generated from the quadtree partitioning of the CTU and the base-2 logarithm of the smallest decoder block size in the luminance samples of the luminance CUs in the slices of the reference SPS with slice_type 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` should be in the range of 0 to `CtbLog2SizeY-MinCbLog2SizeY` (inclusive). The base-2 logarithm of the smallest size of the brightness samples in the brightness leaf blocks generated from the quadtree partitioning of CTU is derived as follows:
[0344] MinQtLog2SizeIntraY=sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY (55)
[0345] `sps_max_mtt_hierarchy_depth_intra_slice_luma` specifies the default maximum hierarchical depth of the codec unit generated from a multi-type tree partition of quad-leaf trees in a slice with slice_type equal to 2(I) of 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_intra_slice_luma`, which exists in the PH of the reference SPS. The value of `sps_max_mtt_hierarchy_depth_intra_slice_luma` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive).
[0346] `sps_log2_diff_max_bt_min_qt_intra_slice_luma` specifies the base-2 logarithm of the maximum size (width or height) of the luminance samples in the luminance codec block that can be partitioned using binary partitioning, and the default difference between the minimum size (width or height) of the luminance samples in the luminance leaf block resulting from the quadtree partitioning of the CTU from a slice 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_max_bt_min_qt_luma`, which exists in the PH of the reference SPS. The value of `sps_log2_diff_max_bt_min_qt_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeIntraY` (inclusive). When sps_log2_diff_max_bt_min_qt_intra_slice_luma does not exist, the value of sps_log2_diff_max_bt_min_qt_intra_slice_luma is inferred to be equal to 0.
[0347] `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 luminance samples in the luminance codec block that can be partitioned using ternary partitioning and the minimum size (width or height) of the luminance samples in the luminance leaf block resulting from the quadtree partitioning of the CTU in the slice of the reference SPS with slice_type equal to 2(I). When `partition_constraints_override_enabled_flag` is equal to 1, the default difference can be overridden by `by ph_log2_diff_max_tt_min_qt_luma` in the PH of the reference SPS. The value of `sps_log2_diff_max_tt_min_qt_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeIntraY` (inclusive). When sps_log2_diff_max_tt_min_qt_intra_slice_luma does not exist, the value of sps_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to 0.
[0348] `sps_log2_diff_min_qt_min_cb_inter_slice` specifies the default difference between the base-2 logarithm of the minimum size of the luminance samples in the luminance leaf blocks generated from the quadtree partitioning of the CTU and the base-2 logarithm of the minimum luminance codec block size in the luminance samples of the luminance CUs in the slices with slice_type equal to 0 (B) or 1 (P) 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_luma` present in the PH of the reference SPS. The value of `sps_log2_diff_min_qt_min_cb_inter_slice` should be in the range of 0 to `CtbLog2SizeY-MinCbLog2SizeY` (inclusive). The base-2 logarithm of the smallest size of the brightness samples in the brightness leaf blocks generated from the quadtree partitioning of CTU is derived as follows:
[0349] MinQtLog2SizeInterY=sps_log2_diff_min_qt_min_cb_inter_slice+
[0350] MinCbLog2SizeY(56)
[0351] `sps_max_mtt_hierarchy_depth_inter_slice` specifies the default maximum hierarchical depth of the codec unit generated from a multi-type tree partition of quad-leaf trees in a slice with slice_type equal to 0 (B) or 1 (P) of 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`, which exists in the PH of the reference SPS. The value of `sps_max_mtt_hierarchy_depth_inter_slice` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive).
[0352] `sps_log2_diff_max_bt_min_qt_inter_slice` specifies the base-2 logarithm of the maximum size (width or height) of the luminance samples in the luminance codec block that can be partitioned using binary partitioning, and the default difference between the minimum size (width or height) of the luminance samples in the luminance leaf block resulting from the quadtree partitioning of the CTU from the slice of the reference SPS with slice_type 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_bt_min_qt_luma`, which exists in the PH of the reference SPS. The value of `sps_log2_diff_max_bt_min_qt_inter_slice` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeInterY` (inclusive). 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.
[0353] `sps_log2_diff_max_tt_min_qt_inter_slice` specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luminance samples in the luminance codec block that can be partitioned using ternary partitioning and the minimum size (width or height) of the luminance samples in the luminance leaf block resulting from the quadtree partitioning of the CTU from the slice of the reference SPS with slice_type 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`, which exists in the PH of the reference SPS. The value of `sps_log2_diff_max_tt_min_qt_inter_slice` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeInterY` (inclusive). When sps_log2_diff_max_tt_min_qt_inter_slice does not exist, the value of sps_log2_diff_max_tt_min_qt_inter_slice is inferred to be equal to 0.
[0354] `sps_log2_diff_min_qt_min_cb_intra_slice_chroma` specifies the default difference between the base-2 logarithm of the smallest size of the luminance samples in the chroma leaf blocks generated from the quadtree partitioning of the chroma CTU with `treeType` equal to `DUAL_TREE_CHROMA`, and the base-2 logarithm of the smallest decoder block size in the luminance samples of the chroma CU with `treeType` equal to `DUAL_TREE_CHROMA` in the slice 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 should be in the range of 0 to CtbLog2SizeY-MinCbLog2SizeY (inclusive). When it does not exist, the value of sps_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to 0. The base-2 logarithm of the smallest size of the luminance samples in the chroma leaf blocks generated from the quadtree partitioning of CTU with treeType equal to DUAL_TREE_CHROMA is derived as follows:
[0355] MinQtLog2SizeIntraC=sps_log2_diff_min_qt_min_cb_intra_slice_chroma+MinCbLog2SizeY (57)
[0356] `sps_max_mtt_hierarchy_depth_intra_slice_chroma` specifies the default maximum hierarchical depth of chroma codec units generated from multi-type tree partitioning of chroma quadtree leaves with `treeType` equal to `DUAL_TREE_CHROMA` from slices of reference SPS with `slice_type` equal to 2(I). When `partition_constraints_override_enabled_flag` equals 1, the default maximum hierarchical depth can be overridden by `ph_max_mtt_hierarchy_depth_chroma`, which exists in the `PH` of the reference SPS. The value of `sps_max_mtt_hierarchy_depth_intra_slice_chroma` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive). When it does not exist, the value of sps_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to 0.
[0357] `sps_log2_diff_max_bt_min_qt_intra_slice_chroma` specifies the base-2 logarithm of the maximum size (width or height) of the luminance samples in a chroma codec block that can be partitioned using binary partitioning, and the default difference between the minimum size (width or height) of the luminance samples in a chroma leaf block resulting from a quadtree partition of a chroma CTU with `treeType` equal to `DUAL_TREE_CHROMA` from a slice with `slice_type` equal to 2(I) 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_chroma` present in the PH of the reference SPS. The value of sps_log2_diff_max_bt_min_qt_intra_slice_chroma should be within the range of 0 to CtbLog2SizeY-MinQtLog2SizeIntraC (inclusive). When sps_log2_diff_max_bt_min_qt_intra_slice_chroma does not exist, the value of sps_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred to be equal to 0.
[0358] `sps_log2_diff_max_tt_min_qt_intra_slice_chroma` specifies the base-2 logarithm of the maximum size (width or height) of the luminance samples in a chroma codec block that can be partitioned using ternary partitioning, and the default difference between the minimum size (width or height) of the luminance samples in a chroma leaf block resulting from a quadtree partition of a chroma CTU with `treeType` equal to `DUAL_TREE_CHROMA` from a slice with `slice_type` equal to 2(I) 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_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 should be within the range of 0 to CtbLog2SizeY-MinQtLog2SizeIntraC (inclusive). When sps_log2_diff_max_tt_min_qt_intra_slice_chroma does not exist, the value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to 0.
[0359] A value of 1 for `sps_max_luma_transform_size_64_flag` specifies a maximum transformation size of 64 for the luminance samples. A value of 0 for `sps_max_luma_transform_size_64_flag` specifies a maximum transformation size of 32 for the luminance samples.
[0360] When CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag should be equal to 0.
[0361] The variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, and MaxTbSizeY are derived as follows:
[0362] MinTbLog2SizeY=2 (58)
[0363] MaxTbLog2SizeY=sps_max_luma_transform_size_64_flag? 6:5 (59)
[0364] MinTbSizeY=1< <MinTbLog2SizeY (60)
[0365] MaxTbSizeY = 1 <MaxTbLog2SizeY (61)
[0366] A value of 0 for `sps_joint_cbcr_enabled_flag` indicates that joint encoding / decoding of the chroma residuals is disabled. A value of 1 for `sps_joint_cbcr_enabled_flag` indicates that joint encoding / decoding of the chroma residuals is enabled. When it does not exist, the value of `sps_joint_cbcr_enabled_flag` is inferred to be 0.
[0367] `same_qp_table_for_chroma` equal to 1 specifies that only one chroma QP map table is signaled, and when `sps_joint_cbcr_enabled_flag` equals 1, this table applies to both Cb and Cr residuals and additionally to the joint Cb-Cr residual. `same_qp_table_for_chroma` equal to 0 specifies that the chroma QP map table is signaled in SPS; when `sps_joint_cbcr_enabled_flag` equals 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, its value is inferred to be 1.
[0368] The addition of 26 to `qp_table_start_minus26[i]` specifies the starting luma and chromaticity QP used to describe the i-th chromaticity QP mapping table. The value of `qp_table_start_minus26[i]` should be in the range of -26 - QpBdOffset to 36 (inclusive). When `qp_table_start_minus26[i]` is not present in the bitstream, its value is inferred to be 0.
[0369] The increment of 1 in `num_points_in_qp_table_minus1[i]` specifies the number of points used to describe the i-th chroma QP map. The value of `num_points_in_qp_table_minus1[i]` should be in the range of 0 to 63+QpBdOffset (inclusive). 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.
[0370] delta_qp_in_val_minus1[i][j] specifies the increment (delta) value of the input coordinates used to derive the pivot point of the i-th chroma QP map. When delta_qp_in_val_minus1[0][j] is not present in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.
[0371] delta_qp_diff_val[i][j] specifies the increment value of the output coordinates of the j-th pivot point used to derive the i-th chromaticity QP mapping table.
[0372] The i-th chromaticity QP mapping table ChromaQpTable[i] (where i = 0..numQpTables-1) is derived as follows:
[0373]
[0374] When same_qp_table_for_chroma equals 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set to be equal to ChromaQpTable[0][k], where k is in the range from -QpBdOffset to 63 (inclusive).
[0375] The requirement for bitstream consistency is that the values of qpInVal[i][j] and qpOutVal[i][j] should be in the range of -QpBdOffset to 63 (inclusive), where i is in the range of 0 to numQpTables-1 (inclusive), and j is in the range of 0 to num_points_in_qp_table_minus1[i]+1 (inclusive).
[0376] `sps_sao_enabled_flag` equal to 1 indicates that the sample adaptive offset process is applied to the reconstructed image after the deblocking filtering process. `sps_sao_enabled_flag` equal to 0 indicates that the sample adaptive offset process is not applied to the reconstructed image after the deblocking filtering process.
[0377] A value of 0 for sps_alf_enabled_flag indicates that the adaptive loop filter is disabled. A value of 1 for sps_alf_enabled_flag indicates that the adaptive loop filter is enabled.
[0378] A value of 0 for sps_ccalf_enabled_flag indicates that the cross-component adaptive loop filter is disabled. A value of 1 for sps_ccalf_enabled_flag indicates that the cross-component adaptive loop filter can be enabled.
[0379] A value of 1 for `sps_transform_skip_enabled_flag` indicates that the `transform_skip_flag` can exist in the transform unit syntax. A value of 0 for `sps_transform_skip_enabled_flag` indicates that the `transform_skip_flag` does not exist in the transform unit syntax.
[0380] log2_transform_skip_max_size_minus2 specifies the maximum block size to be skipped during transformation and should be in the range of 0 to 3 (inclusive).
[0381] The variable MaxTsSize is set to equal to 1 << (log2_transform_skip_max_size_minus2+2).
[0382] A value of 1 for `sps_bdpcm_enabled_flag` indicates that `intra_bdpcm_luma_flag` and `intra_bdpcm_chroma_flag` can exist in the codec unit syntax of the intra codec unit. A value of 0 for `sps_bdpcm_enabled_flag` indicates that `intra_bdpcm_luma_flag` and `intra_bdpcm_chroma_flag` do not exist in the codec unit syntax of the intra codec unit. When they do not exist, the value of `sps_bdpcm_enabled_flag` is inferred to be 0.
[0383] `sps_ref_wraparound_enabled_flag` equal to 1 specifies that horizontal wraparound motion compensation is applied in inter-frame prediction. `sps_ref_wraparound_enabled_flag` equal to 0 specifies that horizontal wraparound 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 referencing SPS, the value of `sps_ref_wraparound_enabled_flag` should be equal to 0. [Ed.(YK): The semantics here still depend on the PPS syntax elements.]
[0384] A value of 1 for `sps_temporal_mvp_enabled_flag` indicates that temporal motion vector predictions can be used in CLVS. A value of 0 for `sps_temporal_mvp_enabled_flag` indicates that temporal motion vector predictions are not used in CLVS.
[0385] `sps_sbtmvp_enabled_flag` equal to 1 indicates that sub-block-based temporal motion vector predictions can be used to decode images in CLVS with slice_types not equal to i. `sps_sbtmvp_enabled_flag` equal to 0 indicates that sub-block-based temporal motion vector predictions are not used in CLVS. When `sps_sbtmvp_enabled_flag` does not exist, it is inferred to be equal to 0.
[0386] `sps_amvr_enabled_flag` equal to 1 specifies that adaptive motion vector differential resolution is used for motion vector encoding and decoding. `amvr_enabled_flag` equal to 0 specifies that adaptive motion vector differential resolution is not used for motion vector encoding and decoding.
[0387] A value of 0 for sps_bdof_enabled_flag indicates that bidirectional optical flow inter-frame prediction is disabled. A value of 1 for sps_bdof_enabled_flag indicates that bidirectional optical flow inter-frame prediction is enabled.
[0388] `sps_bdof_pic_present_flag` equal to 1 indicates that `ph_disable_bdof_flag` exists in the PH of the reference SPS. `sps_bdof_pic_present_flag` equal to 0 indicates 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 0.
[0389] A value of 1 for sps_smvd_enabled_flag indicates that the symmetric motion vector difference can be used for motion vector decoding. A value of 0 for sps_smvd_enabled_flag indicates that the symmetric motion vector difference is not used for motion vector encoding and decoding.
[0390] A value of 1 for sps_dmvr_enabled_flag indicates that inter-frame bidirectional prediction based on decoder motion vector refinement is enabled. A value of 0 for sps_dmvr_enabled_flag indicates that inter-frame bidirectional prediction based on decoder motion vector refinement is disabled.
[0391] A value of 1 for `sps_dmvr_pic_present_flag` indicates that `ph_disable_dmvr_flag` exists in the PH of the reference SPS. A value of 0 for `sps_dmvr_pic_present_flag` indicates 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 0.
[0392] A value of 1 for sps_mmvd_enabled_flag indicates that Merge mode utilizing motion vector differences is enabled. A value of 0 for sps_mmvd_enabled_flag indicates that Merge mode utilizing motion vector differences is disabled.
[0393] A value of 1 for sps_isp_enabled_flag indicates that intra-prediction utilizing sub-segmentation is enabled. A value of 0 for sps_isp_enabled_flag indicates that intra-prediction utilizing sub-segmentation is disabled.
[0394] A value of 1 for sps_mrl_enabled_flag indicates that intra-frame prediction using multiple reference lines is enabled. A value of 0 for sps_mrl_enabled_flag indicates that intra-frame prediction using multiple reference lines is disabled.
[0395] A value of 1 for sps_mip_enabled_flag indicates that matrix-based intra-prediction is enabled. A value of 0 for sps_mip_enabled_flag indicates that matrix-based intra-prediction is disabled.
[0396] A value of 0 for `sps_cclm_enabled_flag` indicates that intra-frame prediction of the cross-component linear model from the luma component to the chroma component is disabled. A value of 1 for `sps_cclm_enabled_flag` indicates that intra-frame prediction of the cross-component linear model 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.
[0397] `sps_chroma_horizontal_collocated_flag` equal to 1 specifies that the prediction process is designed to operate for chroma sample positions that are not horizontally shifted relative to the corresponding luminance sample position. `sps_chroma_horizontal_collocated_flag` equal to 0 specifies that the prediction process is designed to operate for chroma sample positions that are shifted 0.5 units to the right relative to the corresponding luminance sample position. When `sps_chroma_horizontal_collocated_flag` does not exist, it is inferred to be equal to 1.
[0398] `sps_chroma_vertical_collocated_flag` equal to 1 specifies that the prediction process is designed to operate for chroma sample positions that are not vertically shifted relative to the corresponding luminance sample position. `sps_chroma_vertical_collocated_flag` equal to 0 specifies that the prediction process is designed to operate for chroma sample positions that are shifted down by 0.5 units relative to the corresponding luminance sample position. When `sps_chroma_vertical_collocated_flag` does not exist, it is inferred to be equal to 1.
[0399] A value of 1 for `sps_mts_enabled_flag` indicates that `sps_explicit_mts_intra_enabled_flag` exists in the Sequence Parameter Set (RBSP) syntax, and that `sps_explicit_mts_inter_enabled_flag` also exists in the Sequence Parameter Set (RBSP) syntax. A value of 0 for `sps_mts_enabled_flag` indicates that `sps_explicit_mts_intra_enabled_flag` does not exist in the Sequence Parameter Set (RBSP) syntax, and that `sps_explicit_mts_inter_enabled_flag` also does not exist in the Sequence Parameter Set (RBSP) syntax.
[0400] A value of 1 for `sps_explicit_mts_intra_enabled_flag` indicates that `mts_idx` can exist in the intra codec unit syntax. A value of 0 for `sps_explicit_mts_intra_enabled_flag` indicates that `mts_idx` does not exist in the intra codec unit syntax. When it does not exist, the value of `sps_explicit_mts_intra_enabled_flag` is inferred to be 0.
[0401] A value of 1 for `sps_explicit_mts_inter_enabled_flag` indicates that `mts_idx` can exist in the inter-frame codec unit syntax. A value of 0 for `sps_explicit_mts_inter_enabled_flag` indicates that `mts_idx` does not exist in the inter-frame codec unit syntax. When it does not exist, the value of `sps_explicit_mts_inter_enabled_flag` is inferred to be 0.
[0402] The `six_minus_max_num_merge_cand` parameter specifies the maximum number of Merge motion vector prediction (MVP) candidates supported from the SPS subtracted from 6. The value of `six_minus_max_num_merge_cand` should be in the range of 0 to 5 (inclusive).
[0403] The maximum number of Merge MVP candidates, MaxNumMergeCand, is derived as follows:
[0404] MaxNumMergeCand=6-six_minus_max_num_merge_cand (63)
[0405] A value of 0 for sps_sbt_enabled_flag indicates that subblock transforms for inter-frame prediction CUs are disabled. A value of 1 for sps_sbt_enabled_flag indicates that subblock transforms for inter-frame prediction CUs are enabled.
[0406] `sps_affine_enabled_flag` specifies whether affine-based motion compensation can be used for inter-frame prediction. If `sps_affine_enabled_flag` equals 0, the syntax should be constrained so that no affine-based motion compensation is used in CLVS, and `inter_affine_flag` and `cu_affine_type_flag` are not present in the CLVS codec unit syntax. Otherwise (`sps_affine_enabled_flag` equals 1), affine-based motion compensation can be used in CLVS.
[0407] five_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based Merge motion vector prediction candidates supported from the SPS subtracted from 5.
[0408] `sps_affine_type_flag` specifies whether motion compensation based on a 6-parameter affine model can be used for inter-frame prediction. If `sps_affine_type_flag` equals 0, the syntax should be constrained such that no motion compensation based on a 6-parameter affine model is used in CLVS, and `cu_affine_type_flag` does not exist in the codec unit syntax of CLVS. Otherwise (`sps_affine_type_flag` equals 1), motion compensation based on a 6-parameter affine model can be used in CLVS. When it does not exist, the value of `sps_affine_type_flag` is inferred to be equal to 0.
[0409] `sps_affine_amvr_enabled_flag` equal to 1 specifies that adaptive motion vector differential resolution is used for motion vector encoding and decoding in affine inter-frame mode. `sps_affine_amvr_enabled_flag` equal to 0 specifies that adaptive motion vector differential resolution is not used for motion vector encoding and decoding in affine inter-frame mode. When it does not exist, the value of `sps_affine_amvr_enabled_flag` is inferred to be 0.
[0410] `sps_affine_prof_enabled_flag` specifies whether optical flow-based prediction refinement can be used for affine motion compensation. If `sps_affine_prof_enabled_flag` equals 0, affine motion compensation should not be refined using optical flow. Otherwise (`sps_affine_prof_enabled_flag` equals 1), affine motion compensation can be refined using optical flow. When it does not exist, the value of `sps_affine_prof_enabled_flag` is inferred to be 0.
[0411] `sps_prof_pic_present_flag` equal to 1 indicates that `ph_disable_prof_flag` exists in the PH of the reference SPS. `sps_prof_pic_present_flag` equal to 0 indicates that `ph_disable_prof_flag` does not exist in the PH of the reference SPS. When `sps_prof_pic_present_flag` does not exist, its value is inferred to be 0.
[0412] A value of 1 for `sps_palette_enabled_flag` indicates that `pred_mode_plt_flag` can exist in the codec unit syntax. A value of 0 for `sps_palette_enabled_flag` indicates that `pred_mode_plt_flag` does not exist in the codec unit syntax. When `sps_palette_enabled_flag` does not exist, it is inferred to be equal to 0.
[0413] A value of 1 for `sps_act_enabled_flag` indicates that adaptive color transformation can be used, and `cu_act_enabled_flag` can exist in the codec unit syntax. A value of 0 for `sps_act_enabled_flag` indicates that adaptive color transformation is not used, and `cu_act_enabled_flag` does not exist in the codec unit syntax. When `sps_act_enabled_flag` does not exist, it is inferred to be equal to 0.
[0414] min_qp_prime_ts_minus4 specifies the minimum allowed quantization parameters for the transform skip mode as follows:
[0415] QpPrimeTsMin=4+min_qp_prime_ts_minus4 (64)
[0416] The value of min_qp_prime_ts_minus4 should be in the range of 0 to 48 (inclusive).
[0417] `sps_bcw_enabled_flag` specifies whether bidirectional prediction using CU weights can be used for inter-frame prediction. If `sps_bcw_enabled_flag` equals 0, the syntax should be constrained so that bidirectional prediction using CU weights is not used in CLVS, and `bcw_idx` does not exist in the CLVS codec unit syntax. Otherwise (`sps_bcw_enabled_flag` equals 1), bidirectional prediction using CU weights can be used in CLVS.
[0418] `sps_ibc_enabled_flag` equal to 1 indicates that the IBC prediction mode can be used to decode images in CLVS. `sps_ibc_enabled_flag` equal to 0 indicates that the IBC prediction mode is not used in CLVS. When `sps_ibc_enabled_flag` does not exist, it is inferred to be equal to 0.
[0419] The `six_minus_max_num_ibc_merge_cand` parameter specifies the maximum number of IBC Merge Block Vector Prediction (BVP) candidates supported from the SPS subtracted from 6. The value of `six_minus_max_num_ibc_merge_cand` should be in the range of 0 to 5 (inclusive).
[0420] The maximum number of IBC Merge BVP candidates, MaxNumIbcMergeCand, is derived as follows:
[0421]
[0422] `sps_ciip_enabled_flag` specifies that the `ciip_flag` can exist in the codec unit syntax of the inter-frame codec unit. `sps_ciip_enabled_flag` equal to 0 specifies that the `ciip_flag` does not exist in the codec unit syntax of the inter-frame codec unit.
[0423] A value of 1 for sps_fpel_mmvd_enabled_flag specifies that Merge mode utilizing motion vector differences uses integer sample precision. A value of 0 for sps_fpel_mmvd_enabled_flag specifies that Merge mode utilizing motion vector differences can use fractional sample precision.
[0424] `sps_gpm_enabled_flag` specifies whether geometry-based motion compensation can be used for inter-frame prediction. `sps_gpm_enabled_flag` equal to 0 indicates that the syntax should be constrained so that geometry-based motion compensation is not used in CLVS, and `merge_gpm_partition_idx`, `merge_gpm_idx0`, and `merge_gpm_idx1` do not exist in the CLVS codec unit syntax. `sps_gpm_enabled_flag` equal to 1 indicates that geometry-based motion compensation can be used in CLVS. When it does not exist, the value of `sps_gpm_enabled_flag` is inferred to be 0.
[0425] max_num_merge_cand_minus_max_num_gpm_cand specifies the maximum number of geometric segmentation merge pattern candidates supported from the SPS subtracted from MaxNumMergeCand.
[0426] The maximum number of candidate geometric segmentation Merge patterns, MaxNumGpmMergeCand, is derived as follows:
[0427]
[0428] The value of MaxNumGpmMergeCand should be in the range of 2 to MaxNumMergeCand (inclusive).
[0429] `sps_lmcs_enabled_flag` equal to 1 specifies that luma mapping and chroma scaling are used in CLVS. `sps_lmcs_enabled_flag` equal to 0 specifies that luma mapping and chroma scaling are not used in CLVS.
[0430] A value of 1 for sps_lfnst_enabled_flag indicates that lfnst_idx can exist in the intra-frame codec unit syntax. A value of 0 for sps_lfnst_enabled_flag indicates that lfnst_idx does not exist in the intra-frame codec unit syntax.
[0431] The fact that sps_ladf_enabled_flag equals 1 indicates that sps_num_ladf_intervals_minus2, sps_ladf_lowest_interval_qp_offset, sps_ladf_qp_offset[i], and sps_ladf_delta_threshold_minus1[i] exist in SPS.
[0432] The increment of sps_num_ladf_intervals_minus2 by 1 specifies the number of sps_ladf_delta_threshold_minus1[i] and sps_ladf_qp_offset[i] syntax elements present in SPS. The value of sps_num_ladf_intervals_minus2 should be in the range of 0 to 3 (inclusive).
[0433] sps_ladf_lowest_interval_qp_offset specifies the offset used to derive the variable qP, as specified in Clause 8.8.3.6.1. The value of sps_ladf_lowest_interval_qp_offset should be in the range of -63 to 63 (inclusive).
[0434] sps_ladf_qp_offset[i] specifies the offset array used to derive the variable qP, as specified in Clause 8.8.3.6.1. The value of sps_ladf_qp_offset[i] should be in the range of -63 to 63 (inclusive).
[0435] `sps_ladf_delta_threshold_minus1[i]` is used to calculate the value of `SpsLadfIntervalLowerBound[i]`, which specifies the lower limit of the i-th luminance intensity level interval. The value of `sps_ladf_delta_threshold_minus1[i]` should be between 0 and 2. BitDepth -3 range (inclusive of 0 and 2) BitDepth -3) inside.
[0436] The value of SpsLadfIntervalLowerBound[0] is set to 0.
[0437] For each value of i in the range from 0 to sps_num_ladf_intervals_minus2 (inclusive), the variable SpsLadfIntervalLowerBound[i+1] is derived as follows:
[0438]
[0439] The value of the variable `Log2ParMrgLevel` is specified by incrementing `log2_parallel_merge_level_minus2` by 2. This value is used in the derivation of spatial merge candidates as specified in Clause 8.5.2.3, the derivation of motion vectors and reference indices in the sub-block merge patterns as specified in Clause 8.5.5.2, and controls the invocation of the update procedure for the historical motion vector prediction list in Clause 8.5.2.1. The value of `log2_parallel_merge_level_minus2` should be in the range of 0 to `CtbLog2SizeY-2` (inclusive). The variable `Log2ParMrgLevel` is derived as follows:
[0440] Log2ParMrgLevel=log2_parallel_merge_level_minus2+2 (68)
[0441] A value of 1 for `sps_scaling_list_enabled_flag` specifies that the scaling list is used in the scaling process of the transformation coefficients. A value of 0 for `sps_scaling_list_enabled_flag` specifies that the scaling list is not used in the scaling process of the transformation coefficients.
[0442] A value of 0 for `sps_dep_quant_enabled_flag` disables dependency quantization for images from the reference SPS. A value of 1 for `sps_dep_quant_enabled_flag` enables dependency quantization for images from the reference SPS.
[0443] A value of 0 for `sps_sign_data_hiding_enabled_flag` disables symbol bit hiding for the reference SPS image. A value of 1 for `sps_sign_data_hiding_enabled_flag` enables symbol bit hiding for the reference SPS image. When `sps_sign_data_hiding_enabled_flag` does not exist, it is inferred to be equal to 0.
[0444] `sps_virtual_boundaries_enabled_flag` equal to 1 indicates that loop filtering across virtual boundaries can be disabled and can be applied to encoded / decoded images in CLVS. `sps_virtual_boundaries_enabled_flag` equal to 0 indicates that loop filtering across virtual boundaries cannot be disabled and should not be applied to encoded / decoded images in CLVS. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering operations.
[0445] `sps_virtual_boundaries_present_flag` equal to 1 specifies that information about virtual boundaries is signaled in the SPS. `sps_virtual_boundaries_present_flag` equal to 0 specifies that information about virtual boundaries is not signaled in the SPS. When one or more virtual boundaries are signaled in the SPS, loop filtering operations are disabled for virtual boundaries in images spanning the reference SPS. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering operations.
[0446] The requirement for bitstream consistency is that when the value of res_change_in_clvs_allowed_flag is equal to 1, the value of sps_virtual_boundaries_present_flag should be equal to 0.
[0447] sps_num_ver_virtual_boundaries specifies the number of sps_virtual_boundaries_pos_x[i] syntax elements present in SPS. When sps_num_ver_virtual_boundaries does not exist, it is inferred to be equal to 0.
[0448] `sps_virtual_boundaries_pos_x[i]` specifies the position of the i-th vertical virtual boundary, in units of luminance samples divided by 8. The value of `sps_virtual_boundaries_pos_x[i]` should be in the range of 1 to `Ceil(pic_width_in_luma_samples÷8)-1` (inclusive). [Ed.(VD): `pic_width_in_luma_samples` is in PPS, not SPS.]
[0449] sps_num_hor_virtual_boundaries specifies the number of sps_virtual_boundaries_pos_y[i] syntax elements present in SPS. When sps_num_hor_virtual_boundaries does not exist, it is inferred to be equal to 0.
[0450] When sps_virtual_boundaries_enabled_flag equals 1 and sps_virtual_boundaries_present_flag equals 1, the sum of sps_num_ver_virtual_boundaries and sps_num_hor_virtual_boundaries should be greater than 0.
[0451] `sps_virtual_boundaries_pos_y[i]` specifies the position of the i-th horizontal virtual boundary, in units of luminance samples divided by 8. The value of `sps_virtual_boundaries_pos_y[i]` should be in the range of 1 to `Ceil(pic_height_in_luma_samples÷8)-1` (inclusive). [Ed.(VD): `pic_height_in_luma_samples` is in PPS, not SPS.]
[0452] A value of 1 for `sps_general_hrd_params_present_flag` indicates that the syntax structure `general_hrd_parameters()` exists in the SPS RBSP syntax structure. A value of 0 for `sps_general_hrd_params_present_flag` indicates that the syntax structure `general_hrd_parameters()` does not exist in the SPS RBSP syntax structure.
[0453] A value of 1 for `sps_sublayer_cpb_params_present_flag` indicates that the syntax structure `old_hrd_parameters()` in the SPS RBSP includes HRD parameters for the sublayer representation with a TemporalId in the range of 0 to `sps_max_sublayers_minus1` (inclusive). A value of 0 for `sps_sublayer_cpb_params_present_flag` indicates that the syntax structure `ols_hrd_parameters()` in the SPS RBSP includes HRD parameters for the sublayer representation with a 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 0.
[0454] When `sps_sublayer_cpb_params_present_flag` equals 0, the HRD parameters of the sublayer representation with TemporalId in the range of 0 to `sps_max_sublayers_minus1` (inclusive) are inferred to be the same as those of the sublayer representation with TemporalId equal to `sps_max_sublayers_minus1`. These include the HRD parameters from the `fixed_pic_rate_general_flag[i]` syntax element up to the `sublayer_hrd_parameters(i)` syntax structure immediately following the condition "if(general_vcl_hrd_params_present_flag)" in the `ols_hrd_parameters` syntax structure.
[0455] A field_seq_flag value of 1 indicates that CLVS transmits an image representing a field. A field_seq_flag value of 0 indicates that CLVS transmits an image representing a frame. When general_frame_only_constraint_flag is 1, the value of field_seq_flag should be 0.
[0456] When field_seq_flag equals 1, the Frame Field Information (SEI) message should exist for each codec image in CLVS.
[0457] Note 5 – The specified decoding process does not differentiate between images representing fields or frames. Therefore, a sequence of images representing fields will be encoded and decoded using the image dimensions of individual fields. For example, an image representing a 1080i field typically has a cropped output dimension of 1920x540, and the sequence image rate typically represents the rate of the source field (typically between 50 and 60 Hz), rather than the source frame rate (typically between 25 and 30 Hz).
[0458] A value of 1 for `vui_parameters_present_flag` indicates that the syntax structure `vui_parameters()` exists in the SPSRBSP syntax structure. A value of 0 for `vui_parameters_present_flag` indicates that the syntax structure `vui_parameters()` does not exist in the SPSRBSP syntax structure.
[0459] A value of 0 for `sps_extension_flag` indicates that no `sps_extension_data_flag` syntax element exists in the SPS RBSP syntax structure. A value of 1 for `sps_extension_flag` indicates that the `sps_extension_data_flag` syntax element exists in the SPS RBSP syntax structure.
[0460] The `sps_extension_data_flag` flag can have any value. Its presence and value do not affect the decoder's conformance to the grade specified in this version of the specification. Decoders conforming to this version of the specification should ignore all `sps_extension_data_flag` syntax elements.
[0461] 3.6. PPS Syntax and Semantics
[0462] In the latest VVC draft text, the PPS syntax and semantics are as follows:
[0463]
[0464]
[0465]
[0466]
[0467] The PPS RBSP should be available for the decoding process before being referenced, either in at least one AU with TemporalId less than or equal to the PPSNAL unit or provided by external means.
[0468] All PPS NAL cells within a PU that have a specific value of pps_pic_parameter_set_id should have the same content.
[0469] The pps_pic_parameter_set_id identifies the PPS referenced by other syntax elements. The value of pps_pic_parameter_set_id should be in the range of 0 to 63 (inclusive).
[0470] Regardless of the nuh_layer_id value, PPS NAL cells share the same value space for pps_pic_parameter_set_id.
[0471] Let ppsLayerId be the value of nuh_layer_id for a specific PPS NAL cell, and vclLayerId be the value of nuh_layer_id for a specific VCL NAL cell. A specific VCL NAL cell should not reference a specific PPS NAL cell unless ppsLayerId is less than or equal to vclLayerId, and the layer whose nuh_layer_id is equal to ppsLayerId is included in at least one OLS that includes a layer whose nuh_layer_id is equal to vclLayerId.
[0472] `pps_seq_parameter_set_id` specifies the value of `sps_seq_parameter_set_id` for the SPS. The value of `pps_seq_parameter_set_id` should be in the range of 0 to 15 (inclusive). The value of `pps_seq_parameter_set_id` should be the same across all PPS referenced by the encoder / decoder images in CLVS.
[0473] A mixed_nalu_types_in_pic_flag value of 1 indicates that each picture in the reference PPS has more than one VCLNAL unit, the VCL NAL units do not have the same value of nal_unit_type, and the picture is not an IRAP picture. A mixed_nalu_types_in_pic_flag value of 0 indicates that each picture in the reference PPS has one or more VCL NAL units, and the VCL NAL units of each picture in the reference PPS have the same value of nal_unit_type.
[0474] When no_mixed_nalu_types_in_pic_constraint_flag equals 1, the value of mixed_nalu_types_in_pic_flag should be equal to 0.
[0475] For each stripe in picture picA that also contains one or more stripes with another value of nal_unit_type (i.e., the value of mixed_nalu_types_in_pic_flag of picture picA is equal to 1) that has a nal_unit_type value nalUnitTypeA in the range from IDR_W_RADL to CRA_NUT (inclusive of IDR_W_RADL and CRA_NUT), the following applies:
[0476] - The stripe should belong to the subpicA whose corresponding subpic_treated_as_pic_flag[i] value is 1.
[0477] - A stripe should not belong to a subpico of a picA containing a VCL NAL unit whose nal_unit_type is not equal to nalUnitTypeA.
[0478] - If nalUnitTypeA equals CRA, then for all subsequent PUs following the current picture in CLVS in decoding and output order, the RefPicList[0] and RefPicList[1] of the stripes in subpicA of these PUs should not include any picture in the active entry that precedes picA in decoding order.
[0479] - Otherwise (i.e., nalUnitTypeA equals IDR_W_RADL or IDR_N_LP), for all PUs in the CLVS following the current picture in the decoding order, neither RefPicList[0] nor RefPicList[1] of the stripes in the subpicA of these PUs should include any picture in the active entry that precedes the picA in the decoding order.
[0480] Note 1 – A mixed_nalu_types_in_pic_flag value of 1 indicates that the reference PPS image contains stripes with different NAL unit types. This is, for example, from codec images where the encoder must ensure further alignment of sub-picture bitstream merging operations with the parameters of the original bitstream and the matching bitstream structure. An example of such alignment is as follows: when sps_idr_rpl_flag is equal to 0 and mixed_nalu_types_in_pic_flag is equal to 1, the reference PPS image cannot have stripes with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.
[0481] `pic_width_in_luma_samples` specifies the width of each decoded image in reference PPS, in luminance samples. `pic_width_in_luma_samples` should not be equal to 0, should be an integer multiple of `Max(8,MinCbSizeY)`, and should be less than or equal to `pic_width_max_in_luma_samples`.
[0482] When res_change_in_clvs_allowed_flag equals 0, the value of pic_width_in_luma_samples should be equal to pic_width_max_in_luma_samples.
[0483] `pic_height_in_luma_samples` specifies the height of each decoded image in the reference PPS, in luminance samples. `pic_height_in_luma_samples` should not be equal to 0, should be an integer multiple of `Max(8,MinCbSizeY)`, and should be less than or equal to `pic_height_max_in_luma_samples`.
[0484] When res_change_in_clvs_allowed_flag equals 0, the value of pic_height_in_luma_samples should be equal to pic_height_max_in_luma_samples.
[0485] The variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC are derived as follows:
[0486] PicWidthInCtbsY=Ceil(pic_width_in_luma_samples÷CtbSizeY) (69)
[0487] PicHeightInCtbsY=Ceil(pic_height_in_luma_samples÷CtbSizeY) (70)
[0488] PicSizeInCtbsY=PicWidthInCtbsY*PicHeightInCtbsY (71)
[0489] PicWidthInMinCbsY=pic_width_in_luma_samples / MinCbSizeY (72)
[0490] PicHeightInMinCbsY=pic_height_in_luma_samples / MinCbSizeY (73)
[0491] PicSizeInMinCbsY=PicWidthInMinCbsY*PicHeightInMinCbsY (74)
[0492] PicSizeInSamplesY=pic_width_in_luma_samples*pic_height_in_luma_samples (75)
[0493] PicWidthInSamplesC=pic_width_in_luma_samples / SubWidthC (76)
[0494] PicHeightInSamplesC=pic_height_in_luma_samples / SubHeightC (77)
[0495] A pps_conformance_window_flag value of 1 indicates that the consistency trimming window offset parameter follows the next one in PPS. A pps_conformance_window_flag value of 0 indicates that the consistency trimming window offset parameter does not exist in PPS.
[0496] `pps_conf_win_left_offset`, `pps_conf_win_right_offset`, `pps_conf_win_top_offset`, and `pps_conf_win_bottom_offset` specify the sample points of the image in the CLVS output from the decoding process, according to the rectangular area specified in the coordinates used for the output image. When `pps_conformance_window_flag` equals 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.
[0497] The consistent cropping window contains luminance samples at horizontal image 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 image 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)).
[0498] The value of SubWidthC*(pps_conf_win_left_offset+pps_conf_win_right_offset) should be less than pic_width_in_luma_samples, and the value of SubHeightC*(pps_conf_win_top_offset+pps_conf_win_bottom_offset) should be less than pic_height_in_luma_samples.
[0499] When ChromaArrayType is not equal to 0, the corresponding specified sample points of the two chroma arrays are sample points with image coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the image coordinates of the specified luminance sample point.
[0500] Note 2 – The consistent cropping window offset parameter is applied only to the output. All internal decoding processes are applied to the uncropped image size.
[0501] Let ppsA and ppsB be any two PPSs referencing the same SPS. The requirement for bitstream consistency is that when ppsA and ppsB have the same values for pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, ppsA and ppsB should also have the same values for pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset, respectively.
[0502] When pic_width_in_luma_samples equals pic_width_max_in_luma_samples and pic_height_in_luma_samples equals pic_height_max_in_luma_samples, the bitstream consistency requirement 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.
[0503] A scaling_window_explicit_signalling_flag value of 1 indicates that the scaling window offset parameter exists in PPS. A scaling_window_explicit_signalling_flag value of 0 indicates that the scaling window offset parameter does not exist in PPS. When res_change_in_clvs_allowed_flag is equal to 0, the value of scaling_window_explicit_signalling_flag should be equal to 0.
[0504] `scaling_win_left_offset`, `scaling_win_right_offset`, `scaling_win_top_offset`, and `scaling_win_bottom_offset` specify the offsets applied to the image size for scaling calculations. When these offsets are not present, their values 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.
[0505] The value of SubWidthC*(scaling_win_left_offset+scaling_win_right_offset) should be less than pic_width_in_luma_samples, and the value of SubHeightC*(scaling_win_top_offset+scaling_win_bottom_offset) should be less than pic_height_in_luma_samples.
[0506] The variables PicOutputWidthL and PicOutputHeightL are derived as follows:
[0507]
[0508]
[0509] Let refPicOutputWidthL and refPicOutputHeightL be the PicOutputWidthL and PicOutputHeightL of the reference image that references the current image of this PPS, respectively. Bitstream consistency requires that all of the following conditions be met:
[0510] -PicOutputWidthL*2 should be greater than or equal to refPicWidthInLumaSamples.
[0511] -PicOutputHeightL*2 should be greater than or equal to refPicHeightInLumaSamples.
[0512] -PicOutputWidthL should be less than or equal to refPicWidthInLumaSamples*8.
[0513] -PicOutputHeightL should be less than or equal to refPicHeightInLumaSamples*8.
[0514] -PicOutputWidthL*pic_width_max_in_luma_samples should be greater than or equal to refPicOutputWidthL*(pic_width_in_luma_samples-Max(8,MinCbSizeY)).
[0515] -PicOutputHeightL*pic_height_max_in_luma_samples should be greater than or equal to refPicOutputHeightL*(pic_height_in_luma_samples-Max(8,MinCbSizeY)).
[0516] A value of 1 for `output_flag_present_flag` indicates that the `pic_output_flag` syntax element exists in the header of the reference PPS. A value of 0 for `output_flag_present_flag` indicates that the `pic_output_flag` syntax element does not exist in the header of the reference PPS.
[0517] `subpic_id_mapping_in_pps_flag` equal to 1 specifies that signaling notification of the subpicture ID mapping is performed in the PPS. `subpic_id_mapping_in_pps_flag` equal to 0 specifies that signaling notification of the subpicture ID mapping is not performed in the PPS. If `subpic_id_mapping_explicitly_signalled_flag` is 0 or `subpic_id_mapping_in_sps_flag` is 1, then the value of `subpic_id_mapping_in_pps_flag` should be 0. Otherwise (where `subpic_id_mapping_explicitly_signalled_flag` is 1 and `subpic_id_mapping_in_sps_flag` is 0), the value of `subpic_id_mapping_in_pps_flag` should be 1.
[0518] pps_num_subpics_minus1 should be equal to sps_num_subpics_minus1.
[0519] pps_subpic_id_len_minus1 should be equal to sps_subpic_id_len_minus1.
[0520] pps_subpic_id[i] specifies the subpick ID of the i-th subpick. The length of the pps_subpic_id[i] syntax element is pps_subpic_id_len_minus1+1 bits.
[0521] For each value of i in the range from 0 to sps_num_subpics_minus1 (inclusive), the variable SubpicIdVal[i] is derived as follows:
[0522]
[0523] The requirement for bitstream consistency applies to the following two constraints:
[0524] - For any two distinct values i and j in the range from 0 to sps_num_subpics_minus1 (inclusive), SubpicIdVal[i] should not be equal to SubpicIdVal[j].
[0525] - When the current image is not the first image of CLVS, for each value of i in the range from 0 to sps_num_subpics_minus1 (inclusive), if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous image in the same layer in decoding order, then the nal_unit_type of all codec strip NAL units of the subpics in the current image with subpic index i should be equal to a specific value in the range from IDR_W_RADL to CRA_NUT (inclusive).
[0526] `no_pic_partition_flag` equal to 1 indicates that no image segmentation is applied to each image in the reference PPS. `no_pic_partition_flag` equal to 0 indicates that each image in the reference PPS can be segmented into more than one slice or strip.
[0527] The requirement for bitstream consistency is that the value of no_pic_partition_flag should be the same for all PPS referenced by the encoding and decoding images within CLVS.
[0528] 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 should not be equal to 1.
[0529] pps_log2_ctu_size_minus5 plus 5 specifies the luma codec tree block size for each CTU. pps_log2_ctu_size_minus5 should be equal to sps_log2_ctu_size_minus5.
[0530] Increasing 1 to `num_exp_tile_columns_minus1` specifies the number of tile column widths explicitly provided. The value of `num_exp_tile_columns_minus1` should be in the range of 0 to `PicWidthInCtbsY-1` (inclusive). When `no_pic_partition_flag` equals 1, the value of `num_exp_tile_columns_minus1` is inferred to be 0.
[0531] Increasing 1 to `num_exp_tile_rows_minus1` specifies the number of tile row heights explicitly provided. The value of `num_exp_tile_rows_minus1` should be in the range of 0 to `PicHeightInCtbsY-1` (inclusive). When `no_pic_partition_flag` is equal to 1, the value of `num_tile_rows_minus1` is inferred to be 0.
[0532] `tile_column_width_minus1[i]` incremented by 1 specifies the width of the i-th tile column in CTB units, where i is in the range of 0 to `num_exp_tile_columns_minus1-1` (inclusive). `tile_column_width_minus1[num_exp_tile_columns_minus1]` is used to deduce the width of tile columns whose index is 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]` should be in the range of 0 to `PicWidthInCtbsY-1` (inclusive). When it does not exist, the value of `tile_column_width_minus1[0]` is deduced to be equal to `PicWidthInCtbsY-1`.
[0533] `tile_row_height_minus1[i]` incremented by 1 specifies the height of the i-th slice row in CTB units, where i is in the range of 0 to `num_exp_tile_rows_minus1-1` (inclusive). `tile_row_height_minus1[num_exp_tile_rows_minus1]` is used to deduce the height of slice rows whose index is 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]` should be in the range of 0 to `PicHeightInCtbsY-1` (inclusive). When it does not exist, the value of `tile_row_height_minus1[0]` is deduced to be equal to `PicHeightInCtbsY-1`.
[0534] A `rect_slice_flag` value of 0 indicates that slices within each slice are arranged in raster scan order, and slice information is not signaled in the PPS. A `rect_slice_flag` value of 1 indicates that slices within each slice cover a rectangular area of the image, and slice information is signaled in the PPS. When it does not exist, `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` should be equal to 1.
[0535] `single_slice_per_subpic_flag` equal to 1 indicates that each subpicture consists of one and only one rectangular stripe. `single_slice_per_subpic_flag` equal to 0 indicates that each subpicture may consist of one or more rectangular stripes. When `single_slice_per_subpic_flag` equals 1, `num_slices_in_pic_minus1` is inferred to be equal to `sps_num_subpics_minus1`. When it does not exist, the value of `single_slice_per_subpic_flag` is inferred to be 0.
[0536] `num_slices_in_pic_minus1` incremented by 1 specifies the number of rectangular stripes in each picture of the reference PPS. The value of `num_slices_in_pic_minus1` should be in the range of 0 to `MaxSlicesPerPicture-1` (inclusive), where `MaxSlicesPerPicture` is specified in Appendix A. When `no_pic_partition_flag` equals 1, the value of `num_slices_in_pic_minus1` is inferred to be equal to 0.
[0537] A tile_idx_delta_present_flag value of 0 indicates that the tile_idx_delta value does not exist in the PPS, and all rectangular stripes in the image referencing the PPS are specified in raster order according to the procedure defined in Clause 6.5.1. A tile_idx_delta_present_flag value of 1 indicates that the tile_idx_delta value may exist in the PPS, and all rectangular stripes in the image referencing the PPS are specified in the order indicated by the tile_idx_delta value. When it does not exist, the value of tile_idx_delta_present_flag is inferred to be equal to 0.
[0538] The value of slice_width_in_tiles_minus1[i] plus 1 specifies the width of the i-th rectangular strip, in units of slice columns. The value of slice_width_in_tiles_minus1[i] should be in the range of 0 to NumTileColumns-1 (inclusive).
[0539] The following applies when slice_width_in_tiles_minus1[i] does not exist:
[0540] - If NumTileColumns equals 1, then the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0541] - Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred as specified in Clause 6.5.1.
[0542] `slice_height_in_tiles_minus1[i]` incremented by 1 specifies the height of the i-th rectangular strip, in units of slices. The value of `slice_height_in_tiles_minus1[i]` should be in the range of 0 to NumTileRows-1 (inclusive).
[0543] The following applies when slice_height_in_tiles_minus1[i] does not exist:
[0544] - If NumTileRows equals 1, or tile_idx_delta_present_flag equals 0 and tileIdx%NumTileColumns is greater than 0, then the value of slice_height_in_tiles_minus1[i] is inferred to be equal to 0.
[0545] - 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].
[0546] `num_exp_slices_in_tile[i]` specifies the number of explicitly provided slice heights in the current slice containing more than one rectangular slice. The value of `num_exp_slices_in_tile[i]` should be in the range of 0 to RowHeight[tileY]-1 (inclusive), where `tileY` is the slice row index containing the i-th slice. 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 inferred to be equal to 1.
[0547] The increment of 1 in `exp_slice_height_in_ctus_minus1[j]` specifies the height of the j-th rectangular stripe in the current slice, in CTU rows. The value of `exp_slice_height_in_ctus_minus1[j]` should be in the range of 0 to RowHeight[tileY]-1 (inclusive), where tileY is the slice row index of the current slice.
[0548] 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:
[0549]
[0550] `tile_idx_delta[i]` specifies the difference between the tile index of the first tile in the i-th rectangular strip and the tile index of the first tile in the (i+1)-th rectangular strip. The value of `tile_idx_delta[i]` should be in the range of -NumTilesInPic+1 to NumTilesInPic-1 (inclusive). 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]` should not be equal to 0.
[0551] A `loop_filter_across_tiles_enabled_flag` value of 1 indicates that loop filtering can be performed across tile boundaries in the reference PPS image. A `loop_filter_across_tiles_enabled_flag` value of 0 indicates that loop filtering is not performed across tile boundaries in the reference PPS image. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering. When not present, the value of `loop_filter_across_tiles_enabled_flag` is inferred to be 1.
[0552] A `loop_filter_across_slices_enabled_flag` value of 1 indicates that loop filtering can be performed across slice boundaries in the reference PPS image. A `loop_filter_across_slice_enabled_flag` value of 0 indicates that loop filtering is not performed across slice boundaries in the reference PPS image. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering. When it does not exist, the value of `loop_filter_across_slices_enabled_flag` is inferred to be 0.
[0553] A cabac_init_present_flag value of 1 indicates that the cabac_init_flag exists in the reference PPS stripe header. A cabac_init_present_flag value of 0 indicates that the cabac_init_flag does not exist in the reference PPS stripe header.
[0554] Incrementing 1 to num_ref_idx_default_active_minus1[i] specifies the inferred value of the variable NumRefIdxActive[0] for P or B stripes where num_ref_idx_active_override_flag equals 0 when i equals 0, and specifies the inferred value of NumRefIdxActive[1] for B stripes where num_ref_idx_active_override_flag equals 0 when i equals 1. The value of num_ref_idx_default_active_minus1[i] should be in the range of 0 to 14 (inclusive).
[0555] A value of 0 for rpl1_idx_present_flag indicates that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] do not exist in the PH syntax structure or the strip header of the image referenced in PPS. A value of 1 for rpl1_idx_present_flag indicates that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] may exist in the PH syntax structure or the strip header of the image referenced in PPS.
[0556] init_qp_minus26 plus 26 specifies the SliceQp for each slice of the PPS reference. Y The initial value. When a non-zero value of ph_qp_delta is decoded, SliceQp Y The initial value of SliceQp is modified at the image level, or when a non-zero value of slice_qp_delta is decoded. Y The initial value is modified at the stripe level. The value of init_qp_minus26 should be in the range of -(26+QpBdOffset) to +37 (inclusive).
[0557] A flag of 1 for `cu_qp_delta_enabled_flag` indicates that the syntax elements `ph_cu_qp_delta_subdiv_intra_slice` and `ph_cu_qp_delta_subdiv_inter_slice` exist in the reference PPS's PH, and `cu_qp_delta_abs` can exist in the transformation unit syntax. A flag of 0 for `cu_qp_delta_enabled_flag` indicates that the syntax elements `ph_cu_qp_delta_subdiv_intra_slice` and `ph_cu_qp_delta_subdiv_inter_slice` do not exist in the reference PPS's PH, and `cu_qp_delta_abs` does not exist in the transformation unit syntax.
[0558] A value of 1 for `pps_chroma_tool_offsets_present_flag` indicates that the chroma tool offset related syntax elements exist in the PPS RBSP syntax structure. A value of 0 for `pps_chroma_tool_offsets_present_flag` indicates that the chroma tool offset related syntax elements do not exist in the PPS RBSP syntax structure. When `ChromaArrayType` equals 0, the value of `pps_chroma_tool_offsets_present_flag` should be 0.
[0559] pps_cb_qp_offset and pps_cr_qp_offset are respectively specified for deriving Qp′. Cb and Qp′ Cr Brightness quantization parameter Qp′ Y The values of pps_cb_qp_offset and pps_cr_qp_offset should be in the range of -12 to +12 (inclusive). When ChromaArrayType equals 0, pps_cb_qp_offset and pps_cr_qp_offset are not used in the decoding process, and the decoder should ignore their values. When they do not exist, the values of pps_cb_qp_offset and pps_cr_qp_offset are inferred to be equal to 0.
[0560] A value of 1 for `pps_joint_cbcr_qp_offset_present_flag` indicates that `pps_joint_cbcr_qp_offset_value` and `joint_cbcr_qp_offset_list[i]` exist in the PPS RBSP syntax structure. A value of 0 for `pps_joint_cbcr_qp_offset_present_flag` indicates that `pps_joint_cbcr_qp_offset_value` and `joint_cbcr_qp_offset_list[i]` do not exist in the PPS RBSP syntax structure. When `ChromaArrayType` equals 0 or `sps_joint_cbcr_enabled_flag` equals 0, the value of `pps_joint_cbcr_qp_offset_present_flag` should be 0. When it does not exist, the value of `pps_joint_cbcr_qp_offset_present_flag` is inferred to be 0.
[0561] pps_joint_cbcr_qp_offset_value specifies the value used to derive Qp′. CbCr Brightness quantization parameter Qp′ YThe offset. The value of pps_joint_cbcr_qp_offset_value should be in the range of -12 to +12 (inclusive). When ChromaArrayType equals 0 or sps_joint_cbcr_enabled_flag equals 0, pps_joint_cbcr_qp_offset_value is not used in the decoding process, and the decoder should ignore its value. When pps_joint_cbcr_qp_offset_present_flag equals 0, pps_joint_cbcr_qp_offset_value does not exist and is inferred to be equal to 0.
[0562] A value of 1 for `pps_slice_chroma_qp_offsets_present_flag` indicates that the `slice_cb_qp_offset` and `slice_cr_qp_offset` syntax elements exist in the associated slice header. A value of 0 for `pps_slice_chroma_qp_offsets_present_flag` indicates that the `slice_cb_qp_offset` and `slice_cr_qp_offset` syntax elements do not exist in the associated slice header. When they do not exist, the value of `pps_slice_chroma_qp_offsets_present_flag` is inferred to be 0.
[0563] A value of 1 for `pps_cu_chroma_qp_offset_list_enabled_flag` indicates that the syntax elements `ph_cu_chroma_qp_offset_subdiv_intra_slice` and `ph_cu_chroma_qp_offset_subdiv_inter_slice` exist in the reference PPS's PH, and `cu_chroma_qp_offset_flag` can exist in both the Transform Unit syntax and the Palette Encoding / Decoding syntax. A value of 0 for `pps_cu_chroma_qp_offset_list_enabled_flag` indicates that the syntax elements `ph_cu_chroma_qp_offset_subdiv_intra_slice` and `ph_cu_chroma_qp_offset_subdiv_inter_slice` do not exist in the reference PPS's PH, and `cu_chroma_qp_offset_flag` does not exist in either the Transform Unit syntax or the Palette Encoding / Decoding syntax. When it does not exist, the value of `pps_cu_chroma_qp_offset_list_enabled_flag` is inferred to be 0.
[0564] The increment of 1 in `chroma_qp_offset_list_len_minus1` specifies the number of syntax elements `cb_qp_offset_list[i]`, `cr_qp_offset_list[i]`, and `joint_cbcr_qp_offset_list[i]` present in the PPS RBSP syntax structure. The value of `chroma_qp_offset_list_len_minus1` should be in the range of 0 to 5 (inclusive).
[0565] cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] respectively specify Qp′ Cb Qp′ Cr and Qp′ CbCr The offsets used in the derivation. The values of cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] should be in the range of -12 to +12 (inclusive). When pps_joint_cbcr_qp_offset_present_flag equals 0, joint_cbcr_qp_offset_list[i] does not exist and is inferred to be equal to 0.
[0566] A value of 0 for pps_weighted_pred_flag indicates that weighted predictions are not applied to the P-strips of the reference PPS. A value of 1 for pps_weighted_pred_flag indicates that weighted predictions are applied to the P-strips of the reference PPS. When sps_weighted_pred_flag is 0, the value of pps_weighted_pred_flag should be 0.
[0567] A value of 0 for pps_weighted_bipred_flag indicates that explicit weighted predictions are not applied to the B-strips of the reference PPS. A value of 1 for pps_weighted_bipred_flag indicates that explicit weighted predictions are applied to the B-strips of the reference PPS. When pps_weighted_bipred_flag is 0, the value of pps_weighted_bipred_flag should be 0.
[0568] A deblocking_filter_control_present_flag value of 1 indicates the presence of the deblocking filter control syntax element in PPS. A deblocking_filter_control_present_flag value of 0 indicates the absence of the deblocking filter control syntax element in PPS.
[0569] A value of 1 for `deblocking_filter_override_enabled_flag` indicates 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. A value of 0 for `deblocking_filter_override_enabled_flag` indicates 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 it does not exist, the value of `deblocking_filter_override_enabled_flag` is inferred to be 0.
[0570] A value of 1 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation should not be applied to slices of PPS that reference the `slice_deblocking_filter_disabled_flag`. A value of 0 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation is applied to slices of PPS that reference the `slice_deblocking_filter_disabled_flag`. When the `slice_deblocking_filter_disabled_flag` does not exist, its value is inferred to be 0.
[0571] `pps_beta_offset_div2` and `pps_tc_offset_div2` specify the default deblocking parameter offsets for the β and tC (divided by 2) of the luminance components applied to the reference PPS strip, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or the strip header of the reference PPS strip. The values of `pps_beta_offset_div2` and `pps_tc_offset_div2` should both be in the range of -12 to 12 (inclusive). When not present, the values of `pps_beta_offset_div2` and `pps_tc_offset_div2` are inferred to be equal to 0.
[0572] `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2` specify the default deblocking parameter offsets for the β and tC (divided by 2) of the Cb component applied to the reference PPS strip, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or the strip header of the reference PPS strip. The values of `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2` should both be in the range of -12 to 12 (inclusive). When not present, the values of `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2` are inferred to be equal to 0.
[0573] `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2` specify the default deblocking parameter offsets for the β and tC (divided by 2) of the Cr component applied to the reference PPS strip, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets existing in the image header or the strip header of the reference PPS strip. The values of `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2` should both be in the range of -12 to 12 (inclusive). When not present, the values of `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2` are inferred to be equal to 0.
[0574] `rpl_info_in_ph_flag` equal to 1 indicates that the reference image list information exists in the PH syntax structure and not in the strip header of a reference PPS that does not contain a PH syntax structure. `rpl_info_in_ph_flag` equal to 0 indicates that the reference image list information does not exist in the PH syntax structure, but may exist in the strip header of a reference PPS that does not contain a PH syntax structure.
[0575] A value of 1 for `dbf_info_in_ph_flag` indicates that the deblocking filter information exists in the PH syntax structure and not in the strip header of a reference PPS that does not contain a PH syntax structure. A value of 0 for `dbf_info_in_ph_flag` indicates that the deblocking filter information does not exist in the PH syntax structure and may exist in the strip header of a reference PPS that does not contain a PH syntax structure. When it does not exist, the value of `dbf_info_in_ph_flag` is inferred to be 0.
[0576] A `sao_info_in_ph_flag` value of 1 indicates that the SAO filter information exists in the PH syntax structure and not in the strip header of a reference PPS that does not contain a PH syntax structure. A `sao_info_in_ph_flag` value of 0 indicates that the SAO filter information does not exist in the PH syntax structure and may exist in the strip header of a reference PPS that does not contain a PH syntax structure.
[0577] `alf_info_in_ph_flag` equal to 1 indicates that the ALF information exists in the PH syntax structure and not in the strip header of a reference PPS that does not contain a PH syntax structure. `alf_info_in_ph_flag` equal to 0 indicates that the ALF information does not exist in the PH syntax structure and may exist in the strip header of a reference PPS that does not contain a PH syntax structure.
[0578] A value of 1 for `wp_info_in_ph_flag` indicates that the weighted prediction information can exist in the PH syntax structure but not in the strip header of a reference PPS that does not contain a PH syntax structure. A value of 0 for `wp_info_in_ph_flag` indicates that the weighted prediction information does not exist in the PH syntax structure but can exist in the strip header of a reference PPS that does not contain a PH syntax structure. When it does not exist, the value of `wp_info_in_ph_flag` is inferred to be 0.
[0579] A value of 1 for `qp_delta_info_in_ph_flag` indicates that the QP increment information exists within the PH syntax structure and not within the strip header of a reference PPS that does not contain a PH syntax structure. A value of 0 for `qp_delta_info_in_ph_flag` indicates that the QP increment information does not exist within the PH syntax structure and may exist within the strip header of a reference PPS that does not contain a PH syntax structure.
[0580] `pps_ref_wraparound_enabled_flag` equal to 1 specifies that horizontal wraparound motion compensation is applied in inter-frame prediction. `pps_ref_wraparound_enabled_flag` equal to 0 specifies that horizontal wraparound 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` should be equal to 0. When `sps_ref_wraparound_enabled_flag` is equal to 0, the value of `pps_ref_wraparound_enabled_flag` should also be equal to 0.
[0581] `pps_ref_wraparound_offset` plus `(CtbSizeY / MinCbSizeY) + 2` specifies the offset used to calculate the horizontal wraparound position, in units of `MinCbSizeY` luminance samples. The value of `pps_ref_wraparound_offset` should be in the range of 0 to `(pic_width_in_luma_samples / MinCbSizeY) - (CtbSizeY / MinCbSizeY) - 2` (inclusive).
[0582] The variable PpsRefWraparoundOffset is set to equal pps_ref_wraparound_offset+(CtbSizeY / MinCbSizeY)+2.
[0583] A picture_header_extension_present_flag value of 0 indicates that no PH extension syntax element exists in the reference PPS PH. A picture_header_extension_present_flag value of 1 indicates that the PH extension syntax element exists in the reference PPS PH. In a bitstream conforming to this version of the specification, picture_header_extension_present_flag should be equal to 0.
[0584] A slice_header_extension_present_flag value of 0 indicates that no slice header extension syntax element exists in the slice header of the reference PPS codec image. A slice_header_extension_present_flag value of 1 indicates that the slice header extension syntax element exists in the slice header of the reference PPS codec image. slice_header_extension_present_flag should be equal to 0 in bitstreams conforming to this version of the specification.
[0585] A value of 0 for pps_extension_flag indicates that no pps_extension_data_flag syntax element exists in the PPS RBSP syntax structure. A value of 1 for pps_extension_flag indicates that the pps_extension_data_flag syntax element exists in the PPS RBSP syntax structure.
[0586] The `pps_extension_data_flag` flag can have any value. Its presence and value do not affect the decoder's conformance to the grade specified in this version of the specification. Decoders conforming to this version of the specification should ignore all `pps_extension_data_flag` syntax elements.
[0587] 3.7. APS Syntax and Semantics
[0588] In the latest VVC draft text, the APS syntax and semantics are as follows:
[0589]
[0590]
[0591] APS RBSP contains the ALF syntax structure, namely alf_data().
[0592]
[0593]
[0594] APS RBSP contains the LMCS syntax structure, namely lmcs_data().
[0595]
[0596]
[0597] APS RBSP includes a scaling list data syntax structure, namely scaling_list_data().
[0598]
[0599] Each APS RBSP should be available for the decoding process before being referenced, either in at least one AU whose TemporalId is less than or equal to the TemporalId of the NAL unit of the codec strip that references it, or provided by external means.
[0600] All APS NAL cells within a PU that have specific values for adaptation_parameter_set_id and aps_params_type should have the same content, regardless of whether they are prefix or suffix APS NAL cells.
[0601] The adaptation_parameter_set_id provides an identifier for the AP for reference by other syntax elements.
[0602] When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 7 (inclusive).
[0603] When aps_params_type equals LMCS_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 3 (inclusive).
[0604] Let apsLayerId be the value of nuh_layer_id for a specific APS NAL cell, and vclLayerId be the value of nuh_layer_id for a specific VCL NAL cell. A specific VCL NAL cell should not reference a specific APS NAL cell unless apsLayerId is less than or equal to vclLayerId, and the layer whose nuh_layer_id is equal to apsLayerId is included in at least one OLS that includes a layer whose nuh_layer_id is equal to vclLayerId.
[0605] aps_params_type specifies the type of APS parameters carried in APS, as specified in Table 6.
[0606] Table 6 – APS Parameter Type Codes and Types of APS Parameters
[0607]
[0608] Regardless of the nuh_layer_id value, all APS NAL cells with a specific value of aps_params_type share the same value space for adaptation_parameter_set_id. APS NAL cells with different values of aps_params_type use a separate value space for adaptation_parameter_set_id.
[0609] Note 1 – APS NAL units (with specific values for adaptation_parameter_set_id and aps_params_type) can be shared across images, and different stripes within an image can reference different ALF APSs.
[0610] Note 2 – The suffix APS NAL unit associated with a specific VCL NAL unit (which precedes the suffix APS NAL unit in the decoding order) is not used by the specific VCL NAL unit, but by the VCL NAL unit that follows the suffix APS NAL unit in the decoding order.
[0611] A value of 0 for `aps_extension_flag` indicates that no `aps_extension_data_flag` syntax element exists in the APS RBSP syntax structure. A value of 1 for `aps_extension_flag` indicates that the `aps_extension_data_flag` syntax element exists in the APS RBSP syntax structure.
[0612] The `aps_extension_data_flag` flag can have any value. Its presence and value do not affect the grade specified in this version of the decoder. Decoders conforming to this version of the specification should ignore all `aps_extension_data_flag` syntax elements.
[0613] `alf_luma_filter_signal_flag` equal to 1 specifies a set of signaling notification luminance filters. `alf_luma_filter_signal_flag` equal to 0 specifies a set of no signaling notification luminance filters.
[0614] `alf_chroma_filter_signal_flag` equal to 1 specifies that the chroma filter is signaled. `alf_chroma_filter_signal_flag` equal to 0 specifies that the chroma filter is not signaled. When `ChromaArrayType` equals 0, `alf_chroma_filter_signal_flag` should be equal to 0.
[0615] 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 should be equal to 1.
[0616] The variable NumAlfFilters, which specifies the number of different adaptive loop filters, is set to 25.
[0617] A value of 0 for `alf_luma_clip_flag` specifies that a linear adaptive loop filter is applied to the luminance component. A value of 1 for `alf_luma_clip_flag` specifies that a nonlinear adaptive loop filter can be applied to the luminance component.
[0618] The increment of 1 in alf_luma_num_filters_signalled_minus1 specifies the number of adaptive loop filter classes whose luminance coefficients can be signaled. The value of alf_luma_num_filters_signalled_minus1 should be in the range of 0 to NumAlfFilters-1 (inclusive).
[0619] `alf_luma_coeff_delta_idx[filtIdx]` specifies the index of the adaptive loop filter luminance coefficient increment, indicated by the signaling of the filter class, ranging from 0 to `filtIdx` (NumAlfFilters-1). If `alf_luma_coeff_delta_idx[filtIdx]` does not exist, 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]` should be in the range of 0 to `alf_luma_num_filters_signalled_minus1` (inclusive).
[0620] `alf_luma_coeff_abs[sfIdx][j]` specifies the absolute value of the j-th coefficient of the luminance filter notified by the signaling indicated by `sfIdx`. If `alf_luma_coeff_abs[sfIdx][j]` does not exist, it is inferred to be equal to 0. The value of `alf_luma_coeff_abs[sfIdx][j]` should be in the range of 0 to 128 (inclusive).
[0621] alf_luma_coeff_sign[sfIdx][j] specifies the sign of the j-th luminance coefficient of the filter indicated by sfIdx as follows:
[0622] - If alf_luma_coeff_sign[sfIdx][j] equals 0, then the corresponding luminance filter coefficient has a positive value.
[0623] Otherwise (alf_luma_coeff_sign[sfIdx][j] equals 1), the corresponding luminance filter coefficient has a negative value.
[0624] When alf_luma_coeff_sign[sfIdx][j] does not exist, it is inferred to be equal to 0.
[0625] The variable filtCoeff[sfIdx][j] (where sfIdx = 0..alf_luma_num_filters_signalled_minus1, j = 0..11) is initialized as follows:
[0626]
[0627] Having element AlfCoeff L The luminance filter coefficients AlfCoeff are defined by [adaptation_parameter_set_id][filtIdx][j] (where filtIdx = 0..NumAlfFilters-1 and j = 0..11). L [adaptation_parameter_set_id] is deduced as follows:
[0628] AlfCoeff L [adaptation_parameter_set_id][filtIdx][j]=filtCoeff[alf_luma_coeff_delta_idx[filtIdx]][j] (94)
[0629] The fixed filter coefficients AlfFixFiltCoeff[i][j] (where i = 0..64, j = 0..11) and the filter map class AlfClassToFiltMap[m][n] (where m = 0..15 and n = 0..24) are derived as follows:
[0630]
[0631]
[0632]
[0633]
[0634]
[0635] The requirement for bitstream consistency is AlfCoeff L The value of [adaptation_parameter_set_id][filtIdx][j] (where fitIdx = 0..NumAlfFilters-1, j = 0..11) should be in the range of -2. 7 to 2 7 The range of -1 (including -2) 7 and 2 7 -1) inside.
[0636] `alf_luma_clip_idx[sfIdx][j]` specifies the clipping index of the clipping value to be used before multiplying by the j-th coefficient of the luminance filter notified by the signaling indicated by `sfIdx`. The bitstream consistency requirement 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 (inclusive).
[0637] Having element AlfClip L The luminance filter clipping value AlfClip is calculated from [adaptation_parameter_set_id][filtIdx][j] (where filtIdx = 0..NumAlfFilters-1 and j = 0..11). L [adaptation_parameter_set_id] is derived from BitDepth and clipIdx set to equal alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j] as specified in Table 8.
[0638] A value of 0 for `alf_chroma_clip_flag` specifies that a linear adaptive loop filter is applied to the chroma components; a value of 1 for `alf_chroma_clip_flag` specifies that a nonlinear adaptive loop filter is applied to the chroma components. When `alf_chroma_clip_flag` does not exist, it is inferred to be equal to 0.
[0639] The increment of alf_chroma_num_alt_filters_minus1 by 1 specifies the number of alternative filters for the chroma components. The value of alf_chroma_num_alt_filters_minus1 should be in the range of 0 to 7 (inclusive).
[0640] `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`. If `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 of 0 to 128 (inclusive).
[0641] alf_chroma_coeff_sign[altIdx][j] specifies the sign of the j-th chroma filter coefficient with index altIdx as follows:
[0642] - If alf_chroma_coeff_sign[altIdx][j] equals 0, then the corresponding chroma filter coefficient has a positive value.
[0643] Otherwise (alf_chroma_coeff_sign[altIdx][j] equals 1), the corresponding chroma filter coefficients have negative values.
[0644] When alf_chroma_coeff_sign[altIdx][j] does not exist, it is inferred to be equal to 0.
[0645] Having element AlfCoeff C The chroma filter coefficients AlfCoeff 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 deduced as follows:
[0646]
[0647] The requirement for bitstream consistency is AlfCoeff C The value of [adaptation_parameter_set_id][altIdx][j] (where altIdx = 0..alf_chroma_num_alt_filters_minus1, j = 0..5) should be in the range of -2. 7 to 2 7 The range of -1 (including -2) 7 and 2 7 -1) inside.
[0648] `alf_cc_cb_filter_signal_flag` equal to 1 specifies that the cross-component filter signals the Cb color components. `alf_cc_cb_filter_signal_flag` equal to 0 specifies that the cross-component filter does not signal the Cb color components. When `ChromaArrayType` equals 0, `alf_cc_cb_filter_signal_flag` should be equal to 0.
[0649] The increment of 1 in `alf_cc_cb_filters_signalled_minus1` specifies the number of cross-component filters for the Cb color components signaled in the current ALF APS. The value of `alf_cc_cb_filters_signalled_minus1` should be in the range of 0 to 3 (inclusive).
[0650] alf_cc_cb_mapped_coeff_abs[k][j] specifies the absolute value of the j-th mapping coefficient of the k-th cross-component filter for the signaling notification of the Cb color components. When alf_cc_cb_mapped_coeff_abs[k][j] does not exist, it is inferred to be equal to 0.
[0651] alf_cc_cb_coeff_sign[k][j] specifies the sign of the j-th coefficient of the k-th cross-component filter for the signaling notification of the Cb color component, as follows:
[0652] - If alf_cc_cb_coeff_sign[k][j] equals 0, then the corresponding cross-component filter coefficients have positive values.
[0653] Otherwise (alf_cc_cb_sign[k][j] equals 1), the corresponding cross-component filter coefficients have negative values.
[0654] When alf_cc_cb_coeff_sign[k][j] does not exist, it is inferred to be equal to 0.
[0655] The signaling notification of the k-th cross-component filter coefficient CcAlfApsCoeff for the Cb color component Cb [adaptation_parameter_set_id][k][j] (where j = 0..6) is derived as follows:
[0656] - If alf_cc_cb_mapped_coeff_abs[k][j] equals 0, then CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] is set to 0.
[0657] -Otherwise, CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] is set to equal to (1-2*alf_cc_cb_coeff_sign[k][j])*2 alf_cc_cb_mapped_coeff_abs[k][j]-1 .
[0658] `alf_cc_cr_filter_signal_flag` equal to 1 specifies that the cross-component filter signals the Cr color component. `alf_cc_cr_filter_signal_flag` equal to 0 specifies that the cross-component filter does not signal the Cr color component. When `ChromaArrayType` equals 0, `alf_cc_cr_filter_signal_flag` should be equal to 0.
[0659] The increment of 1 in `alf_cc_cr_filters_signalled_minus1` 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` should be in the range of 0 to 3 (inclusive).
[0660] alf_cc_cr_mapped coeff_abs[k][j] specifies the absolute value of the j-th mapping coefficient of the k-th cross-component filter for the signaling notification of the Cr color component. When alf_cc_cr_mapped coeff_abs[k][j] does not exist, it is inferred to be equal to 0.
[0661] alf_cc_cr_coeff_sign[k][j] specifies the sign of the j-th coefficient of the k-th cross-component filter for the signaling notification of the Cr color component, as follows:
[0662] - If alf_cc_cr_coeff_sign[k][j] equals 0, then the corresponding cross-component filter coefficients have positive values.
[0663] Otherwise (alf_cc_cr_sign[k][j] equals 1), the corresponding cross-component filter coefficients have negative values.
[0664] When alf_cc_cr_coeff_sign[k][j] does not exist, it is inferred to be equal to 0.
[0665] The signaling notification of the k-th cross-component filter coefficient CcAlfApsCoeff for the Cr color component Cr [adaptation_parameter_set_id][k][j] (where j = 0..6) is derived as follows:
[0666] - If alf_cc_cr_mapped_coeff_abs[k][j] equals 0, then CcAlfApsCoeff Cr[adaptation_parameter_set_id][k][j] is set to 0.
[0667] -Otherwise, CcAlfApsCoeff Cr [adaptation_parameter_set_id][k][j] is set to equal to (1-2*alf_cc_cr_coeff_sign[k][j])*2 alf_cc_cr_mapped_coeff_abs[k][j]-1 .
[0668] `alf_chroma_clip_idx[altIdx][j]` specifies the clipping index to be used before the j-th coefficient of the alternative chroma filter with index `altIdx`. The bitstream consistency requirement 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 (inclusive).
[0669] Having element 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 from BitDepth and clipIdx, which is set to be equal to alf_chroma_clip_idx[altIdx][j] as specified in Table 8.
[0670] Table 8 – AlfClip according to the specifications of BitDepth and clipIdx
[0671]
[0672] `lmcs_min_bin_idx` specifies the minimum binary index used during the luma mapping and chroma scaling construction process. The value of `lmcs_min_bin_idx` should be in the range of 0 to 15 (inclusive).
[0673] `lmcs_delta_max_bin_idx` specifies the increment between 15 and the maximum binary index `LmcsMaxBinIdx` used during luma mapping and chroma scaling. The value of `lmcs_delta_max_bin_idx` should be in the range of 0 to 15 (inclusive). The value of `LmcsMaxBinIdx` is set to equal to 15 - `lmcs_delta_max_bin_idx`. The value of `LmcsMaxBinIdx` should be greater than or equal to `lmcs_min_bin_idx`.
[0674] The increment of 1 in lmcs_delta_cw_prec_minus1 specifies the number of bits used in the representation of the syntax lmcs_delta_abs_cw[i]. The value of lmcs_delta_cw_prec_minus1 should be in the range of 0 to BitDepth-2 (inclusive).
[0675] lmcs_delta_abs_cw[i] specifies the absolute increment codeword value for the i-th binary bit.
[0676] The symbol for the variable lmcsDeltaCW[i] is specified by lmcs_delta_sign_cw_flag[i] as follows:
[0677] - If mcs_delta_sign_cw_flag[i] equals 0, then lmcsDeltaCW[i] is a positive value.
[0678] Otherwise (mcs_delta_sign_cw_flag[i] is not equal to 0), lmcsDeltaCW[i] is negative.
[0679] When mcs_delta_sign_cw_flag[i] does not exist, it is inferred to be equal to 0.
[0680] The variable OrgCW is derived as follows:
[0681] OrgCW = (1 < <BitDepth) / 16 (98)
[0682] The variable lmcsDeltaCW[i] (where i = lmcs_min_bin_idx..LmcsMaxBinIdx) is derived as follows:
[0683] lmcsDeltaCW[i]=(1-2*lmcs_delta_sign_cw_flag[i])*lmcs_delta_abs_cw[i](99)
[0684] The variable lmcsCW[i] is derived as follows:
[0685] - For i = 0..lmcs_min_bin_idx-1, lmcsCW[i] is set to equal to 0.
[0686] - For i = lmcs_min_bin_idx..LmcsMaxBinIdx, the following applies:
[0687] lmcsCW[i]=OrgCW+lmcsDeltaCW[i] (100)
[0688] The value of lmcsCW[i] should be in the range of (OrgCW>>3) to (OrgCW<<3-1) ((OrgCW>>3 and (OrgCW<<3-1)).
[0689] - For i = LmcsMaxBinIdx + 1..15, lmcsCW[i] is set to equal to 0.
[0690] Bitstream consistency requires the following condition to be true:
[0691]
[0692] The variable InputPivot[i] (where i = 0..16) is derived as follows:
[0693] InputPivot[i] = i * OrgCW (102)
[0694] The variables LmcsPivot[i] (where i = 0..16), ScaleCoeff[i], and InvScaleCoeff[i] (where i = 0..15) are derived as follows:
[0695]
[0696] 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)) should not be equal to the value of (LmcsPivot[i+1] >> (BitDepth-5)).
[0697] `lmcs_delta_abs_crs` specifies the absolute codeword value of the variable `lmcsDeltaCrs`. The value of `lmcs_delta_abs_crs` should be in the range of 0 and 7 (inclusive). If it does not exist, `lmcs_delta_abs_crs` is inferred to be equal to 0.
[0698] 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.
[0699] The variable lmcsDeltaCrs is derived as follows:
[0700] lmcsDeltaCrs=(1-2*lmcs_delta_sign_crs_flag)*lmcs_delta_abs_crs (104)
[0702] The requirement for bitstream consistency is that when lmcsCW[i] is not equal to 0, (lmcsCW[i]+lmcsDeltaCrs) should be within the range of (OrgCW>>3) to ((OrgCW<<3)-1) (inclusive of (OrgCW>>3) and ((OrgCW<<3)-1)).
[0703] The variable ChromaScaleCoeff[i] (where i = 0…15) is derived as follows:
[0704]
[0705]
[0706] A scaling_matrix_for_lfnst_disabled_flag value of 1 specifies that the scaling matrix should not be applied to blocks encoded or decoded using LFNST. A scaling_matrix_for_lfnst_disabled_flag value of 0 specifies that the scaling matrix can be applied to blocks encoded or decoded using LFNST.
[0707] A `scaling_list_chroma_present_flag` value of 1 indicates that the chroma scaling list exists in `scaling_list_data()`. A `scaling_list_chroma_present_flag` value of 0 indicates that the chroma scaling list does not exist in `scaling_list_data()`. For bitstream consistency, `scaling_list_chroma_present_flag` should be 0 when `ChromaArrayType` is 0, and should be 1 when `ChromaArrayType` is not 0.
[0708] A scaling_list_copy_mode_flag[id] equal to 1 indicates 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]. A scaling_list_copy_mode_flag[id] equal to 0 indicates that scaling_list_pred_mode_flag exists.
[0709] A scaling_list_pred_mode_flag[id] equal to 1 indicates 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]. A scaling_list_pred_mode_flag[id] equal to 0 indicates that the value of the scaling list is explicitly signaled. When it does not exist, the value of scaling_list_pred_mode_flag[id] is inferred to be 0.
[0710] `scaling_list_pred_id_delta[id]` specifies the reference scaling list used to derive the predicted scaling matrix `ScalingMatrixPred[id]`. If it does not exist, the value of `scaling_list_pred_id_delta[id]` is inferred to be 0. The value of `scaling_list_pred_id_delta[id]` should be in the range of 0 to `maxIdDelta`, where `maxIdDelta` is inferred from `id` as follows:
[0711] maxIdDelta=(id<2)? id:((id<8)?(id-2):(id-8)) (106)
[0712] The variables refId and matrixSize are derived as follows:
[0713] refId=id-scaling_list_pred_id_delta[id] (107)
[0714] matrixSize=(id<2)? 2:((id<8)?4:8) (108)
[0715] The array ScalingMatrixPred[x][y] (where x = 0..matrixSize-1, y = 0..matrixSize-1) and the variable ScalingMatrixDCPred are derived as follows:
[0716] - 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 equal to 8, and the value of ScalingMatrixDCPred is set to equal to 8.
[0717] Otherwise, when scaling_list_pred_id_delta[id] equals 0, all elements of ScalingMatrixPred are set to 16, and ScalingMatrixDCPred is set to 16.
[0718] - Otherwise (scaling_list_copy_mode_flag[id] or scaling_list_pred_mode_flag[id] equals 1, and scaling_list_pred_id_delta[id] is greater than 0), ScalingMatrixPred is set to equal ScalingMatrixRec[refId], and the following applies to ScalingMatrixDCPred:
[0719] - If refId is greater than 13, then ScalingMatrixDCPred is set to equal ScalingMatrixDCRec[refId-14].
[0720] Otherwise (refId is less than or equal to 13), ScalingMatrixDCPred is set to equal ScalingMatrixPred[0][0].
[0721] When id is greater than 13, scaling_list_dc_coef[id-14] is used to deduce the value of the variable ScalingMatrixDC[id-14] as follows:
[0722] ScalingMatrixDCRec[id-14]=(ScalingMatrixDCPred+scaling_list_dc_coef[id-14])&255 (109)
[0723] 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 (inclusive). The value of ScalingMatrixDCRec[id-14] should be greater than 0.
[0724] `scaling_list_delta_coef[id][i]` specifies the difference between the current matrix coefficients `ScalingList[id][i]` and the previous matrix coefficients `ScalingList[id][i-1]` when `scaling_list_copy_mode_flag[id]` equals 0. The value of `scaling_list_delta_coef[id][i]` should be in the range of -128 to 127 (inclusive). When `scaling_list_copy_mode_flag[id]` equals 1, all elements of `ScalingList[id]` are set to 0.
[0725] The (matrixSize)x(matrixSize) array ScalingMatrixRec[id] is derived as follows:
[0726] ScalingMatrixRec[id][x][y]=(ScalingMatrixPred[x][y]+ScalingList[id][k])&255 (110)
[0727] Where k = 0..(matrixSize*matrixSize-1),
[0728] x=DiagScanOrder[Log2(matrixSize)][Log2(matrixSize)][k][0], and
[0729] y=DiagScanOrder[Log2(matrixSize)][Log2(matrixSize)][k][1]
[0730] The value of ScalingMatrixRec[id][x][y] should be greater than 0.
[0731] 3.8. PH Syntax and Semantics
[0732] In the latest VVC draft text, the PH syntax and semantics are as follows:
[0733]
[0734] The PH RBSP contains the PH syntax structure, namely picture_header_structure().
[0735]
[0736]
[0737]
[0738]
[0739]
[0740] The PH syntax structure contains common information for all stripes of the encoded / decoded image associated with the PH syntax structure.
[0741] A value of 1 for `gdr_or_irap_pic_flag` indicates that the current image is a GDR or IRAP image. A value of 0 for `gdr_or_irap_pic_flag` indicates that the current image may or may not be a GDR or IRAP image.
[0742] `gdr_pic_flag` equal to 1 indicates that the image associated with the PH is a GDR image. `gdr_pic_flag` equal to 0 indicates that the image associated with the PH is not a GDR image. When it does not exist, the value of `gdr_pic_flag` is inferred to be 0. When `gdr_enabled_flag` equals 0, the value of `gdr_pic_flag` should be 0.
[0743] A ph_inter_slice_allowed_flag value of 0 indicates that all codec slices of the image have a slice_type of 2. A ph_inter_slice_allowed_flag value of 1 indicates that the image may or may not have one or more codec slices with a slice_type of 0 or 1.
[0744] A value of 0 for `ph_intra_slice_allowed_flag` indicates that all codec slices in the image have a slice_type of 0 or 1. A value of 1 for `ph_intra_slice_allowed_flag` indicates that the image may or may not have one or more codec slices with a slice_type of 2. When none exist, the value of `ph_intra_slice_allowed_flag` is inferred to be 1.
[0745] Note 1 – For bitstreams that should be merged based on sub-pictures 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 to 1.
[0746] A non_reference_picture_flag value of 1 indicates that the picture associated with the PH is never used as a reference picture. A non_reference_picture_flag value of 0 indicates that the picture associated with the PH may or may not be used as a reference picture.
[0747] ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id for the PPS being used. The value of ph_pic_parameter_set_id should be in the range of 0 to 63 (inclusive).
[0748] The requirement for bitstream consistency is that the value of the TemporalId of PH should be greater than or equal to the value of the TemporalId of PPS, which has the same value as the value of ph_pic_parameter_set_id and the value of pps_pic_parameter_set_id.
[0749] `ph_pic_order_cnt_lsb` specifies the image order count modulo `MaxPicOrderCntLsb` for the current image. 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` should be in the range of 0 to `MaxPicOrderCntLsb-1` (inclusive).
[0750] The `no_output_of_prior_pics_flag` flag affects the output of previously decoded pictures in the DPB after decoding a CLVSS picture that is not the first picture in the bitstream specified in Appendix C.
[0751] `recovery_poc_cnt` specifies the recovery point of the decoded images according to the output order. If the current image is a GDR image associated with the PH, and there is an image `picA` in the CLVS of `PicOrderCntVal` that is equal to the current GDR image's `PicOrderCntVal` plus `recovery_poc_cnt`, then image `picA` is called the recovery point image. Otherwise, the first image in the output order of `PicOrderCntVal` that is greater than the current image's `PicOrderCntVal` plus `recovery_poc_cnt` is called the recovery point image. The recovery point image should not precede the current GDR image according to the decoding order. The value of `recovery_poc_cnt` should be in the range of 0 to `MaxPicOrderCntLsb-1` (inclusive).
[0752] When the current image is a GDR image, the variable RpPicOrderCntVal is derived as follows:
[0753] RpPicOrderCntVal=PicOrderCntVal+recovery_poc_cnt (82)
[0754] Note 2 – When gdr_enabled_flag equals 1 and the current image’s PicOrderCntVal is greater than or equal to the associated GDR image’s RpPicOrderCntVal, the current decoded image and subsequent decoded images in the output order are completely matched with the corresponding images generated by starting the decoding process from the previous IRAP image (if present) that precedes the associated GDR image in the decoding order.
[0755] ph_extra_bit[i] can be equal to 1 or 0. Decoders conforming to this specification for this version should ignore the value of ph_extra_bit[i]. Its value does not affect the level specified in this version of the decoder conforming to the specification.
[0756] `ph_poc_msb_present_flag` equal to 1 indicates that the syntax element `poc_msb_val` exists in `ph`. `ph_poc_msb_present_flag` equal to 0 indicates that the syntax element `poc_msb_val` does not exist in `ph`. The value of `ph_poc_msb_present_flag` should be 0 when `vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]` equals 0 and there is an image in the current AU of the current layer's reference layer.
[0757] poc_msb_val specifies the POC MSB value of the current image. The length of the syntax element poc_msb_val is poc_msb_len_minus1+1 bits.
[0758] A value of 1 for `ph_alf_enabled_flag` indicates that the adaptive loop filter is enabled for all stripes associated with `PH`, and can be applied to the Y, Cb, or Cr color components within the stripes. A value of 0 for `ph_alf_enabled_flag` indicates that the adaptive loop filter can be disabled for one, several, or all stripes associated with `PH`. When it does not exist, `ph_alf_enabled_flag` is inferred to be equal to 0.
[0759] ph_num_alf_aps_ids_luma specifies the number of ALF APSs associated with the PH band reference.
[0760] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referenced by the luminance component of the strip associated with PH.
[0761] The value of alf_luma_filter_signal_flag of the APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be equal to 1.
[0762] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be less than or equal to the TemporalId of the image associated with PH.
[0763] `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 both the Cb and Cr color components. When `ph_alf_chroma_idc` does not exist, it is inferred to be equal to 0.
[0764] ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referenced for the chromaticity components of the strip associated with PH.
[0765] The value of alf_chroma_filter_signal_flag for an APS NAL cell that has aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma should be equal to 1.
[0766] The TemporalId of an APS NAL cell 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 image associated with PH.
[0767] `ph_cc_alf_cb_enabled_flag` equal to 1 specifies a cross-component filter that enables the Cb color components for all stripes associated with `PH`, and can be applied to the Cb color components within a stripe. `ph_cc_alf_cb_enabled_flag` equal to 0 specifies a cross-component filter that can disable the Cb color components for one, several, or all stripes associated with `PH`. When it does not exist, `ph_cc_alf_cb_enabled_flag` is inferred to be equal to 0.
[0768] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced for the Cb color component of the strip associated with PH.
[0769] The value of alf_cc_cb_filter_signal_flag for an APS NAL cell that has aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id should be equal to 1.
[0770] The TemporalId of an APS NAL cell with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the image associated with the PH.
[0771] `ph_cc_alf_cr_enabled_flag` equal to 1 specifies a cross-component filter that enables the Cr color component for all stripes associated with `PH`, and can be applied to the Cr color component within a stripe. `ph_cc_alf_cr_enabled_flag` equal to 0 specifies a cross-component filter that can disable the Cr color component for one, several, or all stripes associated with `PH`. When it does not exist, `ph_cc_alf_cr_enabled_flag` is inferred to be equal to 0.
[0772] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced for the Cr color component of the strip associated with PH.
[0773] The value of alf_cc_cr_filter_signal_flag for an APS NAL cell that has aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id should be equal to 1.
[0774] The TemporalId of an APS NAL cell with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id should be less than or equal to the TemporalId of the image associated with the PH.
[0775] A value of 1 for ph_lmcs_enabled_flag indicates that luma mapping and chroma scaling are enabled for all stripes associated with PH. A value of 0 for ph_lmcs_enabled_flag indicates that luma mapping and chroma scaling are disabled for one, more, or all stripes associated with PH. When ph_lmcs_enabled_flag does not exist, its value is inferred to be 0.
[0776] `ph_lmcs_aps_id` specifies the `adaptation_parameter_set_id` of the LMCS APS associated with the PH. The TemporalId of the APS NAL cell, which has an `aps_params_type` equal to `LMCS_APS` and an `adaptation_parameter_set_id` equal to `ph_lmcs_aps_id`, should be less than or equal to the TemporalId of the image associated with the PH.
[0777] A ph_chroma_residual_scale_flag value of 1 indicates that chroma residual scaling is enabled for all stripes associated with PH. A ph_chroma_residual_scale_flag value of 0 indicates that chroma residual scaling can be disabled for one, more, or all stripes associated with PH. When ph_chroma_residual_scale_flag does not exist, it is inferred to be equal to 0.
[0778] `ph_scaling_list_present_flag` equal to 1 specifies that the scaling list data used for the stripes associated with the PH is derived based on the scaling list data contained in the reference scaling list APS. `ph_scaling_list_present_flag` equal to 0 specifies that the scaling list data used for the stripes associated with the PH is set to 16. When it does not exist, the value of `ph_scaling_list_present_flag` is inferred to be 0.
[0779] `ph_scaling_list_aps_id` specifies the `adaptation_parameter_set_id` of the scaling list APS. The `TemporalId` of the APS NAL cell, which has an `aps_params_type` equal to `SCALING_APS` and an `adaptation_parameter_set_id` equal to `ph_scaling_list_aps_id`, should be less than or equal to the `TemporalId` of the image associated with the `PH`.
[0780] `ph_virtual_boundaries_present_flag` equal to 1 specifies that information about virtual boundaries is signaled in the PH (Picture View). `ph_virtual_boundaries_present_flag` equal to 0 specifies that information about virtual boundaries is not signaled in the PH. When one or more virtual boundaries are signaled in the PH, loop filtering operations are disabled across virtual boundaries in the image. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering operations. When not present, the value of `ph_virtual_boundaries_present_flag` is inferred to be 0.
[0781] The requirement for bitstream consistency is that when subpic_info_present_flag equals 1, the value of ph_virtual_boundaries_present_flag should be equal to 0.
[0782] The variable VirtualBoundariesPresentFlag is derived as follows:
[0783]
[0784] ph_num_ver_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_x[i] syntax elements present in PH. When ph_num_ver_virtual_boundaries does not exist, it is inferred to be equal to 0.
[0785] The variable NumVerVirtualBoundaries is derived as follows:
[0786]
[0787] ph_virtual_boundaries_pos_x[i] specifies the position of the i-th vertical virtual boundary, in units of luminance samples divided by 8. The value of ph_virtual_boundaries_pos_x[i] should be in the range of 1 to Ceil(pic_width_in_luma_samples÷8)-1 (inclusive).
[0788] The list VirtualBoundariesPosX[i] (where i ranges from 0 to NumVerVirtualBoundaries-1, inclusive) specifying the locations of vertical virtual boundaries, in units of luminance samples, is derived as follows:
[0789]
[0790] The distance between any two vertical virtual boundaries should be greater than or equal to CtbSizeY luminance samples.
[0791] `ph_num_hor_virtual_boundaries` specifies the number of `ph_virtual_boundaries_pos_y[i]` syntax elements present in `PH`. When `ph_num_hor_virtual_boundaries` does not exist, it is inferred to be equal to 0.
[0792] The parameter NumHorVirtualBoundaries is derived as follows:
[0793]
[0794]
[0795] When sps_virtual_boundaries_enabled_flag equals 1 and ph_virtual_boundaries_present_flag equals 1, the sum of ph_num_ver_virtual_boundaries and ph_num_hor_virtual_boundaries should be greater than 0.
[0796] ph_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary, in units of luminance samples divided by 8. The value of ph_virtual_boundaries_pos_y[i] should be in the range of 1 to Ceil(pic_height_in_luma_samples÷8)-1 (inclusive).
[0797] The list VirtualBoundariesPosY[i] (where i ranges from 0 to NumHorVirtualBoundaries-1, inclusive)) specifying the locations of horizontal virtual boundaries, in units of luminance samples, is derived as follows:
[0798]
[0799] The distance between any two horizontal virtual boundaries should be greater than or equal to CtbSizeY luminance samples.
[0800] The `pic_output_flag` affects the decoded image output and removal process, as specified in Appendix C. When `pic_output_flag` is not present, it is inferred to be equal to 1.
[0801] A partition_constraints_override_flag value of 1 indicates that the partition constraint parameters exist in the partition property (PH). A partition_constraints_override_flag value of 0 indicates that the partition constraint parameters do not exist in the PH. When the parameter does not exist, the value of partition_constraints_override_flag is inferred to be 0.
[0802] `ph_log2_diff_min_qt_min_cb_intra_slice_luma` specifies the base-2 logarithm of the smallest size of the luminance samples in the luminance leaf blocks generated from the quadtree partitioning of the CTU, and the base-2 logarithm of the smallest decoder block size in the luminance samples of the luminance CUs in the slices with a slice_type equal to 2(I) associated with PH. The value of `ph_log2_diff_min_qt_min_cb_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY-MinCbLog2SizeY` (inclusive). When it does not exist, the value of `ph_log2_diff_min_qt_min_cb_luma` is inferred to be equal to `sps_log2_diff_min_qt_min_cb_intra_slice_luma`.
[0803] `ph_max_mtt_hierarchy_depth_intra_slice_luma` specifies the maximum hierarchical depth of the codec unit generated from the multi-type tree partitioning of quad-leaf trees in stripes with a slice_type of 2 (I) associated with `PH`. The value of `ph_max_mtt_hierarchy_depth_intra_slice_luma` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive). When it does not exist, 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`.
[0804] `ph_log2_diff_max_bt_min_qt_intra_slice_luma` specifies the difference between the base-2 logarithm of the maximum size (width or height) of the luminance samples in the luminance codec block that can be divided using binary partitioning, and the minimum size (width or height) of the luminance samples in the luminance leaf block resulting from the quadtree partitioning of the CTU from a slice with a slice_type equal to 2(I) associated with PH. The value of `ph_log2_diff_max_bt_min_qt_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeIntraY` (inclusive). When it does not exist, 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.
[0805] `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 luminance samples in the luminance codec block that can be divided using ternary partitioning, and the minimum size (width or height) of the luminance samples in the luminance leaf block resulting from the quadtree partitioning of the CTU from a slice with slice_type equal to 2(I) associated with PH. The value of `ph_log2_diff_max_tt_min_qt_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeIntraY` (inclusive). When it does not exist, 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.
[0806] `ph_log2_diff_min_qt_min_cb_intra_slice_chroma` specifies the base-2 logarithm of the smallest size of the luminance samples in the chrominance leaf blocks generated from the quadtree partitioning of the chrominance CTU with `treeType` equal to `DUAL_TREE_CHROMA`, and the base-2 logarithm of the smallest decoder block size in the luminance samples of the chrominance CU with `treeType` equal to `DUAL_TREE_CHROMA` in the slice with `slice_type` equal to 2(I) associated with `PH`. The value of `ph_log2_diff_min_qt_min_cb_intra_slice_chroma` should be in the range of 0 to `CtbLog2SizeY-MinCbLog2SizeY` (inclusive). When it does not exist, the value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to sps_log2_diff_min_qt_min_cb_intra_slice_chroma.
[0807] `ph_max_mtt_hierarchy_depth_intra_slice_chroma` specifies the maximum hierarchical depth of the chroma codec unit generated from a multi-type tree partition of chroma quadtree leaves with a `treeType` of `DUAL_TREE_CHROMA` from a slice with a `slice_type` of 2 (I) associated with `PH`. The value of `ph_max_mtt_hierarchy_depth_intra_slice_chroma` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive). When it does not exist, 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`.
[0808] `ph_log2_diff_max_bt_min_qt_intra_slice_chroma` specifies the base-2 logarithm of the largest size (width or height) of the luminance samples in a chroma codec block that can be divided using binary partitioning, and the difference between the smallest size (width or height) of the luminance samples in a chroma leaf block resulting from a quadtree partition of a chroma CTU with a `treeType` equal to `DUAL_TREE_CHROMA` from a strip with `slice_type` equal to 2(I) associated with `PH`. The value of `ph_log2_diff_max_bt_min_qt_intra_slice_chroma` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeIntraC` (inclusive). When it does not exist, 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.
[0809] `ph_log2_diff_max_tt_min_qt_intra_slice_chroma` specifies the difference between the base-2 logarithm of the maximum size (width or height) of the luminance samples in a chroma codec block that can be divided using ternary partitioning, and the minimum size (width or height) of the luminance samples in a chroma leaf block resulting from a quadtree partition of a chroma CTU with a `treeType` equal to `DUAL_TREE_CHROMA` from a strip with `slice_type` equal to 2(I) associated with `PH`. The value of `ph_log2_diff_max_tt_min_qt_intra_slice_chroma` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeIntraC` (inclusive). When it does not exist, 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.
[0810] `ph_cu_qp_delta_subdiv_intra_slice` specifies the maximum `cbSubdiv` value of the codec unit in the intra-slice transmitting `cu_qp_delta_abs` and `cu_qp_delta_sign_flag`. The value of `ph_cu_qp_delta_subdiv_intra_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma) (inclusive).
[0811] When it does not exist, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.
[0812] `ph_cu_chroma_qp_offset_subdiv_intra_slice` specifies the maximum `cbSubdiv` value of the codec unit in the intra-slice transmitting `cu_chroma_qp_offset_flag`. The value of `ph_cu_chroma_qp_offset_subdiv_intra_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma) (inclusive).
[0813] When it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.
[0814] `ph_log2_diff_min_qt_min_cb_inter_slice` specifies the base-2 logarithm of the minimum size of the luminance samples in the luminance leaf blocks generated from the quadtree partitioning of the CTU, and the base-2 logarithm of the minimum luminance codec block size in the luminance samples of the luminance CUs in the slices with a slice_type of 0 (B) or 1 (P) associated with PH. The value of `ph_log2_diff_min_qt_min_cb_inter_slice` should be in the range of 0 to `CtbLog2SizeY-MinCbLog2SizeY` (inclusive). When it does not exist, the value of `ph_log2_diff_min_qt_min_cb_luma` is inferred to be equal to `sps_log2_diff_min_qt_min_cb_inter_slice`.
[0815] `ph_max_mtt_hierarchy_depth_inter_slice` specifies the maximum hierarchical depth of the codec unit generated from the multi-type tree partitioning of quad-leaf trees in stripes with a slice_type of 0 (B) or 1 (P) associated with `PH`. The value of `ph_max_mtt_hierarchy_depth_inter_slice` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive). When it does not exist, the value of `ph_max_mtt_hierarchy_depth_inter_slice` is inferred to be equal to `sps_max_mtt_hierarchy_depth_inter_slice`.
[0816] `ph_log2_diff_max_bt_min_qt_inter_slice` specifies the base-2 logarithm of the maximum size (width or height) of the luminance samples in a luminance codec block that can be divided using binary partitioning, and the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of the CTU from a stripe with a slice_type equal to 0 (B) or 1 (P) associated with PH. The value of `ph_log2_diff_max_bt_min_qt_inter_slice` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeInterY` (inclusive). When it does not exist, 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`.
[0817] `ph_log2_diff_max_tt_min_qt_inter_slice` specifies the base-2 logarithm of the largest size (width or height) of the luminance samples in a luminance codec block that can be divided using ternary partitioning, and the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of a CTU from a stripe with a slice_type equal to 0 (B) or 1 (P) associated with PH. The value of `ph_log2_diff_max_tt_min_qt_inter_slice` should be in the range of 0 to `CtbLog2SizeY-MinQtLog2SizeInterY` (inclusive). When it does not exist, 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`.
[0818] `ph_cu_qp_delta_subdiv_inter_slice` specifies the maximum `cbSubdiv` value of the codec unit in the inter-frame slice transmitting `cu_qp_delta_abs` and `cu_qp_delta_sign_flag`. The value of `ph_cu_qp_delta_subdiv_inter_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeInterY+ph_max_mtt_hierarchy_depth_inter_slice) (inclusive).
[0819] When it does not exist, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.
[0820] `ph_cu_chroma_qp_offset_subdiv_inter_slice` specifies the maximum `cbSubdiv` value of the codec unit in the inter-frame slice transmitting `cu_chroma_qp_offset_flag`. The value of `ph_cu_chroma_qp_offset_subdiv_inter_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeInterY+ph_max_mtt_hierarchy_depth_inter_slice) (inclusive).
[0821] When it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.
[0822] `ph_temporal_mvp_enabled_flag` specifies whether temporal motion vector prediction values can be used for inter-frame prediction of the slice associated with the PH. If `ph_temporal_mvp_enabled_flag` equals 0, the syntax elements of the slice associated with the PH should be constrained such that no temporal motion vector prediction values are used in the decoding of the slice. Otherwise (if `ph_temporal_mvp_enabled_flag` equals 1), temporal motion vector prediction values can be used in the decoding of the slice associated with the PH. When it does not exist, the value of `ph_temporal_mvp_enabled_flag` is inferred to be equal to 0. When there is no reference image in the DPB with the same spatial resolution as the current image, the value of `ph_temporal_mvp_enabled_flag` should be equal to 0.
[0823] The maximum number of MVP candidates based on sub-blocks, MaxNumSubblockMergeCand, is derived as follows:
[0824]
[0825] The value of MaxNumSubblockMergeCand should be in the range of 0 to 5 (inclusive).
[0826] A value of 1 for ph_collocated_from_l0_flag indicates that the co-located image used for temporal motion vector prediction is derived from reference image list 0. A value of 0 for ph_collocated_from_l0_flag indicates that the co-located image used for temporal motion vector prediction is derived from reference image list 1.
[0827] ph_collocated_ref_idx specifies the reference index of the co-located image used for temporal motion vector prediction.
[0828] When ph_collocated_from_l0_flag equals 1, ph_collocated_ref_idx refers to the entry in reference image list 0, and the value of ph_collocated_ref_idx should be in the range of 0 to num_ref_entries[0][RplsIdx[0]]-1 (inclusive of 0 and num_ref_entries[0][RplsIdx[0]]-1).
[0829] When ph_collocated_from_l0_flag equals 0, ph_collocated_ref_idx refers to the entry in reference image list 1, and the value of ph_collocated_ref_idx should be in the range of 0 to num_ref_entries[1][RplsIdx[1]]-1 (inclusive of 0 and num_ref_entries[1][RplsIdx[1]]-1).
[0830] When it does not exist, the value of ph_collocated_ref_idx is inferred to be equal to 0.
[0831] A `mvd_l1_zero_flag` value of 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 0. A `mvd_l1_zero_flag` value of 0 indicates that the `mvd_coding(x0,y0,1)` syntax structure is parsed.
[0832] `ph_fpel_mmvd_enabled_flag` equal to 1 specifies that the Merge mode utilizing motion vector differences uses integer sample precision in the strips associated with the PH. `ph_fpel_mmvd_enabled_flag` equal to 0 specifies that the Merge mode utilizing motion vector differences can use fractional sample precision in the strips associated with the PH. When it does not exist, the value of `ph_fpel_mmvd_enabled_flag` is inferred to be 0.
[0833] A value of 1 for ph_disable_bdof_flag indicates that inter-frame bidirectional prediction based on bidirectional optical flow is disabled in the stripe associated with PH. A value of 0 for ph_disable_bdof_flag indicates that inter-frame bidirectional prediction based on bidirectional optical flow can be enabled or disabled in the stripe associated with PH.
[0834] The following applies when ph_disable_bdof_flag is not present:
[0835] – If sps_bdof_enabled_flag equals 1, then the value of ph_disable_bdof_flag is inferred to be equal to 0.
[0836] Otherwise (if sps_bdof_enabled_flag equals 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.
[0837] A value of 1 for ph_disable_dmvr_flag indicates that inter-frame bidirectional prediction based on decoder motion vector refinement is disabled in the slice associated with the PH. A value of 0 for ph_disable_dmvr_flag indicates that inter-frame bidirectional prediction based on decoder motion vector refinement can be enabled or disabled in the slice associated with the PH.
[0838] The following applies when ph_disable_dmvr_flag is not present:
[0839] – If sps_dmvr_enabled_flag equals 1, then the value of ph_disable_dmvr_flag is inferred to be equal to 0.
[0840] Otherwise (sps_dmvr_enabled_flag equals 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[0841] A value of 1 for ph_disable_prof_flag indicates that prediction refinement using optical flow is disabled in the stripe associated with PH. A value of 0 for ph_disable_prof_flag indicates that prediction refinement using optical flow can be enabled or disabled in the stripe associated with PH.
[0842] The following applies when ph_disable_prof_flag is not present:
[0843] – If sps_affine_prof_enabled_flag equals 1, then the value of ph_disable_prof_flag is inferred to be equal to 0.
[0844] Otherwise (sps_affine_prof_enabled_flag equals 0), the value of ph_disable_prof_flag is inferred to be equal to 1.
[0845] ph_qp_delta specifies the Qp to be used for codec blocks in the image until the value of CuQpDeltaVal in the codec unit layer is modified. Y The initial value.
[0846] When qp_delta_info_in_ph_flag equals 1, the Qp of all bands in the image Y Initial value of quantization parameter SliceQp Y The derivation is as follows:
[0847] SliceQp Y =26+init_qp_minus26+ph_qp_delta (89)
[0848] SliceQp Y The value should be in the range of -QpBdOffset to +63 (inclusive).
[0849] `ph_joint_cbcr_sign_flag` specifies whether the co-occurrence residual samples of the two chromaticity components have inverted signs in a transform unit where `tu_joint_cbcr_residual_flag[x0][y0]` equals 1. When `tu_joint_cbcr_residual_flag[x0][y0]` of the transform unit equals 1, `ph_joint_cbcr_sign_flag` equals 0, indicating that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the co-occurrence Cb (or Cr) residual sample, and `ph_joint_cbcr_sign_flag` equals 1, indicating that the sign of each residual sample of the Cr (or Cb) component is given by the inverted sign of the co-occurrence Cb (or Cr) residual sample.
[0850] A value of 1 for ph_sao_luma_enabled_flag indicates that SAO is enabled for the luminance component in all stripes associated with PH; a value of 0 for ph_sao_luma_enabled_flag indicates that SAO for the luminance component can be disabled for one, several, or all stripes associated with PH. When ph_sao_luma_enabled_flag does not exist, it is inferred to be equal to 0.
[0851] A value of 1 for ph_sao_chroma_enabled_flag indicates that SAO is enabled for the chroma components in all stripes associated with PH; a value of 0 for ph_sao_chroma_enabled_flag indicates that SAO for the chroma components can be disabled for one, several, or all stripes associated with PH. When ph_sao_chroma_enabled_flag does not exist, it is inferred to be equal to 0.
[0852] A value of 0 for `ph_dep_quant_enabled_flag` disables dependency quantization for the current image. A value of 1 for `ph_dep_quant_enabled_flag` enables dependency quantization for the current image. When `ph_dep_quant_enabled_flag` does not exist, it is inferred to be equal to 0.
[0853] A value of 0 for `pic_sign_data_hiding_enabled_flag` disables symbol bit hiding for the current image. A value of 1 for `pic_sign_data_hiding_enabled_flag` enables symbol bit hiding for the current image. When `pic_sign_data_hiding_enabled_flag` does not exist, it is inferred to be equal to 0.
[0854] A value of 1 for `ph_deblocking_filter_override_flag` indicates that the deblocking parameter exists in `PH`. A value of 0 for `ph_deblocking_filter_override_flag` indicates that the deblocking parameter does not exist in `PH`. When it does not exist, the value of `ph_deblocking_filter_override_flag` is inferred to be 0.
[0855] A value of 1 for `ph_deblocking_filter_disabled_flag` indicates that the deblocking filter operation is not applied to the stripes associated with `PH`. A value of 0 for `ph_deblocking_filter_disabled_flag` indicates that the deblocking filter operation is applied to the stripes associated with `PH`. When `ph_deblocking_filter_disabled_flag` does not exist, it is inferred to be equal to `pps_deblocking_filter_disabled_flag`.
[0856] `ph_beta_offset_div2` and `ph_tc_offset_div2` specify the deblocking parameter offsets (divided by 2) applied to the luminance components of the strip associated with PH for the β and tC. The values of `ph_beta_offset_div2` and `ph_tc_offset_div2` should be in the range of -12 to 12 (inclusive). 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.
[0857] `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2` specify the deblocking parameter offsets (divided by 2) applied to the Cb components of the strip associated with PH for the β and tC components. The values of `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2` should be in the range of -12 to 12 (inclusive). 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.
[0858] `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2` specify the deblocking parameter offsets (divided by 2) applied to the β and tC of the Cr component in the strip associated with PH. The values of both `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2` should be in the range of -12 to 12 (inclusive). When not present, the values of `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2` are inferred to be equal to `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2`, respectively.
[0859] `ph_extension_length` specifies the length of the PH extension data in bytes, excluding the bits used for its own signaling notification `ph_extension_length`. The value of `ph_extension_length` should be in the range of 0 to 256 (inclusive). If it does not exist, the value of `ph_extension_length` is inferred to be equal to 0.
[0860] `ph_extension_data_byte` can have any value. Decoders conforming to this specification for this version should ignore the value of `ph_extension_data_byte`. Its value does not affect the grade specified in this version of the specification for which the decoder conforms.
[0861] 3.9.SH Syntax and Semantics
[0862] In the latest VVC draft text, the SH syntax and semantics are as follows:
[0863]
[0864]
[0865]
[0866]
[0867] The variable CuQpDeltaVal, which specifies the difference between the luminance quantization parameter and its prediction for the codec unit containing cu_qp_delta_abs, is set to 0. This specifies the Qp′ to be used in determining the codec unit containing cu_chroma_qp_offset_flag. Cb Qp′ Cr and Qp′ CbCr The variable CuQpOffset is used to quantize the corresponding value of the parameter.Cb CuQpOffset Cr and CuQpOffset CbCr All of them were set to 0.
[0868] A picture_header_in_slice_header_flag value of 1 indicates that the PH syntax structure exists in the stripe header. A picture_header_in_slice_header_flag value of 0 indicates that the PH syntax structure does not exist in the stripe header.
[0869] The requirement for bitstream consistency is that the value of picture_header_in_slice_header_flag should be the same in all codec slices in CLVS.
[0870] When the picture_header_in_slice_header_flag of the codec slice is equal to 1, the requirement for bitstream consistency is that there should be no VCL NAL unit in CLVS with nal_unit_type equal to PH_NUT.
[0871] When picture_header_in_slice_header_flag equals 0, all codec stripes in the current picture should have picture_header_in_slice_header_flag equal to 0, and the current PU should have PH NAL units.
[0872] `slice_subpic_id` specifies the subpick ID of the subpick containing the slice. If `slice_subpic_id` exists, the value of the variable `CurrSubpicIdx` is deduced to make `SubpicIdVal[CurrSubpicIdx]` equal to `slice_subpic_id`. Otherwise (if `slice_subpic_id` does not exist), `CurrSubpicIdx` is deduced to be equal to 0. The length of `slice_subpic_id` is `sps_subpic_id_len_minus1+1` bits.
[0873] `slice_address` specifies the address of the slice. When it does not exist, the value of `slice_address` is inferred to be 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 0.
[0874] If rect_slice_flag equals 0, then the following applies:
[0875] - The stripe address is the raster scan chip index.
[0876] The length of -slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0877] The value of -slice_address should be in the range of 0 to NumTilesInPic-1 (inclusive).
[0878] Otherwise (rect_slice_flag equals 1), the following applies:
[0879] - The stripe address is the sub-image level stripe index of the stripe.
[0880] The length of -slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.
[0881] The value of -slice_address should be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx]-1 (inclusive).
[0882] The requirement for bitstream consistency applies to the following constraints:
[0883] - If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, then the value of slice_address should not be equal to the value of slice_address of any other codec strip NAL unit of the same codec image.
[0884] Otherwise, a pair of slice_subpic_id and slice_address values should not be equal to a pair of slice_subpic_id and slice_address values for any other codec strip NAL unit of the same codec image.
[0885] - The shape of the image stripes should be such that each CTU, when decoded, should have its entire left and entire top boundaries consisting of the image boundaries or the boundaries of (multiple) previously decoded CTUs.
[0886] sh_extra_bit[i] can be equal to 1 or 0. Decoders conforming to this specification for this version should ignore the value of sh_extra_bit[i]. Its value does not affect the level specified in this version of the decoder conforming to the specification.
[0887] Incrementing 1 by num_tiles_in_slice_minus1 (if present) specifies the number of slices in the strip. The value of num_tiles_in_slice_minus1 should be in the range of 0 to NumTilesInPic-1 (inclusive).
[0888] The variable NumCtusInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i] (where i ranges from 0 to NumCtusInCurrSlice-1, inclusive) of the image raster scan addresses of the i-th CTU within the slice, are derived as follows:
[0889]
[0890] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos are derived as follows:
[0891]
[0892]
[0893] slice_type specifies the encoding / decoding type of the slice according to Table 9.
[0894] Table 9 – Name association with slice_type
[0895] slice_type The name of slice_type 0 B (B band) 1 P (P-band) 2 I(I strip)
[0896] When it does not exist, the value of slice_type is inferred to be equal to 2.
[0897] When ph_intra_slice_allowed_flag equals 0, the value of slice_type should be 0 or 1. When nal_unit_type is within the range of IDR_W_RADL to CRA_NUT (inclusive of IDR_W_RADL and CRA_NUT), and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 1, slice_type should be 2.
[0898] The variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC are derived as follows:
[0899] - If slice_type equals 2(I), then the following applies:
[0900] MinQtLog2SizeY=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_luma (119)
[0901] MinQtLog2SizeC=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_chroma (120)
[0902] MaxBtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_bt_min_qt_intra_slice_luma) (121)
[0903] MaxBtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_bt_min_qt_intra_slice_chroma) (122)
[0904] MaxTtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_tt_min_qt_intra_slice_luma) (123)
[0905] MaxTtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma) (124)
[0906] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma (125)
[0907] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma (126)
[0908] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice (127)
[0909] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice(128)
[0910] - Otherwise (slice_type equals 0 (B) or 1 (P)), the following applies:
[0911] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(129)
[0912] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(130)
[0913] MaxBtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice) (131)
[0914] MaxBtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice) (132)
[0915] MaxTtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice) (133)
[0916] MaxTtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_tt_min_qt_inter_slice) (134)
[0917] MaxMttDepthY=ph_max_mtt_hierarchy_depth_inter_slice (135)
[0918] MaxMttDepthC=ph_max_mtt_hierarchy_depth_inter_slice (136)
[0919] CuQpDeltaSubdiv=ph_cu_qp_delta_subdiv_inter_slice (137)
[0920] CuChromaQpOffsetSubdiv=ph_cu_chroma_qp_offset_subdiv_inter_slice(138)
[0921] - The following applies:
[0922] MinQtSizeY = 1 <MinQtLog2SizeY (139)
[0923] MinQtSizeC = 1 <MinQtLog2SizeC (140)
[0924] MinBtSizeY=1< <MinCbLog2SizeY (141)
[0925] MinTtSizeY=1< <MinCbLog2SizeY (142)
[0926] A slice_alf_enabled_flag value of 1 indicates that the adaptive loop filter is enabled and can be applied to the Y, Cb, or Cr color components in the slice. A slice_alf_enabled_flag value of 0 indicates that the adaptive loop filter is disabled for all color components in the slice. When it does not exist, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.
[0927] `slice_num_alf_aps_ids_luma` specifies the number of ALF APS referenced by the slice. When `slice_alf_enabled_flag` is equal to 1 and `slice_num_alf_aps_ids_luma` does not exist, the value of `slice_num_alf_aps_ids_luma` is inferred to be equal to the value of `ph_num_alf_aps_ids_luma`.
[0928] `slice_alf_aps_id_luma[i]` specifies the `adaptation_parameter_set_id` of the i-th ALF APS referenced by the luminance component of the slice. The `TemporalId` of the APS NAL cell, which has `aps_params_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_alf_aps_id_luma[i]`, should be less than or equal to the `TemporalId` of the codec slice NAL cell. When `slice_alf_enabled_flag` is equal to 1 and `slice_alf_aps_id_luma[i]` does not exist, the value of `slice_alf_aps_id_luma[i]` is inferred to be equal to the value of `ph_alf_aps_id_luma[i]`.
[0929] The value of alf_luma_filter_signal_flag of the APS NAL cell that has aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be equal to 1.
[0930] A slice_alf_chroma_idc equal to 0 indicates 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 both the Cb and Cr color components. When slice_alf_chroma_idc does not exist, it is inferred to be equal to ph_alf_chroma_idc.
[0931] `slice_alf_aps_id_chroma` specifies the `adaptation_parameter_set_id` of the ALF APS referenced for the chroma components of the slice. The `TemporalId` of the APS NAL unit, which has `aps_params_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_alf_aps_id_chroma`, should be less than or equal to the `TemporalId` of the codec slice NAL unit. When `slice_alf_enabled_flag` is equal to 1 and `slice_alf_aps_id_chroma` does not exist, the value of `slice_alf_aps_id_chroma` is inferred to be equal to the value of `ph_alf_aps_id_chroma`.
[0932] The value of alf_chroma_filter_signal_flag for an APS NAL cell that has aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma should be equal to 1.
[0933] A slice_cc_alf_cb_enabled_flag value of 0 indicates that the cross-component filter is not applied to the Cb color component. A slice_cc_alf_cb_enabled_flag value of 1 indicates that the cross-component filter is enabled and can be applied to the Cb color component. When slice_cc_alf_cb_enabled_flag does not exist, it is inferred to be equal to ph_cc_alf_cb_enabled_flag.
[0934] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the Cb color component reference for the strip.
[0935] The TemporalId of an APS NAL unit having an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the codec slice NAL unit. When slice_cc_alf_cb_enabled_flag equals 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.
[0936] The value of alf_cc_cb_filter_signal_flag for an APS NAL cell that has 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.
[0937] A slice_cc_alf_cr_enabled_flag value of 0 indicates that the cross-component filter is not applied to the Cr color component. A slice_cc_alf_cb_enabled_flag value of 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.
[0938] `slice_cc_alf_cr_aps_id` specifies the `adaptation_parameter_set_id` of the Cr color component reference for the slice. The TemporalId of the APS NAL unit, which has `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 codec 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`.
[0939] The value of alf_cc_cr_filter_signal_flag for an APS NAL cell that has aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id should be equal to 1.
[0940] When separate_colour_plane_flag equals 1, colour_plane_id identifies the color plane associated with the current stripe. The value of colour_plane_id should be in the range of 0 to 2 (inclusive). colour_plane_id values 0, 1, and 2 correspond to the Y, Cb, and Cr planes, respectively. The value of colour_plane_id 3 is reserved for future use by ITU-T|ISO / IEC.
[0941] Note 1 – There is no dependency between the decoding processes of different color planes of the image.
[0942] A value of 1 for num_ref_idx_active_override_flag indicates that the syntax element num_ref_idx_active_minus1[0] exists for both P and B stripes, and that the syntax element num_ref_idx_active_minus1[1] exists for B stripes. A value of 0 for num_ref_idx_active_override_flag indicates that neither syntax element num_ref_idx_active_minus1[0] nor num_ref_idx_active_minus1[1] exists. When neither exists, the value of num_ref_idx_active_override_flag is inferred to be 1.
[0943] num_ref_idx_active_minus1[i] is used to derive the variable NumRefIdxActive[i], as specified in Equation 143. The value of num_ref_idx_active_minus1[i] should be in the range of 0 to 14 (inclusive).
[0944] For i equal to 0 or 1, when the current stripe is a B stripe, num_ref_idx_active_override_flag equals 1, and num_ref_idx_active_minus1[i] does not exist, num_ref_idx_active_minus1[i] is inferred to be equal to 0.
[0945] When the current stripe is a P stripe, 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.
[0946] The variable NumRefIdxActive[i] is derived as follows:
[0947]
[0948]
[0949] The value of NumRefIdxActive[i]-1 specifies the maximum reference index of the reference image list i that can be used to decode the strip. When the value of NumRefIdxActive[i] is equal to 0, no reference index of the reference image list i can be used to decode the strip.
[0950] When the current stripe is a P stripe, the value of NumRefIdxActive[0] should be greater than 0.
[0951] When the current stripe is a B stripe, both NumRefIdxActive[0] and NumRefIdxActive[1] should be greater than 0.
[0952] `cabac_init_flag` specifies the method used to determine the initialization table during the initialization of context variables. If `cabac_init_flag` does not exist, it is assumed to be equal to 0.
[0953] A slice_collocated_from_l0_flag value of 1 indicates that the co-located image used for temporal motion vector prediction is derived from reference image list 0. A slice_collocated_from_l0_flag value of 0 indicates that the co-located image used for temporal motion vector prediction is derived from reference image list 1.
[0954] When slice_type equals B or P, ph_temporal_mvp_enabled_flag equals 1, and slice_collocated_from_l0_flag does not exist, the following applies:
[0955] - If rpl_info_in_ph_flag equals 1, then slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag.
[0956] Otherwise (rpl_info_in_ph_flag equals 0 and slice_type equals P), the value of slice_collocated_from_l0_flag is inferred to be equal to 1.
[0957] The slice_collocated_ref_idx specifies the reference index of the co-located image used for temporal motion vector prediction.
[0958] When slice_type equals P or when slice_type equals B and slice_collocated_from_l0_flag equals 1, slice_collocated_ref_idx refers to the entry in reference image list 0, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[0]-1 (inclusive).
[0959] When slice_type equals B and slice_collocated_from_l0_flag equals 0, slice_collocated_ref_idx refers to the entry in reference image list 1, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[1]-1 (inclusive of 0 and NumRefIdxActive[1]-1).
[0960] The following applies when slice_collocated_ref_idx does not exist:
[0961] - If rpl_info_in_ph_flag equals 1, then the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx.
[0962] Otherwise (rpl_info_in_ph_flag equals 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[0963] The requirement for bitstream consistency is that the image referenced by slice_collocated_ref_idx should be identical across all slices of the encoded / decoded image.
[0964] The requirement for bitstream consistency is that the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference image referenced by slice_collocated_ref_idx should be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the current image, respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] should be equal to 0.
[0965] `slice_qp_delta` specifies the Qp to be used for codec blocks in a slice until the value of `CuQpDeltaVal` in the codec unit layer is modified. Y The initial value.
[0966] When qp_delta_info_in_ph_flag equals 0, the Qp of the stripe Y Initial value of quantization parameter SliceQp Y The derivation is as follows:
[0967] SliceQp Y =26+init_qp_minus26+slice_qp_delta (144)
[0968] SliceQp Y The value should be in the range of -QpBdOffset to +63 (inclusive).
[0969] When any one of the following conditions is true:
[0970] The value of -wp_info_in_ph_flag is equal to 1, the value of pps_weighted_pred_flag is equal to 1, and the value of slice_type is equal to P.
[0971] The value of -wp_info_in_ph_flag is equal to 1, the value of pps_weighted_bipred_flag is equal to 1, and the value of slice_type is equal to B.
[0972] The following applies:
[0973] The value of -NumRefIdxActive[0] should be less than or equal to the value of NumWeightsL0.
[0974] - For each reference image index RefPicList[0][i] (i is in the range of 0 to NumRefIdxActive[0]-1 (inclusive), the luminance weight, Cb weight and Cr weight applied to the reference image index are LumaWeightL0[i], ChromaWeightL0[0][i] and ChromaWeightL0[1][i], respectively.
[0975] When wp_info_in_ph_flag equals 1, pps_weighted_bipred_flag equals 1, and slice_type equals B, the following applies:
[0976] The value of -NumRefIdxActive[1] should be less than or equal to the value of NumWeightsL1.
[0977] - For each reference image index RefPicList[1][i] (i is in the range of 0 to NumRefIdxActive[1]-1 (inclusive), the luminance weight, Cb weight and Cr weight applied to the reference image index are LumaWeightL1[i], ChromaWeightL1[0][i] and ChromaWeightL1[1][i], respectively.
[0978] slice_cb_qp_offset specifies the offset when determining Qp′ Cb The quantization parameter value should be added to the difference between the values of `pps_cb_qp_offset` and `slice_cb_qp_offset`. The value of `slice_cb_qp_offset` should be in the range of -12 to +12 (inclusive). If `slice_cb_qp_offset` does not exist, it is inferred to be equal to 0. The sum of `pps_cb_qp_offset` and `slice_cb_qp_offset` should be in the range of -12 to +12 (inclusive).
[0979] slice_cr_qp_offset specifies the offset when determining Qp′ CrWhen quantizing the parameter value, add it to the difference between the values of `pps_cr_qp_offset` and `slice_cr_qp_offset`. The value of `slice_cr_qp_offset` should be in the range of -12 to +12 (inclusive). If `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` should also be in the range of -12 to +12 (inclusive).
[0980] slice_joint_cbcr_qp_offset specifies the offset when determining Qp′ CbCr The value should be added to the difference between the values of `pps_joint_cbcr_qp_offset_value`. The value of `slice_joint_cbcr_qp_offset` should be in the range of -12 to +12 (inclusive). When `slice_joint_cbcr_qp_offset` does not exist, it is inferred to be equal to 0. The value of `pps_joint_cbcr_qp_offset_value + slice_joint_cbcr_qp_offset` should be in the range of -12 to +12 (inclusive).
[0981] A value of 1 for `cu_chroma_qp_offset_enabled_flag` indicates that `cu_chroma_qp_offset_flag` can exist in the transform unit and palette codec syntax. A value of 0 for `cu_chroma_qp_offset_enabled_flag` indicates that `cu_chroma_qp_offset_flag` does not exist in either the transform unit or the palette codec syntax. When it does not exist, the value of `cu_chroma_qp_offset_enabled_flag` is inferred to be 0.
[0982] A slice_sao_luma_flag value of 1 indicates that SAO is enabled for the luminance component in the current slice; a slice_sao_luma_flag value of 0 indicates that SAO is disabled for the luminance 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.
[0983] A slice_sao_chroma_flag value of 1 indicates that SAO is enabled for the chroma components in the current slice; a slice_sao_chroma_flag value of 0 indicates that SAO is disabled for the chroma components in the current slice. When slice_sao_chroma_flag does not exist, it is inferred to be equal to ph_sao_chroma_enabled_flag.
[0984] A slice_deblocking_filter_override_flag value of 1 indicates that the deblocking parameter exists in the slice header. A slice_deblocking_filter_override_flag value of 0 indicates that the deblocking parameter does 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.
[0985] A slice_deblocking_filter_disabled_flag value of 1 indicates that the deblocking filter operation is not applied to the current slice. A slice_deblocking_filter_disabled_flag value of 0 indicates that the deblocking filter operation is applied to the current slice. When slice_deblocking_filter_disabled_flag does not exist, it is inferred to be equal to ph_deblocking_filter_disabled_flag.
[0986] `slice_beta_offset_div2` and `slice_tc_offset_div2` specify the deblocking parameter offsets (divided by 2) of β and tC applied to the luminance components of the current slice. The values of `slice_beta_offset_div2` and `slice_tc_offset_div2` should both be in the range of -12 to 12 (inclusive). 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.
[0987] `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` specify the deblocking parameter offsets (divided by 2) of β and tC applied to the Cb components of the current slice. The values of `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` should both be in the range of -12 to 12 (inclusive). 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.
[0988] `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` specify the deblocking parameter offsets (divided by 2) of β and tC applied to the Cr component of the current slice. The values of `slice_cr_beta_offset_div2` and `slice_cr_tc_offset_div2` should both be in the range of -12 to 12 (inclusive). 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.
[0989] A slice_ts_residual_coding_disabled_flag equal to 1 specifies that the residual_coding() syntax structure is used to parse the residual samples of the transform skipped blocks of the current slice. A slice_ts_residual_coding_disabled_flag equal to 0 specifies that the residual_ts_coding() syntax structure is used to parse the residual samples of the transform skipped blocks of the current slice. When slice_ts_residual_coding_disabled_flag does not exist, it is inferred to be equal to 0.
[0990] A slice_lmcs_enabled_flag value of 1 indicates that luma mapping and chroma scaling are enabled for the current slice. A slice_lmcs_enabled_flag value of 0 indicates that luma mapping and chroma scaling are not enabled for the current slice. When slice_lmcs_enabled_flag does not exist, it is inferred to be equal to 0.
[0991] A slice_scaling_list_present_flag value of 1 indicates that the scaling list data used for the current slice is inferred from the scaling list data contained in a reference scaling list APS where aps_params_type equals SCALING_APS and adaptation_parameter_set_id equals ph_scaling_list_aps_id. A slice_scaling_list_present_flag value of 0 indicates that the scaling list data used for the current image is the default scaling list data inferred as specified in Clause 7.4.3.21. When it does not exist, the value of slice_scaling_list_present_flag is inferred to be 0.
[0992] The variable NumEntryPoints, which specifies the number of entry points in the current strip, is derived as follows:
[0993]
[0994] Increasing 1 to offset_len_minus1 specifies the length of the entry_point_offset_minus1[i] syntax element in bits. The value of offset_len_minus1 should be in the range of 0 to 31 (inclusive).
[0995] `entry_point_offset_minus1[i]` incremented by 1 specifies the offset of the i-th entry point in bytes, and is represented by `offset_len_minus1` incremented by 1 bit. The stripe data following the stripe header consists of NumEntryPoints+1 subsets, where the subset index values range from 0 to NumEntryPoints (inclusive). The first byte of the stripe data is treated as byte 0. When present, the anti-race byte appearing in the stripe data portion of the NAL unit of the encoded / decoded stripe is counted as part of the stripe data for subset identification purposes. Subset 0 consists of bytes 0 to entry_point_offset_minus1[0] (inclusive of 0 and entry_point_offset_minus1[0]) of the encoded / decoded stripe data, and subset k (k is in the range of 1 to NumEntryPoints-1 (inclusive of 1 and NumEntryPoints-1)) consists of bytes firstByte[k] to lastByte[k] (inclusive of firstByte[k] and lastByte[k]) of the encoded / decoded stripe data, where firstByte[k] and lastByte[k] are defined as:
[0996]
[0997] lastByte[k]=firstByte[k]+entry_point_offset_minus1[k] (147)
[0998] The last subset (subset index equal to NumEntryPoints) consists of the remaining bytes of the encoded and decoded stripe data.
[0999] When sps_entropy_coding_sync_enabled_flag equals 0 and the stripe contains one or more complete slices, each subset should consist of all the codec bits of all CTUs within the same slice in the stripe, and the number of subsets (i.e., the value of NumEntryPoints+1) should be equal to the number of slices in the stripe.
[1000] When `sps_entropy_coding_sync_enabled_flag` equals 0 and the stripe contains a subset of CTU rows from a single slice, `NumEntryPoints` should be 0, and the number of subsets should be 1. The subset should consist of all the codec bits from all CTUs in the stripe.
[1001] When sps_entropy_coding_sync_enabled_flag equals 1, each subset k (k is in the range of 0 to NumEntryPoints (inclusive)) should consist of all the code-decode bits of all CTUs in the CTU row within the slice, and the number of subsets (i.e., the value of NumEntryPoints+1) should be equal to the total number of slice-specific CTU rows in the stripe.
[1002] `slice_header_extension_length` specifies the length of the slice header extension data in bytes, excluding the bits used for its own signaling notification `slice_header_extension_length`. The value of `slice_header_extension_length` should be in the range of 0 to 256 (inclusive). If it does not exist, the value of `slice_header_extension_length` is inferred to be equal to 0.
[1003] The slice_header_extension_data_byte[i] can have any value. Decoders conforming to this specification for this version should ignore the values of all slice_header_extension_data_byte[i] syntax elements. Its value does not affect the grade specified in this version of the decoder conforming to the specification.
[1004] 3.10. Reference Image List Syntax
[1005] In the latest VVC draft text, the syntax structure ref_pic_lists() and its semantics are as follows:
[1006]
[1007] The ref_pic_lists() syntax structure can exist in the PH syntax structure or in the strip header.
[1008] `rpl_sps_flag[i]` equal to 1 specifies the list of reference images `i` in `ref_pic_lists()`, which is derived based on one of the syntax structures of `ref_pic_list_struct(listIdx, rplsIdx)` where `listIdx` equals `i` in SPS. `rpl_sps_flag[i]` equal to 0 specifies the list of reference images `i` for a picture, which is derived based on the syntax structure of `ref_pic_list_struct(listIdx, rplsIdx)` directly included in `ref_pic_lists()` where `listIdx` equals `i`.
[1009] The following applies when rpl_sps_flag[i] does not exist:
[1010] - If num_ref_pic_lists_in_sps[i] equals 0, then the value of rpl_sps_flag[i] is inferred to be equal to 0.
[1011] - Otherwise (num_ref_pic_lists_in_sps[i] is greater than 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].
[1012] `rpl_idx[i]` specifies the index of the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure in the list of `ref_pic_list_struct(listIdx,rplsIdx)` syntax structures in the SPS where `listIdx` equals `i`, and the index of the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure used to deduce the reference image list `i` for the current image. The syntax element `rpl_idx[i]` is represented by Ceil(Log2(num_ref_pic_lists_in_sps[i])) bits. When it does not exist, the value of `rpl_idx[i]` is inferred to be 0. The value of `rpl_idx[i]` should be in the range from 0 to `num_ref_pic_lists_in_sps[i]-1` (inclusive). When rpl_sps_flag[i] equals 1 and num_ref_pic_lists_in_sps[i] equals 1, the value of rpl_idx[i] is inferred to be equal to 0. When rpl_sps_flag[i] equals 1 and rpl1_idx_present_flag equals 0, the value of rpl_idx[1] is inferred to be equal to rpl_idx[0].
[1013] The variable RplsIdx[i] is derived as follows:
[1014] RplsIdx[i]=rpl_sps_flag[i]? rpl_idx[i]:num_ref_pic_lists_in_sps[i](149)
[1015] poc_lsb_lt[i][j] specifies the image order count modulo MaxPicOrderCntLsb for the j-th LTRP entry in the i-th reference image list of the ref_pic_lists() syntax structure. The length of the poc_lsb_lt[i][j] syntax element is log2_max_pic_order_cnt_lsb_minus4+4 bits.
[1016] The variable PocLsbLt[i][j] is derived as follows:
[1017]
[1018] A value of 1 for delta_poc_msb_present_flag[i][j] indicates the existence of delta_poc_msb_cycle_lt[i][j]. A value of 0 for delta_poc_msb_present_flag[i][j] indicates the non-existence of delta_poc_msb_cycle_lt[i][j].
[1019] Let `prevTid0Pic` be the previous image in decoding order, whose `nuh_layer_id` is the same as the stripe or image header of the reference `ref_pic_lists()` syntax structure, whose `TemporalId` is equal to 0, and which is not a RASL or RADL image. Let `setOfPrevPocVals` be a set consisting of the following:
[1020] -prevTid0Pic's PicOrderCntVal
[1021] -prevTid0Pic refers to the PicOrderCntVal of each image whose nuh_layer_id is the same as the current image and is referenced in RefPicList[0] or RefPicList[1].
[1022] -PicOrderCntVal of each image that follows prevTid0Pic in decoding order, has the same nuh_layer_id as the current image, and precedes the current image in decoding order.
[1023] When there is more than one value in setOfPrevPocVals modulo MaxPicOrderCntLsb equal to PocLsbLt[i][j], the value of delta_poc_msb_present_flag[i][j] should be equal to 1.
[1024] delta_poc_msb_cycle_lt[i][j] specifies the value of the variable FullPocLt[i][j] as follows:
[1025]
[1026] The value of delta_poc_msb_cycle_lt[i][j] should be between 0 and 2. (32-log2_max_pic_order_cnt_lsb_minus4-4) The range (including 0 and 2) (32-log2_max_pic_order_cnt_lsb_minus4-4) Within ) . When it does not exist, the value of delta_poc_msb_cycle_lt[i][j] is inferred to be equal to 0.
[1027] 3.11. Reference Image List Structure Syntax
[1028] In the latest VVC draft text, the syntax structure ref_pic_lists() and its semantics are as follows:
[1029]
[1030] The `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure can exist in an SPS, PH syntax structure, or a stripe header. Depending on whether the syntax structure is included in an SPS, PH syntax structure, or a stripe header, the following applies:
[1031] - If present in a PH syntax structure or a stripe header, the ref_pic_list_struct(listIdx,rplsIdx) syntax structure specifies a list of reference images, listIdx, for the current image (the image containing the stripes).
[1032] - Otherwise (if present in SPS), the ref_pic_list_struct(listIdx,rplsIdx) syntax structure specifies a candidate for the reference picture list listIdx, and the term "current picture" in the semantics specified in the remainder of this clause means 1) having a PH syntax structure containing a ph_rpl_idx[listIdx] equal to the index of the ref_pic_list_struct(listIdx,rplsIdx) syntax structure included in SPS, or having a slice_rpl_idx[listIdx] equal to the index of the slice_rpl_idx[listIdx] included in SPS, and 2) each picture in the CVS of the reference SPS.
[1033] `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]` should be in the range of 0 to `MaxDpbSize+13` (inclusive), where `MaxDpbSize` is as specified in Clause A.4.2.
[1034] `ltrp_in_header_flag[listIdx][rplsIdx]` equal to 0 indicates that the Proof-of-Concept (POC) LSB for the LTRP entry in the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure exists within the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure. `ltrp_in_header_flag[listIdx][rplsIdx]` equal to 1 indicates that the POC LSB for the LTRP entry in the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure does not exist within the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure.
[1035] The value of `inter_layer_ref_pic_flag[listIdx][rplsIdx][i]` being equal to 1 indicates that the i-th entry in the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure is an ILRP entry. The value of `inter_layer_ref_pic_flag[listIdx][rplsIdx][i]` being equal to 0 indicates that the i-th entry in the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure is not an ILRP entry. When it does not exist, the value of `inter_layer_ref_pic_flag[listIdx][rplsIdx][i]` is inferred to be 0.
[1036] `st_ref_pic_flag[listIdx][rplsIdx][i]` equal to 1 indicates 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 indicates that the i-th entry in the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure is an LTRP entry. When `inter_layer_ref_pic_flag[listIdx][rplsIdx][i]` equals 0 and `st_ref_pic_flag[listIdx][rplsIdx][i]` does not exist, the value of `st_ref_pic_flag[listIdx][rplsIdx][i]` is inferred to be equal to 1.
[1037] The variable NumLtrpEntries[listIdx][rplsIdx] is deduced as follows:
[1038]
[1039] abs_delta_poc_st[listIdx][rplsIdx][i] specifies the value of the variable AbsDeltaPocSt[listIdx][rplsIdx][i] as follows:
[1040]
[1041] The value of abs_delta_poc_st[listIdx][rplsIdx][i] should be between 0 and 2. 15 -1 range (including 0 and 2) 15 -1) inside.
[1042] The value of `strp_entry_sign_flag[listIdx][rplsIdx][i]` being equal to 1 indicates that the i-th entry in the syntax structure `ref_pic_list_struct(listIdx,rplsIdx)` has a value greater than or equal to 0. The value of `strp_entry_sign_flag[listIdx][rplsIdx][i]` being equal to 0 indicates that the i-th entry in the syntax structure `ref_pic_list_struct(listIdx,rplsIdx)` has a value less than 0. When `strp_entry_sign_flag[listIdx][rplsIdx][i]` does not exist, the value of `strp_entry_sign_flag[listIdx][rplsIdx][i]` is inferred to be equal to 1.
[1043] The list DeltaPocValSt[listIdx][rplsIdx] is derived as follows:
[1044]
[1045] `rpls_poc_lsb_lt[listIdx][rplsIdx][i]` specifies the image order count, modulo `MaxPicOrderCntLsb`, of the image referenced 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.
[1046] `ilrp_idx[listIdx][rplsIdx][i]` specifies the index of the ILRP of the i-th entry in the `ref_pic_list_struct(listIdx,rplsIdx)` syntax structure for the list of direct reference layers. The value of `ilrp_idx[listIdx][rplsIdx][i]` should be in the range of 0 to `NumDirectRefLayers[GeneralLayerIdx[nuh_layer_id]]-1` (inclusive).
[1047] 4. Examples of technical problems solved by the disclosed technology
[1048] The existing design of constraint signs has the following problems:
[1049] 1) Currently, whenever a PTL syntax structure exists where profileTierPresentFlag equals 1, all general constraint flags / fields are signaled in that PTL syntax structure (SS). Considering that PTL syntax structures can be included in the DCI (once or multiple times, each time profileTierPresentFlag equals 1), the VPS (once or multiple times, the first time profileTierPresentFlag equals 1, subsequent times profileTierPresentFlag equals 0 or 1), and the SPS (zero or one time, profileTierPresentFlag equals 1), there may be redundant signaling for many general constraint flags / fields. Furthermore, it is possible that no general constraints apply, and in this case, at least one set of general constraint flags / fields is still signaled for each OLS bitstream.
[1050] 2) In the latest VVC draft text, general constraint flags are used to constrain the values of some SPS / PH / SH syntax elements (SEs) or combinations thereof via bitstream constraints in semantics. However, they can also be used to condition the existence of such related SPS / PH / SH SEs, which would allow signaling of bits whose values are known to be skipped, thus avoiding bit waste.
[1051] a. In the general_constraint_info() syntax in the latest VVC draft text, syntax elements such as 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 specifying constraints on the values of related syntax elements or adding conditions to the existence of related syntax elements).
[1052] 3) In the latest VVC draft text, some PPS SEs related to general constraint flags can only have certain values depending on the value of a specific general constraint flag. However, some semantic constraints are lacking to prohibit illegal values of such PPS SEs.
[1053] 4) In the general_constraint_info() syntax of the latest VVC draft text, a set of general constraint flags interact, meaning that some values of general constraint flags depend 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.
[1054] 5) Some syntax elements can be added to SPS and / or PPS to condition the presence of some SPS / PPS / PH / SH syntax elements, thereby saving bits.
[1055] 6) The general_constraint_info() syntax in the latest VVC draft text includes constraint flags for a subset of codec tools and features. However, there are other codec tools (e.g., WPP, entropy codec synchronization, weighted prediction, weighted bidirectional prediction, SMVD, MMVD, ISP, MRL, MIP, LFNST, palette, ACT, scaling list, etc.) and features (e.g., single layer only, only one subpicture, no inter-frame 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.
[1056] 7) In the latest VVC draft text, APS does not reference PPS, SPS, or VPS. However, some APS SEs semantically depend on the SE value of VPS, SPS, or PPS. All such dependencies should be removed, or the PPS, SPS, or VPS ID should be added to the APS syntax to allow reference to PPS, SPS, or VPS, thus enabling such semantic dependencies.
[1057] 8) Once the associated information of a feature can be signaled in either the PH or SH, a signaling flag (named X_info_in_ph_flag) may be signaled in the PPS to specify whether it should be signaled in the PH or SH. Currently, in the VVC specification, the X_info_in_ph_flag is always signaled in the PPS without any conditions. However, if there is only one stripe in the picture, it is not necessary to signal the X_info_in_ph_flag in the PPS. A proposal has been made to conditionally signal the PPS flag X_info_in_ph_flag (any existing feature or potential future feature) based on known picture partitioning flags in the bitstream (e.g., no_pic_partition_flag in the PPS).
[1058] 9) Currently, some APS syntax elements' values are constrained based on the ChromaArrayType derived from the SPS syntax elements chroma_format_idc and separate_colour_plane_flag. However, this leads to semantic dependencies because there is no PPS / SPS ID in the APS syntax structure. Therefore, this semantic dependency of APS on SPS should not exist.
[1059] 10) Currently, GCI syntax structures are signaled whenever the profileTierPresentFlag associated with the profile_tier_level() syntax structure is equal to 1. In this case, multiple GCI syntax structures with different content could be signaled for the same tier ID, which could be messy and inefficient.
[1060] a. Furthermore, the preserved GCI syntax elements are counted in bytes, which may be undesirable.
[1061] 11) Currently, the GCI field / SE is used to constrain other SEs, but not all cases are fully considered, which may lead to unexpected problems in codec design. For example, the following issues exist in the current draft text.
[1062] a. RPL-related SEs and some GCI SEs are not constrained by the value of intra_only_constraint_flag.
[1063] b. SEs in SPS / PPS / PH / SH are not entirely constrained by GCI SEs. For example, SEs related to segments / pieces / strips in SPS / PPS / PH / SH are not constrained by the values of one_tile_per_pic_constraint_flag and / or one_slice_per_pic_constraint_flag.
[1064] c.sps_ccalf_enabled_flag, ph_num_alf_aps_ids_luma, slice_num_alf_aps_ids_luma, ph_alf_cb_flag, ph_alf_cr_flag, sh_alf_cb_flag, and sh_alf_cr_flag should be constrained by the value of no_aps_constraint_flag.
[1065] d. Some GCI SEs may need to be constrained by other GCI SEs. For example, inter-layer SEs are not constrained by the value of all_layers_independent_constraint_flag, and no_bdpcm_constraint_flag is not constrained by the value of no_transform_skip_constraint_flag.
[1066] The definition of e.intra_only_constraint_flag may need to take into account the nuh_layer_type of each NAL unit in the codec stripe.
[1067] 12) Currently, `aps_chroma_present_flag` is signaled in the APS syntax structure and used to conditionally signal the chroma scaling list (SE) in the `scaling_list_data()` syntax structure. For non-4:0:0 and non-split color plane (e.g., `chromaArrayType` equals 1) codecs, `aps_chroma_present_flag` is required to be equal to 1. However, for codecs where `chromaArrayType` equals 1, `aps_chroma_present_flag` can also be equal to 0.
[1068] a. Furthermore, the current signaling notification scaling list APS ID for both luminance and chrominance may be inefficient.
[1069] 5. Example Implementations and Technologies
[1070] To address the above-mentioned problems and some other issues not mentioned, methods summarized below are disclosed. This invention should be considered as an example of explaining general concepts and not interpreted in a narrow sense. Furthermore, these inventions can be applied individually or in any combination.
[1071] 1. Regarding signaling for general constraint flags / fields typically used to resolve the first problem, one or more of the following methods are disclosed:
[1072] 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.
[1073] a. In one example, when the general_constraint_info() syntax structure does not exist for OLS, infer a default value for each of the general constraint flags / fields.
[1074] 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 be a value specifying that no particular constraint is imposed on the bitstream of 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.
[1075] b. In one example, in DCI, when there are more than one PTL syntax structure, it may be required that at most one of these PTL syntax structures contains a general_constraint_info() syntax structure, and when it exists, the general_constraint_info() syntax structure applies to the entire bitstream.
[1076] 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 that the general constraint information associated with the first DCI PTL syntax structure in the DCI (explicitly signaled or inferred) is considered to be the general constraint information associated with the DCI, which applies to the entire bitstream.
[1077] c. In one example, when the DCI is present in the bitstream, it may be required that no PTL syntax structure exists in the VPS or SPS. The general_constraint_info() syntax structure should be included, and the general constraint information associated with the DCI (explicitly signaled or inferred) applies to each OLS in each CVS in the bitstream.
[1078] i. Alternatively, when the DCI is present in the bitstream, it may be required that no PTL syntax structure exists in the VPS, that the general_constraint_info() syntax structure be included, and that the general constraint information associated with the DCI (explicitly signaled or inferred) applies to each OLS containing more than one layer in each CVS in the bitstream.
[1079] d. In one example, in a VPS, when there is more than one PTL syntax structure, it may be required that only one of these PTL syntax structures can contain a general_constraint_info() syntax structure, and that general_constraint_info() syntax structure applies to each OLS of each CVS in the bitstream.
[1080] i. Alternatively, in a VPS, when there is more than one PTL syntax structure, it may be required that only the first PTL syntax structure in the VPS can contain the general_constraint_info() syntax structure, and that the general constraint information associated with the first PTL syntax structure (explicitly signaled or inferred) applies to each OLS of each CVS in the bitstream.
[1081] e. In one example, when there are more than one PTL (and / or general_constraint_info()) syntax structures 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 consistent bitstream.
[1082] i. In one example, when there are more than one PTL (and / or general_constraint_info()) syntax structure for OLS signaling notification, these PTL (and / or general_constraint_info()) syntax structures must have the same content in the consistent bitstream.
[1083] ii. In one example, when there are more than one PTL (and / or general_constraint_info()) syntax structure for CVS signaling notification, these PTL (and / or general_constraint_info()) syntax structures must have the same content in the consistent bitstream.
[1084] f. In one example, signaling notifications in the DCI and / or SPS and / or VPS of the consistent bitstream are allowed to be at most one PTL (and / or general_constraint_info()) syntax structure.
[1085] i. In one example, at most one PTL (and / or general_constraint_info()) syntax structure is allowed for OLS signaling notification in the consistency bitstream.
[1086] ii. In one example, at most one PTL (and / or general_constraint_info()) syntax structure is allowed for CVS signaling notification in the consistency bitstream.
[1087] g. In one example, when signaling multiple PTL syntax structures in a DCI targeting multiple OLSs, a syntax element can be added to the DCI syntax structure to specify the index of the list of PLT syntax structures in the DCI for the PTL syntax structure applicable to the i-th OLS.
[1088] i. Alternatively, if there is only one OLS in the bitstream, the signaling of the above syntax element can be skipped and / or the value of the syntax element can be inferred to be a value (such as 0).
[1089] 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 the OLS, then the specific constraint will be applied to the OLS as long as any of the general constraint flags applies the specific constraint.
[1090] i. In one example, when any general constraint flag in the VPS / SPS specifies that a particular constraint is imposed on the OLS, while the corresponding general constraint flag in the DCI specifies that no particular constraint is imposed on the OLS, the OLS may conform to a more stringent constraint (e.g., such a specific constraint is imposed on the OLS as indicated by the VPS / SPS).
[1091] 1. Alternatively, when any general constraint flag in the VPS / SPS specifies that no specific constraint is imposed on the OLS, while the corresponding general constraint flag in the DCI specifies that a specific constraint is imposed on the OLS, the OLS may conform to a more stringent constraint (e.g., such a specific constraint is imposed on the OLS as indicated by the DCI).
[1092] ii. In one example, for any particular aspect associated with a general constraint syntax element that imposes a constraint on OLS, the corresponding general constraint syntax element carried in the DCI must have a value that indicates a looser but not stricter constraint on that aspect than the value indicated in the VPS / SPS.
[1093] 1. In one example, if any generic constraint flag / field in the VPS / SPS specifies that no specific constraint is imposed on the OLS, bitstream consistency can be added to require that the value of the corresponding generic constraint flag in the DCI be equal to 0 for that OLS (in this case, the value of the corresponding generic constraint flag in the DCI cannot be equal to 1).
[1094] 2. In one example, if any generic constraint flag / field in the VPS / SPS specifies that a particular constraint is imposed on the OLS, the value of the corresponding generic constraint flag in the DCI can be equal to 0 or 1 for that OLS.
[1095] iii. Alternatively, conversely, for any particular aspect associated with a 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 that indicates a stricter but not more lenient constraint on that aspect than the value indicated in the VPS / SPS.
[1096] 1. In one example, if any generic constraint flag / field in the VPS / SPS specifies a particular constraint to be imposed on the OLS, bitstream consistency can be added to require the value of the corresponding generic constraint flag in the DCI to be equal to 1 for that OLS (in this case, the value of the corresponding generic constraint flag in the DCI cannot be equal to 0).
[1097] 2. In one example, if any generic constraint flag / field in the VPS / SPS specifies that no particular constraint is imposed on the OLS, the value of the corresponding generic constraint flag in the DCI can be equal to 0 or 1 for that OLS.
[1098] i. In one example, multiple sets of different default values for general constraint flags / fields can be predefined.
[1099] i. Alternatively, the signaling can be used in DCI / VPS / SPS to notify one of the multiple sets of an instruction.
[1100] ii. Alternatively, only one set may be predefined.
[1101] 1. Alternatively, a flag may exist in DCI / VPS / SPS to specify whether a set is used.
[1102] iii. In one example, for one of multiple sets, each of the general constraint flags / fields is inferred to be a value that specifies that no particular constraint is imposed 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.
[1103] iv. In one example, for one or some of multiple sets, the value of max_bitdepth_constraint_idc can be inferred to be equal to a specific value, such as 2.
[1104] 2. Signaling regarding the SPS / PH / SH syntax elements based on general constraint flags used to resolve the second problem:
[1105] 1) Signaling for the corresponding syntax element in SPS / PH / SH can be skipped, for example, as in the first embodiment, depending on the value of the general constraint flag.
[1106] a. In one example, signaling for some SPS syntax elements can be skipped based on some general constraint flags.
[1107] i. For example, if 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 can be skipped.
[1108] 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.
[1109] ii. For example, if 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 can be skipped.
[1110] a) Additionally, when max_bitdepth_constraint_idc equals 0, the value of bit_depth_minus8 is inferred to be equal to 0.
[1111] iii. For example, when the value of the general constraint flag no_aps_constraint_flag is equal to 1, signaling for 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.
[1112] a) Alternatively, 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.
[1113] b) Alternatively, if the value of the general constraint flag no_aps_constraint_flag is equal to 1, the NAL cell type is not allowed to be PREFIX_APS_NUT or SUFFIX_APS_NUT.
[1114] iv. For example, if the value of the general constraint flag intra_only_constraint_flag is equal to 1, 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_enable) can be skipped. d_flag, sps_temporal_mvp_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sb t_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) signaling
[1115] a) Alternatively, 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.
[1116] v. For example, if the value of the general constraint flag Y2 is equal to 1, the signaling of the corresponding SPS syntax element Y1 can be skipped.
[1117] a) Alternatively, when the general constraint flag Y2 is not present (in the case that Y2 is equal to 1), the value of the corresponding SPS syntax element Y1 is inferred to be equal to 0.
[1118] b) For example, Y1 is sps_ladf_enabled_flag and Y2 is no_ladf_constraint_flag.
[1119] c) For example, Y1 is gdr_enabled_flag and Y2 is no_gdr_constraint_flag.
[1120] d) For example, Y1 is res_change_in_clvs_allowed_flag and Y2 is no_res_change_in_clvs_constraint_flag.
[1121] e) For example, Y1 is qtbtt_dual_tree_intra_flag, and Y2 is no_qtbtt_dual_tree_intra_constraint_flag.
[1122] f) For example, Y1 is partition_constraints_override_enabled_flag and Y2 is no_partition_constraints_override_constraint_flag.
[1123] g) For example, Y1 is sps_joint_cbcr_enabled_flag and Y2 is no_joint_cbcr_constraint_flag.
[1124] h) For example, Y1 is sps_sao_enabled_flag and Y2 is no_sao_constraint_flag.
[1125] i) For example, Y1 is sps_alf_enabled_flag and Y2 is no_alf_constraint_flag.
[1126] j) For example, Y1 = sps_ccalf_enabled_flag and Y2 = no_ccalf_constraint_flag.
[1127] k) For example, Y1 is sps_transform_skip_enabled_flag and Y2 is no_transform_skip_constraint_flag.
[1128] l) For example, Y1 is sps_bdpcm_enabled_flag and Y2 is no_bdpcm_constraint_flag.
[1129] m) For example, Y1 is sps_ref_wraparound_enabled_flag and Y2 is no_ref_wraparound_constraint_flag.
[1130] n) For example, Y1 = sps_temporal_mvp_enabled_flag and Y2 = no_temporal_mvp_constraint_flag.
[1131] o) For example, Y1 is sps_sbtmvp_enabled_flag and Y2 is no_sbtmvp_constraint_flag.
[1132] p) For example, Y1 is sps_amvr_enabled_flag and Y2 is no_amvr_constraint_flag.
[1133] q) For example, Y1 is sps_bdof_enabled_flag and Y2 is no_bdof_constraint_flag.
[1134] r) For example, Y1 is sps_dmvr_enabled_flag and Y2 is no_dmvr_constraint_flag.
[1135] s) For example, Y1 is sps_cclm_enabled_flag and Y2 is no_cclm_constraint_flag.
[1136] For example, Y1 is sps_mts_enabled_flag and Y2 is no_mts_constraint_flag.
[1137] u) For example, Y1 is sps_sbt_enabled_flag and Y2 is no_sbt_constraint_flag.
[1138] v) For example, Y1 is sps_affine_enabled_flag and Y2 is no_affine_motion_constraint_flag.
[1139] w) For example, Y1 is sps_bcw_enabled_flag and Y2 is no_bcw_constraint_flag.
[1140] x) For example, Y1 is sps_ibc_enabled_flag and Y2 is no_ibc_constraint_flag.
[1141] For example, Y1 is sps_ciip_enabled_flag and Y2 is no_ciip_constraint_flag.
[1142] z) For example, Y1 is sps_fpel_mmvd_enabled_flag and Y2 is no_fpel_mmvd_constraint_flag.
[1143] aa) For example, Y1 is sps_dep_quant_enabled_flag and Y2 is no_dep_quant_constraint_flag.
[1144] For example, Y1 is sps_sign_data_hiding_enabled_flag and Y2 is no_sign_data_hiding_constraint_flag.
[1145] For example, Y1 is sps_gpm_enabled_flag and Y2 is no_gpm_constraint_flag.
[1146] vi. Alternatively, bitstream constraints can be added to require that the value of the relevant syntax element in the SPS be equal to a certain value based on the value of the corresponding general constraint flag.
[1147] a) In one example (in which case the above SPS syntax element Y1 is signaled or inferred), a bitstream constraint 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.
[1148] b) In one example (in which case the APS-related SPS syntax elements are signaled or inferred), a bitstream constraint can be added such that when no_aps_constraint_flag is equal to 1, the value 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.) is required to be equal to 0.
[1149] c) In one example (where the inter-frame-dependent SPS syntax elements are signaled or inferred), a bitstream constraint can be added such that when intra_only_constraint_flag equals 1, the aforementioned inter-frame-dependent 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_wraparou) are required to be enabled. nd_enabled_flag, sps_temporal_mvp_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sb The value of each of t_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) is equal to 0.
[1150] b. In one example, signaling for one or more PH syntax elements can be skipped based on the values of some general constraint flags.
[1151] i. For example, when intra_only_constraint_flag equals 1, signaling for inter-frame related PH syntax elements such as ph_inter_slice_allowed_flag can be skipped.
[1152] a) Alternatively, when intra_only_constraint_flag is equal to 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.
[1153] ii. For example, when the intra_only_constraint flag is equal to 1, signaling for PH syntax elements in the syntax structures ref_pic_lists() and ref_pic_list_struct(listIdx,rplsIdx) included in PH can be skipped.
[1154] a) For example, when intra_only_constraint_flag equals 1, syntax elements in the syntax structure ref_pic_lists() included in PH can be skipped, such as rpl_sps_flag[], rpl_idx[], poc_lsb_lt[][], delta_poc_msb_present_flag[][], and delta_poc_msb_cycle_lt[][].
[1155] b) For example, when intra_only_constraint_flag equals 1, syntax elements in the syntax structure ref_pic_list_struct(listIdx,rplsIdx) included in PH can be skipped, 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[][][], and ilrp_idx[][][].
[1156] iii. Alternatively (in which case the corresponding syntax element in PH is not conditionally signaled or skipped based on the value of the relevant general constraint flag / field), in one example, a bitstream constraint can be added to require that the value of the relevant syntax element in PH be equal to a certain value based on the value of the corresponding general constraint flag.
[1157] a) In one example (in which the PH syntax element ph_inter_slice_allowed_flag is signaled or inferred), when intra_only_constraint_flag is equal to 1, a bitstream constraint can be added such that the value of each of the inter-frame related PH syntax elements such as ph_inter_slice_allowed_flag is required to be equal to 0.
[1158] b) In one example (in which syntax elements in ref_pic_lists() and ref_pic_list_struct(listIdx,rplsIdx) included in PH are signaled or inferred), a bitstream constraint can be added that requires syntax elements from the list of reference pictures included in PH to never be used.
[1159] c. In one example, signaling for one or more SH syntax elements can be skipped based on the values of some general constraint flags.
[1160] i. For example, when the value of intra_only_constraint_flag is equal to 1, the signaling of the RPL-related SH syntax element num_ref_idx_active_override_flag can be skipped.
[1161] a) Alternatively, when intra_only_constraint_flag equals 1, the value of num_ref_idx_active_override_flag is inferred to be equal to 0.
[1162] ii. For example, when intra_only_constraint_flag equals 1, signaling for RPL-related syntax elements in the syntax structures ref_pic_lists() and ref_pic_list_struct(listIdx,rplsIdx) included in SH can be skipped.
[1163] a) For example, when intra_only_constraint_flag equals 1, syntax elements in the syntax structure ref_pic_lists() included in SH can be skipped, such as rpl_sps_flag[], rpl_idx[], poc_lsb_lt[][], delta_poc_msb_present_flag[][], and delta_poc_msb_cycle_lt[][].
[1164] b) For example, when intra_only_constraint_flag equals 1, syntax elements in the syntax structure ref_pic_list_struct(listIdx,rplsIdx) included in SH can be skipped, 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[][][], and ilrp_idx[][][].
[1165] iii. Alternatively (in which case the corresponding syntax element in the SH is not conditionally signaled or skipped based on the value of the relevant general constraint flag / field), in one example, a bitstream constraint can be added to require that the value of each of the relevant syntax elements in the SH is equal to a certain value based on the value of the corresponding general constraint flag.
[1166] a) In one example (in which the SH syntax element num_ref_idx_active_override_flag is signaled or inferred), when intra_only_constraint_flag is equal to 1, a bitstream constraint can be added such that the syntax element num_ref_idx_active_override_flag in the SH is required to be equal to 0.
[1167] b) In one example (in which 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 equals 1, a bitstream constraint can be added that requires syntax elements from the reference picture list included in SH to never be used.
[1168] d. In the above example, the general constraint flag / field used to determine whether to skip one or more SH syntax elements can be replaced by the new syntax elements in SPS / PPS / PH / SH.
[1169] e. In the example above, the general constraint flags / fields used to determine whether to skip one or more PH syntax elements can be replaced by new syntax elements in SPS / PPS / PH.
[1170] f. In the above example, the general constraint flags / fields used to determine whether to skip one or more SPS syntax elements can be replaced by new syntax elements in SPS.
[1171] 3. Constraints on PPS syntax elements based on general constraint flags used to solve the third problem:
[1172] 1) The value of the corresponding syntax element in PPS can be constrained based on the value of the general constraint flag, for example, as in the second embodiment.
[1173] a. In one example, bitstream constraints can be added based on the value of the general constraint flag, requiring the value of a syntax element in the PPS to be equal to a certain value.
[1174] 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.
[1175] 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.
[1176] iii. For example, when both one_tile_per_pic_constraint_flag and one_slice_per_pic_constraint flags are equal to 1, the value of no_pic_partition_flag is required to be equal to 1.
[1177] 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.
[1178] 4. Constraints on general constraint flags regarding illegal values used to resolve the fourth problem:
[1179] 1) In the syntax general_constraint_info(), the value of one general constraint flag can depend on the value of another general constraint flag, for example, as in the third embodiment.
[1180] a. In one example, signaling for some general constraint flags in the syntax general_constraint_info() can be skipped based on the value of the general constraint flags from earlier signaling notifications.
[1181] i. In one example, if the value of one_slice_per_pic_constraint_flag is equal to 1, the signaling of the syntax element one_subpic_per_pic_constraint_flag in the syntax general_constraint_info() can be skipped.
[1182] 1. Alternatively, 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.
[1183] ii. In one example, the signaling of the syntax element no_bdpcm_constraint_flag in the syntax general_constraint_info() can be skipped if the value of no_transform_skip_constraint_flag is equal to 1.
[1184] 1. Alternatively, when no_transform_skip_constraint_flag is equal to 1, the value of no_bdpcm_constraint_flag is inferred to be equal to 1.
[1185] iii. For example, when the value of intra_only_constraint_flag is equal to 1, signaling for 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.
[1186] 2. Alternatively, when intra_only_constraint_flag equals 1, the value of each of the above inter-frame related syntax elements in the general_constraint_info() syntax structure is inferred to be equal to 1.
[1187] b. In one example, alternatively (in which case the general constraint flag is not conditionally signaled or skipped based on the value of the earlier general constraint flag), a bitstream constraint can be added such that the value of a general constraint flag is required to be equal to a certain value based on the values of (multiple) related earlier general constraint flags.
[1188] i. In one example, when intra_only_constraint_flag is equal to 1, it requires that the value of each of the inter-frame related general constraint flags mentioned in the bullet points above be equal to 1.
[1189] ii. In one example, when intra_only_constraint_flag is equal to 1, at least one of the values of no_idr_constraint_flag and no_cra_constraint_flag is required to be equal to 0.
[1190] iii. In one example, when no_transform_skip_constraint_flag is equal to 1, the value of no_bdpcm_constraint_flag is required to be equal to 1.
[1191] iv. In one example, when no_aps_constraint_flag is equal to 1, the value of no_alf_constraint_flag is required to be equal to 1.
[1192] c. In one example, bitstream constraints may be added to require that the values of some general constraint flags be equal to certain values, and, if necessary, equal to certain values under certain conditions.
[1193] i. In one example, bitstream constraints can be added to constrain the values of a combination of multiple general constraint flags, for example, requiring at least one of the values of no_gdr_constraint_flag, no_idr_constraint_flag, and no_cra_constraint_flag to be equal to 0.
[1194] ii. In one example, bitstream constraints can be added to constrain the range of a general constraint field.
[1195] 1. For example, require max_bitdepth_constraint_idc to be in the range of 0 to X (such as X=8) (inclusive).
[1196] 2. For example, when general_profile_idc is equal to A (such as A=1), max_bitdepth_constraint_idc is required to be in the range of 0 to B (such as B=2) (inclusive).
[1197] 5. Regarding the addition of a new SPS / PPS syntax element to address the fifth question:
[1198] 1) New SPS and / or PPS syntax elements can be added to condition the relevant syntax elements in SPS / PPS / PH / SH, for example, as in the fourth embodiment.
[1199] 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 the inter-frame prediction-related syntax elements in SPS / PPS / PH / SH.
[1200] i. In one example, when the general constraint flag intra_only_constraint_flag is equal to 1, the 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.
[1201] 1. Alternatively, when intra_only_constraint_flag equals 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.
[1202] ii. In one example, if the value of a new PPS syntax element (e.g., sps_intra_only_flag) is equal to 1, 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_enable) can be skipped. d_flag, sps_temporal_mvp_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sb t_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) signaling
[1203] 2. Alternatively, 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 some value (such as 0 or 1).
[1204] 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 for the corresponding inter-frame related and RPL related syntax elements included in the PH and / or SH can be skipped.
[1205] 1. In one example, the above inter-frame related PH syntax element can be ph_inter_slice_allowed_flag.
[1206] 2. In one example, the RPL-related SH syntax element mentioned above can be num_ref_idx_active_override_flag.
[1207] 3. In one example, the corresponding RPL-related syntax elements mentioned above can be syntax elements in the syntax structures ref_pic_lists() and ref_pic_list_struct(listIdx,rplsIdx) included in PH and / or SH.
[1208] 4. Alternatively, 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 correlation and RPL correlation syntax elements in PH and / or SH is inferred to be equal to a certain value (such as 0 or 1).
[1209] iv. In one example, if the value of a new PPS syntax element (e.g., pps_intra_only_flag) is equal to 1, the signaling of the corresponding PPS syntax element can be skipped.
[1210] 1. For example, the corresponding PPS syntax element mentioned above could be rpl1_idx_present_flag.
[1211] 2. For example, the corresponding PPS syntax element mentioned above can be num_ref_idx_default_active_minus1[].
[1212] 3. Alternatively, 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 certain value (such as 0 or 1).
[1213] v. Alternatively (in which 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 equals 1, a bitstream constraint can be added to require the value of the new SPS and / or PPS syntax elements sps_intra_only_flag and / or pps_intra_only_flag to be equal to 1.
[1214] vi. Alternatively (in which case, depending on the value of the new SPS / PPS syntax element, the SPS / PPS / PH / SH syntax elements associated with the new SPS / PPS syntax element are not conditionally signaled or skipped), in one example, a bitstream constraint can be added based on the value of the new SPS / PPS syntax element, such that the value of each of the relevant syntax elements in the SPS / PPS / PH / SH is required to be equal to a certain value (such as 0 or 1).
[1215] 1. In one example (in which 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, a bitstream constraint can be added such that the value of the new PPS syntax element pps_intra_only_flag is required to be equal to 1.
[1216] 2. In one example (in which case the SPS syntax element associated with the new SPS syntax element is signaled or inferred), a bitstream constraint can be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1, the value of the inter-frame related SPS syntax element is required to be equal to 0.
[1217] 3. In one example (in which case the PPS syntax element associated with the new SPS / PPS syntax element is signaled or inferred), a bitstream constraint can be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1, or the new PPS syntax element pps_intra_only_flag is equal to 1, the value of the inter-frame related PPS syntax element is required to be equal to 0.
[1218] 4. In one example (in which case the PH / SH syntax element associated with the new SPS / PPS syntax element is signaled or inferred), a bitstream constraint 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 value of the corresponding inter-frame related and / or RPL related syntax elements included in the PH / SH is required to be equal to a certain value (such as 0 or 1).
[1219] 6. Regarding the addition of a new general constraint flag / field for resolving the sixth problem:
[1220] 1) New general constraint flags can be added in the syntax general_constraint_info(). In addition, these new general constraint flags can be used to add conditions to the relevant syntax elements in SPS / PPS / PH / SH, or to constrain the values of the relevant syntax elements in SPS / PPS / PH / SH by bitstream constraints, for example, as in the fifth embodiment.
[1221] a. For example, new general constraint flags can be added to achieve one or more functions, as described below.
[1222] i. For example, add new general constraint flags to disable inter-layer prediction and / or allow only one layer, such as adding the new syntax element `no_inter_layer_prediction_constraint_flag`. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element `inter_layer_ref_pics_present_flag`.
[1223] ii. For example, add new general constraint flags to disable long-term references, such as the new syntax element no_long_term_ref_pics_constraint_flag. Furthermore, this new syntax element can be used to condition or constrain the value of the SPS syntax element long_term_ref_pics_flag during signaling.
[1224] iii. For example, add new general constraint flags to disable a maximum transform size equal to 32×32, such as the new syntax element no_max_luma_transform_size 64_constraint_flag. Furthermore, this new syntax element can be used to condition or constrain the value of the SPS syntax element sps_max_luma_transform_size_64_flag.
[1225] iv. For example, add new general constraint flags to disable MER, such as the new syntax element no_parallel_merge_level_constraint_flag. Furthermore, this new syntax element can be used to condition or constrain the value of the SPS syntax element log2_parallel_merge_level_minus2.
[1226] v. For example, add new general constraint flags to disable the existence of wavefront parallel processing entry offsets, such as the new syntax element no_wpp_entry_point_offset_present_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_wpp_entry_point_offsets_present_flag.
[1227] vi. For example, add new general constraint flags to disable entropy coding-decoding synchronization points (i.e., wavefront parallel processing), such as the new syntax element `no_entropy_coding_sync_constraint_flag`. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element `sps_entropy_coding_sync_enabled_flag`.
[1228] b. For example, new generic constraint flags can be added to control one or more of the codec tools, as described below.
[1229] i. For example, add new general constraint flags to disable weighted prediction of P-stripes, such as the new syntax element no_wighted_pred_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_weighted_pred_flag during signaling.
[1230] ii. For example, add new general constraint flags to disable weighted bipred prediction for B-strips, such as the new syntax element no_wighted_bipred_constraint_flag. Furthermore, this new syntax element can be used to condition or constrain the value of the SPS syntax element sps_weighted_bipred_flag during signaling.
[1231] iii. For example, add new general constraint flags to disable SMVD, such as the new syntax element no_smvd_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_smvd_enabled_flag.
[1232] iv. For example, add new general constraint flags to disable MMVD, such as the new syntax element no_mmvd_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_mmvd_enabled_flag.
[1233] v. For example, add new general constraint flags to disable ISP, such as the new syntax element no_isp_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_isp_enabled_flag.
[1234] vi. For example, add new general constraint flags to disable MRL, such as the new syntax element no_mrl_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_mrl_enabled_flag.
[1235] vii. For example, add new general constraint flags to disable MIP, such as the new syntax element no_mip_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_mip_enabled_flag during signaling.
[1236] viii. For example, add new general constraint flags to disable PLT, such as the new syntax element no_palette_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_palette_enabled_flag.
[1237] ix. For example, new general constraint flags can be added to disable ACT, such as the new syntax element no_act_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_act_enabled_flag.
[1238] x. For example, add new general constraint flags to disable LMCS, such as the new syntax element no_lmcs_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_lmcs_enabled_flag.
[1239] xi. For example, new general constraint flags can be added to disable LFNST, such as the new syntax element no_lfnst_constraint_flag. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element sps_lfnst_enabled_flag.
[1240] xii. For example, add new general constraint flags to disable scaling lists, such as the new syntax element `no_scaling_list_constraint_flag`. Furthermore, this new syntax element can be used to conditionalize or constrain the value of the SPS syntax element `sps_scaling_list_enabled_flag`.
[1241] xiii. For example, add new general constraint flags to disable virtual boundaries, such as the new syntax element no_virtual_boundaries_constraint_flag. Furthermore, this new syntax element can be used to condition or constrain the value of the SPS syntax element sps_virtual_boundaries_enabled_flag during signaling.
[1242] c. For example, new general constraint flags can be added to control a set of syntax elements (i.e., to condition their signaling or constrain their values), as described below.
[1243] i. For example, add new general constraint flags to disable weighted prediction and weighted bipred prediction. Additionally, this new syntax element can be used to control the SPS syntax elements sps_weighted_pred_flag and sps_weighted_bipred_flag.
[1244] d. For example, when the new general constraint syntax is equal to 1, the signaling of the corresponding SPS / PH / SH syntax element can be skipped.
[1245] ii. Alternatively, when the corresponding SPS / PH / SH syntax element does not exist (in the case that the corresponding new general constraint syntax element is equal to 1), the value of the corresponding SPS / PH / SH syntax element is inferred to be equal to some value (such as 0 or 1).
[1246] iii. Alternatively (where the corresponding SPS / PH / SH syntax element is signaled or inferred), in one example, a bitstream constraint can be added such that when the new general constraint syntax element is equal to 1, the value of the corresponding SPS / PH / SH syntax element is required to be equal to a certain value (such as 0 or 1).
[1247] i. Alternatively, in one example, when no_aps_cosntraint_flag is equal to 1, the newly added constraint flags related to APS (e.g., no_scaling_list_constraint_flag and no_lmcs_constraint_flag) are required to have a value of 1.
[1248] ii. Alternatively, in one example, when intra_only_cosntraint_flag equals 1, the newly added constraint flags related to APS (e.g., no_weighted_pred_constraint_flag, no_weighted_bipred_constraint_flag, no_long_term_ref_pics_constraint_flag, no_inter_layer_prediction_constraint_flag, no_smvd_constraint_flag, and no_mmvd_constraint_flag) are required to have a value of 1.
[1249] iii. Alternatively, in one example, when vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 1, the value of no_inter_layer_prediction_constraint_flag is required to be equal to 1.
[1250] 7. Regarding the connection between APS syntax elements used to solve the seventh problem and syntax elements in other parameter sets:
[1251] 1) In one example, the VPS ID and / or SPS ID and / or PPS ID can be added to the APS syntax structure, i.e., adaptation_parameter_set_rbsp(), for example, as in the sixth embodiment.
[1252] 2) In one example, APS syntax elements (e.g., alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag) may depend on the values of general constraint flags, for example, as in the sixth embodiment.
[1253] a. For example, when no_aps_constraint_flag equals 0, 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 should be equal to 1.
[1254] b. For example, when sps_alf_enabled_flag is equal to 1, 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 should be equal to 1.
[1255] c. When no_aps_constraint_flag equals 0 and sps_alf_enabled_flag equals 1, 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 should be equal to 1.
[1256] d. Alternatively, 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 may depend on whether there is an APS NAL unit with an aps_params_type equal to ALF_APS.
[1257] 3) In one example, based on the SPS / PPS ID, an APS syntax element can depend on the value of the syntax element associated with the corresponding SPS / PPS.
[1258] a. For example, the values of chroma-related APS syntax elements (such as alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag, scaling_list_chroma_present_flag, etc.) may not be constrained by variables (such as ChromaArrayType) inferred through SPS syntax elements.
[1259] 4) In one example, a bitstream constraint can be added so that when no_aps_constraint_flag equals 1, syntax elements associated with the syntax structures alf_data(), lmcs_data(), and scaling_list_data() cannot be sent.
[1260] 8. Redundant signaling regarding general constraint flags:
[1261] 1) In one example, the indicator can be included in the syntax structure of profile_tier_level() and / or general_constraint_info() to indicate which tier and / or layer and / or level the current general constraint information applies to.
[1262] 2) In one example, the syntax structure general_constraint_info() can be included in and can only be included in the SPS syntax structure seq_parameter_set_rbsp().
[1263] 3) Bitstream constraints can be added so that if a VPS is available, the general_constraint_info() syntax element included in the VPS is used for the CVS.
[1264] 4) Bitstream constraints can be added so that if there is no VPS, the general_constraint_info() syntax element included in the SPS is used for the current CLVS.
[1265] 9. In one example, whether and / or how signaling notifies the general constraint structure can depend on the values of tier and / or sub-tier and / or level and / or layer.
[1266] a. In one example, each general_constraint_info() syntax structure is specified to be associated with a set of general_profile_idc and subprofile_sub_profile_idc[i] for all i values in the profile_tier_level() syntax structure which is identical to the general_constraint_info() syntax structure.
[1267] Alternatively, each general_constraint_info() syntax structure is specified to be associated with a profile_tier_level() syntax structure that contains the general_constraint_info() syntax structure.
[1268] b. In one example, the information carried in the `general_constraint_info()` syntax structure can impose more constraints on which codec tools can be applied, compared to the tiers and subtiers indicated in the `profile_tier_level()` syntax structure which contains the `general_constraint_info()` syntax structure. This means that, in addition to all the constraints imposed by tiers and subtiers, more aspects can be constrained by the general constraint information.
[1269] c. In one example, for any particular aspect associated with a general constraint syntax element, the corresponding general constraint syntax element must have a value indicating either a more stringent constraint on that aspect than that indicated by the grade and subgrade, or the same constraint on that aspect as that indicated by the grade and subgrade.
[1270] i. In one example, if either the tier or the subtier indicates that all slices are intra-slices, then intra_only_constraint_flag should be equal to 1, while if neither the tier nor the subtier indicates that all slices are intra-slices, then intra_only_constraint_flag can be equal to 1 or 0.
[1271] d. In one example, for any particular aspect associated with a general constraint syntax element, the most stringent constraint indicated by the grade, subgrade, and corresponding general constraint syntax element applies.
[1272] i. In one example, when either the tier or subtier indicates that all slices are intra-slices, the value of intra_only_constraint_flag can be equal to 1 or 0, but all slices are still required to be intra-slices. And when neither the tier nor the subtier indicates that all slices are intra-slices and the value of intra_only_constraint_flag is equal to 1, all slices are again required to be intra-slices.
[1273] e. In one example, there is no general constraint information for specific tiers and / or subtiers and / or levels and / or layers. General constraint flags / fields are inferred as predefined values based on specific tiers and / or levels and / or layers.
[1274] f. In one example, signaling notifications can be targeted at specific tiers and / or subtiers and / or levels and / or tiers, but general constraint information can be ignored. General constraint flags are inferred as predefined values based on specific tiers and / or levels and / or tiers.
[1275] g. In one example, general constraint information can be communicated for specific tiers and / or sub-tiers and / or levels and / or layers. The general constraint flag must be equal to a predefined value based on the specific tier and / or level and / or layer in the consistent bitstream.
[1276] h. In one example, general constraint information can be notified for specific tiers and / or subtiers and / or levels and / or layers. Whether and / or how to apply codec tools can be determined by (multiple) corresponding general constraint flags, ignoring specifications in tiers and / or levels and / or layers.
[1277] i. In one example, if the codec tool is specified to be off in tiers and / or subtiers and / or levels and / or layers, then the general constraint flag associated with the codec tool must be set to 1 (meaning off).
[1278] j. In one example, if the codec tool is specified to be off in the grade and / or subgrade and / or level and / or layer, the general constraint flag associated with the codec tool can be ignored and inferred to be 1 (meaning off).
[1279] k. In one example, if the codec tool is specified to be off in the grade and / or subgrade and / or level and / or layer, the general constraint flags associated with the codec tool can be skipped and inferred as 1 (meaning off).
[1280] l. In one example, intra_only_constraint_flag must be equal to 1 to indicate all intra-frame encod...
Claims
1. A video processing method, comprising: The conversion between the video and the video bitstream is performed according to the rules, and The rule specifies that when the level-level presence flag is equal to 1, the first syntax element is included in the level, tier, and grade information syntax structure. The level-level presence flag being equal to 1 indicates that level, tier, and general constraint information are allowed. The value of the first syntax element indicates whether one or more general constraint information syntax elements are included in the general constraint information syntax structure, and Wherein, when the value of the first syntax element is equal to 0, the one or more general constraint information syntax elements are not included in the general constraint information syntax structure, and the general constraint information syntax structure does not impose any constraints; Wherein, when the value of the first syntax element is equal to 1, the one or more general constraint information syntax elements are included in the general constraint information syntax structure.
2. The method according to claim 1, wherein, The first syntax element is encoded and decoded using an N-bit unsigned integer, where N equals 1.
3. The method according to claim 1, wherein, The rule further specifies that a second syntax element specifying the level information of one or more output level sets is included in the grade, level, and hierarchy information syntax structure; and In this context, the starting position of the second syntax element in the grade, layer, and level information syntax structure is constrained to be aligned with the byte boundary.
4. The method according to claim 1, wherein, The rule specifies that when the value of the level existence flag is equal to 1 and the value of the first syntax element is equal to 1, a third syntax element indicating the number of reserved bits in the general constraint information syntax structure is included in the general constraint information syntax structure.
5. The method according to claim 4, wherein, The third syntax element is encoded and decoded using an M-bit unsigned integer, where M is an integer.
6. The method according to claim 4, wherein, The reserved general constraint information syntax elements are included in the general constraint information syntax structure, and The reserved general constraint information syntax element is gci_reserved_zero_bit[i], where i ranges from 0 to the value of the third syntax element minus 1.
7. The method according to claim 6, wherein, The reserved general constraint information syntax elements are encoded and decoded using an S-bit unsigned integer, where S equals 1.
8. The method according to claim 1, wherein, The rule specifies that one or more syntax elements in the sequence parameter set, image parameter set, image header, or strip header are constrained by a fourth syntax element included in the general constraint information syntax structure, wherein the fourth syntax element specifies whether a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist. Specifically, when the value of the fourth syntax element is equal to 1 and a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist, The value of the fifth syntax element in the sequence parameter set is constrained to 0, which specifies that the cross-component adaptive loop filter is disabled. The value of the sixth syntax element in the image header is constrained to be 0, which specifies that the number of adaptive loop filter (ALF) adaptive parameter sets (APS) for the image reference is 0. The value of the seventh syntax element in the stripe header is constrained to be 0, which specifies that the number of ALF APSs for the stripe reference is 0. The value of the eighth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the image. The value of the ninth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the image. The value of the tenth syntax element in the stripe header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the stripe. The value of the eleventh syntax element in the strip header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the strip.
9. The method according to claim 1, wherein, The existence of one or more general constraint information syntax elements is conditional on the value of the first syntax element.
10. The method according to claim 1, wherein, The rule specifies that, in response to the absence of general constraint information specified by the first syntax element, the general constraint information syntax structure is not included in the grade, level, and level information syntax structure.
11. The method according to claim 10, wherein, The value of the first syntax element that specifies that general constraint information does not exist is equal to 0.
12. The method according to claim 1, wherein, The rule specifies that, if the general constraint information syntax structure does not exist in the grade, level, or level syntax structure, or if one or more general constraint information syntax elements do not exist in the general constraint information syntax structure, each of the one or more general constraint information syntax elements is inferred to be a value that causes no corresponding constraint to be applied.
13. The method according to claim 12, wherein, The value is 0.
14. The method according to claim 1, wherein, The rule specifies that, when the first syntax element has a specific value for the existing grade, level, and level information syntax structure, the value of the first general constraint information syntax element that specifies the requirement for bitstream consistency indicating the maximum bit depth of the sample is inferred to be equal to 8.
15. The method according to claim 14, wherein, The rule specifies that, when the first syntax element has a specific value for the existing grade, level, and level information syntax structure, the value of the second general constraint information syntax element, which specifies the requirement for bitstream consistency of the maximum chroma format indication, is inferred to be equal to 3.
16. The method according to claim 15, wherein, The rule specifies that, when the first syntax element has a specific value for the existing grade, level, and level information syntax structure, the value of some general constraint information syntax elements is inferred to be equal to 0.
17. The method according to claim 16, wherein, The general constraint information syntax elements are the syntax elements included in the general constraint information syntax structure other than the first general constraint information syntax element and the second general constraint information syntax element.
18. The method according to claim 17, wherein, The general constraint information syntax elements are included in the general constraint information syntax structure, such that the general constraint information syntax elements range from a third general constraint information syntax element specifying the existence of a frame encapsulation arrangement SEI message, a segmented rectangular frame encapsulation arrangement SEI message, an equal rectangular projection SEI message, or a cube projection SEI message, to a fourth general constraint information syntax element specifying the requirement for bitstream consistency for the presence of NAL units without Network Abstraction Layer (NAL) unit type APS_NUT in the bitstream.
19. The method according to claim 1, wherein, The rule also specifies that, in the absence of the general constraint information syntax element, the value of the general constraint information syntax element is inferred to be a default value.
20. The method according to claim 19, wherein, The default value is 0 or 1.
21. The method according to claim 19, wherein, The default value depends on the grade and / or level.
22. The method according to claim 1, wherein, The rule also specifies that the signaling of the first syntax element is conditional on grade and / or level.
23. The method according to claim 22, wherein, The rule also specifies that, in the absence of the first syntax element, the value of the first syntax element is inferred to be the default value.
24. The method according to claim 23, wherein, The default value is 0 or 1.
25. The method according to claim 1, wherein, The first syntax element is encoded and decoded using u(1).
26. The method according to any one of claims 1 to 25, wherein, The conversion includes encoding the video into the bitstream.
27. The method according to any one of claims 1 to 25, wherein, The conversion includes decoding the video from the bitstream.
28. 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: The conversion between the video and the video bitstream is performed according to the rules, and in, The rule specifies that when the level / tier presence flag is equal to 1, the first syntax element is included in the level, tier, and grade information syntax structure. A level / tier presence flag value of 1 indicates that level, tier, and general constraint information are permitted. The value of the first syntax element indicates whether one or more general constraint information syntax elements are included in the general constraint information syntax structure, and Wherein, when the value of the first syntax element is equal to 0, the one or more general constraint information syntax elements are not included in the general constraint information syntax structure, and the general constraint information syntax structure does not impose any constraints; Wherein, when the value of the first syntax element is equal to 1, the one or more general constraint information syntax elements are included in the general constraint information syntax structure.
29. The apparatus according to claim 28, wherein, The first syntax element is encoded and decoded using an N-bit unsigned integer, where N equals 1.
30. The apparatus according to claim 28, wherein, The rule further specifies that a second syntax element specifying the level information of one or more output level sets is included in the grade, level, and hierarchy information syntax structure; and In this context, the starting position of the second syntax element in the grade, layer, and level information syntax structure is constrained to be aligned with the byte boundary.
31. The apparatus according to claim 28, wherein, The rule specifies that when the value of the level existence flag is equal to 1 and the value of the first syntax element is equal to 1, a third syntax element indicating the number of reserved bits in the general constraint information syntax structure is included in the general constraint information syntax structure.
32. The apparatus according to claim 31, wherein, The third syntax element is encoded and decoded using an M-bit unsigned integer, where M is an integer. The retained general constraint information syntax elements are included in the general constraint information syntax structure. The reserved general constraint information syntax element is gci_reserved_zero_bit[i], where i ranges from 0 to the value of the third syntax element minus 1, and The reserved general constraint information syntax elements are encoded and decoded using an S-bit unsigned integer, where S equals 1.
33. The apparatus according to claim 28, wherein, The rule specifies that one or more syntax elements in the sequence parameter set, image parameter set, image header, or strip header are constrained by a fourth syntax element included in the general constraint information syntax structure, wherein the fourth syntax element specifies whether a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist. Specifically, when the value of the fourth syntax element is equal to 1 and a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist, The value of the fifth syntax element in the sequence parameter set is constrained to 0, which specifies that the cross-component adaptive loop filter is disabled. The value of the sixth syntax element in the image header is constrained to be 0, which specifies that the number of adaptive loop filter (ALF) adaptive parameter sets (APS) for the image reference is 0. The value of the seventh syntax element in the stripe header is constrained to be 0, which specifies that the number of ALF APSs for the stripe reference is 0. The value of the eighth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the image. The value of the ninth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the image. The value of the tenth syntax element in the stripe header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the stripe. The value of the eleventh syntax element in the strip header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the strip.
34. A non-transitory computer-readable storage medium storing instructions that cause a processor to: The conversion between the video and the video bitstream is performed according to the rules, and in, The rule specifies that when the level / tier presence flag is equal to 1, the first syntax element is included in the level, tier, and grade information syntax structure. A level / tier presence flag value of 1 indicates that level, tier, and general constraint information are permitted. The value of the first syntax element indicates whether one or more general constraint information syntax elements are included in the general constraint information syntax structure, and Wherein, when the value of the first syntax element is equal to 0, the one or more general constraint information syntax elements are not included in the general constraint information syntax structure, and the general constraint information syntax structure does not impose any constraints; Wherein, when the value of the first syntax element is equal to 1, the one or more general constraint information syntax elements are included in the general constraint information syntax structure.
35. The non-transitory computer-readable storage medium according to claim 34, wherein, The first syntax element is encoded and decoded using an N-bit unsigned integer, where N equals 1. The rule further specifies that a second syntax element specifying the level information of one or more output layer sets is included in the grade, layer, and level information syntax structure. In this context, the starting position of the second syntax element in the grade, layer, and level information syntax structure is constrained to be aligned with the byte boundary. The rule specifies that when the value of the level existence flag is equal to 1 and the value of the first syntax element is equal to 1, a third syntax element indicating the number of reserved bits in the general constraint information syntax structure is included in the general constraint information syntax structure. The third syntax element is encoded and decoded using an M-bit unsigned integer, where M is an integer. The retained general constraint information syntax elements are included in the general constraint information syntax structure. The reserved general constraint information syntax element is gci_reserved_zero_bit[i], where i ranges from 0 to the value of the third syntax element minus 1. The reserved general constraint information syntax elements are encoded and decoded using an S-bit unsigned integer, where S equals 1. The rule specifies that one or more syntax elements in the sequence parameter set, image parameter set, image header, or strip header are constrained by a fourth syntax element included in the general constraint information syntax structure, and wherein the fourth syntax element specifies whether a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist. Specifically, when the value of the fourth syntax element is equal to 1 and a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist, The value of the fifth syntax element in the sequence parameter set is constrained to 0, which specifies that the cross-component adaptive loop filter is disabled. The value of the sixth syntax element in the image header is constrained to be 0, which specifies that the number of adaptive loop filter (ALF) adaptive parameter sets (APS) for the image reference is 0. The value of the seventh syntax element in the stripe header is constrained to be 0, which specifies that the number of ALF APSs for the stripe reference is 0. The value of the eighth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the image. The value of the ninth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the image. The value of the tenth syntax element in the stripe header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the stripe. The value of the eleventh syntax element in the strip header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the strip.
36. A non-transitory computer-readable recording medium storing a bitstream of video and a computer program, wherein, When the computer program is executed by the video processing device, it generates the bitstream by performing a video processing method, wherein the method includes: Generate the bitstream of the video according to the rules, and The rule specifies that when the level-level presence flag is equal to 1, the first syntax element is included in the level, tier, and grade information syntax structure. The level-level presence flag being equal to 1 indicates that level, tier, and general constraint information are allowed. The value of the first syntax element indicates whether one or more general constraint information syntax elements are included in the general constraint information syntax structure, and Wherein, when the value of the first syntax element is equal to 0, the one or more general constraint information syntax elements are not included in the general constraint information syntax structure, and the general constraint information syntax structure does not impose any constraints; Wherein, when the value of the first syntax element is equal to 1, the one or more general constraint information syntax elements are included in the general constraint information syntax structure.
37. The non-transitory computer-readable recording medium according to claim 36, wherein, The first syntax element is encoded and decoded using an N-bit unsigned integer, where N equals 1. The rule further specifies that a second syntax element specifying the level information of one or more output layer sets is included in the grade, layer, and level information syntax structure. In this context, the starting position of the second syntax element in the grade, layer, and level information syntax structure is constrained to be aligned with the byte boundary. The rule specifies that when the value of the level existence flag is equal to 1 and the value of the first syntax element is equal to 1, a third syntax element indicating the number of reserved bits in the general constraint information syntax structure is included in the general constraint information syntax structure. The third syntax element is encoded and decoded using an M-bit unsigned integer, where M is an integer. The retained general constraint information syntax elements are included in the general constraint information syntax structure. The reserved general constraint information syntax element is gci_reserved_zero_bit[i], where i ranges from 0 to the value of the third syntax element minus 1. The reserved general constraint information syntax elements are encoded and decoded using an S-bit unsigned integer, where S equals 1. The rule specifies that one or more syntax elements in the sequence parameter set, image parameter set, image header, or strip header are constrained by a fourth syntax element included in the general constraint information syntax structure, and wherein the fourth syntax element specifies whether a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist. Specifically, when the value of the fourth syntax element is equal to 1 and a NAL unit of type PREFIX_APS_NUT or SUFFIX_APS_NUT does not exist, The value of the fifth syntax element in the sequence parameter set is constrained to 0, which specifies that the cross-component adaptive loop filter is disabled. The value of the sixth syntax element in the image header is constrained to be 0, which specifies that the number of adaptive loop filter (ALF) adaptive parameter sets (APS) for the image reference is 0. The value of the seventh syntax element in the stripe header is constrained to be 0, which specifies that the number of ALF APSs for the stripe reference is 0. The value of the eighth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the image. The value of the ninth syntax element in the image header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the image. The value of the tenth syntax element in the stripe header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cb color component of the stripe. The value of the eleventh syntax element in the strip header is constrained to 0, which specifies that the adaptive loop filter is disabled for the Cr color component of the strip.
38. A method for storing a bitstream of video, comprising: Generate the bitstream of the video according to the rules. The bitstream is stored on a non-transitory computer-readable recording medium. The rule specifies that when the level / tier presence flag is equal to 1, the first syntax element is included in the level, tier, and grade information syntax structure. The level / tier presence flag being equal to 1 indicates that level, tier, and general constraint information are allowed. The value of the first syntax element indicates whether one or more general constraint information syntax elements are included in the general constraint information syntax structure, and Wherein, when the value of the first syntax element is equal to 0, the one or more general constraint information syntax elements are not included in the general constraint information syntax structure, and the general constraint information syntax structure does not impose any constraints; Wherein, when the value of the first syntax element is equal to 1, the one or more general constraint information syntax elements are included in the general constraint information syntax structure.