Signaling of reserved bits in video general constraint information syntax
Patent Information
- Application Number
- CN202180040162.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-06-02
- Filing Date
- 2021-06-02
- Publication Date
- 2026-08-18
- Estimated Expiration
- 2041-06-02
Smart Images

Figure CN115699743B_ABST
Abstract
Description
[0001] Cross-reference of related applications
[0002] This application claims priority and interest in International Patent Application No. 63 / 033,689, filed on June 2, 2020, in accordance with applicable patent law and / or the rules of the Paris Convention. For all legal purposes, the entire disclosure of the aforementioned application is incorporated herein by reference as a part of the disclosure. Technical Field
[0003] This patent document relates to image encoding and decoding as well as video encoding and decoding. Background Technology
[0004] Digital video accounts for the largest share of bandwidth usage on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention
[0005] This paper discloses a technique for signaling notifications of reserved bits in the General Constraint Information (GCI) syntax, which can be used by video encoders and decoders to perform video encoding, decoding, or processing.
[0006] In one example aspect, a video processing method is disclosed. The method includes performing a conversion between a video comprising one or more images and a bitstream of the video according to a rule, wherein the rule specifies a syntax structure in a profile-tier-level syntax structure following a syntax element, wherein the syntax structure includes information related to General Constraint Information (GCI) for the bitstream, and wherein the syntax element indicates the level to which the output layer set associated with the profile-tier-level syntax structure conforms.
[0007] In another example, another video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a bitstream of that video, according to a rule specifying that a byte alignment syntax in a General Constraint Information (GCI) syntax structure follows one or more GCI reserved fields, wherein the byte alignment syntax indicates whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream, and wherein the GCI syntax structure includes GCI-related syntax elements.
[0008] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a bitstream of that video, according to rules, wherein the rules specify a syntactic structure in a profile-tier-level syntactic structure following an indication of level information, wherein the syntactic structure includes information related to General Constraint Information (GCI), and wherein the indication of the level information specifies an interoperability indicator.
[0009] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a bitstream of that video, according to a rule specifying whether a general constraint information (GCI) syntax structure is included in the profile-tier-level syntax structure.
[0010] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a video bitstream, according to a rule specifying that byte alignment syntax is excluded from a General Constraint Information (GCI) syntax structure present in a profile-tier-level syntax structure. This byte alignment syntax indicates whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream, and the GCI syntax structure includes GCI-related syntax elements.
[0011] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a bitstream of that video, according to rules, wherein the rules specify a General Constraint Information (GCI) syntax structure immediately preceding a byte alignment check condition in a profile-tier-level syntax structure, wherein the GCI syntax includes GCI-related syntax elements, and wherein the byte alignment check condition checks whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream.
[0012] In another example, a different video processing method is disclosed. This method involves performing a conversion between a video comprising one or more images and a bitstream of that video, according to a rule specifying the number of reserved constraint bits associated with General Constraint Information (GCI) syntax elements to be included in the bitstream.
[0013] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a bitstream of that video, according to a rule specifying that a General Constraint Information (GCI) syntax element is included at the beginning of a GCI syntax structure, wherein the GCI syntax element indicates whether one or more GCI syntax elements are included within the GCI syntax structure.
[0014] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a bitstream of that video, according to rules, wherein the rules specify constraints on syntax elements corresponding to the bit depth used to represent the video in the bitstream.
[0015] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images and a bitstream of that video, according to rules specifying constraints on syntax elements corresponding to the chroma format of the video.
[0016] In yet another example, a video encoder apparatus is disclosed. This video encoder includes a processor configured to implement the methods described above.
[0017] In yet another example, a video decoder apparatus is disclosed. This video decoder includes a processor configured to implement the methods described above.
[0018] In yet another example, a computer-readable medium on which code is stored is disclosed. This code embodies one of the methods described herein in the form of processor-executable code.
[0019] These and other features are described in this article. Attached Figure Description
[0020] Figure 1 This is a block diagram illustrating an example video processing system that can be implemented using the various techniques disclosed herein.
[0021] Figure 2 This is a block diagram of an example hardware platform used for video processing.
[0022] Figure 3 This is a block diagram illustrating an example video codec system that can implement some embodiments of the present disclosure.
[0023] Figure 4 This is a block diagram illustrating an example of an encoder that can implement some embodiments of the present disclosure.
[0024] Figure 5 This is a block diagram illustrating examples of decoders that can implement some embodiments of the present disclosure.
[0025] Figures 6 to 15 A flowchart of an example method for video processing is shown. Detailed Implementation
[0026] The use of section headings in this document is for ease of understanding and does not limit the application of the technologies and embodiments disclosed in each section to that section only. Furthermore, the use of H.266 terminology in some specifications is merely for ease of understanding and not to limit the scope of the disclosed technologies. Thus, the technologies described herein are also applicable to other video codec protocols and designs.
[0027] 1. Introduction
[0028] This document relates to video codec technology. Specifically, it concerns the syntax design for signaling notification of Common Constraint Information (GCI) in video codecs. These ideas can be applied individually or in various combinations to any video codec standard or non-standard video codec that supports multi-layer video codecs, such as the Universal Video Codec (VVC) currently under development.
[0029] 2. Abbreviation
[0030] APS Adaptive Parameter Set
[0031] AU Access Unit
[0032] AUD Access Unit Separator
[0033] AVC Advanced Video Codec
[0034] CLVS codec layer video sequence
[0035] CPB image buffer
[0036] CRA Clean Random Access
[0037] CTU (Codec Tree Unit)
[0038] CVS codec video sequence
[0039] DPB Decoding Image Buffer
[0040] DPS Decoding Parameter Set
[0041] End of EOB bitstream
[0042] End of EOS sequence
[0043] GCI General Constraint Information
[0044] GDR Gradual Decoding and Refresh
[0045] HEVC High-Efficiency Video Encoding and Decoding
[0046] HRD Assumption Reference Decoder
[0047] IDR Instant Decoding and Refresh
[0048] JEM Joint Exploration Model
[0049] MCTS motion-constrained plate group
[0050] NAL Network Abstraction Layer
[0051] OLS Output Layer Set
[0052] PH image header
[0053] PPS Image Parameter Set
[0054] PTL grade, level and grade
[0055] PU Image Unit
[0056] RRP reference image resampling
[0057] RBSP raw byte sequence payload
[0058] SEI Supplemental Enhancement Information
[0059] SH strip header
[0060] SPS Sequence Parameter Set
[0061] SVC Scalable Video Codec
[0062] VCL (Video Codec Layer)
[0063] VPS Video Parameter Set
[0064] VTM VVC Test Model
[0065] VUI Video Availability Information
[0066] VVC Multi-Functional Video Encoding and Decoding
[0067] 3. Preliminary Discussion
[0068] Video codec standards have primarily evolved through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Visual. These two organizations jointly developed the H.262 / MPEG-2 video standard, the H.264 / MPEG-4 Advanced Video Coding (AVC) standard, and the H.265 / HEVC standard. Since H.262, video codec standards have been based on a hybrid video codec architecture, employing temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, many new methods have been adopted by JVET and applied to reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly, and the goal of new codec standards is to reduce the bitrate by 50% compared to HEVC. At the JVET meeting in April 2018, the new video codec standard was officially named Versatile Video Coding (VVC), and the first version of the VVC Test Model (VTM) was released at that time. With ongoing efforts to standardize VVC, each JVET meeting adopts a new codec technology for the VVC standard. The VVC working draft and test model VTM are then updated after each meeting. The current goal of the VVC project is to achieve Technical Completion (FDIS) at the July 2020 meeting.
[0069] 3.1. Image resolution variations within a sequence
[0070] In AVC and HEVC, the spatial resolution of an IRAP image cannot be changed unless a new sequence with a new SPS begins with the IRAP image. VVC allows changing the image resolution within a sequence at a certain point without encoding the IRAP image, which is always intra-frame encoded / decoded. This feature is sometimes called Reference Image Resampling (RPR) because it requires resampling the reference image used for inter-frame prediction when the resolution of the reference image differs from the current image being decoded.
[0071] The scaling ratio is limited to greater than or equal to 1 / 2 (twice the downsampling from the reference image to the current image) and less than or equal to 8 (eight times the upsampling). Three sets of resampling filters with different frequency cutoffs are specified to handle various scaling ratios between the reference and current images. These three sets of resampling filters are applicable to scaling ratios from 1 / 2 to 1 / 1.75, from 1 / 1.75 to 1 / 1.25, and from 1 / 1.25 to 8, respectively. Each set of resampling filters has 16 phases for luma and 32 phases for chroma, similar to motion-compensated interpolation filters. In fact, the normal MC interpolation process is a special case of the resampling process, with scaling ratios ranging from 1 / 1.25 to 8. The horizontal and vertical scaling ratios are derived based on the image width and height, as well as the left, right, top, and bottom scaling offsets specified for the reference and current images.
[0072] Other aspects of the VVC design that support this feature that differ from HEVC include: i) Picture resolution and the corresponding consistency window are signaled in the PPS instead of the SPS, while the maximum picture resolution is signaled in the SPS. ii) For a single-layer bitstream, each picture storage (the time slot in the DPB used to store one decoded picture) occupies the buffer size required to store the decoded picture with the highest picture resolution.
[0073] 3.2. General Scalable Video Codec (SVC) in VVC
[0074] Scalable video codec (SVC, sometimes also called scalability in video coding) refers to video codec using a base layer (BL), sometimes called a reference layer (RL), and one or more scalable enhancement layers (EL). In SVC, the base layer can carry video data with a basic quality level. One or more enhancement layers can carry additional video data to support, for example, higher spatial, temporal, and / or signal-to-noise ratio (SNR) levels. Enhancement layers can be defined relative to previously encoded layers. For example, the bottom layer can be used as a BL, while the top layer can be used as an EL. Intermediate layers can be used as ELs or RLs, or both. For example, a middle layer (e.g., a layer that is neither the lowest nor the highest layer) can be an EL used for layers below the middle layer, such as the base layer or any intermediate enhancement layer, and simultaneously used as an RL for one or more enhancement layers above the middle layer. Similarly, in the multi-view or 3D extension of the HEVC standard, there can be multiple views, and information from one view can be used to codec (e.g., encode or decode) information from another view (e.g., motion estimation, motion vector prediction, and / or other redundancy).
[0075] In SVC, the parameters used by the encoder or decoder are grouped into parameter sets based on the codec level they can use (e.g., video level, sequence level, picture level, stripe level, etc.). For example, parameters that can be used by one or more codec video sequences at different layers in a bitstream can be included in the Video Parameter Set (VPS), and parameters that can be used by one or more pictures in a codec video sequence can be included in the Sequence Parameter Set (SPS). Similarly, parameters that can be used by one or more stripes in a picture can be included in the Picture Parameter Set (PPS), and additional parameters specific to a single stripe can be included in the stripe header. Likewise, an indication of which parameter set a particular layer uses at a given time can be provided at various codec levels.
[0076] Because VVC supports Reference Picture Resampling (RPR), it's possible to design support for bitstreams containing multiple layers (e.g., two layers in VVC with SD and HD resolutions) without requiring any additional signal processing level codec tools, as the upsampling needed for spatial scalability support can be achieved using only RPR upsampling filters. However, for scalability support, advanced syntax changes are required (compared to no scalability support). Scalability support was specified in VVC version 1. Unlike scalability support in any earlier video codec standard, including extensions to AVC and HEVC, VVC scalability was designed to be as friendly as possible to single-layer decoder designs. The decoding capability of multi-layer bitstreams is specified in a way that it appears as if there is only a single layer in the bitstream. For example, decoding capabilities (such as DPB size) are specified in a way that is independent of the number of layers in the bitstream to be decoded. Essentially, decoders designed for single-layer bitstreams do not require many changes to decode multi-layer bitstreams. Compared to the multi-layer extensions of AVC and HEVC, the HLS aspect has been significantly simplified at the expense of some flexibility. For example, an IRAP AU needs to contain an image for each layer in the layers that exist in CVS.
[0077] 3.3. Parameter Set
[0078] AVC, HEVC, and VVC define parameter sets. The types of parameter sets include SPS, PPS, APS, and VPS. All AVC, HEVC, and VVC implementations support SPS and PPS. VPS was introduced with HEVC and is included in both HEVC and VVC. APS is not included in AVC or HEVC, but is included in the latest VVC draft text.
[0079] SPS is designed to carry sequence-level header information, and PPS is designed to carry infrequently changing image-level header information. With SPS and PPS, it is unnecessary to repeat infrequently changing information for each sequence or image, thus avoiding redundant signaling notifications. Furthermore, using SPS and PPS enables out-of-band transmission of important header information, thereby not only avoiding the need for redundant transmission but also improving fault tolerance.
[0080] The VPS was introduced to carry sequence-level header information that is common to all layers in a multi-layer bitstream.
[0081] APS was introduced to carry image-level or stripe-level information that requires a considerable number of bits to encode and decode, can be shared by multiple images, and can have many different variations within a sequence.
[0082] 3.4. General grade, level, and hierarchy syntax and semantics
[0083] In the latest VVC draft text, the general level, hierarchy, and semantics are as follows:
[0084]
[0085] The profile_tier_level() syntax provides level information, as well as optional tier, level, subtier, and general constraint information.
[0086] When the `profile_tier_level()` syntax is included in a VPS, `OlsInScope` is one or more OLSs specified by the VPS. When the `profile_tier_level()` syntax is included in an SPS, `OlsInScope` is an OLS that only includes the lowest layer among the layers referencing the SPS, and that lowest layer is an independent layer.
[0087] `general_profile_idc` indicates the profile that OlsInScope conforms to, as specified in Appendix A. The bitstream must not contain `general_profile_idc` values other than those specified in Appendix A. Other values for `general_profile_idc` are reserved for future use by ITU-T|ISO / IEC.
[0088] The general_tier_flag specifies the hierarchical context used to interpret the general_level_idc as defined in Appendix A.
[0089] The `general_level_idc` directive indicates the level specified in Appendix A of OlsInScope. The bitstream should not contain any `general_level_idc` value other than those specified in Appendix A. Other values for `general_level_idc` are reserved for future use by ITU-T|ISO / IEC.
[0090] Note 1 – A higher general_level_idc value indicates a higher level. The maximum level signaled in the DCINAL cell used in OlsInScope can be higher than, but not lower than, the level signaled in the SPS for the CLVS included in OlsInScope.
[0091] Note 2 – When OlsInScope is applicable to multiple profiles, general_profile_idc should indicate the profile that provides the preferred decoding result or preferred bitstream identifier as determined by the encoder (in a manner not specified in this specification).
[0092] Note 3 – When the CVS of OlsInScope conforms to different tiers, multiple profile_tier_level() syntax structures can be included in the DCI NAL unit, such that for each CVS of OlsInScope, there is at least one set of indicated tiers, levels and grades for the decoder capable of decoding the CVS.
[0093] ptl_num_sub_profiles specifies the number of syntax elements in general_sub_profile_idc[i].
[0094] general_sub_profile_idc[i] specifies the indicator for the i-th registered interoperability metadata as recommended by ITU-T T.35, the content of which is not specified in this specification.
[0095] A value of 1 for `ptl_sublayer_level_present_flag[i]` indicates that level information exists in the `profile_tier_level()` syntax structure for a sublayer representation where `TemporalId` equals `i`. A value of 0 for `ptl_sublayer_level_present_flag[i]` indicates that level information does not exist in the `profile_tier_level()` syntax structure for a sublayer representation where `TemporalId` equals `i`.
[0096] ptl_alignment_zero_bits should be equal to 0.
[0097] Except for the specification of non-existent value inference, the semantics of the syntax element sublayer_level_idc[i] are the same as those of the syntax element general_level_idc, but it applies to sublayer representations where TemporalId equals i.
[0098] When it does not exist, the value of sublayer_level_idc[i] is inferred as follows:
[0099] –sublayer_level_idc[maxNumSubLayersMinus1] is inferred to be equal to general_level_idc of the same profile_tier_level() structure.
[0100] – For i from maxNumSubLayersMinus1-1 to 0 (in descending order of i value) (inclusive of maxNumSubLayersMinus1-1 and 0), sublayer_level_idc[i] is inferred to be equal to sublayer_level_idc[i+1].
[0101] 3.5. General Constraint Information Syntax and Semantics
[0102]
[0103]
[0104]
[0105] A `general_non_packed_constraint_flag` value of 1 specifies that no frame encapsulation arrangement (SEI) messages should exist in the OlsInScope bitstream. A `general_non_packed_constraint_flag` value of 0 does not impose this constraint.
[0106] Note 1 – The decoder can ignore the value of general_non_packed_constraint_flag because there is no decoding process requirement associated with the presence or interpretation of the frame encapsulation arrangement SEI message.
[0107] A `general_frame_only_constraint_flag` value of 1 specifies that OlsInScope transmits images representing frames. A `general_frame_only_constraint_flag` value of 0 specifies that OlsInScope transmits images that may or may not represent frames.
[0108] Note 2 – The decoder can ignore the value of general_frame_only_constraint_flag because there is no requirement for it in the associated decoding process.
[0109] A `general_non_projected_constraint_flag` value of 1 specifies that no equidistant cylindrical projection SEI messages or generalized cube mapping projection SEI messages should exist in the OlsInScope bitstream. A `general_non_projected_constraint_flag` value of 0 does not impose this constraint.
[0110] Note 3 – The decoder may ignore the value of general_non_projected_constraint_flag because there is no decoding process required to be associated with the existence or interpretation of isometric cylindrical projection SEI messages or generalized cube mapping projection SEI messages.
[0111] A value of 1 for `general_one_picture_only_constraint_flag` specifies that there is only one encoded / decoded picture in the bitstream. A value of 0 for `general_one_picture_only_constraint_flag` does not impose this constraint.
[0112] An intra_only_constraint_flag value of 1 specifies that sh_slice_type should be equal to I. An intra_only_constraint_flag value of 0 does not impose this constraint.
[0113] The `max_bitdepth_minus8_constraint_idc` specification specifies that `sps_bitdepth_minus8` should be in the range of 0 to `max_bitdepth_minus8_constraint_idc` (inclusive).
[0114] The max_chroma_format_constraint_idc specification stipulates that sps_chroma_format_idc should be in the range of 0 to max_chroma_format_constraint_idc (inclusive of 0 and max_chroma_format_constraint_idc).
[0115] A single_layer_constraint_flag value of 1 specifies that the nuh_layer_id value should be the same for all VCL NAL units in OlsInScope. A single_layer_constraint_flag value of 0 does not impose this constraint.
[0116] A value of 1 for all_layers_independent_constraint_flag specifies that vps_all_independent_layers_flag should be equal to 1. A value of 0 for all_layers_independent_constraint_flag does not impose this constraint.
[0117] A value of 1 for `no_ref_pic_resampling_constraint_flag` specifies that `sps_ref_pic_resampling_enabled_flag` should be 0. A value of 0 for `no_ref_pic_resampling_constraint_flag` does not impose this constraint.
[0118] A value of 1 for `no_res_change_in_clvs_constraint_flag` specifies that `sps_res_change_in_clvs_allowed_flag` should be 0. A value of 0 for `no_res_change_in_clvs_constraint_flag` does not impose this constraint.
[0119] A value of 1 for `one_tile_per_pic_constraint_flag` specifies that each image should contain only one tile, meaning the value of `NumTilesInPic` for each image should be 1. A value of 0 for `one_tile_per_pic_constraint_flag` does not impose this constraint.
[0120] A value of 1 for `pic_header_in_slice_header_constraint_flag` specifies that each image should contain only one slice, and the value of `sh_picture_header_in_slice_header_flag` in each slice should be equal to 1. A value of 0 for `pic_header_in_slice_header_constraint_flag` does not impose this constraint.
[0121] A `one_slice_per_pic_constraint_flag` value of 1 specifies that each image should contain only one slice. Specifically, if `pps_rect_slice_flag` is 1, then the value of `num_slices_in_pic_minus1` should be 0; otherwise, the value of `num_slices_in_pic_minus1` in the header of each slice should be equal to `NumTilesInPic-1`. A `one_slice_per_pic_constraint_flag` value of 0 does not impose this constraint.
[0122] A value of 1 for `one_subpic_per_pic_constraint_flag` specifies that each image should contain only one subpic, meaning that the value of `sps_num_subpics_minus1` for each image should be 0. A value of 0 for `one_subpic_per_pic_constraint_flag` does not impose this constraint.
[0123] A value of 1 for `no_qtbtt_dual_tree_intra_constraint_flag` specifies that `sps_qtbtt_dual_tree_intra_flag` should be 0. A value of 0 for `no_qtbtt_dual_tree_intra_constraint_flag` does not impose this constraint.
[0124] A value of 1 for `no_partition_constraints_override_constraint_flag` indicates that `sps_partition_constraints_override_enabled_flag` should be 0. A value of 0 for `no_partition_constraints_override_constraint_flag` disables this constraint.
[0125] A value of 1 for no_sao_constraint_flag specifies that sps_sao_enabled_flag should be 0. A value of 0 for no_sao_constraint_flag does not impose this constraint.
[0126] A value of 1 for no_alf_constraint_flag specifies that sps_alf_enabled_flag should be 0. A value of 0 for no_alf_constraint_flag does not impose this constraint.
[0127] A value of 1 for no_ccalf_constraint_flag specifies that sps_ccalf_enabled_flag should be 0. A value of 0 for no_ccalf_constraint_flag does not impose this constraint.
[0128] A value of 1 for `no_joint_cbcr_constraint_flag` specifies that `sps_joint_cbcr_enabled_flag` should be 0. A value of 0 for `no_joint_cbcr_constraint_flag` disables this constraint.
[0129] A value of 1 for `no_mrl_constraint_flag` specifies that `sps_mrl_enabled_flag` should be 0. A value of 0 for `no_mrl_constraint_flag` does not impose this constraint.
[0130] A value of 1 for no_isp_constraint_flag specifies that sps_isp_enabled_flag should be 0. A value of 0 for no_isp_constraint_flag does not impose this constraint.
[0131] A value of 1 for no_mip_constraint_flag indicates that sps_mip_enabled_flag should be 0. A value of 0 for no_mip_constraint_flag does not impose this constraint.
[0132] A value of 1 for `no_ref_wraparound_constraint_flag` specifies that `sps_ref_wraparound_enabled_flag` should be 0. A value of 0 for `no_ref_wraparound_constraint_flag` disables this constraint.
[0133] A value of 1 for `no_temporal_mvp_constraint_flag` specifies that `sps_temporal_mvp_enabled_flag` should be 0. A value of 0 for `no_temporal_mvp_constraint_flag` does not impose this constraint.
[0134] A value of 1 for `no_sbtmvp_constraint_flag` specifies that `sps_sbtmvp_enabled_flag` should be 0. A value of 0 for `no_sbtmvp_constraint_flag` does not impose this constraint.
[0135] A value of 1 for no_amvr_constraint_flag specifies that sps_amvr_enabled_flag should be 0. A value of 0 for no_amvr_constraint_flag does not impose this constraint.
[0136] A value of 1 for `no_bdof_constraint_flag` specifies that `sps_bdof_enabled_flag` should be 0. A value of 0 for `no_bdof_constraint_flag` does not impose this constraint.
[0137] A value of 1 for `no_dmvr_constraint_flag` specifies that `sps_dmvr_enabled_flag` should be 0. A value of 0 for `no_dmvr_constraint_flag` does not impose this constraint.
[0138] A value of 1 for no_cclm_constraint_flag specifies that sps_cclm_enabled_flag should be 0. A value of 0 for no_cclm_constraint_flag does not impose this constraint.
[0139] A value of 1 for `no_mts_constraint_flag` specifies that `sps_mts_enabled_flag` should be 0. A value of 0 for `no_mts_constraint_flag` does not impose this constraint.
[0140] A value of 1 for `no_sbt_constraint_flag` specifies that `sps_sbt_enabled_flag` should be 0. A value of 0 for `no_sbt_constraint_flag` does not impose this constraint.
[0141] A value of 1 for no_lfnst_constraint_flag specifies that sps_lfnst_enabled_flag should be 0. A value of 0 for no_lfnst_constraint_flag does not impose this constraint.
[0142] A value of 1 for `no_affine_motion_constraint_flag` specifies that `sps_affine_enabled_flag` should be 0. A value of 0 for `no_affine_motion_constraint_flag` disables this constraint.
[0143] A value of 1 for `no_mmvd_constraint_flag` specifies that `sps_mmvd_enabled_flag` should be 0. A value of 0 for `no_mmvd_constraint_flag` does not impose this constraint.
[0144] A value of 1 for `no_smvd_constraint_flag` specifies that `sps_smvd_enabled_flag` should be 0. A value of 0 for `no_smvd_constraint_flag` does not impose this constraint.
[0145] A value of 1 for `no_prof_constraint_flag` specifies that `sps_affine_prof_enabled_flag` should be 0. A value of 0 for `no_prof_constraint_flag` does not impose this constraint.
[0146] A value of 1 for `no_bcw_constraint_flag` specifies that `sps_bcw_enabled_flag` should be 0. A value of 0 for `no_bcw_constraint_flag` does not impose this constraint.
[0147] A value of 1 for no_ibc_constraint_flag specifies that sps_ibc_enabled_flag should be 0. A value of 0 for no_ibc_constraint_flag does not impose this constraint.
[0148] A value of 1 for no_ciip_constraint_flag indicates that sps_ciip_enabled_flag should be 0. A value of 0 for no_cipp_constraint_flag does not impose this constraint.
[0149] A value of 1 for `no_gpm_constraint_flag` specifies that `sps_gpm_enabled_flag` should be 0. A value of 0 for `no_gpm_constraint_flag` does not impose this constraint.
[0150] A value of 1 for `no_ladf_constraint_flag` specifies that `sps_ladf_enabled_flag` should be 0. A value of 0 for `no_ladf_constraint_flag` does not impose this constraint.
[0151] A value of 1 for `no_transform_skip_constraint_flag` specifies that `sps_transform_skip_enabled_flag` should be 0. A value of 0 for `no_transform_skip_constraint_flag` does not impose this constraint.
[0152] A value of 1 for `no_bdpcm_constraint_flag` specifies that `sps_bdpcm_enabled_flag` should be 0. A value of 0 for `no_bdpcm_constraint_flag` does not impose this constraint.
[0153] A value of 1 for `no_weighted_prediction_constraint_flag` specifies that `sps_weighted_pred_flag` and `sps_weighted_bipred_flag` should be 0. A value of 0 for `no_weighted_prediction_constraint_flag` does not impose this constraint.
[0154] A value of 1 for `no_palette_constraint_flag` specifies that `sps_palette_enabled_flag` should be 0. A value of 0 for `no_palette_constraint_flag` does not impose this constraint.
[0155] A value of 1 for no_act_constraint_flag specifies that sps_act_enabled_flag should be 0. A value of 0 for no_act_constraint_flag does not impose this constraint.
[0156] A value of 1 for `no_lmcs_constraint_flag` specifies that `sps_lmcs_enabled_flag` should be 0. A value of 0 for `no_lmcs_constraint_flag` does not impose this constraint.
[0157] A value of 1 for `no_cu_qp_delta_constraint_flag` specifies that `pps_cu_qp_delta_enabled_flag` should be 0. A value of 0 for `no_cu_qp_delta_constraint_flag` disables this constraint.
[0158] A value of 1 for `no_chroma_qp_offset_constraint_flag` specifies that `pps_cu_chroma_qp_offset_list_enabled_flag` should be 0. A value of 0 for `no_chroma_qp_offset_constraint_flag` disables this constraint.
[0159] A value of 1 for `no_dep_quant_constraint_flag` specifies that `sps_dep_quant_enabled_flag` should be 0. A value of 0 for `no_dep_quant_constraint_flag` does not impose this constraint.
[0160] A value of 1 for `no_sign_data_hiding_constraint_flag` specifies that `sps_sign_data_hiding_enabled_flag` should be 0. A value of 0 for `no_sign_data_hiding_constraint_flag` does not impose this constraint.
[0161] A value of 1 for `no_mixed_nalu_types_in_pic_constraint_flag` specifies that the requirement for bitstream consistency is that `pps_mixed_nalu_types_in_pic_flag` should be 0. A value of 0 for `no_mixed_nalu_types_in_pic_constraint_flag` does not impose this constraint.
[0162] A value of no_trail_constraint_flag equal to 1 specifies that there should be no NAL units in OlsInScope with nuh_unit_type equal to TRAIL_NUT. A value of no_trail_constraint_flag equal to 0 does not impose this constraint.
[0163] A value of 1 for `no_stsa_constraint_flag` specifies that there should be no NAL units in OlsInScope with `nuh_unit_type` equal to `STSA_NUT`. A value of 0 for `no_stsa_constraint_flag` disables this constraint.
[0164] A value of no_rasl_constraint_flag equal to 1 specifies that there should be no NAL units in OlsInScope with nuh_unit_type equal to RASL_NUT. A value of no_rasl_constraint_flag equal to 0 does not impose this constraint.
[0165] A value of no_radl_constraint_flag equal to 1 specifies that there should be no NAL units in OlsInScope with nuh_unit_type equal to RADL_NUT. A value of no_radl_constraint_flag equal to 0 does not impose this constraint.
[0166] A value of no_idr_constraint_flag equal to 1 specifies that there should be no NAL units in OlsInScope with nuh_unit_type equal to IDR_W_RADL or IDR_N_LP. A value of no_idr_constraint_flag equal to 0 does not impose this constraint.
[0167] A value of no_cra_constraint_flag equal to 1 specifies that there should be no NAL units in OlsInScope with nuh_unit_type equal to CRA_NUT. A value of no_cra_constraint_flag equal to 0 does not impose this constraint.
[0168] A value of 1 for `no_gdr_constraint_flag` specifies that `sps_gdr_enabled_flag` should be 0. A value of 0 for `no_gdr_constraint_flag` does not impose this constraint.
[0169] A `no_aps_constraint_flag` value of 1 specifies that there should be no NAL units in OlsInScope with `nuh_unit_type` equal to `PREFIX_APS_NUT` or `SUFFIX_APS_NUT`, and both `sps_lmcs_enabled_flag` and `sps_scaling_list_enabled_flag` should be equal to 0. A `no_aps_constraint_flag` value of 0 does not impose this constraint.
[0170] gci_alignment_zero_bits should be equal to 0.
[0171] `gci_num_reserved_bytes` specifies the number of bytes reserved for constraint. The value of `gci_num_reserved_bytes` should be equal to 0. Other values of `gci_num_reserved_bytes` are reserved for future use by ITU-T|ISO / IEC and should not exist in bitstreams conforming to this version of the specification.
[0172] The `gci_reserved_byte[i]` can have any value. Its presence and value do not affect the consistency of the decoder with the level specified in this version of the specification. Decoders conforming to this version of the specification should ignore the values of all `gci_reserved_byte[i]` syntax elements.
[0173] 3.6. Conditional Signaling Notification for the GCI Field
[0174] Both JVET-S0050 and JVET-S0127 recommend adding an presence flag to the PTL syntax structure to specify the presence of the GCI syntax structure within the PTL syntax. The only difference is that the following is done in S0050 instead of S0127: S0050 adds byte alignment (when present) immediately after the GCI syntax structure to the PTL syntax structure to ensure that the byte alignment of general_level_idc begins in the PTL syntax structure, thus removing the byte alignment within the GCI syntax structure.
[0175] The JVET-S0050 syntax changes are as follows: Added or modified parts are indicated by bold, underline, and italics, for example, "Using A..." Some deleted parts are marked with italics and strikethrough, such as "based on A and B".
[0176]
[0177]
[0178]
[0179] The syntax changes for JVET-S0127 are as follows:
[0180]
[0181] JVET-S0092 only modifies the GCI syntax structure itself. It moves the GCI extended length indicator (gci_num_reserved_bytes) from the last to the first (gci_num_constraint_bytes) in the GCI syntax structure to enable skip signaling notification for GCI fields. The value of gci_num_reserved_bytes should be equal to 0 or 9.
[0182] The syntax changes in S0092 are as follows:
[0183]
[0184] Here is a comparison of the different methods:
[0185] 1) Regarding JVET-S0050 and JVET-S0127, the difference lies in whether or not to ensure that `general_level_idc` is byte-aligned within the PTL syntax structure (including when the GCI presence flag is 0). DCI, VPS, and SPS syntaxes are all designed to ensure that each PTL syntax structure (when present) is byte-aligned within the DCI / VPS / SPS. I hope we can conclude without much debate that `general_level_idc` should be byte-aligned within the PTL syntax structure. If this is achievable, then JVET-S0050 and JVET-S0127 are equivalent.
[0186] 2) The difference between having a GCI presence flag in the PTL syntax structure (as in JVET-S0050 and JVET-S0127) and manipulating the syntax in the GCI syntax structure is as follows. Both specify that there is some GCI information in the PTL syntax structure between `general_tier_flag` and `general_level_idc`. The GCI presence flag method uses a flag to indicate the presence of the GCI field, while the JVET-S0092 method uses an 8-bit size indicator to achieve this. Regarding the number of bits used for calculation, the JVET-S0050 method uses 1 bit plus 0-7 byte alignment bits for the flag, while the JVET-S0092 method uses 8 bits plus 0-7 byte alignment bits for the size indicator. Therefore, essentially, the difference is only 7 bits.
[0187] 3) There is a semantic error in JVET-S0092: if the value of gci_num_reserved_bytes should be equal to 0 or 9, then gci_reserved_byte[i] will never exist in the GCI syntax structure. Of course, this can be easily solved by saying that the value of gci_num_reserved_bytes should be equal to 0 or equal to or greater than 9.
[0188] -4. Technical problems solved by the technical solutions disclosed in this document
[0189] Existing designs for CGI field signaling notifications consume more bits than required.
[0190] -5. Invention
[0191] To address the aforementioned issues and some other unmentioned problems, the following summarized methods are presented. These items should be considered as examples for explaining general concepts, and not interpreted narrowly. Furthermore, these items can be applied individually or in combination in any way.
[0192] 1) To address the first problem, regarding conditional signaling notification of the GCI field in the PTL syntax structure, one or more of the following methods are disclosed, for example, the method in the first embodiment:
[0193] a. Move the general_constraint_info() syntax structure and / or other GCI-related syntax elements (e.g., the presence of GCI flags) after the level information indication, instead of immediately following general_tier_flag.
[0194] i. In one example, the general_constraint_info() syntax structure in the profile_tier_level() syntax structure is moved to immediately after the general_sub_profile_idc[i] syntax element.
[0195] b. Add a new syntax element (e.g., a 1-bit flag named gci_present_flag) to the profile_tier_level() syntax structure to adjust for the existence of the general_constraint_info() syntax structure.
[0196] i. When `gci_present_flag` equals 1 for the `profile_tier_level()` syntax structure where `profileTierPresentFlag` is 1, the `profile_tier_level()` syntax structure contains the `general_constraint_info()` syntax structure. When `gci_present_flag` equals 0 for the `profile_tier_level()` syntax structure (regardless of whether `profileTierPresentFlag` is 1), the `profile_tier_level()` syntax structure does not contain the `general_constraint_info()` syntax structure.
[0197] ii. The semantics of GCI fields have been changed so that the semantics of GCI fields apply only when they exist (i.e., when gci_present_flag equals 1). In other words, when gci_present_flag equals 0, general constraints do not apply except for constraints specified as part of the grade definition.
[0198] iii. Alternatively, new syntax elements can also be conditionally signaled, for example, based on the value of profileTierPresentFlag.
[0199] c. Remove the byte alignment syntax (i.e., the gci_alignment_zero_bit field and its syntax conditions) from the general_constraint_info() syntax structure.
[0200] d. The number of reserved constraint bits and / or the value of each reserved constraint bit can be signaled, rather than signaling the total number of reserved constraint bytes and the reserved constraint bytes.
[0201] i. In one example, change the GCI syntax element gci_num_reserved_bytes to gci_num_reserved_bits.
[0202] ii. Alternatively, the modified GCI syntax elements can be encoded and decoded using u(11) instead of u(8).
[0203] iii. Alternatively, the GCI syntax element gci_reserved_byte[i] is changed to gci_reserved_bit[i], which is encoded and decoded using u(1) instead of u(8).
[0204] 2) To address the first problem, regarding conditional signaling notification of the GCI field in the PTL syntax structure, one or more of the following methods are disclosed, for example, the method in the second embodiment:
[0205] a. Move the general_constraint_info() syntax structure and / or other GCI-related syntax elements (e.g., the presence of GCI flags) after the level information indication, instead of immediately following general_tier_flag.
[0206] i. In one example, the general_constraint_info() syntax structure in the profile_tier_level() syntax structure is moved immediately after the general_sub_profile_idc[i] syntax element (instead of immediately after general_tier_flag).
[0207] b. Add a new syntax element (e.g., a 1-bit flag named gci_present_flag) to the profile_tier_level() syntax structure to adjust for the existence of the general_constraint_info() syntax structure.
[0208] i. When `gci_present_flag` equals 1 for the `profile_tier_level()` syntax structure where `profileTierPresentFlag` is 1, the `profile_tier_level()` syntax structure contains the `general_constraint_info()` syntax structure. When `gci_present_flag` equals 0 for the `profile_tier_level()` syntax structure (regardless of whether `profileTierPresentFlag` is 1), the `profile_tier_level()` syntax structure does not contain the `general_constraint_info()` syntax structure.
[0209] ii. The semantics of GCI fields have been changed so that the semantics of GCI fields apply only when they exist (i.e., when gci_present_flag equals 1). In other words, when gci_present_flag equals 0, general constraints do not apply except for constraints specified as part of the grade definition.
[0210] iii. Alternatively, new syntax elements can also be conditionally signaled, for example, based on the value of profileTierPresentFlag.
[0211] 3) To address the first problem, regarding conditional signaling of the GCI field in the PTL syntax structure, one or more of the following methods are disclosed, for example, the method in the first embodiment:
[0212] a. Move the general_constraint_info() syntax structure and / or other GCI-related syntax elements (e.g., the presence of GCI flags) just before the byte alignment check condition in the PTL syntax structure (e.g., just before the while(!byte_aligned()) loop), instead of immediately after general_tier_flag.
[0213] i. In one example, the general_constraint_info() syntax structure in the profile_tier_level() syntax structure is moved immediately after the ptl_sublayer_level_present_flag[i] syntax element (instead of immediately after general_tier_flag).
[0214] b. Add a new syntax element (e.g., a 1-bit flag named gci_present_flag) to the profile_tier_level() syntax structure to adjust for the existence of the general_constraint_info() syntax structure.
[0215] i. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure where `profileTierPresentFlag` is 1, the `profile_tier_level()` syntax structure contains the `general_constraint_info()` syntax structure. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure (regardless of whether `profileTierPresentFlag` is equal to 1), the `profile_tier_level()` syntax structure does not contain the `general_constraint_info()` syntax structure.
[0216] ii. The semantics of GCI fields have been changed so that the semantics of GCI fields apply only when they exist (i.e., when gci_present_flag equals 1). In other words, when gci_present_flag equals 0, general constraints do not apply except for constraints specified as part of the grade definition.
[0217] iii. Alternatively, new syntax elements can also be conditionally signaled, for example, based on the value of profileTierPresentFlag.
[0218] c. Remove the byte alignment syntax (i.e., the gci_alignment_zero_bit field and its syntax conditions) from the general_constraint_info() syntax structure.
[0219] d. The number of reserved constraint bits and / or the value of each reserved constraint bit can be signaled, rather than signaling the total number of reserved constraint bytes and the reserved constraint bytes.
[0220] i. In one example, change the GCI syntax element gci_num_reserved_bytes to gci_num_reserved_bits.
[0221] ii. Alternatively, the modified GCI syntax elements can be encoded and decoded using u(11) instead of u(8).
[0222] iii. Alternatively, the GCI syntax element gci_reserved_byte[i] is changed to gci_reserved_bit[i], which is encoded and decoded using u(1) instead of u(8).
[0223] 4) To address the first problem, regarding conditional signaling of the GCI field in the PTL syntax structure, one or more of the following methods are disclosed, for example, the method in the second embodiment:
[0224] a. Move the general_constraint_info() syntax structure and / or other GCI-related syntax elements (e.g., the presence of GCI flags) just before the byte alignment check condition in the PTL syntax structure (e.g., just before the while(!byte_aligned()) loop), instead of immediately after general_tier_flag.
[0225] i. In one example, the general_constraint_info() syntax structure in the profile_tier_level() syntax structure is moved immediately after the ptl_sublayer_level_present_flag[i] syntax element.
[0226] b. Add a new syntax element (e.g., a 1-bit flag named gci_present_flag) to the profile_tier_level() syntax structure to adjust for the existence of the general_constraint_info() syntax structure.
[0227] i. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure where `profileTierPresentFlag` is 1, the `profile_tier_level()` syntax structure contains the `general_constraint_info()` syntax structure. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure (regardless of whether `profileTierPresentFlag` is equal to 1), the `profile_tier_level()` syntax structure does not contain the `general_constraint_info()` syntax structure.
[0228] ii. The semantics of GCI fields have been changed so that the semantics of GCI fields apply only when they exist (i.e., when gci_present_flag equals 1). In other words, when gci_present_flag equals 0, general constraints do not apply except for constraints specified as part of the grade definition.
[0229] iii. Alternatively, new syntax elements can also be conditionally signaled, for example, based on the value of profileTierPresentFlag.
[0230] 5) To address the first problem, regarding conditional signaling of the GCI field in the PTL syntax structure, one or more of the following methods are disclosed, for example, the method in the fifth embodiment:
[0231] a. Move the general_constraint_info() syntax structure and / or other GCI-related syntax elements (e.g., the presence of GCI flags) after general_level_idc, instead of before general_level_idc.
[0232] i. Move the general_constraint_info() syntax structure in the profile_tier_level() syntax structure immediately after the general_level_idc syntax element.
[0233] b. Move the byte alignment syntax (i.e., the gci_alignment_zero_bit field and its syntax conditions) to the end of the general_constraint_info() syntax structure, that is, after the GCI reserved field, instead of before the GCI reserved field.
[0234] c. The number of reserved constraint bits and / or the value of each reserved constraint bit can be signaled, rather than signaling the total number of reserved constraint bytes and the reserved constraint bytes.
[0235] i. In one example, change the GCI syntax element gci_num_reserved_bytes to gci_num_reserved_bits.
[0236] ii. Alternatively, the modified GCI syntax elements can be encoded and decoded using u(11) instead of u(8).
[0237] iii. Alternatively, the GCI syntax element gci_reserved_byte[i] is changed to gci_reserved_bit[i], which is encoded and decoded using u(1) instead of u(8).
[0238] d. Add a new syntax element (e.g., a 1-bit flag named gci_present_flag) at the beginning of the general_constraint_info() syntax structure.
[0239] i. When gci_present_flag equals 0, all fields in the general_constraint_info() syntax structure are skipped except for the byte alignment field. The semantics of all these skipped fields are modified so that the semantics apply only when they are present (i.e., when gci_present_flag equals 1). In other words, when gci_present_flag equals 0, general constraints do not apply except for constraints specified as part of the grade definition.
[0240] 6) To address the first problem, regarding conditional signaling notification of the GCI field in the PTL syntax structure, one or more of the following methods are disclosed, for example, the method in the sixth embodiment:
[0241] a. Move the general_constraint_info() syntax structure and / or other GCI-related syntax elements (e.g., the presence of GCI flags) after general_level_idc, instead of before general_level_idc.
[0242] i. In one example, the general_constraint_info() syntax structure in the profile_tier_level() syntax structure is moved to immediately after the general_level_idc syntax element.
[0243] b. Add a new syntax element (e.g., a 1-bit flag named gci_present_flag) to the profile_tier_level() syntax structure to adjust for the existence of the general_constraint_info() syntax structure.
[0244] i. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure where `profileTierPresentFlag` is 1, the `profile_tier_level()` syntax structure contains the `general_constraint_info()` syntax structure. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure (regardless of whether `profileTierPresentFlag` is equal to 1), the `profile_tier_level()` syntax structure does not contain the `general_constraint_info()` syntax structure.
[0245] ii. The semantics of all GCI syntax constructs have been changed so that the semantics of GCI fields apply only when they exist (i.e., when gci_present_flag equals 1). In other words, when gci_present_flag equals 0, general constraints do not apply except for constraints specified as part of the grade definition.
[0246] iii. To ensure that the starting position of ptl_num_sub_profiles (if it exists) is byte-aligned, add a byte alignment check immediately after the general_constraint_info() syntax structure, and if it is not byte-aligned, add ptl_alignment_zero_bit until it is byte-aligned.
[0247] c. Remove the byte alignment syntax (i.e., the gci_alignment_zero_bit field and its syntax conditions) from the general_constraint_info() syntax structure.
[0248] d. The number of reserved constraint bits and / or the value of each reserved constraint bit can be signaled, rather than signaling the total number of reserved constraint bytes and the reserved constraint bytes.
[0249] i. In one example, change the GCI syntax element gci_num_reserved_bytes to gci_num_reserved_bits.
[0250] ii. Alternatively, the modified syntax elements can be encoded and decoded using u(11) instead of u(8).
[0251] iii. Alternatively, the GCI syntax element gci_reserved_byte[i] is changed to gci_reserved_bit[i], which is encoded and decoded using u(1) instead of u(8).
[0252] 7) To address the first problem, regarding conditional signaling notification of the GCI field in the PTL syntax structure, one or more of the following methods are disclosed, for example, the method in the fifth embodiment:
[0253] a. Move the general_constraint_info() syntax structure and / or other GCI-related syntax elements (e.g., the presence of GCI flags) after general_level_idc, instead of before general_level_idc.
[0254] i. In one example, the general_constraint_info() syntax structure in the profile_tier_level() syntax structure is moved to immediately after the general_level_idc syntax element.
[0255] b. Add a new syntax element (e.g., a 1-bit flag named gci_present_flag) to the profile_tier_level() syntax structure to adjust for the existence of the general_constraint_info() syntax structure.
[0256] i. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure where `profileTierPresentFlag` is 1, the `profile_tier_level()` syntax structure contains the `general_constraint_info()` syntax structure. When `gci_present_flag` is equal to 1 for the `profile_tier_level()` syntax structure (regardless of whether `profileTierPresentFlag` is equal to 1), the `profile_tier_level()` syntax structure does not contain the `general_constraint_info()` syntax structure.
[0257] ii. The semantics of all GCI syntax constructs have been changed so that the semantics of GCI fields apply only when they exist (i.e., when gci_present_flag equals 1). In other words, when gci_present_flag equals 0, general constraints do not apply except for constraints specified as part of the grade definition.
[0258] iii. To ensure that the starting position of ptl_num_sub_profiles (if it exists) is byte-aligned, add a byte alignment check immediately after the general_constraint_info() syntax structure, and if it is not byte-aligned, add ptl_alignment_zero_bit until it is byte-aligned.
[0259] 8) Change the semantics of max_bitdepth_minus8_constraint_idc as follows: If max_bitdepth_minus8_constraint_idc is less than 8, then sps_bitdepth_minus8 should be in the range of 0 to max_bitdepth_minus8_constraint_idc (inclusive). If max_bitdepth_minus8_constraint_idc is equal to or greater than 8, no constraint is imposed.
[0260] a. Alternatively, the phrase “do not impose a constraint” above is changed to “do not impose such a constraint”.
[0261] 9) Change the semantics of max_chroma_format_constraint_idc as follows: if max_chroma_format_constraint_idc is less than 2, then sps_chroma_format_idc should be in the range of 0 to max_chroma_format_constraint_idc (inclusive). If max_chroma_format_constraint_idc is equal to or greater than 2, no constraint is imposed.
[0262] a. Alternatively, the phrase “do not impose a constraint” above is changed to “do not impose such a constraint”.
[0263] -6. Examples
[0264] The following are some example embodiments of some aspects of the invention outlined in this section, which are applicable to the VVC specification. The modified text is based on the latest VVC text in JVET-S0152-v3. Most of the relevant added or modified sections are indicated in bold, underlined, and italic, such as "Using A..." Some deleted parts are marked with italics and strikethrough, such as "based on A and B".
[0265] 6.1. Example 1
[0266] This embodiment is used for item 1 and its sub-items.
[0267] The syntax structure profile_tier_level() has been changed as follows:
[0268]
[0269]
[0270] And the semantic changes are as follows:
[0271]
[0272] The syntax structure of general_constraint_info() has been changed as follows:
[0273]
[0274] And the semantic changes are as follows:
[0275] … ...
[0277]
[0278] Retention constraints number. The value should be equal to 0. Other values are reserved for future use by ITU-T|ISO / IEC and should not exist in bitstreams conforming to this version of the specification.
[0279] It can have any value. Its presence and value do not affect the consistency of the decoder with the grade specified in this version of the specification. Decoders conforming to this version of the specification should ignore all... The value of the syntax element.
[0280] 6.2. Example 2
[0281] This embodiment is used for item 2 and its sub-items.
[0282] The syntax structure profile_tier_level() has been changed as follows:
[0283]
[0284] And the semantic changes are as follows:
[0285]
[0286]
[0287] 6.3. Example 3
[0288] This embodiment is used for item 3 and its sub-items.
[0289] The syntax structure profile_tier_level() has been changed as follows:
[0290]
[0291] And the semantic changes are as follows:
[0292]
[0293]
[0294] Alternatively, in one example, the syntax structure general_constraint_info() is modified as follows:
[0295]
[0296] And the semantic changes are as follows: ...
[0298]
[0299] Retention constraints number. The value should be equal to 0. Other values are reserved for future use by ITU-T|ISO / IEC and should not exist in bitstreams conforming to this version of the specification.
[0300] `gci_reserved_bityte[i]` can have any value. Its presence and value do not affect the conformity of the decoder with the tiers specified in this version of the specification. Decoders conforming to this version of the specification should ignore all... The value of the syntax element.
[0301] 6.4. Example 4
[0302] This embodiment is used for item 4 and its sub-items.
[0303] The syntax structure profile_tier_level() has been changed as follows:
[0304]
[0305] And the semantic changes are as follows:
[0306]
[0307] 6.5. Example 5
[0308] This embodiment is used for item 5 and its sub-items.
[0309] The syntax structure profile_tier_level() has been changed as follows:
[0310]
[0311] The syntax structure of general_constraint_info() has been changed as follows:
[0312]
[0313]
[0314]
[0315] And the semantic changes are as follows:
[0316]
[0317]
[0318] Retention constraints number. The value should be equal to 0. Other values are reserved for future use by ITU-T|ISO / IEC and should not exist in bitstreams conforming to this version of the specification.
[0319] It can have any value. Its presence and value do not affect the consistency of the decoder with the grade specified in this version of the specification. Decoders conforming to this version of the specification should ignore all... The value of the syntax element.
[0320]
[0321] 6.6. Example 6
[0322] This embodiment is used for item 6 and its sub-items.
[0323] The syntax structure profile_tier_level() has been changed as follows:
[0324]
[0325] And the semantic changes are as follows:
[0326]
[0327]
[0328] The syntax structure of general_constraint_info() has been changed as follows:
[0329]
[0330] And the semantic changes are as follows:
[0331] … ...
[0333]
[0334] Retention constraints number. The value should be equal to 0. Other values are reserved for future use by ITU-T|ISO / IEC and should not exist in bitstreams conforming to this version of the specification.
[0335] It can have any value. Its presence and value do not affect the consistency of the decoder with the grade specified in this version of the specification. Decoders conforming to this version of the specification should ignore all... The value of the syntax element.
[0336] 6.7. Example 7
[0337] This embodiment is used for item 7 and its sub-items.
[0338] The syntax structure profile_tier_level() has been changed as follows:
[0339]
[0340]
[0341] And the semantic changes are as follows:
[0342]
[0343] Figure 1 This is a block diagram illustrating an example video processing system 1000, in which various techniques disclosed herein can be implemented. Various implementations may include some or all of the components of system 1000. System 1000 may include an input 1002 for receiving video content. The video content may be received in a raw or uncompressed format (e.g., 8-bit or 10-bit multi-component pixel values), or in a compressed or encoded format. Input 1002 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces (e.g., Ethernet, Passive Optical Networking (PON), etc.) and wireless interfaces (e.g., Wi-Fi or cellular interfaces).
[0344] System 1000 may include an encoding / decoding component 1004, which can implement the various encoding / decoding or coding methods described in this document. Encoding / decoding component 1004 can reduce the average bit rate of the video from input 1002 to the output of encoding / decoding component 1004 to produce an encoded / decoded representation of the video. Therefore, encoding / decoding techniques are sometimes referred to as video compression or video transcoding techniques. The output of encoding / decoding component 1004 can be stored or transmitted via communication through the connection represented by component 1006. The stored or transmitted bitstream (or encoded / decoded) representation of the video received at input 1002 can be used by component 1008 to generate pixel values or displayable video to be sent to display interface 1010. The process of generating a user-viewable video from the bitstream is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “encoding / decoding” operations or tools, it will be understood that encoding / decoding tools or operations are used at the encoder, and the corresponding decoding tools or operations that inversely represent the encoding / decoding results will be performed by the decoder.
[0345] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High Definition Multimedia Interface (HDMI), or DisplayPort. Examples of storage interfaces include SATA (Serial Advanced Technology Accessory), PCI, IDE, etc. The technologies described in this document can be found in a variety of electronic devices, such as mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0346] Figure 2 This is a block diagram of a video processing apparatus 2000. Apparatus 2000 can be used to implement one or more methods described herein. Apparatus 2000 can be embodied in a smartphone, tablet, computer, Internet of Things (IoT) receiver, etc. Apparatus 2000 may include one or more processors 2002, one or more memories 2004, and video processing hardware 2006. The processors(multiple) 2002 can be configured to implement one or more methods described in this document (e.g., in...). Figures 6 to 9(in Chinese). One or more memories 2004 may be used to store data and code for implementing the methods and techniques described herein. Video processing hardware 2006 may be used to implement some of the techniques described herein in hardware circuitry. In some embodiments, hardware 2006 may be partially or wholly located in one or more processors 2002, such as graphics processors.
[0347] Figure 3 This is a block diagram illustrating an example video codec system 100 that can utilize the techniques disclosed herein.
[0348] like Figure 3 As shown, the video encoding / decoding system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data, which may be referred to as a video encoding device. The destination device 120 can decode the encoded video data generated by the source device 110, which may be referred to as a video decoding device.
[0349] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0350] Video source 112 may include sources such as video capture devices, interfaces for receiving video data from video content providers, and / or computer graphics systems for generating video data, or combinations of these sources. Video data may include one or more images. Video encoder 114 encodes the video data from video source 112 to generate a bitstream. The bitstream may include a sequence of bits forming a codec representation of the video data. The bitstream may include codec images and associated data. A codec image is a codec representation of an image. Associated data may include sequence parameter sets, image parameter sets, and other syntax structures. I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. Encoded video data can be transmitted directly to destination device 120 via network 130a through I / O interface 116. Encoded video data may also be stored on storage medium / server 130b for access by destination device 120.
[0351] Destination device 120 may include I / O interface 126, video decoder 124 and display device 122.
[0352] I / O interface 126 may include a receiver and / or a modem. I / O interface 126 may acquire encoded video data from source device 110 or storage medium / server 130b. Video decoder 124 may decode the encoded video data. Display device 122 may display the decoded video data to a user. Display device 122 may be integrated with destination device 120, or may be located external to destination device 120, which is configured to interact with an external display device.
[0353] The video encoder 114 and the video decoder 124 can operate according to video compression standards such as the High Efficiency Video Codec (HEVC) standard, the Universal Video Codec (VVM) standard, and other current and / or further standards.
[0354] Figure 4 This is a block diagram illustrating an example of a video encoder 200, which can be... Figure 3 The video encoder 114 in the system 100 shown.
[0355] The video encoder 200 can be configured to perform any or all of the techniques disclosed herein. Figure 4 In the example, the video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video encoder 200. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0356] The functional components of the video encoder 200 may include a segmentation unit 201, a prediction unit 202 (which may include a mode selection unit 203), a motion estimation unit 204, a motion compensation unit 205, an intra-frame prediction unit 206, a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213, and an entropy coding unit 214.
[0357] In other examples, the video encoder 200 may include more, fewer, or different functional components. In one example, the prediction unit 202 may include an intra-block copy (IBC) unit. The IBC unit can perform prediction in IBC mode, where at least one reference picture is the picture containing the current video block.
[0358] Furthermore, some components (such as motion estimation unit 204 and motion compensation unit 205) may be highly aggregated, but for illustrative purposes, in Figure 4 The examples represent the examples respectively.
[0359] The segmentation unit 201 can segment an image into one or more video blocks. The video encoder 200 and the video decoder 300 can support various video block sizes.
[0360] The mode selection unit 203 can, for example, select one of the encoding / decoding modes (intra-frame or inter-frame) based on the error result, and provide the resulting intra-frame or inter-frame encoded / decoded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 can select a combination of intra-frame prediction and inter-frame prediction (CIIP) modes, where the prediction is based on the inter-frame prediction signal and the intra-frame prediction signal. The mode selection unit 203 can also select the resolution of the motion vector for the block (e.g., sub-pixel precision or integer pixel precision) in the case of inter-frame prediction.
[0361] To perform inter-frame prediction on the current video block, motion estimation unit 204 can generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. Motion compensation unit 205 can determine the predicted video block for the current video block based on motion information and decoded samples from images other than those associated with the current video block from buffer 213.
[0362] For example, motion estimation unit 204 and motion compensation unit 205 can perform different operations on the current video block, depending on whether the current video block is in an I-band, P-band, or B-band.
[0363] In some examples, motion estimation unit 204 can perform unidirectional prediction on the current video block, and can search for a reference video block for the current video block in the reference images of list 0 or list 1. Then, motion estimation unit 204 can generate a reference index indicating the reference image in list 0 or list 1 containing the reference video block, and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.
[0364] In other examples, motion estimation unit 204 can perform bidirectional prediction on the current video block. Motion estimation unit 204 can search for a reference video block for the current video block in the reference images in list 0, and also search for another reference video block for the current video block in the reference images in list 1. Then, motion estimation unit 204 can generate reference indices indicating the reference images in lists 0 and 1 containing the reference video blocks, and motion vectors indicating the spatial displacement between the reference video blocks and the current video block. Motion estimation unit 204 can output the reference index and motion vector of the current video block as the motion information of the current video block. Motion compensation unit 205 can generate a predicted video block for the current video block based on the reference video blocks indicated by the motion information of the current video block.
[0365] In some examples, the motion estimation unit 204 can output a complete set of motion information for the decoder's decoding processing.
[0366] In some examples, motion estimation unit 204 may not output the complete set of motion information for the current video. Instead, motion estimation unit 204 can signal the motion information of the current video block by referencing the motion information of another video block. For example, motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of neighboring video blocks.
[0367] In one example, the motion estimation unit 204 may instruct the video decoder 300, within the syntax structure associated with the current video block, to indicate that the current video block has the same motion information as another video block.
[0368] In another example, motion estimation unit 204 can identify another video block and motion vector difference (MVD) within the syntactic structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. Video decoder 300 can use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0369] As discussed above, the video encoder 200 can predictively signal motion vectors. Two examples of predictive signaling techniques that can be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and merge pattern signaling.
[0370] Intra-prediction unit 206 can perform intra-prediction on the current video block. When intra-prediction unit 206 performs intra-prediction on the current video block, it can generate prediction data for the current video block based on decoded samples from other video blocks in the same frame. The prediction data for the current video block may include the predicted video block and various syntax elements.
[0371] The residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the predicted video block from the current video block. The residual data for the current video block can include residual video blocks corresponding to different sample components in the current video block.
[0372] In other examples, there may be no residual data for the current video block. For example, in skip mode, the residual generation unit 207 may not perform the subtraction operation.
[0373] The transform processing unit 208 can generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video blocks associated with the current video block.
[0374] After the transform processing unit 208 generates a transform coefficient video block associated with the current video block, the quantization unit 209 can quantize the transform coefficient video block associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0375] The inverse quantization unit 210 and the inverse transform unit 211 can apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct the residual video block based on the transform coefficient video block. The reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples of one or more predicted video blocks generated by the prediction unit 202 to produce a reconstructed video block associated with the current block, which is then stored in the buffer 213.
[0376] After the video block is reconstructed by reconstruction unit 212, a loop filtering operation can be performed to reduce video block artifacts in the video block.
[0377] Entropy encoding unit 214 can receive data from other functional components of video encoder 200. When entropy encoding unit 214 receives data, it can perform one or more entropy encoding operations to generate entropy encoded data and output a bit stream including the entropy encoded data.
[0378] Figure 5 This is a block diagram illustrating an example of a video decoder 300, which can be... Figure 3 The video decoder 114 in the system 100 shown.
[0379] The video decoder 300 can be configured to perform any or all of the technologies disclosed herein. Figure 5 In the example, the video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared among the various components of the video decoder 300. In some examples, the processor can be configured to perform any or all of the techniques described in this disclosure.
[0380] exist Figure 5 In the example, the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, the video decoder 300 can perform encoding passes typically described with respect to the video encoder 200. Figure 4 The opposite decoding iteration.
[0381] The entropy decoding unit 301 can retrieve the encoded bitstream. The encoded bitstream may include entropy-coded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 can decode the entropy-coded video data, and the motion compensation unit 302 can determine motion information based on the entropy-decoded video data. This motion information includes motion vectors, motion vector precision, reference image list index, and other motion information. For example, the motion compensation unit 302 can determine this information by executing AMVP and merge modes.
[0382] The motion compensation unit 302 can generate motion compensation blocks, possibly performing interpolation based on an interpolation filter. The syntax elements may include identifiers for the interpolation filter used at sub-pixel precision.
[0383] The motion compensation unit 302 can use the interpolation filter used by the video encoder 200 during video block encoding to calculate the interpolation of sub-integer pixels of the reference block. The motion compensation unit 302 can determine the interpolation filter used by the video encoder 200 based on the received syntax information, and use the interpolation filter to generate the prediction block.
[0384] The motion compensation unit 302 may use some syntax information to determine the size of the blocks used to encode the frames and / or stripes of the encoded video sequence, segmentation information describing how each macroblock of the image of the encoded video sequence is segmented, a mode indicating how each partition is encoded, one or more reference frames (and a list of reference frames) for each inter-frame coded block, and other information for decoding the encoded video sequence.
[0385] Intra-prediction unit 303 can use, for example, an intra-prediction mode received in the bitstream to form prediction blocks based on spatially adjacent blocks. Dequantization unit 303 dequantizes (i.e., dequantizes) the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.
[0386] The reconstruction unit 306 can add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra-frame prediction unit 303 to form a decoded block. If necessary, a deblocking filter can also be applied to filter the decoded block to remove block artifacts. The decoded video block is then stored in a buffer 307, which provides a reference block for subsequent motion compensation / intra-frame prediction and also generates decoded video for presentation on a display device.
[0387] Figures 6 to 15 It shows that it can be done in, for example Figures 1 to 5 The embodiments shown are example methods for implementing the above technical solutions.
[0388] Figure 6 A flowchart of an example method 600 for video processing is shown. Method 600 includes, at operation 610, performing a conversion between a video comprising one or more images and a bitstream of that video according to rules. These rules specify that a syntactic structure in a profile-tier-level syntactic structure follows a syntactic element, which includes information related to General Constraint Information (GCI) for the bitstream, and that the syntactic element indicates the level to which the output layer set associated with the profile-tier-level syntactic structure conforms.
[0389] Figure 7 A flowchart of an example method 700 for video processing is shown. Method 700 includes, in operation 710, performing a conversion between a video comprising one or more images and a bitstream of that video according to rules specifying that a byte alignment syntax in a General Constraint Information (GCI) syntax structure follows one or more GCI reserved fields, the byte alignment syntax indicating whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream, and the GCI syntax structure including GCI-related syntax elements.
[0390] Figure 8 A flowchart of an example method 800 for video processing is shown. Method 800 includes, at operation 810, performing a conversion between a video comprising one or more images and a bitstream of that video according to rules specifying a syntactic structure in a profile-tier-level syntactic structure following an indication of level information, which includes information related to General Constraint Information (GCI), and the indication of level information specifies interoperability indicators.
[0391] Figure 9A flowchart of an example method 900 for video processing is shown. Method 900 includes, at operation 910, performing a conversion between a video comprising one or more images and a bitstream of that video according to a rule specifying whether a general constraint information (GCI) syntax structure is included in the profile-tier-level syntax structure, based on syntax elements in the profile-tier-level syntax structure.
[0392] Figure 10 A flowchart of an example method 1000 for video processing is shown. Method 1000 includes, at operation 1010, performing a conversion between a video and a video bitstream comprising one or more images according to rules specifying that byte alignment syntax is excluded from a General Constraint Information (GCI) syntax structure present in a profile-tier-level syntax structure. This byte alignment syntax indicates whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream, and the GCI syntax structure includes GCI-related syntax elements.
[0393] Figure 11 A flowchart of an example method 1100 for video processing is shown. Method 1100 includes, at operation 1110, performing a conversion between a video comprising one or more images and a bitstream of that video according to rules specifying a General Constraint Information (GCI) syntax structure immediately preceding a byte alignment check condition in a profile-tier-level syntax structure. The GCI syntax includes GCI-related syntax elements, and the byte alignment check condition checks whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream.
[0394] Figure 12 A flowchart of an example method 1200 for video processing is shown. Method 1200 includes, at operation 1210, performing a conversion between a video comprising one or more images and a bitstream of that video according to a rule specifying the number of reserved constraint bits associated with a general constraint information syntax element to be included in the bitstream.
[0395] Figure 13 A flowchart of an example method 1300 for video processing is shown. Method 1300 includes performing a conversion between a video comprising one or more images and a bitstream of the video at operation 1310, according to a rule that specifies that a General Constraint Information (GCI) syntax element is included at the beginning of a GCI syntax structure, the GCI syntax element indicating whether one or more GCI syntax elements are included in the GCI syntax structure.
[0396] Figure 14A flowchart of an example method 1400 for video processing is shown. Method 1400 includes, at operation 1410, performing a conversion between a video comprising one or more images and a bitstream of that video according to rules that specify constraints on syntax elements corresponding to the bit depth used to represent the video in the bitstream.
[0397] Figure 15 A flowchart of an example method 1500 for video processing is shown. Method 1500 includes, at operation 1510, performing a conversion between a video comprising one or more images and a bitstream of that video according to rules that specify constraints on syntax elements corresponding to the chroma format of the video.
[0398] The following solutions show example embodiments of the techniques discussed in the previous chapters (e.g., items 1 through 9).
[0399] The following is a list of preferred solutions for some embodiments.
[0400] A1. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify a syntax structure in a profile-tier-level syntax structure following a syntax element, wherein the syntax structure includes information related to General Constraint Information (GCI) for the bitstream, and wherein the syntax element indicates the level to which an output layer set associated with the profile-tier-level syntax structure conforms.
[0401] A2. The method according to solution A1, wherein the information associated with the GCI indicates whether one or more GCI flags are indicated.
[0402] A3. The method described according to solution A1 or A2, wherein the grammatical structure immediately follows the grammatical element.
[0403] A4. The method according to any one of solutions A1 to A3, wherein the syntax structure is the general_constraint_info() syntax structure, and the syntax element is the general_level_idc syntax element.
[0404] A5. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify a byte alignment syntax in a General Constraint Information (GCI) syntax structure following one or more GCI reserved fields, wherein the byte alignment syntax indicates whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream, and wherein the GCI syntax structure includes GCI-related syntax elements.
[0405] A6. The method according to solution A5, wherein the byte alignment syntax is located at the end of the GCI syntax structure.
[0406] A7. The method described in solution A5 or A6, wherein the byte alignment syntax includes the gci_alignment_zero_bit field and its syntax conditions, and the GCI syntax structure is the general_constraint_info() syntax structure.
[0407] A8. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify a syntactic structure in a profile-tier-level syntactic structure following an indication of tier information, wherein the syntactic structure includes information related to General Constraint Information (GCI), and wherein the indication of the tier information specifies an interoperability indicator.
[0408] A9. The method described in solution A8, wherein the syntax structure is the general_constraint_info() syntax structure and the instruction is the general_sub_profile_idc[i] syntax element.
[0409] A10. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify that syntax elements in a profile-tier-level syntax structure indicate whether a General Constraint Information (GCI) syntax structure is included in the profile-tier-level syntax structure.
[0410] A11. The method according to solution A10, wherein the syntax element is a first flag.
[0411] A12. According to the method of solution A11, wherein the first flag equals 1 and the second flag equals 1, indicating that a GCI syntax structure exists in the profile-tier-level syntax structure.
[0412] A13. The method described in solution A12, wherein the second flag is profileTierPresentFlag.
[0413] A14. According to the method of solution A11, wherein the first flag equal to 0 indicates that there is no GCI syntax structure in the profile-tier-level syntax structure.
[0414] A15. According to the method of solution A11, wherein the GCI syntax structure includes one or more GCI fields, and wherein the semantics of the one or more GCI fields apply only when the first flag is equal to 1.
[0415] A16. According to the method of solution A11, wherein the first flag is included in the profile-tier-level syntax structure based on the value of the second flag.
[0416] A17. The method described in solution A16, wherein the second flag is profileTierPresentFlag.
[0417] A18. The method described according to solutions A11 to A17, wherein the first flag is gci_present_flag.
[0418] A19. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify that byte alignment syntax is excluded from a General Constraint Information (GCI) syntax structure present in the profile-tier-level syntax structure, wherein the byte alignment syntax indicates whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream, and wherein the GCI syntax structure includes GCI-related syntax elements.
[0419] A20. The method according to solution A19, wherein the byte alignment syntax includes the gci_alignment_zero_bit field and its syntax conditions, and the GCI syntax structure is the general_constraint_info() syntax structure.
[0420] A21. The method according to solution A19, wherein the rule specifies the number of reserved constraint bits associated with GCI-related syntax elements to be included in the bitstream.
[0421] A22. The method according to solution A21, wherein the rule further specifies that the value of each of the plurality of reserved constraint bits is included in the bitstream.
[0422] A23. The method described in solution A22, wherein the GCI syntax element is gci_num_reserved_bits.
[0423] A24. The method described in solution A22, wherein the syntax element is encoded or decoded into an unsigned 11-bit integer.
[0424] A25. The method according to solution A22, wherein the value of each of the plurality of reserved constraint bits is encoded and decoded as an unsigned 1-bit integer.
[0425] A26. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify a General Constraint Information (GCI) syntax structure immediately preceding a byte alignment check condition in a profile-tier-level syntax structure, wherein the GCI syntax includes GCI-related syntax elements, and wherein the byte alignment check condition checks whether the current position in the bitstream is an integer multiple of 8 bits from the position of the first bit in the bitstream.
[0426] A27. The method according to solution A26, wherein the syntax structure is the general_constraint_info() syntax structure, and wherein the byte alignment check condition is based on the byte_aligned() syntax element.
[0427] A28. The method according to any one of solutions A1 to A27, wherein the conversion includes decoding the video from the bitstream.
[0428] A29. The method according to any one of solutions A1 to A27, wherein the conversion includes encoding the video into the bitstream.
[0429] A30. A method for storing a bitstream representing a video into a computer-readable recording medium, comprising generating the bitstream from the video according to the method described in any one or more of solutions A1 to A27; and storing the bitstream in the computer-readable recording medium.
[0430] A31. A video processing apparatus comprising a processor configured to implement the method described in any one or more of solutions A1 to A30.
[0431] A32. A computer-readable medium having instructions stored thereon that, when executed, cause a processor to implement the method described in any one or more of solutions A1 to A30.
[0432] A33. A computer-readable medium storing the bit stream generated according to any one or more of solutions A1 to A30.
[0433] A34. A video processing apparatus for storing bitstreams, wherein the video processing apparatus is configured to implement the method described in any one or more of solutions A1 to A30.
[0434] The following is another list of preferred solutions for some of the embodiments.
[0435] B1. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify a number of reserved constraint bits associated with General Constraint Information (GCI) syntax elements included in the bitstream.
[0436] B2. The method according to solution B1, wherein the rule further specifies that the value of each of the plurality of reserved constraint bits is included in the bit stream.
[0437] B3. The method described in solution B2, wherein the syntax element is encoded or decoded into an unsigned 11-bit integer.
[0438] B4. The method according to solution B2, wherein the value of each of the plurality of reserved constraint bits is encoded and decoded as an unsigned 1-bit integer.
[0439] B5. The method described in solution B2, wherein the GCI syntax element is gci_num_reserved_bits.
[0440] B6. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to a rule, wherein the rule specifies that a General Constraint Information (GCI) syntax element is included at the beginning of a GCI syntax structure, wherein the GCI syntax element indicates whether one or more GCI syntax elements are included in the GCI syntax structure.
[0441] B7. The method according to solution B6, wherein the GCI syntax element being equal to 0 indicates that the one or more GCI syntax elements are not included in the GCI syntax structure.
[0442] B8. The method described in solution B7, wherein the one or more GCI syntax elements do not include a byte alignment field.
[0443] B9. The method described in solution B7, wherein the GCI syntax structure is not subject to constraints.
[0444] B10. The method according to solution B6, wherein the second syntax element is located after the GCI syntax structure, wherein the second syntax element specifies the number of syntax elements, and each syntax element specifies an interoperability indicator.
[0445] B11. The method according to solution B10, wherein the second syntax element immediately follows the GCI syntax structure.
[0446] B12. The method according to solution B10 or B11, wherein a byte alignment check of the second syntax element is added in response to the presence of the second syntax element in the bitstream.
[0447] B13. The method according to solution B12, wherein one or more alignment bits are added in response to the second syntax element not being byte-aligned, and wherein adding the one or more alignment bits causes the second syntax element to be byte-aligned.
[0448] B14. The method according to solution B13, wherein the one or more alignment bits include one or more ptl_alignment_zero_bits.
[0449] B15. The method according to any one of solutions B10 to B14, wherein the second syntax element is ptl_num_sub_profiles.
[0450] B16. The method according to solution B6, wherein the GCI syntax element being equal to 1 indicates that the one or more GCI syntax elements are included in the GCI syntax structure.
[0451] B17. The method according to any one of solutions B6 to B16, wherein the first GCI syntax element is gci_present_flag, and the GCI syntax structure is a general_constraint_info() syntax structure.
[0452] B18. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify constraints on syntax elements, wherein the syntax elements correspond to bit depths used to represent the video in the bitstream.
[0453] B19. The method described in solution B18, wherein the constraint specifies that the syntax element is a non-negative integer less than a maximum value, the maximum value being equal to the value of the syntax element plus one.
[0454] B20. The method according to solution B19, wherein the constraint is imposed when the syntax element is less than 8.
[0455] B21. The method according to solution B19, wherein the constraint is not imposed on the syntax element greater than or equal to 8.
[0456] B22. The method according to any one of solutions B18 to B21, wherein the second syntax element is max_bitdepth_minus8_constraint_idc.
[0457] B23. A video processing method comprising performing a conversion between a video comprising one or more images and a bitstream of the video according to rules, wherein the rules specify constraints on syntax elements, wherein the syntax elements correspond to the chroma format of the video.
[0458] B24. The method described in solution B23, wherein the constraint specifies that the syntax element is a non-negative integer less than a maximum value, the maximum value being equal to the value of the syntax element plus one.
[0459] B25. The method described in solution B24, wherein the constraint is imposed when the syntax element is less than 2.
[0460] B26. The method according to solution B24, wherein the constraint is not imposed when the syntax element is equal to 2.
[0461] B27. The method according to any one of solutions B23 to B26, wherein the second syntax element is max_chroma_format_constraint_idc.
[0462] B28. The method according to any one of solutions B1 to B27, wherein the conversion includes decoding the video from the bitstream.
[0463] B29. The method according to any one of solutions B1 to B27, wherein the conversion includes encoding the video into the bitstream.
[0464] B30. A method for storing a bitstream representing a video into a computer-readable recording medium, comprising generating the bitstream from the video according to the method described in any one or more of solutions B1 to B27; and storing the bitstream in the computer-readable recording medium.
[0465] B31. A video processing apparatus comprising a processor configured to implement the method described in any one or more of solutions B1 to B30.
[0466] B32. A computer-readable medium having instructions stored thereon that, when executed, cause a processor to implement the method described in any one or more of solutions B1 to B30.
[0467] B33. A computer-readable medium storing the bit stream generated according to any one or more of solutions B1 to B30.
[0468] B34. A video processing apparatus for storing bitstreams, wherein the video processing apparatus is configured to implement the method described in any one or more of solutions B1 to B30.
[0469] The following is another list of preferred solutions for some embodiments.
[0470] P1. A video processing method comprising performing a conversion between a video and a codec representation of the video, wherein the codec representation conforms to a format rule, wherein the format rule specifies the location and manner in which a General Constraint Information Syntax (GCI) field is included in the codec representation, or the conditions under which the GCI field is included in the codec representation.
[0471] P2. The method described in solution P1, wherein the rule specifies that the GCI field is included after the indication of the video's level information.
[0472] P3. The method according to any one of solutions P1 to P2, wherein the rule specifies that the GCI field is included after indicating whether the GCI field is included in the codec representation.
[0473] P4. According to the method described in solution P1, wherein the rule specifies that the GCI field is included after the hierarchy indicator flag and before the byte alignment syntax element in the profile-tier-level syntax structure.
[0474] P5. The method according to any one of solutions P1 to P4, wherein the rule further specifies that the encoding representation includes the number of constraint bits or the value of each reserved constraint, rather than the total number of reserved constraint bytes in the signaling notification.
[0475] P6. A video processing method comprising performing a conversion between a video and a codec representation of the video, wherein the codec representation conforms to a format rule, wherein the format rule specifies constraints on syntax elements, wherein the syntax elements correspond to constraints for representing the bit depth of the video or the chroma format of the video in the codec representation.
[0476] P7. The method described in solution P6, wherein the formatting rule specifies constraints for values less than 8 in the field.
[0477] P8. According to the method of solution P6, wherein the formatting rule stipulates that the constraint is not applied to the value 2 of the syntax element.
[0478] P9. The method according to any one of solutions P1 to P8, wherein performing the conversion includes encoding the video to generate the codec representation.
[0479] P10. The method according to any one of solutions P1 to P8, wherein performing the conversion includes parsing and decoding the codec representation to generate the video.
[0480] P11. A video decoding apparatus, comprising a processor configured to implement one or more of the methods described in solutions P1 to P10.
[0481] P12. A video encoding apparatus, comprising a processor configured to implement one or more of the methods described in solutions P1 to P10.
[0482] P13. A computer program product having computer code stored thereon, which, when executed by a processor, causes the processor to implement the method of any one of solutions P1 to P10.
[0483] In this document, the term "video processing" can refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm can be applied during the conversion from the pixel representation of a video to the corresponding bitstream, and vice versa. As defined in the syntax, the bitstream representation (or simply bitstream) of the current video block can, for example, correspond to bits juxtaposed or scattered at different positions within the bitstream. For example, a macroblock can be encoded based on the residual error values after transformation and encoding / decoding, and also using bits from the header and other fields in the bitstream.
[0484] The solutions and other solutions, examples, embodiments, modules, and functional operations disclosed in this document can be implemented in digital electronic circuits, or computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or combinations of one or more of the foregoing. The disclosed embodiments and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by or control of the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of substances affecting machine-readable propagation signals, or one or more combinations thereof. The term "data processing apparatus" includes all means, devices, and machines for processing data, such as programmable processors, computers, or multiple processors or computers. In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination thereof. Propagation signals are artificially generated signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device.
[0485] Computer programs (also known as programs, software, software applications, scripts, or code) can be written in any programming language, including compiled or interpreted languages, and can be deployed in any form, including as standalone programs or modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a file portion that holds other programs or data (e.g., one or more scripts stored in a markup language document), a single file dedicated to a related program, or multiple coordination files (e.g., a file storing one or more modules, subroutines, or code portions). A computer program can be deployed to execute on a single computer, or on multiple computers located at one site or distributed across multiple sites and interconnected through a communication network.
[0486] The processes and logic flows described in this document can be executed by one or more programmable processors, which execute one or more computer programs to perform functions by manipulating input data and generating output. The processes and logic flows can also be executed by dedicated logic circuitry, and the devices can be implemented as dedicated logic circuitry, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits).
[0487] For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as any one or more processors in any type of digital computer. Typically, a processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to, receiving or transferring data to one or more mass storage devices (e.g., magnetic disks, magneto-optical disks, or optical disks) for storing data. However, a computer does not require such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM optical disks. The processor and memory may be supplemented by or incorporated into special-purpose logic circuitry.
[0488] Although this patent document contains numerous details, these details should not be construed as limiting the scope of any subject matter or claimed content, but rather as descriptions of features characteristic of specific embodiments of a particular technology. Certain features described in the context of individual embodiments in this patent document may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, although the foregoing features may be described as functioning in a particular combination, or even initially claimed to be so, in some cases one or more features may be removed from the claimed combination, and the claimed combination may refer to a sub-combination or a variation of a sub-combination.
[0489] Similarly, although these operations are described in a specific order in the accompanying drawings, this should not be construed as requiring that such operations be performed in the specific order or sequence shown, or requiring that all shown operations be performed to obtain the desired result. Furthermore, the separation of various system components in the embodiments described in this patent document should not be construed as requiring such separation in all embodiments.
[0490] Only some implementations and examples are described, and other implementations, enhancements and variations may be made based on the content described and illustrated in this patent document.
Claims
1. A video processing method, comprising: Perform the conversion between a video containing one or more images and the bitstream of that video according to the rules. The rule stipulates that a first GCI syntax element must be included at the beginning of the General Constraint Information (GCI) syntax structure. The first GCI syntax element indicates whether one or more GCI syntax elements are included in the GCI syntax structure. Wherein, the first GCI syntax element is gci_present_flag, and the GCI syntax structure is the general_constraint_info() syntax structure.
2. The method according to claim 1, wherein, The first GCI syntax element being equal to 0 indicates that the one or more GCI syntax elements are not included in the GCI syntax structure.
3. The method according to claim 2, wherein, The one or more GCI syntax elements do not include byte alignment fields.
4. The method according to claim 2, wherein, The GCI syntax structure is not subject to constraints.
5. The method according to claim 1, wherein, The second syntax element is located after the GCI syntax structure, wherein the second syntax element specifies the number of syntax elements, and each syntax element specifies an interoperability indicator.
6. The method according to claim 5, wherein, The second syntax element immediately follows the GCI syntax structure.
7. The method according to claim 5, wherein, In response to the presence of the second syntax element in the bitstream, a byte alignment check of the second syntax element is added.
8. The method according to claim 7, wherein, In response to the second syntax element not being byte-aligned, one or more alignment bits are added, wherein adding the one or more alignment bits causes the second syntax element to be byte-aligned.
9. The method according to claim 8, wherein, The one or more alignment bits include one or more ptl_alignment_zero_bits.
10. The method according to claim 5, wherein, The second syntax element is ptl_num_sub_profiles.
11. The method according to claim 1, wherein, The first GCI syntax element being equal to 1 indicates that the one or more GCI syntax elements are included in the GCI syntax structure.
12. The method according to claim 1, wherein, The rules also specify constraints on third syntax elements. The third syntax element corresponds to the bit depth used to represent the video in the bitstream.
13. The method according to claim 12, wherein, The constraint specifies that the third syntax element is a non-negative integer less than the maximum value, which is equal to the value of the fourth syntax element plus 1.
14. The method according to claim 13, wherein, The constraint is imposed when the fourth syntax element is less than 8.
15. The method according to claim 13, wherein, The constraint is not imposed on the fourth syntax element that is greater than or equal to 8.
16. The method according to claim 13, wherein, The fourth syntax element is max_bitdepth_minus8_constraint_idc.
17. The method according to claim 1, wherein, The rules also specify constraints on the fifth grammatical element. The fifth syntax element corresponds to the chroma format of the video.
18. The method according to claim 17, wherein, The constraint stipulates that the fifth syntax element is a non-negative integer less than the maximum value, which is equal to the value of the sixth syntax element plus 1.
19. The method according to claim 18, wherein, The constraint is imposed when the sixth syntax element is less than 2.
20. The method according to claim 18, wherein, The constraint is not imposed when the sixth syntax element is equal to 2.
21. The method according to claim 18, wherein, The sixth syntax element is max_chroma_format_constraint_idc.
22. The method according to claim 1, wherein, The rule also specifies that the number of reserved constraint bits associated with the seventh GCI syntax element should be included in the bitstream.
23. The method according to claim 22, wherein, The rule also specifies that the value of each of the plurality of reserved constraint bits is included in the bitstream.
24. The method according to claim 23, wherein, The seventh GCI syntax element is encoded and decoded as an unsigned 11-bit integer.
25. The method according to claim 23, wherein, The value of each of the plurality of reserved constraint bits is encoded and decoded into an unsigned 1-bit integer.
26. The method according to claim 23, wherein, The seventh GCI syntax element is gci_num_reserved_bits.
27. The method according to any one of claims 1 to 26, wherein, The conversion includes decoding the video from the bitstream.
28. The method according to any one of claims 1 to 26, wherein, The conversion includes encoding the video into the bitstream.
29. A method for storing a bitstream representing video to a computer-readable recording medium, comprising: The method according to any one of claims 1 to 26 generates the bitstream from the video; as well as The bitstream is stored in the computer-readable recording medium.
30. A video processing apparatus comprising a processor configured to implement the method of any one of claims 1 to 29.
31. A computer-readable medium having instructions stored thereon that, when executed, cause a processor to perform the method of any one of claims 1 to 29.
32. A computer-readable medium having stored thereon computer instructions and a bit stream, wherein, When the computer instructions are executed by the video processing device, they implement the method of any one of claims 1 to 26 to generate the bitstream.