Method and apparatus for processing video data, medium and method for storing bitstream

By including or omitting relevant information in the Adaptive Parameter Set (APS) according to rules during the video encoding and decoding process, the problem of limited encoding and decoding efficiency and quality in the prior art is solved, and more efficient video data processing is achieved.

CN115299064BActive Publication Date: 2026-06-16DOUYIN VISION CO LTD +1

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
DOUYIN VISION CO LTD
Filing Date
2021-03-11
Publication Date
2026-06-16

AI Technical Summary

Technical Problem

Existing video codec standards fail to effectively utilize information from the Adaptive Parameter Set (APS) when processing video data, resulting in limited codec efficiency and quality, particularly in areas such as chroma components, transform skipping, and incremental quantization parameters, where there is a lack of flexibility and optimization.

Method used

By including or omitting relevant information such as chroma components, transform skip, and incremental quantization parameters in the adaptive parameter set (APS) during the conversion process between video and bitstream, specific rules are formulated to improve encoding and decoding efficiency and quality.

🎯Benefits of technology

It achieves a more efficient encoding and decoding process, improving the processing efficiency and quality of video data, especially in the application of chroma components, transform skipping, and incremental quantization parameters, meeting the needs of multi-layer video encoding and decoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115299064B_ABST
    Figure CN115299064B_ABST
Patent Text Reader

Abstract

Methods, systems, and apparatus, including computer programs, are described for video processing. An example video processing method includes performing a conversion between a video comprising video units and a bitstream of the video according to a rule, wherein the rule specifies whether or how information related to a scaling list of the video is included in an adaptation parameter set (APS) is based on a first syntax element and independent of one or more syntax elements in a sequence parameter set (SPS), the first syntax element indicating whether the APS includes syntax elements related to a chroma component.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference of related applications

[0002] This application is made to promptly claim priority and benefit to International Patent Application No. PCT / CN2020 / 078770, filed on March 11, 2020. The entire disclosure of the aforementioned application is incorporated herein by reference as part of the disclosure. 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 the codec representation of video using control information useful for decoding the codec representation.

[0006] In one example aspect, a video processing method is disclosed. The method includes performing a conversion between a video comprising video units and a video bitstream according to rules, wherein the rules specifying whether and how information related to a video scaling list is included in an adaptive parameter set (APS) are based on a first syntax element and independent of one or more syntax elements in a sequence parameter set (SPS), the first syntax element indicating whether the APS includes syntax elements related to chroma components.

[0007] In another example, a video processing method is disclosed. This method includes performing a conversion between video and video bitstreams according to rules, wherein the rules specify that syntax elements are included in an adaptive parameter set (APS), and wherein the rules specify that syntax elements indicate whether one or more syntax elements used for chroma residual scaling are included in the APS.

[0008] In another example, a video processing method is disclosed. This method includes performing a conversion between video and video bitstreams according to rules, wherein the rules specify whether one or more syntax elements used for chroma residual scaling are included in an adaptive parameter set (APS) based on a first syntax element indicating whether the APS includes syntax elements related to chroma components.

[0009] In another example, a video processing method is disclosed. The method includes performing a conversion between a video comprising video blocks and a bitstream of video according to rules, wherein the rules specify whether a first syntax element is included in the stripe header (SH), the first syntax element indicating whether residual encoding / decoding based on transform skipping is disabled for the stripe, and wherein the rules specify whether the first syntax element is included in the SH is selectively based on a second syntax element in the sequence parameter set (SPS), the second syntax element indicating whether transform skipping (TS) mode is enabled for the video block.

[0010] In another example, a video processing method is disclosed. The method includes performing a conversion between a video comprising luma blocks and a video bitstream according to rules, wherein the rules specify whether a stripe header (SH) includes a first syntax element based on a second syntax element, and wherein the first syntax element indicates whether one or more codec units (CUs) of a specific stripe of luma blocks enable the use of incremental quantization parameters (QP).

[0011] In another example, a video processing method is disclosed. This method includes performing a conversion between a video comprising video images and a bitstream of video according to rules, wherein the rules specify that in response to a first syntax element indicating that each sub-image of a video image comprises only one rectangular stripe, a second syntax element indicating the number of rectangular stripes in each video image of a reference picture parameter set (PPS) plus 1 equals a third syntax element indicating the number of sub-images in each video image of a codec layer video sequence (CLVS) of the bitstream plus 1.

[0012] In another example, a video processing method is disclosed. This method includes performing a conversion between a video comprising video images and a video bitstream according to rules, wherein the rules specify that a Picture Parameter Set (PPS) includes one or more syntax elements, the one or more syntax elements indicating whether the video images of the video are divided into a first number of slice rows or slice columns having the same height and a second number of slice rows or slice columns having different heights or widths, and wherein the first number of slice rows or slice columns are located in the video images preceding the second number of slice rows or slice columns.

[0013] In another example, a video processing method is disclosed. This method includes performing a conversion between a video and a video bitstream comprising video regions according to rules, wherein the rules specify that adaptive loop filtering operations are permitted on the video regions in response to the absence of one or more Adaptive Parameter Set (APS) Network Abstraction Layer (NAL) units that include adaptive loop filtering data.

[0014] In another example, a video processing method is disclosed. This method includes performing a conversion between a video and a video bitstream comprising video regions according to rules, wherein the rules stipulate that adaptive loop filtering is not permitted on video regions in response to the absence of one or more Adaptive Parameter Set (APS) Network Abstraction Layer (NAL) units that include adaptive loop filtering data.

[0015] In another example, a video processing method is disclosed. The method includes performing a conversion between a video comprising video images and a bitstream of video according to rules, wherein the rules specify that an adaptive loop filtering operation or a cross-component adaptive loop filtering operation is not allowed in response to a first value of a first syntax element having a value of 1 indicating that a second value of a second syntax element is equal to 0, wherein the rules specify that a general constraint information syntax structure includes a first syntax element, and wherein the rules specify that a second syntax element having a value of 0 in the sequence parameter set (SPS) indicates that a cross-component adaptive loop filtering operation is disabled for all video images of the video.

[0016] In another example, a video processing method is disclosed. This method includes performing a conversion between a video and a video bitstream comprising one or more video images according to rules, wherein the rules specify whether one or more syntax elements are included indicating multiple adaptive parameter sets (APS) including adaptive loop filtering data and / or APS identifiers indicating adaptive loop filtering operations or cross-component adaptive loop filtering operations, based on the presence of a first syntax element indicating the presence of APS network abstraction layer (NAL) units including adaptive loop filtering data in the bitstream.

[0017] In another example, a 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 parameter set, header, or syntax structure to indicate the disabling of any one or more of the following: adaptive loop filtering operation, cross-component adaptive loop filtering operation, luma mapping with chroma scaling (LMCS) operation, or one or more user-defined scaling lists.

[0018] In another example, a video processing method is disclosed. This method includes performing a conversion between a video and a video bitstream comprising video images according to rules, wherein the rules specify that a set of consistency window parameters is omitted from a Picture Parameter Set (PPS) in response to the following conditions: the width of each video image in luminance samples of the reference PPS is equal to the maximum picture width in luminance samples indicated by the Sequence Parameter Set (SPS) referenced by each video image, and the height of each video image in luminance samples of the reference PPS is equal to the maximum picture height in luminance samples indicated by the SPS.

[0019] In another example, a video processing method is disclosed. This method includes performing a conversion between video regions of a video and a codec representation of the video; wherein the codec representation conforms to format rules; wherein the format rules specify flags indicating whether a scaling list of color components in the video is included in an adaptive parameter set, independent of syntax field values ​​in a sequence parameter set.

[0020] In another example, a different video processing method is disclosed. This method includes performing a conversion between video regions of a video and their codec representations; wherein the codec representations conform to a format rule; wherein the format rule specifies that one or more adaptive parameter sets are included in the codec representation, such that for each adaptive parameter set, chroma-related syntax elements are omitted due to chroma constraints on the video.

[0021] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video regions and a codec representation of the video, the one or more video regions comprising one or more video units; wherein the codec representation conforms to a format rule; wherein the format rule specifies whether a first transform codec syntax field is included in the codec representation at the level of the video unit of the video region and / or its value depends on the value of a second transform codec syntax field at the level of the video region.

[0022] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video regions and a codec representation of the video, each video region comprising one or more video units; wherein the codec representation conforms to a format rule; and wherein the format rule specifies a flag control at the video unit level to enable differential signaling notification of quantization parameters for the conversion.

[0023] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video regions and a codec representation of the video, each video region comprising one or more video units; wherein the codec representation conforms to a format rule; wherein the format rule specifies the interpretation of a first flag indicating the number of sub-pictures and a second flag indicating the number of stripes in the sub-pictures.

[0024] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video images and a codec representation of the video, each video image comprising one or more strips and / or one or more slices; wherein the codec representation conforms to a format rule; wherein the format rule specifies that fields in a set of image parameters associated with the video image indicate whether the video image is divided into multiple slice rows or slice columns of different heights or widths.

[0025] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video frames and a codec representation of the video, each video frame comprising one or more stripes and / or one or more slices; wherein the codec representation conforms to a format rule; wherein the format rule specifies that the applicability of adaptive loop filtering to a video region is based on a second rule, excluding an indication of adaptive loop filtering from an adaptive parameter set.

[0026] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video images and a codec representation of the video, each video image comprising one or more stripes and / or one or more slices; wherein the codec representation conforms to a format rule; wherein the format rule specifies that for images having a width and height of the video, a maximum width, and a maximum height, explicit signaling notifications of consistency window parameters in the image parameter set are skipped.

[0027] In yet another example, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the methods described above.

[0028] In yet another example, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the methods described above.

[0029] In yet another example, a computer-readable medium on which code is stored is disclosed. This code embodies one of the methods described herein in the form of processor-executable code.

[0030] These and other features are described in this document. Attached Figure Description

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

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

[0033] Figure 3 A flowchart of an example method for video processing.

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

[0035] Figure 5 This is a block diagram illustrating an encoder according to some embodiments of the present disclosure.

[0036] Figure 6 This is a block diagram illustrating a decoder according to some embodiments of the present disclosure.

[0037] Figures 7 to 19 This is a flowchart of an example method for video processing. Detailed Implementation

[0038] The use of chapter headings in this document is for ease of understanding and does not limit the applicability of the techniques and embodiments disclosed in each chapter to that chapter only. Furthermore, the use of H.266 terminology in some descriptions is merely for ease of understanding and not to limit the scope of the disclosed techniques. Therefore, the techniques described herein are also applicable to other video codec protocols and designs.

[0039] 1. Introduction

[0040] This document relates to video codec technology. Specifically, it concerns the design of the SH, PPS, APS, and GCI syntax elements in video codecs. These ideas can be applied individually or in various combinations to any video codec standard or non-standard video codec that supports multi-layer video codecs (e.g., the Versatile Video Codec (VVC) under development).

[0041] 2. Abbreviation

[0042] APS Adaptive Parameter Set

[0043] AU Access Unit

[0044] AUD Access Unit Separator

[0045] AVC Advanced Video Codec

[0046] CLVS codec layer video sequence

[0047] CPB image buffer

[0048] CRA Clean Random Access

[0049] CTU (Codec Tree Unit)

[0050] CVS codec video sequence

[0051] DPB Decoding Image Buffer

[0052] DPS Decoding Parameter Set

[0053] EOB bitstream end

[0054] EOS sequence ends

[0055] GCI General Constraint Information

[0056] GDR Gradual Decoding and Refresh

[0057] HEVC High-Efficiency Video Encoding and Decoding

[0058] HRD Assumption Reference Decoder

[0059] IDR Instant Decoding and Refresh

[0060] JEM Joint Exploration Model

[0061] MCTS Motion Constraint Pieces

[0062] NAL Network Abstraction Layer

[0063] OLS Output Layer Set

[0064] PH image header

[0065] PPS Image Parameter Set

[0066] PTL (Level, Grade, Class)

[0067] PU Image Unit

[0068] RBSP raw byte sequence payload

[0069] SEI Supplemental Enhancement Information

[0070] SH strip header

[0071] SPS Sequence Parameter Set

[0072] SVC Scalable Video Codec

[0073] VCL (Video Codec Layer)

[0074] VPS Video Parameter Set

[0075] VTM VVC Test Model

[0076] VUI Video Availability Information

[0077] VVC Multi-Functional Video Encoding and Decoding

[0078] 3. Preliminary Discussion

[0079] Video codec standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed the H.261 and H.263 standards, while ISO / IEC developed the MPEG-1 and MPEG-4 Visual standards. The two organizations jointly developed the H.262 / MPEG-2 video standard, the H.264 / MPEG-4 Advanced Video Codec (AVC) standard, and the H.265 / HEVC standard. Starting with H.262, video codec standards are based on a hybrid video codec architecture, utilizing temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG 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 Coding (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was also released at that time. With ongoing efforts to standardize VVC, new codec technologies have been adopted into the VVC standard at each 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 Completion (FDIS) at the meeting in July 2020.

[0080] 3.1. GCI Syntax and Semantics

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

[0082]

[0083]

[0084]

[0085] The explanations for general_progressive_source_flag and general_interlaced_source_flag are as follows:

[0086] --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 only as a line scan.

[0087] --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 only.

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

[0089] --Otherwise (general_progressive_source_flag equals 1 and general_interlaced_source_flag equals 1), the source_scan_type syntax element in the Frame Field Information SEI message indicates the source scan type for each image in OlsInScope at the image level. The requirement for bitstream consistency is that a Frame Field Information SEI message should exist in each AU when general_progressive_source_flag equals 1 and general_interlaced_source_flag equals 1.

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

[0091] A `general_non_packed_constraint_flag` value of 1 specifies that no frame packing SEI messages should exist in the OlsInScope bitstream. A `general_non_packed_constraint_flag` value of 0 does not impose such a constraint.

[0092] Note 2 – The decoder may ignore the value of general_non_packed_constraint_flag because there are no decoding process requirements related to the presence or interpretation of the SEI message for frame packing arrangement.

[0093] 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 transmits images that may or may not represent frames.

[0094] Note 3 – The decoder may ignore the value of general_frame_only_constraint_flag because there is no associated decoding process requiring it.

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

[0096] Note 4 - The decoder may ignore the value of general_non_projected_constraint_flag because there are no decoding process requirements related to the presence or interpretation of isorectangular projection SEI messages and generalized cube projection SEI messages.

[0097] An intra_only_constraint_flag value of 1 specifies that slice_type should be equal to 1. An intra_only_constraint_flag value of 0 does not impose such a constraint.

[0098] The max_bitdepth_constraint_idc specifies that bit_depth_minus8 should be in the range of 0 to max_bitdepth_constraint_idc (inclusive).

[0099] The max_chroma_format_constraint_idc specifies that chroma_format_idc should be in the range of 0 to max_chroma_format_constraint_idc (inclusive).

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

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

[0102] 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` does not impose this constraint.

[0103] A value of 1 for `one_subpic_per_pic_constraint_flag` specifies that each image should contain only one subpic. A value of 0 for `one_subpic_per_pic_constraint_flag` does not impose this constraint. When `one_slice_per_pic_constraint_flag` is 1, the value of `one_subpic_per_pic_constraint_flag` should be 1.

[0104] A value of 1 for `no_qtbtt_dual_tree_intra_constraint_flag` means that `qtbtt_dual_tree_intra_flag` should be 0. A value of 0 for `no_qtbtt_dual_tree_intra_constraint_flag` means that no such constraint is imposed.

[0105] 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` does not impose such a constraint.

[0106] A value of 1 for `no_sao_constraint_flag` specifies that `sps_sao_enabled_flag` should be 0. A value of 0 for `no_sao_constraint_flag` does not impose this constraint.

[0107] 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 this constraint.

[0108] A value of 1 for no_ccalf_constraint_flag specifies that sps_ccalf_enabled_flag should be 0. A value of 0 for no_ccalf_constraint_flag does not impose such a constraint.

[0109] A value of 1 for `no_joint_cbcr_constraint_flag` indicates that `sps_joint_cbcr_enabled_flag` should be 0. A value of 0 for `no_joint_cbcr_constraint_flag` does not impose this constraint.

[0110] 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` does not impose this constraint.

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

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

[0113] A value of 1 for `no_amvr_constraint_flag` specifies that `sps_amvr_enabled_flag` should be 0. A value of 0 for `no_amvr_constraint_flag` does not impose this constraint.

[0114] 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 this constraint.

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

[0116] 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 this constraint.

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

[0118] 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 this constraint.

[0119] 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` does not impose this constraint.

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

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

[0122] 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 this constraint.

[0123] 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 this constraint.

[0124] A value of 1 for `no_gpm_constraint_flag` specifies that `sps_gpm_enabled_flag` should be 0. A value of 0 for `no_gpm_constraint_flag` does not impose this constraint.

[0125] A value of 1 for `no_ladf_constraint_flag` specifies that `sps_ladf_enabled_flag` should be 0. A value of 0 for `no_ladf_constraint_flag` does not impose this constraint.

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

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

[0128] A value of 1 for `no_qp_delta_constraint_flag` specifies that `cu_qp_delta_enabled_flag` should be 0, which is a requirement for bitstream consistency. A value of 0 for `no_qp_delta_constraint_flag` does not impose this constraint.

[0129] A value of 1 for `no_dep_quant_constraint_flag` specifies that `sps_dep_quant_enabled_flag` should be 0, which is a requirement for bitstream consistency. A value of 0 for `no_dep_quant_constraint_flag` does not impose this constraint.

[0130] A value of 1 for `no_sign_data_hiding_constraint_flag` specifies that `sps_sign_data_hiding_enabled_flag` should be 0, which is a requirement for bitstream consistency. A value of 0 for `no_sign_data_hiding_constraint_flag` does not impose this constraint.

[0131] A value of 1 for `no_mixed_nalu_types_in_pic_constraint_flag` specifies that `mixed_nalu_types_in_pic_flag` should be 0, which is a requirement for bitstream consistency. A value of 0 for `no_mixed_nalu_types_in_pic_constraint_flag` does not impose this constraint.

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

[0133] A value of 1 for `no_stsa_constraint_flag` specifies that NAL units with `nuh_unit_type` equal to `STSA_NUT` should not exist in `OlsInScope`. A value of 0 for `no_stsa_constraint_flag` does not impose this constraint.

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

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

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

[0137] A value of no_cra_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to CRA_NUT should not exist in OlsInScope. A value of no_cra_constraint_flag equal to 0 does not impose such a constraint.

[0138] A value of no_gdr_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to GDR_NUT should not exist in OlsInScope. A value of no_gdr_constraint_flag equal to 0 does not impose this constraint.

[0139] A value of no_aps_constraint_flag equal to 1 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 no_aps_constraint_flag equal to 0 does not impose such a constraint.

[0140] gci_alignment_zero_bits should be equal to 0.

[0141] `num_reserved_constraint_bytes` specifies the number of constraint bytes reserved. 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 appear in bitstreams conforming to this version of the specification.

[0142] The `gci_reserved_constraint_byte[i]` can have any value. Its presence and value do not affect the consistency of the decoder with the grade specified in this version of the specification. Decoders conforming to this version of the specification should ignore the values ​​of all `gci_reserved_constraint_byte[i]` syntax elements.

[0143] 3.2. SPS Syntax and Semantics

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

[0145]

[0146]

[0147]

[0148]

[0149]

[0150]

[0151]

[0152]

[0153]

[0154] The SPS RBSP should be available for the decoding process before it is referenced, either in at least one AU where TemporalId equals 0, or provided by external means.

[0155] All SPS NAL cells in CVS with a specific value sps_seq_parameter_set_id should have the same content.

[0156] sps_seq_parameter_set_id provides an identifier for SPS for reference by other syntax elements.

[0157] Regardless of the nuh_layer_id value, SPS NAL cells share the same value space of sps_seq_parameter_set_id.

[0158] Assume that `spsLayerId` is the value of `nuh_layer_id` for a specific SPS NAL cell, and `vclLayerId` is the value of `nuh_layer_id` for a specific VCL NAL cell. This 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 containing a layer whose `nuh_layer_id` is equal to `vclLayerId`.

[0159] When sps_video_parameter_set_id is greater than 0, it specifies the value of vps_video_parameter_set_id of the VPS referenced by SPS.

[0160] When sps_video_parameter_set_id equals 0, the following applies:

[0161] --SPS does not reference VPS.

[0162] --When decoding each CLVS of the reference SPS, the VPS is not referenced.

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

[0164] --CVS should contain only one layer (i.e., all VCL NAL units in CVS should have the same nuh_layer_id value).

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

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

[0167] When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 1, the nuh_layer_id of the SPS referenced by the CLVS with a specific nuh_layer_id value nuhLayerId should be equal to nuhLayerId.

[0168] The value of sps_video_parameter_set_id should be the same in all SPS referenced by CLVS in CVS.

[0169] The increment of sps_max_sublayers_minus1 by 1 specifies the maximum number of temporal sublayers that may 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).

[0170] In a bitstream conforming to this version of the specification, sps_reserved_zero_4bits should be equal to 0. Other values ​​for sps_reserved_zero_4bits are reserved for future use by ITU-T|ISO / IEC.

[0171] A value of 1 for `sps_ptl_dpb_hrd_params_present_flag` indicates that the `profile_tier_level()` and `dpb_parameters()` syntax structures exist in SPS. Furthermore, `general_hrd_parameters()` and `ols_hrd_parameters()` syntax structures may also exist in SPS. A value of 0 for `sps_ptl_dpb_hrd_params_present_flag` indicates that these four syntax structures do not 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]]`.

[0172] A `gdr_enabled_flag` value of 1 indicates that the GDR image may exist in the CLVS of the reference SPS. A `gdr_enabled_flag` value of 0 indicates that the GDR image does not exist in the CLVS of the reference SPS.

[0173] chroma_format_idc specifies chroma sampling relative to luminance sampling, as specified in Clause 6.2.

[0174] `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 and decoded samples of a color plane (Y, Cb, or Cr), using monochrome codec syntax. In this case, each color plane is associated with a specific `colour_plane_id` value.

[0175] Note 1 – The decoding process between color planes with different color_plane_id values ​​is independent. For example, the decoding process of a monochrome image with one color_plane_id value does not use any data from monochrome images with different color_plane_id values ​​for inter-frame prediction.

[0176] Based on the value of separate_colour_plane_flag, the value of the variable ChromaArrayType is assigned as follows:

[0177] --If separate_colour_plane_flag equals 0, then ChromaArrayType is set to equal chroma_format_idc.

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

[0179] A value of 1 for `res_change_in_clvs_allowed_flag` indicates that the spatial resolution of the image can be changed within the CLVS of the reference SPS. A value of 0 for `res_change_in_clvs_allowed_flag` indicates that the spatial resolution of the image remains unchanged within any CLVS of the reference SPS.

[0180] `pic_width_max_in_luma_samples` specifies the maximum width of each decoded image referenced by the SPS, in units of luminance samples. `pic_width_max_in_luma_samples` should not be equal to 0 and should be an integer multiple of `Max(8, MinCbSizeY)`.

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

[0182] `pic_height_max_in_luma_samples` specifies the maximum height of each decoded image referenced by the SPS, in units of luminance samples. `pic_height_max_in_luma_samples` should not be equal to 0 and should be an integer multiple of `Max(8, MinCbSizeY)`.

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

[0184] A `sps_conformance_window_flag` value of 1 indicates that the consistency trimming window offset parameter immediately follows in SPS. A `sps_conformance_window_flag` value of 0 indicates that the consistency trimming window offset parameter does not exist in SPS.

[0185] `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.

[0186] The consistent cropping window contains horizontal image coordinates from SubWidthC*sps_conf_win_left_offset to pic_width_max_in_luma_samples-(SubWidthC*sps_conf_win_left_offset).

[0187] The brightness samples are calculated as sps_conf_win_right_offset+1 (including the end value) and the 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 the end value).

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

[0189] 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 brightness sample point.

[0190] Note 2 – The consistent cropping window offset parameter applies only to the output. All internal decoding processes apply to the uncropped image size.

[0191] The value of sps_log2_ctu_size_minus5 plus 5 specifies the size of the luminance codec tree block 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 reserved for future use by ITU-T|ISO / IEC.

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

[0193] CtbLog2SizeY=sps_log2_ctu_size_minus5+5 (43)

[0194] CtbSizeY = 1 <CtbLog2SizeY (44)

[0195] A subpic_info_present_flag value of 1 indicates the existence of subpick information in CLVS, and each image in CLVS may contain one or more subpicks. A subpic_info_present_flag value of 0 indicates the absence of subpick information in CLVS, and each image in CLVS contains only one subpick.

[0196] When res_change_in_clvs_allowed_flag equals 1, the value of subpic_info_present_flag should be equal to 0.

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

[0198] The increment of 1 in `sps_num_subpics_minus1` specifies the number of subpicks in each picture within the CLVS. The value of `sps_num_subpics_minus1` should be between 0 and Ceil(pic_width_max_in_luma_samples÷CtbSizeY)*Ceil(pic_height_max_in_luma_samples÷CtbSizeY)–1 (inclusive). If it does not exist, the value of `sps_num_subpics_minus1` is inferred to be 0.

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

[0200] `subpic_ctu_top_left_x[i]` specifies the horizontal position of the top left 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.

[0201] `subpic_ctu_top_left_y[i]` specifies the vertical position of the top left CTU of the i-th subpicture, in units of `CtbSizeY`. The syntax element has a length of `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.

[0202] `subpic_width_minus1[i]` incremented by 1 specifies the width of the i-th sub-image 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`.

[0203] `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`.

[0204] A subpic_treated_as_pic_flag[i] equal to 1 indicates that the i-th subpic of each encoded / decoded image in CLVS is treated as an image excluded from loop filtering during decoding. A subpic_treated_as_pic_flag[i] equal to 0 indicates that the i-th subpic of each encoded / decoded image in CLVS is not treated as an image excluded from loop filtering during decoding. When it does not exist, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to sps_independent_subpics_flag.

[0205] When subpic_treated_as_pic_flag[i] equals 1, the requirement for bitstream consistency 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:

[0206] --All images in the output layer and its reference layer should have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.

[0207] --For each j value 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 sps_num_subpics_minus1 value, and should have the same subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], and loop_filter_cross_subpic_enabled_flag[j] values ​​respectively.

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

[0209] A value of 1 for `loop_filter_across_subpic_enabled_flag[i]` indicates that loop filtering can be performed across the boundary of the i-th subpic in each codec image of CLVS. A value of 0 for `loop_filter_across_subpic_enabled_flag[i]` indicates that loop filtering is not performed across the boundary of the i-th subpic in each codec image of CLVS. When it does not exist, the value of `loop_filter_across_subpic_enabled_pic_flag[i]` is inferred to be equal to 1 - `sps_independent_subpics_flag`.

[0210] The requirement for bitstream consistency is that the shape of sub-pictures should be such that each sub-picture, when decoded, should have its entire left boundary and entire top boundary, which consist of the picture boundary or the boundaries of previously decoded sub-pictures.

[0211] 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`.

[0212] A subpic_id_mapping_explicitly_signaled_flag value of 1 indicates that the subpicture ID mapping is explicitly signaled in the SPS or in the PPS referenced by the CLVS encoder / decoder image. A subpic_id_mapping_explicitly_signaled_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_signaled_flag is inferred to be 0.

[0213] A subpic_id_mapping_in_sps_flag value of 1 indicates that when subpic_id_mapping_explicitly_signaled_flag is 1, signaling notification of the subpic ID mapping is performed in the SPS. A subpic_id_mapping_in_sps_flag value of 0 indicates that when subpic_id_mapping_explicitly_signaled_flag is 1, signaling notification of the subpic ID mapping is performed in the PPS referenced by the CLVS encoding / decoding image.

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

[0215] bit_depth_minus8 specifies the bit depth BitDepth of the luma and chroma array samples, as well as the value of the range offset QpBdOffset for the luma and chroma quantization parameters, as shown below:

[0216] BitDepth=8+bit_depth_minus8 (45)

[0217] QpBdOffset=6*bit_depth_minus8 (46)

[0218] bit_depth_minus8 should be in the range of 0 to 8 (inclusive).

[0219] `sps_entropy_coding_sync_enabled_flag` equal to 1 specifies that a specific synchronization procedure of the context variable is called before the CTU of the first CTB of a line of CTB in each slice of each picture including the reference SPS, and after the CTU of the first CTB of a line of CTB in each slice of each picture including the reference SPS. `sps_entropy_coding_sync_enabled_flag` equal to 0 specifies that the specific synchronization procedure of the context variable does not need to be called before the CTU of the first CTB of a line of CTB in each slice of each picture including the reference SPS, and after the CTU of the first CTB of a line of CTB in each slice of each picture including the reference SPS.

[0220] A value of 1 for `sps_wpp_entry_point_offsets_present_flag` indicates that signaling notifications for entry point offsets of CTU lines can exist in the strip header of the reference SPS image when `sps_entropy_coding_sync_enabled_flag` is 1. A value of 0 for `sps_wpp_entry_point_offsets_present_flag` indicates that signaling notifications for entry point offsets of CTU lines do not exist in the strip header of the reference SPS image. When not present, the value of `sps_wpp_entry_point_offsets_present_flag` is inferred to be 0.

[0221] A value of 1 for `sps_weighted_pred_flag` indicates that weighted predictions can be applied to the P-bands of the reference SPS. A value of 0 for `sps_weighted_pred_flag` indicates that weighted predictions cannot be applied to the P-bands of the reference SPS.

[0222] A value of 1 for `sps_weighted_bipred_flag` indicates that explicit weighted prediction can be applied to the B-bands of the reference SPS. A value of 0 for `sps_weighted_bipred_flag` indicates that explicit weighted prediction cannot be applied to the B-bands of the reference SPS.

[0223] log2_max_pic_order_cnt_lsb_minus4 specifies the value of the variable MaxPicOrderCntLsb used in the decoding process of image order counting, as shown below:

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

[0225] The value of log2_max_pic_order_cnt_lsb_minus4 should be in the range of 0 to 12 (inclusive).

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

[0227] Incrementing 1 by 1 specifies the length (in bits) of the poc_msb_val syntax element when it exists in the PH of the reference SPS. The value of poc_msb_len_minus1 should be in the range of 0 to 32 - log2_max_pic_order_cnt_lsb_minus4–5 (inclusive).

[0228] `num_extra_ph_bits_bytes` specifies the number of bytes of extra bits in the PH syntax structure of the SPS-encoded image. In bitstreams conforming to this version of the specification, the value of `num_extra_ph_bits_bytes` should be equal to 0. 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 `num_extra_ph_bits_bytes` equal to 1 or 2 to appear in the syntax.

[0229] `num_extra_sh_bits_bytes` specifies the number of extra bits in the stripe header of the SPS-encoded image. In bitstreams conforming to this version of the specification, the value of `num_extra_sh_bits_bytes` should be equal to 0. 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.

[0230] `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.

[0231] A long_term_ref_pics_flag value of 0 indicates that no LTRP is used for inter-frame prediction of any codec picture 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.

[0232] `inter_layer_ref_pics_present_flag` equal to 0 indicates that no ILRP is used for inter-frame prediction of any codec picture 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 pictures 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.]

[0233] A value of 1 for `sps_idr_rpl_present_flag` indicates that the reference image list syntax element exists in the bar header of the IDR image. A value of 0 for `sps_idr_rpl_present_flag` indicates that the reference image list syntax element does not exist in the bar header of the IDR image.

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

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

[0236] --For rplsIdx ranging from 0 to num_ref_pic_lists_in_sps[0]-1, 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).

[0237] num_ref_pic_lists_in_sps[i] specifies the number of ref_pic_list_struct(listIdx, rplsIdx) syntax structures in the SPS whose listIdx is equal to i. The value of num_ref_pic_lists_in_sps[i] should be in the range of 0 to 64 (inclusive).

[0238] Note 4 – For each value of listIdx (equal to 0 or 1), the decoder should allocate memory for a total of num_ref_pic_list_struct(listIdx, rplsIdx) syntax structures, since there may be a ref_pic_list_struct(listIdx, rplsIdx) syntax structure that is signaled directly in the stripe header of the current picture.

[0239] A value of 1 for `qtbtt_dual_tree_intra_flag` indicates that, for I-stripes, each CTU is partitioned 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. A value of 0 for `qtbtt_dual_tree_intra_flag` indicates 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.

[0240] The value of log2_min_luma_coding_block_size_minus2 plus 2 specifies the minimum luminance 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).

[0241] The variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC, and Vsize are exported as follows:

[0242] MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2 (48)

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

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

[0245] IbcBufWidthC=IbcBufWidthY / SubWidthC (51)

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

[0247] The value of MinCbSizeY should be less than or equal to VSize.

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

[0249] --If chroma_format_idc equals 0 (monochrome) or separate_colour_plane_flag equals 1, then CtbWidthC and CtbHeightC both equal 0.

[0250] --Otherwise, CtbWidthC and CtbHeightC are exported as follows:

[0251] CtbWidthC=CtbSizeY / SubWidthC (53)

[0252] CtbHeightC=CtbSizeY / SubHeightC (54)

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

[0254] For log2BlockWidth ranging from 0 to 6 (including the end values) and log2BlockHeight ranging from 0 to 6 (including the end values), call the initialization process of the horizontal and vertical traversal scan order arrays as specified in Clause 6.5.3, where 1 << log2BlockWidth and 1 << log2BlockHeight are used as inputs, and the outputs are respectively assigned to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].

[0255] That partition_constraints_override_enabled_flag equals 1 specifies the presence of partition_constraints_override_flag in the PH of the reference SPS. That partition_constraints_override_enabled_flag equals 0 specifies the absence of partition_constraints_override_flag in the PH of the reference SPS.

[0256] `sps_log2_diff_min_qt_min_cb_intra_slice_luma` specifies the base-2 logarithm of the minimum size of the luminance samples of the luminance leaf blocks generated by the quadtree partitioning of the CTU, and the base-2 logarithm of the minimum decoder block size of the luminance samples of the luminance CUs 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_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 minimum size of the luminance samples of the luminance leaf blocks generated by the quadtree partitioning of the CTU is derived as follows:

[0257] MinQtLog2SizeIntraY=sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY (55)

[0258] `sps_max_mtt_hierarchy_depth_intra_slice_luma` specifies the default maximum hierarchical depth of a codec unit, which is generated by a multi-type tree partitioning of quad-leaf trees in a slice of reference SPS with slice_type equal to 2(I). When `partition_constraints_override_enabled_flag` is equal to 1, the default maximum hierarchical depth can be overridden by `ph_max_mtt_hierarchy_depth_intra_slice_luma`, which exists in the reference SPS's PH. The value of `sps_max_mtt_hierarchy_depth_intra_slice_luma` should be in the range 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY) (inclusive).

[0259] `sps_log2_diff_max_bt_min_qt_intra_slice_luma` specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luminance samples of a luminance codec block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum size (width or height) of the luminance samples of a luminance leaf block resulting from a quadtree partition of a CTU of 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` present 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.

[0260] `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 of a luminance codec block that can be partitioned using ternary partitioning and the base-2 logarithm of the minimum size (width or height) of the luminance samples of a luminance leaf block resulting from a quadtree partition of the CTU 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 difference can be overridden by `ph_log2_diff_max_tt_min_qt_luma` present in the PH of the reference SPS. The value of `sps_log2_diff_max_tt_min_qt_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.

[0261] `sps_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 by the quadtree partitioning of the CTU, and the base-2 logarithm of the minimum luminance codec block size of the luminance samples in the luminance CUs of 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 minimum size of the luminance samples in the luminance leaf blocks generated by the quadtree partitioning of the CTU is derived as follows:

[0262] MinQtLog2SizeInterY=sps_log2_diff_min_qt_min_cb_inter_slice+MinCbLog2SizeY (56)

[0263] `sps_max_mtt_hierarchy_depth_inter_slice` specifies the default maximum hierarchical depth of the encoding / decoding unit generated by multi-type tree partitioning of quadtree leaves of stripes 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` present 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).

[0264] `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 a luminance codec block that can be partitioned using binary partitioning, and the base-2 logarithm of the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of the CTU 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 difference can be overridden by `ph_log2_diff_max_bt_min_qt_luma` present in the PH of the reference SPS. The value of `sps_log2_diff_max_bt_min_qt_inter_slice` 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.

[0265] `sps_log2_diff_max_tt_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 partitioned using ternary partitioning, and the base-2 logarithm of the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of the CTU 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 difference can be overridden by `ph_log2_diff_max_tt_min_qt_luma` present in the PH of the reference SPS. The value of `sps_log2_diff_max_tt_min_qt_inter_slice` 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.

[0266] `sps_log2_diff_min_qt_min_cb_intra_slice_chroma` specifies the base-2 logarithm of the minimum size of the luminance samples of the chroma leaf blocks generated by partitioning a quadtree of chroma CTUs with `treeType` equal to `DUAL_TREE_CHROMA`, and the base-2 logarithm of the minimum size of the luminance samples of the chroma CUs with `treeType` equal to `DUAL_TREE_CHROMA` in a 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 `ph_log2_diff_min_qt_min_cb_chroma` present in the reference SPS's PH. 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 minimum size of the luminance samples of the chroma leaf blocks generated by the quadtree partitioning of the CTU with `treeType` equal to `DUAL_TREE_CHROMA` is derived as follows:

[0267] MinQtLog2SizeIntraC=sps_log2_diff_min_qt_min_cb_intra_slice_chroma+MinCbLog2SizeY (57)

[0268] `sps_max_mtt_hierarchy_depth_intra_slice_chroma` specifies the default maximum hierarchical depth of the chroma codec unit generated by multi-type tree partitioning of chroma quadtree leaves with `treeType` equal to `DUAL_TREE_CHROMA` in a slice with `slice_type` equal to 2(I) of the reference SPS. When `partition_constraints_override_enabled_flag` equals 1, the default maximum hierarchical depth can be overridden by `ph_max_mtt_hierarchy_depth_chroma` present in the `ph` of the reference SPS. The value of `sps_max_mtt_hierarchy_depth_intra_slice_chroma` 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.

[0269] `sps_log2_diff_max_bt_min_qt_intra_slice_chroma` specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luminance samples of a chroma codec block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum size (width or height) of the luminance samples of a chroma leaf block resulting from a quadtree partition of a chroma CTU with `treeType` equal to `DUAL_TREE_CHROMA` in a slice of reference SPS with `slice_type` equal to 2(I). When `partition_constraints_override_enabled_flag` equals 1, the default difference can be overridden by `ph_log2_diff_max_bt_min_qt_chroma` present in the reference SPS's `PH`. The value of `sps_log2_diff_max_bt_min_qt_intra_slice_chroma` should be in 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.

[0270] `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 of a chroma codec block that can be partitioned using ternary partitioning, and the base-2 logarithm of the minimum size (width or height) of the luminance samples of a chroma leaf block resulting from a quadtree partition of a chroma CTU with `treeType` equal to `DUAL_TREE_CHROMA` in a slice of reference SPS with `slice_type` equal to 2(I). When `partition_constraints_override_enabled_flag` equals 1, the default difference can be overridden by `ph_log2_diff_max_tt_min_qt_chroma` present in the reference SPS's `PH`. The value of `sps_log2_diff_max_tt_min_qt_intra_slice_chroma` should be in 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.

[0271] A value of 1 for sps_max_luma_transform_size_64_flag indicates that the maximum transformation size of the luminance sample is 64. A value of 0 for sps_max_luma_transform_size_64_flag indicates that the maximum transformation size of the luminance sample is 32.

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

[0273] The variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, and MaxTbSizeY are exported as follows:

[0274] MinTbLog2SizeY=2 (58)

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

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

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

[0278] A value of 0 for `sps_joint_cbcr_enabled_flag` disables joint encoding and decoding of chroma residuals. A value of 1 for `sps_joint_cbcr_enabled_flag` enables joint encoding and decoding of chroma residuals. When `sps_joint_cbcr_enabled_flag` does not exist, its value is inferred to be 0.

[0279] A value of `same_qp_table_for_chroma` equal to 1 indicates that only one chroma QP map table is signaled, and when `sps_joint_cbcr_enabled_flag` equals 1, this table applies to the Cb and Cr residuals, as well as the joint Cb-Cr residual. A value of `same_qp_table_for_chroma` equal to 0 indicates that when `sps_joint_cbcr_enabled_flag` equals 1, the chroma QP map table is signaled in the SPS, two for Cb and Cr, and one for the joint Cb-Cr. When `same_qp_table_for_chroma` is not present in the bitstream, its value is inferred to be 1.

[0280] The value of qp_table_start_minus26[i] plus 26 specifies the starting luminance and chrominance QP used to describe the i-th chrominance 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 equal to 0.

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

[0282] delta_qp_in_val_minus1[i][j] specifies the increment value of the input coordinates used to derive the j-th pivot point of the i-th chroma QP map. When delta_qp_in_val_minus1[0][j] does not exist in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.

[0283] delta_qp_diff_val[i][j] specifies the incremental value used to derive the output coordinates of the j-th pivot point of the i-th chromaticity QP mapping table.

[0284] For the i-th chroma QP mapping table ChromaQpTable[i] of i = 0..numQpTables–1, the following is derived:

[0285]

[0286]

[0287] When same_qp_table_for_chroma equals 1, for k in the range of -QpBdOffset to 63 (inclusive), ChromaQpTable[1][k] and ChromaQpTable[2][k] are set to equal ChromaQpTable[0][k].

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

[0289] A value of 1 for `sps_sao_enabled_flag` indicates that the sample adaptive offset process is applied to the reconstructed image after the deblocking filtering process. A value of 0 for `sps_sao_enabled_flag` indicates that the sample adaptive offset process is not applied to the reconstructed image after the deblocking filtering process.

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

[0291] 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 is enabled.

[0292] A value of 1 for `sps_transform_skip_enabled_flag` indicates that `transform_skip_flag` can exist in the transform unit syntax. A value of 0 for `sps_transform_skip_enabled_flag` indicates that `transform_skip_flag` does not exist in the transform unit syntax.

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

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

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

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

[0297] A value of 1 for `sps_temporal_mvp_enabled_flag` indicates that the temporal motion vector predictor can be used in CLVS. A value of 0 for `sps_temporal_mvp_enabled_flag` indicates that the temporal motion vector predictor is not used in CLVS.

[0298] A `sps_sbtmvp_enabled_flag` value of 1 indicates that a sub-block-based temporal motion vector predictor can be used to decode images with all slices in CLVS whose `slice_type` is not equal to `I`. A `sps_sbtmvp_enabled_flag` value of 0 indicates that a sub-block-based temporal motion vector predictor is not used in CLVS. When `sps_sbtmvp_enabled_flag` is not present, it is inferred to be equal to 0.

[0299] A value of 1 for `sps_amvr_enabled_flag` specifies that adaptive motion vector differential resolution is used in motion vector encoding and decoding. A value of 0 for `amvr_enabled_flag` specifies that adaptive motion vector differential resolution is not used in motion vector encoding and decoding.

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

[0301] A value of 1 for `sps_bdof_pic_present_flag` indicates that `ph_disable_bdof_flag` exists in the PH of the reference SPS. A value of 0 for `sps_bdof_pic_present_flag` 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.

[0302] A value of 1 for sps_smvd_enabled_flag indicates that symmetric motion vector difference can be used in motion vector decoding. A value of 0 for sps_smvd_enabled_flag indicates that symmetric motion vector difference is not used in motion vector encoding and decoding.

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

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

[0305] A value of 1 for sps_mmvd_enabled_flag indicates that merge mode with motion vector difference is enabled. A value of 0 for sps_mmvd_enabled_flag indicates that merge mode with motion vector difference is disabled.

[0306] A value of 1 for sps_isp_enabled_flag indicates that intra-prediction with sub-segmentation is enabled. A value of 0 for sps_isp_enabled_flag indicates that intra-prediction with sub-segmentation is disabled.

[0307] A value of 1 for sps_mrl_enabled_flag indicates that intra-prediction with multiple reference lines is enabled. A value of 0 for sps_mrl_enabled_flag indicates that intra-prediction with multiple reference lines is disabled.

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

[0309] A value of 0 for `sps_cclm_enabled_flag` disables intra-frame prediction for the cross-component linear model from the luma component to the chroma component. A value of 1 for `sps_cclm_enabled_flag` enables intra-frame prediction for the cross-component linear model from the luma component to the chroma component. When `sps_cclm_enabled_flag` is not present, it is inferred to be equal to 0.

[0310] A value of 1 for `sps_chroma_horizontal_collocated_flag` indicates that the prediction process operates in a manner designed for chroma sample positions that are not horizontally shifted relative to the corresponding luminance sample position. A value of 0 for `sps_chroma_horizontal_collocated_flag` indicates that the prediction process operates in a manner designed 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.

[0311] A value of 1 for `sps_chroma_vertical_collocated_flag` indicates that the prediction process operates in a manner designed for chroma sample positions that are not vertically shifted relative to the corresponding luminance sample position. A value of 0 for `sps_chroma_vertical_collocated_flag` indicates that the prediction process operates in a manner designed for chroma sample positions that are shifted downwards by 0.5 luminance samples relative to the corresponding luminance sample position. When `sps_chroma_vertical_collocated_flag` is absent, it is inferred to be equal to 1.

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

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

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

[0315] The value of six_minus_max_num_merge_cand specifies the maximum number of merging 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).

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

[0317] MaxNumMergeCand=6-six_minus_max_num_merge_cand (63)

[0318] A value of 0 for sps_sbt_enabled_flag disables subblock transform for inter-frame prediction CUs. A value of 1 for sps_sbt_enabled_flag enables subblock transform for inter-frame prediction CUs.

[0319] `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 affine-based motion compensation is not used in CLVS, and `inter_affine_flag` and `cu_affine_type_flag` do not exist in the CLVS codec unit syntax. Otherwise (`sps_affine_enabled_flag` equals 1), affine-based motion compensation can be used in CLVS.

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

[0321] `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 so that motion compensation based on a 6-parameter affine model is not 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.

[0322] A value of 1 for `sps_affine_amvr_enabled_flag` specifies that adaptive motion vector difference resolution is used in motion vector encoding and decoding in affine inter-frame mode. A value of 0 for `sps_affine_amvr_enabled_flag` specifies that adaptive motion vector difference resolution is not used in 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.

[0323] `sps_affine_prof_enabled_flag` specifies whether affine motion compensation can be performed using optical flow prediction refinement. If `sps_affine_prof_enabled_flag` equals 0, affine motion compensation will not use optical flow refinement. Otherwise (`sps_affine_prof_enabled_flag` equals 1), affine motion compensation can use optical flow refinement. When it does not exist, the value of `sps_affine_prof_enabled_flag` is inferred to be 0.

[0324] A value of 1 for `sps_prof_pic_present_flag` indicates that `ph_disable_prof_flag` exists in the PH of the reference SPS. A value of 0 for `sps_prof_pic_present_flag` 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.

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

[0326] A `sps_act_enabled_flag` value of 1 indicates that adaptive color transformation can be used, and `cu_act_enabled_flag` can exist in the codec unit syntax. A `sps_act_enabled_flag` value of 0 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.

[0327] min_qp_prime_ts_minus4 specifies the minimum allowed quantization parameters for the transform skip mode, as shown below:

[0328] QpPrimeTsMin=4+min_qp_prime_ts_minus4 (64)

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

[0330] `sps_bcw_enabled_flag` specifies whether bidirectional prediction with 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 with 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 with CU weights can be used in CLVS.

[0331] `sps_ibc_enabled_flag` equal to 1 indicates that the IBC prediction mode can be used for image decoding 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.

[0332] `six_minus_max_num_ibc_merge_cand` 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). The maximum number of IBC merging BVP candidates, `MaxNumIbcMergeCand`, is derived as follows:

[0333]

[0334] `sps_ciip_enabled_flag` specifies that `ciip_flag` can exist in the codec unit syntax of the inter-frame codec unit. `sps_ciip_enabled_flag` equal to 0 specifies that `ciip_flag` does not exist in the codec unit syntax of the inter-frame codec unit.

[0335] A value of 1 for sps_fpel_mmvd_enabled_flag specifies that merge mode with motion vector difference uses integer sample precision. A value of 0 for sps_fpel_mmvd_enabled_flag specifies that merge mode with motion vector difference can use fractional sample precision.

[0336] `sps_gpm_enabled_flag` specifies whether segmentation-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 segmentation-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 segmentation-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.

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

[0338] The maximum number of candidate geometric segmentation merge patterns, MaxNumGpmMergeCand, is derived as follows:

[0339]

[0340] The value of MaxNumGpmMergeCand should be in the range of 2 to MaxNumMergeCand (inclusive).

[0341] A value of 1 for `sps_lmcs_enabled_flag` specifies that a luma map with chroma scaling is used in CLVS. A value of 0 for `sps_lmcs_enabled_flag` specifies that a luma map with chroma scaling is not used in CLVS.

[0342] A value of 1 for sps_lfnst_enabled_flag indicates that lfnst_idx may 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.

[0343] sps_ladf_enabled_flag equals 1, indicating 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.

[0344] Increasing 1 to sps_num_ladf_intervals_minus2 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).

[0345] The `sps_ladf_lowest_interval_qp_offset` specification is used to derive the offset of the variable `qP` as defined 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).

[0346] sps_ladf_qp_offset[i] specifies the offset array used to derive the variable qP as defined in Clause 8.8.3.6.1. The value of sps_ladf_qp_offset[i] should be in the range of -63 to 63 (inclusive).

[0347] `sps_ladf_delta_threshold_minus1[i]` is used to calculate the value of `SpsLadfIntervalLowerBound[i]`, which specifies the lower limit of the interval for the i-th luminance intensity level. The value of `sps_ladf_delta_threshold_minus1[i]` should be between 0 and 2. BitDepth The range is -3 (inclusive).

[0348] The value of SpsLadfIntervalLowerBound[0] is set to 0.

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

[0350] SpsLadfIntervalLowerBound[i+1]=SpsLadfIntervalLowerBound[i] (67)+sps_ladf_delta_threshold_minus1[i]+1

[0351] The increment of 2 in `log2_parallel_merge_level_minus2` specifies the value of the variable `Log2ParMrgLevel`, which is used in the derivation process of spatial merge candidates as specified in Clause 8.5.2.3, the derivation process of motion vectors and reference indices in the sub-block merge mode as specified in Clause 8.5.5.2, and controls the invocation of the update process for the history-based motion vector predictor 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 derivation of the variable `Log2ParMrgLevel` is as follows:

[0352] Log2ParMrgLevel=log2_parallel_merge_level_minus2+2 (68)

[0353] A value of 1 for `sps_scaling_list_enabled_flag` indicates that the scaling list is used in the scaling process of the transformation coefficients. A value of 0 for `sps_scaling_list_enabled_flag` indicates that the scaling list is not used in the scaling process of the transformation coefficients.

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

[0355] A value of 0 for `sps_sign_data_hiding_enabled_flag` disables sign bit hiding for the reference SPS image. A value of 1 for `sps_sign_data_hiding_enabled_flag` enables sign 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.

[0356] A `sps_virtual_boundaries_enabled_flag` value of 1 indicates that loop filtering across virtual boundaries can be disabled in CLVS-encoded images. A `sps_virtual_boundaries_enabled_flag` value of 0 indicates that loop filtering across virtual boundaries is not disabled in CLVS-encoded images. Loop filtering operations include deblocking filters, sample adaptive offset filters, and adaptive loop filter operations.

[0357] `sps_virtual_boundaries_present_flag` equal to 1 specifies that signaling information about virtual boundaries is provided in the SPS. `sps_virtual_boundaries_present_flag` equal to 0 specifies that signaling information about virtual boundaries is not provided in the SPS. When one or more virtual boundaries are signaled in the SPS, loop filtering operations are disabled across virtual boundaries in the reference SPS image. Loop filtering operations include deblocking filters, sample adaptive offset filters, and adaptive loop filter operations.

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

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

[0360] `sps_virtual_boundaries_pos_x[i]` specifies the position of the i-th vertical virtual boundary, divided by 8 luminance samples. 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.]

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

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

[0363] `sps_virtual_boundaries_pos_y[i]` specifies the position of the i-th horizontal virtual boundary, divided by 8 luminance samples. 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.]

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

[0365] A value of 1 for `sps_sublayer_cpb_params_present_flag` specifies that the syntax structure `old_hrd_parameters()` in the SPS RBSP includes HRD parameters for sublayer representations with TemporalId ranging from 0 to `sps_max_sublayers_minus1` (inclusive). A value of 0 for `sps_sublayer_cpb_params_present_flag` specifies that the syntax structure `ols_hrd_parameters()` in the SPS RBSP includes only HRD parameters for sublayer representations with TemporalId equal to `sps_max_sublayers_minus1`. When `sps_max_sublayers_minus1` equals 0, the value of `sps_sublayer_cpb_params_present_flag` is inferred to be 0.

[0366] When `sps_sublayer_cpb_params_present_flag` equals 0, the HRD parameters of sublayer representations with `TemporalId` in the range of 0 to `sps_max_sublayers_minus1-1` (inclusive) are inferred to be the same as the HRD parameters of sublayer representations 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.

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

[0368] When field_seq_flag equals 1, a Frame Field Information (SEI) message should exist for each encoded / decoded image in CLVS.

[0369] Note 5 – The specified decoding process does not treat the images representing fields or frames differently. Therefore, a sequence of images representing fields will be encoded and decoded using the image dimensions of a single field. 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 50Hz and 60Hz), rather than the source frame rate (typically between 25Hz and 30Hz).

[0370] A value of 1 for `vui_parameters_present_flag` indicates that the syntax structure `vui_parameters()` exists within the SPSRBSP syntax structure. A value of 0 for `vui_parameters_present_flag` indicates that the syntax structure `vui_parameters()` does not exist within the SPSRBSP syntax structure.

[0371] A value of 0 for sps_extension_flag indicates that the sps_extension_data_flag syntax element does not exist 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.

[0372] The `sps_extension_data_flag` flag can have any value. Its presence and value do not affect the consistency of the decoder with 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.

[0373] 3.1. PPS Syntax and Semantics

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

[0375]

[0376]

[0377]

[0378]

[0379]

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

[0381] All PPS NAL cells within a PU that have a specific value for pps_pic_parameter_set_id should have the same content.

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

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

[0384] Let ppsLayerId be the value of numh_layer_id for a specific PPS NAL cell, and vclLayerId be the value of numh_layer_id for a specific VCL NAL cell. A specific VCL NAL cell should not refer to a specific PPS NAL cell unless a layer whose ppsLayerId is less than or equal to vclLayerId and whose nuh_layer_id is equal to ppsLayerId is contained in at least one OLS that includes layers whose nuh_layer_id is equal to vclLayerId.

[0385] The `pps_seq_parameter_set_id` parameter 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 PPSs referenced by the codec image in CLVS.

[0386] A mixed_nalu_types_in_pic_flag value of 1 indicates that each image in the reference PPS has multiple VCLNAL units, the VCLNAL units do not have the same nal_unit_type value, and the image is not an IRAP image. A mixed_nalu_types_in_pic_flag value of 0 indicates that each image in the reference PPS has one or more VCL NAL units, and the VCL NAL units of each image in the reference PPS have the same nal_unit_type value.

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

[0388] For each stripe in image picA that has a nal_unit_type value nalUnitTypeA in the range IDR_W_RADL to CRA_NUT (inclusive), and image picA 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 image picA is equal to 1), the following applies:

[0389] - The stripe should belong to the subpicA whose corresponding subpic_treated_as_pic_flag[i] value is 1.

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

[0391] - If nalUnitTypeA equals CRA, then for all subsequent PUs in CLVS that are after the current picture in the decoding and output order, neither RefPicList[0] nor RefPicList[1] of the stripes in subpicA of these PUs should be included in any picture in the active entry that is before picA in the decoding order.

[0392] - Otherwise (i.e., nalUnitTypeA equals IDR_W_RADL or IDR_N_LP), for all PUs in CLVS that are after the current picture in the decoding order, neither RefPicList[0] nor RefPicList[1] of the stripes in subpicA of these PUs should be included in any picture in the active entry that is before picA in the decoding order.

[0393] Note 1 – `mixed_nalu_types_in_pic_flag` equal to 1 indicates that the reference PPS image contains stripes with different NAL unit types, for example, codec images derived from sub-picture bitstream merge operations. The encoder must ensure that the bitstream structure matches and further aligns the parameters of the original bitstream. An example of this 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`.

[0394] `pic_width_in_luma_samples` specifies the width of each decoded image referenced in 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`.

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

[0396] `pic_height_in_luma_samples` specifies the height of each decoded image referenced to the PPS, in units of luminance samples. `pic_height_in_luma_samples` should not be equal to 0 and should be an integer multiple of `Max(8, MinCbSizeY)`, and should be less than or equal to `pic_height_max_in_luma_samples`.

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

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

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

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

[0401] PicSizeInCtbsY=PicWidthInCtbsY*PicHeightInCtbsY (71)

[0402] PicWidthInMinCbsY=pic_width_in_luma_samples / MinCbSizeY (72)

[0403] PicHeightInMinCbsY=pic_height_in_luma_samples / MinCbSizeY (73)

[0404] PicSizeInMinCbsY=PicWidthInMinCbsY*PicHeightInMinCbsY (74)

[0405] PicSizeInSamplesY=pic_width_in_luma_samples*pic_height_in_luma_samples(75)

[0406] PicWidthInSamplesC=pic_width_in_luma_samples / SubWidthC (76)

[0407] PicHeightInSamplesC=pic_height_in_luma_samples / SubHeightC (77)

[0408] A pps_conformance_window_flag value of 1 indicates that the consistency trimming window offset parameter immediately follows in PPS. A pps_conformance_window_flag value of 0 indicates that the consistency trimming window offset parameter does not exist in PPS.

[0409] `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, outputting them according to the rectangular region specified in the image coordinates. 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.

[0410] The consistent cropping window contains luminance samples, where the horizontal image coordinates range from SubWidthC*pps_conf_win_left_offset to pic_width_in_luma_samples-(SubWidthC*pps_conf_win_right_offset+1), and the vertical image coordinates range from SubHeightC*pps_conf_win_top_offset to pic_height_in_luma_samples-(SubHeightC*pps_conf_win_bottom_offset+1), including end values.

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

[0412] 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 brightness sample point.

[0413] Note 2 – The consistent cropping window offset parameter applies only to the output. All internal decoding processes are applied to the uncropped image size.

[0414] Assume ppsA and ppsB are any two PPSs referencing the same SPS. The requirement for bitstream consistency is that when ppsA and ppsB have the same pic_width_in_luma_samples and pic_height_in_luma_samples values, respectively, ppsA and ppsB should also have the same pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset values, respectively.

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

[0416] A scaling_window_explicit_signaling_flag value of 1 indicates that the scaling window offset parameter exists in the PPS. A scaling_window_explicit_signaling_flag value of 0 indicates that the scaling window offset parameter does not exist in the PPS. When res_change_in_clvs_allowed_flag is equal to 0, the value of scaling_window_explicit_signaling_flag should be equal to 0.

[0417] `scaling_win_left_offset`, `scaling_win_right_offset`, `scaling_win_top_offset`, and `scaling_win_bottom_offset` specify the offsets of the image size applied to the scaling calculation. When these values ​​are not present, they 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.

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

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

[0420] PicOutputWidthL=pic_width_in_luma_samples- (78)

[0421] SubWidthC*(scaling_win_right_offset+scaling_win_left_offset)

[0422] PicOutputHeightL=pic_height_in_luma_samples- (79)

[0423] SubWidthC*(scaling_win_bottom_offset+scaling_win_top_offset)

[0424] Assume that refPicOutputWidthL and refPicOutputHeightL are the PicOutputWidthL and PicOutputHeightL of the reference image to the current image of this PPS, respectively. Bitstream consistency requires that all of the following conditions be met:

[0425] –PicOutputWidthL*2 should be greater than or equal to refPicWidthInLumaSamples.

[0426] –PicOutputHeightL*2 should be greater than or equal to refPicHeightInLumaSamples.

[0427] –PicOutputWidthL should be less than or equal to refPicWidthInLumaSamples*8.

[0428] –PicOutputHeightL should be less than or equal to refPicHeightInLumaSamples*8.

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

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

[0431] An output_flag_present_flag value of 1 indicates that the pic_output_flag syntax element exists in the header of the reference PPS. An output_flag_present_flag value of 0 indicates that the pic_output_flag syntax element does not exist in the header of the reference PPS.

[0432] `subpic_id_mapping_in_pps_flag` equal to 1 specifies that signaling notification of subpicture ID mapping is performed in the PPS. `subpic_id_mapping_in_pps_flag` equal to 0 specifies that signaling notification of 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.

[0433] pps_num_subpics_minus1 should be equal to sps_num_subpics_minus1.

[0434] pps_subpic_id_len_minus1 should be equal to sps_subpic_id_len_minus1.

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

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

[0437]

[0438] Bitstream consistency requires the application of the following two constraints:

[0439] --For any two distinct values ​​of i and j in the range from 0 to sps_num_subpics_minus1 (inclusive), SubpicIdVal[i] should not be equal to SubpicIdVal[j].

[0440] --When the current image is not the first image of CLVS, for each i value in the range of 0 to sps_num_subpics_minus1 (inclusive of end values), if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous image in the same layer in the 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 of IDR_W_RADL to CRA_NUT (inclusive of end values).

[0441] `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 multiple slices or strips.

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

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

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

[0445] The increment of 1 in `num_exp_tile_columns_minus1` specifies the number of explicitly provided tile column widths. 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.

[0446] The increment of 1 in `num_exp_tile_rows_minus1` specifies the number of explicitly provided tile row heights. 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 equal to 0.

[0447] `tile_column_width_minus1[i]` incremented by 1 specifies the width of the i-th tile column in CTB units, ranging from 0 to `num_exp_tile_columns_minus1-1` (inclusive). `tile_column_width_minus1[num_exp_tile_columns_minus1]` is used to derive 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 inferred to be equal to `PicWidthInCtbsY-1`.

[0448] `tile_row_height_minus1[i]` incremented by 1 specifies the height of the i-th slice row in CTB units, ranging from 0 to `num_exp_tile_rows_minus1-1` (inclusive). `tile_row_height_minus1[num_exp_tile_rows_minus1]` is used to derive the height of 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 from 0 to `PicHeightInCtbsY-1` (inclusive). When it does not exist, the value of `tile_row_height_minus1[0]` is inferred to be equal to `PicHeightInCtbsY-1`.

[0449] A `rect_slice_flag` value of 0 indicates that slices within each slice are in the 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.

[0450] A single_slice_per_subpic_flag value of 1 indicates that each subpicture consists of one and only one rectangular stripe. A single_slice_per_subpic_flag value of 0 indicates that each subpicture can consist of one or more rectangular stripes. When single_slice_per_subpic_flag is 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.

[0451] `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.

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

[0453] `slice_width_in_tiles_minus1[i]` incremented by 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).

[0454] The following applies when slice_width_in_tiles_minus1[i] does not exist:

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

[0456] --Otherwise, infer the value of slice_width_in_tiles_minus1[i] according to Clause 6.5.1.

[0457] `slice_height_in_tiles_minus1[i]` incremented by 1 specifies the height of the i-th rectangular strip in units of rows. The value of `slice_height_in_tiles_minus1[i]` should be in the range of 0 to NumTileRows–1 (inclusive).

[0458] The following applies when slice_height_in_tiles_minus1[i] does not exist:

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

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

[0461] `num_exp_slices_in_tile[i]` specifies the number of slice heights explicitly provided in the current slice containing multiple rectangular slices. 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 derived to be equal to 1.

[0462] The value of exp_slice_height_in_ctus_minus1[j], incremented by 1, specifies the height of the j-th rectangular stripe in the current slice, in units of CTU rows. The value of exp_slice_height_in_ctus_minus1[j] should be in the range of 0 to RowHeight[tileY] – 1 (inclusive), where tileY is the slice row index of the current slice.

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

[0464]

[0465] `tile_idx_delta[i]` specifies the difference between the tile index of the first piece in the i-th rectangular strip and the tile index of the first piece 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.

[0466] A `loop_filter_across_tiles_enabled_flag` value of 1 indicates that loop filtering operations can be performed across tile boundaries in the reference PPS image. A `loop_filter_cross_tiles_enabled_flag` value of 0 indicates that loop filtering operations are not performed across tile boundaries in the reference PPS image. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering operations. When it does not exist, the value of `loop_filter_cross_tiles_enabled_flag` is inferred to be equal to 1.

[0467] A `loop_filter_cross_slices_enabled_flag` value of 1 indicates that loop filtering operations can be performed across slice boundaries in the reference PPS image. A `loop_filter_cross_slice_enabled_flag` value of 0 indicates that loop filtering operations are not performed across slice boundaries in the reference PPS image. Loop filtering operations include deblocking filters, sample adaptive offset filters, and adaptive loop filter operations. When it does not exist, the value of `loop_filter_cross_slices_enabled_flag` is inferred to be 0.

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

[0469] Increment 1 by num_ref_idx_default_active_minus1[i]. When i equals 0, it specifies the inferred value of variable NumRefIdxActive[0] for P-strips or B-strips where num_ref_idx_active_override_flag equals 0. When i equals 1, it specifies the inferred value of NumRefIdxActive[1] for B-strips where num_ref_idx_active_override_flag equals 0. The value of num_ref_idx_default_active_minus1[i] should be in the range of 0 to 14 (inclusive).

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

[0471] init_qp_minus26 plus 26 specifies the SliceQp for each stripe of PPS. 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).

[0472] 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 PH of the reference PPS, and `cu_qp_delta_abs` may 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 PH of the reference PPS, and `cu_qp_delta_abs` does not exist in the transformation unit syntax.

[0473] A value of 1 for `pps_chroma_tool_offsets_present_flag` indicates the presence of syntax elements related to chroma tool offsets in the PPS RBSP syntax structure. A value of 0 for `pps_chroma_tool_offsets_present_flag` indicates the absence of such syntax elements in the PPS RBSP syntax structure. When `ChromaArrayType` equals 0, the value of `pps_chroma_tool_offsets_present_flag` should be 0.

[0474] pps_cb_qp_offset and pps_cr_qp_offset are respectively specified for exporting 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 during decoding, 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.

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

[0476] pps_joint_cbcr_qp_offset_value specifies the value used to export 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 during decoding, 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.

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

[0478] 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` may exist in the Transform Unit syntax and 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 the Transform Unit syntax and 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.

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

[0480] cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] respectively define Qp′ Cb Qp′ Cr and Qp′ CbCr The offsets used in the export. 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.

[0481] A value of 0 for pps_weighted_pred_flag indicates that weighted predictions should not be applied to the P-strips of the reference PPS. A value of 1 for pps_weighted_pred_flag indicates that weighted predictions should be applied to the P-strips of the reference PPS. When sps_weighted_pred_flag is equal to 0, the value of pps_weighted_pred_flag should also be 0.

[0482] A value of 0 for pps_weighted_bipred_flag indicates that explicit weighted predictions should not be applied to the B-strips of the reference PPS. A value of 1 for pps_weighted_bipred_flag indicates that explicit weighted predictions should be applied to the B-strips of the reference PPS. When sps_weighted_bipred_flag is equal to 0, the value of pps_weighted_bipred_flag should also be 0.

[0483] A deblocking filter control present flag of 1 indicates that the PPS contains a deblocking filter control syntax element. A deblocking filter control present flag of 0 indicates that the PPS does not contain a deblocking filter control syntax element.

[0484] A value of 1 for `deblocking_filter_override_enabled_flag` indicates that either `ph_deblocking_filter_override_flag` exists in the PH of the reference PPS, or `slice_deblocking_filter_override_flag` exists in the slice header of the reference PPS. A value of 0 for `deblocking_filter_override_enabled_flag` indicates that either `ph_deblocking_filter_override_flag` does not exist in the PH of the reference PPS, or `slice_deblocking_filter_override_flag` does not exist in the slice header of the reference PPS. When neither exists, the value of `deblocking_filter_override_enabled_flag` is inferred to be 0.

[0485] A value of 1 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation does not apply to slices referencing PPSs that do not have `slice_deblocking_filter_disabled_flag`. A value of 0 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation applies to slices referencing PPSs that do not have `slice_deblocking_filter_disabled_flag`. When it does not exist, the value of `pps_deblocking_filter_disabled_flag` is inferred to be 0.

[0486] `pps_beta_offset_div2` and `pps_tc_offset_div2` specify default deblocking parameter offsets for β and tC (divided by 2). These parameter offsets are applied to the luminance component of the reference PPS strip, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or 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.

[0487] `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2` specify default deblocking parameter offsets for β and tC (divided by 2). These parameter offsets are applied to the Cb component of the reference PPS strip, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or 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.

[0488] `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2` specify default deblocking parameter offsets for β and tC (divided by 2). These parameter offsets apply to the Cr component of the reference PPS strip, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or 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.

[0489] A value of 1 for `rpl_info_in_ph_flag` indicates that the reference image list information exists within the PH syntax structure, but not within the header of a PPS that does not contain a PH syntax structure. A value of 0 for `rpl_info_in_ph_flag` indicates that the reference image list information does not exist within the PH syntax structure, but may exist within the header of a PPS that does not contain a PH syntax structure.

[0490] A value of 1 for `dbf_info_in_ph_flag` indicates that the deblocking filter information exists within the PH syntax structure, but not in the strip header of a 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, but may exist in the strip header of a 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.

[0491] A `sao_info_in_ph_flag` value of 1 indicates that the SAO filter information exists within the PH syntax structure, but not within the strip header of a 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 within the PH syntax structure, but may exist within the strip header of a PPS that does not contain a PH syntax structure.

[0492] An alf_info_in_ph_flag value of 1 indicates that the ALF information exists within the PH syntax structure, but not within the strip header of a PPS that does not contain a PH syntax structure. An alf_info_in_ph_flag value of 0 indicates that the ALF information does not exist within the PH syntax structure, but may exist within the strip header of a PPS that does not contain a PH syntax structure.

[0493] A value of 1 for `wp_info_in_ph_flag` indicates that the weighted prediction information can exist within the PH syntax structure, but not in the strip header of a 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 within the PH syntax structure, but may exist in the strip header of a 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.

[0494] A value of 1 for `qp_delta_info_in_ph_flag` indicates that the QP incremental information exists within the PH syntax structure, but not within the strip header of a PPS that does not contain a PH syntax structure. A value of 0 for `qp_delta_info_in_ph_flag` indicates that the QP incremental information does not exist within the PH syntax structure, but may exist within the strip header of a PPS that does not contain a PH syntax structure.

[0495] `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.

[0496] The value of 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 within the range of 0 to (pic_width_in_luma_samples / MinCbSizeY) - (CtbSizeY / MinCbSizeY) - 2 (inclusive).

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

[0498] A picture_header_extension_present_flag value of 0 indicates that the PH extension syntax element does not exist in the PH of the reference PPS. A picture_header_extension_present_flag value of 1 indicates that the PH extension syntax element exists in the PH of the reference PPS. In bitstreams conforming to this version of the specification, picture_header_extension_present_flag should be equal to 0.

[0499] A slice_header_extension_present_flag value of 0 indicates that the slice header extension syntax element does not exist 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. In bitstreams conforming to this version of the specification, slice_header_extension_present_flag should be equal to 0.

[0500] A value of 0 for pps_extension_flag indicates that the pps_extension_data_flag syntax element does not exist 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.

[0501] The `pps_extension_data_flag` flag can have any value. Its presence and value do not affect the consistency of the decoder with 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.

[0502] 3.4. APS Syntax and Semantics

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

[0504]

[0505]

[0506] APS RBSP contains the ALF syntax structure, namely alf_data().

[0507]

[0508]

[0509]

[0510] APS RBSP contains the LMCS syntax structure, namely lmcs_data().

[0511]

[0512]

[0513] APS RBSP includes a scaling list data syntax structure, namely scaling_list_data().

[0514]

[0515]

[0516] 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 stripe being encoded or decoded, or provided by external means.

[0517] All APS NAL cells within the PU that have specific values ​​for adaptation_parameter_set_id and aps_params_type, regardless of whether they are prefix APS NAL cells or suffix APS NAL cells, should have the same content.

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

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

[0520] When aps_params_type equals LMCS_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 3 (inclusive).

[0521] 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 contained in at least one OLS containing a layer whose nuh_layer_id is equal to vclLayerId.

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

[0523] Table 6 – APS Parameter Type Codes and APS Parameter Types

[0524]

[0525] All APS NAL cells with a specific value of aps_params_type share the same value space for adaptation_parameter_set_id, regardless of the nuh_layer_id value. APS NAL cells with different values ​​of aps_params_type use a separate value space for adaptation_parameter_set_id.

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

[0527] Note 2 - The suffix APS NAL unit associated with a specific VCL NAL unit (which is before the suffix APS NAL unit in the decoding order) is not used by the specific VCL NAL unit, but is used by the VCL NAL unit that is after the suffix APS NAL unit in the decoding order.

[0528] An aps_extension_flag value of 0 indicates that the aps_extension_data_flag syntax element does not exist in the APS RBSP syntax structure. An aps_extension_flag value of 1 indicates that the aps_extension_data_flag syntax element exists in the APS RBSP syntax structure.

[0529] The `aps_extension_data_flag` flag can have any value. Its presence and value do not affect the decoder's consistency with the grade specified in this version of the specification. Decoders conforming to this version of the specification should ignore all `aps_extension_data_flag` syntax elements.

[0530] `alf_luma_filter_signal_flag` equal to 1 specifies a set of luminance filters for signaling notification. `alf_luma_filter_signal_flag` equal to 0 specifies a set of luminance filters for which no signaling notification is required.

[0531] An alf_chroma_filter_signal_flag value of 1 indicates that the chroma filter is signaled. An alf_chroma_filter_signal_flag value of 0 indicates that the chroma filter is not signaled. When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag should be equal to 0.

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

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

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

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

[0536] `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` in the range `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[filt idx]` 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 from 0 to `alf_luma_num_filters_signalled_minus1` (inclusive).

[0537] `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`. When `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).

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

[0539] --If alf_luma_coeff_sign[sfIdx][j] equals 0, then the corresponding luminance filter coefficient has

[0540] It has a positive value.

[0541] --Otherwise (alf_luma_coeff_sign[sfIdx][j] equals 1), the corresponding luminance filter coefficient has a negative value.

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

[0543] The variable filtCoeff[sfIdx][j] with sfIdx = 0..alf_luma_num_filters_signalled_minus1 and j = 0..11 is initialized as follows:

[0544] filtCoeff[sfIdx][j]=alf_luma_coeff_abs[sfIdx][j]* (93)(1-2*alf_luma_coeff_sign[sfIdx][j])

[0545] 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 exported as follows:

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

[0547] The fixed filter coefficients AlfFixFiltCoeff[i][j] for i = 0..64, j = 0..11 and the class-to-filter mapping AlfClassToFiltMap[m][n] for m = 0..15 and n = 0..24 are derived as follows:

[0548] AlfFixFiltCoeff= (95)

[0549] {

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

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

[0552] {0,0,0,0,0,0,0,1,0,0,0,0}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0614] },

[0615] AlfClassToFiltMap= (96)

[0616] {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0633] },

[0634] The requirement for bitstream consistency is that the AlfCoeff values ​​are filtIdx = 0..NumAlfFilters–1 and j = 0..11. L The value of [adaptation_parameter_set_id][filtIdx][j] should be in the range of -2. 7 Up to 2 7 The range is -1 (inclusive).

[0635] `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]` for `sfIdx = 0..alf_luma_num_filters_signalled_minus1` and `j = 0..11` should be in the range of 0 to 3 (inclusive).

[0636] The element AlfClip has filtIdx = 0..NumAlfFilters–1 and j = 0..11. L The luminance filter clipping value AlfClip in [adaptation_parameter_set_id][filtIdx][j]. L [adaptation_parameter_set_id] is derived from BitDepth and clipIdx, which are set to be equal to alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j], as specified in Table 8.

[0637] A value of 0 for `alf_chroma_clip_flag` indicates that a linear adaptive loop filter is applied to the chroma components; a value of 1 for `alf_chroma_clip_flag` indicates that a nonlinear adaptive loop filter is applied to the chroma components. When `alf_chroma_clip_flag` does not exist, it is inferred that `alf_chroma_clip_flag` is equal to 0.

[0638] The value of alf_chroma_num_alt_filters_minus1 plus 1 specifies the number of alternative filters for the chroma component. The value of alf_chroma_num_alt_filters_minus1 should be in the range of 0 to 7 (inclusive).

[0639] `alf_chroma_coeff_abs[altIdx][j]` specifies the absolute value of the j-th chroma filter coefficient of the candidate 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).

[0640] alf_chroma_coeff_sign[altIdx][j] specifies the sign of the j-th chroma filter coefficient of the candidate chroma filter with index altIdx, as follows:

[0641] --If alf_chroma_coeff_sign[altIdx][j] equals 0, then the corresponding chroma filter coefficient has a positive value.

[0642] --Otherwise (alf_chroma_coeff_sign[altIdx][j] equals 1), the corresponding chroma filter coefficients have negative values.

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

[0644] Having element AlfCoeff C The chromaticity filter coefficients AlfCoeff in [adaptation_parameter_set_id][altIdx][j] C The export of [adaptation_parameter_set_id][altIdx] (where altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5) is as follows:

[0645] AlfCoeff C [adaptation_parameter_set_id][altIdx][j]=alf_chroma_coeff_abs[altIdx][j]

[0646] *(1-2*alf_chroma_coeff_sign[altIdx][j])(97)

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

[0648] A value of 1 for `alf_cc_cb_filter_signal_flag` indicates that the cross-component filter for the Cb color component is signaled. A value of 0 for `alf_cc_cb_filter_signal_flag` indicates that the cross-component filter for the Cb color component is not signaled. When `ChromaArrayType` is 0, `alf_cc_cb_filter_signal_flag` should be 0.

[0649] Incrementing 1 by 1 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 component. 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 shown below:

[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] Cb color component CcAlfApsCoeff with j = 0..6 Cb The kth cross-component filter coefficient of the signaling notification in [adaptation_parameter_set_id][k][j] 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 equal 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] A value of 1 for `alf_cc_cr_filter_signal_flag` indicates that the cross-component filter for the Cr color component is signaled. A value of 0 for `alf_cc_cr_filter_signal_flag` indicates that the cross-component filter for the Cr color component is not signaled. When `ChromaArrayType` is 0, `alf_cc_cr_filter_signal_flag` should be 0.

[0659] Incrementing 1 by 1 specifies the number of cross-component filters for the Cr color component signaled in the current ALF APS. The value of alf_cc_cr_filters_signalled_minus1 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 shown below:

[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 for the k-th cross-component filter coefficient CcAlfApsCoeff for the Cr color component j = 0..6 Cr [adaptation_parameter_set_id][k][j] is exported 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 equal 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 multiplying by the j-th coefficient of the candidate chroma filter with index `altIdx`. The bitstream consistency requirement is that the value of `alf_chroma_clip_idx[altIdx][j]` for `altIdx = 0..alf_chroma_num_alt_filters_minus1` and `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 are set to be equal to alf_chroma_clip_idx[altIdx][j], as specified in Table 8.

[0670] Table 8 – AlfClip Specification Depends on BitDepth and clipIdx

[0671]

[0672] The `lmcs_min_bin_idx` parameter specifies the minimum binary (bin) index used during the construction of a luma map with chroma scaling. 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 incremental value between 15 and the maximum bin index `LmcsMaxBinIdx`, used in the luma map construction process with 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 to represent 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 of the i-th bin.

[0676] lmcs_delta_sign_cw_flag[i] specifies the sign of the variable lmcsDeltaCW[i], as shown below:

[0677] --If lmcs_delta_sign_cw_flag[i] equals 0, then lmcsDeltaCW[i] is a positive value.

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

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

[0680] The variable OrgCW is exported as follows:

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

[0682] The variable lmcsDeltaCW[i] of 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) (inclusive).

[0689] --For i = LmcsMaxBinIdx + 1..15, lmcsCW[i] is set 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] (i = 0..16), ScaleCoeff[i] (i = 0..15), and InvScaleCoeff[i] 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] The `lmcs_delta_sign_crs_flag` parameter specifies the sign of the variable `lmcsDeltaCrs`. When it does not exist, `lmcs_delta_sign_crs_flag` is assumed to be equal to 0.

[0699] The variable lmcsDeltaCrs is exported as follows:

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

[0701] 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 end value).

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

[0703]

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

[0705] 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(). Bitstream consistency requires that scaling_list_chroma_present_flag should be 0 when ChromaArrayType is 0, and should be 1 when ChromaArrayType is not 0.

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

[0707] 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 the value of the scaling list that is explicitly signaled. When it does not exist, the value of scaling_list_pred_mode_flag[id] is inferred to be 0.

[0708] `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 derived from `id`, as shown below:

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

[0710] The variables refId and matrixSize are exported as follows:

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

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

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

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

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

[0717] --Otherwise (if 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:

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

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

[0720] The scaling_list_dc_coef[id-14] variable is used to export the value of the scalingMatrixDC[id-14] variable when the id is greater than 13, as shown below:

[0721] ScalingMatrixDCRec[id-14]=(ScalingMatrixDCPred+

[0722] 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 array ScalingMatrixRec[id] of (matrixSize)x(matrixSize) is exported as follows:

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

[0727] Where k = 0..(matrix size * matrix size 1),

[0728] x=DiagScanOrder[Log2(matrix size)][Log2(matrix size)][k][0], and

[0729] y=DiagScanOrder[Log2(matrix size)][Log2(matrix size)][k][1]

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

[0731] 3.5. 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]

[0741] The PH syntax structure contains common information for all stripes of the encoded / decoded image associated with the PH syntax structure.

[0742] A value of 1 for `gdr_or_irap_pic_flag` indicates that the current image is either a GDR image or an IRAP image. A value of 0 for `gdr_or_irap_pic_flag` indicates that the current image may or may not be a GDR image or an IRAP image.

[0743] A `gdr_pic_flag` value of 1 indicates that the image associated with a `PH` is a GDR image. A `gdr_pic_flag` value of 0 indicates that the image associated with a `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` is 0, the value of `gdr_pic_flag` should be 0.

[0744] A ph_inter_slice_allowed_flag value of 0 indicates that the slice_type of all codec slices in the image is equal to 2. A ph_inter_slice_allowed_flag value of 1 indicates that the image may or may not contain one or more codec slices with slice_type equal to 0 or 1.

[0745] A value of 0 for `ph_intra_slice_allowed_flag` indicates that the slice_type of all codec slices in the image is either 0 or 1. A value of 1 for `ph_intra_slice_allowed_flag` indicates that the image may or may not contain 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.

[0746] Note 1 – For bitstreams that should be merged based on subpictures without requiring changes to the PH NAL units, the codec should set the values ​​of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag to 1.

[0747] A non_reference_picture_flag value of 1 indicates that a picture associated with a pH should never be used as a reference picture. A non_reference_picture_flag value of 0 indicates whether a picture associated with a pH may or may not be used as a reference picture.

[0748] The `ph_pic_parameter_set_id` parameter 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).

[0749] The requirement for bitstream consistency is that the TemporalId value of PH should be greater than or equal to the TemporalId value of PPS whose pps_pic_parameter_set_id is equal to ph_pic_parameter_set_id.

[0750] `ph_pic_order_cnt_lsb` specifies the image order count of the current image modulo `MaxPicOrderCntLsb`. The length of the `ph_pic_order_cnt_lsb` syntax element is `log2_max_pic_order_cnt_lsb_minus4+4` bits. The value of `ph_pic_order_cnt_lsb` should be in the range of 0 to `MaxPicOrderCntLsb–1` (inclusive).

[0751] The `no_output_of_prior_pics_flag` flag affects the output of previously decoded pictures in the DPB after a CLVSS picture is decoded, provided that the CLVSS picture is not the first picture in the bitstream specified in Appendix C.

[0752] `recovery_poc_cnt` specifies the recovery points of the decoded images according to the output order. If the current image is a GDR image associated with the PH, and there are GDR points in CLVS according to the decoding order, then...

[0753] The image picA following the current GDR image is called the recovery point image if its PicOrderCntVal is equal to the PicOrderCntVal of the current GDR image plus the value of recovery_poc_cnt. Otherwise, the first image in the output order whose PicOrderCntVal is greater than the PicOrderCntVal of the current image plus recovery_poc_cnt is called the recovery point image. In the decoding order, the recovery point image should not precede the current GDR image. The value of recovery_poc_cnt should be in the range of 0 to MaxPicOrderCntLsb–1 (inclusive).

[0754] When the current image is a GDR image, the variable RpPicOrderCntVal is exported as follows:

[0755] RpPicOrderCntVal=PicOrderCntVal+recovery_poc_cnt (82)

[0756] Note 2 – When gdr_enabled_flag equals 1 and the PicOrderCntVal of the current image is greater than or equal to the RpPicOrderCntVal of the related GDR image, the current 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 it exists) before the related GDR image in the decoding order.

[0757] ph_extra_bit[i] can be equal to 1 or 0. Decoders conforming to this version of the specification should ignore the value of ph_extra_bit[i]. Its value does not affect the consistency of the decoder with the grade specified in this version of the specification.

[0758] The ph_poc_msb_present_flag being equal to 1 indicates that the syntax element poc_msb_val exists in PH.

[0759] In the context of ph_poc_msb_present_flag, a value of 0 indicates that the syntax element poc_msb_val does not exist in the PH. The value of ph_poc_msb_present_flag should be 0 when vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 0 and an image exists in the current AU of the current layer's reference layer.

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

[0761] A `ph_alf_enabled_flag` value of 1 enables the adaptive loop filter for all stripes associated with `PH`, and can be applied to the Y, Cb, or Cr color components within the stripe. A `ph_alf_enabled_flag` value of 0 disables the adaptive loop filter for one or more or all stripes associated with `PH`. When it does not exist, `ph_alf_enabled_flag` is inferred to be equal to 0.

[0762] ph_num_alf_aps_ids_luma specifies the number of ALF APSs for the PH-related stripe reference.

[0763] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS, and the luminance components of the PH-related stripes are referenced to this ALF APS.

[0764] The value of alf_luma_filter_signal_flag for the APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] should be equal to 1.

[0765] The TemporalId of the APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] should be less than or equal to the TemporalId of the image associated with PH.

[0766] A value of 0 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is not applied to the Cb and Cr color components. A value of 1 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cb color component. A value of 2 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cr color component. A value of 3 for `ph_alf_chroma_idc` indicates 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.

[0767] The ph_alf_aps_id_chroma parameter specifies the adaptation_parameter_set_id of the ALF APS, and the chromaticity components of the stripes associated with PH are referenced to this ALF APS.

[0768] The value of alf_chroma_filter_signal_flag in the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma should be equal to 1.

[0769] The TemporalId of the APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma should be less than or equal to the TemporalId of the image associated with PH.

[0770] A value of 1 for `ph_cc_alf_cb_enabled_flag` enables the cross-component filter for the Cb color components in all stripes associated with `PH`, and can be applied to the Cb color components within a stripe. A value of 0 for `ph_cc_alf_cb_enabled_flag` disables the cross-component filter for the Cb color components in 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.

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

[0772] The value of alf_cc_cb_filter_signal_flag for an APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to ph_cc_alf_cb_aps_id should be equal to 1.

[0773] The TemporalId of an APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to ph_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the PH-related image.

[0774] A value of 1 for `ph_cc_alf_cr_enabled_flag` enables the cross-component filter for the Cr color component in all PH-related stripes, and can be applied to the Cr color component within a stripe. A value of 0 for `ph_cc_alf_cr_enabled_flag` disables the cross-component filter for the Cr color component in one, several, or all PH-related stripes. When it does not exist, `ph_cc_alf_cr_enabled_flag` is inferred to be equal to 0.

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

[0776] The value of alf_cc_cr_filter_signal_flag for an APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id should be equal to 1.

[0777] The TemporalId of an APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id should be less than or equal to the TemporalId of the PH-related image.

[0778] A value of 1 for ph_lmcs_enabled_flag indicates that luminance mapping with chroma scaling is enabled for all PH-related stripes. A value of 0 for ph_lmcs_enabled_flag indicates that luminance mapping with chroma scaling is disabled for one, more, or all PH-related stripes. If ph_lmcs_enabled_flag does not exist, its value is inferred to be 0.

[0779] `ph_lmcs_aps_id` specifies the `adaptation_parameter_set_id` of the LMCS APS referenced by the stripe associated with the PH. The TemporalId of the APS NAL cell whose `aps_params_type` is equal to `LMCS_APS` and whose `adaptation_parameter_set_id` is equal to `ph_lmcs_aps_id` should be less than or equal to the TemporalId of the image associated with the PH.

[0780] A ph_chroma_residual_scale_flag value of 1 enables chroma residual scaling for all stripes associated with PH. A ph_chroma_residual_scale_flag value of 0 disables chroma residual scaling for one, several, or all stripes associated with PH. When ph_chroma_residual_scale_flag does not exist, it is inferred to be equal to 0.

[0781] A value of 1 for `ph_scaling_list_present_flag` specifies that the scaling list data used for the stripes associated with the PH is derived from the scaling list data contained in the reference scaling list APS. A value of 0 for `ph_scaling_list_present_flag` 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.

[0782] `ph_scaling_list_aps_id` specifies the `adaptation_parameter_set_id` of the scaling list APS. The `TemporalId` of the APS NAL cell whose `aps_params_type` is equal to `SCALING_APS` and whose `adaptation_parameter_set_id` is equal to `ph_scaling_list_aps_id` should be less than or equal to the `TemporalId` of the image associated with the PH.

[0783] `ph_virtual_boundaries_present_flag` equal to 1 specifies that information about virtual boundaries is signaled in the PH (Physical Imagery). `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 across virtual boundaries in the image are disabled. Loop filtering operations include deblocking filters, sample adaptive offset filters, and adaptive loop filter operations. When not present, the value of `ph_virtual_boundaries_present_flag` is inferred to be 0.

[0784] The requirement for bitstream consistency is that when subpic_info_present_flag equals 1, the value of ph_virtual_boundaries_present_flag should equal 0.

[0785] The variable VirtualBoundariesPresentFlag is exported as follows:

[0786]

[0787] `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.

[0788] The variable NumVerVirtualBoundaries is exported as follows:

[0789]

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

[0791] The range i is a list VirtualBoundariesPosX[i] from 0 to NumVerVirtualBoundaries–1 (inclusive), in units of luminance samples, which specifies the position of the vertical virtual boundary and is derived as follows:

[0792] for(i=0; i <NumVerVirtualBoundaries;i++)

[0793] VirtualBoundariesPosX[i]=(sps_virtual_boundaries_present_flag?

[0794] sps_virtual_boundaries_pos_x[i]:ph_virtual_boundaries_pos_x[i])*8(85)

[0795] The distance between any two vertical virtual boundaries should be greater than or equal to the CtbSizeY brightness sample.

[0796] `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.

[0797] The parameter NumHorVirtualBoundaries is exported as follows:

[0798]

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

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

[0801] The range of i is a list of VirtualBoundariesPosY[i] from 0 to NumHorVirtualBoundaries–1 (inclusive), in units of luminance samples, which specifies the position of the horizontal virtual boundary and is derived as follows:

[0802]

[0803] The distance between any two horizontal virtual boundaries should be greater than or equal to the CtbSizeY luminance sample.

[0804] The `pic_output_flag` affects the decoded image output and removal process, as specified in Appendix C. When `pic_output_flag` is absent, it is inferred to be equal to 1.

[0805] 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 they do not exist, the value of partition_constraints_override_flag is inferred to be 0.

[0806] `ph_log2_diff_min_qt_min_cb_intra_slice_luma` specifies the base-2 logarithm of the minimum size of the luminance samples of the luminance leaf blocks generated by the quadtree partitioning of the CTU, and the base-2 logarithm of the minimum decoder block size of 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`.

[0807] `ph_max_mtt_hierarchy_depth_intra_slice_luma` specifies the maximum hierarchical depth of the encoding / decoding unit generated by 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`.

[0808] `ph_log2_diff_max_bt_min_qt_intra_slice_luma` specifies the difference between the base-2 logarithm of the largest size (width or height) of the luminance samples in a luminance codec block that can be partitioned using binary partitioning, and the base-2 logarithm of the smallest size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of a CTU in a stripe 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`.

[0809] `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 a luminance codec block that can be partitioned using ternary partitioning, and the base-2 logarithm of the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of a CTU in a slice with a 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`.

[0810] `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 by partitioning a 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.

[0811] `ph_max_mtt_hierarchy_depth_intra_slice_chroma` specifies the maximum hierarchical depth of a chroma codec unit, which is generated by multi-type tree partitioning of chroma quadtree leaves with `treeType` equal to `DUAL_TREE_CHROMA` in a slice with `slice_type` equal to 2(I) associated with `PH`. The value of `ph_max_mtt_hierarchy_depth_intra_slice_chroma` 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`.

[0812] `ph_log2_diff_max_bt_min_qt_intra_slice_chroma` specifies the difference between the base-2 logarithm of the largest size (width or height) of the luminance samples in a chroma codec block that can be partitioned using binary partitioning, and the base-2 logarithm of 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 `treeType` equal to `DUAL_TREE_CHROMA` from a stripe 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.

[0813] `ph_log2_diff_max_tt_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 partitioned using ternary partitioning, and the base-2 logarithm of 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 `treeType` equal to `DUAL_TREE_CHROMA` in a stripe 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.

[0814] `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_int ra_slice_luma) (inclusive).

[0815] When it does not exist, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.

[0816] `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_int ra_slice_luma) (inclusive).

[0817] When it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.

[0818] `ph_log2_diff_min_qt_min_cb_inter_slice` specifies the difference between the base-2 logarithm of the minimum size of the luminance samples in the luminance leaf blocks generated by 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 equal to 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`.

[0819] `ph_max_mtt_hierarchy_depth_inter_slice` specifies the maximum hierarchical depth of the codec unit, which is generated by 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`.

[0820] `ph_log2_diff_max_bt_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 binary partitioning, and the base-2 logarithm of the smallest size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of the CTU in 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`.

[0821] `ph_log2_diff_max_tt_min_qt_inter_slice` specifies the difference between the base-2 logarithm of the largest size (width or height) of the luminance samples in a luminance codec block that can be partitioned using ternary partitioning, and the base-2 logarithm of the smallest size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partition of a CTU in 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`.

[0822] `ph_cu_qp_delta_subdiv_inter_slice` specifies the maximum `cbSubdiv` value of the codec unit for transmitting `cu_qp_delta_abs` and `cu_qp_delta_sign_flag` in the inter-frame slice. 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_int er_slice) (inclusive).

[0823] When it does not exist, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.

[0824] `ph_cu_chroma_qp_offset_subdiv_inter_slice` specifies the maximum `cbSubdiv` value of the codec unit for transmitting `cu_chroma_qp_offset_flag` in the inter-frame slice. 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_int er_slice) (inclusive).

[0825] When it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.

[0826] `ph_temporal_mvp_enabled_flag` specifies whether a temporal motion vector predictor (TVP) 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 so that the TVP is not used in the decoding of the slice. Otherwise (if `ph_temporal_mvp_enabled_flag` equals 1), the TVP can be used to decode the slice associated with the PH. When it does not exist, the value of `ph_temporal_mvp_enabled_flag` is inferred to be 0. The value of `ph_temporal_mvp_enabled_flag` should be 0 when there is no reference image in the DPB with the same spatial resolution as the current image.

[0827] The maximum number of MVP candidates based on sub-blocks, MaxNumSubblockMergeCand, is derived as follows:

[0828]

[0829] The value of MaxNumSubblockMergeCand should be in the range of 0 to 5 (inclusive).

[0830] A value of 1 for ph_collocated_from_l0_flag specifies 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 specifies that the co-located image used for temporal motion vector prediction is derived from reference image list 1.

[0831] ph_collocated_ref_idx specifies the reference index of the co-located image used for temporal motion vector prediction.

[0832] When ph_collocated_from_l0_flag equals 1, ph_collocated_ref_idx references 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).

[0833] When ph_collocated_from_l0_flag equals 0, ph_collocated_ref_idx references 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).

[0834] When it does not exist, the value of ph_collocated_ref_idx is inferred to be equal to 0.

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

[0836] A value of 1 for `ph_fpel_mmvd_enabled_flag` specifies that merge mode with motion vector difference uses integer sample precision in the strips associated with PH. A value of 0 for `ph_fpel_mmvd_enabled_flag` specifies that merge mode with motion vector difference can use fractional sample precision in the strips associated with PH. When it does not exist, the value of `ph_fpel_mmvd_enabled_flag` is inferred to be 0.

[0837] A value of 1 for ph_disable_bdof_flag disables inter-frame bidirectional prediction based on bidirectional optical flow in the stripe associated with the PH. A value of 0 for ph_disable_bdof_flag enables or disables inter-frame bidirectional prediction based on bidirectional optical flow in the stripe associated with the PH.

[0838] The following applies when ph_disable_bdof_flag is not present:

[0839] --If sps_bdof_enabled_flag equals 1, then it is inferred that the value of ph_disable_bdof_flag is equal to 0.

[0840] --Otherwise (sps_bdof_enabled_flag equals 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.

[0841] A value of 1 for ph_disable_dmvr_flag disables inter-frame bidirectional prediction based on decoder motion vector refinement in the stripe associated with the PH. A value of 0 for ph_disable_dmvr_flag enables or disables inter-frame bidirectional prediction based on decoder motion vector refinement in the stripe associated with the PH.

[0842] The following applies when ph_disable_dmvr_flag is not present:

[0843] --If sps_dmvr_enabled_flag equals 1, then the value of ph_disable_dmvr_flag is inferred to be equal to 0.

[0844] --Otherwise (sps_dmvr_enabled_flag equals 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.

[0845] A value of 1 for ph_disable_prof_flag disables optical flow prediction refinement in the stripe associated with PH. A value of 0 for ph_disable_prof_flag enables or disables optical flow prediction refinement in the stripe associated with PH.

[0846] The following applies when ph_disable_prof_flag is not present:

[0847] --If sps_affine_prof_enabled_flag equals 1, then the value of ph_disable_prof_flag is inferred to be equal to 0.

[0848] --Otherwise (sps_affine_prof_enabled_flag equals 0), the value of ph_disable_prof_flag is inferred to be equal to 1.

[0849] ph_qp_delta specifies the Qp used for codec blocks in an image. Y The initial value remains unchanged until it is modified by the value of CuQpDeltaVal in the codec unit layer.

[0850] 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 following was exported:

[0851] SliceQp Y =26+init_qp_minus26+ph_qp_delta (89)

[0852] SliceQp Y The value should be in the range of -QpBdOffset to +63 (inclusive).

[0853] `ph_joint_cbcr_sign_flag` specifies whether the co-located 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]` equals 1 for the transform unit, `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-located 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-located Cb (or Cr) residual sample.

[0854] 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, more, or all stripes associated with PH. When ph_sao_luma_enabled_flag does not exist, it is inferred to be equal to 0.

[0855] A value of 1 for ph_sao_chroma_enabled_flag indicates that SAO is enabled for the chromaticity components in all stripes associated with PH; a value of 0 for ph_sao_chroma_enabled_flag indicates that SAO for the chromaticity components can be disabled for one, more, or all stripes associated with PH. When ph_sao_chroma_enabled_flag does not exist, it is inferred to be equal to 0.

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

[0857] A value of 0 for `pic_sign_data_hiding_enabled_flag` disables sign bit hiding for the current image. A value of 1 for `pic_sign_data_hiding_enabled_flag` enables sign bit hiding for the current image. When `pic_sign_data_hiding_enabled_flag` does not exist, it is inferred to be equal to 0.

[0858] A value of 1 for `ph_deblocking_filter_override_flag` indicates that the deblocking parameter exists in the PH (Physical Deblocking Filter). A value of 0 for `ph_deblocking_filter_override_flag` indicates that the deblocking parameter does not exist in the PH. When it does not exist, the value of `ph_deblocking_filter_override_flag` is inferred to be 0.

[0859] A value of 1 for `ph_deblocking_filter_disabled_flag` indicates that the deblocking filter operation does not apply to stripes associated with pH. A value of 0 for `ph_deblocking_filter_disabled_flag` indicates that the deblocking filter operation applies to 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`.

[0860] `ph_beta_offset_div2` and `ph_tc_offset_div2` specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the luminance component of the strip associated with PH. The values ​​of both `ph_beta_offset_div2` and `ph_tc_offset_div2` should be in the range of -12 to 12 (inclusive). When 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.

[0861] `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2` specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cb component of the stripe associated with PH. The values ​​of both `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2` should be in the range of -12 to 12 (inclusive). When 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.

[0862] `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2` specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cr component of 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.

[0863] `ph_extension_length` specifies the length of the PH extension data in bytes, excluding the bits used for signaling notifications within `ph_extension_length` itself. 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 0.

[0864] `ph_extension_data_byte` can be any value. Decoders conforming to this version of the specification should ignore the value of `ph_extension_data_byte`. Its value does not affect the consistency of the decoder with the grade specified in this version of the specification.

[0865] 3.6.SH Syntax and Semantics

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

[0867]

[0868]

[0869]

[0870]

[0871]

[0872] 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. It is also specified that the Qp′ of the codec unit containing cu_chroma_qp_offset_flag is determined... Cb Qp′ Cr and Qp′ CbCrThe variable CuQpOffset is used to determine the value of the quantized parameter. Cb CuQpOffset Cr and CuQpOffset CbCr All of them were set to 0.

[0873] A picture_header_in_slice_header_flag value of 1 indicates that the PH syntax structure exists in the slice header. A picture_header_in_slice_header_flag value of 0 indicates that the PH syntax structure does not exist in the slice header.

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

[0875] When picture_header_in_slice_header_flag is equal to 1 for the codec slice, the requirement for bitstream consistency is that there should be no VCL NAL unit in CLVS with nal_unit_type equal to PH_NUT.

[0876] When picture_header_in_slice_header_flag equals 0, all encoded and decoded stripes in the current image should have picture_header_in_slice_header_flag equal to 0, and the current PU should have PH NAL units.

[0877] `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 exported such that `SubpicIdVal[CurrSubpicIdx]` equals `slice_subpic_id`. Otherwise (if `slice_subpic_id` does not exist), `CurrSubpicIdx` is exported as 0. The length of `slice_subpic_id` is `sps_subpic_id_len_minus1+1` bits.

[0878] `slice_address` specifies the slice address. 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.

[0879] If rect_slice_flag equals 0, then the following applies:

[0880] --The stripe address is the raster scan stripe index.

[0881] The length of `--slice_address` is `Ceil(Log2(NumTilesInPic))` bits.

[0882] The value of --slice_address should be in the range of 0 to NumTilesInPic–1 (inclusive).

[0883] Otherwise (rect_slice_flag equals 1), the following applies:

[0884] --The stripe address is the sub-image level stripe index of the stripe.

[0885] The length of `--slice_address` is `Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx]))` bits.

[0886] The value of --slice_address should be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx]–1 (inclusive).

[0887] Bitstream consistency requirements are based on the following constraints:

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

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

[0890] --The shape of the image stripes should be such that, when each CTU is being decoded, its entire left edge and entire top edge should consist of the image boundary or the boundaries of the previously decoded (multiple) CTUs.

[0891] sh_extra_bit[i] can be equal to 1 or 0. Decoders conforming to this version of the specification should ignore the value of sh_extra_bit[i]. Its value does not affect the consistency of the decoder with the grade specified in this version of the specification.

[0892] The increment of 1 in 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).

[0893] The variable NumCtusInCurrSlice specifies the number of CTUs in the current slice, and i ranges from 0 to a list of NumCtusInCurrSlice–1 (inclusive). CtbAddrInCurrSlice[i] specifies the raster scan address of the i-th CTU within the slice, derived as follows:

[0894]

[0895]

[0896] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos are derived as follows:

[0897]

[0898] slice_type specifies the encoding / decoding type of the slice according to Table 9.

[0899] Table 9 - Names associated with slice_type

[0900] slice_type The name of slice_type 0 B (B band) 1 P (P-band) 2 I(I strip)

[0901] When it does not exist, the value of slice_type is inferred to be equal to 2.

[0902] When ph_intra_slice_allowed_flag equals 0, the value of slice_type should be 0 or 1. When nal_unit_type is in the range from IDR_W_RADL to CRA_NUT (inclusive), and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 1, slice_type should be 2.

[0903] The derivation of the variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY and MaxMttDepthC is as follows:

[0904] -- If slice_type is equal to 2 (I), then the following applies:

[0905] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_luma (119)

[0906] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_chroma (120)

[0907] MaxBtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_intra_slice_luma) (121)

[0908] MaxBtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_intra_slice_chroma) (122)

[0909] MaxTtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma) (123)

[0910] MaxTtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma) (124)

[0911] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma (125)

[0912] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma(126)

[0913] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice(127)

[0914] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice(128)

[0915] -- Otherwise (slice_type equals 0 (B) or 1 (P)), the following applies:

[0916] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(129)

[0917] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(130)

[0918] MaxBtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice)(131)

[0919] MaxBtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice)(132)

[0920] MaxTtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice)(133)

[0921] MaxTtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_inter_slice)(134)

[0922] MaxMttDepthY = ph_max_mtt_hierarchy_depth_inter_slice(135)

[0923] MaxMttDepthC=ph_max_mtt_hierarchy_depth_inter_slice (136)

[0924] CuQpDeltaSubdiv=ph_cu_qp_delta_subdiv_inter_slice (137)

[0925] CuChromaQpOffsetSubdiv=ph_cu_chroma_qp_offset_subdiv_inter_slice(138)

[0926] --The following applies:

[0927] MinQtSizeY = 1 <MinQtLog2SizeY (139)

[0928] MinQtSizeC = 1 <MinQtLog2SizeC (140)

[0929] MinBtSizeY=1< <MinCbLog2SizeY (141)

[0930] MinTtSizeY=1< <MinCbLog2SizeY (142)

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

[0932] `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`.

[0933] `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 unit where `aps_params_type` equals `ALF_APS` and `adaptation_parameter_set_id` equals `slice_alf_aps_id_luma[i]` should be less than or equal to the `temporalId` of the NAL unit of the codec slice. When `slice_alf_enabled_flag` equals 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]`.

[0934] The value of alf_luma_filter_signal_flag for the APS NAL cell where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] should be equal to 1.

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

[0936] `slice_alf_aps_id_chroma` specifies the `adaptation_parameter_set_id` of the ALF APS referenced by the chroma components of the slice. The `temporalId` of the APS NAL unit where `aps_params_type` equals `ALF_APS` and `adaptation_parameter_set_id` equals `slice_alf_aps_id_chroma` should be less than or equal to the `temporalId` of the NAL unit of the codec slice. When `slice_alf_enabled_flag` equals 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`.

[0937] The value of alf_chroma_filter_signal_flag in the APS NAL cell where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_chroma should be equal to 1.

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

[0939] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id referenced by the Cb color component of the stripe.

[0940] The TemporalId of the APS NAL unit whose aps_params_type equals ALF_APS and whose adaptation_parameter_set_id equals 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.

[0941] The value of alf_cc_cb_filter_signal_flag for the APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to slice_cc_alf_cb_aps_id should be equal to 1.

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

[0943] `slice_cc_alf_cr_aps_id` specifies the `adaptation_parameter_set_id` referenced by the Cr color component of the slice. The `TemporalId` of the APS NAL unit where `aps_params_type` equals `ALF_APS` and `adaptation_parameter_set_id` equals `slice_cc_alf_cr_aps_id` should be less than or equal to the `TemporalId` of the NAL unit of the codec slice. When `slice_cc_alf_cr_enabled_flag` equals 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`.

[0944] The value of alf_cc_cr_filter_signal_flag for an APS NAL cell whose aps_params_type is equal to ALF_APS and whose adaptation_parameter_set_id is equal to slice_cc_alf_cr_aps_id should be equal to 1.

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

[0946] Note 1 – There is no dependency between the decoding processes of different color planes of an image.

[0947] A value of 1 for num_ref_idx_active_override_flag indicates that the syntax element num_ref_idx_active_minus1[0] exists in both P and B stripes, and that the syntax element num_ref_idx_active_minus1[1] exists in B stripe. A value of 0 for num_ref_idx_active_override_flag indicates that neither num_ref_idx_active_minus1[0] nor num_ref_idx_active_minus1[1] exists. When num_ref_idx_active_override_flag is not present, its value is inferred to be 1.

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

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

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

[0951] The variable NumRefIdxActive[i] is derived as follows:

[0952]

[0953]

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

[0955] When the current stripe is a P stripe, the value of NumRefIdxActive[0] should be greater than 0.

[0956] When the current stripe is a B stripe, both NumRefIdxActive[0] and NumRefIdxActive[1] should be greater than 0.

[0957] `cabac_init_flag` specifies the method used to determine the initialization table used during the initialization of context variables. When `cabac_init_flag` does not exist, it is inferred to be equal to 0.

[0958] A slice_collocated_from_l0_flag value of 1 specifies 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 specifies that the co-located image used for temporal motion vector prediction is derived from reference image list 1.

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

[0960] --If rpl_info_in_ph_flag equals 1, then it is inferred that slice_collocated_from_l0_flag equals ph_collocated_from_l0_flag.

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

[0962] The slice_collocated_ref_idx specifies the reference index of the co-located image used for temporal motion vector prediction.

[0963] When slice_type equals P or when slice_type equals B and slice_collocated_from_l0_flag equals 1, slice_collocated_ref_idx references 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).

[0964] When slice_type equals B and slice_collocated_from_l0_flag equals 0, slice_collocated_ref_idx references 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).

[0965] The following applies when slice_collocated_ref_idx does not exist:

[0966] --If rpl_info_in_ph_flag equals 1, then it is inferred that the value of slice_collocated_ref_idx is equal to ph_collocated_ref_idx.

[0967] --Otherwise (rpl_info_in_ph_flag equals 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.

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

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

[0970] slice_qp_delta specifies the Qp used for codec blocks in a slice. Y The initial value remains unchanged until it is modified by the value of CuQpDeltaVal in the codec unit layer.

[0971] When qp_delta_info_in_ph_flag equals 0, the Qp of the stripe Y Initial value of quantization parameter SliceQp Y The following was exported:

[0972] SliceQp Y =26+init_qp_minus26+slice_qp_delta (144)

[0973] SliceQp Y The value should be in the range of -QpBdOffset to +63 (inclusive).

[0974] When any of the following conditions are true:

[0975] The values ​​of --wp_info_in_ph_flag, pps_weighted_pred_flag, and slice_type are all equal to 1.

[0976] The values ​​of --wp_info_in_ph_flag, pps_weighted_bipred_flag, and slice_type are all equal to 1 and B, respectively.

[0977] The following applies:

[0978] The value of --NumRefIdxActive[0] should be less than or equal to the value of NumWeightsL0.

[0979] – For each reference image index RefPicList[0][i] in the range of i from 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.

[0980] When wp_info_in_ph_flag equals 1, pps_weighted_bipred_flag equals 1, and slice_type equals B, the following applies:

[0981] The value of --NumRefIdxActive[1] should be less than or equal to the value of NumWeightsL1.

[0982] – For each reference image index RefPicList[1][i] in the range of i from 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.

[0983] slice_cb_qp_offset specifies the offset when determining Qp′ Cb The value of the quantization parameter should be added to the difference between the values ​​of pps_cb_qp_offset and pps_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 value of pps_cb_qp_offset + slice_cb_qp_offset should be in the range of -12 to +12 (inclusive).

[0984] slice_cr_qp_offset specifies the offset when determining Qp′ Cr The difference between the quantization parameter value and the value of pps_cr_qp_offset should be added when quantizing the parameter. 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 be in the range of -12 to +12 (inclusive).

[0985] 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` and `slice_joint_cbcr_qp_offset`. 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).

[0986] 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 the 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.

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

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

[0989] A slice_deblocking_filter_override_flag value of 1 indicates that the deblocking parameters are present in the slice header. A slice_deblocking_filter_override_flag value of 0 indicates that the deblocking parameters are not present in the slice header. When the deblocking parameters are not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.

[0990] A slice_deblocking_filter_disabled_flag value of 1 indicates that the deblocking filter operation should not be applied to the current slice. A slice_deblocking_filter_disabled_flag value of 0 indicates that the deblocking filter operation should be 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.

[0991] `slice_beta_offset_div2` and `slice_tc_offset_div2` specify the deblocking parameter offsets applied to the luminance component of the current slice, β and tC (divided by 2). The values ​​of both `slice_beta_offset_div2` and `slice_tc_offset_div2` should 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.

[0992] `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` specify the deblocking parameter offsets applied to the Cb components of the current slice, β and tC (divided by 2). The values ​​of both `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` should 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.

[0993] `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` specify the deblocking parameter offsets for β and tC (divided by 2) applied to the Cr component of the current slice. The values ​​of `slice_cr_beta_offset_div2` and `slice_cr_tc_offset_div2` 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.

[0994] A slice_ts_residual_coding_disabled_flag value of 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 value of 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.

[0995] A slice_lmcs_enabled_flag value of 1 indicates that luma mapping with chroma scaling is enabled for the current slice. A slice_lmcs_enabled_flag value of 0 indicates that luma mapping with chroma scaling is not enabled for the current slice. When slice_lmcs_enabled_flag does not exist, it is inferred to be equal to 0.

[0996] A slice_scaling_list_present_flag value of 1 indicates that the scaling list data used for the current slice is derived from the scaling list data contained in the 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 specified in Clause 7.4.3.21. When it does not exist, the value of slice_scaling_list_present_flag is inferred to be equal to 0.

[0997] The variable NumEntryPoints specifies the number of entry points in the current strip, derived as follows:

[0998]

[0999] Increasing 1 to offset_len_minus1 specifies the length in bits of the entry_point_offset_minus1[i] syntax element. The value of offset_len_minus1 should be in the range of 0 to 31 (inclusive).

[1000] `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 considered byte 0. When there is...

[1001] At that time, the simulation in the stripe data portion of the NAL unit of the codec stripe is used to prevent bytes from being 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 end values) of the codec stripe data, and subset k (where k ranges from 1 to NumEntryPoints-1 (inclusive of end values)) consists of bytes firstByte[k] of the codec stripe data.

[1002] It consists of up to lastByte[k] (including the end value), where firstByte[k] and lastByte[k] are defined as follows:

[1003]

[1004] lastByte[k]=firstByte[k]+entry_point_offset_minus1[k] (147)

[1005] The last subset (where the subset index equals NumEntryPoints) consists of the remaining bytes of the encoded and decoded stripe data.

[1006] 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 in the stripe within the same slice, and the number of subsets (i.e., the value of NumEntryPoints+1) should be equal to the number of slices in the stripe.

[1007] When `sps_entropy_coding_sync_enabled_flag` equals 0 and the slice contains a subset of CTU rows from a single slice, `NumEntryPoints` should be 0, and the number of subsets should be 1. This subset should consist of all the codec bits for all CTUs in the slice.

[1008] When sps_entropy_coding_sync_enabled_flag equals 1, each subset k in the range of 0 to NumEntryPoints (inclusive) should consist of all the codec bits of all CTUs in the CTU line 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 lines in the stripe.

[1009] `slice_header_extension_length` specifies the length of the slice header extension data in bytes, excluding the bits used for signaling notifications within `slice_header_extension_length` itself. 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 0.

[1010] The slice_header_extension_data_byte[i] can have any value. Decoders conforming to this version of the specification should ignore the values ​​of all slice_header_extension_data_byte[i] syntax elements. Its value does not affect the consistency of the decoder with the grade specified in this version of the specification.

[1011] 3.7. Transformation Unit Syntax (Strip Data)

[1012] In the latest VVC draft text, the transformation unit syntax and semantics are as follows:

[1013]

[1014]

[1015]

[1016]

[1017]

[1018] The transform coefficient level is represented by the array TransCoeffLevel[x0][y0][cIdx][xC][yC]. Array indices x0 and y0 specify the position (x0, y0) of the top left luminance sample of the transform block under consideration relative to the top left luminance sample of the image. Array index cIdx specifies the indicator for the color components; Y equals 0, Cb equals 1, and Cr equals 2. Array indices xC and yC specify the position (xC, yC) of the transform coefficient within the current transform block. When the value of TransCoeffLevel[x0][y0][cIdx][xC][yC] is not specified in Clause 7.3.10.11, it is inferred to be equal to 0.

[1019] The value of tu_cbf_cb[x0][y0] equal to 1 indicates that the Cb transform block contains one or more transform coefficient levels that are not equal to 0. The array indices x0 and y0 specify the left top position (x0, y0) of the transform block under consideration.

[1020] When tu_cbf_cb[x0][y0] does not exist, its value is inferred to be equal to 0.

[1021] The value of tu_cbf_cr[x0][y0] equal to 1 indicates that the Cr transform block contains one or more transform coefficient levels that are not equal to 0. The array indices x0 and y0 specify the left top position (x0, y0) of the transform block under consideration.

[1022] When tu_cbf_cr[x0][y0] does not exist, its value is inferred to be equal to 0.

[1023] The value of tu_cbf_luma[x0][y0] equal to 1 indicates that the luminance transform block contains one or more transform coefficient levels that are not equal to 0. The array indices x0 and y0 specify the position (x0, y0) of the left top luminance sample of the transform block under consideration relative to the left top luminance sample of the image.

[1024] When tu_cbf_luma[x0][y0] does not exist, its value is inferred as follows:

[1025] --If cu_sbt_flag equals 1, and one of the following conditions is true, then tu_cbf_luma[x0][y0] is inferred to be equal to 0:

[1026] –subTuIndex equals 0, and cu_sbt_pos_flag equals 1.

[1027] –subTuIndex equals 1, and cu_sbt_pos_flag equals 0.

[1028] --Otherwise, if treeType equals DUAL_TREE_CHROMA, then tu_cbf_luma[x0][y0] is inferred to be equal to 0.

[1029] --Otherwise, tu_cbf_luma[x0][y0] is inferred to be equal to 1.

[1030] `tu_joint_cbcr_residual_flag[x0][y0]` specifies whether the residual samples of the chrominance components Cb and Cr are encoded into a single transform block. The array indices x0 and y0 specify the position (x0, y0) of the left-top luminance sample of the transform block under consideration relative to the left-top luminance sample of the image.

[1031] `tu_joint_cbcr_residual_flag[x0][y0]` equal to 1 specifies that the transform unit syntax includes the transform coefficient level of a single transform block, from which the residual samples of both Cb and Cr are derived. `tu_joint_cbcr_residual_flag[x0][y0]` equal to 0 specifies that the transform coefficient level of the chrominance components is encoded and decoded as indicated by the syntax elements `tu_cbf_cb[x0][y0]` and `tu_cbf_cr[x0][y0]`.

[1032] When tu_joint_cbcr_residual_flag[x0][y0] does not exist, it is inferred to be equal to 0.

[1033] Based on tu_joint_cbcr_residual_flag[x0][y0], tu_cbf_cb[x0][y0], and tu_cbf_cr[x0][y0], the variable TuCResMode[x0][y0] is derived as follows:

[1034] --If tu_joint_cbcr_residual_flag[x0][y0] equals 0, the variable TuCResMode[x0][y0] is set to equal 0.

[1035] --Otherwise, if tu_cbf_cb[x0][y0] equals 1 and tu_cbf_cr[x0][y0] equals 0, then the variable TuCResMode[x0][y0] is set to equal 1.

[1036] --Otherwise, if tu_cbf_cb[x0][y0] equals 1, then the variable TuCResMode[x0][y0] is set to equal 2.

[1037] --Otherwise, the variable TuCResMode[x0][y0] is set to equal to 3.

[1038] cu_qp_delta_abs specifies the absolute value of the difference CuQpDeltaVal between the quantization parameter of the current codec unit and its prediction.

[1039] The cu_qp_delta_sign_flag specifies the symbol for CuQpDeltaVal as follows:

[1040] --If cu_qp_delta_sign_flag equals 0, then the corresponding CuQpDeltaVal has a positive value.

[1041] --Otherwise (cu_qp_delta_sign_flag equals 1), the corresponding CuQpDeltaVal has a negative value.

[1042] When cu_qp_delta_sign_flag does not exist, it is inferred to be equal to 0.

[1043] When cu_qp_delta_abs exists, the variables IsCuQpDeltaCoded and CuQpDeltaVal are exported as follows:

[1044] IsCuQpDeltaCoded=1 (187)

[1045] CuQpDeltaVal=cu_qp_delta_abs*(1-2*cu_qp_delta_sign_flag) (188)

[1046] The value of CuQpDeltaVal should be in the range of -(32+QpBdOffset / 2) to +(31+QpBdOffset / 2) (inclusive).

[1047] When cu_chroma_qp_offset_flag exists and is equal to 1, it specifies that the entries in cb_qp_offset_list[] are used to determine CuQpOffset. Cb The value, the corresponding entry in cr_qp_offset_list[] is used to determine CuQpOffset. Cr The value of , and the corresponding entry in joint_cbcr_qp_offset_list[] is used to determine CuQpOffset. CbCr The value of cu_chroma_qp_offset_flag is 0, indicating that these lists are not used to determine CuQpOffset. CbCuQpOffset Cr and CuQpOffset CbCr The value of .

[1048] cu_chroma_qp_offset_idx (if it exists) specifies the value used to determine CuQpOffset. Cb CuQpOffset Cr and CuQpOffset CbCr The value is an index of cb_qp_offset_list[], cr_qp_offset_list[], and joint_cbcr_qp_offset_list[]. When it exists, the value of cu_chroma_qp_offset_idx should be in the range of 0 to chroma_qp_offset_list_len_minus1 (inclusive). When it does not exist, the value of cu_chroma_qp_offset_idx is inferred to be equal to 0.

[1049] When cu_chroma_qp_offset_flag exists, the following applies:

[1050] -- Set the variable IsCuChromaQpOffsetCoded to equal 1.

[1051] --Variable CuQpOffset Cb CuQpOffset Cr and CuQpOffset CbCr The export is as follows:

[1052] --If cu_chroma_qp_offset_flag equals 1, then the following applies:

[1053] CuQpOffset Cb =cb_qp_offset_list[cu_chroma_qp_offset_idx] (189)

[1054] CuQpOffset Cr =cr_qp_offset_list[cu_chroma_qp_offset_idx] (190)

[1055] CuQpOffset CbCr =joint_cbcr_qp_offset_list[cu_chroma_qp_offset_idx](191)

[1056] --Otherwise (cu_chroma_qp_offset_flag equals 0), CuQpOffset Cb CuQpOffset Cr and CuQpOffset CbCr Set all to 0.

[1057] `transform_skip_flag[x0][y0][cIdx]` specifies whether a transformation is applied to the associated transform block. The array indices `x0` and `y0` specify the position (x0, y0) of the left-top luminance sample of the considered transform block relative to the left-top luminance sample of the image. The array index `cIdx` specifies the indicator for the color components; Y equals 0, Cb equals 1, and Cr equals 2. `transform_skip_flag[x0][y0][cIdx]` equal to 1 indicates that no transformation is applied to the associated transform block. `transform_skip_flag[x0][y0][cIdx]` equal to 0 indicates that the decision of whether to apply a transformation to the associated transform block depends on other syntax elements.

[1058] When transform_skip_flag[x0][y0][cIdx] does not exist, it is inferred as follows:

[1059] --If BdpcmFlag[x0][y0][cIdx] equals 1, then transform_skip_flag[x0][y0][cIdx] is inferred to be equal to 1.

[1060] --Otherwise (BdpcmFlag[x0][y0][cIdx] equals 0), transform_skip_flag[x0][y0][cIdx] is inferred to be equal to 0.

[1061] 4. Examples of technical problems in the disclosed embodiments

[1062] The existing design of the SH, PPS, and APS syntax elements (SE) has the following problems:

[1063] 1) In the latest VVC draft text, the signaling notification APS syntax element `scaling_list_chroma_present_flag` controls the number of scaling / quantization matrices (QMs) for signaling notification in SCALING APS. Specifically, when `scaling_list_chroma_present_flag` equals 1, 28 QMs are used for both luma and chroma signaling notifications; otherwise (when `scaling_list_chroma_present_flag` equals 0), only 10 QMs are used for luma signaling notifications. Currently, the value of `scaling_list_chroma_present_flag` is constrained based on `ChromaArrayType` (derived from the SPS syntax element). That is, when `ChromaArrayType` is not equal to 0, the value of `scala_list_chroma_present_flag` is required to be equal to 1, and when `ChromaArrayType` equals 0, the value of `scala_list_chroma_present_flag` is required to be equal to 0. This semantic constraint introduces a dependency of APS on SPS, which should not happen because APS can be applied to images (or stripes of images) that reference different SPS, which may be associated with different values ​​of ChromaArrayType.

[1064] a. Furthermore, currently, once a block is encoded or decoded using a user-defined scaling list, both luma and chroma (if available) should apply the user-defined scaling list; that is, the user-defined scaling lists for luma and chroma cannot be turned on / off separately. Such a design may be inefficient / inflexible.

[1065] 2) In the latest VVC draft text, when signaling informs the LMCS APS syntax structure, it always informs the APS syntax elements related to chroma residual scaling, regardless of whether ChromaArrayType is equal to 0 (e.g., there are no chroma components in the video content). This may result in unnecessary transmission of chroma-related syntax elements when there is no chroma processing in the video content.

[1066] 3) In the latest VVC draft text, the SH syntax element `slice_ts_residual_coding_disabled_flag` is used to specify whether transform-skip-based residual coding / decoding (TSRC) or regular residual coding / decoding (RRC) is used for transform-skip blocks. However, now `slice_ts_residual_coding_disabled_flag` is always signaled in SH, regardless of whether transform skipping is disabled at the SPS level. If `sps_transform_skip_enabled_flag`, `transform_skip_flag` are always equal to 0, and the condition for switching TSRC and RRC (`!transform_skip_flag[xC][yC][1]||slice_ts_residual_coding_disabled_flag`) will always be true, then in this case, `slice_ts_residual_coding_disabled_flag` becomes meaningless.

[1067] a. In addition, currently, non-TS blocks can only use RRC and cannot switch between TSRC and RRC, which may not be efficient for non-TS block compression.

[1068] 4) In the latest VVC draft text, a multi-level control is used to enable cu_qp_delta for luma blocks. Specifically, the PPS on / off control flag cu_qp_delta_enabled_flag is first signaled, then the quantization group (QG) size is specified in the PH, and finally, the value of cu_qp_delta_abs in each QG is signaled. With this design, for images composed of multiple stripes, even when some stripes use cu qp increments while others never use them, block-level cu_qp_delta_abs still needs to be signaled for each QG. Therefore, there is a potential waste of block-level bits that can be avoided.

[1069] 5) In the latest VVC draft text, when the PPS syntax element `single_slice_per_subpic_flag` is equal to 0, each subpicture of a reference PPS image can consist of one or more rectangular strips. When `single_slice_per_subpic_flag` is equal to 0, the following may occur for images referencing this type of PPS:

[1070] a. Redundancy Case: When `sps_num_subpics_minus1` is greater than 0 but there is only one stripe in each subpic. In this case, each picture contains multiple subpics and multiple rectangular stripes, but `single_slice_per_subpic_flag` is equal to 0. Therefore, signaling is required to notify `num_slices_in_pic_minus1`. However, it is redundantly signaled because this case is conceptually equivalent to `single_slice_per_subpic_flag` being equal to 1, and no signaling is needed for this SE at all.

[1071] b. Redundancy Case: When `sps_num_subpics_minus1` equals 0, and each picture in the reference PPS contains only one slice. In this case, each picture contains a subpicture consisting of only one slice, but `single_slice_per_subpic_flag` is still allowed to be equal to 0, thus requiring signaling to `num_slices_in_pic_minus1`. However, this signaling is redundant because this case is conceptually equivalent to `single_slice_per_subpic_flag` equal to 1, and no signaling is needed for this SE at all.

[1072] c. Furthermore, if all the aforementioned redundant cases are prohibited / avoided, it turns out that `single_slice_per_subpic_flag` equal to 0 is always used when an image has multiple subpicks (each subpick contains a single or multiple stripes) or an image has multiple stripes (each image contains a single or multiple subpicks). And for both of these cases, the value of `num_slices_in_pic_minus1` is always greater than 1. It also turns out that it is not necessary to conditionally signal the PPS syntax element `tile_idx_delta_present_flag`.

[1073] 6) In the latest VVC draft text, slice layouts (such as slice width and height) are designed with explicit signaling notifications associated with implicit inference. If an image is divided into multiple slice rows of slices with the same height, the current design allows signaling notification only for the height of the first slice row, and the heights of the remaining slice rows can be inferred. Otherwise, if an image is divided into multiple slice rows of slices with different heights, it will explicitly signal the height of each slice row. Furthermore, if an image is divided into multiple slice rows where the first few slice rows have different heights and the last few slice rows have the same height, it will explicitly signal the heights of the first few slice rows and only one of the last few slice rows, and then the heights of the remaining slice rows with the same height will be inferred without signaling notification. By combining explicit signaling notifications and implicit inference, the current design works well for these three cases. However, there is another case: if an image is divided into multiple slice rows where the first few slice rows have the same height and the last few slice rows have different heights. In this scenario, the current design appears less efficient because implicit inference doesn't apply, and it still requires explicit signaling to inform the height of each slice row. Similarly, the same issue exists for slice column signaling and rectangular stripe layout signaling, where stripe height signaling is required when the stripe is smaller than the slice. Modifications can be applied here to improve this approach.

[1074] 7) Currently, the GCI syntax element no_aps_constraint_flag is used to disable NAL units with nuh_unit_type equal to PREFIX_APS_NUT or SUFFIX_APS_NUT. If ALF APS are not implemented, further constraints are expected to be proposed in the draft.

[1075] 8) Currently, the consistency window parameters are always signaled in the PPS, including when the image width and height are the same as the maximum image width and height signaled in the SPS referenced by the PPS. On the other hand, the consistency window parameters of the image with the maximum image width and height are also signaled in the SPS. The signaling notification of the consistency window parameters of the image with the maximum image width and height in the PPS is redundant.

[1076] 5. List of Examples of Implementation Methods and Technologies

[1077] To address the aforementioned issues and some other unmentioned problems, the following summarized methods are disclosed. Technical solutions should be considered as examples for explaining general concepts, and not interpreted in a narrow way. Furthermore, these technical solutions can be applied individually or in combination in any way.

[1078] In the following description, regarding the prior text changes based on the latest working draft JVET-Q2001-vD, the deleted parts are highlighted in double brackets (e.g., [[]]), where the deleted text is between the double brackets, while the added parts are in bold italics.

[1079] 1. Regarding the value of the APS syntax element scaling_list_chroma_present_flag, which depends on the SPS syntax element used to address the first issue, one or more of the following methods are exposed:

[1080] 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, the syntax structure of adaptation_parameter_set_rbsp() can be modified as follows:

[1081]

[1082] `aps_seq_parameter_set_id` specifies the value of `sps_seq_parameter_set_id` for the APS. The value of `aps_seq_parameter_set_id` should be in the range of 0 to 15 (inclusive). The value of `aps_seq_parameter_set_id` should be the same in all APS referenced by the codec image in CLVS.

[1083] a. Alternatively, the signaling notification for the chroma scaling list can be explicitly adjusted based on the value of ChromaArrayType; for example, the syntax table of scaling_list_data() can be modified as follows:

[1084]

[1085] Furthermore, the semantics of scaling_list_chroma_present_flag have been changed as follows:

[1086] `scaling_list_chroma_present_flag` equal to 1 indicates that the chroma scaling list exists in `scaling_list_data()`. `scaling_list_chroma_present_flag` equal to 0 indicates that the chroma scaling list does not exist in `scaling_list_data()`. Bitstream consistency requires that `scaling_list_chroma_present_flag` should be 0 when `ChromaArrayType` is 0, and should be 1 when `ChromaArrayType` is not 0.

[1087] 2) In one example, the VPS and / or SPS and / or PPS associated with the AP can be implicitly exported.

[1088] a. For example, if the APS is referenced by a video unit (such as a picture header or a strip header), and the video unit depends on the VPS and / or SPS and / or PPS, then the APS is implicitly associated with the VPS and / or SPS and / or PPS.

[1089] 3) In one example, instead of using a user-defined scaling list (also known as an explicit scaling list), flat quantization (the default scaling list) can be used for chroma blocks, even when the explicit scaling list is applied to luma blocks.

[1090] a. Alternatively, even if the explicit scaling list of the luminance blocks is signaled in the bitstream, the explicit scaling list of the chrominance blocks may not be signaled.

[1091] 4) Alternatively, the value of scaling_list_chroma_present_flag can be decoupled from the value of ChromaArrayType.

[1092] a. Indications on whether to use an explicit scaling list or a default scaling list for different color components (e.g., luminance blocks and chrominance blocks) can be signaled / controlled separately.

[1093] i. In one example, syntax elements (e.g., one or more flags) can be added to SPS / PPS / PH / SH to specify whether a user-defined scaling list (also known as an explicit scaling list) is enabled for the luminance and / or chrominance components.

[1094] ii. For example, a flag can be added to SPS to allow the luminance transformation coefficients to switch between planar quantization (the default scaling list) and a user-defined scaling list.

[1095] iii. For example, one or more flags can be added to SPS to allow the chroma-U and / or chroma-V transform coefficients to switch between flat quantization (the default scaling list) and a user-defined scaling list.

[1096] b. For example, when ChromaArrayType equals 0, scaling_list_chroma_present_flag can equal 1.

[1097] i. In one example, for a 4:0:0 chroma format encoded image, N (e.g., N=28) groups of scaling matrices can be signaled in the APS.

[1098] ii. In one example, for a 4:4:4 chroma format encoded image with a separate_colour_plane_flag of 1, the scaling matrix can be signaled in the APS to M (e.g., M=28).

[1099] a) For example, when separate_colour_plane_flag equals 1 and M (e.g., M=28) sets of scaling matrices are signaled in the APS, each of the Y (luminance), U (Cb), and V (Cr) channel transform coefficients can be considered as the luminance-Y channel, and the scaling matrix identifier variable id for the Y, U, and V transform coefficients is derived with respect to the color component being equal to the Y component (e.g., value 0).

[1100] b) Alternatively, if separate_colour_plane_flag equals 1 and M (e.g., M=28) scaling matrices are signaled in the APS, the scaling matrix identifier variable id for the luminance-Y transform coefficients is derived with respect to the color component being equal to the Y component (e.g., value 0), while the scaling matrix identifier variable id for chrominance-U is derived with respect to the color component being equal to the U component (e.g., value 1), and the scaling matrix identifier variable id for chrominance-V is derived with respect to the color component being equal to the V component (e.g., value 2).

[1101] c. For example, when ChromaArrayType equals 1, scaling_list_chroma_present_flag can equal 0.

[1102] i. In one example, whether chroma transformation coefficients are allowed to use a user-defined scaling list can depend on the value of scaling_list_chroma_present_flag.

[1103] a) For example, when scaling_list_chroma_present_flag is equal to 0, regardless of the values ​​of sps_scaling_list_enabled_flag, ph_scaling_list_enabled_flag, and slice_scaling_list_enabled_flag, the user-defined scaling list is not allowed to be used for chroma transformation coefficients (for example, the value of the flag used to specify the use of the user-defined scaling list for chroma addition needs to be equal to a number, such as 0 or 1).

[1104] b) For example, when scaling_list_chroma_present_flag equals 1, a user-defined scaling list can be used for chroma transformation coefficients.

[1105] ii. In one example, for encoded and decoded images in 4:2:0 and / or 4:2:2 chroma format and / or 4:4:4 chroma format (where separate_colour_plane_flag equals 0), N (e.g., N=10) sets of scaling matrices can be signaled in the APS.

[1106] a) For example, if ChromaArrayType is greater than 0 and N (e.g., N=10) sets of scaling matrices are signaled in the APS, the scaling matrices of the U and / or V transform coefficients can be derived from the N sets of scaling matrices of the Y transform coefficients signaled in the APS.

[1107] b) Alternatively, if ChromaArrayType is greater than 0 and the signaling in the APS indicates N (e.g., N=10) sets of scaling matrices, the U and / or V transform coefficients may not use the user-defined scaling list (instead, the U and / or V transform coefficients may use flat quantization with a default scaling factor).

[1108] d. For example, semantic constraints on scaling_list_chroma_present_flag based on ChromaArrayType may not be associated with the syntax element scaling_list_chroma_present_flag, as follows:

[1109] 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()`. [[The bitstream consistency requirement is that `scaling_list_chroma_present_flag` should be 0 when `ChromaArrayType` is 0, and should be 1 when `ChromaArrayType` is not 0.]]

[1110] e. For example, the semantic constraints regarding scaling_list_chroma_present_flag based on ChromaArrayType can be changed as follows:

[1111] 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(). The bitstream consistency requirement is that when ChromaArrayType equals 0, scaling_list_chroma_present_flag should equal 0.

[1112] 5) Alternatively, constraints can be added associated with the PH and / or SH syntax elements to constrain the value of scaling_list_chroma_present_flag to a certain value (e.g., 0 or 1) based on the ChromaArrayType derived from the PH / SH syntax elements, as shown below:

[1113] In one example, the semantics of ph_scaling_list_aps_id are changed as follows:

[1114] `ph_scaling_list_aps_id` specifies the `adaptation_parameter_set_id` of the scaling list APS. The `TemporalId` of the APS NAL cell whose `aps_params_type` is equal to `SCALING_APS` and whose `adaptation_parameter_set_id` is equal to `ph_scaling_list_aps_id` should be less than or equal to the `TemporalId` of the image associated with the PH.

[1115]

[1116] Alternatively, the semantics of ph_scaling_list_aps_id can be changed as follows:

[1117] `ph_scaling_list_aps_id` specifies the `adaptation_parameter_set_id` of the scaling list APS. The `TemporalId` of the APS NAL cell whose `aps_params_type` is equal to `SCALING_APS` and whose `adaptation_parameter_set_id` is equal to `ph_scaling_list_aps_id` should be less than or equal to the `TemporalId` of the image associated with the PH.

[1118]

[1119] Alternatively, the semantics of ph_scaling_list_aps_id can be changed as follows:

[1120] `ph_scaling_list_aps_id` specifies the `adaptation_parameter_set_id` of the scaling list APS. The `TemporalId` of the APS NAL cell whose `aps_params_type` is equal to `SCALING_APS` and whose `adaptation_parameter_set_id` is equal to `ph_scaling_list_aps_id` should be less than or equal to the `TemporalId` of the image associated with the PH.

[1121]

[1122] Furthermore, the semantics of APS SE have been changed as follows:

[1123] 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()`. [[The bitstream consistency requirement is that `scaling_list_chroma_present_flag` should be 0 when `ChromaArrayType` is 0, and should be 1 when `ChromaArrayType` is not 0.]]

[1124] 2. Regarding unnecessary chroma-related APS syntax element signaling notifications when ChromaArrayType equals 0, and to address the second issue, one or more of the following methods are disclosed:

[1125] 1) In one example, syntax elements (e.g., flags) can be added to the APS syntax structure lmcs_data() to control the presence of APS syntax elements related to chroma residual scaling (e.g., lmcs_delta_abs_crs, lmcs_delta_sign_crs_flag, etc.).

[1126] a. For example, when ChromaArrayType equals 0, it is required that signaling notifications related to APS syntax elements (e.g., lmcs_delta_abs_crs, lmcs_delta_sign_crs_flag, etc.) be disallowed, for example, requiring the added flag to be equal to a certain value, such as 0 or 1.

[1127] b. For example, when ChromaArrayType is not equal to 0, signaling is required to notify APS syntax elements related to chroma residual scaling (e.g., lmcs_delta_abs_crs, lmcs_delta_sign_crs_flag, etc.), such as adding a flag equal to a certain value, such as 0 or 1.

[1128] c. For example, whether the current stripe is allowed to use chroma residual scaling may depend on the added flags. For example, if the added flags indicate that no signaling is required for APS syntax elements related to chroma residual scaling, then chroma residual scaling will never be used, regardless of the values ​​of sps_lmcs_enabled_flag, ph_lmcs_enabled_flag, ph_chroma_residual_scale_flag, and sh_lmcs_enabled_flag.

[1129] 2) Bitstream constraints can be added under the semantics of PH / SH / APS syntax elements to constrain the value of lmcs_delta_abs_crs with respect to the value of ChromaArrayType, for example as follows:

[1130] `ph_lmcs_aps_id` specifies the `adaptation_parameter_set_id` of the LMCS APS referenced by the stripe associated with the PH. The TemporalId of the APS NAL cell whose `aps_params_type` is equal to `LMCS_APS` and whose `adaptation_parameter_set_id` is equal to `ph_lmcs_aps_id` should be less than or equal to the TemporalId of the image associated with the PH.

[1131]

[1132] Alternatively, the semantics of ph_lmcs_aps_id can be changed as follows:

[1133] `ph_lmcs_aps_id` specifies the `adaptation_parameter_set_id` of the LMCS APS referenced by the stripe associated with the PH. The TemporalId of the APS NAL cell whose `aps_params_type` is equal to `LMCS_APS` and whose `adaptation_parameter_set_id` is equal to `ph_lmcs_aps_id` should be less than or equal to the TemporalId of the image associated with the PH.

[1134]

[1135] Alternatively, the semantics of ph_lmcs_aps_id can be changed as follows:

[1136] `ph_lmcs_aps_id` specifies the `adaptation_parameter_set_id` of the LMCS APS referenced by the stripe associated with the PH. The TemporalId of the APS NAL cell whose `aps_params_type` is equal to `LMCS_APS` and whose `adaptation_parameter_set_id` is equal to `ph_lmcs_aps_id` should be less than or equal to the TemporalId of the image associated with the PH.

[1137]

[1138] 3. In the example above, the term "ChromaArrayType" can be replaced with "Check color format equals 4:0:0".

[1139] 4. Regarding the use of RRC and TSRC to solve the third problem, one or more of the following methods are disclosed:

[1140] 1) Signaling notifications for TSRC enable / disable flags (e.g., slice_ts_residual_coding_disabled_flag) can be conditional on whether transform skipping is enabled (e.g., sps_transform_skip_enabled_flag in SPS).

[1141] a. In one example, the following can be applied:

[1142] if(!sps_transform_skip_enabled_flag) slice_ts_residual_coding_disabled_flag u(1)

[1143] b. Alternatively, if slice_ts_residual_coding_disabled_flag does not exist, infer that it is equal to 1.

[1144] 2) Alternatively, the value of the TSRC enabling flag (e.g., slice_ts_residual_coding_disabled_flag) can be constrained by the sps_transform_skip_enabled_flag in SPS. For example, the semantics of slice_ts_residual_coding_disabled_flag can be changed as follows:

[1145] `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. `slice_ts_residual_coding_disabled_flag` equal to 0 specifies that the `residual_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 that]] equals [[0]]1.

[1146] 3) Alternatively, if the signaling notification of the TSRC enable flag (e.g., slice_ts_residual_coding_disabled_flag) is not conditional on any other syntax element, it can always exist. For example, the semantics of slice_ts_residual_coding_disabled_flag can be changed as follows:

[1147] A `slice_ts_residual_coding_disabled_flag` value of 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` value of 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.]]

[1148] 4) In addition, TSRC can be applied to non-transform skip (non-TS) codec blocks.

[1149] a. In one example, one or more syntax flags can be added to specify whether TSRC or RRC is enabled for non-TS blocks.

[1150] i. In one example, one or more block-level (CTU / CU / TU) syntax flags can be added to specify whether the current video unit uses TSRC or RRC.

[1151] ii. Alternatively, one or more high-level (SPS / PPS / PH / SH) syntax flags can be added to specify whether the video unit allows TSRC.

[1152] b. In one example, whether to use TSRC for non-TS encoded blocks or whether to allow the use of TSRC for non-TS encoded blocks may depend on encoding / decoding information, such as the block's QP value.

[1153] i. In one example, for non-TS blocks where QP is equal to or not greater than X (e.g., X = 4), residual encoding / decoding using TSRC or RRC may be permitted.

[1154] 5. Regarding the on / off control of the cu qp increment of the luma block used to solve the fourth problem, one or more of the following methods are disclosed:

[1155] a. SH-level syntax elements (e.g., flags represented by slice_cu_qp_delta_enabled_flag) can be added to control the enabling and / or disabling of cu qp increments for specific slices.

[1156] i. In one example, the existence of the suggested slice_cu_qp_delta_enabled_flag is conditional on cu_qp_delta_enabled_flag in the PPS. For example, the suggested slice_cu_qp_delta_enabled_flag is signaled only if cu_qp_delta_enabled_flag in the PPS is equal to 1. Otherwise (cu_qp_delta_enabled_flag in the PPS is equal to 0), the suggested slice_cu_qp_delta_enabled_flag is not signaled and is inferred to be equal to 0.

[1157] a) Alternatively, the suggested value of slice_cu_qp_delta_enabled_flag is constrained by the value of cu_qp_delta_enabled_flag in PPS. That is, when cu_qp_delta_enabled_flag in PPS is equal to 0, the suggested value of slice_cu_qp_delta_enabled_flag should be equal to 0.

[1158] ii. In one example, the cu_qp_delta_enabled_flag in PPS can be used to control the presence of the SH-level cuqp incremental enable flag in SH, and / or the presence of cu_qp_delta_abs and / or cu_qp_delta_sign_flag in the transform unit syntax and palette codec syntax.

[1159] iii. In one example, the syntax structure can be changed as follows:

[1160] The PPS syntax structure has been changed as follows:

[1161]

[1162] A flag of pps_cu_qp_delta_enabled_flag equal to 1 indicates that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice exist in the PH of the reference PPS, and cu_qp_delta_abs may exist in the transform unit syntax. In the context of PPS, a value of 0 for `pps_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 referenced PPS's PH, and the transformation unit... cu_qp_delta_abs does not exist.

[1163] Furthermore, the PH syntax structure has been changed as follows:

[1164]

[1165]

[1166] Furthermore, the SH syntax structure has been changed as follows:

[1167]

[1168]

[1169] b. Furthermore, the presence of cu_qp_delta_abs in the syntax structure palette_coding() and / or transform_unit() is conditional on the proposed slice_cu_qp_delta_enabled_flag. For example, cu_qp_delta_abs is signaled only if the proposed slice_cu_qp_delta_enabled_flag is equal to 1; otherwise (if the proposed slice_cu_qp_delta_enabled_flag is equal to 0), the value of cu_qp_delta_abs is not signaled and is inferred to be equal to 0.

[1170] Alternatively, the chroma cu qp offset may not be controlled by the strip level on / off flag. For example, whether the chroma cu qp offset is applied to the current strip may depend on the PH / PPS / SPS level flag.

[1171] c. Alternatively, PH-level syntax elements (e.g., flags represented by ph_cu_qp_delta_enabled_flag) can be added to control the enabling and / or disabling of cu qp increments for specific stripes.

[1172] 6. Regarding the design of PPS SE's single_slice_per_subpic_flag, num_slices_in_pic_minus1, and tile_idx_delta_present_flag, and to address the fifth issue, one or more of the following methods are disclosed:

[1173] a. In one example, constraints can be added to the semantics of PH / SH / PPS syntax elements, as shown below:

[1174] The `ph_pic_parameter_set_id` parameter 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).

[1175] The requirement for bitstream consistency is that the TemporalId value of PH should be greater than or equal to the TemporalId value of PPS whose pps_pic_parameter_set_id is equal to ph_pic_parameter_set_id.

[1176]

[1177] b. In one example, the semantics of single_slice_per_subpic_flag can be changed as follows:

[1178] A single_slice_per_subpic_flag value of 1 indicates that each subpicture consists of one and only one rectangular stripe. A single_slice_per_subpic_flag value of 0 indicates that... Each sub-image may consist of one or more rectangular strips. When it does not exist, the value of single_slice_per_subpic_flag is inferred to be equal to 0.

[1179] c. In one example, constraints can be added to the semantics of single_slice_per_subpic_flag, as follows:

[1180] A single_slice_per_subpic_flag value of 1 indicates that each subpicture consists of one and only one rectangular stripe. A single_slice_per_subpic_flag value of 0 indicates that each subpicture can consist of one or more rectangular stripes. When it does not exist, the value of single_slice_per_subpic_flag is inferred to be 0.

[1181]

[1182] d. Alternatively, constraints can be added to the semantics of single_slice_per_subpic_flag, for example, as follows:

[1183] A single_slice_per_subpic_flag value of 1 indicates that each subpicture consists of one and only one rectangular stripe. A single_slice_per_subpic_flag value of 0 indicates that each subpicture can consist of one or more rectangular stripes. When it does not exist, the value of single_slice_per_subpic_flag is inferred to be 0.

[1184] e. In one example, the constraint is that when each subpicture consists of one and only one rectangular strip, single_slice_per_subpic_flag should be equal to 1.

[1185] f. Alternatively, the existence of the PPS syntax element tile_idx_delta_present_flag may not be adjusted based on num_slices_in_pic_minus1, for example, as follows:

[1186] [[if(num_slices_in_pic_minus1>0)]] tile_idx_delta_present_flag u(1)

[1187] g. In one example, the constraint is that when single_slice_per_subpic_flag equals 1, num_slices_in_pic_minus1 should equal sps_num_subpics_minus1.

[1188] h. Alternatively, the PPS syntax element num_slices_in_pic_minus1 can be changed to num_slices_in_pic_minus2.

[1189] i. Additionally, adjust the presence of tile_idx_delta_present_flag based on num_slices_in_pic_minus2, for example as follows:

[1190] num_slices_in_pic_minus[[1]]2 ue(v) [[if(num_slices_in_pic_minus1>0)]] tile_idx_delta_present_flag u(1)

[1191] num_slices_in_pic_minus[[1]]2 plus[[1]]2 specifies the number of rectangular stripes in each picture of the reference PPS. The value of num_slices_in_pic_minus[[1]]2 should be in the range of 0 to MaxSlicesPerPicture-[[1]]2 (inclusive), where MaxSlicesPerPicture is specified in Appendix A. When no_pic_partition_flag equals 1 value [[num_slices_in_pic_minus1 is inferred to be equal to 0]]. When single_slice_per_subpic_flag is equal to 1. [[num_slices_in_pic_minus1 is inferred]] It is equal to sps_num_subpics_minus1-1.

[1192] In addition, replace “num_slices_in_pic_minus1” with “NumSlicesInPic-1” everywhere else in the VVC draft text.

[1193] 7. Regarding signaling notifications for stripe and slice layouts used to address the sixth problem, one or more of the following methods are disclosed:

[1194] a. You can add syntax elements (e.g., one or more flags) in PPS to specify whether an image is divided into multiple slice rows / columns, where the first few slice rows / columns have the same height and the last few slice rows / columns have different heights / widths.

[1195] For example, the suggested syntax flags depend on no_pic_partition_flag and / or the number of explicit slice rows / slice columns (e.g., num_exp_tile_columns_minus1 and / or num_exp_tile_rows_minus1), as follows:

[1196]

[1197]

[1198]

[1199] ii. Additionally, when the suggested syntax flag is equal to 1, the slice column width and / or slice row height are derived based on the value of the suggested syntax flag, for example as follows:

[1200] The variable NumTileColumns specifies the number of slice columns, and colWidth[i], a list of values ​​ranging from 0 to NumTileColumns–1 (inclusive), specifies the width of the i-th slice column in CTB units, derived as follows:

[1201]

[1202] The variable NumTileRows specifies the number of slice rows, and the list of slice rows, ranging from 0 to NumTileRows-1 (inclusive), RowHeight[j] specifies the height of the j-th slice row in CTB units, derived as follows:

[1203]

[1204]

[1205] b. Additionally, similarly, in cases where a slice is divided into multiple stripes (in which case the strip size is smaller than the slice size), syntax elements (e.g., one or more flags) can be added to the PPS to specify whether the slice is divided into multiple strip lines, where the first few strip lines have the same height and the last few strip lines have different heights.

[1206] i. Additionally, when the suggested syntax flag is equal to 1, the slice height (e.g., SliceHeightInCtusMinus1) is derived based on the value of the suggested syntax flag.

[1207] 8. Regarding the case where ALF APS is not available to solve the seventh problem, one or more of the following methods are disclosed:

[1208] a. In one example, ALF APS may not be allowed when there are no ALF APS (e.g., no_aps_constraint_flag equals 1, or an APS with the required APS ID is unavailable). (In this case, sps_alf_enabled_flag and sps_ccalf_enabled_flag need to be equal to 0).

[1209] b. In one example, when there are no ALF APSs (e.g., no_aps_constraint_flag equals 1, or an APS with the required APS ID is unavailable), ALF can still be enabled (in which case sps_alf_enabled_flag is enabled to be equal to 0 or 1).

[1210] i. For example, when there are no ALF APS (e.g., no_aps_constraint_flag equals 1), ph_alf_enabled_flag and / or slice_alf_enabled_flag are allowed to be equal to 0 or 1.

[1211] ii. For example, when there are no ALF APS (e.g., no_aps_constraint_flag equals 1), chroma ALF and CC-ALF are not allowed, but luminance ALF with a fixed filter can be used.

[1212] iii. For example, when there are no ALF APS (e.g., no_aps_constraint_flag equals 1), the values ​​of ph_num_alf_aps_ids_luma, ph_alf_chroma_idc, slice_num_alf_aps_ids_luma, slice_alf_chroma_idc, and sps_ccalf_enabled_flag are required to be equal to 0.

[1213] c. In one example, ALF and / or CCALF are not allowed when the GCI syntax element no_alf_constraint_flag is equal to 1 (in this case, sps_alf_enabled_flag and / or sps_ccalf_enabled_flag need to be equal to 0).

[1214] d. Alternatively, whether signaling notifies the number of ALF APSs to be used (e.g., ph_num_alf_aps_ids_luma) and / or the ALF / CC-ALF APS indexes (e.g., ph_alf_aps_id_luma, ph_alf_aps_id_chroma, ph_cc_alf_cb_aps_id, ph_cc_alf_cr_aps_id) may depend on whether ALF APSs are allowed (e.g., no_aps_constraint_flag).

[1215] i. In one example, when ALF APS is not applied, the information can be notified without signaling.

[1216] e. In one example, a new syntax element can be signaled in SPS / PPS / PH / SH / GCI to disable ALF, and / or CCALF, and / or LMCS, and / or a user-defined scaling list.

[1217] 9. Signaling notification regarding the consistency window parameters used to resolve Problem 8:

[1218] a. In one example, when pic_width_in_luma_samples equals pic_width_max_in_luma_samples and pic_height_in_luma_samples equals pic_height_in_luma_samples, signaling notifications for the consistency window parameters (i.e., pps_conformance_window_flag, pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset) in PPS can be skipped.

[1219] i. In one example, a flag can be added to the PPS syntax, and when the value of this flag is equal to X (0 or 1), it is specified that pic_width_in_luma_samples is equal to pic_width_max_in_luma_samples and pic_height_in_luma_samples is equal to pic_height_max_in_luma_samples, and when the value of this flag is equal to 1–X, it is specified that pic_width_in_luma_samples is less than pic_width_max_in_luma_samples or pic_height_in_luma_samples is less than pic_height_max_in_luma_samples. However, it should be noted that even 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, it is still necessary to signal pic_width_in_luma_samples and pic_height_in_luma_samples in the PPS to avoid the dependency of the PPS on the SPS.

[1220] Furthermore, when the aforementioned flag equals X, signaling notifications for the consistency window parameters in PPS (i.e., pps_conformance_window_flag, pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset) are skipped, and the parameter values ​​are inferred to be equal to the parameter values ​​in SPS (i.e., sps_conformance_window_flag, sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset).

[1221] Figure 1This is a block diagram of an example video processing system 1900 that can implement the various techniques disclosed herein. Various implementations may include some or all of the components in system 1900. System 1900 may include an input 1902 for receiving video content. The video content may be received in a raw or uncompressed format (e.g., 8 or 10-bit multi-component pixel values), or in a compressed or encoded format. Input 1902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces (such as Ethernet, Passive Optical Networking (PON), etc.) and wireless interfaces (such as Wi-Fi or cellular interfaces).

[1222] System 1900 may include a codec component 1904 capable of implementing the various codec or encoding methods described in this document. Codec component 1904 can reduce the average bit rate of the video from input 1902 to the output of codec component 1904 to produce a codec representation of the video. Therefore, codec techniques are sometimes referred to as video compression or video transcoding techniques. The output of codec component 1904 can be stored or transmitted via connected communication, as represented by component 1906. The stored or communicated bitstream (or codec representation) of the video received at input 1902 can be used by component 1908 to generate pixel values ​​or displayable video that is sent to display interface 1910. The process of generating user-visible video from the bitstream is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “codec” operations or tools, it should be understood that the codec tool or operation is used at the encoder, and the corresponding decoding tool or operation will be inverted by the decoder to retrieve the result of the codec.

[1223] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Technology Accessory), PCI, IDE, etc. The technologies described in this document can be implemented in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of digital data processing and / or video display.

[1224] Figure 2This is a block diagram of a video processing apparatus 3600. Apparatus 3600 can be used to implement one or more of the methods described herein. Apparatus 3600 can be implemented in smartphones, tablets, computers, Internet of Things (IoT) receivers, etc. Apparatus 3600 may include one or more processors 3602, one or more memories 3604, and video processing circuitry 3606. The processors 3602(s) may be configured to implement one or more methods described herein. The memories 3604(s) may be used to store data and code used to implement the methods and techniques described herein. The video processing circuitry 3606 may be used to implement some of the techniques described herein in hardware circuitry.

[1225] Figure 4 This is a block diagram illustrating an example video codec system 100 that can utilize the techniques disclosed herein.

[1226] like Figure 4 As shown, the video encoding / decoding system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data, which may be referred to as a video encoding device. The destination device 120 can decode the encoded video data generated by the source device 110, and the destination device 120 may be referred to as a video decoding device.

[1227] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.

[1228] Video source 112 may include sources such as video capture devices, interfaces for receiving video data from video content providers, and / or computer graphics systems that generate video data, or combinations of these sources. Video data may include one or more pictures. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream may include a sequence of bits forming a codec representation of the video data. The bitstream may include codec pictures and associated data. A codec picture is a codec representation of a picture. Associated data may include sequence parameter sets, picture parameter sets, and other syntax elements. I / O interface 116 includes a modulator / demodulator (modem) and / or a transmitter. Encoded video data may be transmitted directly to destination device 120 via network 130a through I / O interface 116. Encoded video data may also be stored on storage medium / server 130b for access by destination device 120.

[1229] Destination device 120 may include I / O interface 126, video decoder 124 and display device 122.

[1230] I / O interface 126 may include a receiver and / or a modem. I / O interface 126 may acquire encoded video data from source device 110 or storage medium / server 130b. Video decoder 124 may decode the encoded video data. Display device 122 may display the decoded video data to a user. Display device 122 may be integrated with destination device 120 or may be external to destination device 120 configured to connect to an external display device.

[1231] The video encoder 114 and the video decoder 124 can operate according to video compression standards such as High Efficiency Video Codec (HEVC), Multi-Functional Video Codec (VVC), and other current and / or other standards.

[1232] Figure 5 This is a block diagram illustrating an example of a video encoder 200, which may be... Figure 4 The video encoder 114 in the system 100 shown in the figure.

[1233] The video encoder 200 can be configured to perform any or all of the techniques disclosed herein. Figure 5 In the example, the video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video encoder 200. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.

[1234] The functional components of the video encoder 200 may include a segmentation unit 201, a prediction unit 202 (which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205, and an intra-frame prediction unit 206), a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214.

[1235] In other examples, the video encoder 200 may include more, fewer, or different functional components. In one example, the prediction unit 202 may include an intra-block copy (IBC) unit. The IBC unit may perform prediction in IBC mode, where at least one reference picture is the picture in which the current video block is located.

[1236] Furthermore, some components, such as the motion estimation unit 204 and the motion compensation unit 205, can be highly integrated, but for interpretive purposes... Figure 5 The examples are shown separately.

[1237] The segmentation unit 201 can segment an image into one or more video blocks. The video encoder 200 and the video decoder 300 can support various video block sizes.

[1238] The mode selection unit 203 can, for example, select one of the intra-frame or inter-frame encoding / decoding modes based on the error result, and provide the obtained intra-frame or inter-frame encoded / decoded blocks to the residual generation unit 207 to generate residual block data and to the reconstruction unit 212 to reconstruct the encoded blocks for use as reference images. In some examples, the mode selection unit 203 can select a combined intra-frame and inter-frame prediction (CIIP) mode, where the prediction is based on the inter-frame prediction signal and the intra-frame prediction signal. The mode selection unit 203 can also select the resolution of the motion vector (e.g., sub-pixel or full-pixel precision) for the blocks in the inter-frame prediction case.

[1239] To perform inter-frame prediction for the current video block, motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. Motion compensation unit 205 can determine the predicted video block for the current video block based on the motion information of the image from buffer 213 (rather than the image associated with the current video block) and decoded samples.

[1240] The motion estimation unit 204 and the motion compensation unit 205 can perform different operations on the current video block, for example, the different operations performed depend on whether the current video block is in an I-strip, a P-strip, or a B-strip.

[1241] In some examples, motion estimation unit 204 can perform unidirectional prediction of the current video block, and can search for a reference video block for the current video block in the reference images of list 0 or list 1. Motion estimation unit 204 can then generate a reference index indicating that the reference image in list 0 or list 1 contains the reference video block, and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.

[1242] In other examples, motion estimation unit 204 can perform bidirectional prediction of the current video block. Motion estimation unit 204 can search for a reference video block for the current video block in the reference images of list 0 and can also search for another reference video block for the current video block in the reference images of list 1. Motion estimation unit 204 can then generate a reference index indicating that the reference images in list 0 or list 1 contain the reference video block, and a motion vector indicating the spatial displacement between the reference video block and the current video block. Motion estimation unit 204 can output the reference index and the motion vector of the current video block as the motion information of the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the reference video block indicated by the motion information of the current video block.

[1243] In some examples, the motion estimation unit 204 can output the complete set of motion information for the decoder's decoding process.

[1244] In some examples, motion estimation unit 204 may not output the complete set of motion information for the current video. Instead, motion estimation unit 204 may signal the motion information of the current video block by referencing the motion information of another video block. For example, motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of neighboring video blocks.

[1245] In one example, the motion estimation unit 204 may indicate in the syntax structure associated with the current video block that the current video block has the same motion information value as another video block.

[1246] In another example, motion estimation unit 204 can identify another video block and motion vector difference (MVD) in the syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicating video block. Video decoder 300 can use the motion vector of the indicating video block and the motion vector difference to determine the motion vector of the current video block.

[1247] As discussed above, the video encoder 200 can predictively signal motion vectors. Two examples of predictive signaling notification techniques that can be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and merge pattern signaling notification.

[1248] Intra-prediction unit 206 can perform intra-prediction on the current video block. When intra-prediction unit 206 performs intra-prediction on the current video block, it can generate prediction data for the current video block based on decoded samples from other video blocks in the same frame. The prediction data for the current video block can include the predicted video block and various syntax elements.

[1249] The residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) multiple predicted video blocks from the current video block. The residual data for the current video block can include residual video blocks corresponding to different sample components of the samples in the current video block.

[1250] In other examples, such as in skip mode, residual data for the current video block may not exist, and the residual generation unit 207 may not perform a subtraction operation.

[1251] The transform processing unit 208 can generate one or more transform coefficient video blocks of the current video block by applying one or more transforms to the residual video block associated with the current video block.

[1252] After the transform processing unit 208 generates a transform coefficient video block associated with the current video block, the quantization unit 209 can quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values ​​associated with the current video block.

[1253] The inverse quantization unit 210 and the inverse transform unit 211 can apply inverse quantization and inverse transform to the transform coefficient video block respectively to reconstruct the residual video block from the transform coefficient video block. The reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples of one or more predicted video blocks generated by the prediction unit 202 to produce a reconstructed video block associated with the current block for storage in the buffer 213.

[1254] After the video block is reconstructed in reconstruction unit 212, a loop filtering operation can be performed to reduce video block artifacts in the video block.

[1255] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, it can perform one or more entropy encoding operations to generate entropy encoded data and output a bitstream including the entropy encoded data.

[1256] Some embodiments of the disclosed technology involve making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of video blocks, but not necessarily modify the resulting bitstream based on the use of the tool or mode. That is, when the video processing tool or mode is enabled based on the decision or determination, the conversion from video blocks to video bitstream (or bitstream representation) will use that video processing tool or mode. In another example, when a video processing tool or mode is enabled, the decoder will process the bitstream knowing that it has been modified based on the video processing tool or mode. That is, the conversion from video bitstream to video blocks will be performed using the video processing tool or mode enabled based on the decision or determination.

[1257] Figure 6 This is a block diagram illustrating an example of a video decoder 300, which may be... Figure 4 The video decoder 114 in the system 100 shown in the figure.

[1258] The video decoder 300 can be configured to perform any or all of the techniques disclosed herein. Figure 6 In the example, the video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.

[1259] exist Figure 6 In the example, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 can perform operations related to the video encoder 200 ( Figure 5 The decoding process is the overall inversion of the encoding process described.

[1260] Entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-encoded video data (e.g., encoded blocks of video data). Entropy decoding unit 301 can decode the entropy-encoded video, and based on the entropy-encoded video data, motion compensation unit 302 can determine motion information including motion vectors, motion vector precision, reference image list index, and other motion information. Motion compensation unit 302 can determine such information, for example, by performing AMVP and merge modes.

[1261] The motion compensation unit 302 can generate motion compensation blocks, possibly based on interpolation filters. The identifier of the interpolation filter to be used at sub-pixel precision can be included in the syntax element.

[1262] The motion compensation unit 302 can use the interpolation filter used by the video encoder 200 during the encoding of the video block to calculate the interpolation values ​​of a sub-integer number of pixels of the reference block. The motion compensation unit 302 can determine the interpolation filter used by the video encoder 200 based on the received syntax information and use the interpolation filter to generate the prediction block.

[1263] The motion compensation unit 302 can use some syntactic information to determine: the size of the blocks used to encode (multiple) frames and / or (multiple) stripes of the encoded video sequence, segmentation information describing how each macroblock of the image of the encoded video sequence is segmented, a mode indicating how each segment is encoded, one or more reference frames (and a list of reference frames) for each inter-frame coded block, and other information for decoding the encoded video sequence.

[1264] Intra-prediction unit 303 can use, for example, an intra-prediction mode received in the bitstream to form prediction blocks from spatially adjacent blocks. Inverse quantization unit 303 inverse quantizes (i.e., dequantizes) the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.

[1265] The reconstruction unit 306 can sum the residual blocks using the corresponding prediction blocks generated by the motion compensation unit 202 or the intra-frame prediction unit 303 to form a decoded block. As desired, a deblocking filter can also be applied to filter the decoded block to remove blocking artifacts. The decoded video block is then stored in a buffer 307, which provides a reference block for subsequent motion compensation / intra-frame prediction and also produces the decoded video for presentation on the display device.

[1266] The following provides a list of preferred solutions for some embodiments.

[1267] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 1).

[1268] 1. A video processing method (e.g., Figure 3 The method described in the text (300) includes performing a conversion (302) between a video region of a video and a codec representation of the video; wherein the codec representation conforms to a format rule; wherein the format rule specifies that a flag indicating whether a scaling list of color components in the video is included in an adaptive parameter set is independent of the syntax field values ​​in the sequence parameter set.

[1269] 2. The method according to Solution 1, wherein the format rules specify that the adaptive parameter set includes a field for identifying the sequence parameter set.

[1270] 3. According to the method described in Solution 1, the format rules specify the implicit relationship between the adaptive parameter set and the video parameter set of the sequence parameter set or the picture parameter set, and the control scaling list is included in the encoding / decoding representation.

[1271] 4. The method according to any one of solutions 1-3, wherein the formatting rules specify the format for inclusion in a user-defined or explicit scaling list used during conversion.

[1272] 5. The method according to any one of solutions 1-4, wherein the format rules specify that the codec representation includes flags independent of the syntax elements of the array type containing indicators of chroma components.

[1273] 6. The method according to Solution 5, wherein the flag indicates that a scaling list is included, and the syntax element indicating the array type of chroma components is set to zero.

[1274] 7. The method according to Solution 5, wherein the flag indicates the exclusion scaling list, and the syntax element indicating the array type of chroma components is set to 1.

[1275] 8. The method according to Solution 1, wherein the formatting rules specify that the mark is constrained by the constraint rules to depend on the picture header or the strip header.

[1276] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 2).

[1277] 9. A video processing method comprising: performing a conversion between a video region of a video and a codec representation of the video region; wherein the codec representation conforms to a format rule; wherein the format rule specifies that one or more adaptive parameter sets are included in the codec representation, such that for each adaptive parameter set, chroma-related syntax elements are omitted due to chroma constraints on the video.

[1278] 10. The method according to Solution 9, wherein, for each adaptive parameter set, a syntax element signaling notification indicates whether a chroma-related syntax element is included in the adaptive parameter set.

[1279] 11. The method according to Solution 9, wherein the format rule specifies that a chroma-related field from a picture header or stripe header or an adaptive parameter set is conditionally included if and only if the chroma constraint indicates that chroma is present in the codec representation of the video.

[1280] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 3).

[1281] 12. The method according to any one of claims 9-11, wherein the chroma constraint is a chroma array type equal to zero.

[1282] 13. The method according to any one of solutions 9-11, wherein the chroma constraint is that the video format is equal to 4:0:0.

[1283] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 4).

[1284] 14. A video processing method comprising: performing a conversion between a video comprising one or more video regions and a codec representation of the video, the one or more video regions comprising one or more video units; wherein the codec representation conforms to a format rule; wherein the format rule specifies whether a first transform codec syntax field is included in the codec representation at the level of the video unit of the video region and / or its value depends on the value of a second transform codec syntax field at the level of the video region.

[1285] 15. The method according to solution 14, wherein the first transform codec syntax field is slice_ts_residual_coding_disabled_flag, and wherein the second transform codec syntax field is sps_transform_skip_enabled_flag.

[1286] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 5).

[1287] 16. A video processing method comprising: performing a conversion between a video comprising one or more video regions and a codec representation of the video, each video region comprising one or more video units; wherein the codec representation conforms to a format rule; wherein the format rule specifies a flag control at the video unit level for enabling differential signaling notification of quantization parameters for the conversion.

[1288] 17. The method according to solution 16, wherein a flag at the video unit level controls whether a second flag at the codec unit or transform unit level is included for signaling notification using differential quantization parameters.

[1289] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 6).

[1290] 18. A video processing method comprising: performing a conversion between a video comprising one or more video regions and a codec representation of the video, each video region comprising one or more video units; wherein the codec representation conforms to a format rule; wherein the format rule specifies the interpretation of a first marker at the picture level indicating the number of subpictures and a second marker at the picture level indicating the number of stripes in the subpictures.

[1291] 19. The method according to solution 18, wherein the formatting rule specifies that if a first flag is set to 1 and a second flag is set to 1, then at least one sub-image in the image comprises multiple stripes.

[1292] 20. The method described in Solution 18, wherein the formatting rules stipulate that since the first flag is zero and there is a single stripe in each image, the second flag must be set to 1.

[1293] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 7).

[1294] 21. A video processing method comprising: performing a conversion between a video comprising one or more video images and a codec representation of the video, each video image comprising one or more stripes and / or one or more slices; wherein the codec representation conforms to a format rule; wherein the format rule specifies that fields in a set of image parameters associated with the video image indicate whether the video image is divided into multiple slice rows or slice columns of different heights or widths.

[1295] 22. The method according to solution 21, wherein the second field in the codec representation indicates whether a video image slice is divided into multiple stripe rows with different heights.

[1296] 23. The method according to solution 22, wherein the second field indicates the strip height of the plurality of strip rows.

[1297] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Project 8).

[1298] 24. A video processing method comprising: performing a conversion between a video comprising one or more video frames and a codec representation of the video, each video frame comprising one or more stripes and / or one or more slices; wherein the codec representation conforms to a format rule; wherein the format rule specifies that the applicability of adaptive loop filtering to a video region is based on a second rule, provided that an adaptive parameter set excludes an indication of adaptive loop filtering.

[1299] 25. The method described in solution 24, wherein the second rule specifies that adaptive loop filtering is disabled for video regions.

[1300] 26. The method according to solution 24, wherein the second rule specifies that the value of the flag based on the sequence parameter set level conditionally allows adaptive loop filtering.

[1301] The following solutions illustrate example implementations of the techniques discussed in the previous chapter (e.g., Item 9).

[1302] 27. A video processing method comprising: performing a conversion between a video comprising one or more video images and a codec representation of the video, each video image comprising one or more stripes and / or one or more slices; wherein the codec representation conforms to a format rule; wherein the format rule specifies that for an image having a width and height of the video, a maximum width and a maximum height, explicit signaling notifications of a consistency window parameter in a set of image parameters are skipped.

[1303] 28. The method according to solution 27, wherein the formatting rule further specifies, in the case of skipping explicit signaling notification, a flag indicating whether the width and height are equal to the maximum width and maximum height.

[1304] 29. The method according to any one of solutions 1-28, wherein the video region includes video images.

[1305] 30. The method according to any one of solutions 1-29, wherein the video unit comprises a video strip or a video encoding / decoding unit.

[1306] 31. The method according to any one of solutions 1 to 30, wherein the conversion includes encoding the video into a codec representation.

[1307] 32. The method according to any one of solutions 1 to 30, wherein the conversion includes decoding the encoding / decoding representation to generate pixel values ​​of the video.

[1308] 33. A video decoding apparatus, comprising a processor configured to implement the method described in one or more of solutions 1 to 32.

[1309] 34. A video encoding apparatus comprising a processor configured to implement the method described in one or more of solutions 1 to 32.

[1310] 35. A computer program product having computer code stored thereon, which, when executed by a processor, causes the processor to implement the method of any one of solutions 1 to 32.

[1311] 36. The methods, apparatus or systems described in this document.

[1312] Figure 7This is a flowchart of an example method 700 for video processing. Operation 702 includes performing a conversion between a video containing video units and a video bitstream according to rules, wherein the rules specifying whether and how information related to the scaling list of the video is included in the Adaptive Parameter Set (APS) are based on a first syntax element and independent of one or more syntax elements in the Sequence Parameter Set (SPS), the first syn...

Claims

1. A method for processing video data, comprising: The conversion between the video unit and the bitstream of the video is performed according to the rules. The rule stipulates that the first bitstream constraint under the semantics of the first target syntax element in the image header PH is applied to the value of the second target syntax element of the constraint adaptive parameter set APS network abstraction layer NAL unit, wherein the APS NAL unit has a scaled APS type and has an APS identifier equal to the value of the first target syntax element. Wherein, the value of the first target syntax element indicates the APS identifier of the scaling list APS referenced by the PH, and the value of the second target syntax element indicates whether the chroma scaling list exists in the scaling list data syntax structure. Wherein, the first bitstream constraint is that when the chroma format is 4:0:0, the value of the second target syntax element is equal to a first specific value, the first specific value indicating that the chroma scaling list does not exist in the scaling list data syntax structure, wherein the first specific value is equal to 0.

2. The method according to claim 1, wherein, The rule also specifies that one or more third syntax elements in the sequence parameter set SPS or PH or the strip header SH include flags indicating whether the explicit scaling list is enabled for the luminance and / or chrominance components.

3. The method according to claim 1, wherein, The rule also specifies that whether the APS includes one or more fourth syntax elements for chroma residual scaling of a luminance mapping (LMCS) tool with chroma scaling depends on a fifth syntax element present in the LMCS syntax structure of the APS, the fifth syntax element being used to control the presence of the one or more fourth syntax elements.

4. The method according to claim 3, wherein, The rule also specifies that when the chroma format is 4:0:0, the fifth syntax element equal to the second specific value indicates that the one or more fourth syntax elements are excluded from the APS; and The one or more fourth syntax elements include a sixth syntax element indicating the absolute codeword value of a variable associated with the luminance mapping tool with chroma scaling and a seventh syntax element indicating the symbol of the variable.

5. The method according to claim 1, wherein, The rule also stipulates that when the APS is referenced by a picture header or a strip header, and when the video unit depends on any one or more of the video parameter set (VPS), sequence parameter set (SPS), and picture parameter set (PPS), the APS is implicitly associated with any one or more of the VPS, SPS, or PPS.

6. The method according to claim 1, wherein, Performing the conversion includes encoding the video into the bitstream.

7. The method according to claim 1, wherein, Performing the conversion includes decoding the video from the bitstream.

8. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein, When the instruction is executed by the processor, the processor: The conversion between the video unit and the bitstream of the video is performed according to the rules. The rule stipulates that the first bitstream constraint under the semantics of the first target syntax element in the image header PH is applied to the value of the second target syntax element of the constraint adaptive parameter set APS network abstraction layer NAL unit, wherein the APS NAL unit has a scaled APS type and has an APS identifier equal to the value of the first target syntax element. Wherein, the value of the first target syntax element indicates the APS identifier of the scaling list APS referenced by the PH, and the value of the second target syntax element indicates whether the chroma scaling list exists in the scaling list data syntax structure. Wherein, the first bitstream constraint is that when the chroma format is 4:0:0, the value of the second target syntax element is equal to a first specific value, the first specific value indicating that the chroma scaling list does not exist in the scaling list data syntax structure, wherein the first specific value is equal to 0.

9. The apparatus according to claim 8, wherein, The rule also specifies that one or more third syntax elements in the sequence parameter set SPS or PH or the strip header SH include flags indicating whether the explicit scaling list is enabled for the luminance and / or chrominance components.

10. The apparatus according to claim 8, wherein, The rule also specifies that whether the APS includes one or more fourth syntax elements of chroma residual scaling with chroma scaling of the Luminance Mapping (LMCS) tool depends on a fifth syntax element present in the LMCS syntax structure of the APS, the fifth syntax element being used to control the presence of the one or more fourth syntax elements. The rule further specifies that when the chroma format is 4:0:0, the fifth syntax element equal to the second specific value indicates that one or more fourth syntax elements are excluded from the APS; and The one or more fourth syntax elements include a sixth syntax element indicating the absolute codeword value of a variable associated with the luminance mapping tool with chroma scaling and a seventh syntax element indicating the symbol of the variable.

11. The apparatus according to claim 8, wherein, The rule also stipulates that when the APS is referenced by a picture header or a strip header, and when the video unit depends on any one or more of the video parameter set (VPS), the sequence parameter set (SPS), and the picture parameter set (PPS), the APS is implicitly associated with any one or more of the VPS, the SPS, or the PPS.

12. A non-transitory computer-readable storage medium for storing instructions, said instructions causing a processor to: The conversion between the video unit and the bitstream of the video is performed according to the rules. in, The rule stipulates that the first bitstream constraint under the semantics of the first target syntax element in the image header PH is applied to the value of the second target syntax element of the constraint adaptive parameter set APS network abstraction layer NAL unit, wherein the APS NAL unit has a scaled APS type and has an APS identifier equal to the value of the first target syntax element. Wherein, the value of the first target syntax element indicates the APS identifier of the scaling list APS referenced by the PH, and the value of the second target syntax element indicates whether the chroma scaling list exists in the scaling list data syntax structure. Wherein, the first bitstream constraint is that when the chroma format is 4:0:0, the value of the second target syntax element is equal to a first specific value, the first specific value indicating that the chroma scaling list does not exist in the scaling list data syntax structure, wherein the first specific value is equal to 0.

13. The non-transitory computer-readable storage medium according to claim 12, wherein, The rule also specifies that one or more third syntax elements in the sequence parameter set SPS or PH or the strip header SH include flags indicating whether the explicit scaling list is enabled for the luminance and / or chrominance components.

14. The non-transitory computer-readable storage medium according to claim 12, wherein, The rule also specifies that whether the APS includes one or more fourth syntax elements of chroma residual scaling with chroma scaling of the Luminance Mapping (LMCS) tool depends on a fifth syntax element present in the LMCS syntax structure of the APS, the fifth syntax element being used to control the presence of the one or more fourth syntax elements. The rule further stipulates that when the chroma format is 4:0:0, the fifth syntax element equal to the second specific value indicates that one or more fourth syntax elements are excluded from the APS; The one or more fourth syntax elements include a sixth syntax element indicating the absolute codeword value of a variable associated with the chroma-scaled luminance mapping tool, and a seventh syntax element indicating the sign of the variable; and The rule further stipulates that when the APS is referenced by a picture header or a strip header, and when the video unit depends on any one or more of the video parameter set (VPS), the sequence parameter set (SPS), and the picture parameter set (PPS), the APS is implicitly associated with any one or more of the VPS, the SPS, or the PPS.

15. A non-transitory computer-readable recording medium for storing instruction and video bitstreams, wherein, When executed by the processor, the instructions cause the processor to perform a method, the method comprising: The bitstream is generated for the video, which includes video units, according to the rules. The rule stipulates that the first bitstream constraint under the semantics of the first target syntax element in the image header PH is applied to the value of the second target syntax element of the constraint adaptive parameter set APS network abstraction layer NAL unit, wherein the APS NAL unit has a scaled APS type and has an APS identifier equal to the value of the first target syntax element. Wherein, the value of the first target syntax element indicates the APS identifier of the scaling list APS referenced by the PH, and the value of the second target syntax element indicates whether the chroma scaling list exists in the scaling list data syntax structure. Wherein, the first bitstream constraint is that when the chroma format is 4:0:0, the value of the second target syntax element is equal to a first specific value, the first specific value indicating that the chroma scaling list does not exist in the scaling list data syntax structure, wherein the first specific value is equal to 0.

16. The non-transitory computer-readable recording medium according to claim 15, in, The rule also specifies that one or more third syntax elements in the sequence parameter set SPS or PH or the strip header SH include flags indicating whether the explicit scaling list is enabled for the luminance and / or chrominance components.

17. The non-transitory computer-readable recording medium according to claim 15, wherein, The rule also specifies that whether the APS includes one or more fourth syntax elements of chroma residual scaling with chroma scaling of the Luminance Mapping (LMCS) tool depends on a fifth syntax element present in the LMCS syntax structure of the APS, the fifth syntax element being used to control the presence of the one or more fourth syntax elements. The rule further stipulates that when the chroma format is 4:0:0, the fifth syntax element equal to the second specific value indicates that one or more fourth syntax elements are excluded from the APS; The one or more fourth syntax elements include a sixth syntax element indicating the absolute codeword value of a variable associated with the chroma-scaled luminance mapping tool, and a seventh syntax element indicating the sign of the variable; and The rule further stipulates that when the APS is referenced by a picture header or a strip header, and when the video unit depends on any one or more of the video parameter set (VPS), the sequence parameter set (SPS), and the picture parameter set (PPS), the APS is implicitly associated with any one or more of the VPS, the SPS, or the PPS.

18. A method for storing a video bitstream, comprising: The bitstream is generated for the video, which includes video units, according to the rules, and The bitstream is stored in a non-transitory computer-readable recording medium. The rule stipulates that the first bitstream constraint under the semantics of the first target syntax element in the image header PH is applied to the value of the second target syntax element of the constraint adaptive parameter set APS network abstraction layer NAL unit, wherein the APS NAL unit has a scaled APS type and has an APS identifier equal to the value of the first target syntax element. Wherein, the value of the first target syntax element indicates the APS identifier of the scaling list APS referenced by the PH, and the value of the second target syntax element indicates whether the chroma scaling list exists in the scaling list data syntax structure. Wherein, the first bitstream constraint is that when the chroma format is 4:0:0, the value of the second target syntax element is equal to a first specific value, the first specific value indicating that the chroma scaling list does not exist in the scaling list data syntax structure, wherein the first specific value is equal to 0.