Conditional Signaling Notification of Video Coding and Decoding Syntax Elements
By using control information and format rules in video encoder and decoder, the encoding and coded representation of videos is solved, and more efficient video data transmission and storage are achieved.
Patent Information
- Application Number
- CN202180031533.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-04-26
- Filing Date
- 2021-04-23
- Publication Date
- 2025-06-13
- Estimated Expiration
- 2041-04-23
AI Technical Summary
The prior art is difficult to effectively handle the encoding and decoding of videos, especially in Internet and digital communication networks with growing bandwidth demand.
By using control information useful for decoding of the codec representation in the video encoder and the decoder, conversion between a video including chrominance components, video regions and video strips and its codec representations is performed and conforms to specific format rules.
It improves the efficiency and effect of video processing, can better adapt to the needs of different video content, and reduces the bandwidth usage needs.
Smart Images

Figure CN115486081B_ABST
Abstract
Description
[0001] Cross - Reference to Related Applications
[0002] This application claims the priority and benefit of U.S. Provisional Patent Application No. 63 / 015,623, filed on April 26, 2020. The entire disclosure of the above - mentioned application is incorporated by reference as part of the disclosure of this application. Technical Field
[0003] This patent document relates to image and video encoding and decoding. Background Art
[0004] Digital video accounts for the largest bandwidth usage on the Internet and other digital communication networks. With the increase in the number of connected user devices capable of receiving and displaying video, the bandwidth demand for digital video use is expected to continue to grow. Summary of the Invention
[0005] This document discloses techniques that can be used by video encoders and decoders for processing coded - decoded representations of video using control information useful for decoding the coded - decoded representations.
[0006] In one example aspect, a video processing method is disclosed. The method includes: performing a conversion between a video having one or more chrominance components and a coded - decoded representation of the video, the video including one or more video pictures including one or more slices, wherein the coded - decoded representation conforms to format rules, and wherein the format rules specify that a chrominance array type field controls constraints on the conversion characteristics of the chrominance used during the conversion.
[0007] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video including one or more video pictures including one or more video regions and a coded - decoded representation of the video, wherein the coded - decoded representation conforms to format rules, the format rules specifying a de - blocking mode indicator for the video region, the indicator indicating the applicability of a de - blocking filter to the video region during the conversion.
[0008] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video including one or more video pictures and a coded - decoded representation of the video, the one or more video pictures including one or more video slices and / or one or more video sub - pictures, wherein the coded - decoded representation conforms to format rules, the format rules specifying a flag that indicates whether a per - sub - picture single - slice mode is considered enabled for a video picture in the case where picture segmentation is disabled for the video picture.
[0009] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video including one or more video pictures each including one or more video stripes and an encoded / decoded representation of the video, where the encoded / decoded representation conforms to a format rule that specifies that a picture or stripe level chrominance quantization parameter offset is signaled in a picture header or a stripe header.
[0010] In another example aspect, another video processing method is disclosed. The method includes: performing a conversion between a video including one or more video pictures each including one or more video stripes and an encoded / decoded representation of the video, where the encoded / decoded representation conforms to a format rule that specifies that a chrominance quantization parameter (QP) table for the transformation of video blocks applicable to the video is derived as an exclusive OR 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 an incremental value for an input coordinate for deriving a j-th pivot point of an i-th chrominance mapping table, and delta_qp_diff_val[i][j] specifies an incremental value for an output coordinate for deriving a j-th pivot point of an i-th chrominance QP mapping table, where i and j are integers.
[0011] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more video pictures and an encoded / decoded representation of the video, where the encoded / decoded representation conforms to a format rule, where the format rule specifies that a first syntax element (SE) indicating whether to signal a motion vector difference (MVD) of a reference picture list (RPL) is conditionally included in the encoded / decoded representation based on a second syntax element (SE) indicating whether reference picture list information is signaled in a picture header and the number of reference pictures in the RPL when the RPL information is present in the picture header.
[0012] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more video pictures and an encoded / decoded representation of the video, where the encoded / decoded representation conforms to a format rule, where the format rule specifies that a first syntax element (SE) indicating whether to disable a decoder motion vector refinement (DMVR) tool is conditionally included in the encoded representation based on whether reference picture list (RPL) information is signaled in a picture header (PH), the number of reference pictures in a previous RPL when the RPL information is present in the PH, and / or a flag indicating the applicability of the DMVR tool included at the sequence parameter set level in the encoded / decoded representation and whether the flag is equal to 1.
[0013] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more video pictures and an encoded representation of the video, where the encoded representation conforms to format rules, and where the format rules specify that a first syntax element (SE) indicating whether to disable a bidirectional optical flow (BDOF) tool is conditionally included in the encoded representation based on a second SE indicating whether reference picture list (RPL) information is signaled in a picture header (PH), the number of reference pictures in RPL-1 when the RPL information is present in the PH, and / or a flag indicating the applicability of the BDOF tool at the sequence parameter set level.
[0014] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more video pictures and an encoded representation of the video, where the encoded representation conforms to format rules, and where the format rules specify that a first syntax element (SE) indicating whether a collocated picture for temporal motion vector prediction is derived from reference picture list 0 is conditionally included based on a second SE indicating whether reference picture list (RPL) information is signaled in a picture header (PH), the number of reference pictures in RPL-1 when the RPL information is present in the picture header (PH), and whether a temporal motion vector prediction (TMVP) tool is enabled for encoding / decoding the current picture.
[0015] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more video pictures and an encoded representation of the video, where the encoded representation conforms to format rules, and where the format rules specify that whether a first syntax element (SE) indicating a prediction weight table is included in the encoded representation is conditional based on a second SE indicating whether weighted prediction (WP) information is signaled in a picture header (PH), whether reference picture list (RPL) information is signaled in the PH, the number of reference pictures in RPL-1 when the RPL information is present in the PH, and whether a flag indicating the applicability of weighted prediction and / or weighted bi-prediction is included in a picture parameter set.
[0016] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more video pictures and an encoded representation of the video, where the encoded representation conforms to format rules, and where the format rules specify that whether it is allowed to use intra slices to represent video pictures in the encoded representation depends on whether the picture allows inter slices and whether there is more than one partition.
[0017] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to formatting rules, where the formatting rules specify that a first syntax element indicating whether a motion vector difference of a specific reference picture list (RPL) is indicated is conditionally included in the bitstream based on (i) a second syntax element indicating whether RPL information is included in a picture header and / or (ii) the number of reference pictures in the specific RPL in the case where the RPL information is present in the picture header.
[0018] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to rules, and where the rules specify which syntax elements in a general constraint information syntax structure indicating one or more constraints applicable to the conversion are grouped together.
[0019] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to formatting rules, and where the formatting rules specify that an indication enabling the use of intra-stripes within a picture for the picture is selectively included based on (i) whether inter-picture stripes are allowed in the picture and / or (ii) whether the picture is segmented into more than one segment.
[0020] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to formatting rules, and where the formatting rules specify that a first syntax element indicating whether a decoder motion vector refinement (DMVR) tool is disabled is conditionally included in the bitstream based on (i) a second syntax element indicating whether reference picture list (RPL) information is included in a picture header (PH), (ii) the number of reference pictures in the RPL in the case where the RPL information is present in the PH, and / or (iii) a flag indicating the applicability of the DMVR tool at the sequence parameter set level included in the bitstream being equal to a certain value.
[0021] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to formatting rules, and where the formatting rules specify that a first syntax element indicating whether a bidirectional optical flow (BDOF) tool is disabled is conditionally included in the bitstream based on (i) a second syntax element indicating whether reference picture list (RPL) information is included in a picture header (PH), (ii) the number of reference pictures in the RPL in the case where the RPL information is present in the PH, and / or (iii) a flag indicating the applicability of the BDOF tool at the sequence parameter set level.
[0022] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to formatting rules, and wherein the formatting rules provide that, based on (i) a second syntax element indicating whether reference picture list (RPL) information is signaled in a picture header (PH), (ii) the number of reference pictures in the RPL in the case where RPL information is present in the PH, and / or (iii) a flag indicating the applicability of a temporal motion vector prediction (TMVP) tool for encoding / decoding a current picture, a first syntax element indicating whether a co-located picture for temporal motion vector prediction is derived from reference picture list 0 is conditionally included.
[0023] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to formatting rules, and wherein the formatting rules provide that, based on (i) a second syntax element indicating whether weighted prediction (WP) information is included in a picture header (PH), (ii) a third syntax element indicating whether reference picture list (RPL) information is included in the PH, (iii) the number of reference pictures in the RPL in the case where RPL information is present in the PH, and / or (iv) a fourth syntax element indicating the applicability of weighted prediction and / or a fifth syntax element indicating the applicability of weighted bi-prediction included in a picture parameter set, a first syntax element indicating a prediction weight table is conditionally included in the bitstream.
[0024] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video according to formatting rules, and wherein the formatting rules provide that, based on (i) a second syntax element indicating whether weighted prediction (WP) information is included in a picture header, (ii) a third syntax element indicating whether reference picture list (RPL) information is included in the picture header, (iii) the number of reference pictures in a particular RPL, and / or (iv) a fourth syntax element included in a picture parameter set and indicating the applicability of explicit weighted prediction for B slices of a reference picture parameter set, a first syntax element indicating the number of weights signaled for an entry in a particular reference picture list is conditionally included in a syntax structure of a table indicating prediction weight parameters of the bitstream.
[0025] In yet another example aspect, a video encoder device is disclosed. The video encoder includes a processor configured to implement the above method.
[0026] In yet another example aspect, a video decoder device is disclosed. The video decoder includes a processor configured to implement the above method.
[0027] In yet another example aspect, a computer-readable medium having code stored thereon is disclosed. The code embodies one of the methods described herein in the form of processor-executable code.
[0028] These and other features described in this document. BRIEF DESCRIPTION OF THE DRAWINGS
[0029] Figure 1 is a block diagram of an example video processing system.
[0030] Figure 2 is a block diagram of a video processing apparatus.
[0031] Figure 3 is a flowchart of an example method of video processing.
[0032] Figure 4 is a block diagram showing a video codec system according to some embodiments of the present disclosure.
[0033] Figure 5 is a block diagram showing an encoder according to some embodiments of the present disclosure.
[0034] Figure 6 is a block diagram showing a decoder according to some embodiments of the present disclosure.
[0035] Figure 7 is a flowchart of an example method of video processing.
[0036] Figures 8A to 8G is a flowchart of an example method of video processing.
[0037] Figure 9 is a flowchart of an example method of video processing. DETAILED DESCRIPTION
[0038] The section headings used in this document are for ease of understanding and do not limit the applicability of the technologies and embodiments disclosed in each section to that section only. Additionally, the use of H.266 terminology in some descriptions is for ease of understanding only and does not limit the scope of the disclosed technologies. Thus, the technologies described herein are also applicable to other video codec protocols and designs.
[0039] 1. Introduction
[0040] This document relates to video codec technology. Specifically, it is about the syntax design of APS, deblocking, sub-pictures, and QP deltas in video coding and decoding. These ideas can be applied alone or in various combinations to any video coding and decoding standard or non-standard video codec that supports multi-layer video coding and decoding (e.g., Versatile Video Coding (VVC) currently under development).
[0041] 2. Abbreviations
[0042] APS Adaptive Parameter Set
[0043] AU Access Unit
[0044] AUD Access Unit Delimiter
[0045] AVC Advanced Video Coding
[0046] CLVS Coding Layer Video Sequence
[0047] CPB Coding Picture Buffer
[0048] CRA Clean Random Access
[0049] CTU Coding Tree Unit
[0050] CVS Coding Video Sequence
[0051] DPB Decoding Picture Buffer
[0052] DPS Decoding Parameter Set
[0053] EOB End of Bitstream
[0054] EOS End of Sequence
[0055] GDR Gradual Decoding Refresh
[0056] HEVC High Efficiency Video Coding
[0057] HRD Hypothetical Reference Decoder
[0058] IDR Instantaneous Decoding Refresh
[0059] JEM Joint Exploration Model
[0060] MCTS Motion Constrained Tile Set
[0061] NAL Network Abstraction Layer
[0062] OLS Output Layer Set
[0063] PH Picture Header
[0064] PPS Picture Parameter Set
[0065] PROF Prediction Refinement Using Optical Flow
[0066] PTL Profile, Tier, Level
[0067] PU Picture Unit
[0068] RBSP Raw Byte Sequence Payload
[0069] SEI supplementary enhancement information
[0070] SH slice header
[0071] SPS sequence parameter set
[0072] SVC scalable video coding
[0073] VCL video coding layer
[0074] VPS video parameter set
[0075] VTM VVC test model
[0076] VUI video usability information
[0077] VVC versatile video coding
[0078] 3. Preliminary discussion
[0079] Video coding standards have evolved mainly through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced the H.261 and H.263 standards, ISO / IEC produced the MPEG-1 and MPEG-4 Visual standards, and the two organizations jointly produced the H.262 / MPEG-2 video standard, the H.264 / MPEG-4 Advanced Video Coding (AVC) standard, and the H.265 / HEVC standard. Since H.262, video coding standards have been based on a hybrid video coding structure that utilizes temporal prediction plus transform coding. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, JVET has adopted many new methods and incorporated them into a reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly simultaneously. The goal of the new coding standard is to reduce the bit rate by 50% compared to HEVC. The new video coding standard was officially named Versatile Video Coding (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was also released at that time. With continuous efforts in VVC standardization, new coding technologies have been adopted into the VVC standard at each JVET meeting. The working draft of VVC and the test model VTM are updated after each meeting. The VVC project now aims to be technically completed (FDIS) at the meeting in July 2020.
[0080] 3.1 PPS syntax and semantics
[0081] In the latest VVC draft text, the syntax and semantics of PPS are as follows:
[0082]
[0083]
[0084]
[0085]
[0086] The PPS RBSP shall be available for the decoding process before being referenced, including in at least one AU where the TemporalId is less than or equal to the TemporalId of the PPS NAL unit, or provided by external means.
[0087] All PPS NAL units with a specific value of pps_pic_parameter_set_id within a PU shall have the same content.
[0088] The pps_pic_parameter_set_id identifies the PPS that other syntax elements refer to. The value of the pps_pic_parameter_set_id shall be in the range of 0 to 63 (including the end values).
[0089] Regardless of the value of nuh_layer_id, the PPS NAL units share the same value space of pps_pic_parameter_set_id.
[0090] Let ppsLayerId be the value of numh_layer_id of a specific PPS NAL unit, and vclLayerId be the value of numh_layer_id of a specific VCL NAL unit. A specific VCL NAL unit shall not refer to a specific PPS NAL unit unless ppsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to ppsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.
[0091] The pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id of the SPS. The value of the pps_seq_parameter_set_id shall be in the range of 0 to 15 (including the end values). The value of the pps_seq_parameter_set_id shall be the same in all PPSs referenced by coded pictures in the CLVS.
[0092] The mixed_nalu_types_in_pic_flag being equal to 1 specifies that each picture of the reference PPS has multiple VCL NAL units, the VCL NAL units do not have the same nal_unit_type value, and the picture is not an IRAP picture. The mixed_nalu_types_in_pic_flag being equal to 0 specifies that each picture of the reference PPS has one or more VCL NAL units, and the VCL NAL units of each picture of the reference PPS have the same nal_unit_type value.
[0093] When no_mixed_nalu_types_in_pic_constraint_flag is equal to 1, the value of mixed_nalu_types_in_pic_flag shall be equal to 0.
[0094] For each slice in picture picA that has a nal_unit_type value nalUnitTypeA in the range from IDR_W_RADL to CRA_NUT (including the end values), and picture picA also contains one or more slices with another value of nal_unit_type (i.e., the value of mixed_nalu_types_in_pic_flag of picture picA is equal to 1), the following applies:
[0095] - The slice shall belong to subpicture subpicA for which the value of subpic_treated_as_pic_flag[i] is equal to 1.
[0096] - The slice shall not belong to a subpicture of picA that contains VCL NAL units with a nal_unit_type not equal to nalUnitTypeA.
[0097] - If nalUnitTypeA is equal to CRA, for all subsequent PUs in the CLVS that are after the current picture in decoding order and output order, neither RefPicList[0] nor RefPicList[1] of the slices in subpicA of these PUs shall include any picture that is before picA in decoding order in the valid entries.
[0098] - Otherwise (i.e., nalUnitTypeA is equal to IDR_W_RADL or IDR_N_LP), for all PUs in the CLVS that are after the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of the slices in subpicA of these PUs shall include any picture that is before picA in decoding order in the valid entries.
[0099] Note 1 – When mixed_nalu_types_in_pic_flag equals 1, it indicates that the picture that references the PPS contains slices with different NAL unit types. For example, for coded pictures resulting from sub-picture bitstream merge operations, the encoder must ensure that the bitstream structure is matched and the parameters of the original bitstream are further aligned. An example of such alignment is as follows: When the value of sps_idr_rpl_flag equals 0 and mixed_nalu_types_in_pic_flag equals 1, the picture that references the PPS shall not have slices with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.
[0100] pic_width_in_luma_samples specifies the width of each decoded picture that references the PPS, in luma samples. pic_width_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8, MinCbSizeY), and shall be less than or equal to pic_width_max_in_luma_samples.
[0101] When res_change_in_clvs_allowed_flag equals 0, the value of pic_width_in_luma_samples shall be equal to pic_width_max_in_luma_samples.
[0102] pic_height_in_luma_samples specifies the height of each decoded picture that references the PPS, in luma samples. pic_height_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8, MinCbSizeY), and shall be less than or equal to pic_height_max_in_luma_samples.
[0103] When res_change_in_clvs_allowed_flag equals 0, the value of pic_height_in_luma_samples shall be equal to pic_height_max_in_luma_samples.
[0104] The derivation of the variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC is as follows:
[0105] PicWidthInCtbsY = Ceil(pic_width_in_luma_samples ÷ CtbSizeY) (69)
[0106] PicHeightInCtbsY = Ceil(pic_height_in_luma_samples ÷ CtbSizeY) (70)
[0107] PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY (71)
[0108] PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY (72)
[0109] PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY (73)
[0110] PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY (74)
[0111] PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples (75)
[0112] PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC (76)
[0113] PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC (77)
[0114] The pps_conformance_window_flag being equal to 1 indicates that the conformance cropping window offset parameter follows immediately in the PPS. The pps_conformance_window_flag being equal to 0 indicates that there is no conformance cropping window offset parameter in the PPS.
[0115] pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset specify the samples of the picture in the CLVS output from the decoding process, which are output according to the rectangular area specified in the picture coordinates. When the pps_conformance_window_flag is equal to 0, the values of pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset are inferred to be equal to 0.
[0116] The conformance cropping window contains luma samples, where the horizontal picture coordinates range from SubWidthC * pps_conf_win_left_offset to pic_width_in_luma_samples - (SubWidthC * pps_conf_win_right_offset + 1), and the vertical picture coordinates range from SubHeightC * pps_conf_win_top_offset to pic_height_in_luma_samples - (SubHeightC * pps_conf_win_bottom_offset + 1), including the end values.
[0117] The value of SubWidthC * (pps_conf_win_left_offset + pps_conf_win_right_offset) shall be less than pic_width_in_luma_samples, and the value of SubHeightC * (pps_conf_win_top_offset + pps_conf_win_bottom_offset) shall be less than pic_height_in_luma_samples.
[0118] When ChromaArrayType is not equal to 0, the corresponding specified samples of the two chroma arrays are the samples with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample.
[0119] Note 2 – The consistency cropping window offset parameters apply only to the output. All internal decoding processes are applied to the uncropped picture size.
[0120] Suppose ppsA and ppsB are any two PPSs that refer to the same SPS. The requirement for bitstream consistency is that when ppsA and ppsB have the same pic_width_in_luma_samples value and pic_height_in_luma_samples value respectively, ppsA and ppsB shall have the same pps_conf_win_left_offset value, pps_conf_win_right_offset value, pps_conf_win_top_offset value, and pps_conf_win_bottom_offset value respectively.
[0121] When pic_width_in_luma_samples is equal to pic_width_max_in_luma_samples and pic_height_in_luma_samples is equal to pic_height_max_in_luma_samples, the requirement for bitstream consistency 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.
[0122] When scaling_window_explicit_signaling_flag equals 1, it specifies that the scaling window offset parameter exists in the PPS. When scaling_window_explicit_signaling_flag equals 0, it specifies that the scaling window offset parameter does not exist in the PPS. When res_change_in_clvs_allowed_flag equals 0, the value of scaling_window_explicit_signaling_flag shall equal 0.
[0123] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify the offsets of the picture dimensions applied to the scaling ratio calculation. When they do not exist, the values of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset 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.
[0124] The value of SubWidthC * (scaling_win_left_offset + scaling_win_right_offset) shall be less than pic_width_in_luma_samples, and the value of SubHeightC * (scaling_win_top_offset + scaling_win_bottom_offset) shall be less than pic_height_in_luma_samples.
[0125] The derivation of the variables PicOutputWidthL and PicOutputHeightL is as follows:
[0126] PicOutputWidthL = pic_width_in_luma_samples - (78)
[0127] SubWidthC * (scaling_win_right_offset + scaling_win_left_offset)
[0128] PicOutputHeightL = pic_height_in_luma_samples - (79)
[0129] Assume that refPicOutputWidthL and refPicOutputHeightL are PicOutputWidthL and PicOutputHeightL of the reference picture of the current picture referring to this PPS respectively. The requirements for bitstream conformance are that all of the following conditions are satisfied:
[0130] – PicOutputWidthL * 2 shall be greater than or equal to refPicWidthInLumaSamples.
[0131] – PicOutputHeightL * 2 shall be greater than or equal to refPicHeightInLumaSamples.
[0132] – PicOutputWidthL shall be less than or equal to refPicWidthInLumaSamples * 8.
[0133] – PicOutputHeightL shall be less than or equal to refPicHeightInLumaSamples * 8.
[0134] – PicOutputWidthL * pic_width_max_in_luma_samples shall be greater than or equal to refPicOutputWidthL * (pic_width_in_luma_samples - Max(8, MinCbSizeY)).
[0135] – PicOutputHeightL * pic_height_max_in_luma_samples shall be greater than or equal to refPicOutputHeightL * (pic_height_in_luma_samples - Max(8, MinCbSizeY)).
[0136] output_flag_present_flag being equal to 1 indicates that the pic_output_flag syntax element is present in the slice header of the reference PPS. output_flag_present_flag being equal to 0 indicates that the pic_output_flag syntax element is not present in the slice header of the reference PPS.
[0137] When subpic_id_mapping_in_pps_flag equals 1, it is specified that the sub-picture ID mapping is signaled in the PPS. When subpic_id_mapping_in_pps_flag equals 0, it is specified that the sub-picture ID mapping is not signaled in the PPS. If subpic_id_mapping_explicitly_signalled_flag is 0 or subpic_id_mapping_in_sps_flag equals 1, the value of subpic_id_mapping_in_pps_flag shall be equal to 0. Otherwise (subpic_id_mapping_explicitly_signalled_flag equals 1 and subpic_id_mapping_in_sps_flag equals 0), the value of subpic_id_mapping_in_pps_flag shall be equal to 1.
[0138] pps_num_subpics_minus1 shall be equal to sps_num_subpics_minus1.
[0139] pps_subpic_id_len_minus1 shall be equal to sps_subpic_id_len_minus1.
[0140] pps_subpic_id[i] specifies the sub-picture ID of the i-th sub-picture. The length of the pps_subpic_id[i] syntax element is pps_subpic_id_len_minus1 + 1 bits.
[0141] For each value of i in the range from 0 to sps_num_subpics_minus1 (including the end values), the derivation of the variable SubpicIdVal[i] is as follows:
[0142]
[0143]
[0144] The requirements for bitstream consistency are to apply the following two constraints:
[0145] -- For any two different values of i and j in the range from 0 to sps_num_subpics_minus1 (including the end values), SubpicIdVal[i] shall not be equal to SubpicIdVal[j].
[0146] --When the current picture is not the first picture of the CLVS, for each i value in the range from 0 to sps_num_subpics_minus1 (including the end values), if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous picture in decoding order in the same layer, the nal_unit_type of all coded and decoded slice NAL units of the subpicture in the current picture with subpicture index i shall be equal to a specific value in the range from IDR_W_RADL to CRA_NUT (including the end values).
[0147] no_pic_partition_flag being equal to 1 specifies that no picture partitioning is applied to each picture of the reference PPS. no_pic_partition_flag being equal to 0 specifies that each picture of the reference PPS can be partitioned into multiple slices or stripes.
[0148] The requirement for bitstream consistency is that the value of no_pic_partition_flag should be the same for all PPSs referred to by the coded and decoded pictures within the CLVS.
[0149] The requirement for bitstream consistency is that when the value of sps_num_subpics_minus1 + 1 is greater than 1, the value of no_pic_partition_flag should not be equal to 1.
[0150] pps_log2_ctu_size_minus5 plus 5 specifies the luminance coded tree block size of each CTU. pps_log2_ctu_size_minus5 shall be equal to sps_log2_ctu_size_minus5.
[0151] num_exp_tile_columns_minus1 plus 1 specifies the number of explicitly provided tile column widths. The value of num_exp_tile_columns_minus1 shall be in the range from 0 to PicWidthInCtbsY – 1 (including the end values). When no_pic_partition_flag is equal to 1, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.
[0152] num_exp_tile_rows_minus1 plus 1 specifies the number of explicitly provided tile row heights. The value of num_exp_tile_rows_minus1 shall be in the range of 0 to PicHeightInCtbsY–1 (inclusive). When no_pic_partition_flag equals 1, the value of num_tile_rows_minus1 is inferred to be equal to 0.
[0153] tile_column_width_minus1[i] plus 1 specifies the width of the i-th tile column where i is in the range of 0 to num_exp_tile_columns_minus1-1 (inclusive) in units of CTB. tile_column_width_minus1[num_exp_tile_columns_minus1] is used to derive the width of tile columns with indices greater than or equal to num_exp_tile_columns_minus1 as specified in Clause 6.5.1. The value of tile_column_width_minus1[i] shall be in the range of 0 to PicWidthInCtbsY–1 (inclusive). When not present, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY-1.
[0154] tile_row_height_minus1[i] plus 1 specifies the height of the i-th tile row where i is in the range of 0 to num_exp_tile_rows_minus1-1 (inclusive) in units of CTB. tile_row_height_minus1[num_exp_tile_rows_minus1] is used to derive the height of tile rows with indices greater than or equal to num_exp_tile_rows_minus1 as specified in Clause 6.5.1. The value of tile_row_height_minus1[i] shall be in the range of 0 to PicHeightInCtbsY–1 (inclusive). When not present, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY-1.
[0155] A rect_slice_flag value of 0 specifies that slices within each strip are in raster scan order and strip information is not signaled in the PPS. A rect_slice_flag value of 1 specifies that slices within each strip cover a rectangular region of the picture and strip information is signaled in the PPS. When not present, the rect_slice_flag is inferred to be equal to 1. When the subpic_info_present_flag is equal to 1, the value of rect_slice_flag shall be equal to 1.
[0156] A single_slice_per_subpic_flag value of 1 specifies that each sub-picture consists of one and only one rectangular strip. A single_slice_per_subpic_flag value of 0 specifies that each sub-picture may consist of one or more rectangular strips. When the single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[0157] num_slices_in_pic_minus1 + 1 specifies the number of rectangular strips in each picture with reference to the PPS. The value of num_slices_in_pic_minus1 shall be in the range of 0 to MaxSlicesPerPicture–1 (inclusive), where MaxSlicesPerPicture is specified in Annex A. When the no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0.
[0158] A tile_idx_delta_present_flag value of 0 specifies that the tile_idx_delta value is not present in the PPS and all rectangular strips in the picture with reference to the PPS are specified in raster order according to the procedure defined in Clause 6.5.1. A tile_idx_delta_present_flag value of 1 specifies that the tile_idx_delta value may be present in the PPS and all rectangular strips in the picture with reference to the PPS are specified in the order indicated by the tile_idx_delta value. When not present, the value of tile_idx_delta_present_flag is inferred to be equal to 0.
[0159] slice_width_in_tiles_minus1[i] is incremented by 1 to specify the width of the i-th rectangular strip in terms of tile columns. The value of slice_width_in_tiles_minus1[i] shall be in the range of 0 to NumTileColumns–1 (including the end values).
[0160] When slice_width_in_tiles_minus1[i] does not exist, the following applies:
[0161] -- If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0162] -- Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred as specified in Clause 6.5.1.
[0163] slice_height_in_tiles_minus1[i] is incremented by 1 to specify the height of the i-th rectangular strip in terms of tile rows. The value of slice_height_in_tiles_minus1[i] shall be in the range of 0 to NumTileRows–1 (including the end values).
[0164] When slice_height_in_tiles_minus1[i] does not exist, the following applies:
[0165] -- If NumTileRows is equal to 1, or tile_idx_delta_present_flag is equal to 0 and tileIdx % NumTileColumns is greater than 0, the value of slice_height_in_tiles_minus1[i] is inferred to be equal to 0.
[0166] -- Otherwise (NumTileRows is not equal to 1, and tile_idx_delta_present_flag is equal to 1 or tileIdx % NumTileColumns is equal to 0), when tile_idx_delta_present_flag is equal to 1 or tileIdx % NumTileColumns is equal to 0, the value of slice_height_in_tiles_minus1[i] is inferred to be equal to slice_height_in_tiles_minus1[i-1].
[0167] num_exp_slices_in_tile[i] specifies the number of stripe heights explicitly provided in the current slice that contains multiple rectangular stripes. The value of num_exp_slices_in_tile[i] shall be in the range of 0 to RowHeight[tileY] – 1 (inclusive), where tileY is the slice row index of the slice that contains the i-th stripe. When it does not exist, the value of num_exp_slices_in_tile[i] is inferred to be equal to 0. When num_exp_slices_in_tile[i] is equal to 0, the value of the variable NumSlicesInTile[i] is derived to be equal to 1.
[0168] exp_slice_height_in_ctus_minus1[j] plus 1 specifies the height of the j-th rectangular stripe in the current slice in units of CTU rows. The value of exp_slice_height_in_ctus_minus1[j] shall be in the range of 0 to RowHeight[tileY] – 1 (inclusive), where tileY is the slice row index of the current slice.
[0169] When num_exp_slices_in_tile[i] is greater than 0, the variables NumSlicesInTile[i] and SliceHeightInCtusMinus1[i + k] for k in the range of 0 to NumSlicesInTile[i] - 1 (inclusive) are derived as follows:
[0170]
[0171] tile_idx_delta[i] specifies the difference between the slice index of the first slice in the i-th rectangular stripe and the slice index of the first slice in the (i + 1)-th rectangular stripe. The value of tile_idx_delta[i] shall be in the range of -NumTilesInPic + 1 to NumTilesInPic – 1 (inclusive). When it does not exist, the value of tile_idx_delta[i] is inferred to be equal to 0. When it exists, the value of tile_idx_delta[i] shall not be equal to 0.
[0172] The loop_filter_across_tiles_enabled_flag being equal to 1 specifies that loop filtering operations can be performed across tile boundaries in the picture of the reference PPS. The loop_filter_cross_tiles_enabled_flag being equal to 0 specifies that loop filtering operations are not performed across tile boundaries in the picture of the reference PPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of loop_filter_cross_tiles_enabled_flag is inferred to be equal to 1.
[0173] The loop_filter_cross_slices_enabled_flag being equal to 1 specifies that loop filtering operations can be performed across slice boundaries in the picture of the reference PPS. The loop_filter_cross_slice_enabled_flag being equal to 0 specifies that loop filtering operations are not performed across slice boundaries in the picture of the reference PPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of loop_filter_cross_slices_enabled_flag is inferred to be equal to 0.
[0174] The cabac_init_present_flag being equal to 1 specifies that the cabac_init_flag is present in the slice header of the reference PPS. The cabac_init_present_flag being equal to 0 specifies that the cabac_init_flag is not present in the slice header of the reference PPS.
[0175] num_ref_idx_default_active_minus1[i] plus 1, when equal to 0, specifies the inferred value of the variable NumRefIdxActive[0] for P-slices or B-slices with num_ref_idx_active_override_flag equal to 0, and when i is equal to 1, specifies the inferred value of NumRefIdxActive[1] for B-slices with num_ref_idx_active_override_flag equal to 0. The value of num_ref_idx_default_active_minus1[i] shall be in the range of 0 to 14 (inclusive of the end values).
[0176] When rpl1_idx_present_flag equals 0, it is specified that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] do not exist in the PH syntax structure or in the slice header of the pictures in the reference PPS. When rpl1_idx_present_flag equals 1, it is specified that ref_pic_list_sps_flag[1] and ref_pic_list_idx[1] may exist in the PH syntax structure or in the slice header of the pictures in the reference PPS.
[0177] init_qp_minus26 plus 26 specifies the initial value of SliceQp Y for each slice in the reference PPS. When a non-zero value of ph_qp_delta is decoded, the initial value of SliceQp Y is modified at the picture level, or when a non-zero value of slice_qp_delta is decoded, the initial value of SliceQp Y is modified at the slice level. The value of init_qp_minus26 shall be in the range of -(26 + QpBdOffset) to +37 (including the end values).
[0178] When cu_qp_delta_enabled_flag equals 1, it is specified that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice exist in the PH of the reference PPS and cu_qp_delta_abs may exist in the transform unit syntax. When cu_qp_delta_enabled_flag equals 0, it is specified that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice do not exist in the PH of the reference PPS, and cu_qp_delta_abs does not exist in the transform unit syntax.
[0179] When pps_chroma_tool_offsets_present_flag equals 1, it is specified that syntax elements related to chroma tool offsets exist in the PPS RBSP syntax structure. When pps_chroma_tool_offsets_present_flag equals 0, it is specified that syntax elements related to chroma tool offsets do not exist in the PPS RBSP syntax structure. When ChromaArrayType equals 0, the value of pps_chroma_tool_offsets_present_flag shall equal 0.
[0180] The pps_cb_qp_offset and pps_cr_qp_offset respectively specify the offsets used to derive the luma quantization parameter Qp′ Cb and Qp′ Cr of the luma quantization parameter Qp′ Y The values of pps_cb_qp_offset and pps_cr_qp_offset shall be in the range of - 12 to +12 (including the end values). When ChromaArrayType is equal to 0, pps_cb_qp_offset and pps_cr_qp_offset are not used in the decoding process, and the decoder shall ignore their values. When not present, the values of pps_cb_qp_offset and pps_cr_qp_offset are inferred to be equal to 0.
[0181] That pps_joint_cbcr_qp_offset_present_flag is equal to 1 specifies that pps_joint_cbcr_qp_offset_value and joint_cbcr_qp_offset_list[i] are present in the PPS RBSP syntax structure. That pps_joint_cbcr_qp_offset_present_flag is equal to 0 specifies that pps_joint_cbcr_qp_offset_value and joint_cbcr_qp_offset_list[i] are not present in the PPS RBSP syntax structure. When ChromaArrayType is equal to 0 or sps_joint_cbcr_enabled_flag is equal to 0, the value of pps_joint_cbcr_qp_offset_present_flag shall be equal to 0. When not present, the value of pps_joint_cbcr_qp_offset_present_flag is inferred to be equal to 0.
[0182] pps_joint_cbcr_qp_offset_value specifies the offset used to derive the luma quantization parameter Qp′ CbCr of the luma quantization parameter Qp′ YOffset. The value of pps_joint_cbcr_qp_offset_value shall be in the range of -12 to +12 (including the end values). When ChromaArrayType is equal to 0 or sps_joint_cbcr_enabled_flag is equal to 0, pps_joint_cbcr_qp_offset_value is not used during the decoding process, and the decoder shall ignore its value. When pps_joint_cbcr_qp_offset_present_flag is equal to 0, pps_joint_cbcr_qp_offset_value does not exist and is inferred to be equal to 0.
[0183] That pps_slice_chroma_qp_offsets_present_flag is equal to 1 specifies that the slice_cb_qp_offset and slice_cr_qp_offset syntax elements are present in the associated slice header. That pps_slice_chroma_qp_offsets_present_flag is equal to 0 specifies that the slice_cb_qp_offset and slice_cr_qp_offset syntax elements are not present in the associated slice header. When not present, the value of pps_slice_chroma_qp_offsets_present_flag is inferred to be equal to 0.
[0184] That pps_cu_chroma_qp_offset_list_enabled_flag is equal to 1 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are present in the PH of the reference PPS, and the cu_chroma_qp_offset_flag may be present in the transform unit syntax and palette coding / decoding syntax. That pps_cu_chroma_qp_offset_list_enabled_flag is equal to 0 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are not present in the PH of the reference PPS, and the cu_chroma_qp_offset_flag is not present in the transform unit syntax and palette coding / decoding syntax. When not present, the value of pps_cu_chroma_qp_offset_list_enabled_flag is inferred to be equal to 0.
[0185] chroma_qp_offset_list_len_minus1 plus 1 specifies the number of the syntax elements cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] that exist in the PPS RBSP syntax structure. The value of chroma_qp_offset_list_len_minus1 shall be in the range of 0 to 5 (including the end values).
[0186] cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] respectively specify the offsets used in the derivation of Qp′ Cb , Qp′ Cr and Qp′ CbCr . The values of cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] shall be in the range of -12 to +12 (including the end values). When pps_joint_cbcr_qp_offset_present_flag is equal to 0, joint_cbcr_qp_offset_list[i] does not exist and is inferred to be equal to 0.
[0187] pps_weighted_pred_flag being equal to 0 specifies that weighted prediction shall not be applied to P slices that refer to the PPS. pps_weighted_pred_flag being equal to 1 specifies that weighted prediction shall be applied to P slices that refer to the PPS. When sps_weighted_pred_flag is equal to 0, the value of pps_weighted_pred_flag shall be equal to 0.
[0188] pps_weighted_bipred_flag being equal to 0 specifies that explicit weighted prediction shall not be applied to B slices that refer to the PPS. pps_weighted_bipred_flag being equal to 1 specifies that explicit weighted prediction shall be applied to B slices that refer to the PPS. When sps_weighted_bipred_flag is equal to 0, the value of pps_weighted_bipred_flag shall be equal to 0.
[0189] When deblocking_filter_control_present_flag equals 1, it specifies that there are deblocking filter control syntax elements in the PPS. When deblocking_filter_control_present_flag equals 0, it specifies that there are no deblocking filter control syntax elements in the PPS.
[0190] When deblocking_filter_override_enabled_flag equals 1, it specifies that ph_deblocking_filter_override_flag exists in the PH of the reference PPS, or slice_deblocking_filter_override_flag exists in the slice header of the reference PPS. When deblocking_filter_override_enabled_flag equals 0, it specifies that ph_deblocking_filter_override_flag does not exist in the PH of the reference PPS, or slice_deblocking_filter_override_flag does not exist in the slice header of the reference PPS. When it does not exist, the value of deblocking_filter_override_enabled_flag is inferred to be equal to 0.
[0191] When pps_deblocking_filter_disabled_flag equals 1, it specifies that the operation of the deblocking filter does not apply to slices that reference a PPS in which slice_deblocking_filter_disabled_flag does not exist. When pps_deblocking_filter_disabled_flag equals 0, it specifies that the operation of the deblocking filter applies to slices that reference a PPS in which slice_deblocking_filter_disabled_flag does not exist. When it does not exist, the value of pps_deblocking_filter_disabled_flag is inferred to be equal to 0.
[0192] pps_beta_offset_div2 and pps_tc_offset_div2 specify default deblocking parameter offsets for β and tC (divided by 2), and these parameter offsets are applied to the luma component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slices of the reference PPS. The values of both pps_beta_offset_div2 and pps_tc_offset_div2 shall be in the range of -12 to 12 (inclusive of the end values). When not present, the values of both pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.
[0193] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify default deblocking parameter offsets for β and tC (divided by 2), and these parameter offsets are applied to the Cb component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slices of the reference PPS. The values of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 shall be in the range of -12 to 12 (inclusive of the end values). When not present, the values of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are inferred to be equal to 0.
[0194] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify default deblocking parameter offsets for β and tC (divided by 2), and these parameter offsets are applied to the Cr component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slices of the reference PPS. The values of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 shall be in the range of -12 to 12 (inclusive of the end values). When not present, the values of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are inferred to be equal to 0.
[0195] rpl_info_in_ph_flag being equal to 1 specifies that reference picture list information exists in the PH syntax structure and does not exist in the slice headers of PPSs that do not contain the PH syntax structure. rpl_info_in_ph_flag being equal to 0 specifies that reference picture list information does not exist in the PH syntax structure and may exist in the slice headers of PPSs that do not contain the PH syntax structure.
[0196] When dbf_info_in_ph_flag is equal to 1, it is specified that the deblocking filter information exists in the PH syntax structure and does not exist in the slice header of the PPS that does not contain the PH syntax structure in the reference. When dbf_info_in_ph_flag is equal to 0, it is specified that the deblocking filter information does not exist in the PH syntax structure and may exist in the slice header of the PPS that does not contain the PH syntax structure in the reference. When it does not exist, the value of dbf_info_in_ph_flag is inferred to be equal to 0.
[0197] When sao_info_in_ph_flag is equal to 1, it is specified that the SAO filter information exists in the PH syntax structure and does not exist in the slice header of the PPS that does not contain the PH syntax structure in the reference. When sao_info_in_ph_flag is equal to 0, it is specified that the SAO filter information does not exist in the PH syntax structure and may exist in the slice header of the PPS that does not contain the PH syntax structure in the reference.
[0198] When alf_info_in_ph_flag is equal to 1, it is specified that the ALF information exists in the PH syntax structure and does not exist in the slice header of the PPS that does not contain the PH syntax structure in the reference. When alf_info_in_ph_flag is equal to 0, it is specified that the ALF information does not exist in the PH syntax structure and may exist in the slice header of the PPS that does not contain the PH syntax structure in the reference.
[0199] When wp_info_in_ph_flag is equal to 1, it is specified that the weighted prediction information may exist in the PH syntax structure and does not exist in the slice header of the PPS that does not contain the PH syntax structure in the reference. When wp_info_in_ph_flag is equal to 0, it is specified that the weighted prediction information does not exist in the PH syntax structure and may exist in the slice header of the PPS that does not contain the PH syntax structure in the reference. When it does not exist, the value of wp_info_in_ph_flag is inferred to be equal to 0.
[0200] When qp_delta_info_in_ph_flag is equal to 1, it is specified that the QP delta information exists in the PH syntax structure and does not exist in the slice header of the PPS that does not contain the PH syntax structure in the reference. When qp_delta_info_in_ph_flag is equal to 0, it is specified that the QP delta information does not exist in the PH syntax structure and may exist in the slice header of the PPS that does not contain the PH syntax structure in the reference.
[0201] The pps_ref_wraparound_enabled_flag being equal to 1 specifies that horizontal wrap-around motion compensation is applied in inter prediction. The pps_ref_wraparound_enabled_flag being equal to 0 specifies that horizontal wrap-around 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 shall be equal to 0. When sps_ref_wraparound_enabled_flag is equal to 0, the value of pps_ref_wraparound_enabled_flag shall be equal to 0.
[0202] pps_ref_wraparound_offset plus (CtbSizeY / MinCbSizeY) + 2 specifies the offset used to calculate the horizontal wrap-around position in units of MinCbSizeY luma samples. The value of pps_ref_wraparound_offset shall be in the range (including the end values) from 0 to (pic_width_in_luma_samples / MinCbSizeY) - (CtbSizeY / MinCbSizeY) - 2.
[0203] The variable PpsRefWraparoundOffset is set to be equal to pps_ref_wraparound_offset + (CtbSizeY / MinCbSizeY) + 2.
[0204] The picture_header_extension_present_flag being equal to 0 specifies that the PH extension syntax element does not exist in the PH of the reference PPS. The picture_header_extension_present_flag being equal to 1 specifies that the PH extension syntax element exists in the PH of the reference PPS. In a bitstream compliant with this version of this specification, the picture_header_extension_present_flag shall be equal to 0.
[0205] When slice_header_extension_present_flag equals 0, it is specified that there is no slice header extension syntax element in the slice header of the decoded picture with reference to the PPS. When slice_header_extension_present_flag equals 1, it is specified that the slice header extension syntax element exists in the slice header of the decoded picture with reference to the PPS. In a bitstream compliant with this version of this specification, slice_header_extension_present_flag shall equal 0.
[0206] When pps_extension_flag equals 0, it is specified that there is no pps_extension_data_flag syntax element in the PPS RBSP syntax structure. When pps_extension_flag equals 1, it is specified that there is a pps_extension_data_flag syntax element in the PPS RBSP syntax structure.
[0207] pps_extension_data_flag can have any value. Its presence and value do not affect the decoder's compliance with the profiles specified in this version of this specification. Decoders compliant with this version of this specification shall ignore all pps_extension_data_flag syntax elements.
[0208] 3.2 APS Syntax and Semantics
[0209] In the latest VVC draft text, the syntax and semantics of APS are as follows:
[0210]
[0211] The APS RBSP contains the ALF syntax structure, i.e., alf_data().
[0212]
[0213]
[0214]
[0215] The APS RBSP contains the LMCS syntax structure, i.e., lmcs_data().
[0216]
[0217]
[0218] The APS RBSP contains the scaling list data syntax structure, i.e., scaling_list_data().
[0219]
[0220]
[0221] Each APS RBSP shall be available for the decoding process before being referenced, including in at least one AU where the TemporalId is less than or equal to the TemporalId of the coded slice NAL unit that references it or provided by external means.
[0222] All APS NAL units having a specific value of adaptation_parameter_set_id and a specific value of aps_params_type within a PU, whether they are prefix APS NAL units or suffix APS NAL units, shall have the same content.
[0223] adaptation_parameter_set_id provides an identifier for the APS for reference by other syntax elements.
[0224] When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 7 (inclusive of the end values).
[0225] When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 3 (inclusive of the end values).
[0226] Let apsLayerId be the value of nuh_layer_id of a specific APS NAL unit and vclLayerId be the value of nuh_layer_id of a specific VCL NAL unit. A specific VCL NAL unit shall not reference a specific APS NAL unit unless apsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to apsLayerId is included in at least one OLS that contains the layer with nuh_layer_id equal to vclLayerId.
[0227] aps_params_type specifies the type of APS parameters carried in the APS, as specified in Table 6.
[0228] Table 6 – APS Parameter Type Codes and APS Parameter Types
[0229]
[0230] All APS NAL units with a specific value of aps_params_type share the same value space for adaptation_parameter_set_id, regardless of the nuh_layer_id value. APS NAL units with different values of aps_params_type use separate value spaces for adaptation_parameter_set_id.
[0231] Note 1 – An APS NAL unit (with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type) can be shared across pictures, and different slices within a picture can refer to different ALF APSs.
[0232] Note 2 - A suffix APS NAL unit associated with a specific VCL NAL unit (where the VCL NAL unit is before the suffix APS NAL unit in decoding order) is not used by the specific VCL NAL unit, but rather by VCL NAL units that are after the suffix APS NAL unit in decoding order.
[0233] aps_extension_flag being equal to 0 specifies that the aps_extension_data_flag syntax element does not exist in the APS RBSP syntax structure. aps_extension_flag being equal to 1 specifies that the aps_extension_data_flag syntax element exists in the APS RBSP syntax structure.
[0234] aps_extension_data_flag can have any value. Its presence and value do not affect the decoder's compliance with the profiles specified in this version of this specification. Decoders compliant with this version of this specification shall ignore all aps_extension_data_flag syntax elements.
[0235] alf_luma_filter_signal_flag being equal to 1 specifies that the luma filter set is signaled. alf_luma_filter_signal_flag being equal to 0 specifies that the luma filter set is not signaled.
[0236] When alf_chroma_filter_signal_flag equals 1, it is specified that the chroma filter is signaled. When alf_chroma_filter_signal_flag equals 0, it is specified that the chroma filter is not signaled. When ChromaArrayType equals 0, alf_chroma_filter_signal_flag shall equal 0.
[0237] At least one of the values of alf_luma_filter_signal_flag, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag shall equal 1.
[0238] The variable NumAlfFilters, which specifies the number of different adaptive loop filters, is set to equal 25.
[0239] When alf_luma_clip_flag equals 0, it is specified that linear adaptive loop filtering is applied to the luma component. When alf_luma_clip_flag equals 1, it is specified that non-linear adaptive loop filtering can be applied to the luma component.
[0240] alf_luma_num_filters_signalled_minus1 plus 1 specifies the number of adaptive loop filter classes for which the luma coefficients can be signaled. The value of alf_luma_num_filters_signalled_minus1 shall be in the range of 0 to NumAlfFilters–1 (inclusive).
[0241] alf_luma_coeff_delta_idx[filtIdx] specifies the index of the signaled adaptive loop filter luma coefficient increment for the filter class indicated by filtIdx ranging from 0 to NumAlfFilters - 1. When alf_luma_coeff_delta_idx[filtIdx] does not exist, it is inferred to equal 0. The length of alf_luma_coeff_delta_idx[filt idx] is Ceil(Log2(alf_luma_num_filters_signalled_minus1+1)) bits. The value of alf_luma_coeff_delta_idx[filtIdx] shall be in the range of 0 to alf_luma_num_filters_signalled_minus1 (inclusive).
[0242] alf_luma_coeff_abs[sfIdx][j] specifies the absolute value of the j-th coefficient of the luma filter signaled 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] shall be in the range of 0 to 128 (including the end values).
[0243] alf_luma_coeff_sign[sfIdx][j] specifies the sign of the j-th luma coefficient of the filter indicated by sfIdx, as follows:
[0244] -- If alf_luma_coeff_sign[sfIdx][j] is equal to 0, the corresponding luma filter coefficient has a positive value.
[0245] -- Otherwise (alf_luma_coeff_sign[sfIdx][j] is equal to 1), the corresponding luma filter coefficient has a negative value.
[0246] When alf_luma_coeff_sign[sfIdx][j] does not exist, it is inferred to be equal to 0.
[0247] The variable filtCoeff[sfIdx][j] where sfIdx = 0..alf_luma_num_filters_signalled_minus1, j = 0..11 is initialized as follows:
[0248] filtCoeff[sfIdx][j] = alf_luma_coeff_abs[sfIdx][j] * (93)
[0249] (1 - 2 * alf_luma_coeff_sign[sfIdx][j])
[0250] With elements AlfCoeff L [adaptation_parameter_set_id][filtIdx][j] (where filtIdx = 0..NumAlfFilters – 1 and j = 0..11) of the luma filter coefficients AlfCoeff L [adaptation_parameter_set_id] is derived as follows:
[0251] AlfCoeff L[adaptation_parameter_set_id][filtIdx][j] = filtCoeff[alf_luma_coeff_delta_id
[0252] x[filtIdx]][j](94)
[0253] The fixed filter coefficients AlfFixFiltCoeff[i][j] for i = 0..64, j = 0..11 and the class-to-filter mapping AlfClassToFiltMap[m][n] for m = 0..15 and n = 0..24 are derived as follows:
[0254]
[0255]
[0256]
[0257]
[0258] The requirement for bitstream consistency is that the values of AlfCoeff for filtIdx = 0..NumAlfFilters – 1, j = 0..11 L [adaptation_parameter_set_id][filtIdx][j] should be in the range of -2 7 to 2 7 –1 (including the end values).
[0259] alf_luma_clip_idx[sfIdx][j] specifies the clipping index of the clipping value to be used before multiplying the j-th coefficient of the luma filter signalled by sfIdx. The requirement for bitstream consistency is that the values of alf_luma_clip_idx[sfIdx][j] for sfIdx = 0..alf_luma_num_filters_signalled_minus1 and j = 0..11 should be in the range of 0 to 3 (including the end values).
[0260] The luma filter clipping values AlfClip of the elements AlfClip L [adaptation_parameter_set_id][filtIdx][j] with filtIdx = 0..NumAlfFilters – 1 and j = 0..11 L[adaptation_parameter_set_id] is derived according to the BitDepth and clipIdx set to be equal to alf_luma_clip_idx[alf_luma_coeff_delta_idx[filtIdx]][j], as specified in Table 8.
[0261] alf_chroma_clip_flag being equal to 0 specifies that linear adaptive loop filtering is applied to the chroma components; alf_chroma_clip_flag being equal to 1 specifies that non - linear adaptive loop filtering is applied to the chroma components. When absent, alf_chroma_clip_flag is inferred to be equal to 0.
[0262] alf_chroma_num_alt_filters_minus1 plus 1 specifies the number of alternative filters for the chroma components. The value of alf_chroma_num_alt_filters_minus1 shall be in the range of 0 to 7 (including the end values).
[0263] alf_chroma_coeff_abs[altIdx][j] specifies the absolute value of the j - th chroma filter coefficient of the alternative chroma filter with index altIdx. When alf_chroma_coeff_abs[altIdx][j] is absent, it is inferred to be equal to 0. The value of alf_chroma_coeff_abs[sfIdx][j] shall be in the range of 0 to 128 (including the end values).
[0264] alf_chroma_coeff_sign[altIdx][j] specifies the sign of the j - th chroma filter coefficient of the alternative chroma filter with index altIdx, as follows:
[0265] -- If alf_chroma_coeff_sign[altIdx][j] is equal to 0, the corresponding chroma filter coefficient has a positive value.
[0266] -- Otherwise (alf_chroma_coeff_sign[altIdx][j] is equal to 1), the corresponding chroma filter coefficient has a negative value.
[0267] When alf_chroma_coeff_sign[altIdx][j] is absent, it is inferred to be equal to 0.
[0268] Having elements AlfCoeff CThe chroma filter coefficients AlfCoeff of [[adaptation_parameter_set_id]][altIdx][j] C The derivation of [[adaptation_parameter_set_id]][altIdx] (where altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5) is as follows:
[0269] AlfCoeff C [[adaptation_parameter_set_id]][altIdx][j] = alf_chroma_coeff_abs[altIdx][j]
[0270] *(97)
[0271] (1 - 2 * alf_chroma_coeff_sign[altIdx][j])
[0272] The requirement for bitstream consistency is that the value of AlfCoeff for altIdx = 0..alf_chroma_num_alt_filters_minus1 and j = 0..5 C for [[adaptation_parameter_set_id]][altIdx][j] should be in the range of -2 7 to 2 7 –1 (including the end values).
[0273] When alf_cc_cb_filter_signal_flag is equal to 1, the cross-component filter for the Cb color component is signaled. When alf_cc_cb_filter_signal_flag is equal to 0, the cross-component filter for the Cb color component is not signaled. When ChromaArrayType is equal to 0, alf_cc_cb_filter_signal_flag shall be equal to 0.
[0274] alf_cc_cb_filters_signalled_minus1 plus 1 specifies the number of cross-component filters for the Cb color component signaled in the current ALF APS. The value of alf_cc_cb_filters_signalled_minus1 shall be in the range of 0 to 3 (including the end values).
[0275] alf_cc_cb_mapped_coeff_abs[k][j] specifies the absolute value of the j-th mapped coefficient of the k-th cross-component filter signaled for the Cb color component. When alf_cc_cb_mapped_coeff_abs[k][j] is not present, it is inferred to be equal to 0.
[0276] alf_cc_cb_coeff_sign[k][j] specifies the sign of the j-th coefficient of the k-th cross-component filter signaled for the Cb color component, as follows:
[0277] -- If alf_cc_cb_coeff_sign[k][j] is equal to 0, the corresponding cross-component filter coefficient has a positive value.
[0278] -- Otherwise (alf_cc_cb_sign[k][j] is equal to 1), the corresponding cross-component filter coefficient has a negative value.
[0279] When alf_cc_cb_coeff_sign[k][j] is not present, it is inferred to be equal to 0.
[0280] The Cb color component CcAlfApsCoeff for j = 0..6 Cb [adaptation_parameter_set_id][k][j], the signaled k-th cross-component filter coefficient, is derived as follows:
[0281] -- If alf_cc_cb_mapped_coeff_abs[k][j] is equal to 0, then CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] is set to be equal to 0.
[0282] -- Otherwise, CcAlfApsCoeff Cb [adaptation_parameter_set_id][k][j] is set to be equal to (1 - 2 * alf_cc_cb_coeff_sign[k][j]) * 2 alf_cc_cb_mapped_coeff_abs[k][j]-1 .
[0283] When alf_cc_cr_filter_signal_flag equals 1, the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag equals 0, the cross-component filter for the Cr color component is not signaled. When ChromaArrayType equals 0, alf_cc_cr_filter_signal_flag shall equal 0.
[0284] alf_cc_cr_filters_signalled_minus1 plus 1 specifies the number of cross-component filters for the Cr color component signaled in the current ALF APS. The value of alf_cc_cr_filters_signalled_minus1 shall be in the range of 0 to 3 (inclusive).
[0285] alf_cc_cr_mapped coeff_abs[k][j] specifies the absolute value of the j-th mapped coefficient of the k-th cross-component filter signaled for the Cr color component. When alf_cc_cr_mapped coeff_abs[k][j] does not exist, it is inferred to be equal to 0.
[0286] alf_cc_cr_coeff_sign[k][j] specifies the sign of the j-th coefficient of the k-th cross-component filter signaled for the Cr color component, as follows:
[0287] -- If alf_cc_cr_coeff_sign[k][j] equals 0, the corresponding cross-component filter coefficient has a positive value.
[0288] -- Otherwise (alf_cc_cr_sign[k][j] equals 1), the corresponding cross-component filter coefficient has a negative value.
[0289] When alf_cc_cr_coeff_sign[k][j] does not exist, it is inferred to be equal to 0.
[0290] The k-th cross-component filter coefficient CcAlfApsCoeff for the Cr color component with j = 0..6 Cr [adaptation_parameter_set_id][k][j] is derived as follows:
[0291] -- If alf_cc_cr_mapped_coeff_abs[k][j] equals 0, then CcAlfApsCoeff Cr[adaptation_parameter_set_id][k][j] is set to be equal to 0.
[0292] -- Otherwise, CcAlfApsCoeff Cr [adaptation_parameter_set_id][k][j] is set to be equal to (1 - 2 * alf_cc_cr_coeff_sign[k][j]) * 2 alf_cc_cr_mapped_coeff_abs[k][j]-1 .
[0293] alf_chroma_clip_idx[altIdx][j] specifies the clipping index of the clipping value to be used before multiplying the j-th coefficient of the alternative chroma filter with index altIdx. The requirement for bitstream conformance is that the values of alf_chroma_clip_idx[altIdx][j] for altIdx = 0..alf_chroma_num_alt_filters_minus1, j = 0..5 should be in the range from 0 to 3 (including the end values).
[0294] The chroma filter clipping value AlfClipC[adaptation_parameter_set_id][altIdx] with elements AlfClipC[adaptation_parameter_set_id][altIdx][j] (where altIdx = 0..alf_chroma_num_alt_filters_minus1, j = 0..5) is derived according to the BitDepth and clipIdx set to be equal to alf_chroma_clip_idx[altIdx][j], as specified in Table 8.
[0295] Table 8 - Specification of AlfClip Depending on BitDepth and clipIdx
[0296]
[0297] lmcs_min_bin_idx specifies the minimum bin index used in the luminance mapping construction process with chroma scaling. The value of lmcs_min_bin_idx should be in the range from 0 to 15 (including the end values).
[0298] The lmcs_delta_max_bin_idx specifies the increment value between 15 and the maximum bin index LmcsMaxBinIdx, which is used in the luminance mapping construction process with chroma scaling. The value of lmcs_delta_max_bin_idx shall be in the range of 0 to 15 (including the end values). The value of LmcsMaxBinIdx is set to be equal to 15 - lmcs_delta_max_bin_idx. The value of LmcsMaxBinIdx shall be greater than or equal to lmcs_min_bin_idx.
[0299] lmcs_delta_cw_prec_minus1 plus 1 specifies the number of bits used to represent the syntax lmcs_delta_abs_cw[i]. The value of lmcs_delta_cw_prec_minus1 shall be in the range of 0 to BitDepth–2 (including the end values).
[0300] lmcs_delta_abs_cw[i] specifies the absolute increment codeword value for the i-th bin.
[0301] lmcs_delta_sign_cw_flag[i] specifies the sign of the variable lmcsDeltaCW[i] as follows:
[0302] -- If lmcs_delta_sign_cw_flag[i] is equal to 0, then lmcsDeltaCW[i] is positive.
[0303] -- Otherwise (lmcs_delta_sign_cw_flag[i] is not equal to 0), lmcsDeltaCW[i] is negative.
[0304] When lmcs_delta_sign_cw_flag[i] does not exist, it is inferred to be equal to 0.
[0305] The variable OrgCW is derived as follows:
[0306] OrgCW = (1 << BitDepth) / 16 (98)
[0307] The variable lmcsDeltaCW[i] for i = lmcs_min_bin_idx..LmcsMaxBinIdx is derived as follows:
[0308] lmcsDeltaCW[i] = (1 - 2*lmcs_delta_sign_cw_flag[i])*lmcs_delta_abs_cw[i] (99)
[0309] The variable lmcsCW[i] is derived as follows:
[0310] -- For i = 0..lmcs_min_bin_idx - 1, lmcsCW[i] is set to be equal to 0.
[0311] -- For i = lmcs_min_bin_idx..LmcsMaxBinIdx, the following applies:
[0312] lmcsCW[i] = OrgCW + lmcsDeltaCW[i] (100)
[0313] The value of lmcsCW[i] shall be in the range of (OrgCW >> 3) to (OrgCW << 3 - 1) (including the end values).
[0314] -- For i = LmcsMaxBinIdx + 1..15, lmcsCW[i] is set to be equal to 0.
[0315] The requirement for bitstream consistency is that the following condition is true:
[0316]
[0317] The variable InputPivot[i] (where i = 0..16) is derived as follows:
[0318] InputPivot[i] = i * OrgCW (102)
[0319] The variables LmcsPivot[i] for i = 0..16, ScaleCoeff[i] and InvScaleCoeff[i] for i = 0..15 are derived as follows:
[0320]
[0321]
[0322] The requirement for bitstream consistency is that for i = lmcs_min_bin_idx..LmcsMaxBinIdx, when the value of LmcsPivot[i] is not a multiple of 1 << (BitDepth - 5), the value of (LmcsPivot[i] >> (BitDepth - 5)) shall not be equal to the value of (LmcsPivot[i + 1] >> (BitDepth - 5)).
[0323] The lmcs_delta_abs_crs specifies the absolute codeword value of the variable lmcsDeltaCrs. The value of lmcs_delta_abs_crs shall be in the range of 0 to 7 (including the end values). When absent, lmcs_delta_abs_crs is inferred to be equal to 0.
[0324] The lmcs_delta_sign_crs_flag specifies the sign of the variable lmcsDeltaCrs. When absent, lmcs_delta_sign_crs_flag is inferred to be equal to 0.
[0325] The variable lmcsDeltaCrs is derived as follows:
[0326] lmcsDeltaCrs = (1 - 2 * lmcs_delta_sign_crs_flag) * lmcs_delta_abs_crs(104)
[0327] The requirement for bitstream consistency is that when lmcsCW[i] is not equal to 0, (lmcsCW[i] + lmcsDeltaCrs) shall be in the range of (OrgCW >> 3) to ((OrgCW << 3) - 1) (including the end values).
[0328] The variable ChromaScaleCoeff[i] (where i = 0...15) is derived as follows:
[0329] if (lmcsCW[i] == 0)
[0330] ChromaScaleCoeff[i] = (1 << 11)
[0331] else
[0332] ChromaScaleCoeff[i] = OrgCW * (1 << 11) / (lmcsCW[i] + lmcsDeltaCrs)
[0333] The scaling_matrix_for_lfnst_disabled_flag being equal to 1 specifies that the scaling matrix shall not be applied to the blocks encoded / decoded with LFNST. The scaling_matrix_for_lfnst_disabled_flag being equal to 0 specifies that the scaling matrix can be applied to the blocks encoded / decoded with LFNST.
[0334] When scaling_list_chroma_present_flag equals 1, it specifies that the chroma scaling list is present in scaling_list_data(). When scaling_list_chroma_present_flag equals 0, it specifies that the chroma scaling list is not present in scaling_list_data(). The bitstream conformance requirement is that scaling_list_chroma_present_flag shall equal 0 when ChromaArrayType equals 0, and scaling_list_chroma_present_flag shall equal 1 when ChromaArrayType is not equal to 0.
[0335] When scaling_list_copy_mode_flag[id] equals 1, it specifies that the value of the scaling list is the same as that of the reference scaling list. The reference scaling list is specified by scaling_list_pred_id_delta[id]. When scaling_list_copy_mode_flag[id] equals 0, it specifies that scaling_list_pred_mode_flag is present.
[0336] When scaling_list_pred_mode_flag[id] equals 1, it specifies that the value of the scaling list can be predicted from the reference scaling list. The reference scaling list is specified by scaling_list_pred_id_delta[id]. When scaling_list_pred_mode_flag[id] equals 0, it specifies the value of the scaling list that is explicitly signaled. When not present, the value of scaling_list_pred_mode_flag[id] is inferred to be equal to 0.
[0337] scaling_list_pred_id_delta[id] specifies the reference scaling list used to derive the predicted scaling matrix ScalingMatrixPred[id]. When not present, the value of scaling_list_pred_id_delta[id] is inferred to be equal to 0. The value of scaling_list_pred_id_delta[id] shall be in the range of 0 to maxIdDelta, where maxIdDelta is derived from id as follows:
[0338] maxIdDelta = (id < 2)? id : ((id < 8)? (id - 2) : (id - 8)) (106)
[0339] The variables refId and matrixSize are derived as follows:
[0340] refId = id - scaling_list_pred_id_delta[id] (107)
[0342] matrixSize = (id < 2)? 2 : ((id < 8)? 4 : 8) (108)
[0343] The (matrixSize) x (matrixSize) array ScalingMatrixPred[x][y] for x = 0..matrixSize - 1, y = 0..matrixSize - 1 and the variable ScalingMatrixDCPred are derived as follows:
[0344] -- 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 be equal to 8, and the value of ScalingMatrixDCPred is set to be equal to 8.
[0345] -- Otherwise, when scaling_list_pred_id_delta[id] is equal to 0, all elements of ScalingMatrixPred are set to be equal to 16, and ScalingMatrixDCPred is set to be equal to 16.
[0346] -- Otherwise (scaling_list_copy_mode_flag[id] or scaling_list_pred_mode_flag[id] is equal to 1 and scaling_list_pred_id_delta[id] is greater than 0), ScalingMatrixPred is set to be equal to ScalingMatrixRec[refId], and the following applies to ScalingMatrixDCPred:
[0347] -- If refId is greater than 13, ScalingMatrixDCPred is set to be equal to ScalingMatrixDCRec[refId - 14].
[0348] -- Otherwise (refId is less than or equal to 13), ScalingMatrixDCPred is set to be equal to ScalingMatrixPred[0][0].
[0349] scaling_list_dc_coef[id - 14] is used to derive the value of variable ScalingMatrixDC[id - 14] when id is greater than 13, as follows:
[0350] ScalingMatrixDCRec[id - 14] = (ScalingMatrixDCPred +
[0351] scaling_list_dc_coef[id - 14]) & 255(109)
[0352] 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 (including the end values). The value of ScalingMatrixDCRec[id - 14] should be greater than 0.
[0353] scaling_list_delta_coef[id][i] specifies the difference between the current matrix coefficient ScalingList[id][i] and the previous matrix coefficient ScalingList[id][i - 1] when scaling_list_copy_mode_flag[id] is equal to 0. The value of scaling_list_delta_coef[id][i] should be in the range of -128 to 127 (including the end values). When scaling_list_copy_mode_flag[id] is equal to 1, all elements of ScalingList[id] are set to be equal to 0.
[0354] (matrixSize) x (matrixSize) array ScalingMatrixRec[id] is derived as follows:
[0355] ScalingMatrixRec[id][x][y] = (ScalingMatrixPred[x][y] + ScalingList[id][k]) & 255(110)
[0356] where k = 0..(matrix size * matrix size - 1),
[0357] x = DiagScanOrder[Log2(matrix size)][Log2(matrix size)][k][0], and
[0358] y = DiagScanOrder[Log2(matrix size)][Log2(matrix size)][k][1]
[0359] The value of ScalingMatrixRec[id][x][y] should be greater than 0.
[0360] 3.3 PH Syntax and Semantics
[0361] In the latest VVC draft text, the PH syntax and semantics are as follows:
[0362]
[0363] The PH RBSP contains the PH syntax structure, namely picture_header_structure().
[0364]
[0365]
[0366]
[0367]
[0368]
[0369] The PH syntax structure contains information common to all slices of the coded picture associated with the PH syntax structure.
[0370] gdr_or_irap_pic_flag being equal to 1 specifies that the current picture is a GDR or IRAP picture. gdr_or_irap_pic_flag being equal to 0 specifies that the current picture may or may not be a GDR or IRAP picture.
[0371] gdr_pic_flag being equal to 1 specifies that the picture associated with the PH is a GDR picture. gdr_pic_flag being equal to 0 specifies that the picture associated with the PH is not a GDR picture. When absent, the value of gdr_pic_flag is inferred to be equal to 0. When gdr_enabled_flag is equal to 0, the value of gdr_pic_flag shall be equal to 0.
[0372] When ph_inter_slice_allowed_flag equals 0, it specifies that the slice_type of all coded slices of the picture equals 2. When ph_inter_slice_allowed_flag equals 1, it specifies that there may or may not be one or more coded slices with slice_type equal to 0 or 1 in the picture.
[0373] When ph_intra_slice_allowed_flag equals 0, it specifies that the slice_type of all coded slices of the picture equals 0 or 1. When ph_intra_slice_allowed_flag equals 1, it specifies that there may or may not be one or more coded slices with slice_type equal to 2 in the picture. When none exist, the value of ph_intra_slice_allowed_flag is inferred to be equal to 1.
[0374] Note 1 – For bitstreams for which sub-picture based bitstream merge should be performed without changing the PH NAL unit, the codec shall set the values of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag equal to 1.
[0375] When non_reference_picture_flag equals 1, it specifies that the picture associated with the PH is never used as a reference picture. When non_reference_picture_flag equals 0, it specifies that the picture associated with the PH may or may not be used as a reference picture.
[0376] ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id for the PPS being used. The value of ph_pic_parameter_set_id shall be in the range of 0 to 63 (including the end values).
[0377] The requirement for bitstream conformance is that the value of the TemporalId of the PH shall be greater than or equal to the value of the TemporalId of the PPS for which pps_pic_parameter_set_id equals ph_pic_parameter_set_id.
[0378] ph_pic_order_cnt_lsb specifies the picture order count modulo MaxPicOrderCntLsb of the current picture. The length of the ph_pic_order_cnt_lsb syntax element is log2_max_pic_order_cnt_lsb_minus4 + 4 bits. The value of ph_pic_order_cnt_lsb shall be in the range of 0 to MaxPicOrderCntLsb–1 (inclusive of the end values).
[0379] no_output_of_prior_pics_flag affects the output of previously decoded pictures in the DPB after decoding a CLVSS picture that is not the first picture in the bitstream specified in Annex C.
[0380] recovery_poc_cnt specifies the recovery point of the decoded picture in the output order. If the current picture is a GDR picture associated with PH, and there is a picture picA in CLVS that is after the current GDR picture in the decoding order and whose PicOrderCntVal is equal to the PicOrderCntVal of the current GDR picture plus the value of recovery_poc_cnt, then picture picA is called a recovery point picture. Otherwise, the first picture in the output order whose PicOrderCntVal is greater than the PicOrderCntVal of the current picture plus the value of recovery_poc_cnt is called a recovery point picture. In the decoding order, the recovery point picture shall not be before the current GDR picture. The value of recovery_poc_cnt shall be in the range of 0 to MaxPicOrderCntLsb–1 (inclusive of the end values).
[0381] When the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows:
[0382] RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (82)
[0383] Note 2 – When gdr_enabled_flag is equal to 1 and the PicOrderCntVal of the current picture is greater than or equal to the RpPicOrderCntVal of the relevant GDR picture, the current and subsequent decoded pictures in the output order exactly match the corresponding pictures generated by starting the decoding process from the previous IRAP picture (if any) before the relevant GDR picture in the decoding order.
[0384] ph_extra_bit[i] can be equal to 1 or 0. Decoders compliant with this version of this specification shall ignore the value of ph_extra_bit[i]. Its value does not affect the decoder's compliance with the profile specified in this version of the specification.
[0385] ph_poc_msb_present_flag being equal to 1 specifies that the syntax element poc_msb_val is present in the PH. ph_poc_msb_present_flag being equal to 0 specifies that the syntax element poc_msb_val is not present in the PH. When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 0 and there is a picture in the current AU in the reference layer of the current layer, the value of ph_poc_msb_present_flag shall be 0.
[0386] poc_msb_val specifies the POC MSB value of the current picture. The length of the syntax element poc_msb_val is poc_msb_len_minus1 + 1 bits.
[0387] ph_alf_enabled_flag being equal to 1 specifies that the adaptive loop filter is enabled for all slices related to the PH and can be applied to the Y, Cb, or Cr color components in the slice. ph_alf_enabled_flag being equal to 0 specifies that the adaptive loop filter can be disabled for one or more or all slices associated with the PH. When not present, ph_alf_enabled_flag is inferred to be equal to 0.
[0388] ph_num_alf_aps_ids_luma specifies the number of ALF APSs referred to by the slices related to the PH.
[0389] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS, to which the luma component of the slice related to the PH refers.
[0390] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be equal to 1.
[0391] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.
[0392] ph_alf_chroma_idc being equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. ph_alf_chroma_idc being equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. ph_alf_chroma_idc being equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. ph_alf_chroma_idc being equal to 3 indicates that the adaptive loop filter is applied to the Cb and Cr color components. When ph_alf_chroma_idc is absent, it is inferred to be equal to 0.
[0393] ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS to which the chrominance components of the slices associated with PH refer.
[0394] The value of alf_chroma_filter_signal_flag of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma should be equal to 1.
[0395] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma shall be less than or equal to the TemporalId of the picture associated with PH.
[0396] ph_cc_alf_cb_enabled_flag being equal to 1 specifies that the cross-component filter for the Cb color component is enabled for all slices associated with PH and can be applied to the Cb color component in the slices. ph_cc_alf_cb_enabled_flag being equal to 0 specifies that the cross-component filter for the Cb color component can be disabled for one, more than one, or all slices associated with PH. When absent, ph_cc_alf_cb_enabled_flag is inferred to be equal to 0.
[0397] The ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS that the Cb color component of the slice associated with PH refers to.
[0398] The value of alf_cc_cb_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cb_aps_id shall be equal to 1.
[0399] The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[0400] The ph_cc_alf_cr_enabled_flag being equal to 1 specifies that the cross-component filter for the Cr color component is enabled for all slices associated with PH and can be applied to the Cr color component in the slices. The ph_cc_alf_cr_enabled_flag being equal to 0 specifies that the cross-component filter for the Cr color component can be disabled for one, more than one, or all slices associated with PH. When not present, the ph_cc_alf_cr_enabled_flag is inferred to be equal to 0.
[0401] The ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS that the Cr color component of the slice associated with PH refers to.
[0402] The value of alf_cc_cr_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id shall be equal to 1.
[0403] The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[0404] The ph_lmcs_enabled_flag being equal to 1 specifies that luminance mapping with chroma scaling is enabled for all slices related to PH. The ph_lmcs_enabled_flag being equal to 0 specifies that luminance mapping with chroma scaling is disabled for one, more than one, or all slices related to PH. When not present, the value of ph_lmcs_enabled_flag is inferred to be equal to 0.
[0405] The ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS that the slices related to PH refer to. The TemporalId of the APS NAL unit 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 picture related to PH.
[0406] The ph_chroma_residual_scale_flag being equal to 1 specifies that chroma residual scaling is enabled for all slices associated with PH. The ph_chroma_residual_scale_flag being equal to 0 specifies that chroma residual scaling can be disabled for one, more than one, or all slices related to PH. When the ph_chroma_residual_scale_flag is not present, it is inferred to be equal to 0.
[0407] The ph_scaling_list_present_flag being equal to 1 specifies that the scaling list data for the slices related to PH is derived based on the scaling list data contained in the reference scaling list APS. The ph_scaling_list_present_flag being equal to 0 specifies that the scaling list data for the slices related to PH is set to be equal to 16. When not present, the value of ph_scaling_list_present_flag is inferred to be equal to 0.
[0408] The ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS. The TemporalId of the APS NAL unit 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 picture related to PH.
[0409] The ph_virtual_boundaries_present_flag being equal to 1 specifies that information on virtual boundaries is signaled in the PH. The ph_virtual_boundaries_present_flag being equal to 0 specifies that information on virtual boundaries is not signaled in the PH. When one or more virtual boundaries are signaled in the PH, loop filtering operations are disabled at the virtual boundaries in the picture. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of ph_virtual_boundaries_present_flag is inferred to be equal to 0.
[0410] For bitstream conformance, when subpic_info_present_flag is equal to 1, the value of ph_virtual_boundaries_present_flag should be equal to 0.
[0411] The variable VirtualBoundariesPresentFlag is derived as follows:
[0412] VirtualBoundariesPresentFlag = 0
[0413] if (sps_virtual_boundaries_enabled_flag)
[0414] VirtualBoundariesPresentFlag = sps_virtual_boundaries_present_flag ||
[0415] ph_virtual_boundaries_present_flag (83
[0416] ph_num_ver_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_x[i] syntax elements present in the PH. When ph_num_ver_virtual_boundaries is not present, it is inferred to be equal to 0.
[0417] The variable NumVerVirtualBoundaries is derived as follows:
[0418] NumVerVirtualBoundaries = 0
[0419] if(sps_virtual_boundaries_enabled_flag)
[0420] NumVerVirtualBoundaries = sps_virtual_boundaries_present_flag?
[0421] sps_num_ver_virtual_boundaries:ph_num_ver_virtual_boundaries (84)
[0422] ph_virtual_boundaries_pos_x[i] specifies the position of the i-th vertical virtual boundary in units of luminance samples divided by 8. The value of ph_virtual_boundaries_pos_x[i] shall be in the range of 1 to Ceil(pic_width_in_luma_samples÷8) – 1 (including the end values).
[0423] The list VirtualBoundariesPosX[i] for i ranging from 0 to NumVerVirtualBoundaries – 1 (including the end values), specifies the positions of the vertical virtual boundaries in units of luminance samples, and is derived as follows:
[0424] for(i = 0; i < NumVerVirtualBoundaries; i++)
[0425] VirtualBoundariesPosX[i] = (sps_virtual_boundaries_present_flag?
[0426] sps_virtual_boundaries_pos_x[i]:ph_virtual_boundaries_pos_x[i]) * 8(85)
[0427] The distance between any two vertical virtual boundaries shall be greater than or equal to CtbSizeY luminance samples.
[0428] ph_num_hor_virtual_boundaries specifies the number of the ph_virtual_boundaries_pos_y[i] syntax elements present in PH. When ph_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0.
[0429] The derivation of the parameter NumHorVirtualBoundaries is as follows:
[0430] NumHorVirtualBoundaries = 0
[0431] if(sps_virtual_boundaries_enabled_flag)
[0432] NumHorVirtualBoundaries = sps_virtual_boundaries_present_flag?
[0433] sps_num_hor_virtual_boundaries:ph_num_hor_virtual_boundaries (86)
[0434] When sps_virtual_boundaries_enabled_flag is equal to 1 and ph_virtual_boundaries_present_flag is equal to 1, the sum of ph_num_ver_virtual_boundaries and ph_num_hor_virtual_boundaries should be greater than 0.
[0435] ph_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary in units of luminance samples divided by 8. The value of ph_virtual_boundaries_pos_y[i] should be in the range of 1 to Ceil(pic_height_in_luma_samples÷8) – 1 (including the end values).
[0436] The list VirtualBoundariesPosY[i] with i ranging from 0 to NumHorVirtualBoundaries – 1 (including the end values), which specifies the positions of the horizontal virtual boundaries in units of luminance samples, is derived as follows:
[0437] for(i = 0; i < NumHorVirtualBoundaries; i++)
[0438] VirtualBoundariesPosY[i] = (sps_virtual_boundaries_present_flag?
[0439] sps_virtual_boundaries_pos_y[i]:ph_virtual_boundaries_pos_y[i])*8(87)
[0440] The distance between any two horizontal virtual boundaries shall be greater than or equal to the CtbSizeY luminance samples.
[0441] The pic_output_flag affects the decoding picture output and removal process as specified in Annex C. When the pic_output_flag is absent, it is inferred to be equal to 1.
[0442] The partition_constraints_override_flag being equal to 1 specifies that the partitioning constraint parameters exist in the PH. The partition_constraints_override_flag being equal to 0 specifies that the partitioning constraint parameters do not exist in the PH. When absent, the value of the partition_constraints_override_flag is inferred to be equal to 0.
[0443] ph_log2_diff_min_qt_min_cb_intra_slice_luma specifies the difference between the base-2 logarithm of the minimum size of the luminance samples of the luminance leaf blocks resulting from the quadtree partitioning of the CTU and the base-2 logarithm of the minimum decoded block size of the luminance samples of the luminance CUs in the slice with slice_type equal to 2 (I) associated with the PH. The value of ph_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range from 0 to CtbLog2SizeY - MinCbLog2SizeY (including the end values). When absent, 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.
[0444] ph_max_mtt_hierarchy_depth_intra_slice_luma specifies the maximum hierarchical depth of coding tree units generated by multi-type tree partitioning of quadtree leaves in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including the end values). When it is not present, 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.
[0445] ph_log2_diff_max_bt_min_qt_intra_slice_luma specifies the difference between the base-2 logarithm of the maximum size (width or height) in the luma samples of a luma coding block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum size (width or height) in the luma samples of a luma leaf block generated by quadtree partitioning of CTUs in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY (including the end values). When it is not present, 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.
[0446] ph_log2_diff_max_tt_min_qt_intra_slice_luma specifies
[0447] The difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a luma coding / decoding block that can be partitioned using ternary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range from 0 to CtbLog2SizeY - MinQtLog2SizeIntraY (including the end values). When not present, 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.
[0448] ph_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the difference between the base-2 logarithm of the minimum size of the luma samples in a chroma leaf block resulting from the quadtree partitioning of a chroma CTU where treeType is equal to DUAL_TREE_CHROMA and the base-2 logarithm of the minimum decoded block size of the luma samples in a chroma CU where treeType is equal to DUAL_TREE_CHROMA in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma shall be in the range from 0 to CtbLog2SizeY - MinCbLog2SizeY (including the end values). When not present, 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.
[0449] ph_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchical depth of a chroma coding unit that is generated by the multi-type tree partition of a chroma quadtree leaf in a slice where the slice_type associated with PH is equal to 2 (I) and the treeType is equal to DUAL_TREE_CHROMA. The value of ph_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including the end values). When not present, 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.
[0450] ph_log2_diff_max_bt_min_qt_intra_slice_chroma specifies
[0451] the difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a chroma coding block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a chroma leaf block that is generated by the quadtree partition of a chroma CTU in a slice where the slice_type associated with PH is equal to 2 (I) and the treeType is equal to DUAL_TREE_CHROMA. The value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC (including the end values). When not present, 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.
[0452] ph_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a chroma coding block that can be partitioned using ternary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a chroma leaf block resulting from the quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC (including the end values). When not present, 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.
[0453] ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of a coding unit in an intra slice that transmits cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of ph_cu_qp_delta_subdiv_intra_slice shall be in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma) (including the end values).
[0454] When not present, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.
[0455] ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of a coding unit in an intra slice that transmits cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_intra_slice shall be in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma) (including the end values).
[0456] When it does not exist, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.
[0457] ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the logarithm to the base 2 of the minimum size of the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU and the logarithm to the base 2 of the minimum luma coding block size of the luma samples of the luma CUs in the slice where the slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_log2_diff_min_qt_min_cb_inter_slice shall be in the range from 0 to CtbLog2SizeY - MinCbLog2SizeY (including the end values). When it does not exist, the value of ph_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_inter_slice.
[0458] ph_max_mtt_hierarchy_depth_inter_slice specifies the maximum hierarchical depth of the coding unit generated by the multi-type tree partitioning of the quadtree leaf in the slice where the slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_max_mtt_hierarchy_depth_inter_slice shall be in the range from 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including the end values). 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.
[0459] ph_log2_diff_max_bt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum dimension (width or height) of the luma samples in a luma coding block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum dimension (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_log2_diff_max_bt_min_qt_inter_slice shall be in the range from 0 to CtbLog2SizeY - MinQtLog2SizeInterY (inclusive of the end values). When it is absent, 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.
[0460] ph_log2_diff_max_tt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum dimension (width or height) of the luma samples in a luma coding block that can be partitioned using ternary partitioning and the base-2 logarithm of the minimum dimension (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_log2_diff_max_tt_min_qt_inter_slice shall be in the range from 0 to CtbLog2SizeY - MinQtLog2SizeInterY (inclusive of the end values). When it is absent, 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.
[0461] ph_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding unit that transmits cu_qp_delta_abs and cu_qp_delta_sign_flag in an inter slice. The value of ph_cu_qp_delta_subdiv_inter_slice shall be in the range from 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice) (inclusive of the end values).
[0462] When not present, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.
[0463] ph_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value for the coding unit that transmits the cu_chroma_qp_offset_flag in an inter slice. The value of ph_cu_chroma_qp_offset_subdiv_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice) (including the end values).
[0464] When not present, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.
[0465] ph_temporal_mvp_enabled_flag specifies whether the temporal motion vector predictor can be used for inter prediction of the slice associated with PH. If ph_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the slice associated with PH shall be constrained such that the temporal motion vector predictor is not used in the decoding of the slice. Otherwise (ph_temporal_mvp_enabled_flag is equal to 1), the temporal motion vector predictor can be used for decoding the slice associated with PH. When not present, the value of ph_temporal_mvp_enabled_flag is inferred to be equal to 0. When no reference picture in the DPB has the same spatial resolution as the current picture, the value of ph_temporal_mvp_enabled_flag should be equal to 0.
[0466] The derivation of the maximum number of sub - block - based merge MVP candidates MaxNumSubblockMergeCand is as follows:
[0467] if(sps_affine_enabled_flag)
[0468] MaxNumSubblockMergeCand = 5 - five_minus_max_num_subblock_merge_cand(88)
[0469] else
[0470] MaxNumSubblockMergeCand =
[0471] sps_sbtmvp_enabled_flag && ph_temporal_mvp_enable_flag
[0472] The value of MaxNumSubblockMergeCand shall be in the range of 0 to 5 (inclusive of the end values).
[0473] ph_collocated_from_l0_flag being equal to 1 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 0. ph_collocated_from_l0_flag being equal to 0 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 1.
[0474] ph_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.
[0475] When ph_collocated_from_l0_flag is equal to 1, ph_collocated_ref_idx refers to an entry in reference picture list 0, and the value of ph_collocated_ref_idx shall be in the range of 0 to num_ref_entries[0][RplsIdx[0]] – 1 (inclusive of the end values).
[0476] When ph_collocated_from_l0_flag is equal to 0, ph_collocated_ref_idx refers to an entry in reference picture list 1, and the value of ph_collocated_ref_idx shall be in the range of 0 to num_ref_entries[1][RplsIdx[1]]1 (inclusive of the end values).
[0477] When not present, the value of ph_collocated_ref_idx is inferred to be equal to 0.
[0478] mvd_l1_zero_flag being equal to 1 indicates that the mvd_coding(x0,y0,1) syntax structure is not parsed, and for compIdx = 0..1 and cpIdx = 0..2, MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compIdx] are set to be equal to 0. mvd_l1_zero_flag being equal to 0 indicates that the mvd_coding(x0,y0,1) syntax structure is parsed.
[0479] When ph_fpel_mmvd_enabled_flag equals 1, it specifies that the merge mode with motion vector difference uses integer sample precision in the slices associated with PH. When ph_fpel_mmvd_enabled_flag equals 0, it specifies that the merge mode with motion vector difference can use fractional sample precision in the slices associated with PH. When it is absent, the value of ph_fpel_mmvd_enabled_flag is inferred to be 0.
[0480] When ph_disable_bdof_flag equals 1, it specifies that the inter - bidirectional prediction based on bidirectional optical flow for inter - prediction is disabled in the slices associated with PH. When ph_disable_bdof_flag equals 0, it specifies that the inter - bidirectional prediction based on bidirectional optical flow for inter - prediction can be enabled or disabled in the slices associated with PH.
[0481] When ph_disable_bdof_flag is absent, the following applies:
[0482] -- If sps_bdof_enabled_flag equals 1, the value of ph_disable_bdof_flag is inferred to be 0.
[0483] -- Otherwise (sps_bdof_enabled_flag equals 0), the value of ph_disable_bdof_flag is inferred to be 1.
[0484] When ph_disable_dmvr_flag equals 1, it specifies that the inter - bidirectional prediction based on decoder motion vector refinement is disabled in the slices associated with PH. When ph_disable_dmvr_flag equals 0, it specifies that the inter - bidirectional prediction based on decoder motion vector refinement can be enabled or disabled in the slices associated with PH.
[0485] When ph_disable_dmvr_flag is absent, the following applies:
[0486] -- If sps_dmvr_enabled_flag equals 1, the value of ph_disable_dmvr_flag is inferred to be 0.
[0487] -- Otherwise (sps_dmvr_enabled_flag equals 0), the value of ph_disable_dmvr_flag is inferred to be 1.
[0488] The ph_disable_prof_flag being equal to 1 specifies that the prediction refinement of optical flow is disabled in the slices associated with PH. The ph_disable_prof_flag being equal to 0 specifies that the prediction refinement of optical flow may or may not be enabled in the slices associated with PH.
[0489] When the ph_disable_prof_flag is not present, the following applies:
[0490] -- If the sps_affine_prof_enabled_flag is equal to 1, the value of ph_disable_prof_flag is inferred to be equal to 0.
[0491] -- Otherwise (sps_affine_prof_enabled_flag equal to 0), the value of ph_disable_prof_flag is inferred to be equal to 1.
[0492] The ph_qp_delta specifies the initial value of the Qp Y for the coding / decoding blocks in the picture until modified by the value of CuQpDeltaVal in the coding unit layer.
[0493] When the qp_delta_info_in_ph_flag is equal to 1, the initial value of the quantization parameter SliceQpY for all slices of the picture is derived as follows: Y SliceQp
[0494] SliceQp Y = 26 + init_qp_minus26 + ph_qp_delta (89
[0495] SliceQp Y shall be in the range of -QpBdOffset to +63 (including the end values).
[0496] The ph_joint_cbcr_sign_flag specifies whether the co-located residual samples of the two chrominance components have opposite signs in the transform unit where tu_joint_cbcr_residual_flag[x0][y0] is equal to 1. When tu_joint_cbcr_residual_flag[x0][y0] is equal to 1 for a transform unit, ph_joint_cbcr_sign_flag being equal to 0 specifies that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the co-located Cb (or Cr) residual sample, and ph_joint_cbcr_sign_flag being equal to 1 specifies that the sign of each residual sample of the Cr (or Cb) component is given by the opposite sign of the co-located Cb (or Cr) residual sample.
[0497] The ph_sao_luma_enabled_flag being equal to 1 specifies that SAO is enabled for the luma component in all slices associated with PH; the ph_sao_luma_enabled_flag being equal to 0 specifies that SAO for the luma component can be disabled for one, more than one, or all slices associated with PH. When the ph_sao_luma_enabled_flag is not present, it is inferred to be equal to 0.
[0498] The ph_sao_chroma_enabled_flag being equal to 1 specifies that SAO is enabled for the chrominance component in all slices associated with PH; the ph_sao_chroma_enabled_flag being equal to 0 specifies that SAO for the chrominance component can be disabled for one, more than one, or all slices associated with PH. When the ph_sao_chroma_enabled_flag is not present, it is inferred to be equal to 0.
[0499] The ph_dep_quant_enabled_flag being equal to 0 specifies that dependent quantization is disabled for the current picture. The ph_dep_quant_enabled_flag being equal to 1 specifies that dependent quantization is enabled for the current picture. When the ph_dep_quant_enabled_flag is not present, it is inferred to be equal to 0.
[0500] The pic_sign_data_hiding_enabled_flag being equal to 0 specifies that sign bit hiding is disabled for the current picture. The pic_sign_data_hiding_enabled_flag being equal to 1 specifies that sign bit hiding is enabled for the current picture. When the pic_sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.
[0501] The ph_deblocking_filter_override_flag being equal to 1 specifies that the deblocking parameters exist in the PH. The ph_deblocking_filter_override_flag being equal to 0 specifies that the deblocking parameters do not exist in the PH. When not present, the value of ph_deblocking_filter_override_flag is inferred to be equal to 0.
[0502] The ph_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of the deblocking filter does not apply to the slices associated with the PH. The ph_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter applies to the slices associated with the PH. When ph_deblocking_filter_disabled_flag is not present, it is inferred to be equal to pps_deblocking_filter_disabled_flag.
[0503] ph_beta_offset_div2 and ph_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the luma component of the slices associated with the PH. The values of both ph_beta_offset_div2 and ph_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). 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.
[0504] ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cb component of the slices associated with the PH. The values of both ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). 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.
[0505] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cr component of the slice associated with PH. The values of both ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). When absent, 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.
[0506] ph_extension_length specifies the length of the PH extension data in bytes, excluding the bits used to signal ph_extension_length itself. The value of ph_extension_length shall be in the range of 0 to 256 (including the end values). When absent, the value of ph_extension_length is inferred to be equal to 0.
[0507] ph_extension_data_byte can be any value. Decoders compliant with this version of the specification shall ignore the value of ph_extension_data_byte. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.
[0508] 3.4 SH Syntax and Semantics
[0509] In the latest VVC draft text, the syntax and semantics of SH are as follows:
[0510]
[0511]
[0512]
[0513]
[0514]
[0515] The variable CuQpDeltaVal that specifies the difference between the luma quantization parameter of the coding unit containing cu_qp_delta_abs and its prediction is set to be equal to 0. It is specified that when determining Qp′ of the coding unit containing cu_chroma_qp_offset_flag Cb 、Qp′ Cr and Qp′ CbCrThe variable CuQpOffset of the value to be used when quantizing the parameter Cb , CuQpOffset Cr and CuQpOffset CbCr are all set to be equal to 0.
[0516] picture_header_in_slice_header_flag being equal to 1 specifies that the PH syntax structure exists in the slice header. picture_header_in_slice_header_flag being equal to 0 specifies that the PH syntax structure does not exist in the slice header.
[0517] The requirement for bitstream consistency is that the value of picture_header_in_slice_header_flag should be the same in all decoded and encoded slices in the CLVS.
[0518] When picture_header_in_slice_header_flag is equal to 1 for a decoded and encoded slice, the requirement for bitstream consistency is that there should be no VCL NAL unit with nal_unit_type equal to PH_NUT in the CLVS.
[0519] When picture_header_in_slice_header_flag is equal to 0, all decoded and encoded slices in the current picture should have picture_header_in_slice_header_flag equal to 0, and the current PU should have a PH NAL unit.
[0520] slice_subpic_id specifies the subpicture ID of the subpicture containing the slice. If slice_subpic_id exists, the value of the variable CurrSubpicIdx is derived such that SubpicIdVal[CurrSubpicIdx] is equal to slice_subpic_id. Otherwise (slice_subpic_id does not exist), CurrSubpicIdx is derived to be equal to 0. The length of slice_subpic_id is sps_subpic_id_len_minus1 + 1 bits.
[0521] slice_address specifies the slice address of the slice. When it does not exist, the value of slice_address is inferred to be equal to 0. When rect_slice_flag is equal to 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be equal to 0.
[0522] If rect_slice_flag is equal to 0, the following applies:
[0523] -- The strip address is the raster scan strip index.
[0524] -- The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0525] -- The value of slice_address shall be in the range of 0 to NumTilesInPic–1 (inclusive).
[0526] Otherwise (rect_slice_flag is equal to 1), the following applies:
[0527] -- The strip address is the sub-picture level strip index of the strip.
[0528] -- The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.
[0529] -- The value of slice_address shall be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx]–1 (inclusive).
[0530] The requirements for bitstream conformance are to apply the following constraints:
[0531] -- If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address shall not be equal to the value of slice_address of any other coded strip NAL unit of the same coded picture.
[0532] -- Otherwise, a pair of slice_subpic_id and slice_address values shall not be equal to a pair of slice_subpic_id and slice_address values of any other coded strip NAL unit of the same coded picture.
[0533] -- The shape of the strips of the picture shall be such that when each CTU is decoded, its entire left border and its entire top border shall be composed of the picture border or of the borders of previously decoded CTUs.
[0534] sh_extra_bit[i] can be equal to 1 or 0. Decoders compliant with this version of this specification shall ignore the value of sh_extra_bit[i]. Its value does not affect the decoder's compliance with the profile specified in this version of the specification.
[0535] num_tiles_in_slice_minus1 plus 1 (if present) specifies the number of slices in a strip. The value of num_tiles_in_slice_minus1 shall be in the range of 0 to NumTilesInPic–1 (inclusive).
[0536] The variable NumCtusInCurrSlice specifies the number of CTUs in the current strip, and the list CtbAddrInCurrSlice[i] for i ranging from 0 to NumCtusInCurrSlice–1 (inclusive) specifies the picture raster scan address of the i-th CTB within the strip, derived as follows:
[0537]
[0538] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos are derived as follows:
[0539]
[0540] slice_type specifies the coding / decoding type of the strip according to Table 9.
[0541] Table 9 – Association with the names of slice_type
[0542] slice_type Name of slice_type 0 B (B-strip) 1 P (P-strip) 2 I (I-strip)
[0543] When not present, the value of slice_type is inferred to be equal to 2.
[0544] When ph_intra_slice_allowed_flag is equal to 0, the value of slice_type shall be equal to 0 or 1. When nal_unit_type is in the range of IDR_W_RADL to CRA_NUT (inclusive) and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.
[0545] The derivation of the variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC is as follows:
[0546] -- If slice_type is equal to 2 (I), then the following applies:
[0547] MinQtLog2SizeY =
[0548] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_luma (119)
[0549] MinQtLog2SizeC =
[0550] MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_chroma(120)
[0551] MaxBtSizeY = 1 <<
[0552] (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_intra_slice_luma)(121)
[0553] MaxBtSizeC = 1 <<
[0554] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_intra_slice_chroma)(122)
[0555] MaxTtSizeY = 1 <<
[0556] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma)(123)
[0557] MaxTtSizeC = 1 <<
[0558] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma)(124)
[0559] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma(125)
[0560] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma(126)
[0561] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice(127)
[0562] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice(128)
[0563] -- Otherwise (slice_type equals 0 (B) or 1 (P)), the following applies:
[0564] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(129)
[0565] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(130)
[0566] MaxBtSizeY = 1 <<
[0567] (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice)(131)
[0568] MaxBtSizeC = 1 <<
[0569] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice)(132)
[0570] MaxTtSizeY = 1 <<
[0571] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice)(133)
[0572] MaxTtSizeC = 1 <<
[0573] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_inter_slice) (134)
[0574] MaxMttDepthY = ph_max_mtt_hierarchy_depth_inter_slice (135)
[0575] MaxMttDepthC = ph_max_mtt_hierarchy_depth_inter_slice (136)
[0576] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (137)
[0577] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice(138)
[0578] -- The following applies:
[0579] MinQtSizeY = 1 << MinQtLog2SizeY (13
[0580] MinQtSizeC = 1 << MinQtLog2SizeC (14
[0581] MinBtSizeY = 1 << MinCbLog2SizeY (14
[0582] MinTtSizeY = 1 << MinCbLog2SizeY (14
[0583] When slice_alf_enabled_flag is equal to 1, it specifies that the adaptive loop filter is enabled and can be applied to the Y, Cb, or Cr color components in the slice. When slice_alf_enabled_flag is equal to 0, it specifies that the adaptive loop filter is disabled for all color components in the slice. When not present, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.
[0584] slice_num_alf_aps_ids_luma specifies the number of ALF APSs that the slice references. When slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma does not exist, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of ph_num_alf_aps_ids_luma.
[0585] slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS that the luma component of the slice references. The TemporalId of the 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 coded slice NAL unit. 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].
[0586] The value of alf_luma_filter_signal_flag of the 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 equal to 1.
[0587] slice_alf_chroma_idc being equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. slice_alf_chroma_idc being equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. slice_alf_chroma_idc being equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. slice_alf_chroma_idc being equal to 3 indicates that the adaptive loop filter is applied to 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.
[0588] The slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS that the chroma component of the slice refers to. The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_chroma should be less than or equal to the TemporalId of the coded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma does not exist, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[0589] The alf_chroma_filter_signal_flag value of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_chroma should be equal to 1.
[0590] slice_cc_alf_cb_enabled_flag being equal to 0 specifies that the cross-component filter is not applied to the Cb color component. slice_cc_alf_cb_enabled_flag being equal to 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.
[0591] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id that the Cb color component of the slice refers to.
[0592] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the decoded / encoded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 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.
[0593] The value of alf_cc_cb_filter_signal_flag of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cb_aps_id shall be equal to 1.
[0594] slice_cc_alf_cr_enabled_flag being equal to 0 specifies that the cross-component filter is not applied to the Cr color component. slice_cc_alf_cb_enabled_flag being equal to 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.
[0595] slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id referred to by the Cr color component of the slice. The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the decoded / encoded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[0596] The value of alf_cc_cr_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cr_aps_id shall be equal to 1.
[0597] When separate_colour_plane_flag is equal to 1, colour_plane_id identifies the colour plane associated with the current slice. The value of colour_plane_id shall be in the range 0 to 2 (inclusive). The values 0, 1, and 2 of colour_plane_id correspond to the Y, Cb, and Cr planes respectively. The value 3 of colour_plane_id is reserved for future use by ITU-T|ISO / IEC.
[0598] Note 1 – There is no dependency between the decoding processes of the different colour planes of a picture.
[0599] When num_ref_idx_active_override_flag is equal to 1, the syntax element num_ref_idx_active_minus1[0] shall be present in P and B slices, and the syntax element num_ref_idx_active_minus1[1] shall be present in B slices. When num_ref_idx_active_override_flag is equal to 0, the syntax elements num_ref_idx_active_minus1[0] and num_ref_idx_active_minus1[1] shall not be present. When not present, the value of num_ref_idx_active_override_flag is inferred to be equal to 1.
[0600] 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] shall be in the range 0 to 14 (inclusive).
[0601] For i equal to 0 or 1, when the current slice is a B slice, num_ref_idx_active_override_flag is equal to 1, and num_ref_idx_active_minus1[i] is not present, num_ref_idx_active_minus1[i] is inferred to be equal to 0.
[0602] When the current slice is a P-slice, num_ref_idx_active_override_flag is equal to 1, and num_ref_idx_active_minus1[0] does not exist, num_ref_idx_active_minus1[0] is inferred to be equal to 0.
[0603] The derivation of the variable NumRefIdxActive[i] is as follows:
[0604]
[0605] The value of NumRefIdxActive[i] - 1 specifies the maximum reference index of the reference picture list i that can be used to decode the slice. When the value of NumRefIdxActive[i] is equal to 0, no reference index of the reference picture list i is available for decoding the slice.
[0606] When the current slice is a P-slice, the value of NumRefIdxActive[0] shall be greater than 0.
[0607] When the current slice is a B-slice, both NumRefIdxActive[0] and NumRefIdxActive[1] shall be greater than 0.
[0608] cabac_init_flag specifies the method for determining the initialization table used in the initialization process of context variables. When cabac_init_flag does not exist, it is inferred to be equal to 0.
[0609] slice_collocated_from_l0_flag being equal to 1 specifies that the collocated picture used for temporal motion vector prediction is derived from the reference picture list 0. slice_collocated_from_l0_flag being equal to 0 specifies that the collocated picture used for temporal motion vector prediction is derived from the reference picture list 1.
[0610] When slice_type is equal to B or P, ph_temporal_mvp_enabled_flag is equal to 1, and slice_collocated_from_l0_flag does not exist, the following applies:
[0611] -- 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.
[0612] -- Otherwise (rpl_info_in_ph_flag is equal to 0 and slice_type is equal to P), the value of slice_collocated_from_l0_flag is inferred to be equal to 1.
[0613] slice_collocated_ref_idx specifies the reference index of the collocated picture for time-domain motion vector prediction.
[0614] When slice_type is equal to P or when slice_type is equal to B and slice_collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to an entry in reference picture list 0, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0]–1 (inclusive).
[0615] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to an entry in reference picture list 1, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[1]–1 (inclusive).
[0616] When slice_collocated_ref_idx does not exist, the following applies:
[0617] -- If rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx.
[0618] -- Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[0619] The requirement for bitstream consistency is that the picture referred to by slice_collocated_ref_idx should be the same for all slices of the coded picture.
[0620] The requirement for bitstream consistency is that the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referred to 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 picture respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] should be equal to 0.
[0621] slice_qp_delta specifies the initial Qp value for the coding / decoding blocks in a slice until it is modified by the value of CuQpDeltaVal in the coding / decoding unit layer. Y
[0622] When qp_delta_info_in_ph_flag is equal to 0, the initial quantization parameter value of the slice Qp Y SliceQp Y is derived as follows:
[0623] SliceQp Y = 26 + init_qp_minus26 + slice_qp_delta (144)
[0624] SliceQp Y should be in the range of -QpBdOffset to +63 (including the end values).
[0625] When any of the following conditions is true:
[0626] -- 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.
[0627] -- 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.
[0628] The following applies:
[0629] -- The value of NumRefIdxActive[0] should be less than or equal to the value of NumWeightsL0.
[0630] – For each reference picture index RefPicList[0][i] where i ranges from 0 to NumRefIdxActive[0] - 1 (inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL0[i], ChromaWeightL0[0][i], and ChromaWeightL0[1][i], respectively.
[0631] When wp_info_in_ph_flag is equal to 1, pps_weighted_bipred_flag is equal to 1, and slice_type is equal to B, the following applies:
[0632] -- The value of NumRefIdxActive[1] shall be less than or equal to the value of NumWeightsL1.
[0633] – For each reference picture index RefPicList[1][i] where i ranges from 0 to NumRefIdxActive[1] - 1 (inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL1[i], ChromaWeightL1[0][i], and ChromaWeightL1[1][i], respectively.
[0634] slice_cb_qp_offset specifies the difference to be added to the value of pps_cb_qp_offset when determining the value of the Qp' Cb quantization parameter. The value of slice_cb_qp_offset shall be in the range of -12 to +12 (inclusive). When slice_cb_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_cb_qp_offset + slice_cb_qp_offset shall be in the range of -12 to +12 (inclusive).
[0635] slice_cr_qp_offset specifies the difference to be added to the value of pps_cr_qp_offset when determining the Qp' Cr quantization parameter value. The value of slice_cr_qp_offset shall be in the range of -12 to +12 (inclusive). When slice_cr_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_cr_qp_offset + slice_cr_qp_offset shall be in the range of -12 to +12 (inclusive).
[0636] The slice_joint_cbcr_qp_offset specifies the difference to be added to the value of pps_joint_cbcr_qp_offset_value when determining the value of Qp′ CbCr The value of slice_joint_cbcr_qp_offset should be in the range of -12 to +12 (including the end values). When slice_joint_cbcr_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_joint_cbcr_qp_offset_value + slice_joint_cbcr_qp_offset should be in the range of -12 to +12 (including the end values).
[0637] When cu_chroma_qp_offset_enabled_flag is equal to 1, it specifies that cu_chroma_qp_offset_flag can exist in the transform unit and palette coding / decoding syntax. When cu_chroma_qp_offset_enabled_flag is equal to 0, it specifies that cu_chroma_qp_offset_flag does not exist in the transform unit or palette coding / decoding syntax. When it does not exist, the value of cu_chroma_qp_offset_enabled_flag is inferred to be equal to 0.
[0638] When slice_sao_luma_flag is equal to 1, it specifies that SAO is enabled for the luma component in the current slice; when slice_sao_luma_flag is equal to 0, it specifies that SAO is disabled for the luma component in the current slice. When slice_sao_luma_flag does not exist, it is inferred to be equal to ph_sao_luma_enabled_flag.
[0639] When slice_sao_chroma_flag is equal to 1, it specifies that SAO is enabled for the chroma component in the current slice; when slice_sao_chroma_flag is equal to 0, it specifies that SAO is disabled for the chroma component in the current slice. When slice_sao_chroma_flag does not exist, it is inferred to be equal to ph_sao_chroma_enabled_flag.
[0640] When slice_deblocking_filter_override_flag equals 1, it indicates that the deblocking parameters are present in the slice header. When slice_deblocking_filter_override_flag equals 0, it indicates that the deblocking parameters are not present in the slice header. When not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.
[0641] When slice_deblocking_filter_disabled_flag equals 1, it indicates that the operation of the deblocking filter is not applied to the current slice. When slice_deblocking_filter_disabled_flag equals 0, it indicates that the operation of the deblocking filter is applied to the current slice. When slice_deblocking_filter_disabled_flag is not present, it is inferred to be equal to ph_deblocking_filter_disabled_flag.
[0642] slice_beta_offset_div2 and slice_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the luma 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 (including the end values). 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.
[0643] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the Cb component 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 (including the end values). 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.
[0644] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) of the Cr component applied to the current slice. The values of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 shall both be in the range of -12 to 12 (including the end values). 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.
[0645] slice_ts_residual_coding_disabled_flag being equal to 1 specifies that the residual_coding() syntax structure is used to parse the residual samples of the transform skip blocks of the current slice. slice_ts_residual_coding_disabled_flag being equal to 0 specifies that the residual_ts_coding() syntax structure is used to parse the residual samples of the transform skip blocks of the current slice. When slice_ts_residual_coding_disabled_flag is not present, it is inferred to be equal to 0.
[0646] slice_lmcs_enabled_flag being equal to 1 specifies that luminance mapping with chroma scaling is enabled for the current slice. slice_lmcs_enabled_flag being equal to 0 specifies that luminance mapping with chroma scaling is not enabled for the current slice. When slice_lmcs_enabled_flag is not present, it is inferred to be equal to 0.
[0647] slice_scaling_list_present_flag being equal to 1 specifies that the scaling list data for the current slice is derived based on the scaling list data contained in the reference scaling list APS, where aps_params_type is equal to SCALING_APS and adaptation_parameter_set_id is equal to ph_scaling_list_aps_id. slice_scaling_list_present_flag being equal to 0 specifies that the scaling list data for the current picture is the default scaling list data specified in Clause 7.4.3.21. When not present, the value of slice_scaling_list_present_flag is inferred to be equal to 0.
[0648] The variable NumEntryPoints specifies the number of entry points in the current slice and is derived as follows:
[0649]
[0650]
[0651] offset_len_minus1 plus 1 specifies the length (in bits) of the entry_point_offset_minus1[i] syntax element. The value of offset_len_minus1 shall be in the range of 0 to 31 (inclusive of the end values).
[0652] entry_point_offset_minus1[i] plus 1 specifies the i-th entry point offset in bytes and is represented by offset_len_minus1 plus 1 bits. The slice data following the slice header consists of NumEntryPoints + 1 subsets, where the subset index values range from 0 to NumEntryPoints (inclusive of the end values). The first byte of the slice data is considered byte 0. When present, the emulation prevention bytes that appear in the slice data part of the coded slice NAL unit are counted as part of the slice data for the purpose of subset identification. Subset 0 consists of bytes 0 to entry_point_offset_minus1[0] (inclusive of the end value) of the coded slice data, and subset k (where k ranges from 1 to NumEntryPoints - 1 (inclusive of the end values)) consists of bytes firstByte[k] to lastByte[k] (inclusive of the end values) of the coded slice data, where firstByte[k] and lastByte[k] are defined as:
[0653]
[0654] lastByte[k] = firstByte[k] + entry_point_offset_minus1[k] (147)
[0655] The last subset (where the subset index is equal to NumEntryPoints) consists of the remaining bytes of the coded slice data.
[0656] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains one or more complete slices, each subset shall consist of all the coded bits of all the CTUs in the slice in the same slice, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the number of slices in the slice.
[0657] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains a subset of CTU rows from a single slice, NumEntryPoints shall be 0, and the number of subsets shall be 1. This subset shall consist of all the coded bits of all the CTUs in the slice.
[0658] When sps_entropy_coding_sync_enabled_flag is equal to 1, for each subset k in the range of 0 to NumEntryPoints (including the end values), it shall consist of all the coded bits of all the CTUs in the CTU rows within the slice, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the total number of slice-specific CTU rows in the slice.
[0659] slice_header_extension_length specifies the length of the slice header extension data in bytes, excluding the bits used to signal slice_header_extension_length itself. The value of slice_header_extension_length shall be in the range of 0 to 256 (including the end values). When it is absent, the value of slice_header_extension_length is inferred to be equal to 0.
[0660] slice_header_extension_data_byte[i] can have any value. Decoders compliant with this version of the specification shall ignore the values of all slice_header_extension_data_byte[i] syntax elements. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.
[0661] 3.5 Chrominance QP Mapping Table
[0662] In clause 7.3.2.3 of JVET-Q2001-vC, the SPS includes a structure called the chrominance QP table as follows:
[0663]
[0664] They have the following semantics and QP table derivation:
[0665] When sps_joint_cbcr_enabled_flag equals 0, it specifies that joint coding of chroma residuals is disabled. When sps_joint_cbcr_enabled_flag equals 1, it specifies that joint coding of chroma residuals is enabled. When absent, the value of sps_joint_cbcr_enabled_flag is inferred to be equal to 0.
[0666] When same_qp_table_for_chroma equals 1, it specifies that only one chroma QP mapping table is signaled and this table is applied to both the Cb and Cr residuals and also to the joint Cb - Cr residuals when sps_joint_cbcr_enabled_flag equals 1. When same_qp_table_for_chroma equals 0, it specifies that when sps_joint_cbcr_enabled_flag equals 1, the chroma QP mapping tables are signaled in the SPS, two for Cb and Cr respectively, and another one for the joint Cb - Cr. When same_qp_table_for_chroma is absent from the bitstream, the value of same_qp_table_for_chroma is inferred to be equal to 1.
[0667] qp_table_start_minus26[i] plus 26 specifies the starting luma and chroma QP used to describe the i-th chroma QP mapping table. The value of qp_table_start_minus26[i] shall be in the range of -26 – QpBdOffset to 36 (inclusive of the end values). When qp_table_start_minus26[i] is absent from the bitstream, the value of qp_table_start_minus26[i] is inferred to be equal to 0.
[0668] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the i-th chroma QP mapping table. The value of num_points_in_qp_table_minus1[i] shall be in the range of 0 to 63 + QpBdOffset (inclusive of the end values). When num_points_in_qp_table_minus1[0] is absent from the bitstream, the value of num_points_in_qp_table_minus1[0] is inferred to be equal to 0.
[0669] delta_qp_in_val_minus1[i][j] specifies the incremental value for deriving the input coordinate of the j-th pivot point of the i-th chroma QP mapping table. When delta_qp_in_val_minus1[0][j] does not exist in the bitstream, it is inferred that the value of delta_qp_in_val_minus1[0][j] is equal to 0.
[0670] delta_qp_diff_val[i][j] specifies the incremental value for deriving the output coordinate of the j-th pivot point of the i-th chroma QP mapping table.
[0671] The i-th chroma QP mapping table ChromaQpTable[i] for i = 0..numQpTables - 1 is derived as follows:
[0672]
[0673]
[0674] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set to be equal to ChromaQpTable[0][k] for k in the range from -QpBdOffset to 63 (including the end values).
[0675] The requirement for bitstream consistency is that for i in the range from 0 to numQpTables – 1 (including the end values) and j in the range from 0 to num_points_in_qp_table_minus1[i] + 1 (including the end values), qpInVal[i][j] and qpOutVal[i][j] should be in the range from -QpBdOffset to 63 (including the end values).
[0676] In the above description, QpBdOffset is derived as:
[0677] bit_depth_minus8 specifies the bit depth BitDepth of the samples of the luminance and chroma arrays, and the value of the luminance and chroma quantization parameter range offset QpBdOffset as follows:
[0678] BitDepth = 8 + bit_depth_minus8
[0679] QpBdOffset = 6 * bit_depth_minus8
[0680] bit_depth_minus8 shall be in the range of 0 to 8 (including the end values).
[0681] 4. Technical problems solved by the disclosed technical solution
[0682] The existing designs in the latest VVC draft specifications for APS, deblocking, sub-pictures, and QP deltas have the following problems:
[0683] 1) Currently, the value of the APS syntax element scaling_list_chroma_present_flag is constrained based on the ChromaArrayType derived from the SPS syntax elements chroma_format_idc and separate_colour_plane_flag, as follows: when ChromaArrayType is equal to 0, scaling_list_chroma_present_flag shall be equal to 0, and when ChromaArrayType is not equal to 0, scaling_list_chroma_present_flag shall be equal to 1.
[0684] This constraint in the semantics of the APS syntax element introduces a semantic dependence of APS on SPS, which should not occur because since there is no PPS ID or SPS ID in the APS syntax, APS can be applied to pictures (or stripes of pictures) that refer to different SPSs, which may be associated with different values of ChromaArrayType.
[0685] a. Additionally, a similar APS-SPS semantic dependence also exists in the semantics of some ALF / CC-ALF APS syntax elements, as follows: when ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag shall be equal to 0.
[0686] b. Currently, when signaling the LMCS APS, the syntax elements related to chroma residual scaling are always signaled in the LMCS APS syntax structure, regardless of whether ChromaArrayType is equal to 0 (i.e., there is no chroma component in the CLVS). This results in unnecessary signaling of chroma-related syntax elements.
[0687] 2) It is claimed that the deblocking control mechanism in the latest VVC text is quite complex, not intuitive, and not easy to understand, and thus error-prone. The following are some example problems we have observed:
[0688] a. According to the current text, even if the deblocking filter is disabled in PPS, it can be enabled in PH or SH. For example, if first the pps_deblocking_filter_disabled_flag is signaled to be equal to 1, and also the deblocking_filter_override_enabled_flag is signaled to be equal to 1, it indicates that the deblocking filter is disabled in PPS, and it also allows the override of the deblocking filter enable / disable control in PH or SH. Then the 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 ultimately enables the deblocking filter for the strip associated with PH. In this case, the deblocking is ultimately enabled in PH regardless of it being disabled at a higher level (e.g., PPS). Such a design logic is unique in the VVC text and is very different from the design logics of other codec tools (e.g., ALF, SAO, LMCS, TMVP, WP, etc.), because usually when a codec tool is disabled at a higher layer (e.g., SPS, PPS), it is completely disabled at a lower layer (e.g., PH, SH).
[0689] b. Additionally, the current definition of pps_deblocking_filter_disabled_flag is similar to "pps_deblocking_filter_disabled_flag being equal to 1 stipulates that the operation of the deblocking filter should not be applied to the strips in PPS where slice_deblocking_filter_disabled_flag does not exist...". However, according to the current syntax table, even if pps_deblocking_filter_disabled_flag is equal to 1 and slice_deblocking_filter_disabled_flag does not exist, the operation of the deblocking filter will still be applied when ph_deblocking_filter_disabled_flag exists and is signaled to be equal to 0. Therefore, the current definition of pps_deblocking_filter_disabled_flag is incorrect.
[0690] c. Additionally, 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 specifies that deblocking is disabled in the PPS, and the control of the deblocking filter is intended to be overridden in the PH or SH. However, the subsequent PH syntax elements ph_deblocking_filter_override_flag and ph_deblocking_filter_disabled_flag may still be signaled as equal to 1, indicating that the resulting override process does not change anything (e.g., deblocking remains disabled in the PH / SH) but only uses unnecessary bits for meaningless signaling.
[0691] d. Further, according to the current text, when the SH syntax element slice_deblocking_filter_override_flag does not exist, it is inferred to be equal to the ph_deblocking_filter_override_flag. However, except for implicit or explicit signaling in the PPS, the deblocking parameters can only be signaled in the PH or SH according to the dbf_info_in_ph_flag, but not in both the PH and SH. Therefore, when the dbf_info_in_ph_flag is true, the intention is to allow the signaling of overridden deblocking filter parameters in the PH. In this case, if the PH override flag is true and the SH override flag is not signaled but is inferred to be equal to the PH override flag, additional deblocking filter parameters will still be signaled in the SH, which conflicts with the intention.
[0692] e. Additionally, there is no SPS-level deblocking on / off control. An SPS-level deblocking on / off control can be added, and the relevant syntax elements in the PPS / PH / SH can be updated accordingly.
[0693] 3) Currently, when the PPS syntax element single_slice_per_subpic_flag does not exist, it is inferred to be equal to 0. The single_slice_per_subpic_flag does not exist in two cases: i) no_pic_partition_flag is equal to 1, and ii) no_pic_partition_flag is equal to 0 and rect_slice_flag is equal to 0.
[0694] For case i), no_pic_partition_flag being equal to 1 specifies that the picture partitioning is not applied to each picture of the reference PPS. Therefore, there is only one strip in each picture, and thus only one sub-picture in each picture, and there is only one strip in each sub-picture. Therefore, in this case, single_slice_per_subpic_flag should be inferred to be equal to 1.
[0695] For case ii), since rect_slice_flag is equal to 0, the inferred value of single_slice_per_subpic_flag is not required.
[0696] 4) Currently, the luma qp increment in the picture or slice level is always signaled mandatorily in PH or SH, rather than in both PH and SH. And the slice level chroma QP offset is signaled optionally in SH. Such a design is somewhat inconsistent.
[0697] a. In addition, the current semantic wording of the PPS syntax element cu_qp_delta_enabled_flag is as follows: cu_qp_delta_enabled_flag being equal to 1 specifies that the ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice syntax elements exist in the PH of the reference PPS, and cu_qp_delta_abs may exist in the transform unit syntax... However, cu_qp_ may also exist in the palette coding syntax, which should also be specified by cu_qp_delta_enabled_flag. In other words, the current semantics of cu_qp_delta_enabled_flag is not clear enough and is a bit confusing.
[0698] 5) The current design of the chroma Qp mapping table cannot directly represent the case where the chroma Qp is equal to the luma Qp.
[0699] 6) Currently, subpic_treated_as_pic_flag[i] is inferred to be equal to the value of sps_independent_subpics_flag. However, the current specification only allows horizontal wrapping to be enabled when subpic_treated_as_pic_flag[i] is equal to 0, where the wrapped motion compensation is designed for 360 video content. Therefore, when a picture contains only one sub-picture (especially for the case where a complete 360 video sequence contains only one sub-picture), the inferred value of subpic_treated_as_pic_flag[i] can be inferred to be equal to 0 or a specific value that allows wrapped motion compensation.
[0700] 7) Currently, the semantics of pps_deblocking_filter_disabled_flag are incorrect and incomplete. For example, when pps_deblocking_filter_disabled_flag is equal to 1, deblocking can be enabled or disabled for the slices that reference this PPS, but these conditions are not mentioned in the semantics. Similarly, for the semantic part where pps_deblocking_filter_disabled_flag is equal to 0.
[0701] a. Additionally, when the PPS syntax element pps_deblocking_filter_disabled_flag is equal to 1 and the PH / SH syntax element ph / slice_deblocking_filter_override_flag is signaled to be equal to 1, it is still allowed for ph / slice_deblocking_filter_disabled_flag to be explicitly signaled to be equal to 1. This combination of flag values effectively says at the PPS level that deblocking is disabled and allows it to be overridden at the picture or slice level, then indicates at the PH / SH level that it will be overridden, and then signals a bit in the same header (PH / SH) to finally determine that it is actually not overridden and deblocking remains disabled at the picture / slice level. This is asserted to have two adverse effects: not only does it unnecessarily consume bits, but it also consumes them just to cause some confusion. Therefore, we recommend further improving the semantics of the deblocking control syntax elements and removing the feature that allows indicating an override and then immediately sending the next bit in the same PH or SH to indicate a change of mind.
[0702] 8) In decoding order, the first decoded slice of an IRAP or GDR picture can reference a suffix APS NAL unit, which may delay the random access response.
[0703] 9) In VVC, updating the content of the APS NAL unit in a PU is not allowed, which may limit certain applications.
[0704] 10) It has been observed that there are some problems / defects (e.g., problems / defects related to APS syntax) in the current VVC draft text that should be addressed.
[0705] a. The absolute value of the ALF filter coefficients (i.e., alf_luma_coeff_abs and alf_chroma_coeff_abs[altIdx][j] in the VVC text) is in the range of [0, 128]. Therefore, 9 bits are required to store the coefficients, and this is just for storing the values 128 and -128.
[0706] 11) In the current text, the total number of allowed ALF APSs is limited to 8, and each ALF APS occupies approximately 512 bytes, so 8 of them occupy 4k bytes. Given the significant impact on memory, it is recommended to consider restricting the total memory used (or the number of filters in an APS - there are up to 25 luma filters and 8 chroma filters in an APS) rather than the number of APSs, because the amount of memory used by an APS depends on its content.
[0707] 12) Currently, the APS ID (i.e., the syntax element adaptation_parameter_set_id) is encoded and decoded as u(5), while when aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 7 (inclusive of the end values), and when aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id should be in the range of 0 to 3 (inclusive of the end values). In other words, it is sufficient to use 3 bits for the APS ID instead of 5 bits.
[0708] 13) Currently, the general constraint flags in the general_constraint_info() syntax structure are parsed in a different order. The syntax elements grouped as inter - frame related and intra - frame related will be more structured.
[0709] 14) When a picture allows inter - frame stripes, an indication of the allowed stripe types within the picture (e.g., ph_intra_slice_allowed_flag) is always signaled. However, if the picture contains only one stripe, if inter - frame stripes are allowed, there is no need to further signal the allowed intra - frame stripe flag.
[0710] 5. Example Embodiments and Solutions
[0711] To solve the above problems and some other problems not mentioned, the following summarized methods are disclosed. The inventions should be regarded as examples explaining general concepts and should not be interpreted narrowly. In addition, these inventions can be applied alone or in combination in any way.
[0712] In the following discussion, SH can be associated with PH, that is, SH is associated with a strip in the picture associated with PH. SH can be associated with PPS, that is, SH is associated with a strip in the picture associated with PPS. PH can be associated with PPS, that is, PH is associated with a picture associated with PPS.
[0713] In the following discussion, SPS can be associated with PPS, that is, PPS can refer to SPS.
[0714] In the following discussion, the changed text is based on the latest VVC text in JVET-Q2001-vE. Most of the relevant parts added or modified are shown, and the deleted parts are marked with double brackets (for example, [[a]] means deleting the character 'a').
[0715] 1. Regarding the constraints on the APS syntax elements for solving the first problem, one or more of the following methods are disclosed:
[0716] a. In one example, the value of scaling_list_chroma_present_flag is constrained according to the ChromaArrayType derived from the PH syntax element.
[0717] i. For example, whether the value of scaling_list_chroma_present_flag is constrained can depend on the existence of ph_scaling_list_aps_id, for example, as in the first set of embodiments.
[0718] 1) In one example, it is required that when ph_scaling_list_aps_id exists, the value of scaling_list_chroma_present_flag of the APS NAL unit with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id should be equal to ChromaArrayType == 0? 0: 1.
[0719] ii. Alternatively, the scaling_list_chroma_present_flag is constrained based on the ChromaArrayType derived from the PH syntax element, and is independent of the presence of ph_scaling_list_aps_id. For example, as in the first set of embodiments.
[0720] 1) In one example, for an APS NAL unit where aps_params_type is required to be equal to SCALING_APS, the value of the scaling_list_chroma_present_flag should be equal to ChromaArrayType == 0? 0 : 1.
[0721] b. In one example, the value of lmcs_delta_abs_crs is constrained according to the ChromaArrayType derived from the PH syntax element.
[0722] i. For example, whether the value of lmcs_delta_abs_crs is constrained may depend on the presence of ph_lmcs_aps_id. For example, as in the first set of embodiments.
[0723] 1) For example, it is required that when ph_lmcs_aps_id is present, if ChromaArrayType is equal to 0, the value of lmcs_delta_abs_crs for an APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id should be equal to 0; otherwise, the value should be greater than 0.
[0724] 2) Alternatively, it is required that when ph_lmcs_aps_id is present, if ChromaArrayType is equal to 0, the value of lmcs_delta_abs_crs for an APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id should be equal to 0.
[0725] ii. Alternatively, lmcs_delta_abs_crs is constrained based on the ChromaArrayType derived from the PH syntax element, and is independent of the presence of ph_lmcs_aps_id. For example, as in the first set of embodiments.
[0726] 1) For example, it is required that if ChromaArrayType is equal to 0, the value of lmcs_delta_abs_crs of the APS NAL unit equal to ph_lmcs_aps_id should be equal to 0; otherwise, the value should be greater than 0.
[0727] 2) For example, it is required that if ChromaArrayType is equal to 0, the value of lmcs_delta_abs_crs of the APS NAL unit equal to ph_lmcs_aps_id should be equal to 0.
[0728] c. In one example, the values of ALF APS syntax elements (such as alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag, etc.) are constrained according to ChromaArrayType derived from PH syntax elements and / or SH syntax elements.
[0729] 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 can depend on whether ph_alf_aps_id_luma[i] or slice_alf_aps_id_luma[i] exists and / or whether ChromaArrayType is equal to 0, for example, as in the first set of embodiments.
[0730] 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 unit 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.
[0731] 2) Additionally, when slice_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 unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] should all be equal to 0.
[0732] 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 ChromaArrayType derived from PH syntax elements or SH syntax elements, regardless of the existence of ph_alf_aps_id_luma[i] and / or slice_alf_aps_id_luma[i], for example, as in the first set of embodiments.
[0733] 1) For example, 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 unit where aps_params_type is equal to ALF_APS should all be equal to 0.
[0734] 2) Additionally, 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 unit where aps_params_type is equal to ALF_APS should all be equal to 0.
[0735] iii. 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 ChromaArrayType derived from the PH or SH syntax elements related to the chroma APS ID, for example, as in the first set of embodiments.
[0736] 1) For example, alf_chroma_filter_signal_flag is constrained according to ChromaArrayType derived from the PH syntax element ph_alf_aps_id_chroma and / or the SH syntax element slice_alf_aps_id_chroma.
[0737] 2) For example, alf_cc_cb_filter_signal_flag is constrained according to ChromaArrayType derived from the PH syntax element ph_cc_alf_cb_aps_id and / or the SH syntax element slice_cc_alf_cb_aps_id.
[0738] 3) For example, alf_cc_cr_filter_signal_flag is constrained according to ChromaArrayType derived from the PH syntax element ph_cr_alf_cb_aps_id and / or the SH syntax element slice_cr_alf_cb_aps_id.
[0739] 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 4:0:0 video coding and / or separate color plane coding.
[0740] i. For example, the semantics of the APS syntax elements (such as alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag, etc.) in the ALF data syntax structure may not depend on the variables / syntax derived from the SPS / PH / SH syntax elements (such as ChromaArrayType), for example, as in the first set of embodiments.
[0741] ii. Additionally, or alternatively, the semantics of APS syntax elements (such as scaling_list_chroma_present_flag, etc.) in the SCALING LIST data syntax structure may not depend on the variables / syntax derived from SPS / PH / SH syntax elements (such as ChromaArrayType), for example, as in the first set of embodiments.
[0742] e. Additionally, 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 in the first set of embodiments.
[0743] i. For example, whether the temporalId of the ALF APS NAL unit is constrained may depend on the existence of 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_alf_cr_aps_id.
[0744] ii. For example, whether the temporalId of the LMCS APS NAL unit is constrained may depend on the existence of ph_lmcs_aps_id.
[0745] iii. For example, whether the temporalId of the SCALING APS NAL unit is constrained may depend on the existence of ph_scaling_list_aps_id.
[0746] 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 in the first set of embodiments.
[0747] i. For example, whether alf_luma_filter_signal_flag should be equal to 1 may depend on the existence of ph_alf_aps_id_luma[i] and / or slice_alf_aps_id_luma[i].
[0748] ii. For example, whether alf_chroma_filter_signal_flag should be equal to 1 may depend on the existence of ph_alf_aps_id_chroma and / or slice_alf_aps_id_chroma.
[0749] iii. For example, whether alf_cc_cb_filter_signal_flag should be equal to 1 may depend on the existence of ph_cc_alf_cb_aps_id and / or slice_cc_alf_cb_aps_id.
[0750] iv. For example, whether alf_cc_cr_filter_signal_flag should be equal to 1 may depend on the existence of ph_cc_alf_cr_aps_id and / or slice_cc_alf_cr_aps_id.
[0751] g. Additionally, or alternatively, whether to infer 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_aps_id, etc.) may depend on the value of ChromaArrayType, e.g., as in the embodiments of the first group.
[0752] i. For example, when ChromaArrayType is not equal to 0, the values of 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_aps_id, etc.) can be inferred.
[0753] h. In one example, the constraints of APS syntax elements based on ChromaArrayType can be derived from PH or SH syntax elements.
[0754] i. Optionally, the constraints of one or more syntax elements in APS (such as the indication of the existence of chroma information (e.g., whether to signal chroma filters, whether to signal chroma scaling lists, whether the LMCS residual scaling factor is equal to 0)) can be defined in the semantics of PH and / or SH syntax elements.
[0755] a) Optionally, in addition, PH and / or SH syntax elements can refer to APS.
[0756] b) Optionally, in addition, the constraints on the same syntax element in different APS types can be different, i.e., unidirectional (e.g., when a certain condition is true, the constraint is applied) or bidirectional constraints (e.g., if a certain condition is true, the first constraint is applied; otherwise, the second constraint is applied) are used.
[0757] ii. In one example, the APS to which a syntax element is constrained is determined by an index signaled in the PH or SH (e.g., ph_num_alf_aps_ids_luma, ph_alf_aps_id_chroma, ph_lmcs_aps_id, and ph_scaling_list_aps_id).
[0758] iii. ChromaArrayType can be derived from information signaled in the SPS (e.g., chroma_format_idc and separate_colour_plane_flag), which is determined by an index signaled in the PPS (e.g., pps_seq_parameter_set_id), which is further determined by an index signaled in the PH or SH (e.g., ph_pic_parameter_set_id).
[0759] iv. In one example, the constraints should be checked after parsing the APS and the PH or SH.
[0760] v. In one example, a syntax element (e.g., named aps_chroma_present_flag) that specifies whether to signal syntax elements related to chroma in the APS syntax structure (e.g., adaptation_parameter_set_rbsp()) can be signaled.
[0761] a) In one example, the syntax element can be defined as the syntax element in the sixth embodiment.
[0762] b) Optionally, a syntax element (e.g., named aps_chroma_present_flag) can be used to control the presence of other syntax elements in the APS and / or how to signal other syntax elements and / or how to derive the inferred values of other syntax elements.
[0763] c) For example, aps_chroma_present_flag being equal to a certain value (e.g., 1) specifies that syntax elements related to chroma can appear in the LMCS / SCALING / ALF APS data.
[0764] d) For example, when aps_chroma_present_flag is equal to a certain value (e.g., 0), it is specified that the APS syntax elements related to chroma do not exist in the LMCS / SCALING / ALF APS data.
[0765] e) For example, when aps_chroma_params_present_flag is equal to 1, it is specified that the APS NAL unit may include chroma information. When aps_chroma_params_present_flag is equal to 0, it is specified that the APS NAL unit does not include chroma information.
[0766] f) For example, when aps_chroma_present_flag is equal to a certain value (e.g., 0 or 1), the APS syntax elements related to chroma in the ALF APS syntax structure (e.g., alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag in alf_data()) may not be signaled.
[0767] g) For example, when aps_chroma_present_flag is equal to a certain value (e.g., 0 or 1), the APS syntax elements related to chroma in the LMCS APS syntax structure (e.g., lmcs_delta_abs_crs and / or lmcs_delta_sign_crs_flag in lmcs_data()) may not be signaled.
[0768] h) For example, when aps_chroma_present_flag is equal to a certain value (e.g., 0 or 1), the APS syntax elements related to chroma in the SCALING APS syntax structure (e.g., scaling_list_copy_mode_flag[id], scaling_list_pred_id_delta[id], scaling_list_dc_coef[id - 14], scaling_list_delta_coef[id][i] in scaling_data()), where id is a number, may not be signaled.
[0769] a. For example, id is equal to some values in the range from 0 to X (including the end values) (e.g., X = 27).
[0770] b. For example, id is not equal to X (e.g., X = 27).
[0771] c. For example, id % M is not equal to N (e.g., M = 3, N = 2).
[0772] i) For example, when a chroma-related APS syntax element does not exist, it is inferred to be equal to a certain value (e.g., 0 or 1).
[0773] vi. In one example, when a chroma-related APS syntax element is allowed to exist (e.g., aps_chroma_present_flag is equal to 1), it is required that at least one of alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, and alf_cc_cr_filter_signal_flag should be equal to 1.
[0774] vii. Optionally, when a chroma-related APS syntax element is allowed to exist (e.g., aps_chroma_present_flag is equal to 1), the signaling of syntax element X can depend on the values of the syntax elements in set Y.
[0775] a) For example, X is alf_chroma_filter_signal_flag, and Y includes alf_cc_cb_filter_signal_flag and alf_cc_cr_filter_signal_flag.
[0776] b) For example, X is alf_cc_cb_filter_signal_flag, and Y includes alf_chroma_filter_signal_flag and alf_cc_cr_filter_signal_flag.
[0777] c) For example, X is alf_cc_cr_filter_signal_flag, and Y includes alf_chroma_filter_signal_flag and alf_cc_cb_filter_signal_flag.
[0778] d) For example, when the value of the element in Y is equal to 0, the signaling of A is skipped.
[0779] e) For example, when it does not exist, the value of X is inferred to be equal to a certain value (e.g., 0 or 1).
[0780] f) For example, the value of X is inferred to be equal to whether a chroma-related APS syntax element is allowed to exist (e.g., set to the value of aps_chroma_present_flag).
[0781] viii. Additionally, the syntax element aps_chroma_present_flag may be constrained by ChromaArrayType.
[0782] a) For example, if ChromaArrayType is equal to 0, then aps_chroma_present_flag shall be equal to 0.
[0783] b) For example, if ChromaArrayType is greater than 0, then aps_chroma_present_flag shall be equal to 1.
[0784] ix. Additionally, the constraints based on ChromaArrayType can be derived from PH or SH syntax elements.
[0785] a) In one example, the constraints based on ChromaArrayType can be defined as the constraints in the sixth embodiment.
[0786] b) For example, the syntax element aps_chroma_present_flag can be constrained according to ChromaArrayType and the type of APS (such as ALF APS, SCALING APS, or LMCS APS).
[0787] c) Optionally, the value of ChromaArrayType can be constrained according to the syntax element aps_chroma_present_flag and / or the type of APS.
[0788] d) In one example, it is required that for an APS NAL unit where chromaArrayType is equal to 0, aps_params_type is equal to ALF_APS, and adaptation_parameter_set_id is equal to ph / slice_alf_aps_id_luma[i], the value of aps_chroma_present_flag shall be equal to 0.
[0789] a. Additionally, or alternatively, it is required that for an APS NAL unit where chromaArrayType is greater than 0, aps_params_type is equal to ALF_APS, and adaptation_parameter_set_id is equal to ph / slice_alf_aps_id_chroma (and / or ph_cc_alf_cb_aps_id and / or ph_cc_alf_cr_aps_id), the value of aps_chroma_present_flag shall be equal to 1.
[0790] e) In one example, it is required that when chromaArrayType is equal to 0, the value of aps_chroma_present_flag of the APS NAL unit where aps_params_type is equal to SCALING_APS and adaptation_parameter_set_id is equal to ph_scaling_list_aps_id should be equal to 0.
[0791] a. Additionally, or alternatively, it is required that when chromaArrayType is greater than 0, the value of aps_chroma_present_flag of the APS NAL unit where aps_params_type is equal to SCALING_APS and adaptation_parameter_set_id is equal to ph_scaling_list_aps_id should be equal to 1.
[0792] f) In one example, it is required that when chromaArrayType is equal to 0, the value of aps_chroma_present_flag of the APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id should be equal to 0.
[0793] x. Furthermore, optionally, when chromaArrayType is greater than 0, it is required that the value of aps_chroma_present_flag of the APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id is equal to 1. Additionally, the constraints based on ChromaArrayType can be derived from PH syntax elements or SH syntax elements, but are independent of the presence of APS ID in PH / SH.
[0794] a) In one example, when chromaArrayType is equal to 0, it is required that the value of aps_chroma_present_flag of the APS NAL unit where aps_params_type is equal to SCALING_APS and / or ALF_APS and / or LMCS APS should be equal to 0.
[0795] b) Additionally, optionally, when chromaArrayType is greater than 0, the value of aps_chroma_present_flag for the APS NAL unit requiring aps_params_type to be equal to SCALING_APS and / or ALF_APS and / or LMCS APS should be equal to 1.
[0796] 2. Regarding the signaling of deblocking control for solving the second problem, one or more of the following methods are disclosed, for example, as in the second set of embodiments:
[0797] a. In one example, an N-bit (e.g., N = 2) deblocking mode indicator (e.g., named deblocking_filter_mode_idc) is signaled.
[0798] i. In one example, the syntax element deblocking_filter_mode_idc is encoded and decoded by u(2).
[0799] a) Alternatively, the parsing process of deblocking_filter_mode_idc is an unsigned integer of N (e.g., N = 2) bits.
[0800] ii. In one example, the syntax element deblocking_filter_mode_idc is signaled in the PPS.
[0801] iii. In one example, the syntax element deblocking_filter_mode_idc is used to specify the following four modes: a) Deblocking is completely disabled and not used for all strips; b) Deblocking is performed on all strips using a β value of 0 and a tC offset; c) Deblocking is performed on all strips using the β and tC offsets explicitly signaled in the PPS; d) Further control of deblocking is performed at the picture or strip level.
[0802] b. The syntax flag ph / slice_deblocking_filter_used_flag is signaled in the PH or SH, specifying whether deblocking is used for the current picture / strip.
[0803] c. The syntax flag ph / slice_deblocking_parameters_override_flag is signaled in the PH or SH, specifying whether the β and tC offsets are overridden by the values signaled in the PH / SH.
[0804] i. Additionally, when not present, it is inferred that the value of slice_deblocking_parameters_override_flag is equal to 0.
[0805] d. In one example, syntax elements that specify deblocking control (e.g., enable flag, disable flag, control flag, deblocking mode indicator, deblocking filter beta / tc parameters, etc.) can be signaled in the SPS.
[0806] i. In one example, one or more syntax elements that specify whether deblocking is enabled in a video unit (e.g., CLVS) can be signaled in the SPS.
[0807] ii. Additionally, when deblocking is disabled in the SPS, the syntax elements in the PPS / PH / SH regarding deblocking on / off control at the PPS / PH / SH level shall be equal to a specific value that specifies that deblocking is completely disabled and not used for all slices.
[0808] iii. In one example, the deblocking filter control presence flag can be signaled in the SPS.
[0809] iv. For example, an N-bit (e.g., N = 2) deblocking mode indicator (e.g., named deblocking_filter_mode_idc) can be signaled in the SPS.
[0810] v. For example, beta / tc deblocking parameters can be signaled in the SPS.
[0811] vi. For example, whether to enable deblocking using 0-value beta / tc deblocking parameters can depend on an SPS syntax element.
[0812] vii. For example, deblocking can be applied at the SPS / PPS / PH / SH level and use the beta / tc deblocking parameters signaled in the SPS.
[0813] viii. For example, deblocking can be applied at the SPS / PPS / PH / SH level and use 0-value deblocking parameters signaled in the SPS.
[0814] 3. Regarding the inference of the PPS syntax element single_slice_per_subpic_flag for solving the third problem, one or more of the following methods are disclosed:
[0815] a. In one example, when no_pic_partition_flag is equal to 1, it is inferred that single_slice_per_subpic_flag is equal to 1. For example, the semantics of single_slice_per_subpic_flag are changed as follows:
[0816] The single_slice_per_subpic_flag being equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. The single_slice_per_subpic_flag being equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When [[does not exist]], it is inferred that the value of single_slice_per_subpic_flag is equal to [[0]] .
[0817] 4. Regarding the picture or slice QP delta signaling notification for solving the fourth problem, one or more of the following methods are disclosed:
[0818] a. In one example, the picture or slice-level chroma QP offset is always signaled in the PH or SH.
[0819] i. For example, if a chroma component exists in the video content (e.g., ChromaArrayType is not equal to 0), the picture or slice-level chroma QP offset can always be signaled without being conditional on the current flag signaled in the PPS (e.g., pps_slice_chroma_qp_offsets_present_flag).
[0820] ii. Alternatively, if a chroma component exists in the video content (e.g., ChromaArrayType is not equal to 0), the slice_cb_qp_offset and slice_cr_qp_offset syntax elements can always be present in the associated slice header regardless of the PPS presence flag (e.g., pps_slice_chroma_qp_offsets_present_flag).
[0821] iii. Additionally, the current flag (e.g., pps_slice_chroma_qp_offsets_present_flag) that specifies the existence of the slice_cb_qp_offset and slice_cr_qp_offset syntax elements may not be signaled.
[0822] b. In one example, pps_cu_qp_delta_enabled_flag can be used to specify the existence of cu_qp_delta_abs and cu_qp_delta_sign_flag in both the transform unit syntax and the palette decoding syntax, and the semantics of pps_cu_qp_delta_enabled_flag are changed as follows:
[0823] The pps_cu_qp_delta_enabled_flag being equal to 1 specifies that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice exist in the PH of the reference PPS, and cu_qp_delta_abs may exist in the transform unit syntax and. The pps_cu_qp_delta_enabled_flag being equal to 0 specifies that the syntax elements ph_cu_qp_delta_subdiv_intra_slice and ph_cu_qp_delta_subdiv_inter_slice do not exist in the PH of the reference PPS, and cu_qp_delta_abs does not exist in the transform unit syntax and.
[0824] c. In one example, the luminance QP increment can be signaled in both the PH and the SH.
[0825] i. For example, the luminance QP increment presence flag can be signaled in the PPS and / or the PH and / or the SH.
[0826] ii. For example, whether the luminance QP increment is signaled in the PH / SH depends on the presence flag in the PPS and / or the PH / SH.
[0827] iii. For example, the values of the PH luminance QP increment and the SH luminance QP increment can be cumulative values and are used to calculate the luminance quantization parameter, such as SliceQp Y and.
[0828] d. In one example, the chrominance QP offset can be signaled in both the PH and the SH.
[0829] i. For example, the chrominance QP offset presence flag can be signaled in the PPS and / or the PH and / or the SH.
[0830] ii. For example, whether the chrominance QP offset is signaled in the PH / SH depends on the presence flag in the PPS and / or the PH / SH.
[0831] iii. For example, the values of the PH chrominance QP offset and the SH chrominance QP offset can be cumulative values and are used to derive the chrominance quantization parameters for the Cb and Cr components.
[0832] 5. Regarding the chrominance Qp mapping table, one or more of the following methods are disclosed:
[0833] 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], for example, in the third set of embodiments.
[0834] b. It is proposed to have a flag in sps_multiple_sets_of_chroma_qp_table_present_flag in the SPS.
[0835] i. When sps_multiple_sets_of_chroma_qp_table_present_flag is equal to 0, only signaling of one set of chroma Qp mapping tables is allowed.
[0836] ii. When sps_multiple_sets_of_chroma_qp_table_present_flag is equal to 1, signaling of more than one set of chroma Qp mapping tables is allowed.
[0837] c. For sequences without B / P slices, signaling of more than one set of chroma Qp mapping tables may not be allowed.
[0838] 6. Regarding sps_independent_subpics_flag and subpic_treatment_as_pic_flag[i] for solving the sixth problem, one or more of the following methods are disclosed:
[0839] a. In one example, the existence of sps_independent_subpics_flag depends on whether the number of sub - pictures is greater than 1.
[0840] i. For example, only when the number of sub - pictures is greater than 1 (e.g., if (sps_num_subpics_minus1 > 0)), sps_independent_subpics_flag is signaled.
[0841] ii. For example, when the number of sub - pictures is equal to 1 (e.g., if (sps_num_subpics_minus1 == 0)), signaling of sps_independent_subpics_flag is skipped.
[0842] b. In addition, when sps_independent_subpics_flag does not exist, it is inferred to be equal to a specific value (e.g., 0 or 1).
[0843] c. In one example, when subpic_treatment_as_pic_flag[i] does not exist, it is inferred to be equal to a specific value (e.g., 0 or 1).
[0844] d. In one example, when subpic_treatment_as_pic_flag[i] does not exist, it is inferred to be equal to a specific value that enables (or allows the use of) loop filter.
[0845] i. Further, when subpic_treated_as_pic_flag[i] does not exist, it is inferred to be equal to a specific value that enables (or allows the use of) horizontal loop filter.
[0846] e. In one example, the inferred value of subpic_treatment_as_pic_flag[i] may depend on whether the picture consists of only one sub-picture; and / or whether the sub-picture has the same width as the picture.
[0847] i. In one example, if the sub-picture has the same width as the picture, subpic_treatment_as_pic_flag[i] may be inferred to be X (e.g., X = 0).
[0848] f. In one example, when sps_independent_subpics_flag does not exist, what value sps_independent_subpics_flag is inferred to be may depend on one or more other syntax elements or one or more variables.
[0849] i. For example, the inferred value may depend on whether sub-picture information exists (e.g., subpic_info_present_flag equals 0 or 1).
[0850] ii. For example, when subpic_info_present_flag equals 0 and sps_independent_subpics_flag does not exist, it is inferred to be equal to a specific value (e.g., 0 or 1).
[0851] iii. For example, when subpic_info_present_flag equals 1 and sps_independent_subpics_flag does not exist, it is inferred to be equal to a specific value (such as 0 or 1).
[0852] g. In one example, when subpic_treatment_as_pic_flag[i] does not exist, what value subpic_treatment_as_pic_flag[i] is inferred to can depend on the presence of subpicture information (e.g., subpic_info_present_flag) and / or the number of subpictures in CLVS (e.g., sps_num_subpics_minus1) and / or sps_independent_subpics_flag.
[0853] i. In one example, when subpic_info_present_flag is equal to 0 and subpic_treatment_as_pic_flag[i] does not exist, the value of subpic_treatment_as_pic_flag[i] is inferred to be equal to a specific value (e.g., 0).
[0854] ii. In one example, when subpic_info_present_flag is equal to 1 and subpic_treatment_as_pic_flag[i] does not exist, then the value of subpic_treatment_as_pic_flag[i] is inferred to be equal to a specific value (e.g., 1).
[0855] iii. In one example, when subpic_info_present_flag is equal to 1, sps_num_subpics_minus1 is equal to 0, and subpic_treatment_as_pic_flag[i] does not exist, the value of subpic_treatment_as_pic_flag[i] is inferred to be equal to a specific value (e.g., 0 or 1).
[0856] iv. In one example, when subpic_info_present_flag is equal to 1, sps_num_subpics_minus1 is greater than 0, sps_independent_subpics_flag is equal to 1, and subpic_treatment_as_pic_flag[i] does not exist, the value of subpic_treatment_as_pic_flag[i] is inferred to be equal to a specific value (e.g., 0 or 1).
[0857] 7. How to fill or clip the boundaries during the inter prediction process can depend on a combined check of the type of boundary, the indication for wrap-around filling or clipping (e.g., pps_ref_wraparound_enabled_flag, sps_ref_wraparound_enabled_flag, etc.), and the indication for treating the sub-picture boundary as a picture boundary (e.g., subpic_treatment_as_pic_flag[i]).
[0858] a. For example, if the boundary is a picture boundary and the indication for wrap-around filling is true, wrap-around filling (or wrap-around clipping) can be applied regardless of the indication for treating the sub-picture boundary as a picture boundary.
[0859] i. In one example, the boundary must be a vertical boundary.
[0860] b. For example, if both vertical boundaries are picture boundaries and the indication for wrap-around filling is true, wrap-around filling (or wrap-around clipping) can be applied regardless of the indication for treating the sub-picture boundary as a picture boundary.
[0861] c. In one example, the above wrap-around filling (or wrap-around clipping) can indicate horizontal wrap-around filling / clipping.
[0862] 8. In one example, different indications for wrap-around filling or clipping can be signaled for different sub-pictures.
[0863] 9. In one example, different offsets for wrap-around filling or clipping can be signaled for different sub-pictures.
[0864] 10. In PH / SH, the variable X is used to indicate whether B-stripes are allowed / used in a picture / stripe, and this variable can be derived in one of the following ways: a) (rpl_info_in_ph_flag && num_ref_entries[0][RplsIdx[0]] > 0 && num_ref_entries[1][RplsIdx[1]] > 0); b) (rpl_info_in_ph_flag && num_ref_entries[1][RplsIdx[1]] > 0); c) (rpl_info_in_ph_flag && num_ref_entries[1][RplsIdx[1]] > 1); d) (rpl_info_in_ph_flag && num_ref_entries[1][RplsIdx[1]] > 0); e) based on NumRefIdxActive in the VVC text (e.g., NumRefIdxActive of list 1 is greater than K (e.g., K = 0)); f) based on the number of allowed reference pictures in list 1.
[0865] 1) Alternatively, in addition, the signaling and / or semantics and / or inference of one or more syntax elements signaled in PH can be modified according to a variable.
[0866] i. In one example, one or more syntax elements are those syntax elements used to enable codec tools that require more than one prediction signal, such as bi-directional prediction or hybrid intra and inter-frame coding, or prediction using linear / non-linear weighting from multiple prediction blocks.
[0867] ii. In one example, one or more syntax elements can include but are not limited to:
[0868] a) ph_collocated_from_l0_flag
[0869] b) mvd_l1_zero_flag
[0870] c) ph_disable_bdof_flag
[0871] d) ph_disable_dmvr_flag
[0872] e) num_l1_weights
[0873] iii. In one example, one or more syntax elements can be signaled only when the variable indicates that the picture can contain one or more B-stripes. Otherwise, signaling is skipped and the value of the syntax element is inferred.
[0874] a) Alternatively, additionally, whether a signaling notifies one or more syntax elements may depend on the first syntax element in bullet points 1.1) and 2.1), e.g., (X is true or 1).
[0875] b) The ph_disable_bdof_flag is signaled only when (sps_bdof_pic_present_flag && X) is true.
[0876] c) The ph_disable_dmvr_flag is signaled only when (sps_dmvr_pic_present_flag && X) is true.
[0877] iv. In one example, when X is equal to 0 (or false), the mvd_l1_zero_flag is not signaled and its value is inferred to be 1.
[0878] v. In one example, the inference of one or more syntax elements depends on the value of the first syntax element.
[0879] a) In one example, for the ph_disable_bdof_flag, the following applies:
[0880] -- If the sps_bdof_enabled_flag is equal to 1 then the value of the ph_disable_bdof_flag is inferred to be equal to 0.
[0881] -- Otherwise (the sps_bdof_enabled_flag is equal to 0 ), the value of the ph_disable_bdof_flag is inferred to be equal to 1.
[0882] b) In one example, for the ph_disable_dmvr_flag, the following applies:
[0883] -- If the sps_dmvr_enabled_flag is equal to 1 then the value of the ph_disable_dmvr_flag is inferred to be equal to 0.
[0884] -- Otherwise (the sps_dmvr_enabled_flag is equal to 0 or X is equal to 0 (or ), the value of the ph_disable_dmvr_flag is inferred to be equal to 1.
[0885] c) In one example, when both ph_temporal_mvp_enabled_flag and rpl_info_in_ph_flag are equal to 1 and X is equal to 0 (or false), it is inferred that the value of ph_collocated_from_l0_flag is equal to 1.
[0886] d) In one example, when X is equal to 0 (or false), num_l1_weights is not signaled and its value is inferred to be 0. Accordingly, the weighted prediction parameters of reference picture list 1 are not signaled in the PH or SH of the picture.
[0887] 11. It is proposed that signaling of an indication of whether to partition a picture into slices / strips / sub - pictures (e.g., no_pic_partition_flag in PPS) can be conditional on the number of CTBs in the picture.
[0888] 1) In one example, if the number of CTUs in the picture is equal to 1 (or less than 2), no_pic_partition_flag is not signaled.
[0889] 2) Alternatively, it is constrained that if the number of CTUs in the picture is equal to 1 (or less than 2), no_pic_partition_flag must be equal to 0.
[0890] 12. Regarding improving the syntax and semantics of de - blocking to solve the seventh problem, one or more of the following methods are disclosed, for example, as in the fourth embodiment:
[0891] a. Whether to disable (or enable) the de - blocking filter for a strip of the reference PPS depends on both the de - blocking syntax signaled in the PPS (e.g., pps_deblocking_filter_disabled_flag) and the de - blocking syntax elements signaled at the picture or strip level.
[0892] i. In one example, pps_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of disabling the de - blocking filter for a strip of the reference PPS, unless otherwise indicated at the picture or strip level.
[0893] ii. In one example, pps_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of enabling the de - blocking filter for a strip of the reference PPS, unless otherwise indicated at the picture or strip level.
[0894] b. When not present, slice_deblocking_filter_override_flag is inferred to be equal to 0.
[0895] c. When the deblocking filter in PPS is disabled and will be overridden in PH / SH, signaling of the deblocking on / off control flag in PH / SH is skipped.
[0896] i. In one example, whether to signal the deblocking on / off control flag (e.g., ph_deblocking_filter_disabled_flag) in PH may depend on whether deblocking is disabled in PPS (e.g., whether the value of pps_deblocking_filter_disabled_flag is equal to 1) and / or the override flag in PH (e.g., whether ph_deblocking_filter_override_flag is equal to 1).
[0897] a) For example, when pps_deblocking_filter_disabled_flag and ph_deblocking_filter_override_flag are equal to 1, signaling of ph_deblocking_filter_disabled_flag can be skipped.
[0898] b) Alternatively, when deblocking_filter_override_enabled_flag and pps_deblocking_filter_disabled_flag and ph_deblocking_filter_override_flag are equal to 1, signaling of ph_deblocking_filter_disabled_flag can be skipped.
[0899] ii. Additionally, when ph_deblocking_filter_disabled_flag does not exist, it can be inferred as follows:
[0900] a) If deblocking_filter_override_enabled_flag, pps_deblocking_filter_disabled_flag, and ph_deblocking_filter_override_flag are all equal to 1, then it is inferred that the value of ph_deblocking_filter_disabled_flag is equal to 0.
[0901] b) Otherwise, the value of ph_deblocking_filter_disabled_flag is inferred to be equal to pps_deblocking_filter_disabled_flag.
[0902] iii. Additionally, alternatively, when ph_deblocking_filter_disabled_flag does not exist, it can be inferred as follows:
[0903] a) If both pps_deblocking_filter_disabled_flag and ph_deblocking_filter_override_flag are equal to 1, then the value of ph_deblocking_filter_disabled_flag is inferred to be equal to 0.
[0904] b) Otherwise, the value of ph_deblocking_filter_disabled_flag is inferred to be equal to pps_deblocking_filter_disabled_flag.
[0905] iv. In one example, whether to signal the deblocking on / off control flag (e.g., slice_deblocking_filter_disabled_flag) in the SH can depend on whether deblocking is disabled in the PPS (e.g., whether the value of pps_deblocking_filter_disabled_flag is equal to 1) and / or whether the override flag is in the SH (e.g., whether slice_deblocking_filter_override_flag is equal to 1).
[0906] a) In one example, when deblocking_filter_override_enabled_flag and pps_deblocking_filter_disabled_flag and slice_deblocking_filter_override_flag are equal to 1, signaling of slice_deblocking_filter_disabled_flag can be skipped.
[0907] b) Alternatively, when pps_deblocking_filter_disabled_flag and slice_deblocking_filter_override_flag are equal to 1, signaling of slice_deblocking_filter_disabled_flag can be skipped.
[0908] v. In addition, when slice_deblocking_filter_disabled_flag does not exist, it can be inferred as follows:
[0909] a) If deblocking_filter_override_enabled_flag, pps_deblocking_filter_disabled_flag, and slice_deblocking_filter_override_flag are all equal to 1, it is inferred that the value of slice_deblocking_filter_disabled_flag is equal to 0.
[0910] b) Otherwise, it is inferred that the value of slice_deblocking_filter_disabled_flag is equal to pps_deblocking_filter_disabled_flag.
[0911] vi. In addition, alternatively, when slice_deblocking_filter_disabled_flag does not exist, it can be inferred as follows:
[0912] a) If pps_deblocking_filter_disabled_flag and slice_deblocking_filter_override_flag are both equal to 1, it is inferred that the value of slice_deblocking_filter_disabled_flag is equal to 0.
[0913] b) Otherwise, it is inferred that the value of slice_deblocking_filter_disabled_flag is equal to pps_deblocking_filter_disabled_flag.
[0914] 13. It is recommended that cu_skip_flag can be skipped when sps_ibc_enabled_flag is equal to 1 and the block size is not less than 64x64.
[0915] a. An example is shown in the fifth embodiment.
[0916] 14. The first syntax element (SE) can be added to the ALF APS to indicate whether chroma filtering information (e.g., chroma ALF, CC-ALF) exists, and the signaling of other syntax elements can be based on the value of the first SE.
[0917] a. In one example, when the first SE (e.g., aps_chroma_present_flag in Embodiment #6) indicates that the chroma filtering information does not exist, the signaling of the luma filter information indication (e.g., alf_luma_filter_signal_flag) is skipped.
[0918] i. Additionally, optionally, the indication of the luma filter information (e.g., alf_luma_filter_signal_flag) is inferred to be true.
[0919] b. In one example, when the first SE (e.g., aps_chroma_present_flag in Embodiment #6) indicates that the chroma filtering information exists, a constraint should be satisfied that at least one of the indications of the chroma filter information (e.g., alf_chroma_filter_signal_flag, alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag) is true.
[0920] 15. In the above example, the indication of the CC-ALF filtering presence information can be replaced from two syntax elements (e.g., alf_cc_cb_filter_signal_flag, alf_cc_cr_filter_signal_flag) to one syntax element (which can be a non-binary value, e.g., alf_cc_filter_idc).
[0921] 16. In a compliant bitstream, it is required that the first coded slice of an IRAP or GDR picture in the decoding order should not refer to a suffix APS NAL unit.
[0922] a. For example, when the first coded slice firstSlice of a coded picture in the decoding order has a nal_unit_type equal to IDR_W_RADL, IDR_N_LP, CRA_NUT, or GDR_NUT, firstSlice should not refer to a suffix APS NAL unit.
[0923] 17. The constraint on not allowing the content of an APS NAL unit within a PU to be updated can exclude specific APS NAL units.
[0924] a. For example, in a conforming bitstream, all APS NAL units with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type in a PU, except for the suffix APS NAL units associated with the last VCL NAL unit in the PU in decoding order, should have the same content regardless of whether they are prefix or suffix APS NAL units.
[0925] b. Optionally, in a conforming bitstream, all APS NAL units with a specific value of nal_unit_type, adaptation_parameter_set_id, and a specific value of aps_params_type within a PU, except for the suffix APS NAL units associated with the last VCL NAL unit in the PU in decoding order, should have the same content.
[0926] 18. In one example, the "content of an APS NAL unit" refers to the bits in the APS RBSP except for adaptation_parameter_set_id and aps_params_type.
[0927] a. In one example, when SUFFIX APS NAL units are present in a PU, they will not be before the last VCL NAL unit of the PU.
[0928] 19. It is required in a conforming bitstream that when SUFFIX APS NAL units are present in a PU, they should not be before the last VCL NAL unit of the PU.
[0929] 20. It is required in a conforming bitstream that when there is no VCL NAL unit between two APS NAL units, the two APS NAL units with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type within a PU should have the same content regardless of whether they are prefix or suffix APS NAL units.
[0930] 21. Regarding solving the problems in the current text draft to address the tenth problem, one or more of the following methods are disclosed
[0931] a. How to signal the APS ID (e.g., ) depends on the APS type.
[0932] i. In one example, for ALF APS, the APS ID can be decoded by ue(v) or the K-th EG decoding.
[0933] ii. In one example, for LMCS and the scaling list APS, the APS ID can be decoded by u(a) and u(b) respectively, and a is not equal to b
[0934] iii. In one example, for LMCS and the scaling list APS, the APS ID can be decoded by ue(v) or the K-th EG decoding.
[0935] b. In one example, the APS ID (e.g., ) is decoded by u(X), e.g., X = 3.
[0936] i. For example, the syntax change of
[0937]
[0938] i. In one example, X can depend on the maximum allowable number of APSs of all types.
[0939] a. In one example, X is set to (X - (1 << log2(X)) == 0? log2(X) : (log2(X) + 1)).
[0940] c. It is proposed to set the absolute value of the maximum allowable signaling notification of the ALF filter coefficients to be equal to (1 << K) – M (M is not equal to 0, e.g., K = 7, M = 1).
[0941] i. In one example, the range of ALF filter-related syntax elements (e.g., [sfIdx][j] in the alf_data() syntax structure, [altIdx][j]) should be in the range from 0 to Y (including the end values), where Y is equal to 127.
[0942] ii. For example, the semantic change of [sfIdx][j] is as follows:
[0943] [sfIdx][j] specifies the absolute value of the j-th coefficient of the luminance filter signaled 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 from 0 to [
[128] ]127 (including the end values).
[0944] iii. For example, The semantic change of [altIdx][j] is as follows:
[0945] [altIdx][j] specifies the absolute value of the j-th chroma filter coefficient of the alternative 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] shall be in the range of 0 to [
[128] ]127 (including the end values).
[0946] d. In one example, the value range is specified for the semantics of CCALF-related syntax elements (e.g., [k][j] in the alf_data() syntax structure [k][j], [k][j]) to constrain the value of the corresponding syntax element within a valid range.
[0947] i. For example, the value of the CCALF-related syntax element (e.g., ) should be in the range of X to Y (including the end values), such as X = 1 and Y = 8.
[0948] ii. For example, The semantic change of is as follows:
[0949] [k][j] specifies the absolute value of the j-th mapping coefficient of the k-th cross-component filter for the signaling 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.
[0950] iii. For example, The semantic change of [k][j] is:
[0951] [k][j] specifies the absolute value of the j-th mapping coefficient of the k-th cross-component filter for the signaling of the Cr color component. When alf_cc_cr_mapped_coeff_abs[k][j] does not exist, it is inferred to be equal to 0.
[0952] e. In one example, instead of in the alf_data() syntax structure for Encoding and decoding can be performed on [k][j], and can perform encoding and decoding on the absolute value minus 1 (represented by [k][j]), and the absolute value of the CC-ALF filter coefficient is derived as:
[0953] (1 - 2 * alf_cc_cb_coeff_sign[k][j]) * 2 alf_cc_cb_mapped_coeff_abs_minus1[k][j]+1 .
[0954] i. Optionally, in addition, the [k][j] signaled should be in the range of [0, (1 << K) - 1], where K is a positive integer (e.g., K = 3).
[0955] f. In one example, instead of encoding and decoding [k][j] in the alf_data() syntax structure, encoding and decoding can be performed on the absolute value minus 1 (represented by [k][j]), and the absolute value of the CC-ALF filter coefficient is derived as:
[0956] (1 - 2 * alf_cc_cr_coeff_sign[k][j]) * 2 alf_cc_cr_mapped_coeff_abs_minus1[k][j]+1 .
[0957] i. Optionally, in addition, the [k][j] signaled should be in the range of [0, (1 << K) - 1], where
[0958] K is a positive integer (e.g., K = 3).
[0959] g. The number of ALF APS for the luminance component can be signaled in PH / SH.
[0960] i. For example, the semantics of
[0961] can be changed to the following: Specify the number of ALF APS related to the PH strip reference.
[0962] ii. For example, the semantics of
[0963] can be changed to the following: Number of ALF APS. When slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma does not exist, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of ph_num_alf_aps_ids_luma.
[0964] 22. Regarding the limitation on the total memory used or the number of filters in APS rather than the number of APSs to solve the eleventh problem, one or more of the following methods are disclosed
[0965] a. In one example, a constraint is specified to limit the total number of ALF APSs.
[0966] i. For example, the total number of ALF APSs is not equal to the total number of SCALING APSs.
[0967] ii. For example, the total number of ALF APSs can depend on the number of ALF filters (e.g., ALF luma filter, ALF chroma filter, CCALF Cb filter, CCALF Cr filter).
[0968] iii. For example, a constraint is specified in the specification that the total number of ALF APSs should be equal to X (e.g., X = 328).
[0969] iv. For example, the semantics of adaptation_parameter_set_id are changed as follows:
[0970] Provide an identifier for the APS for other syntax elements to reference.
[0971] When aps_params_type is equal to ALF_APS [[or SCALING_APS]], the value of adaptation_parameter_set_id shall be in the range from 0 to [[7]] (including the end values).
[0972] When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range from 0 to 3 (including the end values).
[0973] b. In one example, constraints are specified to limit the total number of ALF luminance filters, and / or ALF chrominance filters, and / or CCALF filters.
[0974] i. For example, constraints are specified to limit the total number of ALF luminance filters in all ALF APSs to be equal to X1 (e.g., X1 = 200).
[0975] ii. For example, constraints are specified to limit the total number of ALF chrominance filters in all ALF APSs to be equal to X2 (e.g., X2 = 64).
[0976] iii. For example, constraints are specified to limit the total number of CCALF filters in all ALF APSs to be equal to X3 (e.g., X3 = 64).
[0977] a) Optionally, constraints are specified to limit the total number of CCALF Cb filters in all ALF APSs to be equal to Y1 (e.g., Y1 = 32).
[0978] b) Additionally, constraints are specified to limit the total number of CCALF Cr filters in all ALF APSs to Y2 (e.g., Y2 = 32).
[0979] iv. For example, some of the following constraints can be added:
[0980]
[0981] v. Optionally, some of the following constraint conditions can be added:
[0982]
[0983] vi. For example, a value range is specified to constrain the value within the range of K1 to K2 (including the end values).
[0984] a) For example, the semantics of the PH syntax element can be changed as follows:
[0985] Specify the number of ALF APSs with strip references related to PH.
[0986] b) Additionally, the semantics of the PH syntax element slice_num_alf_aps_ids_luma can be changed as follows:
[0987] Specify the number of ALF APSs for the reference of the strip. When slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma does not exist, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of ph_num_alf_aps_ids_luma.
[0988] c. In one example, specify a value range to constrain the value of the ALF APS ID within
[0989] the range from K1 to K2 (including the end values).
[0990] i. For example, the range of the ALF APS ID signaled in PH / SH (e.g., ) can be constrained within the range from K1 to K2 (including the end values).
[0991] ii. For example, the semantics of the PH syntax element can be changed as follows:
[0992] [i] Specify the adaptation_parameter_set_id of the i-th ALF APS for the luma component reference of the strip related to PH.
[0993] Specify the adaptation_parameter_set_id of the ALF APS for the chroma component reference of the strip associated with PH.
[0994] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cb color component of the strip associated with PH.
[0995] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cr color component of the strip associated with PH.
[0996] iii. For example, the semantics of the SH syntax element can be changed as follows:
[0997] [i] The adaptation_parameter_set_id of the i-th ALF APS that the luma component of the specified slice refers to. The TemporalId of the APS NAL unit with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the decoded slice NAL unit. 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].
[0998] The adaptation_parameter_set_id of the ALF APS that the chroma component of the specified slice refers to. The TemporalId of the APS NAL unit with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the decoded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma does not exist, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[0999] The adaptation_parameter_set_id that the Cb color component of the specified slice refers to.
[1000] The TemporalId of an APS NAL unit with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the decoded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 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.
[1001] slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id referred to by the Cr color component of a slice. The TemporalId of an APS NAL unit with an aps_params_type equal to ALF_APS and an adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the decoded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[1002] d. In one example, the binaryization of the ALF APS ID (e.g., in the PH / SH syntax structure ) can be ue(v) decoded, e.g., as in the eighth embodiment.
[1003] e. In one example, the binaryization of the number of ALF APSs (e.g., in the PH / SH syntax ) can be ue(v) decoded, e.g., as in the eighth embodiment.
[1004] f. In one example, the binaryization of the APS ID (e.g., adaptation_parameter_set_id in the APS syntax structure) can depend on the APS type, e.g., as in the eighth embodiment.
[1005] i. For example, when APS_params_type is equal to ALF_APS, the adaptation_parameter_set_id is encoded and decoded as u(X1), where X1 = 9.
[1006] ii. For example, when aps_params_type is equal to MCS_APS, the adaptation_parameter_set_id is encoded and decoded as u(X2), where X2 = 2.
[1007] iii. For example, when aps_params_type is equal to SCALING_APS, the adaptation_parameter_set_id is encoded and decoded as u(X3), where X3 = 3.
[1008] g. In one example, whether the binaryization of the APS ID (e.g., adaptation_parameter_set_id in the APS syntax structure) is encoded and decoded as ue(v) can depend on the APS type, e.g., as in the ninth embodiment.
[1009] i. For example, when aps_params_type is equal to ALF_APS, the adaptation_parameter_set_id is encoded and decoded as ue(v).
[1010] h. In one example, the binaryization of the APS ID (e.g., adaptation_parameter_set_id in the APS syntax structure) is encoded and decoded as ue(v), e.g., as in the tenth embodiment.
[1011] 23. It is required that all APS NALs of a specific type (e.g., ALF APS, LMCS APS, or SCALING APS) in a PU must be signaled before the last VCL NAL in the PU.
[1012] 24. It is required that all APS NALs of a specific type (e.g., ALF APS, LMCS APS, or SCALING APS) in a PU must be signaled before the first VCL NAL in the PU.
[1013] 25. It is required that the number of the first set of APS NALs of a specific type (e.g., ALF APS, LMCS APS, or SCALING APS) used or referenced by any VCL NAL in a PU (such as the VCL NAL referenced by the APS index in the picture header or slice header) is not greater than X, where X is an integer (e.g., 8), and the APS NALs in the first set may or may not be in the PU.
[1014] a. In one example, X is signaled from the encoder to the decoder.
[1015] 26. The number of APS NALs of a first set of specific types (such as ALF APS or LMCS APS or SCALING APS) used or referred to by any VCL NAL in the PU (such as the VCL NAL referred to by the APS index in the picture header or slice header) plus the number of APS NALs of a second set of specific types (such as ALF APS or LMCS APS or SCALING APS) not used or referred to by any VCL NAL in the PU (such as the VCL NAL referred to by the APS index in the picture header or slice header) should not be greater than X, where X is an integer (e.g., 8), where the APS NALs in the first set may or may not be in the PU, and the APS NALs in the second set are in the PU.
[1016] a. In one example, X is signaled from the encoder to the decoder.
[1017] 27. It is required that if the reference picture with index = 0 in reference list 0 is a long-term reference picture, at least one of the reference pictures in the co-located picture for TMVP should be a long-term reference picture.
[1018] 28. It is required that if the reference picture with index = 0 in reference list 0 is a short-term reference picture, at least one of the reference pictures in the co-located picture for TMVP should be a short-term reference picture.
[1019] 29. When adaptive color transform (ACT) is used in a block, codec tool X may not be allowed to be used in that block.
[1020] a. Optionally, when codec tool X is used in a block, ACT may not be allowed to be used in that block.
[1021] b. Codec tool X can be (abbreviations defined in JVET-Q2001)
[1022] i. LFNST
[1023] ii. MTS
[1024] iii. Transform skip
[1025] iv. Dual-tree coding
[1026] v. Local dual-tree coding
[1027] vi. Symbol data hiding
[1028] vii. Dependent quantization
[1029] viii. LMCS
[1030] 30. In one example, whether a first syntax element (SE) signaling whether motion vector differences (MVDs) of a reference picture list (RPL)-1 are signaled may depend on a second SE indicating whether RPL information is signaled in a picture header (PH), and on the number of reference pictures in RPL-1 when the RPL information is present in the PH (e.g., the number of reference pictures is greater than 0).
[1031] a. In one example, the first SE may be mvd_l1_zero_flag as specified in JVET-Q2001.
[1032] b. In one example, the second SE may be rpl_info_in_ph_flag as specified in JVET-Q2001.
[1033] c. In one example, the number of reference pictures in RPL-1 may be set to be equal to num_ref_entries[1][RplsIdx[1]] as specified in JVET-Q2001.
[1034] d. Signaling of the first SE may depend on the following conditions:
[1035] If (!rpl_info_in_ph_flag || num_ref_entries[1][RplsIdx[1]] > 0)
[1036] i. Optionally, in addition, when the condition is true, the SE may be signaled.
[1037] ii. Optionally, in addition, when the condition is false (e.g., when rpl_info_in_ph_flag is true and num_ref_entries[1][RplsIdx[1]] is equal to 0), the SE is not signaled and is inferred.
[1038] e. When the first SE is not signaled, it is inferred to have a value of X.
[1039] i. For example, X is equal to 0.
[1040] ii. For example, X is equal to 1.
[1041] iii. For example, X is equal to SE / variable.
[1042] iv. For example, the derivation of X is based on or constrained by one or more SEs / variables.
[1043] f. An example is shown in the eleventh embodiment.
[1044] g. An example is shown in the twelfth embodiment.
[1045] 31. In one example, whether a first syntax element (SE) that signals whether to disable decoder motion vector refinement (DMVR) may depend on a second SE that signals whether reference picture list (RPL) information is signaled in a picture header (PH), and the number of reference pictures in RPL-1 when the RPL information is present in the PH, and / or whether sps_dmvr_pic_present_flag is equal to 1.
[1046] a. In one example, the first SE may be ph_disable_dmvr_flag as specified in JVET-Q2001.
[1047] b. In one example, the second SE may be rpl_info_in_ph_flag as specified in JVET-Q2001.
[1048] c. In one example, the number of reference pictures in RPL-1 may be set to be equal to num_ref_entries[1][RplsIdx[1]] as specified in JVET-Q2001.
[1049] d. The signaling of the first SE may depend on the following conditions:
[1050] if(sps_dmvr_pic_present_flag&&(!rpl_info_in_ph_flag||(num_ref_entries[1][RplsIdx[1]]>0)))
[1051] i. Optionally, in addition, when the condition is true, the SE may be signaled.
[1052] ii. Optionally, in addition, when the condition is false (e.g., when rpl_info_in_ph_flag is true and num_ref_entries[1][RplsIdx[1]] is equal to 0, or when sps_dmvr_pic_present_flag is false), the SE is not signaled and is inferred.
[1053] e. When the first SE is not signaled, it is inferred to have the value X.
[1054] i. For example, X is equal to 0.
[1055] ii. For example, X is equal to 1.
[1056] iii. For example, X is equal to SE / variable.
[1057] iv. For example, the derivation of X is based on or restricted by one or more SE / variables.
[1058] a) In one example, when ph_disable_dmvr_flag does not exist, the following applies:
[1059] – If rpl_info_in_ph_flag is equal to 1 and num_ref_entries[1][RplsIdx[1]] is equal to 0, then ph_disable_dmvr_flag is inferred to be 1.
[1060] – Otherwise (rpl_info_in_ph_flag is equal to 0 or num_ref_entries[1][RplsIdx[1]] is greater than 0), ph_disable_dmvr_flag is inferred to be (1 - SPs_dmvr_enabled_flag)).
[1061] b) For example:
[1062] When ph_disable_dmvr_flag does not exist, the following applies:
[1063] – If sps_dmvr_enabled_flag is equal to 0, then the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[1064] – Otherwise, the following applies:
[1065] – If rpl_info_in_ph_flag is equal to 1 and num_ref_entries[1][RplsIdx[1]] is equal to 0, then ph_disable_dmvr_flag is inferred to be 1.
[1066] – Otherwise, ph_disable_dmvr_flag is inferred to be 0.
[1067] c) For example:
[1068] When ph_disable_dmvr_flag does not exist, the following applies:
[1069] – If sps_dmvr_enabled_flag is equal to 0, then the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[1070] – Otherwise, ph_disable_dmvr_flag is inferred as (rpl_info_in_ph_flag == 1 && num_ref_entries[1][RplsIdx[1]] == 0)? 1 : 0
[1071] d) For example:
[1072] When ph_disable_dmvr_flag does not exist, it is inferred to be equal to sps_dmvr_enabled_flag? ((rpl_info_in_ph_flag == 1 && num_ref_entries[1][RplsIdx[1]] == 0)? 1 : 0) : 1.
[1073] e) For example:
[1074] When ph_disable_dmvr_flag does not exist, it is inferred to be equal to (sps_dmvr_enabled_flag == 0 || ((rpl_info_in_ph_flag == 1 && num_ref_entries[1][RplsIdx[1]] == 0)? 1 : 0.
[1075] f. An example is shown in the eleventh embodiment.
[1076] g. An example is shown in the twelfth embodiment.
[1077] 32. In one example, whether a first syntax element (SE) signaling whether to disable bi-directional optical flow (BDOF) may depend on a second SE indicating whether reference picture list (RPL) information is signaled in a picture header (PH), and when the RPL information is present in the PH, the number of reference pictures in RPL-1 (e.g., the number of reference pictures is greater than 0), and / or sps_bdof_pic_present_flag.
[1078] a. In one example, the first SE may be ph_disable_bdof_flag specified in JVET-Q2001.
[1079] b. In one example, the second SE may be rpl_info_in_ph_flag specified in JVET-Q2001.
[1080] c. In one example, the number of reference pictures in RPL-1 may be set to be equal to num_ref_entries[1][RplsIdx[1]] specified in JVET-Q2001.
[1081] d. The signaling notification of the first SE may depend on the following conditions:
[1082] if(sps_bdof_pic_present_flag && (!rpl_info_in_ph_flag || (num_ref_entries[1][RplsIdx[1]] > 0)))
[1083] i. Optionally, in addition, when the condition is true, the SE may be signaled.
[1084] ii. Optionally, in addition, when the condition is false (e.g., when rpl_info_in_ph_flag is true and num_ref_entries[1][RplsIdx[1]] is equal to 0, or when sps_bdof_pic_present_flag is false), the SE is not signaled and is inferred.
[1085] e. When the first SE is not signaled, it is inferred to have the value X.
[1086] i. For example, X is equal to 0.
[1087] ii. For example, X is equal to 1.
[1088] iii. For example, X is equal to SE / variable.
[1089] iv. For example, the derivation of X is based on or restricted by one or more SE / variables.
[1090] a) For example:
[1091] When ph_disable_bdof_flag does not exist, the following applies:
[1092] – If sps_bdof_enabled_flag is equal to 0, the value of ph_disable_bdof_flag is inferred to be equal to 1.
[1093] – Otherwise, the following applies:
[1094] ο If rpl_info_in_ph_flag is equal to 1 and num_ref_entries[1][RplsIdx[1]] is equal to 0, ph_disable_bdof_flag is inferred to be 1.
[1095] ο Otherwise, ph_disable_bdof_flag is inferred to be 0.
[1096] b) For example:
[1097] When the ph_disable_bdof_flag does not exist, the following applies:
[1098] – If the sps_bdof_enabled_flag is equal to 0, the value of the ph_disable_bdof_flag is inferred to be equal to 1.
[1099] – Otherwise, the ph_disable_bdof_flag is inferred to be (rpl_info_in_ph_flag == 1 && num_ref_entries[1][RplsIdx[1]] == 0)? 1 : 0.
[1100] c) For example:
[1101] When the ph_disable_bdof_flag does not exist, it is inferred to be equal to sps_bdof_enabled_flag? ((rpl_info_in_ph_flag == 1 && num_ref_entries[1][RplsIdx[1]] == 0)? 1 : 0) : 1.
[1102] d) For example:
[1103] When the ph_disable_bdof_flag does not exist, it is inferred to be equal to (sps_bdof_enabled_flag == 0 || ((rpl_info_in_ph_flag == 1 && num_ref_entries[1][RplsIdx[1]] == 0)? 1 : 0).
[1104] e) In one example, when the ph_disable_bdof_flag does not exist, the following applies:
[1105] – If rpl_info_in_ph_flag is equal to 1 and num_ref_entries[1][RplsIdx[1]] is equal to 0, the ph_disable_bdof_flag is inferred to be 1.
[1106] – Otherwise (rpl_info_in_ph_flag is equal to 0 or num_ref_entries[1][RplsIdx[1]] is greater than 0), the ph_disable_bdof_flag is inferred to be (1 - sps_bdof_enabled_flag)).
[1107] f. An example is shown in the eleventh embodiment.
[1108] g. An example is shown in the twelfth embodiment.
[1109] 33. In one example, whether a first syntax element (SE) signaling whether a collocated picture for temporal motion vector prediction is derived from reference picture list 0 may depend on a second SE indicating whether reference picture list (RPL) information is signaled in the picture header (PH), and on the number of reference pictures in RPL-1 when the RPL information is present in the PH (e.g., the number of reference pictures is greater than 0), and on whether TMVP is enabled for the picture (e.g., ph_temporal_mvp_enabled_flag).
[1110] a. In one example, the first SE may be ph_collocated_from_l0_flag as specified in JVET-Q2001.
[1111] b. In one example, the second SE may be rpl_info_in_ph_flag as specified in JVET-Q2001.
[1112] c. In one example, the number of reference pictures in RPL-1 may be set to be equal to num_ref_entries[1][RplsIdx[1]] as specified in JVET-Q2001.
[1113] d. In one example, the first SE may be signaled when the following conditions are true:
[1114] if(ph_temporal_mvp_enabled_flag&&(!rpl_info_in_ph_flag||num_ref_entries[1][RplsIdx[1]]>0)
[1115] i. Optionally, in addition, the first SE may be signaled when the condition is true.
[1116] ii. Optionally, in addition, when the condition is false (e.g., when rpl_info_in_ph_flag is true and num_ref_entries[1][RplsIdx[1]] is equal to 0, or when ph_temporal_mvp_enabled_flag is false), the SE is not signaled and is inferred.
[1117] e. In one example, the first SE may be signaled when the following conditions are true:
[1118] if(ph_temporal_mvp_enabled_flag && rpl_info_in_ph_flag && num_ref_entries[1][RplsIdx[1]] > 0)
[1119] i. Optionally, in addition, when the condition is true, the first SE may be signaled.
[1120] ii. Optionally, in addition, when the condition is false (e.g., when rpl_info_in_ph_flag is true and num_ref_entries[1][RplsIdx[1]] is equal to 0, or when ph_temporal_mvp_enabled_flag is false), the SE is not signaled and is inferred.
[1121] f. When the first SE is not signaled, it is inferred to have the value X.
[1122] i. For example, X is equal to 0.
[1123] ii. For example, X is equal to 1.
[1124] iii. For example, X is equal to SE / variable.
[1125] iv. For example, the derivation of X is based on or constrained by one or more SE / variables.
[1126] g. An example is shown in the eleventh embodiment.
[1127] h. An example is shown in the twelfth embodiment.
[1128] 34. Whether to signal pred_weight_table() may depend on a second SE indicating whether weighted prediction (WP) information is signaled in the PH, whether reference picture list (RPL) information is signaled in the picture header (PH), and when RPL information is present in the PH, the number of reference pictures in RPL-1 (e.g., the number of reference pictures is greater than 0), and pps_weighted_pred_flag and / or pps_weighted_bipred_flag.
[1129] a. In one example, when the following conditions are true, pred_weight_table() may be signaled
[1130] pred_weight_table():
[1131] if((pps_weighted_pred_flag||(pps_weighted_bipred_flag&&(!rpl_info_in_ph_flag|| &&WP_info_in_ph_flag)
[1132] i. Optionally, in addition, when the condition is true, pred_weight_table() can be signaled in the PH.
[1133] ii. Optionally, in addition, when the condition is false (e.g., when pps_weighted_bipred_flag, wp_info_in_ph_flag, and rpl_info_in_ph_flag are true and num_ref_entries[1][RplsIdx[1]] equals 0, or when ph_temporal_mvp_enabled_flag is false), pred_weight_table() is not signaled.
[1134] 35. Whether num_l1_weights is signaled in pred_weight_table() can depend on a second SE indicating whether weighted prediction (WP) information is signaled in the PH, whether reference picture list (RPL) information is signaled in the picture header (PH), and when RPL information is present in the PH, the number of reference pictures in RPL1 (e.g., greater than 0), and pps_weighted_bipred_flag.
[1135] a. In one example, when the following conditions are true, num_l1_weights in pred_weight_table() can be signaled:
[1136] if((pps_weighted_bipred_flag &&wp_info_in_ph_flag)
[1137] i. Optionally, the above condition can be replaced with:
[1138] if(pps_weighted_bipred_flag &&wp_info_in_ph_flag)
[1139] ii. Optionally, in addition, when the condition is true, num_l1_weights can be signaled in the PH.
[1140] iii. Optionally, in addition, when the condition is false (e.g., when any one of pps_weighted_bipred_flag, wp_info_in_ph_flag, and num_ref_entries[1][RplsIdx[1]] is equal to 0), do not signal and infer num_l1_weights (e.g., infer as 0).
[1141] a) Optionally, when the condition is false, do not signal num_l1_weights, do not infer the value, and the variable NumWeightsL1 is derived as follows:
[1142] if (!pps_weighted_bipred_flag || NumWeightsL1 = 0 else if (wp_info_in_ph_flag)(148)
[1143] NumWeightsL1 = num_l1_weights
[1144] else
[1145] NumWeightsL1 = NumRefIdxActive[1]
[1146] b) Optionally, when the condition is false, do not signal num_l1_weights, do not infer the value, and the derivation of the variable NumWeightsL1 depends on whether WP information is signaled in PH (e.g., wp_info_in_ph_flag), whether RPL is signaled in PH (e.g., rpl_info_in_ph_flag), and whether the number of reference entries in RPL-1 is equal to one or more of 0, e.g., as follows:
[1147] The derivation of the variable NumWeightsL1 is as follows:
[1148] If (!PPS_weighted_bipred_flag) numweightsl1 = 0
[1149] if (!pps_weighted_bipred_flag) NumWeightsL1 = 0
[1150]
[1151] else if (wp_info_in_ph_flag)
[1152] NumWeightsL1 = num_l1_weights (148)
[1153] else
[1154] NumWeightsL1 = NumRefIdxActive[1]
[1155] b. An example is shown in the eleventh embodiment.
[1156] c. An example is shown in the twelfth embodiment.
[1157] 36. In one example, the APS ID (i.e., the syntax element adaptation_parameter_set_id) is coded and decoded as u(3) instead of u(5).
[1158] a. Additionally, in one example, the current 5-bit adaptation_parameter_set_id is split into two syntax elements, aps_reserved_zero_2bits coded as u(2), followed by adaptation_parameter_set_id coded as u(3). In this way, in the future, if more types of APS need to be specified and the APS ID requires more than 3 bits, these two reserved bits can be used in a way that is backward compatible with earlier versions of VVC.
[1159] i. Additionally, in one example, the semantics of these two syntax elements are as follows: aps_reserved_zero_2bits should be equal to 0 in the bitstream that conforms to this version of the specification. Values greater than 0 of aps_reserved_zero_2bits are reserved for future use by ITU-T|ISO / IEC. adaptation_parameter_set_id provides an identifier for the APS for other syntax elements to reference.
[1160] b. Additionally, in one example, the current 5-bit adaptation_parameter_set_id is split into two syntax elements, aps_reserved_zero_bit coded as u(1), followed by adaptation_parameter_set_id coded as u(3), and another bit is used for other purposes, such as a flag indicating the presence of chrominance-related syntax elements in the APS. In this way, in the future, if more types of APS need to be specified and the APS ID requires more than 3 bits, one reserved bit can be used in a way that is backward compatible with earlier versions of VVC.
[1161] i. In one example, the semantics of these two syntax elements are as follows: aps_reserved_zero_bit shall be equal to 0 in the bitstream conforming to this version of this specification. The value 1 of aps_reserved_zero_bit is reserved for future use by ITU-T|ISO / IEC. adaptation_parameter_set_id provides an identifier for the APS for reference by other syntax elements.
[1162] 37. Regarding the parsing order of the general constraint flag for solving Problem Thirteen,
[1163] a. In one example, in the general constraint information general_constraint_info() syntax structure, the syntax elements are grouped together according to rules. The general constraint information syntax structure includes a set of syntax elements indicating whether one or more specific constraints are imposed on the video bitstream, for example, in terms of constraining the values of SPS / PPS / PH / SH syntax elements to disable codec tools or functions in the video bitstream.
[1164] i. For example, the rules are defined as inter-frame related syntax elements and intra-frame related syntax elements.
[1165] ii. For example, the rules are defined as codec tool related syntax elements and function related syntax elements.
[1166] 38. The indication of whether signaling allows intra-slice within a picture (e.g., ph_intra_slice_allowed_flag) may depend on whether intra-slice is allowed (e.g., ph_inter_slice_allowed_flag) and whether there is more than one partition (e.g., more than one strip / slice).
[1167] a. In one example, the indication of allowing intra-slice can be signaled when the following conditions are true.
[1168] “ph_inter_slice_allowed_flag &&
[1169] i. Optionally, in addition, when the above conditions are false, signaling of ph_intra_slice_allowed_flag is skipped and inferred.
[1170] ii. Optionally, when ph_intra_slice_allowed_flag is not present, the value of ph_intra_slice_allowed_flag is inferred to be equal to (!ph_inter_slice_allowed_flag) or (1 - ph_inter_slice_allowed_flag).
[1171] 6. Example embodiments
[1172] The following are some example embodiments of some aspects of the present invention summarized in section 5 above, which can be applied to the VVC specification. The changed text is based on the latest VVC text in JVET-Q2001-vE. Most of the relevant parts that have been added or modified are shown, and the parts that have been partially deleted are marked with double brackets (e.g., [[a]] means deleting the character "a"). shown, and the parts that have been partially deleted are marked with double brackets (e.g., [[a]] means deleting the character "a").
[1173] 6.1. First group of embodiments
[1174] This is a group of embodiments of item 1 summarized in section 5 above.
[1175] 6.1.1.1.a.i Embodiment
[1176] ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS.
[1177] The TemporalId of the APS NAL unit 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 picture associated with PH.
[1178]
[1179] (Alternatively, it can be stated as follows:
[1180] …
[1181] The scaling_list_chroma_present_flag being equal to 1 specifies that the chroma scaling list is present in scaling_list_data(). The scaling_list_chroma_present_flag being equal to 0 specifies that the chroma scaling list is not present in scaling_list_data(). [[The requirement for bitstream conformance is that the scaling_list_chroma_present_flag shall be equal to 0 when ChromaArrayType is equal to 0, and the scaling_list_chroma_present_flag shall be equal to 1 when ChromaArrayType is not equal to 0.]]
[1182] Example of 6.1.2.1.a.ii
[1183] ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS.
[1184] The TemporalId of an APS NAL unit with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id shall be less than or equal to the TemporalId of the picture associated with the PH.
[1185] (Alternatively, it can be stated as follows:
[1186] …
[1187] The scaling_list_chroma_present_flag being equal to 1 specifies that the chroma scaling list is present in scaling_list_data(). The scaling_list_chroma_present_flag being equal to 0 specifies that the chroma scaling list is not present in scaling_list_data(). [[The requirement for bitstream conformance is that the scaling_list_chroma_present_flag shall be equal to 0 when ChromaArrayType is equal to 0, and the scaling_list_chroma_present_flag shall be equal to 1 when ChromaArrayType is not equal to 0.]]
[1188] Example of 6.1.3.1.b.i
[1189] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referred to by the slice associated with PH.
[1190] The TemporalId of the APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1191]
[1192] Example of 6.1.4.1.b.ii
[1193] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referred to by the slice associated with PH.
[1194] The TemporalId of the APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1195]
[1196] Example of 6.1.5.1.c.i
[1197] The semantic changes of the PH syntax element are as follows:
[1198] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma component of the slice associated with PH.
[1199] The value of alf_luma_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be equal to 1.
[1200] The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.
[1201]
[1202] …
[1203] The semantic changes of the SH syntax element are as follows:
[1204] …
[1205] slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma 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].
[1206] The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the decoded slice NAL unit.
[1207] The value of alf_luma_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] shall be equal to 1.
[1208]
[1209] …
[1210] And the semantic changes of the APS syntax element in the ALF data syntax structure are as follows:
[1211] …
[1212] When alf_chroma_filter_signal_flag equals 1, it is specified that the chroma filter is signaled. When alf_chroma_filter_signal_flag equals 0, it is specified that the chroma filter is not signaled. [[When ChromaArrayType equals 0, alf_chroma_filter_signal_flag shall equal 0.]]
[1213] …
[1214] When alf_cc_cb_filter_signal_flag equals 1, it is specified that the cross-component filter for the Cb color component is signaled. When alf_cc_cb_filter_signal_flag equals 0, it is specified that the cross-component filter for the Cb color component is not signaled. [[When ChromaArrayType equals 0, alf_cc_cb_filter_signal_flag shall equal 0.]]
[1215] When alf_cc_cr_filter_signal_flag equals 1, it is specified that the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag equals 0, it is specified that the cross-component filter for the Cr color component is not signaled. [[When ChromaArrayType equals 0, alf_cc_cr_filter_signal_flag shall equal 0.]]
[1216] Examples of 6.1.6.1.c.ii
[1217] The semantics of the PH syntax element change as follows:
[1218] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma component of the slice associated with PH.
[1219] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall equal 1.
[1220] The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.
[1221]
[1222] ph_alf_chroma_idc being equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. ph_alf_chroma_idc being equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. ph_alf_chroma_idc being equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. ph_alf_chroma_idc being equal to 3 indicates that the adaptive loop filter is applied to the Cb and Cr color components. When ph_alf_chroma_idc is absent, it is inferred to be equal to 0.
[1223] …
[1224] The semantic changes of the SH syntax element are as follows:
[1225] …
[1226] slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma component of the slice. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_luma[i] is absent, the value of slice_alf_aps_id_luma[i] is inferred to be equal to the value of ph_alf_aps_id_luma[i].
[1227] The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the decoded slice NAL unit.
[1228] The alf_luma_filter_signal_flag value of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] shall be equal to 1.
[1229]
[1230] …
[1231] And the semantic changes of the APS syntax elements in the ALF data syntax structure are as follows:
[1232] …
[1233] When alf_chroma_filter_signal_flag is equal to 1, it is specified that the chroma filter is signaled. When alf_chroma_filter_signal_flag is equal to 0, it is specified that the chroma filter is not signaled. [[When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.]]
[1234] …
[1235] When alf_cc_cb_filter_signal_flag is equal to 1, it is specified that the cross-component filter for the Cb color component is signaled. When alf_cc_cb_filter_signal_flag is equal to 0, it is specified that the cross-component filter for the Cb color component is not signaled. [[When ChromaArrayType is equal to 0, alf_cc_cb_filter_signal_flag shall be equal to 0.]]
[1236] When alf_cc_cr_filter_signal_flag is equal to 1, it is specified that the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag is equal to 0, it is specified that the cross-component filter for the Cr color component is not signaled. [[When ChromaArrayType is equal to 0, alf_cc_cr_filter_signal_flag shall be equal to 0.]]
[1237] Examples of 6.1.7.1.c.iii
[1238] The semantic changes of the PH syntax elements are as follows:
[1239] …
[1240] ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referred to by the chroma component of the slice associated with PH.
[1241] The value of alf_chroma_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma should be equal to 1.
[1242]
[1243] …
[1244] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cb color component of the slice associated with PH.
[1245] The value of alf_cc_cb_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cb_aps_id should be equal to 1.
[1246]
[1247] …
[1248] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cr color component of the slice associated with PH.
[1249] The value of alf_cc_cr_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id should be equal to 1.
[1250]
[1251] …
[1252] The semantic changes of SH syntax elements are as follows:
[1253] …
[1254] The slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS that the chrominance component of the slice refers to. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma does not exist, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[1255] The alf_chroma_filter_signal_flag value of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be equal to 1.
[1256]
[1257] …
[1258] The slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id that the Cb color component of the slice refers to.
[1259] The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 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.
[1260] The value of alf_cc_cb_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cb_aps_id shall be equal to 1.
[1261]
[1262] …
[1263] slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id that the Cr color component of a slice refers to. The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[1264] The value of alf_cc_cr_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cr_aps_id shall be equal to 1.
[1265]
[1266] …
[1267] And the semantics of APS syntax elements change as follows:
[1268] …
[1269] alf_chroma_filter_signal_flag being equal to 1 specifies that the chroma filter is signaled. alf_chroma_filter_signal_flag being equal to 0 specifies that the chroma filter is not signaled. [[When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.]]
[1270] …
[1271] When alf_cc_cb_filter_signal_flag is equal to 1, the cross-component filter for the Cb color component is signaled. When alf_cc_cb_filter_signal_flag is equal to 0, the cross-component filter for the Cb color component is not signaled. [[When ChromaArrayType is equal to 0, alf_cc_cb_filter_signal_flag shall be equal to 0.]]
[1272] When alf_cc_cr_filter_signal_flag is equal to 1, the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag is equal to 0, the cross-component filter for the Cr color component is not signaled. [[When ChromaArrayType is equal to 0, alf_cc_cr_filter_signal_flag shall be equal to 0.]]
[1273] …
[1274] Example of 6.1.8.1.d.i
[1275] The semantic changes of the APS syntax element in the ALF data syntax structure are as follows:
[1276] …
[1277] When alf_chroma_filter_signal_flag is equal to 1, the chroma filter is signaled. When alf_chroma_filter_signal_flag is equal to 0, the chroma filter is not signaled. [[When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.]]
[1278] …
[1279] When alf_cc_cb_filter_signal_flag is equal to 1, the cross-component filter for the Cb color component is signaled. When alf_cc_cb_filter_signal_flag is equal to 0, the cross-component filter for the Cb color component is not signaled. [[When ChromaArrayType is equal to 0, alf_cc_cb_filter_signal_flag shall be equal to 0.]]
[1280] When alf_cc_cr_filter_signal_flag equals 1, the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag equals 0, the cross-component filter for the Cr color component is not signaled. [[When ChromaArrayType equals 0, alf_cc_cr_filter_signal_flag shall equal 0.]]
[1281] …
[1282] Examples of 6.1.9.1.d.ii
[1283] The semantic changes of the APS syntax elements in the SCALING LIST data syntax structure are as follows:
[1284] …
[1285] When scaling_list_chroma_present_flag equals 1, it indicates that the chroma scaling list exists in scaling_list_data(). When scaling_list_chroma_present_flag equals 0, it indicates that the chroma scaling list does not exist in scaling_list_data(). [[The requirement for bitstream conformance is that when ChromaArrayType equals 0, scaling_list_chroma_present_flag shall equal 0, and when ChromaArrayType is not equal to 0, scaling_list_chroma_present_flag shall equal 1.
[1286] …]]
[1287] Examples of 6.1.10.1.e and 1.f
[1288] ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS.
[1289]
[1290] -- The TemporalId of the APS NAL unit where aps_params_type equals SCALING_APS and adaptation_parameter_set_id equals ph_scaling_list_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1291] …
[1292] The ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS that the PH-related slice refers to.
[1293]
[1294] -- The TemporalId of an APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with the PH.
[1295] …
[1296] The ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS that the luma component of the PH-related slice refers to.
[1297]
[1298] -- The value of alf_luma_filter_signal_flag of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be equal to 1.
[1299] -- The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with the PH.
[1300] ph_alf_chroma_idc being equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. ph_alf_chroma_idc being equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. ph_alf_chroma_idc being equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. ph_alf_chroma_idc being equal to 3 indicates that the adaptive loop filter is applied to the Cb and Cr color components. When ph_alf_chroma_idc does not exist, it is inferred to be equal to 0.
[1301] The ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS that references the chrominance component of the slice associated with PH.
[1302]
[1303] -- The value of alf_chroma_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma should be equal to 1.
[1304] -- The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma should be less than or equal to the TemporalId of the picture associated with PH.
[1305] …
[1306] The ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS that references the Cb color component of the slice associated with PH.
[1307]
[1308] -- The value of alf_cc_cb_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cb_aps_id should be equal to 1.
[1309] -- The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cb_aps_id should be less than or equal to the TemporalId of the picture associated with PH.
[1310] …
[1311] The ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS that the Cr color component of the strip associated with PH refers to.
[1312]
[1313] -- The value of the alf_cc_cr_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id shall be equal to 1.
[1314] -- The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1315] …
[1316] The slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS that the luma component of the strip refers to. 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].
[1317]
[1318] -- The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the coded strip NAL unit.
[1319] -- The value of the alf_luma_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_luma[i] shall be equal to 1.
[1320] …
[1321] The adaptation_parameter_set_id of the ALF APS that specifies the chroma component reference of the slice's chroma. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma does not exist, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[1322]
[1323] -- The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_chroma should be less than or equal to the TemporalId of the coded slice NAL unit.
[1324] -- The value of alf_chroma_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_alf_aps_id_chroma should be equal to 1.
[1325] …
[1326] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id referred to by the Cb color component of the slice.
[1327] When slice_cc_alf_cb_enabled_flag is equal to 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.
[1328]
[1329] -- The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit.
[1330] -- The value of alf_cc_cb_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be equal to 1.
[1331] …
[1332] slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id referred to by the Cr color component of the slice. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[1333]
[1334] -- The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit.
[1335] -- The value of alf_cc_cr_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be equal to 1.
[1336] …
[1337] Examples of 6.1.11.1.g
[1338] The semantics of the SH syntax elements change as follows:
[1339] The slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS that the chroma component of the slice refers to. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the decoded / encoded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma does not exist the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[1340] …
[1341] The slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id that the Cb color component of the slice refers to.
[1342] The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the decoded / encoded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 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.
[1343] …
[1344] The slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id that the Cr color component of the slice is referred to. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[1345] …
[1346] 6.2. Second Group of Embodiments
[1347] This is a group of embodiments for item 2 (from 2.a to 2.c) summarized in section 5 of the previous article. The syntax structure pic_parameter_set_rbsp() is changed as follows:
[1348]
[1349]
[1350]
[1351] [[The deblocking_filter_control_present_flag equal to 1 specifies that there are deblocking filter control syntax elements in the PPS. The deblocking_filter_control_present_flag equal to 0 specifies that there are no deblocking filter control syntax elements in the PPS.]]
[1352] The deblocking_filter_override_enabled_flag being equal to 1 specifies that ph_deblocking_filter_override_flag exists in the PH of the reference PPS, or slice_deblocking_filter_override_flag exists in the slice header of the reference PPS. The deblocking_filter_override_enabled_flag being equal to 0 specifies that ph_deblocking_filter_override_flag does not exist in the PH of the reference PPS, or slice_deblocking_filter_override_flag does not exist in the slice header of the reference PPS. When it does not exist, the value of the deblocking_filter_override_enabled_flag is inferred to be equal to 0.
[1353] The pps_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of the deblocking filter does not apply to slices that reference a PPS where slice_deblocking_filter_disabled_flag does not exist. The pps_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter applies to slices that reference a PPS where slice_deblocking_filter_disabled_flag does not exist. When it does not exist, the value of the pps_deblocking_filter_disabled_flag is inferred to be equal to 0.
[1354] The dbf_info_in_ph_flag being equal to 1 specifies that deblocking filter information exists in the PH syntax structure and does not exist in the slice header of a slice that references a PPS that does not contain the PH syntax structure. The dbf_info_in_ph_flag being equal to 0 specifies that deblocking filter information does not exist in the PH syntax structure and may exist in the slice header of a slice that references a PPS that does not contain the PH syntax structure. [[When it does not exist, the value of the dbf_info_in_ph_flag is inferred to be equal to 0.]] ...
[1355] And the syntax structure picture_header_structure() is changed as follows:
[1356]
[1357]
[1358]
[1359] When ph_deblocking_[[filter]]parameters_override_flag equals 1, it specifies that deblocking parameters exist in the PH. When ph_deblocking_[[filter]]parameters_override_flag equals 0, it specifies that deblocking parameters do not exist in the PH. When not present, the value of ph_deblocking_filter_override_flag is inferred to be equal to 0.
[1360] [[When ph_deblocking_filter_disabled_flag equals 1, it specifies that the operation of the deblocking filter does not apply to the slices associated with the PH. When ph_deblocking_filter_disabled_flag equals 0, it specifies that the operation of the deblocking filter applies to the slices associated with the PH. When ph_deblocking_filter_disabled_flag is not present, it is inferred to be equal to pps_deblocking_filter_disabled_flag.]] ...
[1361] And the syntax structure slice_header() is changed as follows:
[1362]
[1363]
[1364] When slice_deblocking_[[filter]]parameters_override_flag equals 1, it specifies that deblocking parameters exist in the slice header. When slice_deblocking_[[filter]]parameters_override_flag equals 0, it specifies that deblocking parameters do not exist in the slice header. When not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to [[ph_deblocking_filter_override_flag]]0.
[1365] [[When slice_deblocking_filter_disabled_flag equals 1, it is specified that the operation of the deblocking filter is not applied to the current slice. When slice_deblocking_filter_disabled_flag equals 0, it is specified that the operation of applying the deblocking filter to the current slice. When slice_deblocking_filter_disabled_flag does not exist, it is inferred to be equal to ph_deblocking_filter_disabled_flag.]] ...
[1366] And the decoding process of the deblocking filtering process is changed as follows:
[1367] 8.8.3 Deblocking Filtering Process
[1368] 8.8.3.1 Overview
[1369] The deblocking filtering process is applied to all the edges of the coding and decoding sub-blocks and the transform block edges of the picture, except for the following types of edges:
[1370] -- Edges at the boundaries of the picture,
[1371] -- Edges that coincide with the boundaries of the sub-pictures where subpicIdx and loop_filter_across_subpic_enabled_
[1372] flag[subpicIdx] is equal to 0,
[1373] -- Edges that coincide with the virtual boundaries of the picture when VirtualBoundariesPresentFlag equals 1,
[1374] -- Edges that coincide with the tile boundaries when loop_filter_across_tiles_enabled_flag equals 0,
[1375] -- Edges that coincide with the slice boundaries when loop_filter_across_slices_enabled_flag equals 0,
[1376] -- Edges that coincide with [[disabled]]_flag equals [[1]] the upper or left boundary of the slice,
[1377] -- [[disabled]]_flag equals [[1]] the edges within the slice,
[1378] --Edges that do not correspond to the 4×4 sample grid boundaries of the luminance component,
[1379] --Edges that do not correspond to the 8×8 sample grid boundaries of the chrominance component,
[1380] --Edges within the luminance component on both sides of an edge where intra_bdpcm_luma_flag is equal to 1,
[1381] --Edges within the chrominance component on both sides of an edge where intra_bdpcm_chroma_flag is equal to 1,
[1382] --Chrominance sub-block edges that are not edges of the relevant transform unit.
[1383] The edge type (vertical or horizontal) is represented by the variable edgeType defined in Table 42.
[1384] Table 42 – Names associated with edgeType
[1385] edgeType Name of edgeType 0 (vertical edge) EDGE_VER 1 (horizontal edge) EDGE_HOR
[1386] When the slice_deblocking_filter_used[[disabled]]_flag of the current slice is equal to [[0]]1, the following applies:
[1387] --The variable treeType is set to be equal to DUAL_TREE_LUMA.
[1388] --The vertical edges are filtered by calling the one-directional deblocking filtering process as specified in Clause 8.8.3.2, where the variables treeType, the reconstructed picture before deblocking (i.e., the array recPicture L ) and the variable edgeType set to be equal to EDGE_VER are used as inputs, and the modified reconstructed picture after deblocking (i.e., the array recPicture L ) is used as the output.
[1389] --The horizontal edges are filtered by calling the one-directional deblocking filtering process as specified in Clause 8.8.3.2, where the variables treeType, the reconstructed picture modified after deblocking (i.e., the array recPicture L ) and the variable edgeType set to be equal to EDGE_HOR are used as inputs, and the reconstructed picture modified after deblocking (i.e., the array recPicture L ) is used as the output.
[1390] --When ChromaArrayType is not equal to 0, the following applies:
[1391] --The variable treeType is set to be equal to DUAL_TREE_CHROMA
[1392] --Filter the vertical edges by calling the one-way deblocking filtering process as specified in Clause 8.8.3.2, where the variable treeType, the reconstructed picture before deblocking (i.e., the arrays recPicture Cb and recPicture Cr ) and the variable edgeType set to be equal to EDGE_VER are used as inputs, and the modified reconstructed picture after deblocking (i.e., the arrays recPicture Cb and recPicture Cr ) is used as the output.
[1393] --Filter the horizontal edges by calling the one-way deblocking filtering process as specified in Clause 8.8.3.2, where the variable treeType, the reconstructed picture modified after deblocking (i.e., the arrays recPicture Cb and recPicture Cr ) and the variable edgeType set to be equal to EDGE_HOR are used as inputs, and the reconstructed picture modified after deblocking (i.e., the arrays recPicture Cb and recPicture Cr ) is used as the output.
[1394] 6.3. Third set of embodiments
[1395] The changes marked in bold italics are based on JVET-Q2001-vE.
[1396] The i-th chroma QP mapping table ChromaQpTable[i] for i = 0..numQpTables-1 is derived as follows:
[1397]
[1398] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] for k in the range from -QpBdOffset to 63 (including the end values) are set to be equal to ChromaQpTable[0][k].
[1399] The requirement for bitstream consistency is that the values of qpInVal[i][j] and qpOutVal[i][j] where i is in the range from 0 to numQpTables - 1 (including the end values) and j is in the range from 0 to num_points_in_qp_table_minus1[i] + 1 (including the end values) should be in the range from -QpBdOffset to 63 (including the end values).
[1400] 6.4. Fourth Embodiment
[1401] PPS semantics (based on the text in JVET - R0159 - v2, excluding the SPS flag): ...
[1402] When deblocking_filter_control_present_flag is equal to 1, it specifies that there is a deblocking filter control syntax element in the PPS. When deblocking_filter_control_present_flag is equal to 0, it specifies that there is no deblocking filter control syntax element in the PPS.
[1403] When deblocking_filter_override_enabled_flag is equal to 1, it specifies that ph_deblocking_filter_override_flag exists in the PH of the reference PPS, or slice_deblocking_filter_override_flag exists in the slice header of the reference PPS. When deblocking_filter_override_enabled_flag is equal to 0, it specifies that ph_deblocking_filter_override_flag does not exist in the PH of the reference PPS, or slice_deblocking_filter_override_flag does not exist in the slice header of the reference PPS. When it does not exist, the value of deblocking_filter_override_enabled_flag is inferred to be equal to 0.
[1404] When pps_deblocking_filter_disabled_flag equals 1, it is specified that the operation of the deblocking filter shall not be applied to the slices of the PPS for which slice_deblocking_filter_disabled_flag and ph_deblockig_filter_disabled_flag do not exist. When pps_deblocking_filter_disabled_flag equals 0, it is specified that the operation of the deblocking filter shall be applied to the slices of the PPS for which slice_deblocking_filter_disabled_flag and ph_deblockig_filter_disabled_flag do not exist. When it does not exist, it is inferred that the value of pps_deblocking_filter_disabled_flag equals 0.
[1405] or
[1406] When pps_deblocking_filter_disabled_flag equals 1, it is specified that when deblocking_filter_override_enabled_flag equals 0, the operation of the deblocking filter shall not be applied to the slices of the reference PPS. When pps_deblocking_filter_disabled_flag equals 0, it is specified that when deblocking_filter_override_enabled_flag equals 0, the operation of the deblocking filter shall be applied to the slices of the reference PPS. When it does not exist, it is inferred that the value of pps_deblocking_filter_disabled_flag equals 0.
[1407]
[1408] The syntax structure picture_header_structure() is changed as follows:
[1409]
[1410] …
[1411] When ph_deblocking_filter_override_flag equals 1, it is specified that the deblocking parameters exist in the PH. When ph_deblocking_filter_override_flag equals 0, it is specified that the deblocking parameters do not exist in the PH. When it does not exist, the value of ph_deblocking_filter_override_flag is inferred to equal 0.
[1412] When ph_deblocking_filter_disabled_flag is equal to 1, it is specified that the operation of the deblocking filter shall not be applied to the slices associated with [[where slice_deblocking_filter_disabled_flag does not exist. [Note: When ph_deblocking_filter_disabled_flag exists, slice_deblocking_filter_disabled_flag will not exist in the SH of any slice of the picture, so it is deleted.]]] PH. When ph_deblocking_filter_disabled_flag is equal to 0, it is specified that the operation of the deblocking filter shall be applied to the slices associated with [[where slice_deblocking_filter_disabled_flag does not exist. [Note: When ph_deblocking_filter_disabled_flag exists, slice_deblocking_filter_disabled_flag will not exist in the SH of any slice of the picture, so it is deleted.].]]] PH.
[1413] When ph_deblocking_filter_disabled_flag does not exist, it is inferred
[1414] to be equal to pps_deblocking_filter_disabled_flag. ...
[1415] And the syntax structure slice_header() is changed as follows:
[1416]
[1417]
[1418] …
[1419] When slice_deblocking_filter_override_flag equals 1, it specifies that the deblocking parameters are present in the slice header. When slice_deblocking_filter_override_flag equals 0, it specifies that the deblocking parameters are not present in the slice header. When not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to [[ph_deblocking_filter_override_flag]]0.
[1420] When slice_deblocking_filter_disabled_flag equals 1, it specifies that the operation of the deblocking filter is not applied to the current slice. When slice_deblocking_filter_disabled_flag equals 0, it specifies that the operation of the deblocking filter is applied to the current slice.
[1421] When slice_deblocking_filter_disabled_flag is not present, it is inferred as follows:
[1422]
[1423] to be equal to ph
[1424] _deblocking_filter_disabled_flag.
[1425] 6.5. Fifth Embodiment
[1426] The changes marked in bold italics are based on JVET-P2001-vE.
[1427]
[1428]
[1429] 6.6. Sixth Embodiment
[1430] 7.3.2.5 Adaptive Parameter Set RBSP Syntax
[1431]
[1432]
[1433]
[1434] 7.3.2.19 Adaptive Loop Filter Data Syntax
[1435]
[1436] 7.3.2.20 Luminance mapping and chrominance scaling data syntax
[1437]
[1438] 7.3.2.21 Scaling list data syntax
[1439]
[1440]
[1441] The PH semantics are changed as follows:
[1442] …
[1443] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS that the luminance component of the PH-related slice refers to.
[1444] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be equal to 1.
[1445] The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.
[1446]
[1447] …
[1448] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS that the PH-related slice refers to. The TemporalId of the APS NAL unit with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1449]
[1450] …
[1451] The ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS. The TemporalId of an APS NAL unit with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1452]
[1453]
[1454] The PH semantic change is as follows:
[1455] The slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma 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] shall be less than or equal to the TemporalId of the decoded slice NAL unit. 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].
[1456] The alf_luma_filter_signal_flag value 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] shall be equal to 1.
[1457]
[1458] …
[1459] And the ALF data semantic change is as follows: ..
[1460] When alf_luma_filter_signal_flag is equal to 1, it indicates that the luma filter bank is signaled. When alf_luma_filter_signal_flag is equal to 0, it indicates that the luma filter bank is not signaled.
[1461] When alf_chroma_filter_signal_flag is equal to 1, it indicates that the chroma filter is signaled. When alf_chroma_filter_signal_flag is equal to 0, it indicates that the chroma filter is not signaled. [[When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.]]
[1462] When alf_cc_cb_filter_signal_flag is equal to 1, it indicates that the cross-component filter for the Cb color component is signaled. When alf_cc_cb_filter_signal_flag is equal to 0, it indicates that the cross-component filter for the Cb color component is not signaled. [[When ChromaArrayType is equal to 0, alf_cc_cb_filter_signal_flag shall be equal to 0.]]
[1463] When alf_cc_cr_filter_signal_flag is equal to 1, it indicates that the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag is equal to 0, it indicates that the cross-component filter for the Cr color component is not signaled. [[When ChromaArrayType is equal to 0, alf_cc_cr_filter_signal_flag shall be equal to 0.]]
[1464] …
[1465] And the scaling data semantics change as follows:
[1466] …
[1467] [[The scaling_list_chroma_present_flag being equal to 1 specifies that the chroma scaling list is present in scaling_list_data(). The scaling_list_chroma_present_flag being equal to 0 specifies that the chroma scaling list is not present in scaling_list_data(). The requirement for bitstream consistency is that the scaling_list_chroma_present_flag is equal to 0 when ChromaArrayType is equal to 0, and the scaling_list_chroma_present_flag is equal to 1 when ChromaArrayType is not equal to 0.]]
[1468] …
[1469] 6.7. Seventh Embodiment
[1470] 7.3.2.6 Adaptive Parameter Set RBSP Syntax
[1471]
[1472]
[1473]
[1474] 7.3.2.19 Adaptive Loop Filter Data Syntax
[1475]
[1476] 7.3.2.20; Luma Mapping and Chroma Scaling Data Syntax
[1477]
[1478] 7.3.2.21 Scaling List Data Syntax
[1479]
[1480]
[1481] Semantic Changes:
[1482]
[1483] PH Semantic Changes are as follows:
[1484] …
[1485] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS for the luma component reference of the slice associated with PH.
[1486] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be equal to 1.
[1487] The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.
[1488]
[1489] …
[1490] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referenced by the slice associated with PH. The TemporalId of the APS NAL unit with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1491]
[1492] …
[1493] ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS. The TemporalId of the APS NAL unit with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[1494]
[1495]
[1496] The PH semantic changes are as follows:
[1497] slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma component of the slice. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the decoded slice NAL unit. 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].
[1498] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be equal to 1.
[1499]
[1500] …
[1501] And the ALF data semantics change as follows: …
[1502] alf_luma_filter_signal_flag equal to 1 specifies signaling of the luma filter bank. alf_luma_filter_signal_flag equal to 0 specifies non-signaling of the luma filter bank.
[1503] alf_chroma_filter_signal_flag equal to 1 specifies signaling of the chroma filter. alf_chroma_filter_signal_flag equal to 0 specifies non-signaling of the chroma filter. [When ChromaArrayType is equal to 0, alf_chroma_filter_signal_flag shall be equal to 0.]
[1504] When alf_cc_cb_filter_signal_flag equals 1, the cross-component filter for the Cb color component is signaled. When alf_cc_cb_filter_signal_flag equals 0, the cross-component filter for the Cb color component is not signaled. [[When ChromaArrayType equals 0, alf_cc_cb_filter_signal_flag shall equal 0.]]
[1505] When alf_cc_cr_filter_signal_flag equals 1, the cross-component filter for the Cr color component is signaled. When alf_cc_cr_filter_signal_flag equals 0, the cross-component filter for the Cr color component is not signaled. [[When ChromaArrayType equals 0, alf_cc_cr_filter_signal_flag shall equal 0.]]
[1506] …
[1507] And the scaling data semantics are changed as follows:
[1508] …
[1509] [[When scaling_list_chroma_present_flag equals 1, a chroma scaling list exists in scaling_list_data(). When scaling_list_chroma_present_flag equals 0, a chroma scaling list does not exist in scaling_list_data(). For bitstream conformance, when ChromaArrayType equals 0, scaling_list_chroma_present_flag equals 0, and when ChromaArrayType is not equal to 0, scaling_list_chroma_present_flag equals 1.]]
[1510] …
[1511] 6.8. Eighth Embodiment
[1512] 7.3.2.5 Adaptive Parameter Set RBSP Syntax
[1513]
[1514]
[1515] 7.3.2.7 Picture Header Structure Syntax
[1516]
[1517] 7.3.7.1 General strip header syntax
[1518]
[1519]
[1520] 7.4.3.5 Adaptive parameter set semantics
[1521] Each APS RBSP included in at least one AU shall be available for the decoding process before being referenced, and its TemporalId shall be less than or equal to the TemporalId of the coded slice NAL unit that references it or is provided by an external device.
[1522] All APS NAL units with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type within a PU, whether they are prefix or suffix APS NAL units, shall have the same content.
[1523] The adaptation_parameter_set_id provides an identifier for the APS for reference by other syntax elements.
[1524] When aps_params_type is equal to ALF_APS [[or SCALING_APS]], the value of adaptation_parameter_set_id shall be in the range of 0 to [[7]]246 (inclusive of the end values).
[1525]
[1526] When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 3 (inclusive of the end values).
[1527] Let apsLayerId be the value of numh_layer_id of a specific APS NAL unit, and vclLayerId be the value of numh_layer_id of a specific VCL NAL unit. A specific VCL NAL unit shall not refer to a specific APS NAL unit unless apsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to apsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.
[1528] aps_params_type specifies the types of APS parameters carried in the APS as specified in Table 6.
[1529] …
[1530]
[1531] Regardless of the nuh_layer_id value, all APS NAL units with a specific value of aps_params_type share the same value space for adaptation_parameter_set_id. APS NAL units with different values of aps_params_type use separate value spaces for adaptation_parameter_set_id.
[1532] 7.4.3.7 Picture Header Structure Semantics
[1533] ph_num_alf_aps_ids_luma specifies the number of ALF APSs that are strip references related to the PH.
[1534] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS that the luma component of the strip related to the PH refers to.
[1535] ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS that the chroma component of the strip associated with the PH refers to.
[1536] The ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS that the Cb color component of the slice associated with PH refers to.
[1537] The ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS that the Cr color component of the slice associated with PH refers to. The value of ph_alf_aps_id_chroma[i] shall be in the range of 0 to 327 (inclusive).
[1538] …
[1539] 7.4.8.1 General slice header semantics
[1540] The slice_num_alf_aps_ids_luma specifies the number of ALF APSs that the slice refers to. When the slice_alf_enabled_flag is equal to 1 and the slice_num_alf_aps_ids_luma does not exist, the value of slice_num_alf_aps_ids_luma is inferred to be equal to the value of ph_num_alf_aps_ids_luma.
[1541] The slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS that the luma component of the slice refers to. The TemporalId of the APS NAL unit with the aps_params_type equal to ALF_APS and the adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the decoded slice NAL unit. When the slice_alf_enabled_flag is equal to 1 and the 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].
[1542] The slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS that the chroma component of the slice refers to. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the decoded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_chroma does not exist, the value of slice_alf_aps_id_chroma is inferred to be equal to the value of ph_alf_aps_id_chroma.
[1543] The slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id that the Cb color component of the slice refers to.
[1544] The TemporalId of the 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 decoded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 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.
[1545] The value of alf_cc_cb_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be equal to 1.
[1546] The slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id that the Cr color component of the slice stripe refers to. The TemporalId of the 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 coded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[1547] The value of alf_cc_cr_filter_signal_flag of the 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 equal to 1.
[1548] 6.9. Ninth Embodiment
[1549] 7.3.2.5 Adaptive Parameter Set RBSP Syntax
[1550]
[1551]
[1552] 6.10. Tenth Embodiment
[1553]
[1554] 6.11. Eleventh Embodiment
[1555] In one example, the PH syntax table changes as follows:
[1556]
[1557]
[1558] The semantic changes are as follows:
[1559] …
[1560] When ph_collocated_from_l0_flag equals 1, it is specified that the collocated picture used for temporal motion vector prediction is derived from reference picture list 0. When ph_collocated_from_l0_flag equals 0, it is specified that the collocated picture used for temporal motion vector prediction is derived from reference picture list 1.
[1561] …
[1562] When mvd_l1_zero_flag equals 1, it is specified that the mvd_coding(x0, y0, 1) syntax structure is not parsed, and for compIdx = 0..1 and cpIdx = 0..2, MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compIdx] are set to be equal to 0. When mvd_l1_zero_flag equals 0, it indicates that the mvd_coding(x0, y0, 1) syntax structure is parsed.
[1563] …
[1564] When ph_disable_bdof_flag equals 1, it is specified that inter - bidirectional prediction based on bidirectional optical flow for inter - frame prediction is disabled in the slice associated with PH. When ph_disable_bdof_flag equals 0, it is specified that inter - bidirectional prediction based on bidirectional optical flow for inter - frame prediction may or may not be enabled in the slice associated with PH.
[1565] When ph_disable_bdof_flag does not exist, the following applies:
[1566]
[1567] [[I]]f sps_bdof_enabled_flag equals 1, the value of ph_disable_bdof_flag is inferred to be equal to 0.
[1568] Otherwise (sps_bdof_enabled_flag equals 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.
[1569] ph_disable_dmvr_flag being equal to 1 specifies that inter - bidirectional prediction based on decoder motion vector refinement is disabled in the slice associated with PH. ph_disable_dmvr_flag being equal to 0 specifies that inter - bidirectional prediction based on decoder motion vector refinement may or may not be enabled in the slice associated with PH. When ph_disable_dmvr_flag is absent, the following applies:
[1570]
[1571] [[I]]f sps_dmvr_enabled_flag is equal to 1, the value of ph_disable_dmvr_flag is inferred to be equal to 0.
[1572] Otherwise (sps_dmvr_enabled_flag is equal to 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[1573] …
[1574] And the syntax table pred_weight_table() is changed as follows:
[1575]
[1576] The semantics of num_l1_weights are changed as follows:
[1577] num_l1_weights specifies the number of weights signaled for the entries in reference picture list 1 when both pps_weighted_bipred_flag and wp_info_in_ph_flag are equal to 1. The value of num_l1_weights shall be in the range of 0 to Min(15, num_ref_entries[1][RplsIdx[1]]) (inclusive of the end values).
[1578] The derivation of the variable NumWeightsL1 is as follows:
[1579] if(!pps_weighted_bipred_flag)
[1580] NumWeightsL1 = 0
[1581]
[1582] else if(wp_info_in_ph_flag)
[1583] NumWeightsL1 = num_l1_weights
[1584] else
[1585] NumWeightsL1 = NumRefIdxActive[1]
[1586] 6.12. Twelfth Embodiment
[1587] In one example, the PH syntax table is changed as follows:
[1588]
[1589]
[1590] The semantic changes are as follows:
[1591] …
[1592] ph_collocated_from_l0_flag being equal to 1 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 0. ph_collocated_from_l0_flag being equal to 0 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 1.
[1593] …
[1594] mvd_l1_zero_flag being equal to 1 specifies that the mvd_coding(x0, y0, 1) syntax structure is not parsed, and for compIdx = 0..1 and cpIdx = 0..2, MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compidx] are set to be equal to 0. mvd_l1_zero_flag being equal to 0 specifies that the mvd_coding(x0, y0, 1) syntax structure is parsed.
[1595] …
[1596] ph_disable_bdof_flag being equal to 1 specifies that inter - bidirectional prediction based on bidirectional optical flow for inter - frame prediction is disabled in the slice associated with PH. ph_disable_bdof_flag being equal to 0 specifies that inter - bidirectional prediction based on bidirectional optical flow for inter - frame prediction may or may not be enabled in the slice associated with PH
[1597] When ph_disable_bdof_flag does not exist, the following applies:
[1598] – If the sps_bdof_enabled_flag [[is]]equals 1, then the value of ph_disable_bdof_flag is inferred to be equal to 0.
[1599] – Otherwise [[(sps_bdof_enabled_flag equals 0)], the value of ph_disable_bdof_flag is inferred to be equal to 1.
[1600] ph_disable_dmvr_flag being equal to 1 specifies that inter - bidirectional prediction with decoder motion vector refinement is disabled in the slice associated with PH. ph_disable_dmvr_flag being equal to 0 specifies that inter - bidirectional prediction with decoder motion vector refinement may be enabled or disabled in the slice associated with PH.
[1601] When ph_disable_dmvr_flag does not exist, the following applies:
[1602] – If the sps_dmvr_enabled_flag [[is]]equals 1, then the value of ph_disable_dmvr_flag is inferred to be equal to 0.
[1603] – Otherwise [[(sps_dmvr_enabled_flag equals 0)], the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[1604] …
[1605] And the syntax table pred_weight_table() is changed as follows:
[1606]
[1607] The semantics of num_l1_weights are changed as follows:
[1608] num_l1_weights specifies the number of weights signaled for an entry in reference picture list 1 when both pps_weighted_bipred_flag and wp_info_in_ph_flag are equal to 1. The value of num_l1_weights shall be in the range of 0 to Min(15, num_ref_entries[1][RplsIdx[1]]) (inclusive of the end values).
[1609] The derivation of the variable NumWeightsL1 is as follows:
[1610] if (!pps_weighted_bipred_flag ||
[1611] NumWeightsL1 = 0
[1612] else if (wp_info_in_ph_flag) (148)
[1613] NumWeightsL1 = num_l1_weights
[1614] else
[1615] NumWeightsL1 = NumRefIdxActive[1]
[1616] 6.13. The Thirteenth Embodiment
[1617] To solve the above problems, the following changes are proposed, and the added parts are highlighted in bold and italic.
[1618]
[1619] …
[1620] ph_intra_slice_allowed_flag being equal to 0 stipulates that the slice_type of all coded and decoded strips of the picture is equal to 0 or 1. ph_intra_slice_allowed_flag being equal to 1 stipulates that there may or may not be one o...
Claims
1. A method for processing video data, comprising: performing a conversion between a video including one or more pictures and a bitstream of the video according to format rules, and wherein the format rules specify that when (i) the value of a second syntax element indicates that reference picture list RPL information does not exist in a picture header, or (ii) when the RPL information exists in the picture header, the value of a third syntax element indicates that the number of reference pictures in a specific RPL is greater than 0, a first syntax element is included in the bitstream, the first syntax element indicating whether to parse or not to parse the motion vector differential coding and decoding syntax structure of the specific RPL, and when the value of the second syntax element indicates that the RPL information exists in the picture header, and the value of the third syntax element indicates that the number of reference pictures in the specific RPL is equal to 0, the first syntax element is excluded from the bitstream, and wherein the format rules further specify that based on (iii) a fifth syntax element included in a picture parameter set, indicating the applicability of explicit weighted prediction (WP) to B slices referring to the picture parameter set information, and (iv) a sixth syntax element indicating whether WP information is included in the picture header, and (iii) the third syntax element indicating the number of reference pictures in the specific RPL, a fourth syntax element is conditionally included in a weighted prediction parameter syntax structure indicating a weighted prediction parameter table of the bitstream, the fourth syntax element indicating the number of weights signaled for an entry in the specific RPL.
2. The method according to claim 1, wherein, the specific RPL corresponds to reference picture list 1.
3. The method according to claim 1, wherein, the format rules further specify that in the case where the first syntax element is not included in the bitstream, the value of the first syntax element is inferred to be equal to 1, where the value of the first syntax element equal to 1 specifies not to parse the motion vector differential coding and decoding syntax structure of the specific RPL.
4. The method according to claim 1, wherein the format rules specify that when the following conditions are met: (1) the fifth syntax element has a first value, specifying that the explicit WP is applied to B slices referring to the picture parameter set, where the first value is equal to 1, (2) the sixth syntax element has a second value, specifying that the WP information is allowed to exist in the picture header and does not exist in a slice header referring to the picture parameter set and not including the picture header, where the second value is equal to 1, and (3) the value of the third syntax element indicates that the number of reference pictures in the specific RPL is greater than 0, the fourth syntax element is included in the weighted prediction parameter syntax structure.
5. The method according to claim 1, wherein the format rule stipulates that when at least one of the following is not satisfied: (1) the fifth syntax element has a first value, stipulating that the explicit WP is applied to B slices referring to the picture parameter set; (2) the sixth syntax element has a second value, stipulating that the WP information is allowed to exist in the picture header and does not exist in the slice header referring to the picture parameter set and excluding the picture header; and (3) the value of the third syntax element indicates that the number of reference pictures in the specific RPL is greater than 0, the fourth syntax element is excluded from the weighted prediction parameter syntax structure.
6. The method according to claim 1, wherein, the format rule stipulates that the value of a first variable NumWeightsL1 corresponding to the weight of the specific RPL is derived as follows: if (!pps_weighted_bipred_flag || (pps_wp_info_in_ph_flag && num_ref_entries[1][RplsIdx[1]] == 0)) NumWeightsL1 = 0 else if (pps_wp_info_in_ph_flag) NumWeightsL1 = num_l1_weights else NumWeightsL1 = NumRefIdxActive[1], where pps_weighted_bipred_flag is the fifth syntax element, pps_wp_info_in_ph_flag is the sixth syntax element, num_ref_entries[1][RplsIdx[1]] is the third syntax element, num_l1_weights is the fourth syntax element, and NumRefIdxActive[1] is a second variable indicating the number of valid reference pictures allowed to be used for encoding and decoding at least one slice in the reference picture list 1.
7. The method according to claim 1, wherein, the format rule stipulates which general constraint syntax elements in the general constraint information syntax structure indicating one or more constraints applicable to the transformation are grouped together, and the general constraint syntax elements in a specific group are signaled together without crossing with other general constraint syntax elements in another group.
8. The method according to claim 7, wherein, The format rules specify grouping of inter - frame related syntax elements, where the inter - frame related syntax elements include general constraint syntax elements regarding features, and the features include at least one of reference picture resampling, resolution change in the coded - layer video sequence, weighted prediction, reference wrapping, temporal motion vector prediction, sub - block - based temporal motion vector prediction, adaptive motion vector prediction, bidirectional optical flow, symmetric motion vector difference, decoder - side motion vector derivation, Merge - based motion vector difference, affine motion prediction, prediction refinement using optical flow, bi - directional prediction with coded unit (CU) weights, combined inter - intra prediction (CIIP), or geometric prediction mode.
9. The method according to claim 7, wherein, the format rules specify grouping of intra - frame related syntax elements, where the intra - frame related syntax elements include general constraint syntax elements regarding features, and the features include at least one of palette coding mode, intra - block copy mode, intra - sub - partition (ISP), multi - reference - line intra - prediction, matrix - based intra - prediction, or cross - component linear model.
10. The method according to claim 1, wherein, the conversion includes encoding the video into the bitstream.
11. The method according to claim 1, wherein, the conversion includes decoding the video from the bitstream.
12. An apparatus for processing video data, comprising a processor and a non - transitory memory having instructions thereon, wherein, the instructions, when executed by the processor, cause the processor to: perform a conversion between a video including one or more pictures and a bitstream of the video according to format rules, and where the format rules specify that the first syntax element, which indicates whether to parse or not parse the motion vector difference coding syntax structure of the specific reference picture list (RPL), is included in the bitstream when (i) the value of a second syntax element indicates that there is no RPL information in the picture header, or (ii) when the RPL information exists in the picture header and the value of a third syntax element indicates that the number of reference pictures in the specific RPL is greater than 0, and the first syntax element is excluded from the bitstream when the value of the second syntax element indicates that the RPL information exists in the picture header and the value of the third syntax element indicates that the number of reference pictures in the specific RPL is equal to 0, and wherein the format rules further specify that a fourth syntax element, which indicates the number of weights signaled for an entry in the specific RPL, is conditionally included in a weighted prediction parameter syntax structure indicating a weighted prediction parameter table of the bitstream based on (iii) a fifth syntax element included in a picture parameter set indicating the applicability of explicit weighted prediction (WP) to B - slices referring to the picture parameter set information, (iv) a sixth syntax element indicating whether WP information is included in the picture header, and (iii) the third syntax element indicating the number of reference pictures in the specific RPL.
13. The apparatus according to claim 12, wherein, the specific RPL corresponds to reference picture list 1, wherein the format rule further specifies that in the case where the first syntax element is not included in the bitstream, the value of the first syntax element is inferred to be equal to 1, and wherein the value of the first syntax element being equal to 1 specifies not to parse the motion vector difference coding / decoding syntax structure of the specific RPL.
14. The apparatus according to claim 12, wherein the format rule specifies that when the following conditions are met: (1) the fifth syntax element has a first value that specifies applying the explicit WP to B slices referring to the picture parameter set, wherein the first value is equal to 1, (2) the sixth syntax element has a second value that specifies allowing the WP information to exist in the picture header and not exist in the slice header referring to the picture parameter set and not including the picture header, wherein the second value is equal to 1, and (3) the value of the third syntax element indicates that the number of reference pictures in the specific RPL is greater than 0, the fourth syntax element is included in the weighted prediction parameter syntax structure, wherein, the format rule specifies that when at least one of the following is not satisfied: (1) the fifth syntax element has a first value that specifies applying the explicit WP to B slices referring to the picture parameter set, (2) the sixth syntax element has a second value that specifies allowing the WP information to exist in the picture header and not exist in the slice header referring to the picture parameter set and not including the picture header, and (3) the value of the third syntax element indicates that the number of reference pictures in the specific RPL is greater than 0, the fourth syntax element is excluded from the weighted prediction parameter syntax structure, and wherein the format rule specifies that the value of the first variable NumWeightsL1 corresponding to the weight of the specific RPL is derived as follows: if(!pps_weighted_bipred_flag||(pps_wp_info_in_ph_flag&&num_ref_entries[1][RplsIdx[1]]==0)) NumWeightsL1=0 else if(pps_wp_info_in_ph_flag) NumWeightsL1=num_l1_weights else NumWeightsL1=NumRefIdxActive[1], wherein pps_weighted_bipred_flag is the fifth syntax element, pps_wp_info_in_ph_flag is the sixth syntax element, num_ref_entries[1][RplsIdx[1]] is the third syntax element, num_l1_weights is the fourth syntax element, and NumRefIdxActive[1] is a second variable indicating the number of valid reference pictures in reference picture list 1 that are allowed to be used for encoding and decoding at least one slice.
15. A non-transitory computer-readable storage medium storing instructions that cause a processor to: perform a conversion between a video including one or more pictures and a bitstream of the video according to format rules, and wherein, the format rules specify that when (i) the value of a second syntax element indicates that reference picture list RPL information does not exist in a picture header, or (ii) when the RPL information exists in the picture header and the value of a third syntax element indicates that the number of reference pictures in a particular RPL is greater than 0, a first syntax element is included in the bitstream, the first syntax element indicating whether to parse or not parse the motion vector difference decoding syntax structure of the particular RPL, and when the value of the second syntax element indicates that the RPL information exists in the picture header and the value of the third syntax element indicates that the number of reference pictures in the particular RPL is equal to 0, the first syntax element is excluded from the bitstream, and wherein the format rules further specify that based on (iii) a fifth syntax element included in a picture parameter set indicating the applicability of explicit weighted prediction (WP) to B slices referring to the picture parameter set information, and (iv) a sixth syntax element indicating whether WP information is included in the picture header, and (iii) the third syntax element indicating the number of reference pictures in the particular RPL, a fourth syntax element is conditionally included in a weighted prediction parameter syntax structure indicating a weighted prediction parameter table of the bitstream, the fourth syntax element indicating the number of weights signaled for entries in the particular RPL.
16. The non-transitory computer-readable storage medium according to claim 15, wherein, the particular RPL corresponds to reference picture list 1, wherein the format rules further specify that in the case where the first syntax element is not included in the bitstream, the value of the first syntax element is inferred to be equal to 1, and a value of the first syntax element equal to 1 specifies not to parse the motion vector difference decoding syntax structure of the particular RPL.
17. A non-transitory computer-readable recording medium storing a bitstream of a video, the bitstream being generated by a method executed by a video processing device, wherein the method comprises: generating a bitstream of a video including one or more pictures according to format rules, Wherein, the format rule stipulates that the first syntax element is included in the bitstream when (i) the value of the second syntax element indicates that there is no reference picture list (RPL) information in the picture header, or (ii) when the RPL information exists in the picture header and the value of the third syntax element indicates that the number of reference pictures in a specific RPL is greater than 0. The first syntax element indicates whether to parse or not to parse the motion vector differential coding / decoding syntax structure of the specific RPL. And when the value of the second syntax element indicates that the RPL information exists in the picture header and the value of the third syntax element indicates that the number of reference pictures in the specific RPL is equal to 0, the first syntax element is excluded from the bitstream. And wherein, the format rule further stipulates that based on (iii) a fifth syntax element included in the picture parameter set, which indicates the applicability of explicit weighted prediction (WP) to B slices referring to the picture parameter set information, (iv) a sixth syntax element indicating whether WP information is included in the picture header, and (iii) the third syntax element indicating the number of reference pictures in the specific RPL, a fourth syntax element is conditionally included in the weighted prediction parameter syntax structure indicating the weighted prediction parameter table of the bitstream. The fourth syntax element indicates the number of weights signaled for entries in the specific RPL.
18. The non-transitory computer-readable recording medium according to claim 17, Wherein, The specific RPL corresponds to reference picture list 1. Wherein, the format rule further stipulates that when the first syntax element is not included in the bitstream, the value of the first syntax element is inferred to be equal to 1. The value of the first syntax element being equal to 1 stipulates not to parse the motion vector differential coding / decoding syntax structure of the specific RPL.
19. A method for storing a bitstream of a video, Comprising: Generating a bitstream of a video including one or more pictures according to a format rule, and Storing the bitstream into a non-transitory computer-readable recording medium, Wherein, the format rule stipulates that the first syntax element is included in the bitstream when (i) the value of the second syntax element indicates that there is no reference picture list (RPL) information in the picture header, or (ii) when the RPL information exists in the picture header and the value of the third syntax element indicates that the number of reference pictures in a specific RPL is greater than 0. The first syntax element indicates whether to parse or not to parse the motion vector differential coding / decoding syntax structure of the specific RPL. And when the value of the second syntax element indicates that the RPL information exists in the picture header and the value of the third syntax element indicates that the number of reference pictures in the specific RPL is equal to 0, the first syntax element is excluded from the bitstream. And wherein, the format rule further specifies that the fourth syntax element is conditionally included in the weighted prediction parameter syntax structure indicating the weighted prediction parameter table of the bitstream, based on (iii) a fifth syntax element included in the picture parameter set, indicating the applicability of explicit weighted prediction (WP) to B slices referring to the picture parameter set information, and (iv) a sixth syntax element indicating whether WP information is included in the picture header, and (iii) the third syntax element indicating the number of reference pictures in the specific RPL, the fourth syntax element indicating the number of weights signaled for an entry in the specific RPL.
Citation Information
Patent Citations
Reference picture handling
CN104025599A
Reference picture handling
US20180199051A1