Control of signaling notification for quantization parameter increments
By introducing format rules and adaptive parameter sets into video encoding and decoding, the chroma processing, deblocking filter application, and loop filter in the video conversion process are optimized, solving the problem of low efficiency in existing video encoding and decoding technologies and achieving more efficient bandwidth utilization and improved encoding and decoding quality.
Patent Information
- Application Number
- CN202180027080.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-04-01
- Filing Date
- 2021-04-01
- Publication Date
- 2026-01-30
- Estimated Expiration
- 2041-04-01
AI Technical Summary
Existing video encoding and decoding technologies struggle to effectively utilize format rules and adaptive parameter sets to optimize video processing when handling high-efficiency video encoding and decoding standards such as VVC, leading to increased bandwidth requirements and low encoding and decoding efficiency.
By introducing format rules and adaptive parameter sets (APS), the video encoding and decoding process is optimized by controlling chroma conversion characteristics, deblocking filter application, video region processing, image segmentation mode, quantization parameter offset, and adaptive loop filter during video conversion.
It improves video encoding and decoding efficiency, reduces bandwidth requirements, and enhances the flexibility and quality of video processing.
Smart Images

Figure CN115606184B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] In accordance with the applicable Patent Law and / or the Paris Convention, this application promptly claims priority and interest in International Patent Application No. PCT / CN2020 / 082728, filed on April 1, 2020. For all legal purposes, the entire disclosure of the foregoing application is incorporated herein by reference as a part of this application disclosure. Technical Field
[0003] This application relates to image and video encoding and decoding. Background Technology
[0004] Digital video accounts for the largest share of bandwidth usage on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demand for digital video is expected to continue to grow. Summary of the Invention
[0005] This document discloses techniques used by video encoders and decoders to process the codec representation of video using control information useful for decoding the codec representation.
[0006] In one example aspect, a video processing method is disclosed. The method includes: performing a conversion between a video comprising one or more chroma components and a codec representation of the video, the video comprising one or more video pictures containing one or more stripes, wherein the codec representation conforms to a format rule, wherein the format rule specifies that a chroma array type field controls constraints on the conversion characteristics of the chroma used during the conversion.
[0007] In another example, a different video processing method is disclosed. The method includes performing a conversion between a video comprising one or more video images containing one or more video regions and a codec representation of the video, wherein the codec representation conforms to a format rule specifying a deblocking mode indicator for the video regions, the deblocking mode indicator indicating the applicability of a deblocking filter to the video regions during the conversion.
[0008] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video images containing one or more video stripes and / or one or more video sub-images and a codec representation of the video, wherein the codec representation conforms to a format rule specifying a flag indicating whether a single-strip mode per sub-image is enabled for the video image when image segmentation is disabled for the video image.
[0009] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video images containing one or more video strips and a codec representation of the video, wherein the codec representation conforms to a format rule specifying that signaling notification of image or strip level colorimetric parameter offsets is provided in an image header or strip header.
[0010] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more video images containing one or more video strips and a codec representation of the video, wherein the codec representation conforms to a format rule specifying that a chroma quantization parameter (QP) table for converting video blocks applicable to the video is derived as an XOR operation between (delta_qp_in_val_minus1[i][j]+1) and delta_qp_diff_val[i][j], where delta_qp_in_val_minus1[i][j] specifies the increment value of the input coordinates of the j-th pivot point used to derive the i-th chroma map, and delta_qp_diff_val[i][j] specifies the increment of the output coordinates of the j-th pivot point used to derive the i-th chroma QP table, where i and j are integers.
[0011] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video and a bitstream of the video according to a format rule, wherein the format rule specifies that a first field at the sequence level, picture level, or stripe level controls the value of a second field in an adaptive parameter set.
[0012] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video and a bitstream of the video according to format rules, wherein the format rules specify that the value of a syntax element associated with an adaptive loop filter (ALF) used in the conversion depends on the presence of another syntax element indicating an identifier corresponding to an adaptive parameter set (APS) of the adaptive loop filter.
[0013] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video and a bitstream of the video according to format rules, wherein the format rules specify that the values of fields associated with the chroma components of the video control whether syntax elements are inferred for the chroma components in a stripe header associated with an adaptive loop filter.
[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 containing one or more stripes and a bitstream of the video, according to a format rule, wherein the format rule specifies that a set of image parameters includes a field indicating the presence of a syntax element related to the difference between a luminance quantization parameter and a prediction in the encoding / decoding unit.
[0015] In another example, a different video processing method is disclosed. The method includes: performing a conversion between a video comprising one or more images containing one or more sub-images and a bitstream of the video according to a format rule, wherein the format rule specifies that, in response to disabling image segmentation for the images, a first flag is enabled for the images, the first flag indicating whether each sub-image of the image contains exactly one rectangular stripe.
[0016] In another example, a different video processing method is disclosed. The method includes: performing a conversion between a video comprising one or more video regions and a bitstream of the video according to a format rule, wherein the format rule specifies that the bitstream includes deblocking mode indicators for the video regions, the deblocking mode indicators indicating the applicability of a deblocking filter to the video regions during the conversion.
[0017] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images containing one or more stripes and a bitstream of said video, according to a format rule, wherein the format rule specifies that a signaling notification of the image-level or stripe-level color metric parameter offset is always included in the image header or stripe header.
[0018] In another example, a different video processing method is disclosed. This method includes performing a conversion between a video comprising one or more images containing one or more stripes and a bitstream of said video, according to format rules, wherein the format rules specify that a table of colorimetric parameters (QPs) for the conversion of video blocks applied to said video is derived as an XOR operation between two syntax elements.
[0019] In yet another example, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the methods described above.
[0020] In yet another example, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the methods described above.
[0021] In yet another example, a computer-readable medium on which code is stored is disclosed. The code embodies one of the methods described herein in the form of processor-executable code.
[0022] This document describes these and other features. Attached Figure Description
[0023] Figure 1 A block diagram of an example video processing system is shown.
[0024] Figure 2 A block diagram of a video processing device is shown.
[0025] Figure 3 A flowchart of an example method for video processing is shown.
[0026] Figure 4 This is a block diagram illustrating a video encoding / decoding system according to some embodiments of the present disclosure.
[0027] Figure 5 This is a block diagram illustrating an encoder according to some embodiments of the present disclosure.
[0028] Figure 6 This is a block diagram illustrating a decoder according to some embodiments of the present disclosure.
[0029] Figures 7A-7C This is a flowchart of an exemplary video processing method based on some embodiments of the technology disclosed herein.
[0030] Figures 8A-8E This is a flowchart of an exemplary video processing method based on some embodiments of the technology disclosed herein. Detailed Implementation
[0031] In this document, chapter headings are used for ease of understanding and not to limit the applicability of the techniques and embodiments disclosed in each chapter to that chapter. Furthermore, the use of H.266 terminology in some descriptions is merely for ease of understanding and not to limit the scope of the disclosed techniques. Therefore, the techniques described herein are also applicable to other video codec protocols and designs.
[0032] 1. Introduction
[0033] This article relates to video codec technology. Specifically, it concerns the syntax design of APS, deblocking, subpictures, and QP increments in video codecs. These concepts 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 Multi-Functional Video Codec (VVC) currently under development.
[0034] 2. Abbreviation
[0035] APS (Adaptation Parameter Set)
[0036] AU (Access Unit)
[0037] AUD (Access Unit Delimiter)
[0038] AVC (Advanced Video Coding)
[0039] CLVS (Coded Layer Video Sequence)
[0040] CPB (Coded Picture Buffer) is a buffer for encoding and decoding images.
[0041] CRA (Clean Random Access)
[0042] CTU (Coding Tree Unit)
[0043] CVS (Coded Video Sequence) is a video sequence encoding and decoding mechanism.
[0044] DPB (Decoded Picture Buffer)
[0045] DPS (Decoding Parameter Set)
[0046] EOB (End Of Bitstream) - End of Bitstream
[0047] EOS (End Of Sequence) - End of Sequence
[0048] GDR (Gradual Decoding Refresh) Gradual decoding and refreshing
[0049] HEVC (High Efficiency Video Coding)
[0050] HRD (Hypothetical Reference Decoder)
[0051] IDR (Instantaneous Decoding Refresh)
[0052] JEM (Joint Exploration Model)
[0053] MCTS (Motion-Constrained Tile Sets)
[0054] NAL (Network Abstraction Layer)
[0055] OLS (Output Layer Set)
[0056] PH (Picture Header)
[0057] PPS (Picture Parameter Set)
[0058] PROF (Prediction Refinement with Optical Flow)
[0059] PTL (Profile, Tier, and Level)
[0060] PU (Picture Unit)
[0061] RBSP (Raw Byte Sequence Payload)
[0062] SEI (Supplemental Enhancement Information)
[0063] SH (Slice Header)
[0064] SPS (Sequence Parameter Set)
[0065] SVC (Scalable Video Coding)
[0066] VCL (Video Coding Layer)
[0067] VPS (Video Parameter Set)
[0068] VTM (VVC Test Model)
[0069] VUI (Video Usability Information)
[0070] VVC (Versatile Video Coding) is a multi-functional video codec.
[0071] 3. Preliminary Discussion
[0072] Video codec standards have primarily evolved through the development of known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 video. The two organizations jointly developed the H.262 / MPEG-2 video standard, the H.264 / MPEG-4 Advanced Video Codec (AVC) standard, and the H.265 / HEVC standard. Since H.262, video codec standards have been based on a hybrid video codec architecture, employing temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and applied them to reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly, and the goal of the new codec standards is to reduce the bitrate by 50% compared to HEVC. The new video codec standard was officially named Multifunctional Video Codec (VVC) at the JVET meeting in April 2018, at which time the first version of the VVC Test Model (VTM) was released. With ongoing efforts to standardize VVC, new codec technologies have been adopted into the VVC standard at each JVET meeting. The VVC working draft and test model VTM are updated after each meeting. The current goal of the VVC project is Technical Completion (FDIS) at the July 2020 meeting.
[0073] 3.1. PPS Syntax and Semantics
[0074] In the latest VVC draft text, the PPS syntax and semantics are as follows:
[0075]
[0076]
[0077]
[0078]
[0079]
[0080] The PPS RBSP should be available for the decoding process before being referenced. The PPS RBSP is included in at least one AU (where TemporalId is less than or equal to the TemporalId of the PPS NAL unit) or is provided by external means.
[0081] All PPS NAL cells within a PU that have a specific value pps_pic_parameter_set_id should have the same content.
[0082] The `pps_pic_parameter_set_id` identifier is used by PPS for reference by other syntax elements. The value of `pps_pic_parameter_set_id` should be in the range of 0 to 63, inclusive.
[0083] Regardless of the nuh_layer_id value, PPS NAL cells share the same value space of pps_pic_parameter_set_id.
[0084] Let ppsLayerId be the nuh_layer_id value of a specific PPS NAL cell, and vclLayerId be the nuh_layer_id value of a specific VCLNAL cell. A specific VCL NAL cell should not reference a specific PPS NAL cell unless ppsLayerId is less than or equal to vclLayerId, and the layer whose nuh_layer_id is equal to ppsLayerId is included in at least one OLS that includes layers whose nuh_layer_id is equal to vclLayerId.
[0085] `pps_seq_parameter_set_id` represents the value of `pps_seq_parameter_set_id` for the SPS. The value of `pps_seq_parameter_set_id` should be in the range of 0 to 15, inclusive. The value of `pps_seq_parameter_set_id` should be the same across all PPSs referenced in the CLV for encoding and decoding images.
[0086] A mixed_nalu_types_in_pic_flag value of 1 indicates that each image referencing PPS has more than one VCLNAL unit, the VCL NAL units do not have the same nal_unit_type value, and the image is not an IRAP image. A mixed_nalu_types_in_pic_flag value of 0 indicates that each image referencing PPS has one or more VCL NAL units, and the VCL NAL units of each image referencing PPS have the same nal_unit_type value.
[0087] When no_mixed_nalu_types_in_pic_constraint_flag equals 1, the value of mixed_nalu_types_in_pic_flag should be equal to 0.
[0088] For each stripe in image picA that has a nal_unit_type value nalUnitTypeA in the range IDR_W_RADL to CRA_NUT (inclusive) within one or more stripes that also contain another value nal_unit_type (i.e., the value of mixed_nalu_types_in_pic_flag of image picA is equal to 1), and has a nal_unit_type value nalUnitTypeA, the following applies:
[0089] —This band should belong to the subpicA whose corresponding subpic_treated_as_pic_flag[i] value is 1.
[0090] —A stripe should not belong to a picA subpicture containing a VCL NAL unit whose nal_unit_type is not equal to nalUnitTypeA.
[0091] —If nalUnitTypeA equals CRA, then for all the following PUs in CLVS that are after the current picture in the decoding and output order, the RefPicList[0] and RefPicList[1] of the stripes in subpicA of these PUs should not include any picture that is before picA in the decoding order in the active entry.
[0092] —Otherwise (i.e., nalUnitTypeA equals IDR_W_RADL or IDR_N_LP), for all PUs in the CLVS following the current picture in the decoding order, neither RefPicList[0] nor RefPicList[1] of the stripes in subpicA of these PUs should include any picture preceding picA in the active entry in the decoding order.
[0093] Note 1 – A mixed_nalu_types_in_pic_flag value of 1 indicates that the image referencing PPS contains stripes with different NAL unit types, such as a codec image derived from a sub-picture bitstream merge operation. For this codec image, the encoder must ensure further alignment of the matching bitstream structure and the parameters of the original bitstream. An example of this alignment is as follows: when sps_idr_rpl_flag is equal to 0 and mixed_nalu_types_in_pic_flag is equal to 1, the image referencing PPS cannot have stripes with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.
[0094] `pic_width_in_luma_samples` represents the width of each decoded image referenced in the PPS of the luminance sample unit. `pic_width_in_luma_samples` should not be equal to 0, should be an integer multiple of Max(8, MinCbSizeY), and should be less than or equal to `pic_width_max_in_luma_samples`.
[0095] When res_change_in_clvs_allowed_flag equals 0, the value of pic_width_in_luma_samples should be equal to pic_width_max_in_luma_samples.
[0096] `pic_height_in_luma_samples` represents the height of each decoded image referenced in the PPS of the luminance sample unit. `pic_height_in_luma_samples` should not be equal to 0, should be an integer multiple of Max(8, MinCbSizeY), and should be less than or equal to `pic_height_max_in_luma_samples`.
[0097] When res_change_in_clvs_allowed_flag equals 0, the value of pic_height_in_luma_samples should be equal to pic_height_max_in_luma_samples.
[0098] The derivation of the variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC is as follows:
[0099] PicWidthInCtbsY = Ceil(pic_width_in_luma_samples ÷ CtbSizeY) (69)
[0100] PicHeightInCtbsY = Ceil(pic_height_in_luma_samples ÷ CtbSizeY) (70)
[0101] PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY (71)
[0102] PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY (72)
[0103] PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY (73)
[0104] PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY (74)
[0105] PicSizeInSamplesY =
[0106] pic_width_in_luma_samples * pic_height_in_luma_samples (75)
[0107] PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC (76)
[0108] PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC (77)
[0109] A value of 1 for pps_conformance_window_flag indicates that the consistency trimming window offset parameter immediately follows in PPS. A value of 0 for pps_conformance_window_flag indicates that the consistency trimming window offset parameter does not exist in PPS.
[0110] pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset represent the sample points of the image in the CLVS output during the decoding process, based on the rectangular region represented in the output image coordinates. When pps_conformance_window_flag equals 0, it is inferred that the values of pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset are equal to 0.
[0111] The consistent cropping window contains luminance samples in horizontal image coordinates from SubWidthC*pps_conf_win_left_offset to pic_width_in_luma_samples—(SubWidthC*pps_conf_win_right_offset+1) and vertical image coordinates from SubHeightC*pps_conf_win_top_offset to pic_height_in_luma_samples—(SubHeightC*pps_conf_clusive_bottom_offset+1) (inclusive of end values).
[0112] The value of SubWidthC*(pps_conf_win_left_offset+pps_conf_win_right_offset) should be less than pic_width_in_luma_samples, and the value of SubHeightC*(pps_conf_win_top_offset+pps_conf_win_bottom_offset) should be less than pic_height_in_luma_samples.
[0113] When ChromaArrayType is not equal to 0, the corresponding sample points of the two chroma arrays are sample points with image coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the image coordinates of the luminance sample point.
[0114] Note 2 – The consistent cropping window offset parameter is only used for output. All internal decoding processes are used for the uncropped image size.
[0115] Let ppsA and ppsB refer to any two PPSs within the same SPS. The requirement for bitstream consistency is that when ppsA and ppsB have the same values pic_width_in_luma_samples and pic_height_in_luma_samples respectively, ppsA and ppsB should also have the same values pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset respectively.
[0116] When pic_width_in_luma_samples equals pic_width_max_in_luma_samples and picUheight_in_luma_sample equals pic_height_max_in_luma_samples, the bitstream consistency requirement is that pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset are equal to sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset, respectively.
[0117] A scaling_window_explicit_signaling_flag value of 1 indicates that the scaling window offset parameter exists in the PPS. A scaling_window_explicit_signaling_flag value of 0 indicates that the scaling window offset parameter does not exist in the PPS. When res_change_in_clvs_allowed_flag is equal to 0, the value of scaling_window_explicit_signaling_flag should be equal to 0.
[0118] `scaling_win_left_offset`, `scaling_win_right_offset`, `scaling_win_top_offset`, and `scaling_win_bottom_offset` represent the offsets of the image size applied to the scaling ratio calculation. When these values are not present, they are inferred to be equal to `pps_conf_win_left_offset`, `pps_conf_win_right_offset`, `pps_conf_win_top_offset`, and `pps_conf_win_bottom_offset`, respectively.
[0119] SubWidthC*(scaling_win_left_offset+scaling _ The value of win_right_offsets should be less than pic_width_in_luma_samples, and the value of SubHeightC*(scaling_win_top_offset+scaling_win_bottom_offset) should be less than pic_height_in_luma_samples.
[0120] The derivation of variables PicOutputWidthL and PicOutputHeightL is as follows:
[0121] PicOutputWidthL=pic_width_in_luma_samples- (78)
[0122] SubWidthC*(scaling_win_right_offset+scaling_win_left_offset)
[0123] PicOutputHeightL=pic_height_in_luma_samples- (79)
[0124] SubWidthC*(scaling_win_bottom_offset+scaling_win_top_offset)
[0125] Let refPicOutputWidthL and refPicOutputHeightL be the PicOutputWidthL and PicOutputHeightL of the reference image that references the current image of this PPS, respectively. Bitstream consistency requires that all of the following conditions be met:
[0126] –PicOutputWidthL*2 should be greater than or equal to refPicWidthInLumaSamples.
[0127] –PicOutputHeightL*2 should be greater than or equal to refPicHeightInLumaSamples.
[0128] –PicOutputWidthL should be less than or equal to refPicWidthInLumaSamples*8.
[0129] –PicOutputHeightL should be less than or equal to refPicHeightInLumaSamples*8.
[0130] –PicOutputWidthL*pic_width_max_in_luma_samples should be greater than or equal to refPicOutputWidthL*(pic_width_in_luma_samples-Max(8,MinCbSizeY)).
[0131] –PicOutputHeightL*pic_height_max_in_luma_samples should be greater than or equal to refPicOutputHeightL*(pic_height_in_luma_samples-Max(8,MinCbSizeY)).
[0132] `output_flag_present_flag` equal to 1 indicates that the `pic_output_flag` syntax element exists in the header of the stripe referencing PPS. `output_flag_present_flag` equal to 0 indicates that the `pic_output_flag` syntax element does not exist in the header of the stripe referencing PPS.
[0133] `subpic_id_mapping_in_pps_flag` equal to 1 indicates that signaling notification of subpicture ID mapping is performed in PPS. `subpic_id_mapping_in_pps_flag` equal to 0 indicates that signaling notification of subpicture ID mapping is not performed in PPS. If `subpic_id_mapping_explicitly_signalled_flag` is 0 or `subpic_id_mapping_in_sps_flag` is 1, then the value of `subpic_id_mapping_in_pps_flag` should be 0. Otherwise (if `subpic_id_mapping_explicitly_signalled_flag` is 1 and `subpic_id_mapping_in_sps_flag` is 0), the value of `subpic_id_mapping_in_pps_flag` should be 1.
[0134] pps_num_subpics_minus1 should be equal to sps_num_subpics_minus1.
[0135] pps_subpic_id_len_minus1 should be equal to sps_subpic_id_len_minus1.
[0136] pps_subpic_id[i] represents the subpick ID of the i-th subpick. The length of the pps_subpic_id[i] syntax element is pps_subpic_id_len_minus1+1 bits.
[0137] For each value of i in the range from 0 to sps_num_subpics_minus1, the derivation of the variable SubpicIdVal[i] is as follows:
[0138]
[0139] Bitstream consistency requires that the following two constraints apply:
[0140] —For any two distinct values of i and j within the range of 0 to sps_num_subpics_minus1 (inclusive), SubpicIdVal[i] should not be equal to SubpicIdVal[j].
[0141] —When the current image is not the first image in CLVS, for each value of i in the range from 0 to sps_num_subpics_minus1 (inclusive), if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the image in the same layer that is decoded first in the order of decoding, then the nal_unit_type of all codec strip NAL units of the subpics in the current image with subpic index i should be equal to a specific value in the range from IDR_W_RADL to CRA_NUT (inclusive).
[0142] `no_pic_partition_flag` equal to 1 means that image segmentation will not be applied to every image referencing PPS. `no_pic_partition_flag` equal to 0 means that every image referencing PPS can be segmented into multiple slices or strips.
[0143] For bitstream consistency requirements, the value of no_pic_partition_flag should be the same for all PPSs referenced by the encoded and decoded images within CLVS.
[0144] Bitstream consistency requires that when the value of sps_num_subpics_minus1+1 is greater than 1, the value of no_pic_partition_flag should not be equal to 1.
[0145] pps_log2_ctu_size_minus5 plus 5 represents the size of the luma codec tree block for each CTU. pps_log2_ctu_size_minus5 should be equal to sps_log2_ctu_size_minus5.
[0146] Increasing 1 to `num_exp_tile_columns_minus1` indicates the number of explicitly provided tile column widths. The value of `num_exp_tile_columns_minus1` should be in the range of 0 to `PicWidthInCtbsY-1`, inclusive. When `no_pic_partition_flag` equals 1, it is inferred that the value of `num_exp_tile_columns_minus1` is equal to 0.
[0147] Increasing 1 to num_exp_tile_rows_minus1 indicates the number of explicitly provided tile row heights. The value of num_exp_tile_rows_minus1 should be in the range of 0 to PicHeightInCtbsY-1, inclusive. When no_pic_partition_flag equals 1, it is inferred that the value of num_tile_rows_minus1 is equal to 0.
[0148] Increasing 1 to `tile_column_width_minus1[i]` indicates the width of the i-th slice column in CTB units, within the range of 0 to `num_exp_tile_columns_minus1-1` (inclusive). As specified in Clause 6.5.1, `tile_column_width_minus1[num_exp_tile_columns_minus1]` is used to deduce the width of slice columns whose index is greater than or equal to `num_exp_tile_columns_minus1`. The value of `tile_column_width_minus1[i]` should be within the range of 0 to `PicWidthInCtbsY-1` (inclusive). If it does not exist, the value of `tile_column_width_minus1[0]` is deduced to be equal to `PicWidthInCtbsY-1`.
[0149] Incrementing `tile_row_height_minus1[i]` by 1 indicates the height of the i-th slice row in CTB units, within the range of 0 to num_exp_tile_rows_minus1-1 (inclusive). As specified in Clause 6.5.1, `tile_row_height_minus1[num_exp_tile_rows_minus1]` is used to deduce the height of slice rows whose index is greater than or equal to num_exp_tile_rows_minus1. The value of `tile_row_height_minus1[i]` should be within the range of 0 to PicHeightInCtbsY-1 (inclusive). If it does not exist, the value of `tile_row_height_minus1[0]` is deduced to be equal to PicHeightInCtbsY-1.
[0150] A `rect_slice_flag` value of 0 indicates that slices within each slice are arranged in raster scan order, and slice information is not signaled in the PPS. A `rect_slice_flag` value of 1 indicates that slices within each slice cover a rectangular area of the image, and slice information is signaled in the PPS. If `rect_slice_flag` does not exist, it is inferred that `rect_slice_flag` is equal to 1. When `subpic_info_present_flag` is equal to 1, the value of `rect_slice_flag` should be equal to 1.
[0151] `single_slice_per_subpic_flag` equal to 1 indicates that each subpicture consists of one and only one rectangular stripe. `single_slice_per_subpic_flag` equal to 0 indicates that each subpicture can consist of one or more rectangular stripes. When `single_slice_per_subpic_flag` equals 1, it is inferred that `num_slices_in_pic_minus1` equals `sps_num_subpics_minus1`. When it does not exist, the value of `single_slice_per_subpic_flag` is inferred to be 0.
[0152] `num_slices_in_pic_minus1` plus 1 indicates the number of rectangular stripes in each image referencing PPS. The value of `num_slices_in_pic_minus1` should be in the range of 0 to `MaxSlicesPerPicture-1` (inclusive), where `MaxSlicesPerPicture` is specified in Annex A. When `no_pic_partition_flag` equals 1, it is inferred that the value of `num_slices_in_pic_minus1` is equal to 0.
[0153] A tile_idx_delta_present_flag value of 0 indicates that the tile_idx_delta value does not exist in the PPS, and all rectangular stripes in images referencing the PPS are represented in raster order, according to the procedure defined in Clause 6.5.1. A tile_idx_delta_present_flag value of 1 indicates that the tile_idx_delta value may exist in the PPS, and all rectangular stripes in images referencing the PPS are represented in the order indicated by the tile_idx_delta value. When it does not exist, the value of tile_idx_delta_present_flag is inferred to be 0.
[0154] The value of slice_width_in_tiles_minus1[i] plus 1 indicates the width of the i-th rectangular strip in terms of slice columns. The value of slice_width_in_tiles_minus1[i] should be in the range of 0 to NumTileColumns-1, including the end value.
[0155] The following applies when slice_width_in_tiles_minus1[i] does not exist:
[0156] —If NumTileColumns equals 1, then the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0157] —Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred in accordance with Clause 6.5.1.
[0158] The value of slice_height_in_tiles_minus1[i] plus 1 indicates the height of the i-th rectangular strip in units of slice rows. The value of slice_height_in_tiles_minus1[i] should be in the range of 0 to NumTileRows-1, inclusive.
[0159] The following applies when slice_height_in_tiles_minus1[i] does not exist:
[0160] —If NumTileRows equals 1, or tile_idx_delta_present_flag equals 0 and tileIdx%NumTileColumns is greater than 0, then it is inferred that the value of slice_height_in_tiles_minus1[i] is equal to 0.
[0161] —Otherwise (NumTileRows is not equal to 1, and tile_idx_delta_present_flag is equal to 1 or tileIdx%NumTileColumns is equal to 0), when tile_idx_delta_present_flag is equal to 1 or tileIdx%NumTileColumns is equal to 0, it is inferred that the value of slice_height_in_tiles_minus1[i] is equal to slice_height_in_tiles_minus1[i-1].
[0162] `num_exp_slices_in_tile[i]` represents the number of slice heights explicitly provided in the current slice containing multiple rectangular slices. The value of `num_exp_slices_in_tile[i]` should be in the range of 0 to `RowHeight[tileY] - 1`, where `tileY` is the slice row index containing the `i`-th slice. If it does not exist, the value of `num_exp_slices_in_tile[i]` is inferred to be 0. When `num_exp_slices_in_tile[i]` is equal to 0, the value of the inferred variable `NumSlicesInTile[i]` is inferred to be 1.
[0163] The increment of 1 in exp_slice_height_in_ctus_minus1[j] represents the height of the j-th rectangular strip in the current slice, in units of CTU rows. The value of exp_slice_height_in_ctus_minus1[j] should be in the range of 0 to RowHeight[tileY]-1, inclusive, where tileY is the slice row index of the current slice.
[0164] When num_exp_slices_in_tile[i] is greater than 0, the derivation of variables NumSlicesInTile[i] and SliceHeightInCtusMinus1[i+k] in the range from 0 to NumSlicesInTile[i]-1 is as follows:
[0165]
[0166]
[0167] `tile_idx_delta[i]` represents the difference between the slice index of the first slice in the i-th rectangular strip and the slice index of the first slice in the (i+1)-th rectangular strip. The value of `tile_idx_delta[i]` should be in the range of -NumTilesInPic+1 to NumTilesInPic-1, inclusive. If it does not exist, the value of `tile_idx_delta[i]` is inferred to be 0. If it exists, the value of `tile_idx_delta[i]` should not be 0.
[0168] A `loop_filter_across_tiles_enabled_flag` value of 1 indicates that loop filtering can be performed across tile boundaries in images referencing PPS. A `loop_filter_across_tiles_enabled_flag` value of 0 indicates that loop filtering cannot be performed across tile boundaries in images referencing PPS. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering. If it does not exist, the value of `loop_filter_across_tiles_enabled_flag` is inferred to be 1.
[0169] A `loop_filter_across_slices_enabled_flag` value of 1 indicates that loop filtering can be performed across slice boundaries in images referencing PPS. A `loop_filter_across_slice_enabled_flag` value of 0 indicates that loop filtering is not performed across slice boundaries in images referencing PPS. Loop filtering operations include deblocking filtering, adaptive sample offset filtering, and adaptive loop filtering. If it does not exist, the value of `loop_filter_across_slices_enabled_flag` is inferred to be 0.
[0170] A cabac_init_present_flag value of 1 indicates that cabac_init_flag exists in the stripe header referencing PPS. A cabac_init_present_flag value of 0 indicates that cabac_init_flag does not exist in the stripe header referencing PPS.
[0171] Increment 1 by num_ref_idx_default_active_minus1[i]. When i equals 0, it represents the inferred value of the variable NumRefIdxActive[0] for P or B stripes where num_ref_idx_active_override_flag is equal to 0. When i equals 1, it represents the inferred value of NumRefIdxActive[1] for B stripes where num_ref_idx_active_override_flag is equal to 0. The value of num_ref_idx_default_active_minus1[i] should be in the range of 0 to 14, inclusive.
[0172] A value of 0 for rpl1_idx_present_flag indicates that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] do not exist in the PH syntax structure or the strip header of the image referencing PPS. A value of 1 for rpl1_idx_present_flag indicates that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] can appear in the PH syntax structure or the strip header of the image referencing PPS.
[0173] `init_qp_minus26` plus 26 represents the initial value of `SliceQpY` for each slice of PPS. `SliceQp` is initialized when a non-zero value of `ph_qp_delta` is decoded. Y The initial value of SliceQp is modified at the image level, or when a non-zero value of slice_qp_delta is decoded. Y The initial value is modified at the stripe level. The value of init_qp_minus26 should be in the range of -(26+QpBdOffset) to +37, inclusive.
[0174] A value of 1 for `cu_qp_delta_enabled_flag` indicates that the syntax elements `ph_cu_qp_delta_subdiv_intra_slice` and `ph_cu_qp_delta_subdiv_inter_slice` exist in the PH referencing PPS, and `cu_qp_delta_abs` may exist in the transform unit syntax. A value of 0 for `cu_qp_delta_enabled_flag` indicates that the syntax elements `ph_cu_qp_delta_subdiv_intra_slice` and `ph_cu_qp_delta_subdiv_inter_slice` do not exist in the PH referencing PPS, and `cu_qp_delta_abs` does not exist in the transform unit syntax.
[0175] A value of 1 for `pps_chroma_tool_offsets_present_flag` indicates the presence of syntax elements related to chroma tool offsets in the PPS RBSP syntax structure. A value of 0 for `pps_chroma_tool_offsets_present_flag` indicates the absence of such syntax elements. When `ChromaArrayType` is 0, the value of `pps_chroma_tool_offsets_present_flag` should be 0.
[0176] pps_cb_qp_offset and pps_cr_qp_offset represent the values used to derive Qp'. Cb and Qp' Cr Brightness quantization parameter Qp' Y The values of pps_cb_qp_offset and pps_cr_qp_offset should be in the range of -12 to +12, inclusive. When ChromaArrayType equals 0, pps_cb_qp_offset and pps_cr_qp_offset are not used during decoding, and the decoder should ignore their values. If they do not exist, the values of pps_cb_qp_offset and pps_cr_qp_offset are inferred to be equal to 0.
[0177] A value of 1 for `pps_joint_cbcr_qp_offset_present_flag` indicates that `pps_joint_cbcr_qp_offset_value` and `joint_cbcr_qp_offset_list[i]` exist in the PPS RBSP syntax structure. A value of 0 for `pps_joint_cbcr_qp_offset_present_flag` indicates that `pps_joint_cbcr_qp_offset_value` and `joint_cbcr_qp_offset_list[i]` do not exist in the PPS RBSP syntax structure. When `ChromaArrayType` is 0 or `sps_joint_cbcr_enabled_flag` is 0, the value of `pps_joint_cbcr_qp_offset_present_flag` should be 0. When it does not exist, the value of `pps_joint_cbcr_qp_offset_present_flag` is inferred to be 0.
[0178] pps_joint_cbcr_qp_offset_value represents the value used to derive Qp'. CbCr Brightness quantization parameter Qp' YThe offset. The value of pps_joint_cbcr_qp_offset_value should be in the range of -12 to +12, inclusive. When ChromaArrayType equals 0 or sps_joint_cbcr_enabled_flag equals 0, pps_joint_cbcr_qp_offset_value is not used during decoding, and the decoder should ignore its value. When pps_joint_cbcr_qp_offset_present_flag equals 0, pps_joint_cbcr_qp_offset_value does not exist and is inferred to be equal to 0.
[0179] A value of 1 for `pps_slice_chroma_qp_offsets_present_flag` indicates that the `slice_cb_qp_offset` and `slice_cr_qp_offset` syntax elements exist in the relevant slice header. A value of 0 for `pps_slice_chroma_qp_offsets_present_flag` indicates that the `slice_cb_qp_offset` and `slice_cr_qp_offset` syntax elements do not exist in the relevant slice header. When they do not exist, the value of `pps_slice_chroma_qp_offsets_present_flag` is inferred to be 0.
[0180] A value of 1 for `pps_cu_chroma_qp_offset_list_enabled_flag` indicates that the syntax elements `ph_cu_chroma_qp_offset_subdiv_intra_slice` and `ph_cu_chroma_qp_offset_subdiv_inter_slice` exist in the PH referencing PPS, and `cu_chroma_qp_offset_flag` may also exist in the Transform Unit syntax and Palette Encoding / Decoding syntax. A value of 0 for `pps_cu_chroma_qp_offset_list_enabled_flag` indicates that the syntax elements `ph_cu_chroma_qp_offset_subdiv_intra_slice` and `ph_cu_chroma_qp_offset_subdiv_inter_slice` do not exist in the PH referencing PPS, and `cu_chroma_qp_offset_flag` does not exist in the Transform Unit syntax and Palette Encoding / Decoding syntax. If it does not exist, the value of `pps_cu_chroma_qp_offset_list_enabled_flag` is inferred to be 0.
[0181] The increment of 1 in `chroma_qp_offset_list_len_minus1` indicates the number of `cb_qp_offset_list[i]`, `cr_qp_offset_list[i]`, and `joint_cbcr_qp_offset_list[i]`, which are syntax elements present in the PPS RBSP syntax structure. The value of `chroma_qp_offset_list_len_minus1` should be in the range of 0 to 5, inclusive.
[0182] cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] respectively represent the values in Qp' Cb Qp' Cr and Qp' CbCr The offsets used in the derivation. The values of cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] should be in the range of -12 to +12, inclusive. When pps_joint_cbcr_qp_offset_present_flag equals 0, joint_cbcr_qp_offset_list[i] does not exist and is inferred to be equal to 0.
[0183] A value of 0 for pps_weighted_pred_flag indicates that weighted predictions should not be applied to P-strips referencing PPS. A value of 1 for pps_weighted_pred_flag indicates that weighted predictions should be applied to P-strips referencing PPS. When sps_weighted_pred_flag is 0, the value of pps_weighted_pred_flag should be 0.
[0184] A value of 0 for pps_weighted_bipred_flag indicates that explicit weighted prediction is not applied to B-strips referencing PPS. A value of 1 for pps_weighted_bipred_flag indicates that explicit weighted prediction is applied to B-strips referencing PPS. When sps_weighted_bipred_flag is 0, the value of pps_weighted_bipred_flag should be 0.
[0185] A deblocking filter control present flag of 1 indicates that the deblocking filter control syntax element exists in PPS. A deblocking filter control present flag of 0 indicates that the deblocking filter control syntax element does not exist in PPS.
[0186] A value of 1 for `deblocking_filter_override_enabled_flag` indicates that `ph_deblocking_filter_override_flag` exists in the PH referencing PPS, or that `slice_deblocking_filter_override_flag` exists in the slice header referencing PPS. A value of 0 for `deblocking_filter_override_enabled_flag` indicates that `ph_deblocking_filter_override_flag` does not exist in the PH referencing PPS, or that `slice_deblocking_filter_override_flag` does not exist in the slice header referencing PPS. If it does not exist, then the value of `deblocking_filter_override_enabled_flag` is assumed to be 0.
[0187] A value of 1 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation should not be applied to slices that do not reference `slice_deblocking_filter_disabled_flag`. A value of 0 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation should be applied to slices that do not reference `slice_deblocking_filter_disabled_flag`. When `slice_deblocking_filter_disabled_flag` is not present, it is inferred that the value of `pps_deblocking_filter_disabled_flag` is 0.
[0188] `pps_beta_offset_div2` and `pps_tc_offset_div2` represent the default deblocking parameter offsets applied to the β and tC (divided by 2) of the luminance components of the referenced PPS strip, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or the strip header of the referenced PPS strip. The values of both `pps_beta_offset_div2` and `pps_tc_offset_div2` should be in the range of -12 to 12, inclusive. If not present, the values of `pps_beta_offset_div2` and `pps_tc_offset_div2` are inferred to be 0.
[0189] `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2` represent the default deblocking parameter offsets applied to the Cb components of the slice referencing PPS (divided by 2), unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or the slice header of the slice referencing PPS. The values of `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2` should both be in the range of -12 to 12, inclusive. If not present, the values of `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2` are inferred to be equal to 0.
[0190] `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2` represent the default deblocking parameter offsets applied to the β and tC (divided by 2) of the Cr component of the slice referencing PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the image header or the slice header of the slice referencing PPS. The values of both `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2` should be in the range of -12 to 12, inclusive. If they do not exist, the values of `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2` are inferred to be equal to 0.
[0191] A value of 1 for `rpl_info_in_ph_flag` indicates that the reference image list information exists within the PH syntax structure, but not in the header of a PPS bar that references a PPS bar that does not contain a PH syntax structure. A value of 0 for `rpl_info_in_ph_flag` indicates that the reference image list information does not exist within the PH syntax structure, but may exist in the header of a PPS bar that references a PPS bar that does not contain a PH syntax structure.
[0192] A value of 1 for `dbf_info_in_ph_flag` indicates that the deblocking filter information exists in the PH syntax structure and is not present in the strip header of a PPS that does not contain a PH syntax structure. A value of 0 for `dbf_info_in_ph_flag` indicates that the deblocking filter information is not present in the PH syntax structure and may exist in the strip header of a PPS that does not contain a PH syntax structure. If it does not exist, then the value of `dbf_info_in_ph_flag` is assumed to be 0.
[0193] A `sao_info_in_ph_flag` value of 1 indicates that the SAO filter information exists within the PH syntax structure, but not within the strip header referencing a PPS that does not contain a PH syntax structure. A `sao_info_in_ph_flag` value of 0 indicates that the SAO filter information does not exist within the PH syntax structure, but may exist within the strip header referencing a PPS that does not contain a PH syntax structure.
[0194] `alf_info_in_ph_flag` equal to 1 indicates that the ALF information exists in the PH syntax structure, but not in the strip header referencing a PPS that does not contain a PH syntax structure. `alf_info_in_ph_flag` equal to 0 indicates that the ALF information does not exist in the PH syntax structure, but may exist in the strip header referencing a PPS that does not contain a PH syntax structure.
[0195] A value of 1 for `wp_info_in_ph_flag` indicates that the weighted prediction information may exist in the PH syntax structure, but not in the stripe header referencing a PPS that does not contain a PH syntax structure. A value of 0 for `wp_info_in_ph_flag` indicates that the weighted prediction information does not exist in the PH syntax structure, but may exist in the stripe header referencing a PPS that does not contain a PH syntax structure. If it does not exist, then the value of `wp_info_in_ph_flag` is inferred to be 0.
[0196] A value of 1 for `qp_delta_info_in_ph_flag` indicates that the QP incremental information exists within the PH syntax structure, but not in the stripe header referencing a PPS that does not contain a PH syntax structure. A value of 0 for `qp_delta_info_in_ph_flag` indicates that the QP incremental information does not exist within the PH syntax structure, but may exist in the stripe header referencing a PPS that does not contain a PH syntax structure.
[0197] A value of 1 for `pps_ref_wraparound_enabled_flag` indicates that horizontal wraparound motion compensation is applied in inter-frame prediction. A value of 0 for `pps_ref_wraparound_enabled_flag` indicates that horizontal wraparound motion compensation is not applied. When the value of `CtbSizeY / MinCbSizeY+1` is greater than `pic_width_in_luma_samples / MinCbSizeY-1`, the value of `pps_ref_wraparound_enabled_flag` should be 0. When `sps_ref_wraparound_enabled_flag` is 0, the value of `pps_ref_wraparound_enabled_flag` should also be 0.
[0198] `pps_ref_wraparound_offset` plus `(CtbSizeY / MinCbSizeY) + 2` represents the offset used to calculate the horizontal wraparound position in units of `MinCbSizeY` luminance samples. The value of `pps_ref_wraparound_offset` should be in the range of 0 to `(pic_width_in_luma_samples / MinCbSizeY) - (CtbSizeY / MinCbSizeY) - 2`, inclusive.
[0199] The variable PpsRefWraparoundOffset is set to equal pps_ref_wraparound_offset+(CtbSizeY / MinCbSizeY)+2.
[0200] A picture_header_extension_present_flag value of 0 indicates that the PH extension syntax element does not exist in the PH referencing PPS. A picture_header_extension_present_flag value of 1 indicates that the PH extension syntax element exists in the PH referencing PPS. In bitstreams conforming to this version of the specification, picture_header_extension_present_flag should be equal to 0.
[0201] A slice_header_extension_present_flag value of 0 indicates that the slice header extension syntax element is not present in the slice header of the codec image referencing PPS. A slice_header_extension_present_flag value of 1 indicates that the slice header extension syntax element is present in the slice header used to refer to the codec image referencing PPS. In bitstreams conforming to this version of the specification, slice_header_extension_present_flag should be equal to 0.
[0202] A value of 0 for pps_extension_flag indicates that the pps_extension_data_flag syntax element does not exist in the PPSRBSP syntax structure. A value of 1 for pps_extension_flag indicates that the pps_extension_data_flag syntax element exists in the PPSRBSP syntax structure.
[0203] The `pps_extension_data_flag` flag can have any value. Its presence and value do not affect the consistency of the decoder with the level represented in this version of the specification. Decoders conforming to this version of the specification should ignore all `pps_extension_data_flag` syntax elements.
[0204] 3.2. APS Syntax and Semantics
[0205] In the latest VVC draft text, the PPS syntax and semantics are as follows:
[0206]
[0207] APS RBSP contains ALF syntax structures, such as alf_data().
[0208]
[0209]
[0210]
[0211] APS RBSP contains LMCS syntax structures, such as lmcs_data().
[0212]
[0213]
[0214] APS RBSP contains a scaling list data syntax structure, such as scaling_list_data().
[0215]
[0216]
[0217] Each APS RBSP should be available for the decoding process before being referenced, and each APS RBSP is included in at least one AU (where the TemporalId is less than or equal to the TemporalId of the codec strip NAL unit referencing the AU), or is provided externally.
[0218] All APS NAL cells in the PU with specific values for adapt_parameter_set_id and aps_params_type, regardless of whether they are prefix or suffix APS NAL cells, should have the same content.
[0219] The `adaption_parameter_set_id` provides an identifier for the APS to be referenced by other syntax elements.
[0220] When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 7, including the end value.
[0221] When aps_params_type equals LMCS_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 3, including the end value.
[0222] Let apsLayerId be the nuh_layer_id value of a specific APS NAL cell, and vclLayerId be the nuh_layer_id value of a specific VCLNAL cell. A specific VCL NAL cell should not reference a specific APS NAL cell unless the layer whose apsLayerId is less than or equal to vclLayerId and whose nuh_layer_id is equal to apsLayerId is included in at least one OLS that includes layers whose nuh_layer_id is equal to vclLayerId.
[0223] aps_params_type indicates the type of APS parameters carried in APS, as shown in Table 6.
[0224] Table 6 – APS Parameter Type Codes and APS Parameter Types
[0225] aps_params_type aps_params_type name APS parameter types 0 ALF_APS ALF parameters 1 LMCS_APS LMCS parameters 2 SCALING_APS Scaling list parameters 3..7 Reserved Reserved
[0226] All APS NAL cells with a specific value of aps_params_type share the same value space for adapt_parameter_set_id, regardless of the nuh_layer_id value. APS NAL cells with different aps_params_type values use a separate value space for adapt_parameter_set_id.
[0227] Note 1—APS NAL units (with specific values for adaption_parameter_set_id and aps_params_type) can be shared between images, and different stripes within an image can reference different ALF APSs.
[0228] Note 2—The suffix APS NAL unit associated with a specific VCL NAL unit (which precedes the suffix APS NAL unit in the decoding order) is not used by that specific VCL NAL unit, but is used by VCL NAL units that follow the suffix APS NAL unit in the decoding order.
[0229] An aps_extension_flag value of 0 indicates that the aps_extension_data_flag syntax element does not exist in the APS RBSP syntax structure. An aps_extension_flag value of 1 indicates that the aps_extension_data_flag syntax element exists in the APS RBSP syntax structure.
[0230] The `aps_extension_data_flag` flag can have any value. Its presence and value do not affect the consistency of the decoder with the level represented in this version of the specification. Decoders conforming to this version of the specification should ignore all `aps_extension_data_flag` syntax elements.
[0231] `alf_luma_filter_signal_flag` equal to 1 indicates that the luminance filter set is signaled. `alf_luma_filter_signal_flag` equal to 0 indicates that the luminance filter set is not signaled.
[0232] `alf_chroma_filter_signal_flag` equal to 1 indicates that the chroma filter is signaled. `alf_chroma_filter_signal_flag` equal to 0 indicates that the chroma filter is not signaled. When `ChromaArrayType` equals 0, `alf_chroma_filter_signal_flag` should be equal to 0.
[0233] At least one of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag should have a value equal to 1.
[0234] The variable NumAlfFilters, representing the number of different adaptive loop filters, is set to 25.
[0235] A value of 0 for `alf_luma_clip_flag` indicates that a linear adaptive loop filter is applied to the luminance component. A value of 1 for `alf_luma_clip_flag` indicates that a nonlinear adaptive loop filter can be applied to the luminance component.
[0236] Increasing 1 in alf_luma_num_filters_signalled_minus1 indicates the number of adaptive loop filter categories that can signal the luminance coefficient. The value of alf_luma_num_filters_signalled_minus1 should be in the range of 0 to NumAlfFilters-1, inclusive.
[0237] `alf_luma_coeff_delta_idx[filtIdx]` represents the index of the adaptive loop filter luminance coefficient increment indicated by the signaling notification of the filter class, as specified by `filtIdx`. This index ranges from 0 to `NumAlfFilters—1`. When `alf_luma_coeff_delta_idx[filtIdx]` does not exist, it is inferred to be equal to 0. The length of `alf_luma_coeff_delta_idx[filtIdx]` is Ceil(Log2(alf_luma_num_filters_signalled_minus1+1)) bits. The value of `alf_luma_coeff_delta_idx[filtIdx]` should be in the range of 0 to `alf_luma_num_filters_signalled_minus1`, inclusive.
[0238] `alf_luma_coeff_abs[sfIdx][j]` represents the absolute value of the j-th coefficient of the luminance filter notified by the signaling indicated by `sfIdx`. When `alf_luma_coeff_abs[sfIdx][j]` does not exist, it is inferred to be equal to 0. The value of `alf_luma_coeff_abs[sfIdx][j]` should be in the range of 0 to 128, inclusive.
[0239] alf_luma_coeff_sign[sfIdx][j] represents the sign of the j-th luminance coefficient of the filter indicated by sfIdx, as shown below:
[0240] —If alf_luma_coeff_sign[sfIdx][j] equals 0, then the corresponding luminance filter coefficient is positive.
[0241] —Otherwise (alf_luma_coeff_sign[sfIdx][j] equals 1), the corresponding luminance filter coefficient is negative.
[0242] When alf_luma_coeff_sign[sfIdx][j] does not exist, it is inferred to be equal to 0.
[0243] The variable filtCoeff[sfIdx][j], where sfIdx = 0..alf_luma_num_filters_signalled_minus1 and j = 0..11, is initialized as follows:
[0244] filtCoeff[sfIdx][j]=alf_luma_coeff_abs[sfIdx][j]* (93)
[0245] (1-2*alf_luma_coeff_sign[sfIdx][j])
[0246] Having element AlfCoeff L The luminance filter coefficients AlfCoeff in [adaptation_parameter_set_id][filtIdx][j] L The derivation of [adaptation_parameter_set_id] (where filtIdx = 0..NumAlfFilters-1 and j = 0..11) is as follows:
[0247] AlfCoeff L[adaptation_parameter_set_id][filtIdx][j]=filtCoeff[alf_luma_coeff_delta_idx[filtIdx]][j] (94)
[0248] The derivation of the fixed filter coefficients AlfFixFiltCoeff[i][j] (where i = 0..64, j = 0..11) and the class-to-filter mapping AlfClassToFiltMap[m][n] (where m = 0..15 and n = 0..24) is as follows:
[0249] AlfFixFiltCoeff= (95)
[0250] {
[0251] {0,0,2,-3,1,-4,1,7,-1,1,-1,5}
[0252] {0,0,0,0,0,-1,0,1,0,0,-1,2}
[0253] {0,0,0,0,0,0,0,1,0,0,0,0}
[0254] {0,0,0,0,0,0,0,0,0,0,0,-1,1}
[0255] {2,2,-7,-3,0,-5,13,22,12,-3,-3,17}
[0256] {-1,0,6,-8,1,-5,1,23,0,2,-5,10}
[0257] {0,0,-1,-1,0,-1,2,1,0,0,-1,4}
[0258] {0,0,3,-11,1,0,-1,35,5,2,-9,9}
[0259] {0,0,8,-8,-2,-7,4,4,2,1,-1,25}
[0260] {0,0,1,-1,0,-3,1,3,-1,1,-1,3}
[0261] {0,0,3,-3,0,-6,5,-1,2,1,-4,21}
[0262] {-7,1,5,4,-3,5,11,13,12,-8,11,12}
[0263] {-5,-3,6,-2,-3,8,14,15,2,-7,11,16}
[0264] {2,-1,-6,-5,-2,-2,20,14,-4,0,-3,25}
[0265] {3,1,-8,-4,0,-8,22,5,-3,2,-10,29}
[0266] {2,1,-7,-1,2,-11,23,-5,0,2,-10,29}
[0267] {-6,-3,8,9,-4,8,9,7,14,-2,8,9}
[0268] {2,1,-4,-7,0,-8,17,22,1,-1,-4,23}
[0269] {3,0,-5,-7,0,-7,15,18,-5,0,-5,27}
[0270] {2,0,0,-7,1,-10,13,13,-4,2,-7,24}
[0271] {3,3,-13,4,-2,-5,9,21,25,-2,-3,12}
[0272] {-5,-2,7,-3,-7,9,8,9,16,-2,15,12}
[0273] {0,-1,0,-7,-5,4,11,11,8,-6,12,21}
[0274] {3,-2,-3,-8,-4,-1,16,15,-2,-3,3,26}
[0275] {2,1,-5,-4,-1,-8,16,4,-2,1,-7,33}
[0276] {2,1,-4,-2,1,-10,17,-2,0,2,-11,33}
[0277] {1,-2,7,-15,-16,10,8,8,20,11,14,11}
[0278] {2,2,3,-13,-13,4,8,12,2,-3,16,24}
[0279] {1,4,0,-7,-8,-4,9,9,-2,-2,8,29}
[0280] {1,1,2,-4,-1,-6,6,3,-1,-1,-3,30}
[0281] {-7,3,2,10,-2,3,7,11,19,-7,8,10}
[0282] {0,-2,-5,-3,-2,4,20,15,-1,-3,-1,22}
[0283] {3,-1,-8,-4,-1,-4,22,8,-4,2,-8,28}
[0284] {0,3,-14,3,0,1,19,17,8,-3,-7,20}
[0285] {0,2,-1,-8,3,-6,5,21,1,1,-9,13}
[0286] {-4,-2,8,20,-2,2,3,5,21,4,6,1}
[0287] {2,-2,-3,-9,-4,2,14,16,3,-6,8,24}
[0288] {2,1,5,-16,-7,2,3,11,15,-3,11,22}
[0289] {1,2,3,-11,-2,-5,4,8,9,-3,-2,26}
[0290] {0,-1,10,-9,-1,-8,2,3,4,0,0,29}
[0291] {1,2,0,-5,1,-9,9,3,0,1,-7,20}
[0292] {-2,8,-6,-4,3,-9,-8,45,14,2,-13,7}
[0293] {1,-1,16,-19,-8,-4,-3,2,19,0,4,30}
[0294] {1,1,-3,0,2,-11,15,-5,1,2,-9,24}
[0295] {0,1,-2,0,1,-4,4,0,0,1,-4,7}
[0296] {0,1,2,-5,1,-6,4,10,-2,1,-4,10}
[0297] {3,0,-3,-6,-2,-6,14,8,-1,-1,-3,31}
[0298] {0,1,0,-2,1,-6,5,1,0,1,-5,13}
[0299] {3,1,9,-19,-21,9,7,6,13,5,15,21}
[0300] {2,4,3,-12,-13,1,7,8,3,0,12,26}
[0301] {3,1,-8,-2,0,-6,18,2,-2,3,-10,23}
[0302] {1,1,-4,-1,1,-5,8,1,-1,2,-5,10}
[0303] {0,1,-1,0,0,-2,2,0,0,1,-2,3}
[0304] {1,1,-2,-7,1,-7,14,18,0,0,-7,21}
[0305] {0,1,0,-2,0,-7,8,1,-2,0,-3,24}
[0306] {0,1,1,-2,2,-10,10,0,-2,1,-7,23}
[0307] {0,2,2,-11,2,-4,-3,39,7,1,-10,9}
[0308] {1,0,13,-16,-5,-6,-1,8,6,0,6,29}
[0309] {1,3,1,-6,-4,-7,9,6,-3,-2,3,33}
[0310] {4,0,-17,-1,-1,5,26,8,-2,3,-15,30}
[0311] {0,1,-2,0,2,-8,12,-6,1,1,-6,16}
[0312] {0,0,0,-1,1,-4,4,0,0,0,-3,11}
[0313] {0,1,2,-8,2,-6,5,15,0,2,-7,9}
[0314] {1,-1,12,-15,-7,-2,3,6,6,-1,7,30}
[0315] },
[0316] AlfClassToFiltMap= (96)
[0317] {
[0318] {8,2,2,2,3,4,53,9,9,52,4,4,5,9,2,8,10,9,1,3,39,39,10,9,52}
[0319] {11,12,13,14,15,30,11,17,18,19,16,20,20,4,53,21,22,23,14,25,26,26,27,28,10}
[0320] {16,12,31,32,14,16,30,33,53,34,35,16,20,4,7,16,21,36,18,19,21,26,37,38,39}
[0321] {35,11,13,14,43,35,16,4,34,62,35,35,30,56,7,35,21,38,24,40,16,21,48,57,39}
[0322] {11,31,32,43,44,16,4,17,34,45,30,20,20,7,5,21,22,46,40,47,26,48,63,58,10}
[0323] {12,13,50,51,52,11,17,53,45,9,30,4,53,19,0,22,23,25,43,44,37,27,28,10,55}
[0324] {30,33,62,51,44,20,41,56,34,45,20,41,41,56,5,30,56,38,40,47,11,37,42,57,8}
[0325] {35,11,23,32,14,35,20,4,17,18,21,20,20,20,4,16,21,36,46,25,41,26,48,49,58}
[0326] {12,31,59,59,3,33,33,59,59,52,4,33,17,59,55,22,36,59,59,60,22,36,59,25,55}
[0327] {31,25,15,60,60,22,17,19,55,55,20,20,53,19,55,22,46,25,43,60,37,28,10,55,52}
[0328] {12,31,32,50,51,11,33,53,19,45,16,4,4,53,5,22,36,18,25,43,26,27,27,28,10}
[0329] {5,2,44,52,3,4,53,45,9,3,4,56,5,0,2,5,10,47,52,3,63,39,10,9,52}
[0330] {12,34,44,44,3,56,56,62,45,9,56,56,7,5,0,22,38,40,47,52,48,57,39,10,9}
[0331] {35,11,23,14,51,35,20,41,56,62,16,20,41,56,7,16,21,38,24,40,26,26,42,57,39}
[0332] {33,34,51,51,52,41,41,34,62,0,41,41,56,7,5,56,38,38,40,44,37,42,57,39,10}
[0333] {16,31,32,15,60,30,4,17,19,25,22,20,4,53,19,21,22,46,25,55,26,48,63,58,55}
[0334] },
[0335] Bit stream consistency requires filterIdx=0..NumAlfFilters-1,j=0..11 AlfCoeff L The value of [adaptation_parameter_set_id][filtIdx][j] should be -2 7 to 2 7 Within the range of -1, including end values.
[0336] `alf_luma_clip_idx[sfIdx][j]` represents the clipping index of the clipping value to be used before multiplying by the j-th coefficient of the luminance filter notified by the signaling indicated by `sfIdx`. Bitstream consistency requires that the value of `alf_luma_clip_idx[sfIdx][j]` where `sfIdx = 0..alf_luma_num_filters_signalled_minus1` and `j = 0..11` should be in the range of 0 to 3, inclusive.
[0337] Having element AlfClip L The luminance filter clipping value AlfClip is defined as [adaptation_parameter_set_id][filtIdx][j] (where filtIdx = 0..NumAlfFilters-1 and j = 0..11). L [adaptation_parameter_set_id] is derived as shown in Table 8 from BitDepth and clipIdx, which are set to be equal to alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j].
[0338] A value of 0 for `alf_chroma_clip_flag` indicates that a linear adaptive loop filter is applied to the chroma components; a value of 1 for `alf_chroma_clip_flag` indicates that a nonlinear adaptive loop filter is applied to the chroma components. When `alf_chroma_clip_flag` does not exist, it is inferred to be equal to 0.
[0339] The increment of 1 in `alf_chroma_num_alt_filters_minus1` indicates the number of selectable filters for the chroma components. The value of `alf_chroma_num_alt_filters_minus1` should be in the range of 0 to 7, inclusive.
[0340] `alf_chroma_coeff_abs[altIdx][j]` represents the absolute value of the j-th chroma filter coefficient of the optional chroma filter with index `altIdx`. When `alf_chroma_coeff_abs[altIdx][j]` does not exist, it is inferred to be equal to 0. The value of `alf_chroma_coeff_abs[sfIdx][j]` should be in the range of 0 to 128, inclusive.
[0341] alf_chroma_coeff_sign[altIdx][j] represents the sign of the j-th chroma filter coefficient of the optional chroma filter with index altIdx, as shown below:
[0342] —If alf_chroma_coeff_sign[altIdx][j] equals 0, then the corresponding chroma filter coefficient is positive.
[0343] —Otherwise (alf_chroma_coeff_sign[altIdx][j] equals 1), the corresponding chroma filter coefficients are negative.
[0344] When alf_chroma_coeff_sign[altIdx][j] does not exist, it is inferred to be equal to 0.
[0345] Having element AlfCoeff C The chromaticity filter coefficients AlfCoeff in [adaptation_parameter_set_id][altIdx][j] C The derivation of [adaptation_parameter_set_id][altIdx] (where altIdx = 0..alf_chroma_num_alt_filters_minus1, j = 0..5) is as follows:
[0346] AlfCoeff C [adaptation_parameter_set_id][altIdx][j]=alf_chroma_coeff_ab
[0347] s[altIdx][j]* (97)
[0348] (1-2*alf_chroma_coeff_sign[altIdx][j])
[0349] Bitstream consistency requirements, where altIdx = 0..alf_chroma_num_alt_filters_minus1,j = 0..5 of AlfCoeff C The value of [adaptation_parameter_set_id][altIdx][j] should be in the range of -2. 7 to 2 7 The range is -1, including the endpoints.
[0350] `alf_cc_cb_filter_signal_flag` equal to 1 indicates that the cross-component filter signals the Cb color component. `alf_cc_cb_filter_signal_flag` equal to 0 indicates that the cross-component filter does not signal the Cb color component. When `ChromaArrayType` equals 0, `alf_cc_cb_filter_signal_flag` should be equal to 0.
[0351] Increasing 1 to alf_cc_cb_filters_signalled_minus1 indicates the number of cross-component filters for the Cb color components signaled in the current ALF APS. The value of alf_cc_cb_filters_signalled_minus1 should be in the range of 0 to 3, inclusive.
[0352] alf_cc_cb_mapped_coeff_abs[k][j] represents the absolute value of the j-th mapping coefficient of the k-th cross-component filter for the signaling notification of the Cb color component. When alf_cc_cb_mapped_coeff_abs[k][j] does not exist, it is inferred to be equal to 0.
[0353] alf_cc_cb_coeff_sign[k][j] represents the sign of the j-th coefficient of the k-th cross-component filter for the signaling notification of the Cb color component, as shown below:
[0354] —If alf_cc_cb_coeff_sign[k][j] equals 0, then the corresponding cross-component filter coefficients are positive.
[0355] —Otherwise (alf_cc_cb_sign[k][j] equals 1), the corresponding cross-component filter coefficients are negative.
[0356] When alf_cc_cb_coeff_sign[k][j] does not exist, it is inferred to be equal to 0.
[0357] For the Cb color component CcAlfApsCoeff Cb The derivation of the kth cross-component filter coefficient for the signaling notification of [adaptation_parameter_set_id][k][j] (where j = 0..6) is as follows:
[0358] —If alf_cc_cb_mapped_coeff_abs[k][j] equals 0, then CcAlfApsCoeff Cb[adaptation_parameter_set_id][k][j] is set to equal to 0.
[0359] —Otherwise, CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] is set to equal to (1-2*alf_cc_cb_coeff_sign[k][j])*2 alf_cc_cb_mapped_coeff_abs[k][j]-1 .
[0360] `alf_cc_cr_filter_signal_flag` equal to 1 indicates that the cross-component filter signals the Cr color component. `alf_cc_cr_filter_signal_flag` equal to 0 indicates that the cross-component filter does not signal the Cr color component. When `ChromaArrayType` equals 0, `alf_cc_cr_filter_signal_flag` should be equal to 0.
[0361] Increasing 1 in alf_cc_cr_filters_signalled_minus1 indicates the number of cross-component filters for the Cr color component signaled in the current ALF APS. The value of alf_cc_cr_filters_signalled_minus1 should be in the range of 0 to 3, inclusive.
[0362] alf_cc_cr_mapped_coeff_abs[k][j] represents the absolute value of the j-th mapping coefficient of the k-th cross-component filter for the signaling notification of the Cr color component. When alf_cc_cr_mappedcoeff_abs[k][j] does not exist, it is inferred to be equal to 0.
[0363] alf_cc_cr_coeff_sign[k][j] represents the sign of the j-th coefficient of the k-th cross-component filter for the signaling notification of the Cr color component, as shown below:
[0364] —If alf_cc_cr_coeff_sign[k][j] equals 0, then the corresponding cross-component filter coefficients are positive.
[0365] —Otherwise (alf_cc_cr_sign[k][j] equals 1), the corresponding cross-component filter coefficients are negative.
[0366] When alf_cc_cr_coeff_sign[k][j] does not exist, it is inferred to be equal to 0.
[0367] For the Cr color component CcAlfApsCoeff Cr The derivation of the kth cross-component filter coefficient for the signaling notification of [adaptation_parameter_set_id][k][j] (where j = 0..6) is as follows:
[0368] —If alf_cc_cr_mapped_coeff_abs[k][j] equals 0, then CcAlfApsCoeff Cr [adaptation_parameter_set_id][k][j] is set to equal to 0.
[0369] —Otherwise, CcAlfApsCoeff Cr [adaptation_parameter_set_id][k][j] is set to equal to (1-2*alf_cc_cr_coeff_sign[k][j])*2 alf_cc_cr_mapped_coeff_abs[k][j]-1 .
[0370] `alf_chroma_clip_idx[altIdx][j]` represents the clipping index to be used before multiplying the j-th coefficient of the optional chroma filter with index `altIdx`. Bitstream consistency requires that the value of `alf_chroma_clip_idx[altIdx][j]` where `altIdx = 0..alf_chroma_num_alt_filters_minus1,j = 0..5` should be in the range of 0 to 3, inclusive.
[0371] Having element AlfClip C The chroma filter clipping value AlfClip in [adaptation_parameter_set_id][altIdx][j]. C [adaptation_parameter_set_id][altIdx] (where altIdx = 0..alf_chroma_num_alt_filters_minus1,j = 0..5) is derived as shown in Table 8 based on BitDepth and clipIdx being set to equal alt_chroma_clip_idx[altIdx][j].
[0372] Table 8 – AlfClip Specifications Depend on BitDepth and clipIdx
[0373]
[0374] `lmcs_min_bin_idx` represents the minimum bin index used during the luma mapping and chroma scaling construction process. The value of `lmcs_min_bin_idx` should be in the range of 0 to 15, inclusive.
[0375] `lmcs_delta_max_bin_idx` represents the incremental value between 15 and the maximum bin index `LmcsMaxBinIdx` used in the luma mapping and chroma scaling construction process. The value of `lmcs_delta_max_bin_idx` should be in the range of 0 to 15, inclusive. The value of `LmcsMaxBinIdx` is set to be equal to 15 - `lmcs_delta_max_bin_idx`. The value of `LmcsMaxBinIdx` should be greater than or equal to `lmcs_min_bin_idx`.
[0376] The increment of 1 in lmcs_delta_cw_prec_minus1 indicates the number of bits used in the syntax lmcs_delta_abs_cw[i]. The value of lmcs_delta_cw_prec_minus1 should be in the range of 0 to BitDepth-2, inclusive.
[0377] lmcs_delta_abs_cw[i] represents the absolute increment codeword value of the i-th bin.
[0378] lmcs_delta_sign_cw_flag[i] represents the sign of the variable lmcsDeltaCW[i], as shown below:
[0379] —If lmcs_delta_sign_cw_flag[i] equals 0, then lmcsDeltaCW[i] is a positive value.
[0380] —Otherwise (lmcs_delta_sign_cw_flag[i] is not equal to 0), lmcsDeltaCW[i] is negative.
[0381] When lmcs_delta_sign_cw_flag[i] does not exist, it is inferred to be equal to 0.
[0382] The derivation of the variable OrgCW is as follows:
[0383] OrgCW = (1 < <BitDepth) / 16 (98)
[0384] The variable lmcsDeltaCW[i], where i = lmcs_min_bin_idx..LmcsMaxBinIdx, is derived as follows:
[0385] lmcsDeltaCW[i] =
[0386] (1-2*lmcs_delta_sign_cw_flag[i])*lmcs_delta_abs_cw[i] (99)
[0387] The derivation of variable lmcsCW[i] is as follows:
[0388] —For i = 0..lmcs_min_bin_idx-1, lmcsCW[i] is set to equal to 0.
[0389] —For i = lmcs_min_bin_idx..LmcsMaxBinIdx, the following applies:
[0390] lmcsCW[i]=OrgCW+lmcsDeltaCW[i] (100)
[0391] The value of lmcsCW[i] should be in the range of (OrgCW>>3) to (OrgCW<<3-1), inclusive.
[0392] —For i = LmcsMaxBinIdx + 1..15, lmcsCW[i] is set to 0.
[0393] Bitstream consistency requires the following condition to be true:
[0394]
[0395] The variable InputPivot[i], where i = 0..16, is derived as follows:
[0396] InputPivot[i] = i * OrgCW (102)
[0397] The derivation of the variable LmcsPivot[i] where i = 0..16 and the variables ScaleCoeff[i] and InvScaleCoeff[i] where i = 0..15 are as follows:
[0398]
[0399]
[0400] For bitstream consistency requirements, for i = lmcs_min_bin_idx..LmcsMaxBinIdx, when the value of LmcsPivot[i] is not a multiple of 1 << (BitDepth-5), the value of (LmcsPivot[i] >> (BitDepth-5)) should not be equal to the value of (LmcsPivot[i+1] >> (BitDepth-5)).
[0401] `lmcs_delta_abs_crs` represents the absolute codeword value of the variable `lmcsDeltaCrs`. The value of `lmcs_delta_abs_crs` should be in the range of 0 to 7, inclusive. If it does not exist, then `lmcs_delta_abs_crs` is assumed to be equal to 0.
[0402] `lmcs_delta_sign_crs_flag` represents the sign of the variable `lmcsDeltaCrs`. If it does not exist, then `lmcs_delta_sign_crs_flag` is assumed to be equal to 0.
[0403] The derivation of the variables lmcsDeltaCrs is as follows:
[0404] lmcsDeltaCrs=(1-2*lmcs_delta_sign_crs_flag)*lmcs_delta_abs_crs (104)
[0406] Bitstream consistency requirement: when lmcsCW[i] is not equal to 0, (lmcsCW[i]+lmcsDeltaCrs) should be in the range of (OrgCW>>3) to ((OrgCW<<3)-1), including the end value.
[0407] The variable ChromaScaleCoeff[i], where i = 0…15, is derived as follows:
[0408]
[0409] A scaling_matrix_for_lfnst_disabled_flag value of 1 indicates that the scaling matrix should not be applied to blocks encoded or decoded using LFNST. A scaling_matrix_for_lfnst_disabled_flag value of 0 indicates that the scaling matrix can be applied to blocks encoded or decoded using LFNST.
[0410] A `scaling_list_chroma_present_flag` value of 1 indicates that the chroma scaling list exists in `scaling_list_data()`. A `scaling_list_chroma_present_flag` value of 0 indicates that the chroma scaling list does not exist in `scaling_list_data()`. For bitstream consistency, when `ChromaArrayType` is 0, `scaling_list_chroma_present_flag` must be 0; when `ChromaArrayType` is not 0, `scaling_list_chroma_present_flag` must be 1.
[0411] A scaling_list_copy_mode_flag[id] equal to 1 indicates that the value in the scaling list is the same as the value in the referenced scaling list. The referenced scaling list is represented by scaling_list_pred_id_delta[id]. A scaling_list_copy_mode_flag[id] equal to 0 indicates that scaling_list_pred_mode_flag exists.
[0412] A scaling_list_pred_mode_flag[id] equal to 1 indicates that the value of the scaling list can be predicted from the referenced scaling list. The referenced scaling list is represented by scaling_list_pred_id_delta[id]. A scaling_list_pred_mode_flag[id] equal to 0 indicates that the value of the scaling list is explicitly signaled. When it does not exist, the value of scaling_list_pred_mode_flag[id] is inferred to be 0.
[0413] `scaling_list_pred_id_delta[id]` represents a list of referenced scaling elements used to derive the predicted scaling matrix `ScalingMatrixPred[id]`. If it does not exist, the value of `scaling_list_pred_id_delta[id]` is inferred to be 0. The value of `scaling_list_pred_id_delta[id]` should be in the range of 0 to `maxIdDelta`, where `maxIdDelta` is inferred from `id` as follows:
[0414] maxIdDelta=(id<2)? id:((id<8)?(id-2):(id-8))(106)
[0415] The derivation of variables refId and matrixSize is as follows:
[0416] refId=id-scaling_list_pred_id_delta[id] (107)
[0417] matrixSize=(id<2)? 2:((id<8)?4:8) (108)
[0418] The array ScalingMatrixPred[x][y] of (matrixSize)x(matrixSize) (where x = 0..matrixSize-1, y = 0..matrixSize-1) and the variable ScalingMatrixDCPred are derived as follows:
[0419] —When both scaling_list_copy_mode_flag[id] and scaling_list_pred_mode_flag[id] are equal to 0, all elements of ScalingMatrixPred are set to equal to 8, and the value of ScalingMatrixDCPred is set to equal to 8.
[0420] —Otherwise, when scaling_list_pred_id_delta[id] equals 0, all elements of ScalingMatrixPred are set to equal to 16, and ScalingMatrixDCPred is set to equal to 16.
[0421] —Otherwise (scaling_list_copy_mode_flag[id] or scaling_list_pred_mode_flag[id] equals 1 and scaling_list_pred_id_delta[id] is greater than 0), ScalingMatrixPred is set to equal ScalingMatrixRec[refId], the following applies to ScalingMatrixDCPred:
[0422] —If refId is greater than 13, then ScalingMatrixDCPred is set to equal ScalingMatrixDCRec[refId-14].
[0423] —Otherwise (refId is less than or equal to 13), ScalingMatrixDCPred is set to equal ScalingMatrixPred[0][0].
[0424] The scaling_list_dc_coef[id-14] variable is used to derive the value of the variable ScalingMatrixDC[id-14] when id is greater than 13, as shown below:
[0425] ScalingMatrixDCRec[id-14]=(ScalingMatrixDCPred+
[0426] scaling_list_dc_coef[id-14])&255(109)
[0427] When it does not exist, the value of scaling_list_dc_coef[id-14] is inferred to be equal to 0. The value of scaling_list_dc_coef[id-14] should be in the range of -128 to 127, inclusive. The value of ScalingMatrixDCRec[id-14] should be greater than 0.
[0428] `scaling_list_delta_coef[id][i]` represents the difference between the current matrix coefficients `ScalingList[id][i]` and the previous matrix coefficients `ScalingList[id][i-1]`, when `scaling_list_copy_mode_flag[id]` equals 0. The value of `scaling_list_delta_coef[id][i]` should be in the range of -128 to 127, inclusive. When `scaling_list_copy_mode_flag[id]` equals 1, all elements of `ScalingList[id]` are set to 0.
[0429] The derivation of the array ScalingMatrixRec[id] of (matrixSize) x (matrixSize) is as follows:
[0430] ScalingMatrixRec[id][x][y]=(ScalingMatrixPred[x][y]+
[0431] ScalingList[id][k])&255(110)
[0432] with k=0..(matrixSize*matrixSize-1),
[0433] x =
[0434] DiagScanOrder[Log2(matrixSize)][Log2(matrixSize)][k][0],and
[0435] y =
[0436] DiagScanOrder[Log2(matrixSize)][Log2(matrixSize)][k][1]
[0437] The value of ScalingMatrixRec[id][x][y] should be greater than 0.
[0438] 3.3. PH Syntax and Semantics
[0439] In the latest VVC draft text, the PH syntax and semantics are as follows:
[0440]
[0441] PH RBSP contains PH syntax structures, such as picture_header_structure().
[0442]
[0443]
[0444]
[0445]
[0446]
[0447] The PH syntax structure contains information common to all stripes of the encoded / decoded image associated with the PH syntax structure.
[0448] A value of 1 for `gdr_or_irap_pic_flag` indicates that the current image is either a GDR or IRAP image. A value of 0 for `gdr_or_irap_pic_flag` indicates that the current image may or may not be a GDR or IRAP image.
[0449] A `gdr_pic_flag` value of 1 indicates that the image associated with the PH is a GDR image. A `gdr_pic_flag` value of 0 indicates that the image associated with the PH is not a GDR image. When it does not exist, the value of `gdr_pic_flag` is inferred to be 0. When `gdr_enabled_flag` is 0, the value of `gdr_pic_flag` should be 0.
[0450] A value of 0 for ph_inter_slice_allowed_flag indicates that the slice_type of all codec slices in the image is 2. A value of ph_inter_slice_allowed_flag being 1 indicates that the image may or may not contain one or more codec slices with a slice_type of 0 or 1.
[0451] A value of 0 for `ph_intra_slice_allowed_flag` indicates that the slice_type of all codec slices in the image is either 0 or 1. A value of 1 for `ph_intra_slice_allowed_flag` indicates that the image may or may not contain one or more codec slices with a slice_type of 2. When none exist, the value of `ph_intra_slice_allowed_flag` is inferred to be 1.
[0452] Note 1—For bitstreams that assume Merge subpictures based on bitstreams without requiring changes to PH NAL units, the encoder should set the values of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag to 1.
[0453] A non_reference_picture_flag value of 1 indicates that a picture associated with a pH is never used as a reference picture. A non_reference_picture_flag value of 0 indicates whether a picture associated with a pH can or cannot be used as a reference picture.
[0454] ph_pic_parameter_set_id indicates the value of pps_pic_parameter_set_id that PPS is using. The value of ph_pic_parameter_set_id should be in the range of 0 to 63, inclusive.
[0455] For bitstream consistency requirements, the TemporalId value of PH should be greater than or equal to the TemporalId value of PPS whose pps_pic_parameter_set_id is equal to ph_pic_parameter_set_id.
[0456] `ph_pic_order_cnt_lsb` represents the image order count of the current image modulo `MaxPicOrderCntLsb`. The length of the `ph_pic_order_cnt_lsb` syntax element is `log2_max_pic_order_cnt_lsb_minus4+4` bits. The value of `ph_pic_order_cnt_lsb` should be in the range of 0 to `MaxPicOrderCntLsb-1`, inclusive.
[0457] The `no_output_of_prior_pics_flag` flag affects the output of previously decoded images in the DPB after CLVSS image decoding, provided that the image is not the first image in the bitstream represented in Appendix C.
[0458] `recovery_poc_cnt` represents the recovery point of the decoded images in the output order. If the current image is a GDR image associated with the PH, and there exists an image `picA` in CLVS that follows the current GDR image in the decoding order, its `PicOrderCntVal` is equal to the `PicOrderCntVal` of the current GDR image plus the value of `recovery_poc_cnt`, and image `picA` is called the recovery point image. Otherwise, the first image in the output order whose `PicOrderCntVal` is greater than the current image's `PicOrderCntVal` plus the value of `recovery_poc_cnt` is called the recovery point image. The recovery point image should not precede the current GDR image in the decoding order. The value of `recovery_poc_cnt` should be in the range of 0 to `MaxPicOrderCntLsb-1`, inclusive.
[0459] When the current image is a GDR image, the derivation of the variable RpPicOrderCntVal is as follows:
[0460] RpPicOrderCntVal=PicOrderCntVal+recovery_poc_cnt (82)
[0461] Note 2—When gdr_enabled_flag equals 1 and the current image’s PicOrderCntVal is greater than or equal to the RpPicOrderCntVal associated with the GDR image, the current and subsequent decoded images are completely matched with the corresponding images generated by the start decoding process from the preceding IRAP image (if present, in the order of decoding before the associated GDR image) in the output order.
[0462] ph_extra_bit[i] can be equal to 1 or 0. Decoders conforming to this version of the specification should ignore the value of ph_extra_bit[i]. Its value does not affect the consistency of the decoder with the level represented in this version of the specification.
[0463] A value of 1 for `ph_poc_msb_present_flag` indicates that the syntax element `poc_msb_val` exists in the PH (Physical Abstraction Layer). A value of 0 for `ph_poc_msb_present_flag` indicates that the syntax element `poc_msb_val` does not exist in the PH. When `vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]` is 0 and the current layer's referenced layer contains an image from the current AU (Active Artificial Image), the value of `ph_poc_msb_present_flag` should be 0.
[0464] poc_msb_val represents the POC MSB value of the current image. The length of the syntax element poc_msb_val is poc_msb_len_minus1+1 bits.
[0465] A value of 1 for `ph_alf_enabled_flag` indicates that the adaptive loop filter is enabled for all stripes associated with `PH`, and can be applied to the Y, Cb, or Cr color components within the stripes. A value of 0 for `ph_alf_enabled_flag` indicates that the adaptive loop filter can be disabled for one or more or all stripes associated with `PH`. When it does not exist, `ph_alf_enabled_flag` is inferred to be equal to 0.
[0466] ph_num_alf_aps_ids_luma represents the number of ALF APSs referenced by the stripe associated with PH.
[0467] ph_alf_aps_id_luma[i] represents the adaptation_parameter_set_id of the i-th ALFAPS referenced by the luminance component of the strip associated with PH.
[0468] The value of alf_luma_filter_signal_flag for an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be equal to 1.
[0469] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be less than or equal to the TemporalId of the image associated with the PH.
[0470] A value of 0 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is not applied to the Cb and Cr color components. A value of 1 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cb color component. A value of 2 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cr color component. A value of 3 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to both the Cb and Cr color components. When `ph_alf_chroma_idc` does not exist, it is inferred to be equal to 0.
[0471] ph_alf_aps_id_chroma represents the adaptation_parameter_set_id of the ALF APS referenced by the chromaticity component of the band associated with PH.
[0472] The value of alf_chroma_filter_signal_flag should be equal to 1 for an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma.
[0473] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma should be less than or equal to the TemporalId of the image associated with the PH.
[0474] A `ph_cc_alf_cb_enabled_flag` value of 1 indicates that a cross-component filter for the Cb color components is enabled for all stripes associated with `PH`, and can be applied to the Cb color components within the stripes. A `ph_cc_alf_cb_enabled_flag` value of 0 indicates that a cross-component filter for the Cb color components can be disabled for one or more or all stripes associated with `PH`. When it does not exist, `ph_cc_alf_cb_enabled_flag` is inferred to be equal to 0.
[0475] ph_cc_alf_cb_aps_id represents the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the strip associated with PH.
[0476] The value of alf_cc_cb_filter_signal_flag should be equal to 1 for an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id.
[0477] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the image associated with the PH.
[0478] A value of 1 for `ph_cc_alf_cr_enabled_flag` indicates that a cross-component filter for the Cr color component is enabled for all stripes associated with `PH`, and this filter can be applied to the Cr color component within the stripes. A value of 0 for `ph_cc_alf_cr_enabled_flag` indicates that a cross-component filter for the Cr color component can be disabled for one or more or all stripes associated with `PH`. When `ph_cc_alf_cr_enabled_flag` does not exist, it is inferred to be equal to 0.
[0479] ph_cc_alf_cr_aps_id represents the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the strip associated with PH.
[0480] The value of alf_cc_cr_filter_signal_flag should be equal to 1 for an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id.
[0481] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id should be less than or equal to the TemporalId of the image associated with the PH.
[0482] A value of 1 for `ph_lmcs_enabled_flag` indicates that luma mapping and chroma scaling are enabled for all stripes associated with `PH`. A value of 0 for `ph_lmcs_enabled_flag` indicates that luma mapping and chroma scaling can be disabled for one or more or all stripes associated with `PH`. If `ph_lmcs_enabled_flag` does not exist, its value is assumed to be 0.
[0483] ph_lmcs_aps_id represents the adaptation_parameter_set_id of the LMCS APS referenced by the stripe associated with the PH. The TemporalId of an APS NAL cell with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id should be less than or equal to the TemporalId of the image associated with the PH.
[0484] A ph_chroma_residual_scale_flag value of 1 indicates that chroma residual scaling is enabled for all stripes associated with PH. A ph_chroma_residual_scale_flag value of 0 indicates that chroma residual scaling can be disabled for one or more or all stripes associated with PH. When ph_chroma_residual_scale_flag does not exist, it is inferred to be equal to 0.
[0485] A value of 1 for `ph_scaling_list_present_flag` indicates that the scaling list data used for the stripes associated with the PH is derived based on the scaling list data contained in the scaling list APS. A value of 0 for `ph_scaling_list_present_flag` indicates that the scaling list data used for the stripes associated with the PH is set to 16. When it does not exist, the value of `ph_scaling_list_present_flag` is inferred to be 0.
[0486] `ph_scaling_list_aps_id` represents the `adaptation_parameter_set_id` of the scaling list APS. The `TemporalId` of an APS NAL cell with `aps_params_type` equal to `SCALING_APS` and `adaptation_parameter_set_id` equal to `ph_scaling_list_aps_id` should be less than or equal to the `TemporalId` of the image associated with the `PH`.
[0487] A value of 1 for `ph_virtual_boundaries_present_flag` indicates that virtual boundary information is signaled in the PH (Physical Imagery). A value of 0 for `ph_virtual_boundaries_present_flag` indicates that virtual boundary information is not signaled in the PH. When one or more virtual boundaries are signaled in the PH, loop filtering operations are disabled across virtual boundaries in the image. Loop filtering operations include deblocking filtering, sample adaptive offset filtering, and adaptive loop filtering. When these operations are not present, the value of `ph_virtual_boundaries_present_flag` is inferred to be 0.
[0488] For bitstream consistency requirements, when subpic_info_present_flag equals 1, the value of ph_virtual_boundaries_present_flag should be equal to 0.
[0489] The derivation of the variable VirtualBoundariesPresentFlag is as follows:
[0490]
[0491] ph_num_ver_virtual_boundaries represents the number of ph_virtual_boundaries_pos_x[i] syntax elements present in PH. When ph_num_ver_virtual_boundaries does not exist, it is inferred to be equal to 0.
[0492] The derivation of the variable NumVerVirtualBoundaries is as follows:
[0493]
[0494]
[0495] ph_virtual_boundaries_pos_x[i] represents the position of the i-th vertical virtual boundary in units of luminance samples divided by 8. The value of ph_virtual_boundaries_pos_x[i] should be in the range of 1 to Ceil(pic_width_in_luma_samples÷8)-1, inclusive.
[0496] The list VirtualBoundariesPosX[i] (where i ranges from 0 to NumVerVirtualBoundaries-1, inclusive) represents the position of the vertical virtual boundary in units of luminance samples, and is derived as follows:
[0497]
[0498] The distance between any two vertical virtual boundaries should be greater than or equal to the CtbSizeY brightness sample.
[0499] ph_num_hor_virtual_boundaries represents the number of ph_virtual_boundaries_pos_y[i] syntax elements present in PH. When ph_num_hor_virtual_boundaries does not exist, it is inferred to be equal to 0.
[0500] The derivation of the parameter NumHorVirtualBoundaries is as follows:
[0501]
[0502] When sps_virtual_boundaries_enabled_flag equals 1 and ph_virtual_boundaries_present_flag equals 1, the sum of ph_num_ver_virtual_boundaries and ph_num_hor_virtual_boundaries should be greater than 0.
[0503] ph_virtual_boundaries_pos_y[i] represents the position of the i-th horizontal virtual boundary in units of luminance samples divided by 8. The value of ph_virtual_boundaries_pos_y[i] should be in the range of 1 to Ceil(pic_height_in_luma_samples÷8)-1, inclusive.
[0504] The list VirtualBoundariesPosY[i] (where i ranges from 0 to NumHorVirtualBoundaries-1, inclusive) represents the position of the horizontal virtual boundary in units of luminance samples, and is derived as follows:
[0505]
[0506] The distance between any two horizontal virtual boundaries should be greater than or equal to the CtbSizeY luminance sample.
[0507] The `pic_output_flag` affects the decoded image output and removal process specified in Appendix C. When `pic_output_flag` is not present, it is inferred to be equal to 1.
[0508] A partition_constraints_override_flag value of 1 indicates that partition constraint parameters exist in the partition property (PH). A partition_constraints_override_flag value of 0 indicates that partition constraint parameters do not exist in the PH. When no partition constraint parameters exist, the value of partition_constraints_override_flag is inferred to be 0.
[0509] `ph_log2_diff_min_qt_min_cb_intra_slice_luma` represents the base-2 logarithm of the smallest size of the luminance samples in the luminance leaf blocks generated by the quadtree partitioning of the CTU, and the base-2 logarithm of the smallest decoded block size of the luminance samples in the luminance CUs of the slices associated with `ph_log2_diff_min_qt_min_cb_intra_slice_luma` in slices with `slice_type` equal to 2(I). The value of `ph_log2_diff_min_qt_min_cb_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY - MinCbLog2SizeY`, inclusive. When it does not exist, the value of `ph_log2_diff_min_qt_min_cb_luma` is inferred to be equal to `sps_log2_diff_min_qt_min_cb_intra_slice_luma`.
[0510] `ph_max_mtt_hierarchy_depth_intra_slice_luma` represents the maximum hierarchical depth of a codec unit, which is generated by a multi-type tree partitioning of quadtree leaves in a slice with a slice_type of 2(I) associated with `PH`. The value of `ph_max_mtt_hierarchy_depth_intra_slice_luma` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When it does not exist, the value of `ph_max_mtt_hierarchy_depth_intra_slice_luma` is inferred to be equal to `sps_max_mtt_hierarchy_depth_intra_slice_luma`.
[0511] `ph_log2_diff_max_bt_min_qt_intra_slice_luma` represents the base-2 logarithm of the maximum size (width or height) of the luminance samples in a luminance codec block that can be partitioned using binary partitioning, and the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partitioning of the CTU in a stripe with a slice_type equal to 2(I) associated with PH. The value of `ph_log2_diff_max_bt_min_qt_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY - MinQtLog2SizeIntraY`, inclusive. When it does not exist, the value of `ph_log2_diff_max_bt_min_qt_intra_slice_luma` is inferred to be equal to `sps_log2_diff_max_bt_min_qt_intra_slice_luma`.
[0512] `ph_log2_diff_max_tt_min_qt_intra_slice_luma` represents the base-2 logarithm of the maximum size (width or height) of the luminance samples in a luminance codec block that can be partitioned using ternary partitioning, and the difference between the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partitioning of a CTU in a stripe with a slice_type equal to 2(I) associated with PH. The value of `ph_log2_diff_max_tt_min_qt_intra_slice_luma` should be in the range of 0 to `CtbLog2SizeY - MinQtLog2SizeIntraY`, inclusive. When it does not exist, the value of `ph_log2_diff_max_tt_min_qt_intra_slice_luma` is inferred to be equal to `sps_log2_diff_max_tt_min_qt_intra_slice_luma`.
[0513] `ph_log2_diff_min_qt_min_cb_intra_slice_chroma` represents the base-2 logarithm of the smallest size of the luminance samples in the chrominance leaf blocks generated by quadtree partitioning of chrominance CTUs with a treeType equal to `DUAL_TREE_CHROMA`, and the base-2 logarithm of the smallest decoder block size in the luminance samples of chrominance CTUs with a treeType equal to `DUAL_TREE_CHROMA` in the slices associated with `ph_log2_diff_min_qt_min_cb_intra_slice_chroma`. The value of `ph_log2_diff_min_qt_min_cb_intra_slice_chroma` should be in the range of 0 to `CtbLog2SizeY - MinCbLog2SizeY`, inclusive. When it does not exist, the value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to sps_log2_diff_min_qt_min_cb_intra_slice_chroma.
[0514] `ph_max_mtt_hierarchy_depth_intra_slice_chroma` represents the maximum hierarchical depth of a chroma codec unit, which is generated by multi-type tree partitioning of chroma quadtree leaves with `treeType` equal to `DUAL_TREE_CHROMA` in a slice with `slice_type` equal to 2(I) associated with `PH`. The value of `ph_max_mtt_hierarchy_depth_intra_slice_chroma` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When it does not exist, the value of `ph_max_mtt_hierarchy_depth_intra_slice_chroma` is inferred to be equal to `sps_max_mtt_hierarchy_depth_intra_slice_chroma`.
[0515] `ph_log2_diff_max_bt_min_qt_intra_slice_chroma` represents the base-2 logarithm of the maximum size (width or height) of the luminance samples in a chroma codec block that can be partitioned using binary partitioning, and the minimum size (width or height) of the luminance samples in a chroma leaf block generated by quadtree splitting of a chroma CTU with `treeType` equal to `DUAL_TREE_CHROMA` from a slice with `slice_type` equal to 2(I) associated with `PH`. The value of `ph_log2_diff_max_bt_min_qt_intra_slice_chroma` should be in the range of 0 to `CtbLog2SizeY - MinQtLog2SizeIntraC`, inclusive. When it does not exist, the value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_bt_min_qt_intra_slice_chroma.
[0516] `ph_log2_diff_max_tt_min_qt_intra_slice_chroma` represents the base-2 logarithm of the maximum size (width or height) of the luminance samples in a chroma codec block that can be partitioned using ternary partitioning, and the minimum size (width or height) of the luminance samples in a chroma leaf block resulting from a quadtree partition of a chroma CTU with `treeType` equal to `DUAL_TREE_CHROMA` in a stripe with `slice_type` equal to 2(I) associated with `PH`. The value of `ph_log2_diff_max_tt_min_qt_intra_slice_chroma` should be in the range of 0 to `CtbLog2SizeY - MinQtLog2SizeIntraC`, inclusive. When it does not exist, the value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_chroma.
[0517] `ph_cu_qp_delta_subdiv_intra_slice` represents the maximum `cbSubdiv` value of the in-slice codec unit that transmits `cu_qp_delta_abs` and `cu_qp_delta_sign_flag`. The value of `ph_cu_qp_delta_subdiv_intra_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.
[0518] If it does not exist, then it is inferred that the value of ph_cu_qp_delta_subdiv_intra_slice is equal to 0.
[0519] `ph_cu_chroma_qp_offset_subdiv_intra_slice` represents the maximum `cbSubdiv` value of the in-slice codec unit that transmits `cu_chroma_qp_offset_flag`. The value of `ph_cu_chroma_qp_offset_subdiv_intra_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeIntraY+ph_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.
[0520] If it does not exist, then it is inferred that the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is equal to 0.
[0521] `ph_log2_diff_min_qt_min_cb_inter_slice` represents the base-2 logarithm of the minimum size of the luminance samples in the luminance leaf blocks generated by the quadtree partitioning of the CTU, and the base-2 logarithm of the minimum luminance codec block size of the luminance samples in the luminance CUs of the strips with a slice_type equal to 0 (B) or 1 (P) associated with PH. The value of `ph_log2_diff_min_qt_min_cb_inter_slice` should be in the range of 0 to `CtbLog2SizeY - MinCbLog2SizeY`, inclusive. If it does not exist, it is inferred that the value of `ph_log2_diff_min_qt_min_cb_luma` is equal to `sps_log2_diff_min_qt_min_cb_inter_slice`.
[0522] `ph_max_mtt_hierarchy_depth_inter_slice` represents the maximum hierarchical depth of a coding unit, which is generated by multi-type tree partitioning of quadtree leaves in a stripe with a slice_type of 0 (B) or 1 (P) associated with `PH`. The value of `ph_max_mtt_hierarchy_depth_inter_slice` should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When it does not exist, the value of `ph_max_mtt_hierarchy_depth_inter_slice` is inferred to be equal to `sps_max_mtt_hierarchy_depth_inter_slice`.
[0523] `ph_log2_diff_max_bt_min_qt_inter_slice` represents the base-2 logarithm of the maximum size (width or height) of the luminance samples in a luminance codec block that can be partitioned using binary partitioning, and the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partitioning of the CTU in a stripe with a slice_type of 0 (B) or 1 (P) associated with PH. The value of `ph_log2_diff_max_bt_min_qt_inter_slice` should be in the range of 0 to `CtbLog2SizeY - MinQtLog2SizeInterY`, inclusive. When it does not exist, the value of `ph_log2_diff_max_bt_min_qt_inter_slice` is inferred to be equal to `sps_log2_diff_max_bt_min_qt_inter_slice`.
[0524] `ph_log2_diff_max_tt_min_qt_inter_slice` represents the base-2 logarithm of the maximum size (width or height) of the luminance samples in a luminance codec block that can be divided using ternary partitioning, and the minimum size (width or height) of the luminance samples in a luminance leaf block resulting from a quadtree partitioning of the CTU in a stripe with a slice_type of 0 (B) or 1 (P) associated with `PH`. The value of `ph_log2_diff_max_tt_min_qt_inter_slice` should be in the range of 0 to `CtbLog2SizeY - MinQtLog2SizeInterY`, inclusive. When it does not exist, the value of `ph_log2_diff_max_tt_min_qt_inter_slice` is inferred to be equal to `sps_log2_diff_max_tt_min_qt_inter_slice`.
[0525] `ph_cu_qp_delta_subdiv_inter_slice` represents the maximum `cbSubdiv` value of the in-slice codec unit transmitting `cu_qp_delta_abs` and `cu_qp_delta_sign_flag`. The value of `ph_cu_qp_delta_subdiv_inter_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeInterY+ph_max_mtt_hierarchy_depth_inter_slice), inclusive.
[0526] If it does not exist, then the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be 0.
[0527] `ph_cu_chroma_qp_offset_subdiv_inter_slice` represents the maximum `cbSubdiv` value of the in-slice codec unit that transmits `cu_chroma_qp_offset_flag`. The value of `ph_cu_chroma_qp_offset_subdiv_inter_slice` should be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeInterY+ph_max_mtt_hierarchy_depth_inter_slice), inclusive.
[0528] If it does not exist, then it is inferred that the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is equal to 0.
[0529] `ph_temporal_mvp_enabled_flag` indicates whether the temporal motion vector predictor can be used for inter-frame prediction of the slice associated with the PH. If `ph_temporal_mvp_enabled_flag` equals 0, the syntax elements of the slice associated with the PH should be constrained so that the temporal motion vector predictor is not used in the decoding of the slice. Otherwise (if `ph_temporal_mvp_enabled_flag` equals 1), the temporal motion vector predictor can be used to decode the slice associated with the PH. When it does not exist, the value of `ph_temporal_mvp_enabled_flag` is inferred to be equal to 0. The value of `ph_temporal_mvp_enabled_flag` should be equal to 0 when there is no reference image in the DPB with the same spatial resolution as the current image.
[0530] The derivation of the maximum number of Merge MVP candidates based on sub-blocks, MaxNumSubblockMergeCand, is as follows:
[0531]
[0532] The value of MaxNumSubblockMergeCand should be in the range of 0 to 5, including the end value.
[0533] A value of ph_collocated_from_l0_flag equal to 1 indicates that the juxtaposed reference image for temporal motion vector prediction is derived from reference image list 0. A value of ph_collocated_from_l0_flag equal to 0 indicates that the juxtaposed reference image for temporal motion vector prediction is derived from reference image list 1.
[0534] ph_collocated_ref_idx represents the reference index of the juxtaposed image used for temporal motion vector prediction.
[0535] When ph_collocated_from_l0_flag equals 1, ph_collocated_ref_idx refers to the entry in reference image list 0. The value of ph_collocated_ref_idx should be in the range of 0 to num_ref_entries[0][RplsIdx[0]]-1, including end values.
[0536] When ph_collocated_from_l0_flag equals 0, ph_collocated_ref_idx refers to the entry in reference image list 1. The value of ph_collocated_ref_idx should be in the range of 0 to num_ref_entries[1][RplsIdx[1]]-1, including end values.
[0537] If it does not exist, then it is inferred that the value of ph_collocated_ref_idx is equal to 0.
[0538] A `mvd_l1_zero_flag` value of 1 indicates that the `mvd_coding(x0,y0,1)` syntax structure is not parsed, and `MvdL1[x0][y0][compIdx]` and `MvdCpL1[x0][y0][cpIdx][compIdx]` are set to 0, where `compIdx` = 0..1 and `cpIdx` = 0..2. A `mvd_l1_zero_flag` value of 0 indicates that the `mvd_coding(x0,y0,1)` syntax structure is parsed.
[0539] A value of 1 for `ph_fpel_mmvd_enabled_flag` indicates that the merge mode with motion vector difference uses integer sample precision in the strips associated with the PH. A value of 0 for `ph_fpel_mmvd_enabled_flag` indicates that the merge mode with motion vector difference can use fractional sample precision in the strips associated with the PH. When it does not exist, the value of `ph_fpel_mmvd_enabled_flag` is inferred to be 0.
[0540] A value of 1 for ph_disable_bdof_flag indicates that inter-frame bidirectional prediction based on bidirectional optical flow is disabled in the stripe associated with PH. A value of 0 for ph_disable_bdof_flag indicates that inter-frame bidirectional prediction based on bidirectional optical flow can be enabled or disabled in the stripe associated with PH.
[0541] The following applies when ph_disable_bdof_flag is not present:
[0542] —If sps_bdof_enabled_flag equals 1, then it is inferred that the value of ph_disable_bdof_flag is equal to 0.
[0543] —Otherwise (sps_bdof_enabled_flag equals 0), it is inferred that the value of ph_disable_bdof_flag is equal to 1.
[0544] A value of 1 for ph_disable_dmvr_flag indicates that inter-frame bidirectional prediction based on decoder motion vector refinement is disabled in the slice associated with the PH. A value of 0 for ph_disable_dmvr_flag indicates that inter-frame bidirectional prediction based on decoder motion vector refinement can be enabled or disabled in the slice associated with the PH.
[0545] The following applies when ph_disable_dmvr_flag is not present:
[0546] —If sps_dmvr_enabled_flag equals 1, then it is inferred that the value of ph_disable_dmvr_flag is equal to 0.
[0547] —Otherwise (sps_dmvr_enabled_flag equals 0), it is inferred that the value of ph_disable_dmvr_flag is equal to 1.
[0548] A value of 1 for ph_disable_prof_flag indicates that optical flow prediction refinement is disabled in the strips associated with PH. A value of 0 for ph_disable_prof_flag indicates that optical flow prediction refinement may or may not be enabled in the strips associated with PH.
[0549] The following applies when ph_disable_prof_flag is not present:
[0550] —If sps_affine_prof_enabled_flag equals 1, then it is inferred that the value of ph_disable_prof_flag is equal to 0.
[0551] —Otherwise (sps_affine_prof_enabled_flag equals 0), it is inferred that the value of ph_disable_prof_flag is equal to 1.
[0552] ph_qp_delta represents the Qp to be used for the encoding / decoding blocks in the image. Y The initial value remains unchanged until it is modified by the value of CuQpDeltaVal in the codec unit layer.
[0553] When qp_delta_info_in_ph_flag equals 1, the Qp of all bands in the image Y Initial value of quantization parameter SliceQp Y The derivation is as follows:
[0554] SliceQp Y =26+init_qp_minus26+ph_qp_delta (89)
[0555] SliceQp Y The value should be in the range of -QpBdOffset to +63, inclusive.
[0556] `ph_joint_cbcr_sign_flag` indicates whether the juxtaposed residual samples in the two chromaticity components have inverted signs in the transform unit where `tu_joint_cbcr_residual_flag[x0][y0]` equals 1. When `tu_joint_cbcr_residual_flag[x0][y0]` equals 1, `ph_joint_cbcr_sign_flag` equals 0, indicating that the sign of each residual sample in the Cr (or Cb) component is the same as the sign of the juxtaposed Cb (or Cr) residual sample; `ph_joint_cbcr_sign_flag` equals 1, indicating that the sign of each residual sample in the Cr (or Cb) component is given by the inverted sign of the juxtaposed Cb (or Cr) residual sample.
[0557] A value of 1 for ph_sao_luma_enabled_flag indicates that SAO is enabled for the luminance components in all stripes associated with PH; a value of 0 for ph_sao_luma_enabled_flag indicates that SAO can be disabled for the luminance components in one or more or all stripes associated with PH. When ph_sao_luma_enabled_flag does not exist, it is inferred to be equal to 0.
[0558] A value of 1 for ph_sao_chroma_enabled_flag indicates that SAO is enabled for the chroma components in all stripes associated with PH; a value of 0 for ph_sao_chroma_enabled_flag indicates that SAO can be disabled for the chroma components of one or more or all stripes associated with PH. When ph_sao_chroma_enabled_flag does not exist, it is inferred to be equal to 0.
[0559] A value of 0 for `ph_dep_quant_enabled_flag` indicates that dependency quantization is disabled for the current image. A value of 1 for `ph_dep_quant_enabled_flag` indicates that dependency quantization is enabled for the current image. When `ph_dep_quant_enabled_flag` does not exist, it is inferred to be equal to 0.
[0560] A value of 0 for `pic_sign_data_hiding_enabled_flag` indicates that symbol bit hiding is disabled for the current image. A value of 1 for `pic_sign_data_hiding_enabled_flag` indicates that symbol bit hiding is enabled for the current image. When `pic_sign_data_hiding_enabled_flag` does not exist, it is inferred to be equal to 0.
[0561] A value of 1 for `ph_deblocking_filter_override_flag` indicates that a deblocking parameter exists in `PH`. A value of 0 for `ph_deblocking_filter_override_flag` indicates that a deblocking parameter does not exist in `PH`. If it does not exist, then the value of `ph_deblocking_filter_override_flag` is assumed to be 0.
[0562] A value of 1 for `ph_deblocking_filter_disabled_flag` indicates that the deblocking filter operation is not applied to the stripes associated with `PH`. A value of 0 for `ph_deblocking_filter_disabled_flag` indicates that the deblocking filter operation is applied to the stripes associated with `PH`. When `ph_deblocking_filter_disabled_flag` does not exist, it is inferred to be equal to `pps_deblocking_filter_disabled_flag`.
[0563] `ph_beta_offset_div2` and `ph_tc_offset_div2` represent the deblocking parameter offsets applied to the luminance components of the strip associated with `PH`, specifically the β and tC (divided by 2). The values of `ph_beta_offset_div2` and `ph_tc_offset_div2` should both be in the range of -12 to 12, inclusive. When not present, the values of `ph_beta_offset_div2` and `ph_tc_offset_div2` are inferred to be equal to `pps_beta_offset_div2` and `pps_tc_offset_div2`, respectively.
[0564] `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2` represent the deblocking parameter offsets applied to the Cb components of the PH-related stripes for β and tC (divided by 2). The values of `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2` should both be in the range of -12 to 12, inclusive. When not present, the values of `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2` are inferred to be equal to `pps_cb_beta_offset_div2` and `pps_cb_tc_offset_div2`, respectively.
[0565] `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2` represent the deblocking parameter offsets applied to the β and tC (divided by 2) of the Cr component of the strip associated with PH. The values of `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2` should both be in the range of -12 to 12, inclusive. When not present, the values of `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2` are inferred to be equal to `pps_cr_beta_offset_div2` and `pps_cr_tc_offset_div2`, respectively.
[0566] `ph_extension_length` represents the length of the PH extension data in bytes, excluding the bits used for signaling the `ph_extension_length` itself. The value of `ph_extension_length` should be in the range of 0 to 256, inclusive. If it does not exist, the value of `ph_extension_length` is assumed to be 0.
[0567] `ph_extension_data_byte` can have any value. Decoders conforming to this version of the specification should ignore the value of `ph_extension_data_byte`. Its value does not affect the consistency of the decoder with the level represented in this version of the specification.
[0568] 3.4.SH Syntax and Semantics
[0569] In the latest VVC draft text, the SH syntax and semantics are as follows:
[0570]
[0571]
[0572]
[0573]
[0574] The variable CuQpDeltaVal, representing the difference between the luminance quantization parameter of the codec unit containing cu_qp_delta_abs and its prediction, is set to 0. The variable CuQpOffset... Cb CuQpOffset Cr and CuQpOffset CbCr This indicates that the quantization parameter Qp' of the codec unit containing cu_chroma_qp_offset_flag is determined. Cb Qp' Cr and Qp' CbCr When using any of the values, the value to be used is set to 0.
[0575] A picture_header_in_slice_header_flag value of 1 indicates that the PH syntax structure exists in the strip header. A picture_header_in_slice_header_flag value of 0 indicates that the PH syntax structure does not exist in the strip header.
[0576] Bitstream consistency requires that the value of picture_header_in_slice_header_flag be the same in all codec slices in CLVS.
[0577] When the picture_header_in_slice_header_flag of the codec slice is equal to 1, the bitstream consistency requirement is that there should be no VCL NAL unit in CLVS with nal_unit_type equal to PH_NUT.
[0578] When picture_header_in_slice_header_flag equals 0, all codec stripes in the current image should have picture_header_in_slice_header_flag equal to 0, and the current PU should have PH NAL units.
[0579] `slice_subpic_id` represents the subpick ID containing the slice. If `slice_subpic_id` exists, the value of the variable `CurrSubpicIdx` is deduced to make `SubpicIdVal[CurrSubpicIdx]` equal to `slice_subpic_id`. Otherwise (if `slice_subpic_id` does not exist), `CurrSubpicIdx` is deduced to be 0. The length of `slice_subpic_id` is `sps_subpic_id_len_minus1+1` bits.
[0580] `slice_address` represents the slice address. If it doesn't exist, the value of `slice_address` is assumed to be 0. The value of `slice_address` is assumed to be 0 when `rect_slice_flag` is 1 and `NumSlicesInSubpic[CurrSubpicIdx]` is 1.
[0581] If rect_slice_flag equals 0, then the following applies:
[0582] —The stripe address is the raster scan chip index.
[0583] The length of the slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0584] The value of `--slice_address` should be in the range of 0 to `NumTilesInPic-1`, including the end value.
[0585] Otherwise (rect_slice_flag equals 1), the following applies:
[0586] —A stripe address is a sub-image level stripe index.
[0587] The length of the slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.
[0588] The value of `--slice_address` should be in the range of 0 to `NumSlicesInSubpic[CurrSubpicIdx]-1`, inclusive.
[0589] The following constraints apply to bitstream consistency requirements:
[0590] —If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, then the value of slice_address should not be equal to the value of slice_address of any other codec strip NAL unit of the same codec image.
[0591] —Otherwise, the values of a pair of slice_subpic_id and slice_address should not be equal to the values of a pair of slice_subpic_id and slice_address for any other codec strip NAL unit of the same codec picture.
[0592] —The shape of the image strip should be such that, when each CTU is decoded, its entire left and entire top boundaries should consist of the image boundary or the boundaries of the previously decoded CTU(s).
[0593] sh_extra_bit[i] can be equal to 1 or 0. Decoders conforming to this version of the specification should ignore the value of sh_extra_bit[i]. Its value does not affect the consistency of the decoder with the level represented in this version of the specification.
[0594] Increment 1 by num_tiles_in_slice_minus1. If present, this indicates the number of slices in the strip. The value of num_tiles_in_slice_minus1 should be in the range of 0 to NumTilesInPic-1, inclusive.
[0595] The variable NumCtusInCurrSlice represents the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i], where i ranges from 0 to NumCtusInCurrSlice-1, including the endpoints, represents the raster scan address of the i-th CTU within the slice, as derived below:
[0596]
[0597]
[0598] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos are derived as follows:
[0599]
[0600] slice_type indicates the encoding / decoding type of the stripes according to Table 9.
[0601] Table 9 – Name Associations of Slice_Type
[0602] slice_type slice_type name 0 B slice 1 P(P slice) 2 I (I slice)
[0603] If it does not exist, then the value of slice_type is inferred to be 2.
[0604] When ph_intra_slice_allowed_flag equals 0, the value of slice_type should be 0 or 1. When nal_unit_type is in the range from IDR_W_RADL to CRA_NUT (inclusive) and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] equals 1, slice_type should be 2.
[0605] The variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC are derived as follows:
[0606] —If slice_type equals 2(I), the following applies:
[0607] MinQtLog2SizeY =
[0608] MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_luma (119)
[0609] MinQtLog2SizeC =
[0610] MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_chroma (120)
[0611] MaxBtSizeY=1<<
[0612] (MinQtLog2SizeY+ph_log2_diff_max_bt_min_qt_intra_slice_luma) (121)
[0613] MaxBtSizeC=1<<
[0614] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_intra_slice_chroma) (122)
[0615] MaxTtSizeY = 1 <<
[0616] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma) (123)
[0617] MaxTtSizeC = 1 <<
[0618] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma) (124)
[0619] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma (125)
[0620] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma (126)
[0621] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice (127)
[0622] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice(128)
[0623] — Otherwise (slice_type equals 0 (B) or 1 (P)), the following applies:
[0624] MinQtLog2SizeY =
[0625] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (129)
[0626] MinQtLog2SizeC =
[0627] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (130)
[0628] MaxBtSizeY = 1 <<
[0629] (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice) (131)
[0630] MaxBtSizeC = 1 <<
[0631] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice) (132)
[0632] MaxTtSizeY = 1 <<
[0633] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice) (133)
[0634] MaxTtSizeC = 1 <<
[0635] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_inter_slice) (134)
[0636] MaxMttDepthY = ph_max_mtt_hierarchy_depth_inter_slice (135)
[0637] MaxMttDepthC = ph_max_mtt_hierarchy_depth_inter_slice (136)
[0638] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (137)
[0639] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice(138)
[0640] — The following applies:
[0641] MinQtSizeY = 1 << MinQtLog2SizeY (139)
[0642] MinQtSizeC = 1 <MinQtLog2SizeC (140)
[0643] MinBtSizeY=1< <MinCbLog2SizeY (141)
[0644] MinTtSizeY=1< <MinCbLog2SizeY (142)
[0645] A slice_alf_enabled_flag value of 1 indicates that the adaptive loop filter is enabled and can be applied to the Y, Cb, or Cr color components in the slice. A slice_alf_enabled_flag value of 0 indicates that the adaptive loop filter is disabled for all color components in the slice. When it does not exist, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.
[0646] `slice_num_alf_aps_ids_luma` represents the number of ALF APSs referenced by the slice. When `slice_alf_enabled_flag` is equal to 1 and `slice_num_alf_aps_ids_luma` does not exist, it is inferred that the value of `slice_num_alf_aps_ids_luma` is equal to the value of `ph_num_alf_aps_ids_luma`.
[0647] `slice_alf_aps_id_luma[i]` represents the `adaptation_parameter_set_id` of the i-th ALF APS referenced by the luminance component of the slice. The `TemporalId` of an APS NAL unit with `aps_params_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_alf_aps_id_luma[i]` should be less than or equal to the `TemporalId` of the encoding / decoding slice NAL unit. When `slice_alf_enabled_flag` equals 1 and `slice_alf_aps_id_luma[i]` does not exist, it is inferred that the value of `slice_alf_aps_id_luma[i]` is equal to the value of `ph_alf_aps_id_luma[i]`.
[0648] The value of alf_luma_filter_signal_flag for an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be equal to 1.
[0649] A slice_alf_chroma_idc equal to 0 indicates that the adaptive loop filter is not applied to the Cb and Cr color components. A slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. A slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. A slice_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to both the Cb and Cr color components. When slice_alf_chroma_idc does not exist, it is inferred to be equal to ph_alf_chroma_idc.
[0650] `slice_alf_aps_id_chroma` represents the `adaptation_parameter_set_id` of the ALF APS referenced by the chroma components of the slice. The `TemporalId` of an APS NAL unit with `aps_params_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_alf_aps_id_chroma` should be less than or equal to the `TemporalId` of the codec slice NAL unit. When `slice_alf_enabled_flag` equals 1 and `slice_alf_aps_id_chroma` does not exist, it is inferred that the value of `slice_alf_aps_id_chroma` is equal to the value of `ph_alf_aps_id_chroma`.
[0651] The value of alf_chroma_filter_signal_flag should be equal to 1 for an APS NAL cell that has aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma.
[0652] A slice_cc_alf_cb_enabled_flag value of 0 indicates that the cross-component filter is not applied to the Cb color component. A slice_cc_alf_cb_enabled_flag value of 1 indicates that the cross-component filter is enabled and can be applied to the Cb color component. When slice_cc_alf_cb_enabled_flag does not exist, it is inferred to be equal to ph_cc_alf_cb_enabled_flag.
[0653] slice_cc_alf_cb_aps_id represents the adaptation_parameter_set_id referenced by the Cb color component of the strip.
[0654] The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the codec slice NAL unit. When slice_cc_alf_cb_enabled_flag equals 1 and slice_cc_alf_cb_aps_id does not exist, it is inferred that the value of slice_cc_alf_cb_aps_id is equal to the value of ph_cc_alf_cb_aps_id.
[0655] The value of alf_cc_cb_filter_signal_flag should be equal to 1 for an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id.
[0656] A slice_cc_alf_cr_enabled_flag value of 0 indicates that the cross-component filter is not applied to the Cr color component. A slice_cc_alf_cb_enabled_flag value of 1 indicates that the cross-component adaptive loop filter is enabled and can be applied to the Cr color component. When slice_cc_alf_cr_enabled_flag does not exist, it is inferred to be equal to ph_cc_alf_cr_enabled_flag.
[0657] `slice_cc_alf_cr_aps_id` represents the `adaptation_parameter_set_id` referenced by the Cr color component of the slice. The `TemporalId` of an APS NAL unit with `aps_params_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_cc_alf_cr_aps_id` should be less than or equal to the `TemporalId` of the codec slice NAL unit. When `slice_cc_alf_cr_enabled_flag` equals 1 and `slice_cc_alf_cr_aps_id` does not exist, it is inferred that the value of `slice_cc_alf_cr_aps_id` is equal to the value of `ph_cc_alf_cr_aps_id`.
[0658] The value of alf_cc_cr_filter_signal_flag should be equal to 1 for an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id.
[0659] `colour_plane_id` identifies the color plane associated with the current stripe when `separate_colour_plane_flag` is equal to 1. The value of `colour_plane_id` should be in the range of 0 to 2, inclusive. `colour_plane_id` values 0, 1, and 2 correspond to the Y, Cb, and Cr planes, respectively. The value 3 for `colour_plane_id` is reserved for future use by ITU-T|ISO / IEC.
[0660] Note 1—There is no correlation between the decoding processes of different color planes of an image.
[0661] A value of 1 for num_ref_idx_active_override_flag indicates that the syntax element num_ref_idx_active_minus1[0] exists in both P and B stripes, while the syntax element num_ref_idx_active_minus1[1] exists in the B strip. A value of 0 for num_ref_idx_active_override_flag indicates that neither num_ref_idx_active_minus1[0] nor num_ref_idx_active_minus1[1] exists. If neither exists, it is inferred that the value of num_ref_idx_active_override_flag is equal to 1.
[0662] num_ref_idx_active_minus1[i] is used to derive the variable NumRefIdxActive[i] as specified in Equation 143. The value of num_ref_idx_active_minus1[i] should be in the range of 0 to 14, inclusive.
[0663] For i equal to 0 or 1, when the current stripe is a B stripe, num_ref_idx_active_override_flag equals 1 and num_ref_idx_active_minus1[i] does not exist, then it is inferred that num_ref_idx_active_minus1[i] equals 0.
[0664] When the current stripe is a P stripe, num_ref_idx_active_override_flag is equal to 1 and num_ref_idx_active_minus1[0] does not exist, so it is inferred that num_ref_idx_active_minus1[0] is equal to 0.
[0665] The derivation of the variable NumRefIdxActive[i] is as follows:
[0666]
[0667] The value of NumRefIdxActive[i]-1 represents the maximum reference index of the reference image list i that can be used to decode the strip. When the value of NumRefIdxActive[i] is equal to 0, the reference index of the reference image list i can be used to decode the strip.
[0668] When the current stripe is a P stripe, the value of NumRefIdxActive[0] should be greater than 0.
[0669] When the current stripe is a B stripe, both NumRefIdxActive[0] and NumRefIdxActive[1] should be greater than 0.
[0670] `cabac_init_flag` represents the method used to determine the initialization table during context variable initialization. When `cabac_init_flag` does not exist, it is inferred to be equal to 0.
[0671] A slice_collocated_from_l0_flag value of 1 indicates that the juxtaposed images used for temporal motion vector prediction are from reference image list 0. A slice_collocated_from_l0_flag value of 0 indicates that the juxtaposed images used for temporal motion vector prediction are from reference image list 1.
[0672] When slice_type equals B or P, ph_temporal_mvp_enabled_flag equals 1, and slice_collocated_from_l0_flag does not exist, the following applies:
[0673] —If rpl_info_in_ph_flag is equal to 1, then slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag.
[0674] —Otherwise (rpl_info_in_ph_flag equals 0, slice_type equals P), it is inferred that the value of slice_collocated_from_l0_flag is equal to 1.
[0675] slice_collocated_ref_idx represents the reference index of the juxtaposed images used for temporal motion vector prediction.
[0676] When slice_type equals P or slice_type equals B and slice_collocated_from_l0_flag equals 1, slice_collocated_ref_idx refers to the entry in reference image list 0, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[0]-1, inclusive.
[0677] When slice_type equals B and slice_collocated_from_l0_flag equals 0, slice_collocated_ref_idx refers to the entry in reference image list 1, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[1]-1, including 0 to NumRefIdxActive[1]-1.
[0678] The following applies when slice_collocated_ref_idx does not exist:
[0679] —If rpl_info_in_ph_flag equals 1, then it is inferred that the value of slice_collocated_ref_idx is equal to ph_collocated_ref_idx.
[0680] —Otherwise (rpl_info_in_ph_flag equals 0), it is inferred that the value of slice_collocated_ref_idx is equal to 0.
[0681] Bitstream consistency requires that for all slices of a encoded or decoded image, the image referenced by slice_collocated_ref_idx should be identical.
[0682] For bitstream consistency requirements, the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference image referenced by slice_collocated_ref_idx should be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the current image, respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] should be equal to 0.
[0683] slice_qp_delta represents the Qp used for encoding / decoding blocks in a slice. Y The initial value remains unchanged until it is modified by the value of CuQpDeltaVal in the codec unit layer.
[0684] When qp_delta_info_in_ph_flag equals 0, the Qp of the stripe Y Initial value of quantization parameter SliceQp Y The derivation is as follows:
[0685] SliceQp Y =26+init_qp_minus26+slice_qp_delta (144)
[0686] SliceQp Y The value should be in the range of -QpBdOffset to +63, inclusive.
[0687] When any of the following conditions are true:
[0688] The value of —wp_info_in_ph_flag is equal to 1, the value of pps_weighted_pred_flag is equal to 1, and the value of slice_type is equal to P.
[0689] The value of —wp_info_in_ph_flag is equal to 1, the value of pps_weighted_bipred_flag is equal to 1, and the value of slice_type is equal to B.
[0690] The following applies:
[0691] The value of —NumRefIdxActive[0] should be less than or equal to the value of NumWeightsL0.
[0692] —For each reference image index RefPicList[0][i], for i in the range of 0 to NumRefIdxActive[0]-1 (inclusive), the luminance weight, Cb weight and Cr weight applied to the reference image index are LumaWeightL0[i], ChromaWeightL0[0][i] and ChromaWeightL0[1][i], respectively.
[0693] When wp_info_in_ph_flag equals 1, pps_weighted_bipred_flag equals 1, and slice_type equals B, the following applies:
[0694] The value of —NumRefIdxActive[1] should be less than or equal to the value of NumWeightsL1.
[0695] —For each reference image index RefPicList[1][i], i is in the range of 0 to NumRefIdxActive[1]-1 (inclusive), and the luminance weight, Cb weight and Cr weight applied to the reference image index are LumaWeightL1[i], ChromaWeightL1[0][i] and ChromaWeightL1[1][i], respectively.
[0696] slice_cb_qp_offset indicates the setting of Qp' Cb The quantization parameter value is the difference between the quantization parameter value and the value of `pps_cb_qp_offset`. The value of `slice_cb_qp_offset` should be in the range of -12 to +12, inclusive. If `slice_cb_qp_offset` does not exist, it is inferred to be equal to 0. The sum of `pps_cb_qp_offset` and `slice_cb_qp_offset` should be in the range of -12 to +12, inclusive.
[0697] slice_cr_qp_offset indicates the setting of Qp' Cr The quantization parameter is the difference between the quantization parameter and the value of `pps_cr_qp_offset`. The value of `slice_cr_qp_offset` should be in the range of -12 to +12, inclusive. If `slice_cr_qp_offset` does not exist, it is inferred to be equal to 0. The sum of `pps_cr_qp_offset` and `slice_cr_qp_offset` should be in the range of -12 to +12, inclusive.
[0698] slice_joint_cbcr_qp_offset indicates the setting of Qp' CbCr The value of `slice_joint_cbcr_qp_offset_value` is the difference between the sum of `pps_joint_cbcr_qp_offset` and `pps_joint_cbcr_qp_offset`. The value of `slice_joint_cbcr_qp_offset` should be in the range of -12 to +12, inclusive. If `slice_joint_cbcr_qp_offset` does not exist, it is inferred to be equal to 0. The sum of `pps_joint_cbcr_qp_offset_value` and `slice_joint_cbcr_qp_offset` should be in the range of -12 to +12, inclusive.
[0699] A value of 1 for `cu_chroma_qp_offset_enabled_flag` indicates that `cu_chroma_qp_offset_flag` can appear in the transform unit and palette codec syntax. A value of 0 for `cu_chroma_qp_offset_enabled_flag` indicates that `cu_chroma_qp_offset_flag` does not exist in either the transform unit or the palette codec syntax. If it does not exist, then the value of `cu_chroma_qp_offset_enabled_flag` is assumed to be 0.
[0700] A slice_sao_luma_flag value of 1 indicates that SAO is enabled for the luminance component in the current slice; a slice_sao_luma_flag value of 0 indicates that SAO is disabled for the luminance component in the current slice. When slice_sao_luma_flag does not exist, it is inferred that it is equal to ph_sao_luma_enabled_flag.
[0701] A slice_sao_chroma_flag value of 1 indicates that SAO is enabled for the chroma components in the current slice; a slice_sao_chroma_flag value of 0 indicates that SAO is disabled for the chroma components in the current slice. If slice_sao_chroma_flag does not exist, it is inferred that it is equal to ph_sao_chroma_enabled_flag.
[0702] A slice_deblocking_filter_override_flag value of 1 indicates that the deblocking parameter exists in the slice header. A slice_deblocking_filter_override_flag value of 0 indicates that the deblocking parameter does not exist in the slice header. When it does not exist, it is inferred that the value of slice_deblocking_filter_override_flag is equal to ph_deblocking_filter_override_flag.
[0703] A slice_deblocking_filter_disabled_flag value of 1 indicates that the deblocking filter operation should not be applied to the current slice. A slice_deblocking_filter_disabled_flag value of 0 indicates that the deblocking filter operation should be applied to the current slice. When slice_deblocking_filter_disabled_flag does not exist, it is inferred that it is equal to ph_deblocking_filter_disabled_flag.
[0704] `slice_beta_offset_div2` and `slice_tc_offset_div2` represent the deblocking parameter offsets of β and tC (divided by 2) applied to the luminance component of the current slice. The values of both `slice_beta_offset_div2` and `slice_tc_offset_div2` should be in the range of -12 to 12, inclusive. When not present, the values of `slice_beta_offset_div2` and `slice_tc_offset_div2` are inferred to be equal to `ph_beta_offset_div2` and `ph_tc_offset_div2`, respectively.
[0705] `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` represent the deblocking parameter offsets of β and tC (divided by 2) applied to the Cb components of the current slice. The values of both `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` should be in the range of -12 to 12, inclusive. When not present, the values of `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` are inferred to be equal to `ph_cb_beta_offset_div2` and `ph_cb_tc_offset_div2`, respectively.
[0706] `slice_cb_beta_offset_div2` and `slice_cb_tc_offset_div2` represent the deblocking parameter offsets of β and tC (divided by 2) applied to the Cr component of the current slice. The values of `slice_cr_beta_offset_div2` and `slice_cr_tc_offset_div2` should both be in the range of -12 to 12, inclusive. When not present, the values of `slice_cr_beta_offset_div2` and `slice_cr_tc_offset_div2` are inferred to be equal to `ph_cr_beta_offset_div2` and `ph_cr_tc_offset_div2`, respectively.
[0707] A slice_ts_residual_coding_disabled_flag value of 1 indicates that the residual samples of the transform skip block in the current slice are parsed using the residual_coding() syntax structure. A slice_ts_residual_coding_disabled_flag value of 0 indicates that the residual_ts_coding() syntax structure is used to parse the residual samples of the transform skip block in the current slice. When slice_ts_residual_coding_disabled_flag does not exist, it is inferred to be equal to 0.
[0708] A slice_lmcs_enabled_flag value of 1 indicates that luma mapping and chroma scaling are enabled for the current slice. A slice_lmcs_enabled_flag value of 0 indicates that luma mapping and chroma scaling are not enabled for the current slice. When slice_lmcs_enabled_flag does not exist, it is inferred to be equal to 0.
[0709] A slice_scaling_list_present_flag value of 1 indicates that the scaling list data used for the current slice is inferred based on the scaling list data contained in a reference scaling list APS with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id. A slice_scaling_list_present_flag value of 0 indicates that the scaling list data used for the current image is the default scaling list data specified in Clause 7.4.3.21. When it does not exist, the value of slice_scaling_list_present_flag is inferred to be 0.
[0710] The variable NumEntryPoints represents the number of entry points in the current strip, and its derivation is as follows:
[0711]
[0712]
[0713] Increasing 1 to offset_len_minus1 indicates the length (in bits) of the entry_point_offset_minus1[i] syntax element. The value of offset_len_minus1 should be in the range of 0 to 31, inclusive.
[0714] The increment of 1 in `entry_point_offset_minus1[i]` represents the offset of the i-th entry point (in bytes), which is represented by `offset_len_minus1` plus 1 bit. The stripe data following the stripe header consists of NumEntryPoints+1 subsets, where the subset index values range from 0 to NumEntryPoints, including end values. The first byte of the stripe data is considered byte 0. When present, the anti-race byte appearing in the stripe data portion of the NAL unit of the codec stripe is counted as part of the stripe data for subset identification. Subset 0 consists of bytes 0 to `entry_point_offset_minus1[0]` (including end values) of the codec stripe data, and subset k (where k is in the range of 1 to NumEntryPoints-1, including end values) consists of bytes firstByte[k] to lastByte[k] (including end values) of the codec stripe data with firstByte[k] and lastByte[k], defined as:
[0715]
[0716] lastByte[k]=firstByte[k]+entry_point_offset_minus1[k] (147)
[0717] The last subset (where the subset index equals NumEntryPoints) consists of the remaining bytes of the encoded and decoded stripe data.
[0718] When sps_entropy_coding_sync_enabled_flag equals 0 and the stripe contains one or more complete slices, each subset should consist of all the code-decode bits of all CTUs in the stripe within the same slice, and the number of subsets (i.e., the value of NumEntryPoints+1) should be equal to the number of slices in the stripe.
[0719] When `sps_entropy_coding_sync_enabled_flag` equals 0 and the stripe contains a subset of CTU rows from a single slice, `NumEntryPoints` should be 0, and the number of subsets should be 1. This subset should consist of all the codec bits for all CTUs in the stripe.
[0720] When sps_entropy_coding_sync_enabled_flag equals 1, each subset k ranging from 0 to NumEntryPoints (inclusive) should consist of all the codec bits of all CTUs in the on-chip CTU lines, and the number of subsets (i.e., the value of NumEntryPoints+1) should be equal to the total number of CTU lines in a specific slice of the stripe.
[0721] `slice_header_extension_length` represents the length of the slice header extension data in bytes, excluding the bits used for signaling notifications within `slice_header_extension_length` itself. The value of `slice_header_extension_length` should be in the range of 0 to 256, inclusive. If it does not exist, the value of `slice_header_extension_length` is inferred to be 0.
[0722] The slice_header_extension_data_byte[i] can have any value. Decoders conforming to this version of the specification should ignore the values of all slice_header_extension_data_byte[i] syntax elements. Its value does not affect the consistency of the decoder with the level represented in this version of the specification.
[0723] 3.5. Chromaticity QP Mapping Table
[0724] In section 7.3.2.3 of JVET-Q2001-vC, SPS includes a structure called the Chromaticity QP table, as shown below:
[0725]
[0726]
[0727] They possess the following semantics and QP table derivation:
[0728] A value of 0 for `sps_joint_cbcr_enabled_flag` disables joint encoding and decoding of chroma residuals. A value of 1 for `sps_joint_cbcr_enabled_flag` enables joint encoding of chroma residuals. When `sps_joint_cbcr_enabled_flag` does not exist, its value is inferred to be 0.
[0729] A `same_qp_table_for_chroma` value of 1 indicates that, when `sps_joint_cbcr_enabled_flag` is 1, only one chroma QP mapping table is signaled, and this table applies to both Cb and Cr residuals, as well as the joint Cb-Cr residual. When `sps_joint_cbcr_enabled_flag` is 1, a `same_qp_table_for_chroma` value of 0 indicates that the chroma QP mapping table is signaled in SPS, with two tables for Cb and Cr and one for the joint Cb-Cr. When `same_qp_table_for_chroma` is not present in the bitstream, its value is inferred to be 1.
[0730] `qp_table_start_minus26[i]` plus 26 represents the starting luma and chroma QP used to describe the i-th chroma QP mapping table. The value of `qp_table_start_minus26[i]` should be in the range of -26 - QpBdOffset to 36 (inclusive). When `qp_table_start_minus26[i]` is not present in the bitstream, the value of `qp_table_start_min26[i]` is inferred to be equal to 0.
[0731] The increment of 1 in num_points_in_qp_table_minus1[i] indicates the number of points used to describe the i-th chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] should be in the range of 0 to 63+QpBdOffset (inclusive). When num_points_in_qp_table_minus1[0] does not exist in the bitstream, the value of num_points_in_qp_table_minws1[0] is inferred to be equal to 0.
[0732] delta_qp_in_val_minus1[i][j] represents the increment value of the input coordinates used to derive the pivot point of the i-th chroma QP mapping table. When delta_qp_in_val_minus1[0][j] does not exist in the bitstream, the value of delta_qp_in_val_min is inferred to be equal to 0.
[0733] delta_qp_diff_val[i][j] represents the incremental value of the output coordinates of the j-th pivot point used to derive the i-th chromaticity QP mapping table.
[0734] The derivation of the i-th chromaticity QP mapping table ChromaQpTable[i]-1 of i = 0..numQpTables is as follows:
[0735]
[0736] When same_qp_table_for_chroma equals 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set to equal ChromaQpTable[0][k], where k is in the range from -QpBdOffset to 63, inclusive.
[0737] For bitstream consistency requirements, the values of qpInVal[i][j] and qpOutVal[i][j] should be in the range of -QpBdOffset to 63, where i is in the range of 0 to numQpTables-1 (inclusive) and j is in the range of 0 to num_points_in_qp_table_minus1[i]+1 (inclusive).
[0738] In the above description, QpBdOffset is derived as follows:
[0739] bit_depth_minus8 represents the bit depth BitDepth of the samples in the luma and chroma arrays, and the value of the range offset QpBdOffset for the luma and chroma quantization parameters, as shown below:
[0740] BitDepth = 8 + bit_depth_minus8
[0741] QpBdOffset=6*bit_depth_minus8
[0742] bit_depth_minus8 should be in the range of 0 to 8 (inclusive).
[0743] 4. The technical problem solved by the disclosed technical solution
[0744] The existing designs for APS, deblocking, sub-images, and QP increments in the latest VVC draft specification have the following issues:
[0745] 1) Currently, the value of the APS syntax element scaling_list_chroma_present_flag is constrained based on ChromaArrayType derived from the SPS syntax elements chroma_format_idc and separate_colour_plane_flag, as follows: when ChromaArrayType equals 0, scaling_list_chroma_present_flag should equal 0; when ChromaArrayType is not equal to 0, scaling_list_chroma_present_flag should equal 1.
[0746] This constraint in the semantics of the APS syntax element introduces a semantic dependency of APS on SPS, which should not happen because there is no PPS ID or SPS ID in the APS syntax. APS may be applied to images (or stripes of images) that reference different SPSs, which may be associated with different values of ChromaArrayType.
[0747] a. In addition, similar APS-SPS semantic dependencies exist in the semantics of some ALF / CC-ALF APS syntax elements, as shown below: when ChromaArrayType equals 0, alf_chroma_filter_signal_flag, alf_CC_cb_filter_signal_flog, and alf_CC_cr_filter_signal_flag should be equal to 0.
[0748] b. Currently, when signaling is sent to the LMCS APS, regardless of whether ChromaArrayType is equal to 0 (i.e., there is no chroma component in CLVS), syntax elements related to chroma residual scaling are always signaled in the LMCS APS syntax structure. This results in unnecessary signaling for chroma-related syntax elements.
[0749] 2) It is claimed that the deblocking control mechanism in the latest VVC text is quite complex, unintuitive, and difficult to understand, thus prone to errors. Below are some example issues we have observed:
[0750] a. Based on the current text, even if the deblocking filter is disabled in PPS, it can still be enabled in PH or SH. For example, if PPS_deblocking_filter_disabled_flag is first signaled to be equal to 1, and deblocking_filter_override_enabled_flag is also signaled to be equal to 1, indicating that the deblocking filter is disabled in PPS, it also allows overriding the deblocking filter enable / disable control in PH or SH. Then, dbf_info_in_PH_flag is subsequently signaled, and the PH syntax element Ph_deblocking_filter_disabled_flag may be signaled to be equal to 0, which will ultimately enable the deblocking filter for the stripe associated with PH. In this case, deblocking is ultimately enabled under PH, regardless of whether it is disabled at a higher level (such as PPS). This design logic is unique in VVC text, which is very different from the design logic of other codec tools (such as ALF, SAO, LMCS, TMVP, WP, etc.). Usually, when a codec tool is disabled at a higher level (such as SPS, PPS), it is completely disabled at a lower level (such as PH, SH).
[0751] b. Furthermore, the current definition of pps_deblocking_filter_disabled_flag is similar to "pps_deblocking_filter_disabled_flag equal to 1 means that for slices of PPS that do not have slice_deblocking_filter_disabled_flag, no deblocking filter operation is applied...". However, according to the current syntax table, even if pps_deblocking_filter_disabled_flag equals 1 and slice_deblocking_filter_disabled_flag does not exist, the deblocking filter operation will still apply if ph_deblocging_filler_disabled_flag exists and the signaling indicates that ph_deblocging_filler_disabled_flag is equal to 0. Therefore, the current definition of pps_deblocking_filter_disabled_flag is incorrect.
[0752] c. Furthermore, according to the current text, if both the PPS syntax elements `deblocking_filter_override_enabled_flag` and `pps_deblocking_filter_disabled_flag` are equal to 1, it indicates that deblocking is disabled in PPS, and the control of the deblocking filter is intended to be overridden in PH or SH. However, the subsequent PH syntax elements `ph_deblocking_filter_override_flag` and `ph_debrocking_filter_disabled_flag` may still be signaled to be equal to 1, indicating that the resulting overriding process does not change anything (e.g., deblocking remains disabled in PH / SH), but only uses unnecessary bits for meaningless signaling notification.
[0753] d. Furthermore, according to the current text, when the SH syntax element slice_deblocking_filter_override_flag is absent, it is inferred to be equal to ph_deblocging_filler_overrid_flag. However, apart from implicit or explicit signaling notifications in PPS, according to dbf_info_in_PH_flag, deblocking parameters can only be signaled in PH or SH, but not simultaneously. Therefore, when dbf_info_in_ph_flag is true, the purpose is to allow signaling notifications in PH to override deblocking filter parameters. In this case, if the PH overriding flag is true, and the SH overriding flag is not signaled but is inferred to be equal to the PH overriding flag, additional deblocking filter parameters that conflict with the purpose will still be signaled in SH.
[0754] 3) Currently, when the PPS syntax element single_slice_per_subpic_flag does not exist, it is inferred to be equal to 0. single_slice_per_subpic_flag does not exist in the following two cases: i) no_pic_partition_flag equals 1, ii) no_pic_partition_flag equals 0, and rect_slice_flag equals 0.
[0755] In case i), `no_pic_partition_flag` equal to 1 indicates that image segmentation is not applied to each image referencing PPS. Therefore, there is only one stripe per image, and consequently, only one sub-image per image, and only one stripe per sub-image. Thus, in this case, it should be inferred that `single_slice_per_subpic_flag` equals 1.
[0756] For case ii), since rect_slice_flag is equal to 0, there is no need to infer the value of single_slice_per_subpic_flag.
[0757] 4) Currently, neither PH nor SH forces signaling notification of luminance QP increments at the picture level or stripe level. However, stripe-level chroma QP offsets are selectively signaled in SH. This design is somewhat inconsistent.
[0758] a. Furthermore, the current semantics of the PPS syntax element cu_qp_delta_enabled_flag are as follows: cu_qp_delta_enabled_flag equal to 1 indicates that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_della_subdiv_inter_slice exist in the PH that references PPS, and cu_qp_delta_abs may exist in the transform unit syntax… However, cu_qp_delta_abs may also appear in the palette encoding / decoding syntax, and it should also be represented by cu_qp_delta_enabled_flag. In other words, the current semantics of cu_qp_delta_enabled_flag are not clear enough and are somewhat confusing.
[0759] 5) The current design of the chromaticity Qp mapping table does not directly represent the case where chromaticity Qp equals luminance Qp.
[0760] 5. List of Solutions and Implementation Examples
[0761] To address the aforementioned issues and other unmentioned problems, the following summarized methods are presented. The items listed below should be considered as examples for explaining general concepts and should not be interpreted narrowly. Furthermore, these items can be used individually or in combination in any way.
[0762] In the following discussion, SH can be associated with PH, meaning SH is associated with a band in an image associated with PH. SH can be associated with PPS, meaning SH is associated with a band in an image associated with PPS. PH can be associated with PPS, meaning PH is associated with an image associated with PPS.
[0763] In the following discussion, SPS can be associated with PPS, that is, PPS can reference SPS.
[0764] In the discussion below, the changed text is based on the latest VVC text in JVET-Q2001-vE. Most of the relevant sections that have been added or modified are... Some deleted parts are enclosed in double brackets (for example, [[a]] means the character "a" is deleted).
[0765] 1. Regarding the constraints on APS syntax elements to address the first problem, one or more of the following methods are disclosed:
[0766] a. In one example, the value of scaling_list_chroma_present_flag is constrained by ChromaArrayType derived from the PH syntax element.
[0767] i. For example, whether the value of scaling_list_chroma_present_flag is constrained may depend on whether ph_scaling_list_aps_id exists, for example, as shown in the first set of embodiments.
[0768] 1) In one example, it is required that when ph_scaling_list_chroma_present_flag of an APSNAL cell with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id is present, the value of scaling_list_chroma_present_flag should be equal to ChromaArrayType == 0?0:1.
[0769] ii. Alternatively, scaling_list_chroma_present_flag is constrained based on the ChromaArrayType deduced from the PH syntax elements, but is independent of the presence of ph_scaling_list_aps_id, for example, as shown in the first set of embodiments.
[0770] 1) In one example, the scaling_list_chroma_present_flag value of an APS NAL cell with aps_params_type equal to SCALING_APS should be equal to ChromaArrayType == 0?0:1.
[0771] b. In one example, the value of lmcs_delta_abs_crs is constrained by the ChromaArrayType derived from the PH syntax element.
[0772] i. For example, whether the value of lmcs_delta_abs_crs is constrained may depend on whether ph_lmcs_aps_id exists, for example, as shown in the first set of embodiments.
[0773] 1) For example, it is required that when ph_lmcs_aps_id exists, if ChromaArrayType is equal to 0, the lmcs_delta_abs_crs value of APSNAL cell with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id should be equal to 0, otherwise it should be greater than 0.
[0774] 2) Alternatively, if ph_lmcs_aps_id exists, and ChromaArrayType is equal to 0, then the value of lmcs_delta_abs_crs of the APSNAL cell with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmces_aps_id should be equal to 0.
[0775] ii. Alternatively, lmcs_delta_abs_crs is constrained by the ChromaArrayType deduced from the PH syntax elements, but is independent of the presence of ph_lmcs_aps_id, for example, as shown in the first set of embodiments.
[0776] 1) For example, if ChromaArrayType is equal to 0, the lmcs_delta_abs_crs value of the APSNAL cell should be equal to ph_lmcs_aps_id, otherwise it should be greater than 0.
[0777] 2) For example, it is required that if ChromaArrayType is equal to 0, then the value of lmcs_delta_abs_crs of the APS NAL cell that is equal to ph_lmcs_aps_id should be equal to 0.
[0778] c. In one example, constrain the value of the ALF APS syntax element (e.g., alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag, etc.) based on the ChromaArrayType derived from the PH syntax element and / or SH syntax element.
[0779] i. For example, whether the values of alf_chroma_filter_signal_flag and / or alf_cc_cb_filter_signal_flag and / or alf_cc_cr_filter_signal_flag are constrained may depend on the existence of ph_alf_aps_id_luma[i] or slice_alps_id_luma[i] and / or whether ChromaArrayType is equal to 0, for example, as shown in the first set of embodiments.
[0780] 1) For example, it is required that when ph_alf_aps_id_luma[i] exists and ChromaArrayType is equal to 0, the values of alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag of the APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should all be equal to 0.
[0781] 2) In addition, when slice_alf_aps_id_luma[i] exists and ChromaArrayType is equal to 0, the values of alf_cchroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag of the APS NAL cell with aps_params_type equal to APS NAL and adaptation_parameter_set_id equal to slice_alps_ips_id_ulma[i] should all be equal to 0.
[0782] ii. Alternatively, alf_chroma_filter_signal_flag and / or alf_cc_cb_filter_signal_flag and / or alf_cc_cr_filter_signal_flag are constrained based on the ChromaArrayType derived from the PH syntax element or the SH syntax element, but are independent of the presence of ph_alf_aps_id_luma[i] and / or slice_alps_id_luma[i]. For example, as shown in the first set of embodiments.
[0783] 1) For example, it is required that when ChromaArrayType is equal to 0, the values of alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag of the APS NAL cell with aps_params_type equal to ALF_APS should all be equal to 0.
[0784] 2) Furthermore, when ChromaArrayType equals 0, the values of alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag for APS NAL cells with aps_params_type equal to ALF_APS should all be equal to 0. iii. Additionally, alf_chroma_filter_signal_flag and / or
[0785] alf_cc_cb_filter_signal_flag and / or alf_cc_cr_filter_signal_flag are constrained based on the ChromaArrayType derived from the PH or SH syntax elements associated with the chroma APS ID, for example, as shown in the first set of embodiments.
[0786] 1) For example, alf_chroma_filter_signal_flag is constrained by the ChromaArrayType derived from the PH syntax element ph_alf_aps_id_chroma and / or the SH syntax element slice_alf_aps_id_chroma.
[0787] 2) For example, alf_cc_cb_filter_signal_flag is constrained by the ChromaArrayType derived from the PH syntax element ph_cc_alf_cb_aps_id and / or the SH syntax element slice_cc_alp_cb_apps_id.
[0788] 3) For example, alf_cc_cr_filter_signal_flag is constrained by the ChromaArrayType derived from the PH syntax element ph_cr_alf_cb_aps_id and / or the SH syntax element slice_cr_alp_cb_apps_id.
[0789] d. In one example, the semantics of the APS syntax elements in the ALF and / or SCALING LIST and / or LMCS data syntax structures may not depend on whether it is a 4:0:0 video codec or a separate color plane codec.
[0790] i. For example, the semantics of APS syntax elements in the ALF data syntax structure (e.g., alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag, etc.) may not depend on variables / syntax inferred from SPS / PH / SH syntax elements (e.g., ChromaArrayType), for example, as shown in the first set of embodiments.
[0791] ii. Alternatively, the semantics of the APS syntax elements in the SCALING LIST data syntax structure (e.g., scaling_list_chroma_present_flag, etc.) may not depend on the variables / syntax deduced from the SPS / PH / SH syntax elements (e.g., ChromaArrayType), for example, as shown in the first set of embodiments.
[0792] e. Furthermore, whether the temporalId of the ALF / SCALING / LMCS APS NAL unit is constrained may depend on the existence of the corresponding APS ID, for example, as shown in the first set of embodiments.
[0793] i. For example, whether the temporalId of an ALF APS NAL cell is constrained can depend on whether ph_alf_aps_id_luma[i] and / or ph_alf_aps_id_chroma and / or ph_cc_alf_cb_aps_id and / or ph_cc_alp_cr_aps_id exists.
[0794] ii. For example, whether the temporalId of an LMCS APS NAL cell is constrained can depend on whether ph_lmcs_aps_id exists.
[0795] iii. For example, whether the temporalId of the SCALING APS NAL unit is constrained can depend on whether ph_scaling_list_aps_id exists.
[0796] f. Furthermore, whether the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag and / or alf_cc_cb_filter_signal_flag and / or alf_cc_cr_filter_signal_flag should be equal to 1 may depend on the existence of the corresponding APS ID, for example, as shown in the first set of embodiments.
[0797] i. For example, whether alf_luma_filter_signal_flag is equal to 1 can depend on the existence of ph_alf_aps_id_luma[i] and / or slice_alp_aps_id_luma[i].
[0798] ii. For example, whether alf_chroma_filter_signal_flag is equal to 1 can depend on the presence of ph_alf_aps_id_chroma and / or slice_alp_aps_id_chroma.
[0799] iii. For example, whether alf_cc_cb_filter_signal_flag is equal to 1 may depend on the existence of ph_cc_alf_cb_aps_id and / or slice_cc_alp_cb_aps_id.
[0800] iv. For example, whether alf_cc_cr_filter_signal_flag is equal to 1 can depend on whether ph_cc_alf_cr_aps_id and / or slice_cc_alp_cr_aps_id exist.
[0801] g. Alternatively, whether the chroma ALF APS ID syntax elements in SH (e.g., slice_alf_aps_id_chroma, slice_cc_alf_cb_aps_id, slice_cr_alf_cb_apa_id, etc.) can be inferred may depend on the value of ChromaArrayType, for example, as shown in the first set of embodiments.
[0802] i. For example, when ChromaArrayType is not equal to 0, the value of the chroma ALF APS ID syntax element in SH (e.g., slice_alf_aps_id_chroma, slice_cc_alf_cb_aps_ID, slice_cr_alf_cb_aps_id, etc.) can be inferred.
[0803] 2. Regarding signaling notification for deblocking control to solve the second problem, one or more of the following methods are disclosed, for example, as shown in the second set of embodiments:
[0804] a. In one example, signaling informs N bits (e.g., N=2) of the deblocking mode indicator (e.g., named deblocking_filter_mode_idc).
[0805] i. In one example, the syntax element deblocking_filter_mode_idc is encoded and decoded by u(2).
[0806] a) Alternatively, the parsing process of deblocking_filter_mode_idc is an N-bit (e.g., N=2) unsigned integer.
[0807] ii. In one example, the signaling notification syntax element deblocking_filter_mode_idc in PPS.
[0808] iii. In one example, the syntax element deblocking_filter_mode_idc is used to represent the following four modes: a) completely disable deblocking and not used for all stripes;
[0809] b) Deblocking is used for all stripes using 0-value β and tC offsets; c) Deblocking is used for all stripes using β and tC offsets that are explicitly signaled in the PPS; and
[0810] d) Further control over deblocking at the image or strip level.
[0811] b. The syntax flag ph / slice_deblocking_filter_used_flag is signaled in PH or SH to indicate whether to use deblocking for the current image / slice.
[0812] c. The syntax flag ph / slice_deblocking_parameters_override_flag is signaled in PH or SH, indicating whether the β and tC offsets are overridden by the signaled values in PH / SH.
[0813] i. Additionally, if slice_deblocking_parameters_override_flag does not exist
[0814] If it is present, then its value is inferred to be 0.
[0815] 3. Regarding the inference of the PPS syntax element single_slice_per_subpic_flag to solve the third problem, one or more of the following methods are disclosed:
[0816] a. In one example, when no_pic_partition_flag equals 1, it is inferred that single_slice_per_subpic_flags equals 1. For example, the semantic change of single_slice_per_subpic_flag is as follows:
[0817] `single_sliceper_subpic_flag` equal to 1 indicates that each subpicture consists of one and only one rectangular stripe. `single_slice_per_subpic_flag` equal to 0 indicates that each subpicture can consist of one or more rectangular stripes. When [[does not exist]], the value of single_slice_per_subpic_flags is inferred to be equal to [[0]]1.
[0818] 4. Regarding the image or stripe QP incremental signaling notification for resolving the fourth issue, one or more of the following methods are disclosed:
[0819] a. In one example, whether in PH or SH, signaling is given to the picture level or stripe level chroma QP offset.
[0820] i. For example, if there are chroma components in the video content (e.g., ChromaArrayType is not equal to 0), the chroma QP offset at the picture or slice level can always be signaled, regardless of the current flag of the signaling notification in the PPS (e.g., pps_slice_chroma_qp_offsets_present_flag).
[0821] ii. Alternatively, if the video content contains chroma components (e.g., ChromaArrayType is not equal to 0), then regardless of the current PPS flag (e.g., pps_slice_chroma_qp_offsets_present_flag), the slice_cb_qp_offset and slice_cr_qp_offset syntax elements can always be present in the associated slice header.
[0822] iii. Furthermore, the current flags indicating the presence of slice_cb_qp_offset and slice_cr_qp_offset syntax elements (e.g., pps_slice_chroma_qp_offsets_present_flag) may not be signaled.
[0823] b. In one example, pps_cu_qp_delta_enabled_flag can be used to indicate the presence of cu_qp_delta_abs and cu_qp_delta_sign_flag in both the transform unit syntax and the palette encoding / decoding syntax, and the syntax of pps_cu_qp_delta_eneabled_flag.
[0824] The meaning is changed as follows:
[0825] A value of 1 for pps_cu_qp_delta_enabled_flag indicates that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice exist in the PH that references PPS, and cu_qp_delta_abs It can exist in the transformation unit syntax. In the middle, pps_cu_qp_delta_enabled_flag equal to 0 indicates that the ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice syntax elements do not exist in the PH referencing PPS, and cu_qp_delta_abs Not present in the transformation unit syntax middle.
[0826] 5. Regarding the chroma Qp mapping table, one or more of the following methods are disclosed:
[0827] a. In one example, during the derivation of the chroma QP table, the XOR operator should be performed between (delta_qp_in_val_minus1[i][j]+1) and delta_qp_diff_val[i][j], as shown in the third set of embodiments.
[0828] 6. Example
[0829] The following are some example embodiments of the inventions summarized in Section 5 above, applicable to the VVC specification. The modified text is based on the latest VVC text in JVET-Q2001-vE. Most of the relevant sections have been added or modified. Some deleted parts are marked with double brackets (for example, [[a]] means the character "a" is deleted).
[0830] 6.1. First set of embodiments
[0831] This is a set of examples of Project 1 summarized in Section 5 above.
[0832] Example of 6.1.1.1.ai
[0833] ph_scaling_list_aps_id represents the adaptation_parameter_set_id of the scaling list APS.
[0834] The TemporalId of an APS NAL cell with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0835]
[0836] …
[0837] A `scaling_list_chroma_present_flag` value of 1 indicates that the chroma scaling list exists in `scaling_list_data()`. A `scaling_list_chroma_present_flag` value of 0 indicates that the chroma scaling list does not exist in `scaling_list_data()`. [[For bitstream consistency requirements, when `ChormaArrayType` is 0, `scaling_list_chroma_present_flag` should be 0; when `ChormaArrayType` is not 0, `scaling_list_chroma_present_flag` should be 1.]]
[0838] Example of 6.1.2.1.a.ii
[0839] ph_scaling_list_aps_id represents the adaptation_parameter_set_id of the scaling list APS.
[0840] The TemporalId of an APS NAL cell with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0841]
[0842] …
[0843] A `scaling_list_chroma_present_flag` value of 1 indicates that the chroma scaling list exists in `scaling_list_data()`. A `scaling_list_chroma_present_flag` value of 0 indicates that the chroma scaling list does not exist in `scaling_list_data()`. [[For bitstream consistency requirements, when `ChormaArrayType` is 0, `scaling_list_chroma_present_flag` should be 0; when `ChormaArrayType` is not 0, `scaling_list_chroma_present_flag` should be 1.]]
[0844] Example of 6.1.3.1.bi
[0845] ph_lmcs_aps_id represents the adaptation_parameter_set_id of the LMCS APS referenced by the stripe associated with PH.
[0846] The TemporalId of an APS NAL cell with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0847]
[0848] Example of 6.1.4.1.b.ii
[0849] ph_lmcs_aps_id represents the adaptation_parameter_set_id of the LMCS APS referenced by the stripe associated with PH.
[0850] The TemporalId of an APS NAL cell with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0851]
[0852] Example of 6.1.5.1.ci
[0853] The semantic changes of PH syntax elements are as follows:
[0854] ph_alf_aps_id_luma[i] represents the adaptation_parameter_set_id of the i-th ALFAPS referenced by the luminance component of the strip associated with PH.
[0855] The alf_luma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be equal to 1.
[0856] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be less than or equal to the Temporalid of the image associated with the PH.
[0857]
[0858] …
[0859] The semantic changes of SH syntax elements are as follows:
[0860] …
[0861] slice_alf_aps_id_luma[i] represents the adaptation_parameter_set_id of the i-th ALF APS referenced by the luminance component of the slice. When slice_alp_enabled_flag is equal to 1 and slice_als_aps_id_luma[i] does not exist, the value of slice_alf_aps_id_luma[i] is inferred to be equal to ph_alf_aps_id_uma[i].
[0862] The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be less than or equal to the TemporalId of the NAL unit of the codec strip.
[0863] The alf_luma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be equal to 1.
[0864]
[0865] …
[0866] The semantic changes of APS syntax elements in the ALF data syntax structure are as follows:
[0867] …
[0868] `alf_chroma_filter_signal_flag` equal to 1 indicates that the chroma filter is signaled. `alf_chroma_filter_signal_flag` equal to 0 indicates that the chroma filter is not signaled. [[When `ChromaArrayType` equals 0, `alf_chroma_filter_signal_flag` should be equal to 0.]]
[0869] …
[0870] `alf_cc_cb_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cb color components. `alf_cc_cb_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cb color components. [[When `ChromaArrayType` equals 0, `alf_cc_cb_filter_signal_flag` should be equal to 0.]]
[0871] `alf_cc_cr_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cr color component. `alf_cc_cr_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cr color component. [[When `ChromaArrayType` equals 0, `alf_cc_cr_filter_signal_flag` should be equal to 0.]]
[0872] Example of 6.1.6.1.c.ii
[0873] The semantic changes of PH syntax elements are as follows:
[0874] ph_alf_aps_id_luma[i] represents the adaptation_parameter_set_id of the i-th ALFAPS referenced by the luminance component of the strip associated with PH.
[0875] The alf_luma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be equal to 1.
[0876] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be less than or equal to the Temporalid of the image associated with the PH.
[0877]
[0878] A value of 0 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is not applied to the Cb and Cr color components. A value of 1 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cb color component. A value of 2 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cr color component. A value of 3 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to both the Cb and Cr color components. If `ph_alf_chroma_idc` does not exist, it is inferred to be equal to 0.
[0879] …
[0880] The semantic changes of SH syntax elements are as follows:
[0881] …
[0882] `slice_alf_aps_id_luma[i]` represents the `adaptation_parameter_set_id` of the i-th ALF APS referenced by the luminance component of the slice. When `slice_alf_enabled_flag` is equal to 1 and `slice_alf_aps_id_luma[i]` does not exist, the value of `slice_alf_aps_id_luma[i]` is inferred to be equal to the value of `ph_alf_aps_id_luma[i]`.
[0883] The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be less than or equal to the TemporalId of the encoding / decoding slice NAL cell.
[0884] The alf_luma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be equal to 1.
[0885]
[0886] …
[0887] The semantic changes of APS syntax elements in the ALF data syntax structure are as follows:
[0888] …
[0889] `alf_chroma_filter_signal_flag` equal to 1 indicates that the chroma filter is signaled. `alf_chroma_filter_signal_flag` equal to 0 indicates that the chroma filter is not signaled. [[When `ChromaArrayType` equals 0, `alf_chroma_filter_signal_flag` should be equal to 0.]]
[0890] …
[0891] `alf_cc_cb_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cb color components. `alf_cc_cb_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cb color components. [[When `ChromaArrayType` equals 0, `alf_cc_cb_filter_signal_flag` should be equal to 0.]]
[0892] `alf_cc_cr_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cr color component. `alf_cc_cr_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cr color component. [[When `ChromaArrayType` equals 0, `alf_cc_cr_filter_signal_flag` should be equal to 0.]]
[0893] Example of 6.1.7.1.c.iii
[0894] The semantic changes of PH syntax elements are as follows:
[0895] …
[0896] ph_alf_aps_id_chroma represents the adaptation_parameter_set_id of the ALF APS referenced by the chromaticity component of the band associated with PH.
[0897] The alf_chroma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma should be equal to 1.
[0898]
[0899] …
[0900] ph_cc_alf_cb_aps_id represents the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the strip associated with PH.
[0901] The alf_cc_cb_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id should be equal to 1.
[0902]
[0903] …
[0904] ph_cc_alf_cr_aps_id represents the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the band associated with PH.
[0905] The alf_cc_cr_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id should be equal to 1.
[0906]
[0907] …
[0908] The semantic changes of SH syntax elements are as follows:
[0909] …
[0910] `slice_alf_aps_id_chroma` represents the `adaptation_parameter_set_id` of the ALF APS referenced by the chroma components of the slice. The `TemporalId` of the APS NAL unit with `aps_parameters_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_alf_aps_id_chroma` should be less than or equal to the `TemporalId` of the codec slice NAL unit. When `slice_alf_enabled_flag` equals 1 and `slice_alf_aps_id_chroma` does not exist, the value of `slice_alf_aps_id_chroma` is inferred to be equal to the value of `ph_alf_aps_id_chroma`.
[0911] The alf_chroma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma should be equal to 1.
[0912]
[0913] …
[0914] slice_cc_alf_cb_aps_id represents the adaptation_parameter_set_id referenced by the Cb color component of the strip.
[0915] The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the codec slice NAL unit. When slice_cc_alf_cb_enabled_flag equals 1 and slice_cc_alf_cb_aps_id does not exist, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id.
[0916] The alf_cc_cb_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id should be equal to 1.
[0917]
[0918] …
[0919] `slice_cc_alf_cr_aps_id` represents the `adaptation_parameter_set_id` referenced by the Cr color component of the slice. The `TemporalId` of an APS NAL unit with `aps_parameters_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_cc_alf_cr_aps_id` should be less than or equal to the `TemporalId` of the codec slice NAL unit. When `slice_cc_alf_cr_enabled_flag` equals 1 and `slice_cc_alf_cr_aps_id` does not exist, the value of `slice_cc_alf_cr_aps_id` is inferred to be equal to the value of `ph_cc_alf_cr_aps_id`.
[0920] The alf_cc_cr_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id should be equal to 1.
[0921]
[0922] …
[0923] The semantic changes of APS syntax elements are as follows:
[0924] …
[0925] `alf_chroma_filter_signal_flag` equal to 1 indicates that the chroma filter is signaled. `alf_chroma_filter_signal_flag` equal to 0 indicates that the chroma filter is not signaled. [[When `ChromaArrayType` equals 0, `alf_chroma_filter_signal_flag` should be equal to 0.]]
[0926] …
[0927] `alf_cc_cb_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cb color components. `alf_cc_cb_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cb color components. [[When `ChromaArrayType` equals 0, `alf_cc_cb_filter_signal_flag` should be equal to 0.]]
[0928] `alf_cc_cr_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cr color component. `alf_cc_cr_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cr color component. [[When `ChromaArrayType` equals 0, `alf_cc_cr_filter_signal_flag` should be equal to 0.]]
[0929] …
[0930] Example of 6.1.8.1.di
[0931] The semantic changes of APS syntax elements in the ALF data syntax structure are as follows:
[0932] …
[0933] `alf_chroma_filter_signal_flag` equal to 1 indicates that the chroma filter is signaled. `alf_chroma_filter_signal_flag` equal to 0 indicates that the chroma filter is not signaled. [[When `ChromaArrayType` equals 0, `alf_chroma_filter_signal_flag` should be equal to 0.]]
[0934] …
[0935] `alf_cc_cb_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cb color components. `alf_cc_cb_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cb color components. [[When `ChromaArrayType` equals 0, `alf_cc_cb_filter_signal_flag` should be equal to 0.]]
[0936] `alf_cc_cr_filter_signal_flag` equal to 1 indicates that signaling is sent to the cross-component filter for the Cr color component. `alf_cc_cr_filter_signal_flag` equal to 0 indicates that no signaling is sent to the cross-component filter for the Cr color component. [[When `ChromaArrayType` equals 0, `alf_cc_cr_filter_signal_flag` should be equal to 0.]]
[0937] …
[0938] Example of 6.1.9.1.d.ii
[0939] The semantic changes of APS syntax elements in the SCALING LIST data syntax structure are as follows:
[0940] …
[0941] A scaling_list_chroma_present_flag value of 1 indicates that the chroma scaling list exists in scaling_list_data(). A scaling_list_chroma_present_flag value of 0 indicates that the chroma scaling list does not exist in scaling_list_data(). [[Bitstream consistency requirements: when ChromaArrayType equals 0, scaling_list_chroma_present_flag should be equal to 0; when ChromaArrayType is not equal to 0, scaling_list_chroma_present_flag should be equal to 1.]]
[0942] …]]
[0943] Examples of 6.1.10.1.e and 1.f
[0944] ph_scaling_list_aps_id represents the adaptation_parameter_set_id of the scaling list APS.
[0945]
[0946] —The TemporalId of an APS NAL cell with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0947] …
[0948] ph_lmcs_aps_id represents the adaptation_parameter_set_id of the LMCS APS referenced by the stripe associated with PH.
[0949]
[0950] —The TemporalId of an APS NAL cell with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0951] …
[0952] ph_alf_aps_id_luma[i] represents the adaptation_parameter_set_id of the i-th ALFAPS referenced by the luminance component of the strip associated with PH.
[0953]
[0954] —The alf_luma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be equal to 1.
[0955] —The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] should be less than or equal to the Temporalid of the image associated with PH.
[0956] A value of 0 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is not applied to the Cb and Cr color components. A value of 1 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cb color component. A value of 2 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to the Cr color component. A value of 3 for `ph_alf_chroma_idc` indicates that the adaptive loop filter is applied to both the Cb and Cr color components. If `ph_alf_chroma_idc` does not exist, it is inferred to be equal to 0.
[0957] ph_alf_aps_id_chroma represents the adaptation_parameter_set_id of the ALF APS referenced by the chromaticity component of the band associated with PH.
[0958]
[0959] —The alf_chroma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma should be equal to 1.
[0960] —The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma should be less than or equal to the Temporalid of the image associated with the PH.
[0961] …
[0962] ph_cc_alf_cb_aps_id represents the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the strip associated with PH.
[0963]
[0964] —The alf_cc_cb_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id should be equal to 1.
[0965] —The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0966] …
[0967] ph_cc_alf_cr_aps_id represents the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the band associated with PH.
[0968]
[0969] —The alf_cc_cr_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id should be equal to 1.
[0970] —The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id should be less than or equal to the Temporalid of the image associated with the PH.
[0971] …
[0972] `slice_alf_aps_id_luma[i]` represents the `adaptation_parameter_set_id` of the i-th ALF APS referenced by the luminance component of the slice. When `slice_alp_enabled_flag` equals 1 and `slice_als_aps_id_luma[i]` does not exist, the value of `slice_alf_aps_id_luma[i]` is inferred to be equal to the value of `ph_alf_aps_id_luma[i]`.
[0973]
[0974] —The TemporalId of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be less than or equal to the TemporalId of the codec slice NAL cell.
[0975] —The alf_luma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be equal to 1.
[0976] …
[0977] `slice_alf_aps_id_chroma` represents the `adaptation_parameter_set_id` of the ALF APS referenced by the chroma components of the slice. When `slice_alp_enabled_flag` equals 1 and `slice_alf_aps_id = chroma` does not exist, it is inferred that the value of `slice_alf_aps_id` is equal to the value of `ph_alf_aps_id_chroma`.
[0978]
[0979] —The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma should be less than or equal to the TemporalId of the codec slice NAL unit.
[0980] —The alf_chroma_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma should be equal to 1.
[0981] …
[0982] slice_cc_alf_cb_aps_id represents the adaptation_parameter_set_id referenced by the Cb color component of the strip.
[0983] When slice_cc_alf_cb_enabled_flag equals 1 and slice_cd_alf_cb_aps_id does not exist, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id.
[0984]
[0985] —The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the codec strip NAL unit.
[0986] —The alf_cc_cb_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id should be equal to 1.
[0987] …
[0988] `slice_cc_alf_cr_aps_id` represents the `adaptation_parameter_set_id` referenced by the Cr color component of the stripe. When `slice_cd_alf_cr_enabled_flag` equals 1 and `slice_cc_alf_cr_aps_id` does not exist, the value of `slice_cc_alf_cr_aps_id` is inferred to be equal to the value of `ph_cc_alf_cr_aps`.
[0989]
[0990] —The TemporalId of an APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id should be less than or equal to the TemporalId of the codec strip NAL unit.
[0991] —The alf_cc_cr_filter_signal_flag value of an APS NAL cell with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id should be equal to 1.
[0992] …
[0993] Example 6.1.11.1.g
[0994] The semantic changes of SH syntax elements are as follows:
[0995] `slice_alf_aps_id_chroma` represents the `adaptation_parameter_set_id` of the ALF APS referenced by the chroma components of the slice. The `TemporalId` of the APS NAL unit with `aps_parameters_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_alf_aps_id_chroma` should be less than or equal to the `TemporalId` of the encoding / decoding slice NAL unit. This is especially important when `slice_alf_enabled_flag` is equal to 1 and `slice_alf_aps_id_chroma` does not exist. At that time, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[0996] …
[0997] slice_cc_alf_cb_aps_id represents the adaptation_parameter_set_id referenced by the Cb color component of the strip.
[0998] For APS NAL units with `aps_params_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_cc_alf_cb_aps_id`, the TemporalId should be less than or equal to the TemporalId of the codec slice NAL unit. This is when `slice_cc_alf_cb_enabled_flag` equals 1 and `slice_cc_alf_cb_aps_id` does not exist. At that time, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id.
[0999] …
[1000] `slice_cc_alf_cr_aps_id` represents the `adaptation_parameter_set_id` referenced by the Cr color component of the slice. The `TemporalId` of an APS NAL unit with `aps_parameters_type` equal to `ALF_APS` and `adaptation_parameter_set_id` equal to `slice_cc_alf_cr_aps_id` should be less than or equal to the `TemporalId` of the encoding / decoding slice NAL unit. This is true when `slice_cc_alf_cr_enabled_flag` is equal to 1 and `slice_cc_alf_cr_aps_id` does not exist. At that time, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[1001] …
[1002] 6.2. Second set of embodiments
[1003] This is a set of examples of Project 2 (from 2.a to 2.c) summarized in Section 5 above.
[1004] The syntax structure of pic_parameter_set_rbsp() has been changed as follows:
[1005] ...
[1007]
[1008]
[1009] A deblocking filter control present flag of 1 indicates that a deblocking filter control syntax element exists in PPS. A deblocking filter control present flag of 0 indicates that a deblocking filter control syntax element exists in PPS.
[1010] A `deblocking_filter_override_enabled_flag` value of 1 indicates that `ph_deblocking_filter_override_flag` exists in the PH referencing PPS, or that `slice_deblocking_filter_override_flag` exists in the slice header referencing PPS. A `deblocking_filter_override_enabled_flag` value of 0 indicates that `ph_deblocking_filter_override_flag` does not exist in the PH referencing PPS, or that `slice_deblocking_filter_override_flag` does not exist in the slice header referencing PPS. When it does not exist, the value of `deblocking_filter_override_enabled_flag` is inferred to be 0.
[1011] A value of 1 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation should not be applied to slices that do not have a `slice_deblocking_filter_disabled_flag` reference to PPS. A value of 0 for `pps_deblocking_filter_disabled_flag` indicates that the deblocking filter operation should be applied to slices that do not have a `slice_deblocking_filter_disabled_flag` reference to PPS. [[When it does not exist, it is inferred that the value of `pps_deblocking_filter_disabled_flag` is equal to 0.]]
[1012] A value of 1 for `dbf_info_in_ph_flag` indicates that the deblocking filter information exists within the `PH` syntax structure, but not in the stripe header referencing a `PPS` that does not contain a `PH` syntax structure. A value of 0 for `dbf_info_in_ph_flag` indicates that the deblocking filter information does not exist within the `PH` syntax structure, but may exist in the stripe header referencing a `PPS` that does not contain a `PH` syntax structure. [[When it does not exist, the value of `dbf_info_in_ph_flag` is inferred to be 0.]] ...
[1014] The syntax structure of picture_header_structure() has been changed as follows:
[1015]
[1016] ...
[1018] A value of 1 for `ph_deblocking_filter_used_flag` indicates that a deblocking filter is applied to the stripes in the current image. A value of 0 for `ph_deblocking_filter_used_flag` indicates that no deblocking filter is applied to the stripes in the current image. When `ph_deblocking_filter_used_flag` does not exist, its value is inferred to be equal to (deblocking_filter_node_idc > 0).
[1019] `ph_deblocking_[[filter]]parameters_override_flag` equals 1, indicating that the deblocking parameters exist in PH. `ph_debrocking_[[filter]]parameters_overridden_flag` equals 0, indicating that the deblocking parameters do not exist in PH. If they do not exist, it is inferred that `ph_debrocking_filter_overridden_flag` is equal to 0.
[1020] [[ph_deblocking_filter_disabled_flag equal to 1 indicates that the deblocking filter is not applied to the stripes associated with PH. ph_debrocking_filter_disabled_flag equal to 0 indicates that the deblocking filter is applied to the stripes associated with PH. When ph_deblocking_filter_disabled_flag does not exist, it is inferred that it is equal to pps_deblocking_filter_disabled_flag.]] ...
[1022] The syntax structure of slice_header() has been changed as follows:
[1023]
[1024] ...
[1026]
[1027] slice_deblocking_[[filter]] A `_override_flag` value of 1 indicates the presence of deblocking parameters in the slice header. `slice_deblocking_[[filter]]` A `_override_flag` value of 0 indicates that the deblocking parameter does not exist in the slice header. When it does not exist, the value of `slice_deblocking_filter_override_flag` is inferred to be equal to `[[ph_deblocging_filter_override_flag]]`.
[1028] `slice_deblocking_filter_disabled_flag` equal to 1 indicates that the deblocking filter is not applied to the current slice. `slice_dedblocking_filter_disabled_flag` equal to 0 indicates that the deblocking filter is applied to the current slice. When `slice_deblocking_filter_disabled_flag` does not exist, it is inferred to be equal to `ph_deblocking_filtered_disabled_flag`. ...
[1030] The decoding process for the deblocking filter has been changed as follows:
[1031] 8.8.3 Deblocking Filter Processing
[1032] 8.8.3.1 Overview
[1033] Except for the following types of edges, the deblocking filter processes all codec sub-block edges and transform block edges applicable to the image:
[1034] —The edge of the image boundary,
[1035] — The edge that coincides with the boundary of the subpic whose subpic index is subpicIdx and whose loop_filter_across_subpic_enabled_flag[subpicIdx] is equal to 0.
[1036] —When VirtualBoundariesPresentFlag equals 1, the edge that coincides with the virtual boundary of the image.
[1037] —When loop_filter_across_tiles_enabled_flag equals 0, the edge coinciding with the tile boundary,
[1038] —When loop_filter_across_slices_enabled_flag equals 0, the edge coinciding with the slice boundary.
[1039] —The edge that coincides with the upper or left boundary of the slice where slice_deblocking_filter_used[[disabled]_flag is equal to [[1]0,
[1040] —where slice_deblocking_filter_used[[disabled]]_flag is equal to the edge of the slice with [[1]0,
[1041] —Edges that do not correspond to the 4×4 sample grid boundary of the brightness component.
[1042] — Edges that do not correspond to the boundaries of the 8×8 sample grid of the chromaticity components.
[1043] —The luminance component has edges on both sides where intra_bdpcm_luma_flag is equal to 1.
[1044] —The edges of the chroma components all have an intra_bdpcm_chroma_flag value of 1 on both sides.
[1045] —The edge of a chromatic sub-block that is not the edge of a correlated transform unit.
[1046] The vertical or horizontal edge type is represented by the variable edgeType as specified in Table 42.
[1047] Table 42 – Names associated with edgeType
[1048] edgeType edgeType name 0 (vertical edge) EDGE_VER 1 (horizontal edge) EDGE_HOR
[1049] When the slice_deblocking_filter_used[[disabled]]_flag of the current slice is equal to [[0]]1, the following applies:
[1050] — Set the variable treeType to equal DUAL_TREE_LUMA.
[1051] —Vertical edges are filtered by invoking a deblocking filter in one direction as specified in Clause 8.8.3.2, where the variable treeType and the reconstructed image before deblocking are arrays, recPicture. L The image is modified and reconstructed after removing the blocks, using the variable edgeType set to equal EDGE_VER as input, i.e., the array recPiture. L As output.
[1052] — Horizontal edges are filtered by calling a deblocking filter in one direction as specified in Clause 8.8.3.2, where the variable treeType and the modified reconstructed image after deblocking are arrays recPicture. L The image is modified and reconstructed after removing the blocks, using the variable edgeType set to equal EDGE_HOR as input, i.e., the array recPiture. L As output.
[1053] —When ChromaArrayType is not equal to 0, the following applies:
[1054] — Set the variable treeType to equal DUAL_TREE_CHROMA.
[1055] —Vertical edges are filtered by invoking a deblocking filter in one direction as specified in Clause 8.8.3.2, where the variable treeType and the reconstructed image before deblocking are arrays, recPicture. Cb and recPicture Cr And the variable edgeType, set to equal EDGE_VER, is used as input to modify and reconstruct the image after removing the blocks, i.e., the array recPicture. Cb and recPicture Cr As output.
[1056] — Horizontal edges are filtered by calling a deblocking filter in one direction as specified in Clause 8.8.3.2, where the variable treeType and the modified reconstructed image after deblocking are arrays recPicture. Cb and recPicture Cr And the reconstructed image after removing the blocks, which is the array recPicture, is taken as input by the variable edgeType, which is set to equal edge_HOR. Cb and recPicture Cr As output.
[1057] 6.3. Third set of embodiments
[1058] These changes based on JVET-Q2001-vE are to mark.
[1059] The derivation of the i-th chromaticity QP mapping table ChromaQpTable[i]-1 of i = 0..numQpTables is as follows:
[1060]
[1061]
[1062] When same_qp_table_for_chroma equals 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set to ChromaQTable[0][k], where k is in the range of -QpBdOffset to 63, inclusive.
[1063] Bitstream consistency requirements: the values of qpInVal[i][j] and qpOutVal[i][j] should be in the range of -QpBdOffset to 63, inclusive; i should be in the range of 0 to numQpTables–1, inclusive; and j should be in the range of 0 to num_points_in_qp_table_minus1[i]+1, inclusive.
[1064] Figure 1 A block diagram of an example video processing system 1900 that can implement various techniques of this disclosure is shown. Various implementations may include some or all of the components of system 1900. System 1900 may include an input 1902 for receiving video content. The video content may be received in a raw or uncompressed format (e.g., 8 or 10-bit multi-component pixel values), or in a compressed or encoded format. Input 1902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, passive optical network (PON), etc., and wireless interfaces such as Wi-Fi or cellular interfaces.
[1065] System 1900 may include codec component 1904, which may implement various codec or encoding methods described in this disclosure. Codec component 1904 may reduce the average bit rate of the video from input 1902 to the output of codec component 1904 to produce a codec representation of the video. Therefore, codec techniques are sometimes referred to as video compression or video transcoding techniques. The output of codec component 1904 may be stored or transmitted via a communication connection as indicated by component 1906. The stored or communicated bitstream (or codec) representation of the video received at input 1902 may be used by component 1908 to generate pixel values or displayable video to be sent to display interface 1910. The process of generating a user-viewable video from the bitstream representation is sometimes referred to as video decompression. Furthermore, although some video processing operations are referred to as “codec” operations or tools, it should be understood that codec tools or operations are used at the encoder, and the corresponding decoding tools or operations that reverse the encoded result will be performed by the decoder.
[1066] 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 techniques described in this disclosure can be implemented 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.
[1067] Figure 2 This is a block diagram of a video processing apparatus 3600. Apparatus 3600 can be used to implement one or more methods described in this disclosure. Apparatus 3600 can be located in a smartphone, tablet, computer, Internet of Things (IoT) receiver, etc. Apparatus 3600 may include one or more processors 3602, one or more memories 3604, and video processing hardware 3606. Processor 3602 can be configured to implement one or more methods described in this disclosure. Memory 3604 can be used to store data and code for implementing the methods and techniques described in this disclosure. Video processing hardware 3606 can be used in hardware circuitry to implement some of the techniques described in this disclosure.
[1068] Figure 4 This is a block diagram illustrating an example video codec system 100 that can utilize the technology disclosed herein.
[1069] like Figure 4 As shown, the video encoding / decoding system 100 may include a source device 110 and a target device 120. The source device 110 can generate encoded video data and may be referred to as a video encoding device. The target device 120 can decode the encoded video data generated by the source device 110 and may be referred to as a video decoding device.
[1070] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[1071] Video source 112 may include, for example, a source such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination 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 bit sequences 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 may be transmitted directly to target 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 target device 120.
[1072] The target device 120 may include an I / O interface 126, a video decoder 124, and a display device 122.
[1073] 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 target device 120, or may be external to target device 120, which is configured to interface with an external display device.
[1074] The video encoder 114 and the video decoder 124 can operate according to video compression standards, such as the High Efficiency Video Coding (HEVC) standard, the Multi-Function Video Coding (VVC) standard, and other current and / or other standards.
[1075] Figure 5 This is a block diagram illustrating an example of a video encoder 200. The video encoder 200 can be... Figure 4 The video encoder 114 in the system 100 described herein.
[1076] The video encoder 200 can be configured to perform any or all of the technologies disclosed herein. Figure 5 In the example shown, 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.
[1077] 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 encoding / decoding unit 214.
[1078] 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.
[1079] Furthermore, some components, such as the motion estimation unit 204 and the motion compensation unit 205, can be highly integrated, but for descriptive purposes... Figure 5 The examples are shown separately.
[1080] 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.
[1081] The mode selection unit 203 can select one of the encoding / decoding modes (intra-frame or inter-frame) based, for example, on the error result, and provide the resulting intra-frame or inter-frame codec block to the residual generation unit 207 to generate residual block data, and the reconstruction unit 212 reconstructs the codec block for use as a reference picture. In some examples, the mode selection unit 203 can select a combination of intra-frame and inter-frame prediction (CIIP) modes, where the prediction is based on the inter-frame prediction signal and the intra-frame prediction signal. In the case of inter-frame prediction, the mode selection unit 203 can also select the resolution of the motion vector for the block (e.g., sub-pixel or integer pixel precision).
[1082] 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.
[1083] The motion estimation unit 204 and the motion compensation unit 205 can perform different operations on the current video block, for example, depending on whether the current video block is in an I-band, P-band, or B-band.
[1084] In some examples, motion estimation unit 204 can perform unidirectional prediction on the current video block, and motion estimation unit 204 can search for reference images in reference video block search list 0 or 1 for the current video block. Motion estimation unit 204 can then generate a reference index indicating that the reference image in list 0 or list 1 contains the reference video block, and a motion vector indicating the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 can output the reference index, prediction direction indicator, and motion vector as motion information for the current video block. Motion compensation unit 205 can generate a predicted video block for the current block based on the reference video block indicated by the motion information of the current video block.
[1085] In other examples, motion estimation unit 204 can perform bidirectional prediction on the current video block. Motion estimation unit 204 can search for reference images in reference video block list 0 and reference video block list 1. Motion estimation unit 204 can then generate reference indices indicating the reference images in lists 0 and 1, containing 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 motion information for 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.
[1086] In some examples, the motion estimation unit 204 can output a complete set of motion information for the decoder to use in the decoding process.
[1087] In some examples, motion estimation unit 204 may not output the complete set of motion information for the current video. Instead, motion estimation unit 204 may signal the motion information of the current video block to 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.
[1088] In one example, the motion estimation unit 204 may instruct the video decoder 300 in 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.
[1089] In another example, motion estimation unit 204 can identify another video block and motion vector difference (MVD) within the syntax structure associated with the current video block. The motion vector difference represents 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.
[1090] As described 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 mode signaling.
[1091] 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.
[1092] The residual generation unit 207 can generate residual data for the current video block by subtracting (e.g., indicated by a negative sign) the predicted video block of the current 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 of the samples in the current video block.
[1093] In other examples, for the current video block, such as in skip mode, there may not be residual data for the current video block, and the residual generation unit 207 may not perform the subtraction operation.
[1094] The transform processing unit 208 can generate one or more transform coefficient video blocks of the current video block by applying one or more transforms to the residual video block associated with the current video block.
[1095] 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.
[1096] Inverse quantization unit 210 and inverse transform unit 211 can apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct the residual video block from the transform coefficient video block. Reconstruction unit 212 can add the reconstructed residual video block to the corresponding samples from one or more predicted video blocks generated by prediction unit 202 to produce a reconstructed video block associated with the current block stored in buffer 213.
[1097] After the video block is reconstructed by the reconstruction unit 212, a loop filtering operation can be performed to reduce video block artifacts in the video block.
[1098] The entropy encoding / decoding unit 214 can receive data from other functional components of the video encoder 200. When the entropy encoding / decoding unit 214 receives data, it can perform one or more entropy encoding operations to generate entropy-encoded data and output a bitstream including the entropy-encoded data.
[1099] Figure 6 This is a block diagram illustrating an example of a video decoder 300, which can be... Figure 4 The video decoder 114 in the system 100 shown.
[1100] The video decoder 300 can be configured to perform any or all of the technologies disclosed herein. Figure 6 In the example shown, 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.
[1101] In such Figure 6 The example shown 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 functions typically associated with the video encoder 200. Figure 5 The encoding channel is the opposite of the decoding channel described.
[1102] The entropy decoding unit 301 can obtain the encoded bitstream. The encoded bitstream may include entropy-coded video data (e.g., encoded video data blocks). The entropy decoding unit 301 can decode the entropy-coded video data, and based on the entropy-decoded video data, the motion compensation unit 302 can determine motion information including motion vectors, motion vector precision, reference image list index, and other motion information. For example, the motion compensation unit 302 can determine such information by executing AMVP and merge modes.
[1103] The motion compensation unit 302 can generate motion compensation blocks, possibly performing interpolation based on an interpolation filter. Identifiers for the interpolation filter at sub-pixel precision can be included in the syntax elements.
[1104] The motion compensation unit 302 can use the interpolation filter used by the video encoder 20 during the encoding of the video block to calculate the interpolated values of the 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.
[1105] The motion compensation unit 302 can 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, mode indicating how each segment is encoded, one or more reference frames (and a list of reference frames) for each inter-frame codec block, and other information for decoding the encoded video sequence.
[1106] Intra-prediction unit 303 can use, for example, an intra-prediction mode received in the bitstream to form prediction blocks from spatially adjacent blocks. Inverse quantization unit 303 performs inverse quantization, i.e., dequantization, on the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.
[1107] 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 the decoded video for presentation on the display device.
[1108] The following provides a list of preferred solutions for some implementation examples.
[1109] The first set of clauses illustrates example embodiments of the techniques discussed in the previous section. The following clauses illustrate example embodiments of the techniques discussed in the previous section (e.g., Item 1).
[1110] 1. A video processing method (e.g., Figure 3 The method 3000 shown includes: performing (3002) a conversion between a video containing one or more chroma components and a codec representation of the video, the video including one or more video pictures containing one or more stripes, wherein the codec representation conforms to a format rule, wherein the format rule specifies that a chroma array type field controls constraints on the conversion characteristics of the chroma used during the conversion.
[1111] 2. The method of Clause 1, wherein the transformation feature includes constraints on a field indicating one or more scaling lists having one or more chroma components.
[1112] 3. The method of Clause 1, wherein the conversion feature includes constraints on the value of a field indicating a codeword used for signaling notification of luminance mapping and chroma scaling.
[1113] 4. The method of Clause 1, wherein the transformation feature includes constraints on the values of syntax elements describing an adaptive set of parameters of an adaptive loop filter used during the transformation.
[1114] 5. The method in Clause 1, wherein the format rule specifies that one or more entries of the adaptive parameter set for the chroma array type field of the signaling notification 4:0:0 format or a separate color codec format use the same semantics.
[1115] 6. The method of Clause 5, wherein the one or more entries include adaptive loop filter parameters, scaling list parameters, or luminance mapping and chrominance scaling parameters.
[1116] 7. The method of Items 5-6, wherein the format rules further specify that the constraints on the one or more entries of the adaptive parameter set depend on whether the identifier of the adaptive parameter set is included in the bitstream.
[1117] The following clauses illustrate example embodiments of the techniques discussed in the previous section (e.g., Item 2).
[1118] 8. A video processing method comprising: performing a conversion between a video comprising one or more video images containing one or more video regions and a codec representation of the video, wherein the codec representation conforms to a format rule, the format rule specifying a deblocking mode indicator for the video regions, the deblocking mode indicator indicating the applicability of a deblocking filter to the video regions during the conversion.
[1119] 9. The method of Item 8, wherein the deblocking mode indicator is an N-bit field, where N is an integer greater than 1.
[1120] 10. The method of any one of clauses 8-9, wherein the deblocking mode indicator of the video region is included in the picture parameter set.
[1121] 11. The method of Clause 8, wherein the deblocking mode indicator corresponds to a flag contained in the header of the video region, the flag indicating the applicability of the deblocking filter to the video region.
[1122] 12. The method of any one of Clauses 8-11, wherein the format rule specifies whether the signaling notification flag for the deblocking filter parameters overrides the default parameter in the deblocking mode indicator.
[1123] 13. The method of any one of clauses 8-12, wherein the video region corresponds to a video image or a video strip.
[1124] The following clauses illustrate example embodiments of the techniques discussed in the previous section (e.g., item 3).
[1125] 14. A video processing method comprising: performing a conversion between a video comprising one or more video images including one or more video stripes and / or one or more video sub-images and a codec representation of the video, wherein the codec representation conforms to a format rule specifying a flag indicating whether a single stripe per sub-image mode is enabled for the video image when image segmentation is disabled for the video image.
[1126] The following clauses illustrate example embodiments of the techniques discussed in the previous section (e.g., item 4).
[1127] 15. A video processing method, comprising: performing a conversion between a video comprising one or more video pictures including one or more video stripes and a codec representation of the video, wherein the codec representation conforms to a format rule specifying that a signaling notification of a picture or strip level color metric parameter offset is provided in a picture header or stripe header.
[1128] 16. The method of Clause 15, wherein the format rule specifies that the strip level color quantization parameter offset is included in the strip header.
[1129] The following clauses illustrate example embodiments of the techniques discussed in the previous section (e.g., Item 5).
[1130] 17. A video processing method, comprising: performing a conversion between a video comprising one or more video images containing one or more video strips and a codec representation of the video, wherein the codec representation conforms to a format rule specifying that a chroma quantization parameter (QP) table for converting video blocks applicable to the video is derived as an XOR operation between (delta_qp_in_val_minus1[i][j]+1) and delta_qp_diff_val[i][j], wherein delta_qp_in_val_minus1[i][j] specifies an increment value for the input coordinates of the j-th pivot point of the i-th chroma map table, and delta_qp_diff_val[i][j] specifies an increment for the output coordinates of the j-th pivot point of the i-th chroma QP table, wherein i and j are integers.
[1131] 18. The method of any one of clauses 1 to 17, wherein the conversion includes encoding the video into a codec representation.
[1132] 19. The method of any one of clauses 1 to 17, wherein the conversion includes decoding the codec representation to generate pixel values of the video.
[1133] 20. A video decoding apparatus, comprising a processor configured to implement one or more of the methods described in clauses 1 to 19.
[1134] 21. A video encoding apparatus, comprising a processor configured to implement one or more of the methods described in Clauses 1 to 19.
[1135] 22. A computer program product having computer code stored thereon, which, when executed by a processor, causes the processor to perform the method described in any one of clauses 1 to 19.
[1136] 23. The methods, apparatus or systems described in this document.
[1137] The second set of clauses illustrates example embodiments of the techniques discussed in the previous section (e.g., Item 1).
[1138] 1. A video processing method (e.g., Figure 7A The method 700 shown includes: performing a conversion between a video and a bitstream of the video according to a format rule (method 702), wherein the format rule specifies that a first field at the sequence level, picture level, or stripe level controls the value of a second field in an adaptive parameter set.
[1139] 2. The method of Clause 1, wherein the first field indicates the chroma format identifier of the video.
[1140] 3. The method of Clause 2, wherein the first field indicates a chromaticity sample relative to a luminance sample.
[1141] 4. The method of Clause 1, wherein the first field indicates the presence of a chroma component in the video.
[1142] 5. The method of Clause 1, wherein the second field indicates the existence of one or more scaling lists for one or more chromaticity components.
[1143] 6. The method of Clause 5, wherein the formatting rule specifies that the second field depends on the presence of a syntax element indicating an identifier of a scaling adaptive parameter set, which is referenced by a stripe associated with an image header or stripe header.
[1144] 7. The method of Clause 6, wherein the format rule specifies that, in the presence of the syntax element, a requirement is set for the value of the second field of an adaptive parameter set APS Network Abstraction Layer (NAL) unit having an APS parameter type equal to SCALING_APS and an APS identifier equal to the syntax element, based on the value of the first field.
[1145] 8. The method of Clause 5, wherein the formatting rule specifies that the value of the second field is independent of the presence of a syntax element indicating an identifier of a SCALING adaptive parameter set, the SCALING adaptive parameter set being referenced by a stripe associated with a picture header or stripe header.
[1146] 9. The method of Clause 8, wherein the format rule specifies that, based on the value of the first field, a requirement is set for the value of the second field of an adaptive parameter set APS network abstraction layer NAL unit having an APS parameter type equal to SCALING_APS.
[1147] 10. The method of Clause 7 or 9, wherein the formatting rule specifies that the value of the second field is set based on whether the value of the first field is equal to 0.
[1148] 11. The method of Clause 10, wherein the first field being equal to 0 indicates that the video is in monochrome format.
[1149] 12. The method of Clause 1, wherein the second field indicates a codeword for signaling notification of luminance mapping and chroma scaling.
[1150] 13. The method of Clause 12, wherein the format rule specifies that the second field depends on the presence of a syntax element indicating an identifier of the set of adaptive luminance mapping and chrominance scaling (LMCS) parameters used during the conversion.
[1151] 14. The method of Clause 13, wherein the format rule specifies that, in the presence of the syntax element, a requirement is set for the value of the second field of an Adaptive Parameter Set APS Network Abstraction Layer NAL unit based on the value of the first field, the Adaptive Parameter Set APS Network Abstraction Layer NAL unit having an APS parameter type equal to Luminance Mapping and Chroma Scaling LMCS_APS and an APS identifier equal to the syntax element.
[1152] 15. The method of Clause 12, wherein the format rule specifies that the value of the second field is independent of the presence of a syntax element indicating an identifier of an adaptive set of luminance mapping and chrominance scaling parameters used during the conversion.
[1153] 16. The method of Clause 14, wherein the format rule specifies that the requirement for the value of the second field is set based on whether the value of the first field is equal to 0.
[1154] 17. The method of Clause 16, wherein the first field being equal to 0 indicates that the video is in monochrome format.
[1155] 18. The method of Clause 1, wherein the second field describes the adaptive loop filter ALF adaptive parameter set of the adaptive loop filter used in the transformation.
[1156] 19. The method of Clause 18, wherein the format rule specifies that the value of the second field depends on i) the presence of another syntax element indicating the identifier of the ALF adaptive parameter set and ii) the value of the first field, wherein the ALF adaptive parameter set is referenced by the luminance component of a strip associated with a picture header or strip header.
[1157] 20. The method of Clause 19, wherein the format rule specifies that, in the presence of another syntax element and the value of the first field is equal to 0, the value of the second field of the Adaptive Parameter Set APS Network Abstraction Layer NAL unit is equal to 0, the Adaptive Parameter Set APS Network Abstraction Layer NAL unit having an APS parameter type equal to ALF_APS and an APS identifier equal to the other syntax element.
[1158] 21. The method of Clause 19 or 20, wherein the other syntax element in the picture header or the strip header indicates an identifier for the i-th ALF APS or the adaptive parameter set of the strip, the i-th ALF APS being referenced by the luminance component of the strip in the picture.
[1159] 22. The method of Article 19 or 20, wherein the other syntax element corresponds to ph_alf_aps_id_luma[i] or slice_alf_aps_id_luma[i].
[1160] 23. The method of Clause 18, wherein the formatting rule specifies that the value of the second field is independent of the presence of another syntax element indicating an identifier of an ALF adaptive parameter set APS, which is referenced by the luminance component of a strip associated with a picture header or strip header.
[1161] 24. The method of Clause 23, wherein the format rule specifies that, when the value of the first field is equal to 0, the value of the second field of the APS parameter type equal to ALF_APS and the APS identifier equal to another syntax element of the APS network abstraction layer NAL unit is equal to 0.
[1162] 25. The method of Clause 18, wherein the first field is derived from a chroma APS identifier associated with the syntax element in the picture header and / or strip header.
[1163] 26. The method of Clause 1, wherein the format rule specifies that the semantics of one or more entries of the adaptive parameter set are independent of whether the first field is in signaling notification 4:0:0 format or a separate color codec format.
[1164] 27. The method of Clause 26, wherein the one or more entries include adaptive loop filter parameters or scaling list parameters or luminance mapping and chrominance scaling parameters.
[1165] 28. The method of Clause 26 or 27, wherein the format rule further specifies that the constraints on the one or more entries of the adaptive parameter set do not depend on variables and / or syntax elements derived from another syntax element at the sequence parameter set SPS level, picture header PH level, or strip header SH level.
[1166] 29. The method of any one of clauses 1-28, wherein the format rule further specifies that the presence of a syntax element indicates that the identifier of the adaptive parameter set corresponding to the adaptive loop filter, scaling, and / or luminance mapping and chrominance scaling LMCS controls the constraint on the temporal identifier of the NAL unit of the APS network abstraction layer, the temporal identifier corresponding to the adaptive loop filter, the scaling, and / or the luminance mapping and chrominance scaling.
[1167] 30. The method of Clause 29, wherein the format rule further specifies that whether the temporal identifier of the adaptive parameter set APS network abstraction layer NAL unit corresponding to the adaptive loop filter is constrained depends on the presence of the syntax element indicating the identifier of the APS referenced by the luminance component, chrominance component, Cb color component or Cr color component of the stripe.
[1168] 31. The method of Clause 29, wherein the format rule further specifies that whether the temporal identifier of the network abstraction layer NAL unit corresponding to the adaptive parameter set APS of the LMCS is constrained depends on the presence of the syntax element indicating the identifier of the APS corresponding to the LMCS.
[1169] 32. The method of Clause 23, wherein the format rule further specifies that whether the temporal identifier corresponding to the scaled Adaptive Parameter Set APS Network Abstraction Layer NAL unit is constrained depends on the presence of the syntax element indicating the identifier corresponding to the scaled APS.
[1170] 33. A video processing method (e.g., Figure 7B The method 710 shown includes: performing a conversion between a video and a bitstream of the video according to a format rule (method 712), wherein the format rule specifies that the value of a syntax element associated with the adaptive loop filter ALF used in the conversion depends on the presence of another syntax element, which indicates an identifier corresponding to the adaptive parameter set APS of the adaptive loop filter.
[1171] 34. The method of Clause 33, wherein the syntax element corresponds to a syntax element indicating whether signaling is notified to the luminance filter set, a syntax element indicating whether signaling is notified to the chrominance filter, a syntax element indicating whether signaling is notified to the cross-component filter of the Cb color component, or a syntax element indicating whether signaling is notified to the cross-component filter of the Cr color component.
[1172] 35. The method of Clause 33, wherein the other syntax element indicates the identifier of the adaptive parameter set APS referenced by the luminance component, chrominance component, Cb color component, or Cr color component of the strip.
[1173] 36. A video processing method (e.g., Figure 7C Method 720 shown includes: performing a conversion between a video and a bitstream of the video according to a format rule (method 722), and wherein the format rule specifies that the value of a field associated with the chroma components of the video controls whether syntax elements are inferred for the chroma components in a strip header associated with an adaptive loop filter.
[1174] 37. The method of Clause 36, wherein the format rule further specifies that the value of the syntax element is inferred if the value of the first field is not equal to 0.
[1175] 38. The method of Clause 36, wherein the syntax element indicates an identifier for an adaptive set of parameters referenced by the chromaticity component, Cb color component, or Cr color component of the stripe.
[1176] 39. The method of any one of clauses 1-38, wherein the conversion includes encoding the video into the bitstream.
[1177] 40. The method of any one of clauses 1-38, wherein the conversion includes decoding the video from the bitstream.
[1178] 41. The method of any one of clauses 1-38, wherein the conversion includes generating the bitstream from the video, and the method further includes storing the bitstream in a non-transitory computer-readable recording medium.
[1179] 42. A video processing apparatus, comprising a processor configured to implement the method as described in any one or more of clauses 1-41.
[1180] 43. A method for storing a bitstream of video, comprising the method described in any one of clauses 1-41, further comprising storing the bitstream to a non-transitory computer-readable recording medium.
[1181] 44. A computer-readable medium having program code stored thereon, wherein the program code, when executed, causes a processor to perform the method described in any one of clauses 1-41.
[1182] 45. A computer-readable medium storing a bitstream generated by the method described above.
[1183] 46. A video processing apparatus for storing bitstream representations, wherein the video processing apparatus is configured to perform the method as described in any one of clauses 1-41.
[1184] The third set of clauses illustrates example implementations of the techniques discussed in the previous section (e.g., items 2-5).
[1185] 1. A video processing method (e.g., Figure 8A The method 800 shown includes: performing a conversion between a video comprising one or more pictures containing one or more stripes and a bitstream of the video according to a format rule (method 802), wherein the format rule specifies that a field is included in the picture parameter set, the field indicating the presence of a syntax element related to the difference between the brightness quantization parameter and the prediction in the encoding / decoding unit.
[1186] 2. The method of Clause 1, wherein the syntax elements include: i) cu_qp_delta_abs, specifying the absolute value of the difference between the luminance quantization parameter of the codec unit and the prediction, and ii) cu_qp_delta_sign_flag, specifying the sign of the difference.
[1187] 3. The method of Clause 2, wherein the format rule specifies that the field equal to 1 indicates i) cu_qp_delta_abs and ii) cu_qp_delta_sign_flag are allowed to exist in the transform unit syntax and the palette encoding / decoding syntax.
[1188] 4. The method of Clause 2, wherein the format rule specifies that the field being equal to 0 indicates i) cu_qp_delta_abs and ii) cu_qp_delta_sign_flag are not present in the transform unit syntax or the palette encoding / decoding syntax.
[1189] 5. The method of Clause 2 or 3, wherein the format rule specifies that the field being equal to 1 also indicates that the ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice syntax elements exist in the image header referencing the image parameter set.
[1190] 6. The method of Clause 2 or 4, wherein the format rule specifies that the field being equal to 0 also indicates that the ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice syntax elements are not present in the image header referencing the image parameter set.
[1191] 7. A video processing method (e.g., Figure 8B The method shown in 810 includes:
[1192] A conversion between a video comprising one or more images containing one or more sub-images and the bitstream of the video is performed according to a format rule (method 812), wherein the format rule specifies that, in response to disabling image segmentation for the image, a first flag is enabled for the image, the first flag indicating whether each sub-image of the image comprises exactly one rectangular stripe.
[1193] 8. The method of Clause 7, wherein the format rule specifies that the first flag is equal to 1 when image segmentation is disabled for the image.
[1194] 9. The method of Clause 7, wherein the format rule specifies that the first flag is equal to 1 when the second flag is equal to 1 to indicate that the image segmentation is disabled for the image.
[1195] 10. The method of Clause 7, wherein the format rule specifies that the first flag equal to 0 indicates that each sub-image of the image is allowed to include one or more rectangular stripes.
[1196] 11. A video processing method (e.g., Figure 8C The method shown in 820 includes:
[1197] A conversion between a video comprising one or more video regions and a bitstream of the video is performed according to a format rule (method 822), wherein the format rule specifies that the bitstream includes deblocking mode indicators for the video regions, the deblocking mode indicators indicating the applicability of a deblocking filter to the video regions during the conversion.
[1198] 12. The method of Item 11, wherein the deblocking mode indicator is an N-bit field, where N is an integer greater than 1.
[1199] 13. The method of Clause 11 or 12, wherein the deblocking mode indicator of the video region is u(2) encoded / decoded.
[1200] 14. The method of Clause 11, wherein the parsing process of the deblocking mode indicator of the video region is an N-bit unsigned integer, where N is an integer greater than 1.
[1201] 15. The method of any one of clauses 11-14, wherein the deblocking mode indicator of the video region is included in the picture parameter set.
[1202] 16. The method of Clause 1, wherein the deblocking mode indicator corresponds to a flag included in the header of the video region, the flag indicating the applicability of the deblocking filter to the video region.
[1203] 17. The method of Clause 16, wherein the video region corresponds to a picture or strip.
[1204] 18. The method of any one of clauses 11-17, wherein the format rule specifies that the signaling notification flag in the deblocking mode indicator for signaling notification of deblocking filter parameters will override the default parameter.
[1205] 19. The method of Clause 18, wherein the format rule specifies that the value of the flag is inferred to be equal to 0 in the absence of the flag.
[1206] 20. A video processing method (e.g., Figure 8D Method 830 shown includes: performing a conversion between a video comprising one or more pictures containing one or more stripes and a bitstream of the video according to a format rule (method 832), wherein the format rule specifies that the offset of the picture level or stripe level color metric parameter is always signaled in the picture header or stripe header.
[1207] 21. The method of Clause 20, wherein the format rule specifies that, in the case that the video has chroma components, the chroma quantization parameter offset is always signaled to the picture level or the strip level, regardless of whether a current flag at the picture parameter set level is signaled to the picture parameter set level, the current flag indicating the presence of a syntax element used to determine the value of the chroma quantization parameter offset.
[1208] 22. The method of Clause 20, wherein the format rule specifies that the syntax element used to determine the value of the colorimetric parameter offset is always present in the associated strip header, regardless of whether a current flag at the picture parameter set level is signaled in the picture parameter set, the current flag indicating the presence of the syntax element.
[1209] 23. The method of any one of clauses 20-22, wherein the format rule specifies that the current flag at the picture parameter set level is omitted, the current flag indicating the presence of a syntax element used to determine the value of the colorimetric parameter offset.
[1210] 24. A video processing method (e.g., Figure 8E The method 840 shown includes: performing a conversion between a video comprising one or more images containing one or more stripes and a bitstream of the video according to a format rule, wherein the format rule specifies that a chroma quantization parameter QP table for the conversion of video blocks applied to the video is derived as an XOR operation between two syntax elements.
[1211] 25. The method of Item 24, wherein the two syntax elements comprise i) delta_qp_in_val_minus1[i][j]+1 and ii) delta_qp_diff_val[i][j], wherein delta_qp_in_val_minus1[i][j] specifies the increment value of the input coordinates for deriving the j-th pivot point of the i-th chroma map, and delta_qp_diff_val[i][j] specifies the increment value of the output coordinates for deriving the j-th pivot point of the i-th chroma QP map, where i and j are integers.
[1212] 26. The method of any one of clauses 1-25, wherein the conversion includes encoding the video into the bitstream.
[1213] 27. The method of any one of clauses 1-25, wherein the conversion includes decoding the video from the bitstream.
[1214] 28. The method of any one of clauses 1-25, wherein the conversion includes generating the bitstream from the video, and the method further includes storing the bitstream in a non-transitory computer-readable recording medium.
[1215] 29. A video processing apparatus, comprising a processor configured to implement the method as described in any one or more of clauses 1-28.
[1216] 30. A method for storing a bitstream of video, comprising the method described in any one of clauses 1-28, further comprising storing the bitstream to a non-transitory computer-readable recording medium.
[1217] 31. A computer-readable medium having program code stored thereon, wherein the program code, when executed, causes a processor to perform the method as described in any one of clauses 1-28.
[1218] 32. A computer-readable medium for storing a bitstream generated by the method described above.
[1219] 33. A video processing apparatus for storing bitstream representations, wherein the video processing apparatus is configured to perform the method as described in any one of clauses 1-28.
[1220] In this paper, 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 a pixel representation of a video to a corresponding bitstream representation, and vice versa. For example, as defined by the syntax, the bitstream representation of the current video block can correspond to bits that are co-located or distributed at different positions within the bitstream. For example, macroblocks can be encoded based on the error residual values of the transform and encoding / decoding, and bits can also be used in the header and other fields of the bitstream. Furthermore, as described in the solutions above, during the conversion process, the decoder can parse the bitstream based on this determination, knowing that certain fields may or may not be present. Similarly, the encoder can determine whether to include or exclude certain syntax fields and generate the codec representation accordingly by including or excluding syntax fields from the codec representation.
[1221] The disclosures and other solutions, examples, embodiments, modules, and functional operations described 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 thereof. The disclosures 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 tangible and non-volatile computer-readable medium for execution by a data processing apparatus or for controlling the operation of the data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a material composition that influences machine-readable propagated signals, or one or more of these. The terms "data processing unit" or "data processing apparatus" include all means, devices, and machines for processing data, including, for example, programmable processors, computers, or multiprocessors or computer groups. In addition to hardware, the apparatus may also include code that creates an execution environment for a computer program, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or combinations thereof. The propagated 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.
[1222] 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 as 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 portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to that program, or in multiple coordinating files (e.g., a file storing one or more modules, subroutines, or portions of code). Computer programs can be deployed and executed on one or more computers located at a single site or distributed across multiple sites interconnected by a communication network.
[1223] The processing and logic flows described in this document can be executed by one or more programmable processors that execute one or more computer programs to perform functions by manipulating input data and generating outputs. The processing and logic flows can also be executed by special-purpose logic circuitry, and the devices can be implemented as special-purpose logic circuitry, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits).
[1224] For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, as well as one or more of any type of digital computer. Typically, the processor receives instructions and data from read-only memory or random access memory, or both. The basic components of a computer are a processor that executes instructions and one or more storage devices that store the instructions and data. Typically, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or receive data from or transfer data to one or more mass storage devices via operative coupling, or both. However, a computer does not necessarily have 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 hard disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and memory may be supplemented by or incorporated into special-purpose logic circuitry.
[1225] While this patent document contains numerous details, it should not be construed as limiting the scope of any invention or claim, but rather as a description of features of specific embodiments of a particular invention. Certain features described in the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment may also be implemented individually in multiple embodiments, or in any suitable sub-combination. Furthermore, although the foregoing features may be described as functioning in certain combinations, or even initially claimed to be so, in certain circumstances, one or more features from a combination of claims may be removed from the combination, and a combination of claims may refer to a sub-combination or a variation of a sub-combination.
[1226] Similarly, although the operations are described in a specific order in the accompanying drawings, this should not be construed as requiring the specific order or sequence shown to perform such operations, or all the described operations, in order to obtain the desired result. Furthermore, the separation of various system components in the embodiments of this patent document should not be construed as requiring such separation in all embodiments.
[1227] Only some implementations and examples are described; other implementations, enhancements, and variations can be made based on the content described and illustrated in this patent document.
Claims
1. A method of video processing, comprising: performing a conversion between a video comprising one or more pictures comprising one or more slices and a bitstream of the video according to a format rule, wherein the format rule specifies that a field is included in a picture parameter set that indicates a presence of a syntax element related to a difference between a luma quantization parameter and a prediction of a coding unit, wherein the syntax element includes i) cu_qp_delta_abs that specifies an absolute value of the difference between the luma quantization parameter and the prediction of the coding unit and ii) cu_qp_delta_sign_flag that specifies a sign of the difference, wherein the format rule specifies that the field equal to 1 indicates that i) cu_qp_delta_abs and ii) cu_qp_delta_sign_flag are allowed to be present in a transform unit syntax and a palette coding syntax.
2. The method of claim 1, wherein, the format rule specifies that the field equal to 0 indicates that i) cu_qp_delta_abs and ii) cu_qp_delta_sign_flag are not present in a transform unit syntax or a palette coding syntax.
3. The method of claim 1, wherein, the format rule specifies that the field equal to 1 further indicates that ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice syntax elements are present in a picture header referring to the picture parameter set, wherein ph_cu_qp_delta_subdiv_intra_slice specifies a maximum cbSubdiv value of coding units in an intra slice that convey cu_qp_delta_abs and cu_qp_delta_sign_flag and ph_cu_qp_delta_subdiv_inter_slice specifies a maximum cbSubdiv value of coding units in an inter slice that convey cu_qp_delta_abs and cu_qp_delta_sign_flag.
4. The method of claim 1 or 2, wherein, The format rule specifies that the field equal to 0 also indicates that the ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice syntax elements are not present in a picture header that references the picture parameter set, where ph_cu_qp_delta_subdiv_intra_slice specifies a maximum cbSubdiv value for coding units in an intra slice that convey cu_qp_delta_abs and cu_qp_delta_sign_flag, and ph_cu_qp_delta_subdiv_inter_slice specifies a maximum cbSubdiv value for coding units in an inter slice that convey cu_qp_delta_abs and cu_qp_delta_sign_flag.
5. The method of claim 1, wherein, The one or more pictures comprise one or more sub-pictures, and The format rule specifies that, in response to the picture partitioning being disabled for the picture, a first flag is enabled for the picture, the first flag indicating whether each sub-picture of a picture comprises exactly one rectangular slice.
6. The method of claim 5, wherein, The format rule specifies that, in the case that the picture partitioning is disabled for the picture, the first flag is equal to 1.
7. The method of claim 5, wherein, The format rule specifies that, in the case that a second flag is equal to 1 indicating that the picture partitioning is disabled for the picture, the first flag is equal to 1.
8. The method of claim 5, wherein, The format rule specifies that the first flag equal to 0 indicates that each sub-picture of the picture is allowed to comprise one or more rectangular slices.
9. The method of claim 1, wherein, The video comprises one or more video regions, and The format rule specifies that the bitstream comprises a deblocking mode indicator for the video region, the deblocking mode indicator indicating an applicability of a deblocking filter to the video region during the conversion.
10. The method of claim 9, wherein, The deblocking mode indicator is an N-bit field, where N is an integer greater than 1.
11. The method of claim 9, wherein, The deblocking mode indicator for the video region is u(2) coded.
12. The method of claim 9, wherein, The parsing process of the deblocking mode indicator for the video region is an N-bit unsigned integer, where N is an integer greater than 1.
13. The method of claim 9, wherein, The deblocking mode indicator for the video region is included in a picture parameter set.
14. The method of claim 9, wherein, The deblocking mode indicator corresponds to a flag included in a header of the video region, the flag indicating an applicability of the deblocking filter to the video region.
15. The method of claim 14, wherein, The video region corresponds to a picture or a slice.
16. The method of claim 9, wherein, The format rule specifies a flag signaling whether deblocking filter parameters signaled in the deblocking mode indicator are to override default parameters.
17. The method of claim 16, wherein, The format rule specifies that, in the case that the flag is not present, a value of the flag is inferred to be equal to 0.
18. The method of claim 1, wherein, The format rule specifies that a picture-level or slice-level chroma quantization parameter offset is always signaled in a picture header or a slice header.
19. The method of claim 18, wherein, The format rule specifies that the picture level or the slice level chroma quantization parameter offset is always signaled in case the video has chroma components, regardless of whether a current flag at picture parameter set level is signaled in a picture parameter set, the current flag indicating the presence of a syntax element for determining a value of the chroma quantization parameter offset.
20. The method of claim 18, wherein, The format rule specifies that a syntax element for determining a value of the chroma quantization parameter offset is always present in an associated slice header, regardless of whether a current flag at picture parameter set level is signaled in a picture parameter set, the current flag indicating the presence of the syntax element.
21. The method of claim 18, wherein, The format rule specifies that a current flag at picture parameter set level is omitted, the current flag indicating the presence of a syntax element for determining a value of the chroma quantization parameter offset.
22. The method of claim 1, wherein, The format rule specifies that a chroma quantization parameter QP table applied to a conversion of a video block of the video is derived as an XOR operation between two syntax elements, wherein the two syntax elements include i) delta_qp_in_val_minus1[i][j] + 1 and ii) delta_qp_diff_val[i][j], where delta_qp_in_val_minus1[i][j] specifies a delta value for deriving an input coordinate of a j-th pivot point of an i-th chroma mapping table, and delta_qp_diff_val[i][j] specifies a delta value for deriving an output coordinate of the j-th pivot point of the i-th chroma QP mapping table, where i and j are integers.
23. The method of any one of claims 1-3, 5-22, wherein, The conversion includes encoding the video into the bitstream.
24. The method of any one of claims 1-3, 5-22, wherein, The conversion includes decoding the video from the bitstream.
25. The method of any one of claims 1-3, 5-22, wherein, The conversion includes generating the bitstream from the video, and the method further includes storing the bitstream in a non-transitory computer-readable recording medium.
26. A video processing apparatus comprising a processor and a memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to implement the method of any of claims 1-25.
27. A computer readable medium having stored thereon a program code, wherein, The program code, when executed, causes a processor to implement the method of any of claims 1-25.
Citation Information
Patent Citations
Apparatus and method for inverse quantization
WO2020057662A1