General constraints on video coding
By incorporating constraint flags and adaptive parameter sets, the video coding standards address inefficiencies in syntax element management, enhancing encoding and decoding efficiency and compliance across various video coding layers.
Patent Information
- Application Number
- JP2023190717
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-04-13
- Filing Date
- 2023-11-08
- Publication Date
- 2024-12-17
- Estimated Expiration
- 2041-04-13
AI Technical Summary
Existing video coding standards face challenges in efficiently managing and constraining syntax elements and parameters across different levels and layers, leading to inefficiencies in video encoding and decoding processes.
The implementation of constraint flags and adaptive parameter sets in video coding, which control the presence and value of syntax elements at various levels, ensuring compliance with formatting rules and profile, tier, and level constraints.
Enhances the efficiency and flexibility of video encoding and decoding by ensuring consistent and compliant syntax element management across different video coding layers, improving overall video processing performance.
Smart Images

Figure 0007601494000142 
Figure 0007601494000143 
Figure 0007601494000144
Abstract
Description
[Technical field]
[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application is a divisional application of Patent Application No. 2022-562261 filed on October 12, 2022 based on International Patent Application No. PCT / CN2021 / 086873 filed on April 13, 2021, claiming priority to and the benefit of International Patent Application No. PCT / CN2020 / 084560 filed on April 13, 2020.
[0002] [Technical field] This patent document relates to image and video coding and decoding. [Background technology]
[0003] Digital video accounts for the largest bandwidth usage on the Internet and other digital communications networks, and the bandwidth demands for digital video usage are expected to continue to increase as the number of connected user devices capable of receiving and displaying video increases. Summary of the Invention
[0004] This document discloses techniques that may be used by video encoders and decoders to process coded representations of video using control information useful for decoding the coded representations.
[0005] In one exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video having one or more pictures and a coded representation of the video, each of the one or more pictures including exactly one slice, the coded representation conforming to a format rule, the format rule specifying that a first field in the coded representation indicating a profile, tier, and level to which the coded representation conforms includes a second field indicating whether syntax structures are present in the first field that signal various constraints observed during the conversion.
[0006] In another exemplary aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and one or more slices and a coded representation of the video, where the coded representation conforms to a format rule, the format rule specifying that values of one or more constraint flags at a first level in the coded representation control occurrence of one or more syntax elements at a sequence parameter set (SPS) level or a picture header (PH) level or a slice header (SH) level.
[0007] In another exemplary aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and one or more slices and a coded representation of the video, where the coded representation conforms to a format rule, the format rule specifying that values of one or more constraint flags at a first level in the coded representation constrain values of one or more syntax elements at a Picture Parameter Set (PPS) level.
[0008] In another example aspect, another video processing method is disclosed, the method including performing a conversion between a video including one or more pictures and one or more slices and a coded representation of the video, the coded representation conforming to a format rule specifying that the coded representation includes an adaptation parameter set including syntax elements for a video parameter set and / or a sequence parameter set and / or a picture parameter set identifier.
[0009] In another exemplary aspect, another video processing method is disclosed, the method including performing a conversion between a video including one or more pictures and one or more slices and a coded representation of the video, the coded representation conforming to a format rule specifying that the coded representation includes one or more general constraint flags applicable to the conversion, the one or more general constraint flags indicating applicability of general constraint information included in the coded representation to the conversion.
[0010] In another exemplary aspect, another video processing method is disclosed that includes performing a conversion between a video and a coded representation of the video, the coded representation conforming to a format rule, the format rule specifying that the coded representation conditionally includes a general constraint structure that conveys general constraint information based on characteristics of the video or the conversion.
[0011] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video having one or more pictures and a video bitstream in accordance with a format rule, where the format rule specifies that the presence and / or value of a syntax element in a picture parameter set that specifies whether certain coding information is present in a picture header or a slice header depends on a partitioning characteristic of the picture that references the picture parameter set.
[0012] In another exemplary aspect, another video processing method is disclosed, the method includes performing a conversion between a video including a video unit and a video bitstream in accordance with a format rule, the format rule specifying that an APS (Adaptation Parameter Set) syntax structure referenced by the video unit includes a syntax element indicating the presence of additional syntax elements in the APS.
[0013] In another exemplary aspect, another video processing method is disclosed, the method including performing a conversion between a video including one or more pictures and a video bitstream according to a format rule, the format rule specifying whether each picture includes only one slice and whether a picture header syntax structure is present in a slice header, the general constraint syntax structure including a syntax element.
[0014] In another exemplary aspect, another video processing method is disclosed, the method including performing conversion between video and a video bitstream according to a format rule, the format rule specifying that a syntax element indicating whether each picture includes only one slice is included in a general constraint syntax structure.
[0015] In another exemplary aspect, another video processing method is disclosed, the method including performing a conversion between a video and a video bitstream in accordance with a format rule, the format rule specifying that a bitstream conformance characteristic of the bitstream determines an allowed shape of a partition of a picture.
[0016] In yet another exemplary aspect, a video encoder apparatus is disclosed, the video encoder comprising a processor configured to perform the method described above.
[0017] In yet another exemplary aspect, a video decoder apparatus is disclosed, the video decoder comprising a processor configured to perform the method described above.
[0018] In yet another exemplary aspect, a computer readable medium is disclosed having code stored thereon, the code being in the form of processor executable code that embodies one of the methods described herein.
[0019] These and other features are described throughout this document. [Brief description of the drawings]
[0020] [Figure 1] 1 is a block diagram of an exemplary video processing system. [Diagram 2] FIG. 2 is a block diagram of a video processing device. [Diagram 3] 4 is a flow chart for an exemplary method of video processing. [Figure 4]1 is a block diagram illustrating a video coding system according to some embodiments of the present disclosure. [Diagram 5] 1 is a block diagram illustrating an encoder according to some embodiments of the present disclosure. [Figure 6] 2 is a block diagram illustrating a decoder according to some embodiments of the present disclosure. [Figure 7] 1 shows a flowchart of an exemplary method of video processing according to some implementations of the disclosed technology. [Figure 8] 1 shows a flowchart of an exemplary method of video processing according to some implementations of the disclosed technology. [Figure 9A] 1 shows a flowchart of an example method of video processing consistent with some implementations of the disclosed technology. [Figure 9B] 1 shows a flowchart of an example method of video processing consistent with some implementations of the disclosed technology. [Figure 9C] 1 shows a flowchart of an example method of video processing consistent with some implementations of the disclosed technology. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0021] Section headings are used in this document for ease of understanding and do not limit the applicability of the techniques and embodiments disclosed in each section to only that section. Furthermore, H.266 terminology is used in some descriptions for ease of understanding only, not to limit the scope of the disclosed techniques. As such, the techniques described herein are applicable to other video codec protocols and designs.
[0022] 1. Introduction This document relates to video coding technology. In particular, it relates to the design of constraint flag related syntax in video coding. The concepts may be applied individually or in various combinations to any video coding standard or non-standard video codec that supports multi-layer video coding, such as the developing Versatile Video Coding (VVC).
[0023] 2. Abbreviation APS Adaptation Parameter Set AU Access Unit AUD Access Unit Delimiter AVC Advanced Video Coding CLVS coding layer video sequence CPB Coded Picture Buffer CRA Clean Random Access CTU Coding Tree Unit CVS Coded Video Sequences DPB Decoded Picture Buffer DPS Decoding Parameter Set EOB End of bitstream EOS End of sequence GDR Gradual Decryption Refresh HEVC High Efficiency Video Coding HRD Hypothetical Reference Decoder IDR Instant Decryption Refresh JEM Joint Exploration Model MCTS Motion Constraint Tile Set NAL Network Abstraction Layer OLS output layer set PH Picture Header PPS Picture Parameter Set PTL Profiles, Tiers, and Levels PU Picture Unit RBSP Raw Byte Sequence Payload SEI Supplementary Extended Information SH slice header SPS Sequence Parameter Set SVC Scalable Video Coding VCL Video Coding Layer VPS Video Parameter Set VTM VVC test model VUI Video Usability Information VVC General purpose video coding
[0024] 3. Video coding introduction Video coding standards have evolved mainly through the development of well-known ITU-T and ISO / IEC standards. ITU-T created H.261 and H.263, ISO / IEC created MPEG-1 and MPEG-4 Visual, and the two organizations jointly created H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Coding (AVC), and H.265 / HEVC standards. Since H.262, video coding standards have been based on a hybrid video coding structure in which temporal prediction + transform coding is utilized. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, many new methods have been adopted by JVET and introduced into the reference software called the Joint Exploration Model (JEM). At the same time, JVET meetings are held once a quarter, and the new coding standard targets a 50% bitrate reduction compared to HEVC. The new video coding standard was officially named VVC (Versatile Video Coding) at the April 2018 JVET meeting, when the first version of the VVC Test Model (VTM) was released. As VVC standardization is an ongoing effort, new coding techniques are adopted for the VVC standard at every JVET meeting. And the VVC Working Draft and Test 0 Model VTM are updated after each meeting. The VVC project is currently aiming for technical finalization (FDIS) at the July 2020 meeting.
[0025] 3.1. General Profile, Tier and Level Syntax and Semantics In the latest VVC draft text, the syntax and semantics of general profiles, tiers and levels are as follows: [Table 1] The profile_tier_level( ) syntax structure provides level information, and optionally profile, tier, subprofile, and general constraint information. When the profile_tier_level() syntax structure is included in a VPS, OlsInScope is one or more OLSs specified by the VPS. When the profile_tier_level() syntax structure is included in an SPS, OlsInScope is an OLS that contains only the layer that is the lowest layer among the layers that reference the SPS, and this lowest layer is an independent layer. general_profile_idc indicates the profile to which OlsInScope conforms, as specified in Annex A. The bitstream shall not contain values of general_profile_idc other than those specified in Annex A. Other values of general_profile_idc are reserved for future use by ITU-T|ISO / IEC. general_tier_flag specifies the tier context for the interpretation of general_level_idc, as specified in Annex A. general_level_idc indicates the level to which OlsInScope conforms, as specified in Annex A. The bitstream shall not contain values of general_level_idc other than those specified in Annex A. Other values of general_level_idc are reserved for future use by ITU-T|ISO / IEC. NOTE 1 - A higher value of general_level_idc indicates a higher level. The maximum level signaled in a DCI NAL unit for OlsInScope may be higher but never lower than the level signaled in an SPS for a CLVS contained within OlsInScope. NOTE 2 - When an OlsInScope conforms to multiple profiles, general_profile_idc SHOULD indicate the profile that provides the preferred decoding result or the preferred bitstream identification, as determined by the encoder (in a manner not specified in this specification). NOTE 3 - When the CVSs of OlsInScope conform to different profiles, multiple profile_tier_level( ) syntax structures may be included in the DCI NAL unit such that for each CVS of OlsInScope, there is at least one set of indicated profiles, tiers, and levels for decoders capable of decoding the CVS. num_sub_profiles specifies the number of general_sub_profile_idc[i] syntax elements. general_sub_profile_idc[i] indicates the i-th interoperability metadata registered as specified in Rec. ITU-T T.35, and its content is not specified by this specification. sublayer_level_present_flag[i] equal to 1 specifies that level information is present in the profile_tier_level( ) syntax structure of the sublayer representation with TemporalId equal to i. sublayer_level_present_flag[i] equal to 0 specifies that level information is not present in the profile_tier_level( ) syntax structure of the sublayer representation with TemporalId equal to i. ptl_alignment_zero_bits shall be equal to 0. The semantics of the syntax element sublayer_level_idc[i], apart from the specification of the inference of absent values, is the same as the syntax element general_level_idc, but it applies to sublayer representations whose TemporalId is equal to i. When not present, the value of sublayer_level_idc[i] is inferred as follows: - sublayer_level_idc[maxNumSubLayersMinus1] is inferred to be equal to the general_level_idc of the same profile_tier_level() structure. - for i from maxNumSubLayersMinus1-1 to 0, inclusive (in descending order of i), sublayer_level_idc[i] is inferred to be equal to sublayer_level_idc[i+1].
[0026] 3.2. Syntax and Semantics of General Constraint Information In the latest VVC draft text, the syntax and semantics of the general constraint information are as follows: [Table 2] TIFF0007601494000003.tif201166general_progressive_source_flag and general_interlaced_source_flag are interpreted as follows: - If general_progressive_source_flag is equal to 1 and general_interlaced_source_flag is equal to 0, the source scan type of the picture in OlsInScope shall be interpreted as progressive only. - Otherwise, if general_progressive_source_flag is equal to 0 and general_interlaced_source_flag is equal to 1, the source scan type of the picture in OlsInScope shall be interpreted as interlaced only. - Otherwise, if general_progressive_source_flag is equal to 0 and general_interlaced_source_flag is equal to 0, the source scan type of the picture in OlsInScope shall be interpreted as unknown or unspecified. - Otherwise (general_progressive_source_flag is equal to 1 and general_interlaced_source_flag is equal to 1), the source scan type of each picture in the OlsInScope is indicated at the picture level using the syntax element source_scan_type in the Frame-Field Information SEI message. It is a bitstream conformance requirement that when general_progressive_source_flag is equal to 1 and general_interlaced_source_flag is equal to 1, a Frame-Field Information SEI message should be present in each AU. NOTE 1 - A decoder may ignore the values of general_progressive_source_flag and general_interlaced_source_flag. Furthermore, the actual source scan type of a picture is outside the scope of this specification, and it is unspecified how an encoder selects the values of general_progressive_source_flag and general_interlaced_source_flag. general_non_packed_constraint_flag equal to 1 specifies that no frame packing alignment SEI messages shall be present in the bitstream of OlsInScope. general_non_packed_constraint_flag equal to 0 imposes no such constraint. NOTE 2 - Decoders may ignore the value of general_non_packed_constraint_flag as there are no decoding process requirements associated with the presence or interpretation of the frame packing arrangement SEI message. general_frame_only_constraint_flag equal to 1 specifies that OlsInScope carries pictures that represent frames. general_frame_only_constraint_flag equal to 0 specifies that OlsInScope carries pictures whether they represent frames or not. NOTE 3 - A decoder may ignore the value of general_frame_only_constraint_flag as there are no decoding process requirements associated with that value. general_non_projected_constraint_flag equal to 1 specifies that neither equirectangular projection SEI message nor generalized cubemap projection SEI message should be present in the OlsInScope bitstream. general_non_projected_constraint_flag equal to 0 imposes no such constraint. NOTE 4 - Decoders may ignore the value of general_non_projected_constraint_flag as there are no decoding process requirements associated with the presence or interpretation of the equirectangular projection SEI message and the generalized cube map projection SEI message. An intra_only_constraint_flag equal to 1 specifies that slice_type must be equal to I. An intra_only_constraint_flag equal to 0 imposes no such constraint. max_bitdepth_constraint_idc specifies that bit_depth_minus8 must be in the range 0 to max_bitdepth_constraint_idc, inclusive. max_chroma_format_constraint_idc specifies that chroma_format_idc is in the range from 0 to max_chroma_format_constraint_idc, inclusive. no_res_change_in_clvs_constraint_flag equal to 1 specifies that res_change_in_clvs_allowed_flag must be equal to 0. no_res_change_in_clvs_constraint_flag equal to 0 imposes no such constraint. one_tile_per_pic_constraint_flag equal to 1 specifies that each picture contains only one tile. one_tile_per_pic_constraint_flag equal to 0 imposes no such constraint. one_slice_per_pic_constraint_flag equal to 1 specifies that each picture contains only one slice. one_slice_per_pic_constraint_flag equal to 0 imposes no such constraint. one_subpic_per_pic_constraint_flag equal to 1 specifies that each picture contains only one subpicture. one_subpic_per_pic_constraint_flag equal to 0 imposes no such constraint. When one_slice_per_pic_constraint_flag is equal to 1, the value of one_subpic_per_pic_constraint_flag shall be equal to 1. no_qtbtt_dual_tree_intra_constraint_flag equal to 1 specifies that qtbtt_dual_tree_intra_flag must be equal to 0. no_qtbtt_dual_tree_intra_constraint_flag equal to 0 imposes no such constraint. no_partition_constraints_override_constraint_flag equal to 1 specifies that partition_constraints_override_enabled_flag must be equal to 0. no_partition_constraints_override_constraint_flag equal to 0 imposes no such constraint. no_sao_constraint_flag equal to 1 specifies that sps_sao_enabled_flag must be equal to 0. no_sao_constraint_flag equal to 0 imposes no such constraint. no_alf_constraint_flag equal to 1 specifies that sps_alf_enabled_flag must be equal to 0. no_alf_constraint_flag equal to 0 imposes no such constraint. no_ccalf_constraint_flag equal to 1 specifies that sps_ccalf_enabled_flag must be equal to 0. no_ccalf_constraint_flag equal to 0 imposes no such constraint. no_joint_cbcr_constraint_flag equal to 1 specifies that sps_joint_cbcr_enabled_flag must be equal to 0. no_joint_cbcr_constraint_flag equal to 0 imposes no such constraint. no_ref_wraparound_constraint_flag equal to 1 specifies that sps_ref_wraparound_enabled_flag must be equal to 0. no_ref_wraparound_constraint_flag equal to 0 imposes no such constraint. no_temporal_mvp_constraint_flag equal to 1 specifies that sps_temporal_mvp_enabled_flag must be equal to 0. no_temporal_mvp_constraint_flag equal to 0 imposes no such constraint. no_sbtmvp_constraint_flag equal to 1 specifies that sps_sbtmvp_enabled_flag must be equal to 0. no_sbtmvp_constraint_flag equal to 0 imposes no such constraint. no_amvr_constraint_flag equal to 1 specifies that sps_amvr_enabled_flag must be equal to 0. no_amvr_constraint_flag equal to 0 imposes no such constraint. no_bdof_constraint_flag equal to 1 specifies that sps_bdof_enabled_flag must be equal to 0. no_bdof_constraint_flag equal to 0 imposes no such constraint. no_dmvr_constraint_flag equal to 1 specifies that sps_dmvr_enabled_flag must be equal to 0. no_dmvr_constraint_flag equal to 0 imposes no such constraint. no_cclm_constraint_flag equal to 1 specifies that sps_cclm_enabled_flag must be equal to 0. no_cclm_constraint_flag equal to 0 imposes no such constraint. no_mts_constraint_flag equal to 1 specifies that sps_mts_enabled_flag must be equal to 0. no_mts_constraint_flag equal to 0 imposes no such constraint. no_sbt_constraint_flag equal to 1 specifies that sps_sbt_enabled_flag must be equal to 0. no_sbt_constraint_flag equal to 0 imposes no such constraint. no_affine_motion_constraint_flag equal to 1 specifies that sps_affine_enabled_flag must be equal to 0. no_affine_motion_constraint_flag equal to 0 imposes no such constraint. no_bcw_constraint_flag equal to 1 specifies that sps_bcw_enabled_flag must be equal to 0. no_bcw_constraint_flag equal to 0 imposes no such constraint. no_ibc_constraint_flag equal to 1 specifies that sps_ibc_enabled_flag must be equal to 0. no_ibc_constraint_flag equal to 0 imposes no such constraint. no_ciip_constraint_flag equal to 1 specifies that sps_ciip_enabled_flag must be equal to 0. no_cipp_constraint_flag equal to 0 imposes no such constraint. no_fpel_mmvd_constraint_flag equal to 1 specifies that sps_fpel_mmvd_enabled_flag must be equal to 0. no_fpel_mmvd_constraint_flag equal to 0 imposes no such constraint. no_gpm_constraint_flag equal to 1 specifies that sps_gpm_enabled_flag must be equal to 0. no_gpm_constraint_flag equal to 0 imposes no such constraint. no_ladf_constraint_flag equal to 1 specifies that sps_ladf_enabled_flag must be equal to 0. no_ladf_constraint_flag equal to 0 imposes no such constraint. no_transform_skip_constraint_flag equal to 1 specifies that sps_transfrom_skip_enabled_flag must be equal to 0. no_transform_skip_constraint_flag equal to 0 imposes no such constraint. no_bdpcm_constraint_flag equal to 1 specifies that sps_bdpcm_enabled_flag must be equal to 0. no_bdpcm_constraint_flag equal to 0 imposes no such constraint. no_qp_delta_constraint_flag equal to 1 specifies that it is a bitstream conformance requirement that cu_qp_delta_enabled_flag must be equal to 0. no_qp_delta_constraint_flag equal to 0 imposes no such constraint. no_dep_quant_constraint_flag equal to 1 specifies that it is a bitstream conformance requirement that sps_dep_quant_enabled_flag must be equal to 0. no_dep_quant_constraint_flag equal to 0 imposes no such constraint. no_sign_data_hiding_constraint_flag equal to 1 specifies that it is a bitstream conformance requirement that sps_sign_data_hiding_enabled_flag must be equal to 0. no_sign_data_hiding_constraint_flag equal to 0 imposes no such constraint. no_mixed_nalu_types_in_pic_constraint_flag equal to 1 specifies that it is a bitstream conformance requirement that mixed_nalu_types_in_pic_flag must be equal to 0. no_mixed_nalu_types_in_pic_constraint_flag equal to 0 imposes no such constraint. no_trail_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to TRAIL_NUT must not be present in OlsInScope. no_trail_constraint_flag equal to 0 imposes no such constraint. no_stsa_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to STSA_NUT must not be present in OlsInScope. no_stsa_constraint_flag equal to 0 imposes no such constraint. no_rasl_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to RASL_NUT must not be present in OlsInScope. no_rasl_constraint_flag equal to 0 imposes no such constraint. no_radl_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to RADL_NUT must not be present in OlsInScope. no_radl_constraint_flag equal to 0 imposes no such constraint. no_idr_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to IDR_W_RADL or IDR_N_LP must not be present in OlsInScope. no_idr_constraint_flag equal to 0 imposes no such constraint. no_cra_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to CRA_NUT must not be present in OlsInScope. no_cra_constraint_flag equal to 0 imposes no such constraint. no_gdr_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to GDR_NUT must not be present in OlsInScope. no_gdr_constraint_flag equal to 0 imposes no such constraint. no_aps_constraint_flag equal to 1 specifies that NAL units with nuh_unit_type equal to PREFIX_APS_NUT or SUFFIX_APS_NUT must not be present in OlsInScope. no_aps_constraint_flag equal to 0 imposes no such constraint. gci_alignment_zero_bits shall be equal to 0. num_reserved_constraint_bytes specifies the number of reserved constraint bytes. The value of num_reserved_constraint_bytes shall be 0. Other values of num_reserved_constraint_bytes are reserved for future use by ITU-T|ISO / IEC and shall not be present in bitstreams conforming to this version of this specification. gci_reserved_constraint_byte[i] may have any value. Its presence and value do not affect a decoder's conformance to the profile specified in this version of this specification. Decoders conforming to this version of this specification shall ignore the values of all gci_reserved_constraint_byte[i] syntax elements.
[0027] 3.3. DCI Syntax and Semantics In the latest VVC draft text, the syntax and semantics of DCI are as follows: [Table 3] The DCI RBSP may be made available to the decoder either by being present in the bitstream, by being included in at least the first AU of the bitstream, or by being provided through external means. NOTE 1 – The information contained in the DCI RBSP is not necessary for the operation of the decryption process specified in clauses 2 through 9 of this specification. If present, all DCI NAL units in the bitstream shall have the same content. dci_max_sublayers_minus1+1 specifies the maximum number of temporal sublayers that may be present in a layer in each CVS of the bitstream. The value of dci_max_sublayers_minus1 shall be in the range 0 to 6, inclusive. dci_reserved_zero_bit shall be equal to 0 in bitstreams conforming to this version of this specification. A value of 1 for dci_reserved_zero_bit is reserved for future use by ITU-T|ISO / IEC. dci_num_ptls_minus1+1 specifies the number of profile_tier_level( ) syntax structures in a DCI NAL unit. It is a bitstream conformance requirement that each OLS in a CVS in a bitstream must conform to at least one of the profile_tier_level( ) syntax structures in the DCI NAL unit. NOTE 2 - A DCI NAL unit may contain PTL information that applies collectively to multiple OLSs, possibly carried in multiple profile_tier_level( ) syntax structures, and does not need to contain PTL information for each of the OLSs individually. dci_extension_flag equal to 0 specifies that the dci_extension_data_flag syntax element is not present in the DCI RBSP syntax structure. dci_extension_flag equal to 1 specifies that the dci_extension_data_flag syntax element is present in the DCI RBSP syntax structure. dci_extension_data_flag may have any value. Its presence and value do not affect the conformance of a decoder to the profile specified in Annex A. Decoders conforming to this version of this specification shall ignore all dci_extension_data_flag syntax elements.
[0028] 3.4. VPS Syntax and Semantics In the latest VVC draft text, the syntax and semantics of VPS are as follows: [Table 4] TIFF0007601494000006.tif232161TIFF0007601494000007.tif232161TIFF0007601494000008.tif27161The VPS RBSP shall be available to the decoding process before it is referenced, or shall be contained in at least one AU with TemporalId equal to 0, or provided through external means. All VPS NAL units with a particular value of vps_video_parameter_set_id in the CVS shall have the same content. The vps_video_parameter_set_id provides an identifier for the VPS for reference by other syntax elements. The value of vps_video_parameter_set_id shall be greater than 0. vps_max_layers_minus1+1 specifies the maximum number of layers allowed in each CVS that references the VPS. vps_max_sublayers_minus1+1 specifies the maximum number of temporal sublayers that may exist in a layer in each CVS that references the VPS. The value of vps_max_sublayers_minus1 must be in the range 0 to 6, inclusive. vps_all_layers_same_num_sublayers_flag equal to 1 specifies that the number of temporal sublayers is the same for all layers in each CVS that references the VPS. vps_all_layers_same_num_sublayers_flag equal to 0 specifies that layers in each CVS that references the VPS do not necessarily have the same number of temporal sublayers. When not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1. vps_all_independent_layers_flag equal to 1 specifies that all layers in the CVS are coded independently, without using inter-layer prediction. vps_all_independent_layers_flag equal to 0 specifies that one or more of the layers in the CVS may use inter-layer prediction. When not present, the value of vps_all_independent_layers_flag is inferred to be equal to 1. vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer. For any two non-negative integer values m and n, when m is less than n, the value of vps_layer_id[m] shall be less than vps_layer_id[n]. vps_independent_layer_flag[i] equal to 1 specifies that the layer with index i does not use inter-layer prediction. vps_independent_layer_flag[i] equal to 0 specifies that the layer with index i may use inter-layer prediction and that the syntax element vps_direct_ref_layer_flag[i][j] for j in the range of 0 to i-1, inclusive, is present in the VPS. When not present, the value of vps_independent_layer_flag[i] is inferred to be equal to 1. vps_direct_ref_layer_flag[i][j] equal to 0 specifies that the layer with index j is not a direct reference layer for the layer with index i. vps_direct_ref_layer_flag[i][j] equal to 1 specifies that the layer with index j is a direct reference layer for the layer with index i. When vps_direct_ref_layer_flag[i][j] is not present for i and j in the range of 0 to vps_max_layers_minus1, inclusive, it is inferred to be equal to 0. When vps_independent_layer_flag[i] is equal to 0, there shall be at least one value of j in the range of 0 to i-1, inclusive, such that the value of vps_direct_ref_layer_flag[i][j] is equal to 1. The variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsRefLayerFlag[j] are derived as follows:
number
number
number
number
number
number
[0029] 3.5. SPS Syntax and Semantics In the latest VVC draft text, the syntax and semantics of SPS are as follows: [Table 5] The SPS RBSP shall be available to the decoding process before it is referenced, or shall be contained in at least one AU with TemporalId equal to 0, or provided through external means. All SPS NAL units with a particular value of sps_seq_parameter_set_id in the CVS shall have the same content. The sps_seq_parameter_set_id provides an identifier for the SPS for reference by other syntax elements. SPS NAL units share the same value space of sps_seq_parameter_set_id regardless of the nuh_layer_id value. Let spsLayerId be the value of nuh_layer_id for a particular SPS NAL unit, and vclLayerId be the value of nuh_layer_id for a particular VCL NAL unit. A particular VCL NAL unit shall not reference a particular SPS NAL unit unless its spsLayerId is less than or equal to vclLayerId and a layer with nuh_layer_id equal to spsLayerId is contained in at least one OLS that contains a layer with nuh_layer_id equal to vclLayerId. 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 the SPS. When sps_video_parameter_set_id is equal to 0, the following applies: - SPS does not refer to VPS. - When decoding each CLVS that references an SPS, the VPS is not referenced. - The value of vps_max_layers_minus1 is inferred to be equal to 0. - A CVS shall contain only one layer (i.e., all VCL NAL units in a CVS shall have the same value of nuh_layer_id). - The value of GeneralLayerIdx[nuh_layer_id] is inferred to be equal to 0. - The value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is inferred to be equal to 1. When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, any SPS referenced by a CLVS with a particular nuh_layer_id value nuhLayerId shall have nuh_layer_id equal to nuhLayerId. The value of sps_video_parameter_set_id shall be the same in all SPSs referenced by a CLVS in a CVS. sps_max_sublayers_minus1+1 specifies the maximum number of temporal sublayers that may exist in each CLVS that references an SPS. The value of sps_max_sublayers_minus1 shall be in the range from 0 to vps_max_sublayers_minus1, inclusive. sps_reserved_zero_4bits shall be equal to 0 in bitstreams conforming to this version of this specification. Other values of sps_reserved_zero_4bits are reserved for future use by ITU-T|ISO / IEC. sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that the profile_tier_level() and dpb_parameters() syntax structures are present in the SPS, and that the general_hrd_parameters() and ols_hrd_parameters() syntax structures may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures are present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]. A gdr_enabled_flag equal to 1 specifies that GDR pictures may be present in the CLVS that references the SPS. A gdr_enabled_flag equal to 0 specifies that GDR pictures are not present in the CLVS that references the SPS. chroma_format_idc specifies the chroma sampling relative to luma sampling, as specified in Section 6.2. separate_colour_plane_flag equal to 1 specifies that the three colour components of the 4:4:4 chroma format are coded separately. separate_colour_plane_flag equal to 0 specifies that the colour components are not coded separately. When separate_colour_plane_flag is not present, it is inferred to be equal to 0. When separate_colour_plane_flag is equal to 1, the coded picture consists of three separate components, each of which consists of coded samples of one colour plane (Y, Cb, or Cr), and uses the monochrome coding syntax. In this case, each colour plane is associated with a specific colour_plane_id value. NOTE 1 - There is no dependency in the decoding process between colour planes with different colour_plane_id values, e.g. the decoding process of a monochrome picture with one value of colour_plane_id does not use any data from a monochrome picture with a different value of colour_plane_id for inter prediction. Depending on the value of separate_colour_plane_flag, the value of the variable ChromaArrayType is assigned as follows: - if separate_colour_plane_flag is equal to 0, ChromaArrayType is set equal to chroma_format_idc. - Otherwise (separate_colour_plane_flag is equal to 1), ChromaArrayType is set equal to 0. res_change_in_clvs_allowed_flag equal to 1 specifies that picture spatial resolution may change within a CLVS that references an SPS. res_change_in_clvs_allowed_flag equal to 0 specifies that picture spatial resolution may not change within any CLVS that references an SPS. pic_width_max_in_luma_samples specifies the maximum width, in units of luma samples, of each decoded picture that references an SPS. pic_width_max_in_luma_samples SHALL not be equal to 0 and SHALL be an integer multiple of Max(8,MinCbSizeY). It is a bitstream conformance requirement that for any OLS with OLS index i that contains one or more layers that reference an SPS, the value of pic_width_max_in_luma_samples must be less than or equal to the value of ols_dpb_pic_width[i]. pic_height_max_in_luma_samples specifies the maximum height, in units of luma samples, of each decoded picture that references an SPS. pic_height_max_in_luma_samples SHALL not be equal to 0 and SHALL be an integer multiple of Max(8,MinCbSizeY). It is a bitstream conformance requirement that for any OLS with OLS index i that contains one or more layers that reference an SPS, the value of pic_height_max_in_luma_samples must be less than or equal to the value of ols_dpb_pic_height[i]. sps_conformance_window_flag equal to 1 indicates that conformance cropping window offset parameters follow in the SPS. sps_conformance_window_flag equal to 0 indicates that conformance cropping window offset parameters are not present in the SPS. sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset specify the cropping window applied to pictures with pic_width_in_luma_samples equal to pic_width_max_in_luma_samples and pic_height_in_luma_samples equal to pic_height_max_in_luma_samples. When sps_conformance_window_flag is equal to 0, the values of sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset are inferred to be equal to 0. The adaptive cropping window includes luma samples from horizontal picture coordinates SubWidthC*sps_conf_win_left_offset to pic_width_max_in_luma_samples-(SubWidthC*sps_conf_win_right_offset+1) inclusive, and vertical picture coordinates SubHeightC*sps_conf_win_top_offset to pic_height_max_in_luma_samples-(SubHeightC*sps_conf_win_bottom_offset+1), inclusive. The value of SubWidthC*(sps_conf_win_left_offset+sps_conf_win_right_offset) shall be less than pic_width_max_in_luma_samples, and the value of SubHeightC*(sps_conf_win_top_offset+sps_conf_win_bottom_offset) shall be less than pic_height_max_in_luma_samples. When ChromaArrayType is not equal to 0, the corresponding specified samples of the two chroma arrays are samples with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample. NOTE 2 – The adapted cropping window offset parameter is applied only at the output. All internal decoding processes are applied to the uncropped picture size. sps_log2_ctu_size_minus5+5 specifies the luma coding tree block size of each CTU. The value of sps_log2_ctu_size_minus5 shall be in the range of 0 to 2, inclusive. The value 3 of sps_log2_ctu_size_minus5 is reserved for future use by ITU-T|ISO / IEC. The variables CtbLog2SizeY and CtbSizeY are derived as follows:
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
[0030] 3.6. PPS Syntax and Semantics In the latest VVC draft text, the syntax and semantics of PPS are as follows: [Table 6] TIFF0007601494000041.tif232161TIFF0007601494000042.tif233161TIFF0007601494000043.tif232161TIFF0007601494000044.tif35161The PPS RBSP shall be available to the decoding process before it is referenced, or shall be contained in at least one AU whose TemporalId is less than or equal to the TemporalId of the PPS NAL unit, or shall be provided through external means. All PPS NAL units with a particular value of pps_pic_parameter_set_id within a PU shall have the same content. The pps_pic_parameter_set_id identifies the PPS for reference by other syntax elements. The value of pps_pic_parameter_set_id shall be in the range of 0 to 63, inclusive. PPS NAL units share the same value space of pps_pic_parameter_set_id regardless of the nuh_layer_id value. Let ppsLayerId be the value of nuh_layer_id for a particular PPS NAL unit, and vclLayerId be the value of nuh_layer_id for a particular VCL NAL unit. A particular VCL NAL unit shall not reference a particular PPS NAL unit unless its ppsLayerId is less than or equal to vclLayerId and a layer with nuh_layer_id equal to ppsLayerId is included in at least one OLS that contains a layer with nuh_layer_id equal to vclLayerId. pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id for the SPS. The value of pps_seq_parameter_set_id shall be in the range of 0 to 15, inclusive. The value of pps_seq_parameter_set_id shall be the same in all PPSs referenced by coded pictures in the CLVS. mixed_nalu_types_in_pic_flag equal to 1 specifies that each picture that references a PPS has two or more VCL NAL units, no VCL NAL units have the same value of nal_unit_type, and the picture is not an IRAP picture. mixed_nalu_types_in_pic_flag equal to 0 specifies that each picture that references a PPS has one or more VCL NAL units, and the VCL NAL units of each picture that references a PPS have the same value of nal_unit_type. When no_mixed_nalu_types_in_pic_constraint_flag is equal to 1, the value of mixed_nalu_types_in_pic_flag shall be equal to 0. For each slice with a nal_unit_type value nalUnitTypeA in the range IDR_W_RADL to CRA_NUT, inclusive, in a picture picA that also contains one or more slices with a different value of nal_unit_type (i.e., if the value of mixed_nalu_types_in_pic_flag of picture picA is equal to 1), the following applies: - The slice shall belong to subpicA with the corresponding subpic_treated_as_pic_flag[i] value equal to 1. - The slice shall not belong to a subpicture of picA that contains a VCL NAL unit whose nal_unit_type is not equal to nalUnitTypeA. - If nalUnitTypeA is equal to CRA, then for all subsequent PUs following the current picture in CLVS in decoding order and output order, neither RefPicList[0] nor RefPicList[1] of slices in subpicA in those PUs shall contain a picture preceding picA in decoding order in the active entries. - Otherwise (i.e., if nalUnitTypeA is equal to IDR_W_RADL or IDR_N_LP), for all PUs in the CLVS that follow the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of slices in subpicA of those PUs shall contain a picture that precedes picA in decoding order in the active entries. mixed_nalu_types_in_pic_flag equal to Note 1-1 indicates that the picture referencing the PPS contains slices with different NAL unit types, e.g., coded pictures resulting from sub-picture bitstream merging operations for which the encoder must ensure the match of bitstream structures and further alignment of parameters of the original bitstreams. An example of such alignment is as follows: When the value of sps_idr_rpl_flag is equal to 0 and mixed_nalu_types_in_pic_flag is equal to 1, the picture referencing the PPS cannot have slices with nal_unit_type equal to IDR_W_RADL or IDR_N_LP. pic_width_in_luma_samples specifies the width of each decoded picture that references a PPS, in units of luma samples. pic_width_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8,MinCbSizeY), and shall be less than or equal to pic_width_max_in_luma_samples. When res_change_in_clvs_allowed_flag is equal to 0, the value of pic_width_in_luma_samples shall be equal to pic_width_max_in_luma_samples. pic_height_in_luma_samples specifies the height of each decoded picture referencing a PPS, in units of luma samples. pic_height_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8,MinCbSizeY), and shall be less than or equal to pic_height_max_in_luma_samples. When res_change_in_clvs_allowed_flag is equal to 0, the value of pic_height_in_luma_samples shall be equal to pic_height_max_in_luma_samples. The variables PicWidthINctbsY, PicHeightINctbsY, PicSizeINctbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC are derived as follows:
number
number
number
number
[0031] 3.7. APS Syntax and Semantics In the latest VVC draft text, the syntax and semantics of APS are as follows: [Table 7] The APS RBSP contains the ALF syntax structure, namely, alf_data( ). [Table 8] TIFF0007601494000051.tif240166APS RBSP contains the LMCS syntax structure, i.e., lmcs_data( ). [Table 9] The APS RBSP contains a scaling list data syntax structure, namely, scaling_list_data( ). [Table 10] Each APS RBSP shall be available to the decoding process before it is referenced and shall be contained in at least one AU with a TemporalId less than or equal to the TemporalId of the coded slice NAL unit that references it, or provided through external means. All APS NAL units with a particular value of adaptation_parameter_set_id and a particular value of aps_params_type within a PU shall have the same content, regardless of whether they are prefix or suffix APS NAL units. The adaptation_parameter_set_id provides an identifier for the APS for reference by other syntax elements. When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 7, inclusive. When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 3, inclusive. Let apsLayerId be the value of nuh_layer_id of a particular APS NAL unit, and vclLayerId be the value of nuh_layer_id of a particular VCL NAL unit. A particular VCL NAL unit shall not reference a particular APS NAL unit unless its apsLayerId is less than or equal to vclLayerId and a layer with nuh_layer_id equal to apsLayerId is included in at least one OLS that contains a layer with nuh_layer_id equal to vclLayerId. aps_params_type specifies the type of APS parameters carried in the APS, as specified in Table 6. [Table 11] All APS NAL units with a particular value of aps_params_type share the same value space for adaptation_parameter_set_id, regardless of the nuh_layer_id value. APS NAL units with different values of aps_params_type use separate value spaces for adaptation_parameter_set_id. NOTE 1 - APS NAL units (with particular values of adaptation_parameter_set_id and particular values of aps_params_type) may be shared across pictures, and different slices in a picture may reference different ALF APSs. NOTE 2 - The suffix APS NAL unit associated with a particular VCL NAL unit (which precedes the suffix APS NAL unit in decoding order) is not used by the particular VCL NAL unit, but rather by the VCL NAL unit that follows the suffix APS NAL unit in decoding order. aps_extension_flag equal to 0 specifies that the aps_extension_data_flag syntax element is not present in the APS RBSP syntax structure. aps_extension_flag equal to 1 specifies that the aps_extension_data_flag syntax element is present in the APS RBSP syntax structure. aps_extension_data_flag may have any value. Its presence and value do not affect a decoder's conformance to the profile specified in this version of this specification. Decoders conforming to this version of this specification SHALL ignore all aps_extension_data_flag syntax elements. alf_luma_filter_signal_flag equal to 1 specifies that the luma filter set is signaled. alf_luma_filter_signal_flag equal to 0 specifies that the luma filter set is not signaled. alf_chroma_filter_signal_flag equal to 1 specifies that the chroma filters are signaled. alf_chroma_filter_signal_flag equal to 0 specifies that the chroma filters are not signaled. When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0. At least one of the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag shall be equal to 1. The variable nUMaLFfILTERS, which specifies the number of different adaptive loop filters, is set equal to twenty-five. alf_luma_clip_flag equal to 0 specifies that linear adaptive loop filtering is applied to the luma component. alf_luma_clip_flag equal to 1 specifies that non-linear adaptive loop filtering may be applied to the luma component. alf_luma_num_filters_signalled_minus1+1 specifies the number of adaptive loop filter classes for which luma coefficients can be signaled. The value of alf_luma_num_filters_signalled_minus1 shall be in the range from 0 to nUMaLFfILTERS-1, inclusive. alf_luma_coeff_delta_idx[filtIdx] specifies the index of the signaled adaptive loop filter luma coefficient delta for the filter class indicated by filtIdx in the range of 0 to nUMaLFfILTERS-1. When alf_luma_coeff_delta_idx[filtIdx] is not present, it is inferred to be equal to 0. The length of alf_luma_coeff_delta_idx[filtIdx] is Ceil(Log2(alf_luma_num_filters_signalled_minus1+1)) bits. The value of alf_luma_coeff_delta_idx[filtIdx] shall be in the range of 0 to alf_luma_num_filters_signalled_minus1, inclusive. alf_luma_coeff_abs[sfIdx][j] specifies the absolute value of the jth coefficient of the signaled luma filter indicated by sfIdx. When alf_luma_coeff_abs[sfIdx][j] is not present, it is inferred to be equal to 0. The value of alf_luma_coeff_abs[sfIdx][j] shall be in the range of 0 to 128, inclusive. alf_luma_coeff_sign[sfIdx][j] specifies the sign of the jth luma coefficient of the filter indicated by sfIdx as follows: If alf_luma_coeff_sign[sfIdx][j] is equal to 0, the corresponding luma filter coefficient has a positive value. - Otherwise (if alf_luma_coeff_sign[sfIdx][j] is equal to 1), the corresponding luma filter coefficient has a negative value. When alf_luma_coeff_sign[sfIdx][j] is not present, it is inferred to be equal to 0. The variables filtCoeff[sfIdx][j], for sfIdx=0..alf_luma_num_filters_signalled_minus1, j=0..11, are initialized as follows:
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
number
[0032] 3.8.PH Syntax and Semantics In the latest VVC draft text, the syntax and semantics of PH are as follows: [Table 13] The PH RBSP contains the PH syntax structure, namely, picture_header_structure( ). [Table 14] TIFF0007601494000077.tif232161TIFF0007601494000078.tif233161TIFF0007601494000079.tif232161TIFF0007601494000080.tif232161TIFF0007601494000081.tif80161The PH syntax structure contains information that is common to all slices of the coded picture associated with the PH syntax structure. gdr_or_irap_pic_flag equal to 1 specifies that the current picture is a GDR picture or an IRAP picture. gdr_or_irap_pic_flag equal to 0 specifies that the current picture may be a GDR or an IRAP picture, or may be neither. gdr_pic_flag equal to 1 specifies that the picture associated with PH is a GDR picture. gdr_pic_flag equal to 0 specifies that the picture associated with PH is not a GDR picture. When not present, the value of gdr_pic_flag is inferred to be equal to 0. When gdr_enabled_flag is equal to 0, the value of gdr_pic_flag shall be equal to 0. ph_inter_slice_allowed_flag equal to 0 specifies that all coded slices of the picture have slice_type equal to 2. ph_inter_slice_allowed_flag equal to 1 specifies that one or more coded slices may or may not be present in the picture with slice_type equal to 0 or 1. ph_intra_slice_allowed_flag equal to 0 specifies that all coded slices of a picture have slice_type equal to 0 or 1. ph_intra_slice_allowed_flag equal to 1 specifies that one or more coded slices may or may not be present in a picture with slice_type equal to 2. When not present, the value of ph_intra_slice_allowed_flag is inferred to be equal to 1. NOTE 1 - For bitstreams that are supposed to do sub-picture based bitstream merging without the need to modify the PH NAL unit, the encoder is expected to set the values of both ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag equal to 1. non_reference_picture_flag equal to 1 specifies that the picture associated with PH is never used as a reference picture. non_reference_picture_flag equal to 0 specifies that the picture associated with PH may or may not be used as a reference picture. ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id for the PPS in use. The value of ph_pic_parameter_set_id shall be in the range 0 to 63, inclusive. It is a bitstream conformance requirement that the value of TemporalId of a PH be greater than or equal to the value of TemporalId of a PPS with pps_pic_parameter_set_id equal to ph_pic_parameter_set_id. ph_pic_order_cnt_lsb specifies the picture order count modulo MaxPicOrderCntLsb for the current picture. The length of the ph_pic_order_cnt_lsb syntax element is log2_max_pic_order_cnt_lsb_minus4+4 bits. The value of ph_pic_order_cnt_lsb shall be in the range from 0 to MaxPicOrderCntLsb-1, inclusive. The no_output_of_prior_pics_flag, as specified in Annex C, affects the output of previously decoded pictures in the DPB after decoding of a CLVSS picture that is not the first picture in the bitstream. recovery_poc_cnt specifies the recovery point of a decoded picture in output order. If the current picture is a GDR picture associated with a PH and there is a picture picA following the current GDR picture in decoding order in the CLVS with a PicOrderCntVal equal to the current GDR picture's PicOrderCntVal plus the value of recovery_poc_cnt, then picture picA is called the recovery point picture. Otherwise, the first picture in output order with a PicOrderCntVal greater than the current picture's PicOrderCntVal plus the value of recovery_poc_cnt is called the recovery point picture. A recovery point picture shall not precede the current GDR picture in decoding order. The value of recovery_poc_cnt shall be in the range from 0 to MaxPicOrderCntLsb-1, inclusive. When the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows:
number
number
number
number
number
number
number
number
[0033] 3.9.SH Syntax and Semantics In the latest VVC draft text, the syntax and semantics of SH are as follows: [Table 15] The variable CuQpDeltaVal, which specifies the difference between the luma quantization parameter of the coding unit that contains cu_qp_delta_abs and its prediction, is set equal to 0. Cb , Qp' Cr , and Qp' CbCr The variables CuQpOffsetCb and CuQpOffset specify the values that should be used when determining the respective values of the quantization parameters. Cr , and CuQpOffset CbCr are all set equal to 0. picture_header_in_slice_header_flag equal to 1 specifies that the PH syntax structures are present in the slice header. picture_header_in_slice_header_flag equal to 0 specifies that the PH syntax structures are not present in the slice header. It is a bitstream conformance requirement that the value of picture_header_in_slice_header_flag be the same for all coded slices in the CLVS. It is a bitstream conformance requirement that when picture_header_in_slice_header_flag is equal to 1 for a coded slice, there are no VCL NAL units in CLVS with nal_unit_type equal to PH_NUT. When picture_header_in_slice_header_flag is equal to 0, all coded slices in the current picture shall have picture_header_in_slice_header_flag equal to 0, and the current PU shall have a PH NAL unit. slice_subpic_id specifies the subpicture ID of the subpicture that contains the slice. If slice_subpic_id is present, the value of the variable CurrSubpicIdx is derived such that SubpicIdVal[CurrSubpicIdx] is equal to slice_subpic_id. Otherwise (slice_subpic_id is not present), CurrSubpicIdx is derived to be equal to 0. The length of slice_subpic_id is sps_subpic_id_len_minus1+1 bits. slice_address specifies the slice address of the slice. When not present, the value of slice_address is inferred to be equal to 0. When rect_slice_flag is equal to 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be equal to 0. If rect_slice_flag is equal to 0, the following applies: - The slice address is the raster scan tile index. - slice_address is Ceil(Log2(NumTilesInPic)) bits long. - The value of slice_address shall be in the range from 0 to NumTilesInPic-1, inclusive. Otherwise (rect_slice_flag is equal to 1), the following applies: - The slice address is the sub-picture level slice index of the slice. - The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits. - The value of slice_address shall be in the range from 0 to NumSlicesInSubpic[CurrSubpicIdx]-1, inclusive. It is a requirement of bitstream conformance that the following constraints apply: - If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address shall not be equal to the value of slice_address of any other coded slice NAL unit of the same coded picture. - Otherwise, the slice_subpic_id and slice_address value pair shall not be equal to the slice_subpic_id and slice_address value pair of any other coded slice NAL unit of the same coded picture. - The shape of a slice of a picture shall be such that each CTU, when decoded, has its entire left and top boundaries consisting of the picture boundary or the boundaries of previously decoded CTU(s). sh_extra_bit[i] may be equal to 1 or 0. Decoders conforming to this version of this specification shall ignore the value of sh_extra_bit[i]. The value does not affect decoder conformance to the profile specified in this version of this specification. num_tiles_in_slice_minus1+1, if present, specifies the number of tiles in the slice. The value of num_tiles_in_slice_minus1 shall be in the range 0 to NumTilesInPic-1, inclusive. The variable NumCtusInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i], for i in the range 0 to NumCtusInCurrSlice-1, inclusive, which specifies the picture raster scan address of the ith CTB in the slice, are derived as follows:
number
number
number
number
number
number
number
number
number
[0034] 3.10. Reference Picture List Syntax In the latest VVC draft text, the syntax structure ref_pic_lists() and its semantics are as follows: [Table 17] The ref_pic_lists( ) syntax structure may be present in the PH syntax structure or in the slice header. rpl_sps_flag[i] equal to 1 specifies that reference picture list i in ref_pic_lists( ) is derived based on one of the ref_pic_list_struct(listIdx, rplsIdx) syntax structures with listIdx equal to i in the SPS. rpl_sps_flag[i] equal to 0 specifies that reference picture list i of a picture is derived based on the ref_pic_list_struct(listIdx, rplsIdx) syntax structure with listIdx equal to i that is directly included in ref_pic_lists( ). If rpl_sps_flag[i] is not present, the following applies: - If num_ref_pic_lists_in_sps[i] is equal to 0, the value of rpl_sps_flag[i] is inferred to be equal to 0. - Otherwise (if num_ref_pic_lists_in_sps[i] is greater than 0), when rpl1_idx_present_flag is equal to 0 and i is equal to 1, the value of rpl_sps_flag[1] is inferred to be equal to rpl_sps_flag[0]. rpl_idx[i] specifies the index of the ref_pic_list_struct(listIdx,rplsIdx) syntax structure with listIdx equal to i used to derive the reference picture list i of the current picture into the list of ref_pic_list_struct(listIdx,rplsIdx) syntax structures with listIdx equal to i contained in the SPS. The syntax element rpl_idx[i] is represented by Ceil(Log2(num_ref_pic_lists_in_sps[i])) bits. When not present, the value of rpl_idx[i] is inferred to be equal to 0. The value of rpl_idx[i] shall be in the range from 0 to num_ref_pic_lists_in_sps[i]-1, inclusive. When rpl_sps_flag[i] is equal to 1 and num_ref_pic_lists_in_sps[i] is equal to 1, the value of rpl_idx[i] is inferred to be equal to 0. When rpl_sps_flag[i] is equal to 1 and rpl1_idx_present_flag is equal to 0, the value of rpl_idx[1] is inferred to be equal to rpl_idx[0]. The variable RplsIdx[i] is derived as follows:
number
number
number
[0035] 3.11. Reference Picture List Structure Syntax In the latest VVC draft text, the syntax structure ref_pic_lists() and its semantics are as follows: [Table 18] The ref_pic_list_struct(listIdx, rplsIdx) syntax structure may be present in the SPS, in the PH syntax structure, or in the slice header. Depending on whether the syntax structure is included in the SPS, in the PH syntax structure, or in the slice header, the following applies: - If present in the PH syntax structure or a slice header, the ref_pic_list_struct(listIdx,rplsIdx) syntax structure specifies the reference picture list listIdx of the current picture (the picture that contains the slice). - Otherwise (if present in the SPS), the ref_pic_list_struct(listIdx,rplsIdx) syntax structure specifies candidates for the reference picture list listIdx, and the term "current picture" in the semantics specified in the remainder of this section refers to each picture that 1) has a PH syntax structure with ph_rpl_idx[listIdx] equal to an index into the list of ref_pic_list_struct(listIdx,rplsIdx) syntax structures contained in the SPS, or one or more slices with slice_rpl_idx[listIdx] equal to an index into the list of ref_pic_list_struct(listIdx,rplsIdx) syntax structures contained in the SPS, and 2) is in a CVS that references the SPS. num_ref_entries[listIdx][rplsIdx] specifies the number of entries in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure. The value of num_ref_entries[listIdx][rplsIdx] shall be in the range of 0 to MaxDpbSize+13, inclusive, where MaxDpbSize is as specified in Section A.4.2. ltrp_in_header_flag[listIdx][rplsIdx] equal to 0 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is present in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure. ltrp_in_header_flag[listIdx][rplsIdx] equal to 1 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is not present in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure. inter_layer_ref_pic_flag[listIdx][rplsIdx][i] equal to 1 specifies that the i-th entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is an ILRP entry. inter_layer_ref_pic_flag[listIdx][rplsIdx][i] equal to 0 specifies that the i-th entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is not an ILRP entry. When not present, the value of inter_layer_ref_pic_flag[listIdx][rplsIdx][i] is inferred to be equal to 0. st_ref_pic_flag[listIdx][rplsIdx][i] equal to 1 specifies that the i-th entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is a STRP entry. st_ref_pic_flag[listIdx][rplsIdx][i] equal to 0 specifies that the i-th entry in the ref_pic_list_struct(listIdx,rplsIdx) syntax structure is an LTRP entry. When inter_layer_ref_pic_flag[listIdx][rplsIdx][i] is equal to 0 and st_ref_pic_flag[listIdx][rplsIdx][i] is not present, the value of st_ref_pic_flag[listIdx][rplsIdx][i] is inferred to be equal to 1. The variables NumLtrpEntries[listIdx][rplsIdx] are derived as follows:
number
number
number
[0036] 4. Examples of technical problems solved by the disclosed techniques The existing design of constraint flags has the following problems: 1) Currently, whenever a PTL syntax structure with profileTierPresentFlag equal to 1 exists, all general constraint flags / fields are signaled in that PTL syntax structure (SS). Considering that PTL syntax structures may be included in DCI (one or more times, with profileTierPresentFlag equal to 1 each time), VPS (one or more times, with profileTierPresentFlag equal to 1 the first time and either 0 or 1 otherwise), and SPS (zero or one time, with profileTierPresentFlag equal to 1), there may be a lot of redundant signaling of general constraint flags / fields. Furthermore, it may be possible that none of the general constraints apply, in which case at least one set of general constraint flags / fields is still signaled for the bitstream of each OLS. 2) In the latest VVC draft text, general constraint flags are used to constrain the values of some SPS / PH / SH syntax elements (SEs) or their combinations via bitstream constraints in the semantics. However, they can also be used to regulate the presence of such related SPS / PH / SH SEs, which allows skipping the signaling of bits whose values are known, thus avoiding bit waste. In the general_constraint_info() syntax in the latest VVC draft text, syntax elements such as no_aps_constraint_flag affect groups of techniques such as ALF, CCALF, LMCS, scaling lists, etc. However, the current design does not cover all cases (e.g., with respect to specifying constraints on the values of the associated syntax elements or conditioning on the presence of the associated syntax elements). 3) In the latest VVC draft text, some PPS SEs related to general constraint flags can only have certain values depending on the value of a specific general constraint flag. However, some semantic constraints are missing to disallow invalid values of such PPS SEs. 4) In the general_constraint_info() syntax in the latest VVC draft text, a set of general constraint flags interact with each other, i.e., the specific value of a general constraint flag depends on the values of other general constraint flags. However, constraints are missing to disallow illegal values of such general constraint flags, either by bitstream constraints or syntax adjustments. 5) Some syntax elements may be added to the SPS and / or PPS to condition the presence of some SPS / PPS / PH / SH syntax elements to save bits. 6) The general_constraint_info( ) syntax in the latest VVC draft text includes constraint flags for a subset of coding tools and features. However, there are other coding tools (e.g., WPP, entropy coding synchronization, weighted prediction, weighted bi-prediction, SMVD, MMVD, ISP, MRL, MIP, LFNST, palette, ACT, scaling list, etc.) and features (e.g., single layer only, one sub-picture only, no inter-layer prediction, no virtual border, no long-term reference, no 32x32 maximum luma transform size, no MER, etc.) that do not have corresponding constraint flags. 7) In the latest VVC draft text, APS does not reference PPS, SPS, or VPS. However, the semantics of some APS SEs depend on the values of VPS, SPS, or SEs of PPS. Either all such dependencies should be removed, or PPS or SPS or VPS IDs should be added to the APS syntax, allowing references to PPS or SPS or VPS, allowing such semantic dependencies. 8) Once the relevant information of the features can be signaled in either PH or SH, a flag (called X_info_in_ph_flag) can be signaled in the PPS to specify whether they will be signaled in PH or SH. Currently, in the VVC specification, the flag X_info_in_ph_flag is always signaled in the PPS without any condition. However, if there is only one slice in the picture, there is no need to signal this X_info_in_ph_flag in the PPS. It is proposed to conditionally signal the PPS flag X_info_in_ph_flag (for any existing feature or future potential feature) based on an already known picture partition flag in the bitstream (e.g., no_pic_partition_flag in the PPS). 9) Currently, the values of some APS syntax elements are constrained based on the ChromaArrayType derived from the SPS syntax elements chroma_format_idc and separate_colour_plane_flag. However, this would cause a semantic dependency since there is no PPS / SPS ID in the APS syntax structure. Therefore, this semantic dependency of APS on SPS should not arise.
[0037] 5. Exemplary embodiments and techniques In order to solve the above problems and some other problems not mentioned, the methods as summarized below are disclosed. The present invention should be regarded as an example to explain the general concept, and should not be interpreted narrowly. Moreover, these inventions can be applied alone or in any combination. 1. In general, one or more of the following approaches are disclosed regarding signaling of general constraint flags / fields to solve the first problem: 1) A presence flag may be added to the PTL syntax structure to specify whether the general_constraint_info( ) syntax structure is present in the PTL syntax structure. In one example, when the general_constraint_info( ) syntax structure is not present for OLS, default values are inferred for each of the general constraint flags / fields. i. In one example, when the general_constraint_info( ) syntax structure is not present for an OLS, each of the general constraint flags / fields are inferred to be a value that specifies that the particular constraint is not imposed on the bitstream for the OLS. For example, the values of intra_only_constraint_flag, no_res_change_in_clvs_constraint_flag, and one_tile_per_pic_constraint_flag are all inferred to be equal to 0. b. In one example, a DCI may be required that when there are two or more PTL syntax structures in it, at most one of those PTL syntax structures contains a general_constraint_info( ) syntax structure, and when present, that general_constraint_info( ) syntax structure applies to the entire bitstream. i. Additionally, it may be required that only the first PTL syntax structure in a DCI includes the general_constraint_info( ) syntax structure, and that the general constraint information associated with the first DCI PTL syntax structure in a DCI (explicitly signaled or inferred) is considered as the general constraint information associated with the DCI that applies to the entire bitstream. c. In one example, when DCI is present in the bitstream, it may be required that the PTL syntax structures present in the VPS or SPS must not contain the general_constraint_info( ) syntax structure, and the general constraint information associated with the DCI (explicitly signaled or inferred) applies to each OLS of each CVS in the bitstream. i. Alternatively, it may be required that when DCI is present in the bitstream, the PTL syntax structures present in the VPS must not contain the general_constraint_info( ) syntax structure, and the general constraint information associated with the DCI (explicitly signaled or inferred) applies to each OLS containing two or more layers in each CVS in the bitstream. d. In one example, in a VPS, when there are two or more PTL syntax structures in it, only one of those PTL syntax structures may contain a general_constraint_info( ) syntax structure, and that general_constraint_info( ) syntax structure may be required to be applied to each OLS of each CVS in the bitstream. i. Alternatively, in a VPS, when there are two or more PTL syntax structures in it, only the first PTL syntax structure in the VPS may contain the general_constraint_info( ) syntax structure, and it may be required that the general constraint information associated with the first PTL syntax structure (explicitly signaled or inferred) applies to each OLS of each CVS in the bitstream. e. In one example, when two or more PTL (and / or general_constraint_info( )) syntax structures are signaled in the DCI and / or SPS and / or VPS, those PTL (and / or general_constraint_info( )) syntax structures must have the same content in a conforming bitstream. i. In one example, when two or more PTL (and / or general_constraint_info( )) syntax structures are signaled for OLS, those PTL (and / or general_constraint_info( )) syntax structures must have the same content in a conforming bitstream. ii. In one example, when two or more PTL (and / or general_constraint_info( )) syntax structures are signaled for CVS, those PTL (and / or general_constraint_info( )) syntax structures must have the same content in a conforming bitstream. f. In one example, at most one PTL (and / or general_constraint_info( )) syntax structure is allowed to be signaled in the DCI and / or SPS and / or VPS in a conforming bitstream. i. In one example, at most one PTL (and / or general_constraint_info( )) syntax structure is allowed to be signaled for OLS in a conforming bitstream. ii. In one example, at most one PTL (and / or general_constraint_info( )) syntax structure is allowed to be signaled for CVS in a conforming bitstream. g. In one example, when multiple PTL syntax structures are signaled in a DCI that targets multiple OLSs, a syntax element may be added to the DCI syntax structure to specify an index into a list of PLT syntax structures in the DCI of the PTL syntax structure that applies to the i-th OLS. i. Additionally, if there is only one OLS in the bitstream, the signaling of the above-mentioned syntax elements may be skipped and / or the values of the syntax elements may be inferred to a specific value (e.g., 0). h. In one example, when there are multiple general_constraint_info( ) syntax structures in the DCI and / or SPS and / or VPS, and the values of a particular general constraint flag / field are different for an OLS, the particular constraint will apply to that OLS as long as any of the general constraint flags imposes a particular constraint. i. In one example, when any of the general constraint flags in the VPS / SPS specify that particular constraints are imposed on the OLS, and the corresponding general constraint flags in the DCI specify that particular constraints are not imposed on the OLS, then the OLS may conform to the stricter constraints (e.g., impose such particular constraints on the OLS as indicated in the VPS / SPS). 1. Alternatively, when any of the general constraint flags in the VPS / SPS specify that specific constraints are not imposed on the OLS, and the corresponding general constraint flags in the DCI specify that specific constraints are imposed on the OLS, then the OLS may conform to the stricter constraints (e.g., impose such specific constraints on the OLS as indicated in the DCI). ii. In one example, for any particular aspect associated with a general constraint syntax element that imposes a constraint on the OLS, the corresponding general constraint syntax element conveyed in the DCI must have a value that indicates that it may be looser, but no stricter, than the value of the same constraint for that aspect indicated in the VPS / SPS. 1. In one example, if any of the general constraint flags / fields in the VPS / SPS specify that a particular constraint is not imposed on an OLS, then bitstream conformance may be added to require that the value of the corresponding general constraint flag in the DCI be equal to 0 for that OLS (in this case the value of the corresponding general constraint flag in the DCI is never equal to 1). 2. In one example, if any of the general constraint flags / fields in the VPS / SPS specify that a particular constraint is imposed on an OLS, then the value of the corresponding general constraint flag in the DCI may be equal to 0 or 1 for that OLS. iii. Alternatively, and conversely, for any particular aspect associated with a general constraint syntax element that imposes a constraint on the OLS, the corresponding general constraint syntax element conveyed in the DCI shall have a value indicating that the constraint may be stricter, but not relaxed, than the value of the same constraint for that aspect indicated in the VPS / SPS. 1. In one example, if any of the general constraint flags / fields in the VPS / SPS specify that a particular constraint is imposed on an OLS, bitstream conformance may be added to require that the value of the corresponding general constraint flag in the DCI be equal to 1 for that OLS (in this case, the value of the corresponding general constraint flag in the DCI is never equal to 0). 2. In one example, if any of the general constraint flags / fields in the VPS / SPS specify that a particular constraint is not imposed for an OLS, then the value of the corresponding general constraint flag in the DCI may be equal to 0 or 1 for that OLS. i. In one example, multiple sets of different default values for general constraint flags / fields may be predefined. i. Alternatively, an indication of one of the sets may also be signaled in the DCI / VPS / SPS. ii. Alternatively, only one set is predefined. 1. Alternatively, there may also be one flag in the DCI / VPS / SPS to specify whether one set is used or not. In one example, for one of the sets, each of the general constraint flags / fields is inferred to a value that specifies that the particular constraint is not imposed on the OLS bitstream. For example, the values of intra_only_constraint_flag, no_res_change_in_clvs_constraint_flag, and one_tile_per_pic_constraint_flag are all inferred to be equal to 0. iv. In one example, for one or some of the multiple sets, the value of max_bitdepth_constraint_idc may be inferred to be equal to a particular value, for example, 2. 2. Regarding signaling of SPS / PH / SH syntax elements based on the general constraint flag to solve the second problem: 1) Depending on the value of the general constraint flag, the signaling of the corresponding syntax element in the SPS / PH / SH may be skipped, for example as in the first embodiment. In one example, the signaling of some SPS syntax elements may be skipped according to some general constraint flags. i. For example, if the value of the general constraint field max_chroma_format_constraint_idc is equal to 0, then the signaling of the corresponding SPS syntax element chroma_format_idc may be skipped. a) Additionally, when max_chroma_format_constraint_idc is equal to 0, the value of chroma_format_idc is inferred to be equal to 0. ii. For example, if the value of the general constraint field max_bitdepth_constraint_idc is equal to 0, then the signaling of the corresponding SPS syntax element bit_depth_minus8 may be skipped. a) Additionally, when max_bitdepth_constraint_idc is equal to 0, the value of bit_depth_minus8 is inferred to be equal to 0. iii. For example, if the value of the general constraint flag no_aps_constraint_flag is equal to 1, signaling of APS-related SPS syntax elements (sps_lmcs_enabled_flag, sps_scaling_list_enabled_flag, sps_alf_enabled_flag, sps_ccalf_enabled_flag, etc.) may be skipped. a) Additionally, when no_aps_constraint_flag is equal to 1, the value of each of the APS-related SPS syntax elements listed above is inferred to be equal to 0. b) Alternatively, furthermore, if the value of the general constraint flag no_aps_constraint_flag is equal to 1, then no NAL unit type is allowed to be equal to PREFIX_APS_NUT or SUFFIX_APS_NUT. iv. For example, if the value of the general constraint flag intra_only_constraint_flag is equal to 1, then (sps_weighted_pred_flag, sps_weighted_bipred_flag, long_term_ref_pics_flag, sps_idr_rpl_present_flag, rpl1_same_as_rpl0_flag, gdr_enabled_flag, res_change_in_clvs_allowed_flag, sps_ref_wraparound_enabled_flag, sps_temporal_mvp_enabled_flag, Signaling of one or more of the inter-related SPS syntax elements (such as sps_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sbt_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) may be skipped. a) Additionally, when intra_only_constraint_flag is equal to 1, the value of each of the inter-related SPS syntax elements listed above is inferred to be equal to 0. v. For example, the signaling of the corresponding SPS syntax element Y1 may be skipped if the value of the general constraint flag Y2 is equal to 1. a) Additionally, when not present (general constraint flag Y2 is equal to 1), the value of the corresponding SPS syntax element Y1 is inferred to be equal to 0. b) For example, Y1 is sps_ladf_enabled_flag and Y2 is no_ladf_constraint_flag. c) For example, Y1 is gdr_enabled_flag and Y2 is no_gdr_constraint_flag. d) For example, Y1 is res_change_in_clvs_allowed_flag and Y2 is no_res_change_in_clvs_constraint_flag. e) For example, Y1 is qtbtt_dual_tree_intra_flag and Y2 is no_qtbtt_dual_tree_intra_constraint_flag. f) For example, Y1 is partition_constraints_override_enabled_flag and Y2 is no_partition_constraints_override_constraint_flag. g) For example, Y1 is sps_joint_cbcr_enabled_flag and Y2 is no_joint_cbcr_constraint_flag. h) For example, Y1 is sps_sao_enabled_flag and Y2 is no_sao_constraint_flag. i) For example, Y1 is sps_alf_enabled_flag and Y2 is no_alf_constraint_flag. j) For example, Y1 is sps_ccalf_enabled_flag and Y2 is no_ccalf_constraint_flag. k) For example, Y1 is sps_transform_skip_enabled_flag and Y2 is no_transform_skip_constraint_flag. l) For example, Y1 is sps_bdpcm_enabled_flag and Y2 is no_bdpcm_constraint_flag. m) For example, Y1 is sps_ref_wraparound_enabled_flag and Y2 is no_ref_wraparound_constraint_flag. n) For example, Y1=sps_temporal_mvp_enabled_flag, Y2=no_temporal_mvp_constraint_flag. o) For example, Y1 is sps_sbtmvp_enabled_flag and Y2 is no_sbtmvp_constraint_flag. p) For example, Y1 is sps_amvr_enabled_flag and Y2 is no_amvr_constraint_flag. q) For example, Y1 is sps_bdof_enabled_flag and Y2 is no_bdof_constraint_flag. r) For example, Y1 is sps_dmvr_enabled_flag and Y2 is no_dmvr_constraint_flag. s) For example, Y1 is sps_cclm_enabled_flag and Y2 is no_cclm_constraint_flag. t) For example, Y1 is sps_mts_enabled_flag and Y2 is no_mts_constraint_flag. u) For example, Y1 is sps_sbt_enabled_flag and Y2 is no_sbt_constraint_flag. v) For example, Y1 is sps_affine_enabled_flag and Y2 is no_affine_motion_constraint_flag. w) For example, Y1 is sps_bcw_enabled_flag and Y2 is no_bcw_constraint_flag. x) For example, Y1 is sps_ibc_enabled_flag and Y2 is no_ibc_constraint_flag. y) For example, Y1 is sps_ciip_enabled_flag and Y2 is no_ciip_constraint_flag. z) For example, Y1 is sps_fpel_mmvd_enabled_flag and Y2 is no_fpel_mmvd_constraint_flag. aa) For example, Y1 is sps_dep_quant_enabled_flag and Y2 is no_dep_quant_constraint_flag. bb) For example, Y1 is sps_sign_data_hiding_enabled_flag and Y2 is no_sign_data_hiding_constraint_flag. cc) For example, Y1 is sps_gpm_enabled_flag and Y2 is no_gpm_constraint_flag. vi. Alternatively, bitstream constraints may be added to require that the value of an associated syntax element in the SPS be equal to a particular value based on the value of the corresponding general constraint flag. a) In one example (where the above-mentioned SPS syntax element Y1 is signaled or inferred), a bitstream constraint may be added such that when the general constraint flag Y2 is equal to 1, the value of the corresponding SPS syntax element Y1 is required to be equal to 0. b) In one example (where APS-related SPS syntax elements are signaled or inferred), a bitstream constraint may be added that when no_aps_constraint_flag is equal to 1, the value of each of the APS-related SPS syntax elements (sps_lmcs_enabled_flag, sps_scaling_list_enabled_flag, sps_alf_enabled_flag, sps_ccalf_enabled_flag, etc.) is required to be equal to 0. c) In one example (where inter-related SPS syntax elements are signaled or inferred), when intra_only_constraint_flag is equal to 1, the above inter-related SPS syntax elements (sps_weighted_pred_flag, sps_weighted_bipred_flag, long_term_ref_pics_flag, sps_idr_rpl_present_flag, rpl1_same_as_rpl0_flag, gdr_enabled_flag, res_change_in_clvs_allowed_flag, sps_ref_wraparound_enabled_flag, A bitstream constraint may be added requiring that the values of each of the following flags (e.g., lag, sps_temporal_mvp_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sbt_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, sps_gpm_enabled_flag, etc.) be equal to 0. b. In one example, signaling of one or more PH syntax elements may be skipped according to the values of certain general constraint flags. i. For example, when intra_only_constraint_flag is equal to 1, signaling of inter-related PH syntax elements such as ph_inter_slice_allowed_flag may be skipped. a) Additionally, when intra_only_constraint_flag is equal to 1, the value of each of the inter-related PH syntax elements, such as ph_inter_slice_allowed_flag, is inferred to be equal to 0. ii. For example, when the intra_only_constraint flag is equal to 1, the signaling of the PH syntax elements in the syntax structure ref_pic_lists( ) and the syntax structure ref_pic_list_struct(listIdx, rplsIdx) included in the PH may be skipped. a) For example, when intra_only_constraint_flag is equal to 1, syntax elements such as rpl_sps_flag[ ], rpl_idx[ ], poc_lsb_lt[ ][ ], delta_poc_msb_present_flag[ ][ ], and delta_poc_msb_cycle_lt[ ][ ] in the syntax structure ref_pic_lists( ) included in the PH may be skipped. b) For example, when intra_only_constraint_flag is equal to 1, syntax elements such as num_ref_entries[ ][ ], ltrp_in_header_flag[ ][ ], inter_layer_ref_pic_flag[ ][ ][ ], st_ref_pic_flag[ ][ ][ ], abs_delta_poc_st[ ][ ][ ], strp_entry_sign_flag[ ][ ][ ], rpls_poc_lsb_lt[ ][ ][ ], and ilrp_idx[ ][ ][ ] in the syntax structure ref_pic_list_struct(listIdx,rplsIdx) included in the PH may be skipped. iii. Alternatively (in which case the corresponding syntax element in the PH is not conditionally signaled or skipped depending on the value of the associated general constraint flag / field), in one example a bitstream constraint may be added to require that the value of the associated syntax element in the PH be equal to a particular value based on the value of the corresponding general constraint flag. a) In one example (where the PH syntax element ph_inter_slice_allowed_flag is signaled or inferred), a bitstream constraint may be added such that when intra_only_constraint_flag is equal to 1, the value of each of the inter-related PH syntax elements such as ph_inter_slice_allowed_flag is required to be equal to 0. b) In one example (where syntax elements in ref_pic_lists( ) and ref_pic_list_struct(listIdx, rplsIdx) included in the PH are signaled or inferred), a bitstream constraint may be added that requires that syntax elements in the reference picture lists included in the PH are never used. c. In one example, signaling of one or more SH syntax elements may be skipped according to the values of certain general constraint flags. i. For example, if the value of intra_only_constraint_flag is equal to 1, then the signaling of the RPL related SH syntax element num_ref_idx_active_override_flag may be skipped. a) Additionally, when intra_only_constraint_flag is equal to 1, the value of num_ref_idx_active_override_flag is inferred to be equal to 0. ii. For example, if intra_only_constraint_flag is equal to 1, signaling of RPL-related syntax elements in the syntax structure ref_pic_lists( ) and syntax structure ref_pic_list_struct(listIdx, rplsIdx) included in the SH may be skipped. a) For example, when intra_only_constraint_flag is equal to 1, syntax elements such as rpl_sps_flag[ ], rpl_idx[ ], poc_lsb_lt[ ][ ], delta_poc_msb_present_flag[ ][ ], and delta_poc_msb_cycle_lt[ ][ ] in the syntax structure ref_pic_lists() included in SH may be skipped. b) For example, when intra_only_constraint_flag is equal to 1, syntax elements such as num_ref_entries[ ][ ], ltrp_in_header_flag[ ][ ], inter_layer_ref_pic_flag[ ][ ][ ], st_ref_pic_flag[ ][ ][ ], abs_delta_poc_st[ ][ ][ ], strp_entry_sign_flag[ ][ ][ ], rpls_poc_lsb_lt[ ][ ][ ], and ilrp_idx[ ][ ][ ] in the syntax structure ref_pic_list_struct(listIdx,rplsIdx) included in SH may be skipped. iii. Alternatively (in which case the corresponding syntax elements in the SH are not conditionally signaled or skipped depending on the value of the associated general constraint flag / field), in one example, a bitstream constraint may be added to require that the value of each of the associated syntax elements in the SH be equal to a particular value according to the value of the corresponding general constraint flag. a) In one example (where the SH syntax element num_ref_idx_active_override_flag is signaled or inferred), a bitstream constraint may be added such that when intra_only_constraint_flag is equal to 1, the syntax element num_ref_idx_active_override_flag in SH is required to be equal to 0. b) In one example (where the SH syntax elements in ref_pic_lists( ) and ref_pic_list_struct(listIdx, rplsIdx) included in the SH are signaled or inferred), a bitstream constraint may be added such that when intra_only_constraint_flag is equal to 1, syntax elements in the reference picture lists included in the SH are never used. d. In the above example, the general constraint flag / field used to determine whether the signaling of one or more SH syntax elements is skipped may be replaced by new syntax elements in SPS / PPS / PH / SH. e. In the above example, the general constraint flag / field used to determine whether the signaling of one or more PH syntax elements is skipped may be replaced by a new syntax element in the SPS / PPS / PH. f. In the above example, the general constraint flag / field used to determine whether the signaling of one or more SPS syntax elements is skipped may be replaced by a new syntax element in the SPS. 3. Regarding the constraints on PPS syntax elements based on the general constraint flags to solve the third problem: 1) Depending on the value of the general constraint flag, the value of the corresponding syntax element in the PPS may be constrained, for example as in the second embodiment. In one example, bitstream constraints may be added such that depending on the value of a general constraint flag, the value of a syntax element in the PPS is required to be equal to a particular value. i. For example, when one_tile_per_pic_constraint_flag is equal to 1, the values of num_exp_tile_columns_minus1, and / or num_exp_tile_rows_minus1, and / or rect_slice_flag are required to be equal to 0. ii. For example, when one_slice_per_pic_constraint_flag is equal to 1, the value of rect_slice_flag is required to be equal to 1. iii. For example, when both one_tile_per_pic_constraint_flag and one_slice_per_pic_constraint flag are equal to 1, the value of no_pic_partition_flag is required to be equal to 1. iv. For example, when the intra_only_constraint flag is equal to 1, the values of rpl1_idx_present_flag and num_ref_idx_default_active_minus1[ ] are required to be equal to 0. 4. To solve the fourth problem, we consider the constraints on the general constraint flags to disallow illegal values of the general constraint flags: 1) In the syntax general_constraint_info( ), the value of one general constraint flag may depend on the value of another general constraint flag, as in the third embodiment, for example. In one example, signaling of some general constraint flags in the syntax general_constraint_info( ) may be skipped depending on the values of previously signaled general constraint flags. i. In one example, if the value of one_slice_per_pic_constraint_flag is equal to 1, then signaling of the syntax element one_subpic_per_pic_constraint_flag in the syntax general_constraint_info( ) may be skipped. 1. Additionally, when one_slice_per_pic_constraint_flag is equal to 1, the value of one_subpic_per_pic_constraint_flag is inferred to be equal to 1. ii. In one example, if the value of no_transform_skip_constraint_flag is equal to 1, then signaling of the syntax element no_bdpcm_constraint_flag in the syntax general_constraint_info( ) may be skipped. 1. Additionally, when no_transform_skip_constraint_flag is equal to 1, the value of no_bdpcm_constraint_flag is inferred to be equal to 1. iii. For example, if the value of intra_only_constraint_flag is equal to 1, signaling of inter-related syntax elements in the general_constraint_info( ) syntax structure (no_res_change_in_clvs_constraint_flag, no_ref_wraparound_constraint_flag, no_temporal_mvp_constraint_flag, no_sbtmvp_constraint_flag, no_amvr_constraint_flag, no_bdof_constraint_flag, no_dmvr_constraint_flag, no_sbt_constraint_flag, no_affine_motion_constraint_flag, no_bcw_constraint_flag, no_ciip_constraint_flag, no_fpel_mmvd_constraint_flag, no_gpm_constraint_flag, etc.) may be skipped. 2. Additionally, when intra_only_constraint_flag is equal to 1, the value of each of the above-mentioned inter-related syntax elements in the general_constraint_info( ) syntax structure is inferred to be equal to 1. b. In one example, alternatively (in which case the general constraint flag is not conditionally signaled or skipped depending on the value of the previous general constraint flag), a bitstream constraint may be added such that the value of one general constraint flag is required to be equal to a particular value according to the value of the associated previous general constraint flag(s). i. In one example, when intra_only_constraint_flag is equal to 1, the value of each of the inter-related general constraint flags mentioned in the bullet above is required to be equal to 1. ii. In one example, when intra_only_constraint_flag is equal to 1, at least one of the values of no_idr_constraint_flag and no_cra_constraint_flag is required to be equal to 0. iii. In one example, when no_transform_skip_constraint_flag is equal to 1, the value of no_bdpcm_constraint_flag is required to be equal to 1. iv. In one example, when no_aps_constraint_flag is equal to 1, the value of no_alf_constraint_flag is required to be equal to 1. c. In one example, additionally, bitstream constraints may be added to require the values of some general constraint flags to be equal to specific values, if necessary, under certain conditions. i. In one example, a bitstream constraint may be added to constrain the value of a combination of multiple general constraint flags, for example, requiring at least one of the values of no_gdr_constraint_flag, no_idr_constraint_flag, and no_cra_constraint_flag to be equal to 0. ii. In one example, a bitstream constraint may be added to constrain the range of the general constraint field. 1. For example, max_bitdepth_constraint_idc is required to be in the range 0 to X (e.g., X=8), inclusive. 2. For example, when general_profile_idc is equal to A (eg, A=1), max_bitdepth_constraint_idc is required to be in the range of 0 to B (eg, B=2), inclusive. 5. Regarding the addition of new SPS / PPS syntax elements to solve problem number 5: 1) For example, as in the fourth embodiment, new SPS and / or PPS syntax elements may be added to condition related syntax elements in the SPS / PPS / PH / SH. In one example, a new SPS syntax element (eg, sps_intra_only_flag) and / or a new PPS syntax element (eg, pps_intra_only_flag) may be added to condition inter prediction related syntax elements in SPS / PPS / PH / SH. i. In one example, when the general constraint flag intra_only_constraint_flag is equal to 1, the signaling of the new SPS syntax element sps_intra_only_flag and / or the new PPS syntax element pps_intra_only_flag may be skipped. 1. Additionally, when intra_only_constraint_flag is equal to 1, the value of the new SPS syntax element sps_intra_only_flag is inferred to be equal to 1 and / or the value of the new PPS syntax element pps_intra_only_flag is inferred to be equal to 1. ii. In one example, if the value of a new SPS syntax element (e.g., sps_intra_only_flag) is equal to 1, then (sps_weighted_pred_flag, sps_weighted_bipred_flag, long_term_ref_pics_flag, sps_idr_rpl_present_flag, rpl1_same_as_rpl0_flag, gdr_enabled_flag, res_change_in_clvs_allowed_flag, sps_ref_wraparound_enabled_flag, sps_temporal_mvp Signaling of inter-related SPS syntax elements (such as sps_enabled_flag, sps_sbtmvp_enabled_flag, sps_amvr_enabled_flag, sps_bdof_enabled_flag, sps_dmvr_enabled_flag, sps_sbt_enabled_flag, sps_affine_enabled_flag, sps_bcw_enabled_flag, sps_ciip_enabled_flag, sps_fpel_mmvd_enabled_flag, and sps_gpm_enabled_flag) may be skipped. 2. Additionally, when the new SPS syntax element sps_intra_only_flag is equal to 1, the value of each of the inter-related SPS syntax elements is inferred to be equal to a particular value (eg, 0 or 1). iii. In one example, if the value of a new SPS / PPS syntax element (e.g., sps_intra_only_flag and / or pps_intra_only_flag) is equal to 1, signaling of corresponding inter-related syntax elements and RPL-related syntax elements included in the PH and / or SH may be skipped. 1. In one example, the inter-related PH syntax element mentioned above may be ph_inter_slice_allowed_flag. 2. In one example, the RPL related SH syntax element mentioned above may be num_ref_idx_active_override_flag. 3. As an example, the corresponding RPL-related syntax elements mentioned above may be syntax elements in the syntax structure ref_pic_lists( ) and syntax structure ref_pic_list_struct(listIdx, rplsIdx) included in the PH and / or SH. 4. Additionally, when the new syntax elements sps_intra_only_flag and / or pps_intra_only_flag are equal to 1, the value of each of the corresponding inter-related and RPL-related syntax elements in PH and / or SH is inferred to be equal to a particular value (eg, 0 or 1). iv. In one example, if the value of a new PPS syntax element (eg, pps_intra_only_flag) is equal to 1, signaling of the corresponding PPS syntax element may be skipped. 1. For example, the corresponding PPS syntax element mentioned above may be rpl1_idx_present_flag. 2. For example, the corresponding PPS syntax element mentioned above may be num_ref_idx_default_active_minus1[ ]. 3. Additionally, when the new PPS syntax element pps_intra_only_flag is equal to 1, the value of the corresponding PPS syntax element is inferred to be equal to a particular value (eg, 0 or 1). v. Alternatively (in which case the new SPS and / or PPS syntax elements sps_intra_only_flag and / or pps_intra_only_flag are conditionally signaled or skipped depending on the value of intra_only_constraint_flag), in one example, a bitstream constraint may be added to require that the value of the new SPS and / or PPS syntax elements sps_intra_only_flag and / or pps_intra_only_flag be equal to 1 when intra_only_constraint_flag is equal to 1. vi. Alternatively (in which case the SPS / PPS / PH / SH syntax elements associated with the new SPS / PPS syntax element are not conditionally signaled or skipped depending on the value of the new SPS / PPS syntax element), in one example a bitstream constraint may be added that requires that the value of each of the associated syntax elements in SPS / PPS / PH / SH be equal to a particular value (such as 0 or 1) depending on the value of the new SPS / PPS syntax element. 1. In one example (where the new PPS syntax element pps_intra_only_flag is signaled or inferred), additionally, a bitstream constraint may be added such that when the new PPS syntax element sps_intra_only_flag is equal to 1, the value of the new PPS syntax element pps_intra_only_flag is required to be equal to 1. 2. In one example (where SPS syntax elements related to the new SPS syntax element are signaled or inferred), a bitstream constraint may be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1, the value of the inter-related SPS syntax element is required to be equal to 0. 3. In one example (where the PPS syntax elements related to the new SPS / PPS syntax elements are signaled or inferred), in one example, a bitstream constraint may be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1 or when the new PPS syntax element pps_intra_only_flag is equal to 1, the value of the inter-related PPS syntax element is required to be equal to 0. 4. In one example (where PH / SH syntax elements associated with new SPS / PPS syntax elements are signaled or inferred), a bitstream constraint may be added such that when the new SPS syntax element sps_intra_only_flag is equal to 1 and / or the new PPS syntax element pps_intra_only_flag is equal to 1, the values of the corresponding inter-related and / or RPL-related syntax elements included in the PH / SH are required to be equal to a particular value (e.g., 0 or 1). 6. Regarding adding new general constraint flags / fields to solve problem #6: 1) In the syntax general_constraint_info( ), new general constraint flags may be added, and these new general constraint flags may be used, for example, as in the fifth embodiment, to condition related syntax elements in the SPS / PPS / PH / SH, or to constrain values of related syntax elements in the SPS / PPS / PH / SH through bitstream constraints. For example, new general constraint flags may be added to accomplish one or more functions, as described below. i. Adding a new general constraint flag, e.g., a new syntax element no_inter_layer_prediction_constraint_flag is added, for example to disable inter-layer prediction and / or allow only one layer. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element inter_layer_ref_pics_present_flag or to constrain its value. ii. Add a new general constraint flag to disable long term references, e.g., a new syntax element no_long_term_ref_pics_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element long_term_ref_pics_flag or to constrain its value. iii. Add a new general constraint flag, e.g., a new syntax element no_max_luma_transform_size 64_constraint_flag, for disabling maximum transform size equal to 32x32. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_max_luma_transform_size_64_flag or to constrain its value. iv. Add a new general constraint flag, e.g., a new syntax element no_parallel_merge_level_constraint_flag, for example to disable MER. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element log2_parallel_merge_level_minus2 or to constrain its value. v. Add a new general constraint flag to disable the presence of wavefront parallel processing entry offsets, e.g., a new syntax element no_wpp_entry_point_offset_present_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of or constrain the value of the SPS syntax element sps_wpp_entry_point_offsets_present_flag. vi. Add a new general constraint flag for disabling entropy coding sync points (i.e., wavefront parallelism), e.g., the no_entropy_coding_sync_constraint_flag syntax element. Furthermore, this new syntax element can be used to condition the signaling of, or constrain the value of, the SPS syntax element sps_entropy_coding_sync_enabled_flag. b. For example, new general constraint flags may be added to control one or more of the coding tools, as described below. i. Add a new general constraint flag, e.g., a new syntax element no_weighted_pred_constraint_flag, for disabling weighted prediction for P slices. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_weighted_pred_flag or to constrain its value. ii. Add a new general constraint flag, e.g., a new syntax element no_weighted_bipred_constraint_flag, for disabling weighted bi-prediction for B slices. Furthermore, this new syntax element can be used to condition the signaling of or constrain the value of the SPS syntax element sps_weighted_bipred_flag. iii. Add a new general constraint flag, e.g., for disabling SMVD, e.g., a new syntax element no_smvd_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_smvd_enabled_flag or to constrain its value. iv. Add a new general constraint flag, e.g., for disabling MMVD, e.g., a new syntax element no_mmvd_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_mmvd_enabled_flag or to constrain its value. v. Add a new general constraint flag, e.g., for disabling ISP, e.g., a new syntax element no_isp_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_isp_enabled_flag or to constrain its value. vi. Add a new general constraint flag, e.g., for disabling MRL, e.g., new syntax element no_mrl_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_mrl_enabled_flag or to constrain its value. vii. Add a new general constraint flag, e.g., to disable MIP, e.g., a new syntax element no_mip_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of, or to constrain the value of, the SPS syntax element sps_mip_enabled_flag. viii. Add a new general constraint flag, e.g., for disabling PLT, e.g., new syntax element no_palette_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of or constrain the value of the SPS syntax element sps_palette_enabled_flag. ix. Add a new general constraint flag, e.g., a new syntax element no_act_constraint_flag, for disabling ACT. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_act_enabled_flag or to constrain its value. x. Add a new general constraint flag, e.g., to disable LMCS, e.g., a new syntax element no_lmcs_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_lmcs_enabled_flag or to constrain its value. xi. Add a new general constraint flag, e.g., a new syntax element no_lfnst_constraint_flag, for disabling LFNST. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_lfnst_enabled_flag or to constrain its value. xii. Add a new general constraint flag, e.g., for disabling the scaling list, e.g., a new syntax element no_scaling_list_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_scaling_list_enabled_flag or to constrain its value. xiii. Add a new general constraint flag, e.g., for disabling virtual boundaries, e.g., a new syntax element no_virtual_boundaries_constraint_flag. Furthermore, this new syntax element can be used to condition the signaling of the SPS syntax element sps_virtual_boundaries_enabled_flag or to constrain its value. c. For example, new general constraint flags may be added to control groups of syntax elements (i.e., to condition the signaling of or constrain the values of groups of syntax elements), as described below. i. For example, add a new general constraint flag to disable weighted prediction and weighted bi-prediction. Furthermore, this new syntax element can be used to control the SPS syntax elements sps_weighted_pred_flag and sps_weighted_bipred_flag. For example, when the new general constraint syntax is equal to 1, the signaling of the corresponding SPS / PH / SH syntax element can be skipped. ii. Additionally, if a corresponding SPS / PH / SH syntax element does not exist (and the corresponding new general constraint syntax element is 1), the value of the corresponding SPS / PH / SH syntax element is inferred to be a particular value (e.g., 0 or 1). iii. Alternatively (in this case where the corresponding SPS / PH / SH syntax elements are signaled or inferred), in one example, a bitstream constraint may be added such that when the new general constraint syntax element is equal to 1, the value of the corresponding SPS / PH / SH syntax element is required to be equal to a particular value (such as 0 or 1). i. Alternatively, in one example, when no_aps_constraint_flag is equal to 1, the values of APS-related newly added constraint flags (eg, no_scaling_list_constraint_flag and no_lmcs_constraint_flag) are required to be equal to 1. ii. Alternatively, in one example, when intra_only_cosntraint_flag is equal to 1, the values of APS-related newly added constraint flags (e.g., no_weighted_pred_constraint_flag, no_weighted_bipred_constraint_flag, no_long_term_ref_pics_constraint_flag, no_inter_layer_prediction_constraint_flag, no_smvd_constraint_flag, and no_mmvd_constraint_flag) are required to be equal to 1. iii. Alternatively, in one example, when vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the value of no_inter_layer_prediction_constraint_flag is required to be equal to 1. 7. Regarding the connection of APS syntax elements to syntax elements in other parameter sets to solve problem 7: 1) In one example, as in the sixth embodiment, for example, the VPS ID and / or the SPS ID and / or the PPS ID may be added to the APS syntax structure, ie, adaptation_parameter_set_rbsp( ). 2) In one example, as in the sixth embodiment, APS syntax elements (e.g., alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag) may depend on the value of the general constraint flag. For example, when no_aps_constraint_flag is equal to 0, at least one of the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag shall be equal to 1. b. For example, when sps_alf_enabled_flag is equal to 1, at least one of the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag shall be equal to 1. When c.no_aps_constraint_flag is equal to 0 and sps_alf_enabled_flag is equal to 1, at least one of the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag shall be equal to 1. d. Alternatively, the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag may depend on whether there is an APS NAL unit with aps_params_type equal to ALF_APS. 3) In one example, the APS syntax element may depend on the value of the syntax element associated with the corresponding SPS / PPS according to the SPS / PPS ID. a. For example, the values of chroma-related APS syntax elements (such as alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag, scaling_list_chroma_present_flag, etc.) will not be constrained according to variables derived by SPS syntax elements (such as ChromaArrayType). 4) In one example, when no_aps_constraint_flag is equal to 1, a bitstream constraint may be added that syntax elements associated with the syntax structures alf_data( ), lmcs_data( ), and scaling_list_data( ) cannot be sent. 8. Regarding redundant signaling of general constraint flags: 1) In one example, an indicator may be included in the profile_tier_level( ) and / or general_constraint_info( ) syntax structures to indicate which profile and / or which tier and / or which level the current general constraint information applies to. 2) In one example, the syntax structure general_constraint_info( ) may be an SPS syntax structure seq_parameter_set_rbsp( ) and may be included only in the SPS syntax structure seq_parameter_set_rbsp( ). 3) If a VPS exists, then bitstream constraints may be added in which the general_constraint_info( ) syntax elements contained in the VPS are used for the CVS. 4) If the VPS does not exist, then the bitstream constraints may be added such that the general_constraint_info( ) syntax element contained in the SPS is used for the current CLVS. 9. In one example, whether and / or how to signal a general constraint structure may depend on the profile and / or sub-profile and / or level and / or tier values. a. In one example, each general_constraint_info( ) syntax structure is specified to be associated with one set of general_profile_idc and subprofile_sub_profile_idc[i] for all i values signaled in the same profile_tier_level( ) syntax structure as the general_constraint_info( ) syntax structure. That is, each general_constraint_info( ) syntax structure is specified to be associated with a profile_tier_level( ) syntax structure that contains the general_constraint_info( ) syntax structure. b. In one example, the information conveyed in the general_constraint_info( ) syntax structure may impose more constraints on which coding tools may be applied than the profile and sub-profile indicated in the profile_tier_level( ) syntax structure that contains the general_constraint_info( ) syntax structure. This means that in addition to all the constraints imposed by the profile and sub-profile, more aspects may be constrained by the general constraint information. c. In one example, for any particular aspect associated with a general constraint syntax element, the corresponding general constraint syntax element must have a value that indicates either a stricter constraint with respect to that aspect than is indicated by the profile and sub-profile, or the same constraint with respect to that aspect as is indicated by the profile and sub-profile. i. In one example, if any of the profile and sub-profiles indicates that all slices are intra slices, then intra_only_constraint_flag shall be equal to 1, and if none of the profile and sub-profiles indicates that all slices are intra slices, then intra_only_constraint_flag may be equal to either 1 or 0. d. In one example, for any particular aspect associated with a general constraint syntax element, the strictest constraint indicated by the profile, sub-profile, and corresponding general constraint syntax element is applied. i. In one example, when either the profile or the sub-profile indicates that all slices are intra slices, the value of intra_only_constraint_flag may be equal to either 1 or 0, but all slices are still required to be intra slices; when neither the profile nor the sub-profile indicates that all slices are intra slices and the value of intra_only_constraint_flag is equal to 1, then again, all slices are required to be intra slices. e. In one example, no general constraint information is signaled for a particular profile and / or sub-profile and / or level and / or tier, and the general constraint flag / field is inferred to be a predefined value based on the particular profile and / or level and / or tier. f. In one example, general constraint information may be signaled but ignored for a particular profile and / or sub-profile and / or level and / or tier, and the general constraint flags are inferred to be predefined values based on the particular profile and / or level and / or tier. g. In one example, general constraint information may be signaled for a particular profile and / or sub-profile and / or level and / or tier. The general constraint flag must be equal to a predefined value based on the particular profile and / or level and / or tier in the conforming bitstream. In one example, general constraint information may be signaled for a particular profile and / or sub-profile and / or level and / or tier. Whether and / or how to apply the coding tools may be determined by the corresponding general constraint flag(s), ignoring the specifications in the profile and / or level and / or tier. i. In one example, if a coding tool is specified to be turned off in a profile and / or subprofile and / or level and / or tier, the general constraint flag associated with the coding tool must be set equal to 1 (meaning turned off). j. In one example, if a coding tool is specified to be turned off in a profile and / or subprofile and / or level and / or tier, the general constraint flag associated with the coding tool may be ignored and inferred to be 1 (meaning turned off). k. In one example, if a coding tool is specified to be turned off in a profile and / or sub-profile and / or level and / or tier, the general constraint flag associated with the coding tool may be skipped and inferred to be 1 (meaning turned off). l. In one example, if a profile and / or sub-profile indicates all intra coding, then intra_only_constraint_flag must be equal to 1. Alternatively, if a profile and / or sub-profile indicates all intra-coding, then intra_only_constraint_flag is skipped or ignored and inferred to be 1. 10. Regarding the presence and value of syntax elements (e.g., X_info_in_ph_flag in PPS) to solve the eighth problem: a. It is proposed that the presence of a syntax element (e.g., X_info_in_ph_flag in a PPS) specifying whether related information of a particular feature is signaled in the PH or in the SH is conditional on whether there is a picture partition / split that references the PPS (e.g., whether no_pic_partition_flag is equal to 1). i. Alternatively, the presence of X_info_in_ph_flag in a PPS may be conditional on whether there is only one slice in the picture that references the PPS. ii. Additionally, when not present, infer X_info_in_ph_flag to be equal to a particular value (eg, 0 or 1). 1. Alternatively, if feature X depends on an APS syntax element, then infer X_info_in_ph_flag equal to 1 when it is not present. 2. Alternatively, if feature X does not depend on an APS syntax element, then infer X_info_in_ph_flag equal to 0 when not present. b. Additionally, the value of X_info_in_ph_flag may be constrained based on whether a PH syntax structure is present in the slice header. i. For example, when picture_header_in_slice_header_flag is equal to 1, the value of X_info_in_ph_flag must be equal to a specific value (such as 0 or 1). c. For example, X may be a chroma QP offset (assuming a flag called chroma_qp_offset_info_in_ph_flag is signaled in the PPS to control whether the chroma QP offset is signaled in the PH or in the SH). d. For example, X may be any feature whose associated information may be signaled in either the PH or the SH. 11. Regarding the removal of the semantic dependency of APS on SPS to solve the ninth problem: In one example, a syntax element (eg, referred to as aps_chroma_present_flag) that specifies whether chroma-related APS syntax elements are signaled may be signaled in an APS syntax structure (eg, adaptation_parameter_set_rbsp( )). b. For example, the ChromaArrayType derived by the SPS syntax element is reachable through the SPS / PPS ID associated with the PH / SH syntax element. c. In one example, constraints on an APS syntax element (e.g., aps_chroma_present_flag) may depend on variables derived from a PH or SH syntax element (e.g., ChromaArrayType). d. In one example, the constraints and signaling apply similarly to the seventh embodiment. e. For example, when chromaArrayType is not equal to 0, the value of aps_chroma_present_flag is required to be equal to 1 for APS NAL units having aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i]. f. Additionally, when chromaArrayType is equal to 0, the value of aps_chroma_present_flag of an APS NAL unit having aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] is required to be equal to 0. g. Additionally, when chromaArrayType is not equal to 0, the value of aps_chroma_present_flag is required to be equal to 1 for APS NAL units having aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i]. h. Additionally, when chromaArrayType is equal to 0, the value of aps_chroma_present_flag of an APS NAL unit having aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] is required to be equal to 0. 12. To indicate whether picture header information should be signaled in the slice header, an SE (eg, called "general_pic_header_in_slice_header_constraint_flag") is proposed to be signaled in a general constraint syntax structure (such as general_constraint_info( ) in VVC). For example, it is required that picture header information must be signaled in the slice header when general_pic_header_in_slice_header_constraint_flag is equal to 0. b. For example, picture header information is required to be signaled in the slice header when general_pic_header_in_slice_header_constraint_flag is equal to 1. c. An SE indicating whether each picture contains only one slice (e.g., one_slice_per_pic_constraint_flag) is required to be equal to 1 when general_pic_header_in_slice_header_constraint_flag is equal to 0. d. An SE (e.g., one_slice_per_pic_constraint_flag) indicating whether each picture contains only one slice is required to be equal to 1 when general_pic_header_in_slice_header_constraint_flag is equal to 1. 13. It is proposed that whether it should be possible to partition a picture into rectangular or non-rectangular slices may be constrained by bitstream compatibility. a. Alternatively, whether a picture header should be signaled in a slice header may be constrained by bitstream compatibility depending on whether the picture should be partitioned into rectangular or non-rectangular slices. b. For example, an SE (such as picture_header_in_slice_header_flag) indicating whether a picture header should be signaled in a slice header shall be equal to 1 when the picture is partitioned into rectangular slices (eg, rect_slice_flag is equal to 1). c. For example, SE(rect_slice_flag), which indicates whether a picture should be partitioned into rectangular slices, shall be equal to 1 when signaling a picture header in the slice header (eg, picture_header_in_slice_header_flag is equal to 1).
[0038] 6. Embodiment Below are some example embodiments of some of the aspects of the invention summarized in Section 5 above, which are applicable to the VVC specification. The modified text is based on the latest VVC text in JVET-Q2001-vC. Most relevant parts that have been added or modified are highlighted in bold and italics (underlined below, except in tables), and some parts that have been deleted are marked with double brackets (e.g., [[a]] indicates the deletion of the letter "a").
[0039] 6.1. First embodiment This is an embodiment of items 1, 1.1, 1.1.a, 1.1.b, and 1.1.c summarized in Section 5 above.
[0040] 6.1.1. Implementation of items 2.1 and 2.1a In one example, the syntax structure seq_parameter_set_rbsp( ) is modified as follows: [Table 19] TIFF0007601494000113.tif228161TIFF0007601494000114.tif230161TIFF0007601494000115.t if230161TIFF0007601494000116.tif230161TIFF0007601494000117.tif230161TIFF0007601494 A gdr_enabled_flag equal to 0 specifies that GDR pictures may be present in the CLVS that references the SPS. A gdr_enabled_flag equal to 0 specifies that GDR pictures are not present in the CLVS that references the SPS. When not present, the value of gdr_enabled_flag is inferred to be equal to 0. chroma_format_idc specifies the chroma sampling relative to luma sampling, as specified in Section 6.2. chroma_format_idc shall be in the range from 0 to max_chroma_format_constraint_idc, inclusive. When not present, the value of chroma_format_idc is inferred to be equal to 0. res_change_in_clvs_allowed_flag equal to 1 specifies that picture spatial resolution may change within a CLVS that references an SPS. res_change_in_clvs_allowed_flag equal to 0 specifies that picture spatial resolution may not change within any CLVS that references an SPS. When not present, the value of res_change_in_clvs_allowed_flag is inferred to be equal to 0. bit_depth_minus8 specifies the bit depth of the samples of the luma and chroma arrays, BitDepth, and the values of the luma and chroma quantization parameter range offsets, QpBdOffset, as follows:
number
[0041] 6.1.2. Implementation of Items 2.1 and 2.1b In one example, the syntax structure picture_header_structure( ) is modified as follows: [Table 20]
[0042] 6.1.3. Implementation of Items 2.1 and 2.1c In one example, the syntax structure slice_header( ) is modified as follows: [Table 21]
[0043] 6.2. Second embodiment This is an embodiment of items 3 and 3.1 summar...
Claims
1. 1. A video processing method comprising the steps of: performing a conversion between a video including one or more pictures and a bitstream of said video according to a format rule; The format rule specifies that a first syntax element is included in the general constraint syntax structure to indicate whether each picture includes only one slice and whether a picture header syntax structure is present in the slice header; the format rule specifies that the presence of a third syntax element in a picture parameter set specifying whether particular coding information is present in the picture header syntax structure or in the slice header depends on a value of a fourth syntax element in the picture parameter set specifying partitioning characteristics of a picture referencing the picture parameter set; the format rule specifies the presence of a fifth syntax element in an adaptation parameter set (APS) referenced by a video unit of the one or more pictures, the fifth syntax element specifying whether chroma-related APS syntax elements are present in the APS. method.
2. 2. The method of claim 1, wherein the format rule specifies that if the first syntax element has a particular value that specifies imposing a corresponding constraint, then each picture contains only one slice and the picture header syntax structure is present in the slice header.
3. 3. The method of claim 2, wherein the format rule specifies that if the first syntax element has the particular value, then a second syntax element is equal to 1, indicating that the picture header syntax structure is present in the slice header.
4. The method of claim 2 or 3, wherein the particular value is one.
5. 2. The method of claim 1 , wherein the format rules further specify that if the third syntax element is not present, a value of the third syntax element is inferred to be equal to 0 indicating that the particular coding information is not present in the picture header syntax structure but is allowed to be present in the slice header.
6. The method of claim 1 , wherein the specific coding information is reference picture list information, deblocking filter information, sample adaptive offset (SAO) filter information, adaptive loop filter (ALF) information, weighted prediction information, or quantization parameter (QP) delta information.
7. The format rule is: If the field indicates a monochrome chroma format, the value of the fifth syntax element of an APS Network Abstraction Layer (NAL) unit having an APS parameter type equal to Adaptive Loop Filtering (ALF) APS and an APS identifier equal to the ALF APS identifier at the picture header level to which the luma component of a slice in the picture refers is required to be equal to 0; or If the field indicates a monochrome chroma format, the value of the fifth syntax element of an APS NAL unit having an APS parameter type equal to ALF APS and an APS identifier equal to the ALF APS identifier at the slice header level to which the luma component of the slice refers is required to be equal to 0. The method of claim 1 further specifying:
8. The method of claim 1 , wherein the conversion comprises encoding the video into the bitstream.
9. The method of claim 1 , wherein the converting comprises decoding the video from the bitstream.
10. 16. An apparatus for processing video data, comprising: a processor; and a non-transitory memory having instructions that, when executed by the processor, cause the processor to: performing a conversion between a video including one or more pictures and a bitstream of said video according to a format rule; The format rule specifies that a first syntax element is included in the general constraint syntax structure to indicate whether each picture includes only one slice and whether a picture header syntax structure is present in the slice header; the format rule specifies that the presence of a third syntax element in a picture parameter set specifying whether particular coding information is present in the picture header syntax structure or in the slice header depends on a value of a fourth syntax element in the picture parameter set specifying partitioning characteristics of a picture referencing the picture parameter set; the format rule specifies the presence of a fifth syntax element in an adaptation parameter set (APS) referenced by a video unit of the one or more pictures, the fifth syntax element specifying whether chroma-related APS syntax elements are present in the APS. Device.
11. A non-transitory computer readable storage medium having instructions stored thereon, the instructions causing a processor to: performing a conversion between a video including one or more pictures and a bitstream of said video according to a format rule; The format rule specifies that a first syntax element is included in the general constraint syntax structure to indicate whether each picture includes only one slice and whether a picture header syntax structure is present in the slice header; the format rule specifies that the presence of a third syntax element in a picture parameter set specifying whether particular coding information is present in the picture header syntax structure or in the slice header depends on a value of a fourth syntax element in the picture parameter set specifying partitioning characteristics of a picture referencing the picture parameter set; the format rule specifies the presence of a fifth syntax element in an adaptation parameter set (APS) referenced by a video unit of the one or more pictures, the fifth syntax element specifying whether chroma-related APS syntax elements are present in the APS. A non-transitory computer-readable storage medium.
12. A method for storing a bitstream of video, comprising the steps of: generating the bitstream of the video comprising one or more pictures according to a format rule; storing the bitstream on a non-transitory computer-readable recording medium; The format rule specifies that a first syntax element is included in the general constraint syntax structure to indicate whether each picture includes only one slice and whether a picture header syntax structure is present in the slice header; the format rule specifies that the presence of a third syntax element in a picture parameter set specifying whether particular coding information is present in the picture header syntax structure or in the slice header depends on a value of a fourth syntax element in the picture parameter set specifying partitioning characteristics of a picture referencing the picture parameter set; the format rule specifies the presence of a fifth syntax element in an adaptation parameter set (APS) referenced by a video unit of the one or more pictures, the fifth syntax element specifying whether chroma-related APS syntax elements are present in the APS. method.
Citation Information
Cited By
Signaling for general constraint information in video coding
US12401827B2
Signalling of general constraints flag
US12413785B2
Signaling for general constraint information in video coding
US12587686B1
Reference picture list signaling in video coding
US12777189B2
