Conditional signaling of weighted prediction information
By applying format rules in video encoding and decoding representations to convert between video and codec representations, and using control information to optimize the codec process, the problem of inefficient video encoding and decoding in the prior art is solved, and more efficient video processing and bandwidth utilization are achieved.
Patent Information
- Application Number
- CN202180031080.5
- 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-05-16
- Estimated Expiration
- 2041-04-23
AI Technical Summary
The prior art is difficult to effectively utilize control information during video encoding and decoding, resulting in inefficiency and increased bandwidth usage.
By using format rules in the video encoding and decoding representation, the conversion between the video and its decoding representation includes processing of chrominance components, video regions, video strips and sub-pictures, and the encoding and decoding process is optimized using control information.
Improves the efficiency and quality of video encoding and decoding, reduces bandwidth usage, and enhances flexibility in video processing.
Smart Images

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