Method, apparatus, and storage medium for video processing
By defining new format rules and syntax element conditions, the video encoding and decoding process is optimized, and the problem of inconsistent format rules and complex reference image index in multi-layer video encoding and decoding is solved, and the encoding and decoding efficiency and consistency are improved.
Patent Information
- Application Number
- CN202180017696.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-02-29
- Filing Date
- 2021-02-24
- Publication Date
- 2025-08-01
- Estimated Expiration
- 2041-02-24
AI Technical Summary
When existing video encoding and decoding technologies deal with multi-layer video encoding and decoding, there are problems such as inconsistent format rules, improper parameter set flag exclusion, and complex reference picture indexing conditions, resulting in insufficiency of encoding and decoding.
By defining new format rules, including exclusion of image parameter set flags, logical expressions referring to image index conditions and usage conditions of syntax elements, the video encoding and decoding process is optimized to ensure the unity and efficiency of format rules.
It improves the efficiency and consistency of the video encoding and decoding process, reduces the complexity in the encoding and decoding process, and improves the performance of multi-layer video encoding and decoding.
Smart Images

Figure CN115299062B_ABST
Abstract
Description
[0001] Cross - reference to related applications
[0002] This application is based on International Patent Application No. PCT / CN2021 / 077560 filed on February 24, 2021, which claims the priority and benefits of International Patent Application PCT / CN2020 / 077331 filed on February 29, 2020. All of the above - mentioned patent applications are hereby incorporated by reference in their entirety. Technical field
[0003] This patent document refers to video encoding, decoding, and decoding of pictures and videos. Background art
[0004] Digital video accounts for the largest bandwidth usage on the Internet and other digital communication networks. With the increase in the number of connected user devices capable of receiving and displaying video, the bandwidth demand for digital video use is expected to continue to grow. Summary of the invention
[0005] This document discloses techniques that can be used by video encoders and decoders for processing encoded - decoded representations of video using control information useful for decoding the encoded - decoded representations.
[0006] In one exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video having one or more pictures and an encoded - decoded representation of the video, where each of the one or more pictures exactly includes one strip; where the encoded - decoded representation conforms to format rules; where the format rules specify excluding the picture parameter set flag from the encoded - decoded representation because the picture exactly has one strip.
[0007] In another exemplary aspect, another video processing method is disclosed. The method includes performing a conversion between a video strip of a video and an encoded - decoded representation of the video, where the encoded - decoded representation conforms to format rules, where the format rules specify including a first field indicating the presence of a second field, and the second field identifies the maximum index of a reference picture for encoding - decoding a strip based on a condition; where the condition can be expressed as a logical expression “A&(B||C)”, where: A indicates “rpl_info_in_ph_flag = 1, or the NAL unit type is not equal to IDR, or sps_idr_rpl_present_flag is equal to 1”, and “B” indicates “slice_type is equal to P or B, and the number of reference entries in reference picture list 0 is greater than 1”, and “C” indicates “slice_type is equal to B, and the number of reference entries in reference picture list 1 is greater than 1” and “&” is a logical “and” operation, and “||” is a logical “or” operation.
[0008] In another exemplary aspect, another video processing method is disclosed. The method includes performing a conversion between a video region of a video and an encoded / decoded representation of the video, where the encoded / decoded representation conforms to format rules, and where the format rules specify conditions for using a syntax element that controls the picture order count of a long-term reference picture for the conversion of the video region.
[0009] In another exemplary aspect, another video processing method is disclosed. The method includes performing a conversion between a video region of a video and an encoded / decoded representation of the video, where the encoded / decoded representation conforms to format rules, and where the format rules specify that a reference picture-related syntax structure is included if and only if a variable X is equal to a specific value, where X depends on the slice type of the video region.
[0010] In another exemplary aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video; where the bitstream conforms to format rules; and where the format rules specify that one or more syntax elements indicating encoded / decoded information are selectively included in a picture parameter set of the bitstream in response to whether each picture indicating a reference picture parameter set includes a single slice.
[0011] In another exemplary aspect, another video processing method is disclosed. The method includes performing a conversion between a video including a plurality of pictures, each picture including at least one slice, and a bitstream of the video, where the bitstream conforms to format rules; where the format rules specify that a first flag in the bitstream indicates whether a picture header syntax structure of a picture is included in a slice header of a slice of the picture; and where the format rules provide that the first flag is equal to 0 in response to any one of six flags in a picture parameter set associated with the picture being equal to 1.
[0012] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video including one or more pictures and a bitstream of the video, each picture including at least one strip, where the bitstream conforms to format rules, and where the format rules specify a first field including an indication of the presence of a second field, the second field identifying a maximum index of a reference picture for encoding / decoding a strip based on a condition; where the condition can be expressed as a logical expression “A&(B||C)”, where: A indicates that a first flag indicating whether reference picture list information is included in a picture header syntax structure is equal to 1, or the network abstraction layer (NAL) unit type is not equal to the instant decoding refresh (IDR) type, or a second flag indicating whether reference picture list information may be present in a strip header of a strip having an IDR NAL unit type is equal to 1, B indicates that the strip type is equal to P or B, and the number of reference entries in reference picture list 0 is greater than 1, C indicates that the strip type is equal to B, and the number of reference entries in reference picture list 1 is greater than 1, and where “&” is a logical “AND” operation and “||” is a logical “OR” operation.
[0013] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video and a bitstream of the video, where the bitstream conforms to format rules, and where the format rules specify a condition for controlling whether or how one or more syntax elements related to the picture order count of a long-term reference picture are included in a reference picture list syntax structure in the bitstream.
[0014] In another example aspect, another video processing method is disclosed. The method includes performing a conversion between a video and a bitstream of the video, where the bitstream conforms to format rules, and where the format rules specify whether syntax elements related to reference pictures in a reference picture list are included in the reference picture list syntax structure.
[0015] In yet another example aspect, a video codec device is disclosed. The video codec includes a processor configured to implement the above method.
[0016] In yet another example aspect, a video decoder device is disclosed. The video decoder includes a processor configured to implement the above method.
[0017] In yet another example aspect, a bitstream generated according to the method described herein is disclosed. The bitstream can be stored on a computer-readable storage medium.
[0018] In yet another example aspect, a computer-readable medium having code stored thereon is disclosed. The code embodies one of the methods described herein in a form of processor-executable code.
[0019] These and other features are described in this document. Brief Description of the Drawings
[0020] Figure 1 is a block diagram of an example video processing system.
[0021] Figure 2 is a block diagram of a video processing device.
[0022] Figure 3 is a flowchart of an example method for video processing.
[0023] Figure 4 is a block diagram illustrating a video codec system according to some embodiments of the present disclosure.
[0024] Figure 5 is a block diagram illustrating an encoder according to some embodiments of the present disclosure.
[0025] Figure 6 is a block diagram illustrating a decoder according to some embodiments of the present disclosure.
[0026] Figures 7A to 7D is a flowchart of an example method for video processing. Detailed Description of the Embodiments
[0027] The section headings used in this document are for ease of understanding and do not limit the applicability of the technologies and embodiments disclosed in each section to that section only. Additionally, the use of H.266 terminology in some descriptions is for ease of understanding only and does not limit the scope of the disclosed technologies. Therefore, the technologies described herein are also applicable to other video codec protocols and designs.
[0028] 1. Preliminary Discussion
[0029] This document relates to video codec technology. Specifically, it is about the design of PPS, PH, and SH syntax in video coding and decoding. These ideas can be applied alone or in various combinations to any video coding standard or non-standard video codec that supports multi-layer video coding and decoding, such as the Versatile Video Coding (VVC) currently under development.
[0030] 2. Abbreviations
[0031] APS Adaptive Parameter Set
[0032] AU Access Unit
[0033] AUD Access Unit Delimiter
[0034] AVC Advanced Video Coding
[0035] CLVS Coded Layer Video Sequence
[0036] CPB Coding Picture Buffer
[0037] CRA Clean Random Access
[0038] CTU Coding Tree Unit
[0039] CVS Coding Video Sequence
[0040] DPB Decoded Picture Buffer
[0041] DPS Decoding Parameter Set
[0042] EOB End of Bitstream
[0043] EOS End of Sequence
[0044] GDR Gradual Decoding Refresh
[0045] HEVC High Efficiency Video Coding
[0046] HRD Hypothetical Reference Decoder
[0047] IDR Instantaneous Decoding Refresh
[0048] JEM Joint Exploration Model
[0049] LTRP Long-Term Reference Picture
[0050] MCTS Motion-Constrained Tile Set
[0051] NAL Network Abstraction Layer
[0052] OLS Output Layer Set
[0053] PH Picture Header
[0054] PPS Picture Parameter Set
[0055] PTL Profile, Tier, Level
[0056] PU Picture Unit
[0057] RBSP Raw Byte Sequence Payload
[0058] SEI Supplemental Enhancement Information
[0059] SH Slice Header
[0060] SPS Sequence Parameter Set
[0061] STRP Short-Term Reference Picture
[0062] SVC Scalable Video Coding
[0063] VCL Video Coding Layer
[0064] VPS Video Parameter Set
[0065] VTM VVC Test Model
[0066] VUI Video Usability Information
[0067] VVC Versatile Video Coding
[0068] 3. Introduction to Video Processing
[0069] Video coding standards have evolved mainly through the development of well-known ITU-T and ISO / IEC standards. ITU-T produced the H.261 and H.263 standards, ISO / IEC produced the MPEG-1 and MPEG-4 Visual standards, and the two organizations jointly produced the H.262 / MPEG-2 video standard, the H.264 / MPEG-4 Advanced Video Coding (AVC) standard, and the H.265 / HEVC standard. Since H.262, video coding standards have been based on a hybrid video coding structure that utilizes temporal prediction plus transform coding. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, JVET has adopted many new methods and incorporated them into a reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly simultaneously. The goal of the new coding standard is to reduce the bitrate by 50% compared to HEVC. The new video coding standard was officially named Versatile Video Coding (VVC) at the JVET meeting in April 2018, and the first version of the VVC Test Model (VTM) was also released at that time. With continuous efforts in VVC standardization, new coding technologies have been adopted into the VVC standard at each JVET meeting. The working draft of VVC and the test model VTM are updated after each meeting. The VVC project now aims to be technically completed (FDIS) at the meeting in July 2020.
[0070] 3.1. PPS Syntax and Semantics
[0071] In the latest VVC draft text, the PPS syntax and semantics are as follows:
[0072]
[0073]
[0074]
[0075]
[0076] The PPS RBSP shall be available for the decoding process before being referenced, including in at least one AU where the TemporalId is less than or equal to the TemporalId of the PPS NAL unit, or provided externally.
[0077] All PPS NAL units within a PU having a specific value of pps_pic_parameter_set_id shall have the same content.
[0078] pps_pic_parameter_set_id identifies the PPS that other syntax elements refer to. The value of pps_pic_parameter_set_id shall be in the range of 0 to 63 (including the end values).
[0079] Regardless of the value of nuh_layer_id, PPS NAL units share the same value space of pps_pic_parameter_set_id.
[0080] Let ppsLayerId be the value of numh_layer_id of a specific PPS NAL unit, and vclLayerId be the value of numh_layer_id of a specific VCL NAL unit. A specific VCL NAL unit shall not refer to a specific PPS NAL unit unless ppsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to ppsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.
[0081] 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 (including the end values). The value of pps_seq_parameter_set_id shall be the same for all ppss referenced by coded pictures in CLVS.
[0082] mixed_nalu_types_in_pic_flag equal to 1 specifies that each picture referring to the 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 referring to the PPS has one or more VCL NAL units, and the VCL NAL units of each picture referring to the PPS have the same nal_unit_type value.
[0083] 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.
[0084] For each slice in picture picA that has a nal_unit_type value of nalUnitTypeA in the range from IDR_W_RADL to CRA_NUT (inclusive of the end values), and the slice is in a picture that also contains one or more slices with another value of nal_unit_type (i.e., the value of mixed_nalu_types_in_pic_flag for picture picA is equal to 1), the following apply:
[0085] - The slice shall belong to subpicture subpicA for which the value of subpic_treated_as_pic_flag[i] is equal to 1.
[0086] - The slice shall not belong to a subpicture of picA that contains VCL NAL units with nal_unit_type not equal to nalUnitTypeA.
[0087] - If nalUnitTypeA is equal to CRA, for all subsequent PUs in CLVS that are after the current picture in decoding order and output order, neither RefPicList[0] nor RefPicList[1] of the slices in subpicA of these PUs shall include any picture that is before picA in decoding order in the active list.
[0088] - Otherwise (i.e., nalUnitTypeA is equal to IDR_W_RADL or IDR_N_LP), for all PUs in CLVS that are after the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of the slices in subpicA of these PUs shall include any picture that is before picA in decoding order in the active list.
[0089] Note 1 – When mixed_nalu_types_in_pic_flag equals 1, it indicates that the picture referring to the PPS contains slices with different NAL unit types. For example, for a coded picture resulting from a sub-picture bitstream merging operation, the encoder must ensure that the bitstream structure is matched and the parameters of the original bitstream are further aligned. An example of such alignment is as follows: When the value of sps_idr_rpl_flag equals 0 and mixed_nalu_types_in_pic_flag equals 1, the picture referring to the PPS cannot have slices with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.
[0090] pic_width_in_luma_samples specifies the width of each decoded picture referring to the PPS, in luma samples. pic_width_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8, MinCbSizeY), and shall be less than or equal to pic_width_max_in_luma_samples.
[0091] When res_change_in_clvs_allowed_flag equals 0, the value of pic_width_in_luma_samples shall be equal to pic_width_max_in_luma_samples.
[0092] pic_height_in_luma_samples specifies the height of each decoded picture referring to the PPS, in luma samples. 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.
[0093] When res_change_in_clvs_allowed_flag equals 0, the value of pic_height_in_luma_samples shall be equal to pic_height_max_in_luma_samples.
[0094] The derivation of the variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC is as follows:
[0095] PicWidthInCtbsY = Ceil(pic_width_in_luma_samples ÷ CtbSizeY) (69)
[0096] PicHeightInCtbsY = Ceil(pic_height_in_luma_samples ÷ CtbSizeY) (70)
[0097] PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY (71)
[0098] PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY (72)
[0099] PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY (73)
[0100] PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY (74)
[0101] PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples (75)
[0102] PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC (76)
[0103] PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC (77)
[0104] A pps_conformance_window_flag equal to 1 indicates that the conformance cropping window offset parameter follows immediately in the PPS. A pps_conformance_window_flag equal to 0 indicates that there is no conformance cropping window offset parameter in the PPS.
[0105] 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 to be 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.
[0106] The conformance cropping window contains luma samples where the horizontal picture coordinates range from SubWidthC * pps_conf_win_left_offset to pic_width_in_luma_samples - (SubWidthC * pps_conf_win_right_offset + 1), and the vertical picture coordinates range from SubHeightC * pps_conf_win_top_offset to pic_height_in_luma_samples - (SubHeightC * pps_conf_win_bottom_offset + 1), including the end values.
[0107] The value of SubWidthC * (pps_conf_win_left_offset + pps_conf_win_right_offset) shall be less than pic_width_in_luma_samples, and the value of SubHeightC * (pps_conf_win_top_offset + pps_conf_win_bottom_offset) shall be less than pic_height_in_luma_samples.
[0108] 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.
[0109] Note 2 – The consistency cropping window offset parameters apply only to the output. All internal decoding processes are applied to the uncropped picture size.
[0110] Suppose ppsA and ppsB are any two PPSs that refer to the same SPS. The requirement for bitstream consistency is that when ppsA and ppsB have the same pic_width_in_luma_samples and pic_height_in_luma_samples values respectively, ppsA and ppsB should have the same pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset values respectively.
[0111] When pic_width_in_luma_samples is equal to pic_width_max_in_luma_samples and pic_height_in_luma_samples is equal to pic_height_max_in_luma_samples, the requirement for bitstream consistency is that pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset are equal to sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset respectively.
[0112] When scaling_window_explicit_signaling_flag equals 1, it indicates that the scaling window offset parameter exists in the PPS. When scaling_window_explicit_signaling_flag equals 0, it indicates that the scaling window offset parameter does not exist in the PPS. When res_change_in_clvs_allowed_flag equals 0, the value of scaling_window_explicit_signaling_flag shall equal 0.
[0113] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify the offsets of the picture size applied to the scaling ratio calculation. When they do not exist, the values of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset are inferred to be equal to pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset respectively.
[0114] The value of SubWidthC * (scaling_win_left_offset + scaling_win_right_offset) shall be less than pic_width_in_luma_samples, and the value of SubHeightC * (scaling_win_top_offset + scaling_win_bottom_offset) shall be less than pic_height_in_luma_samples.
[0115] The derivation of the variables PicOutputWidthL and PicOutputHeightL is as follows:
[0116] PicOutputWidthL = pic_width_in_luma_samples -
[0117] SubWidthC * (scaling_win_right_offset + scaling_win_left_offset) (78)
[0118] PicOutputHeightL = pic_height_in_luma_samples -
[0119] SubWidthC * (scaling_win_bottom_offset + scaling_win_top_offset) (79)
[0120] Assume that refPicOutputWidthL and refPicOutputHeightL are PicOutputWidthL and PicOutputHeightL of the reference picture of the current picture referring to this PPS respectively. The requirements for bitstream conformance are that all of the following conditions are satisfied:
[0121] – PicOutputWidthL * 2 shall be greater than or equal to refPicWidthInLumaSamples.
[0122] – PicOutputHeightL * 2 shall be greater than or equal to refPicHeightInLumaSamples.
[0123] – PicOutputWidthL shall be less than or equal to refPicWidthInLumaSamples * 8.
[0124] – PicOutputHeightL shall be less than or equal to refPicHeightInLumaSamples * 8.
[0125] – PicOutputWidthL * pic_width_max_in_luma_samples shall be greater than or equal to refPicOutputWidthL * (pic_width_in_luma_samples - Max(8, MinCbSizeY)).
[0126] – PicOutputHeightL * pic_height_max_in_luma_samples shall be greater than or equal to refPicOutputHeightL * (pic_height_in_luma_samples - Max(8, MinCbSizeY)).
[0127] The output_flag_present_flag being equal to 1 indicates that the pic_output_flag syntax element is present in the slice header of the reference PPS. The output_flag_present_flag being equal to 0 indicates that the pic_output_flag syntax element is not present in the slice header of the reference PPS.
[0128] The subpic_id_mapping_in_pps_flag being equal to 1 specifies that the sub-picture ID mapping is signalled in the PPS. The subpic_id_mapping_in_pps_flag being equal to 0 specifies that the sub-picture ID mapping is not signalled in the PPS. If the subpic_id_mapping_explicitly_signalled_flag is 0 or the subpic_id_mapping_in_sps_flag is equal to 1, the value of the subpic_id_mapping_in_pps_flag shall be equal to 0. Otherwise (the subpic_id_mapping_explicitly_signalled_flag is equal to 1 and the subpic_id_mapping_in_sps_flag is equal to 0), the value of the subpic_id_mapping_in_pps_flag shall be equal to 1.
[0129] pps_num_subpics_minus1 shall be equal to sps_num_subpics_minus1.
[0130] pps_subpic_id_len_minus1 shall be equal to sps_subpic_id_len_minus1.
[0131] 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.
[0132] For each value of i in the range from 0 to sps_num_subpics_minus1 (including the end values), the derivation of the variable SubpicIdVal[i] is as follows:
[0133]
[0134] The requirements for bitstream conformance are to apply the following two constraints:
[0135] -- For any two different values of i and j in the range from 0 to sps_num_subpics_minus1 (including the end values), SubpicIdVal[i] shall not be equal to SubpicIdVal[j].
[0136] -- When the current picture is not the first picture of CLVS, for each value of i in the range from 0 to sps_num_subpics_minus1 (including the end value), if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous picture in decoding order in the same layer, the nal_unit_type of all coded and decoded slice NAL units of the subpicture in the current picture with subpicture index i shall be equal to a specific value in the range from IDR_W_RADL to CRA_NUT (including the end values).
[0137] no_pic_partition_flag being equal to 1 specifies that no picture partitioning is applied to each picture of the reference PPS. no_pic_partition_flag being equal to 0 specifies that each picture of the reference PPS can be partitioned into multiple slices or stripes.
[0138] The requirement for bitstream consistency is that the value of no_pic_partition_flag should be the same for all PPSs referred to by the coded pictures within CLVS.
[0139] The requirement for bitstream consistency is that when the value of sps_num_subpics_minus1 + 1 is greater than 1, the value of no_pic_partition_flag shall not be equal to 1.
[0140] pps_log2_ctu_size_minus5 plus 5 specifies the luminance coded tree block size of each CTU. pps_log2_ctu_size_minus5 shall be equal to sps_log2_ctu_size_minus5.
[0141] num_exp_tile_columns_minus1 plus 1 specifies the number of explicitly provided tile column widths. The value of num_exp_tile_columns_minus1 shall be in the range from 0 to PicWidthInCtbsY – 1 (including the end value). When no_pic_partition_flag is equal to 1, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.
[0142] 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 of the end values). When no_pic_partition_flag equals 1, the value of num_tile_rows_minus1 is inferred to be equal to 0.
[0143] tile_column_width_minus1[i] plus 1 specifies the width of the i-th tile column for i in the range of 0 to num_exp_tile_columns_minus1-1 (inclusive of the end values) in units of CTB. tile_column_width_minus1[num_exp_tile_columns_minus1] is used to derive the width of tile columns with indices greater than or equal to num_exp_tile_columns_minus1 as specified in Clause 6.5.1. The value of tile_column_width_minus1[i] shall be in the range of 0 to PicWidthInCtbsY–1 (inclusive of the end values). When not present, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY-1.
[0144] tile_row_height_minus1[i] plus 1 specifies the height of the i-th tile row for i in the range of 0 to num_exp_tile_rows_minus1-1 (inclusive of the end values) in units of CTB. tile_row_height_minus1[num_exp_tile_rows_minus1] is used to derive the height of tile rows with indices greater than or equal to num_exp_tile_rows_minus1 as specified in Clause 6.5.1. The value of tile_row_height_minus1[i] shall be in the range of 0 to PicHeightInCtbsY–1 (inclusive of the end values). When not present, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY-1.
[0145] A rect_slice_flag value of 0 specifies that slices within each strip are in raster scan order and strip information is not signaled in the PPS. A rect_slice_flag value of 1 specifies that slices within each strip cover a rectangular region of the picture and strip information is signaled in the PPS. When absent, the 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.
[0146] A single_slice_per_subpic_flag value of 1 specifies that each sub - picture consists of one and only one rectangular strip. A single_slice_per_subpic_flag value of 0 specifies that each sub - picture may consist of one or more rectangular strips. When 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 absent, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[0147] num_slices_in_pic_minus1 + 1 specifies the number of rectangular strips in each picture with reference to the PPS. The value of num_slices_in_pic_minus1 shall be in the range of 0 to MaxSlicesPerPicture–1 (inclusive), where MaxSlicesPerPicture is specified in Annex A. When no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0.
[0148] A tile_idx_delta_present_flag value of 0 specifies that the tile_idx_delta value is not present in the PPS and all rectangular strips in the picture with reference to the PPS are specified in raster order according to the procedure defined in Clause 6.5.1. A tile_idx_delta_present_flag value of 1 specifies that the tile_idx_delta value may be present in the PPS and all rectangular strips in the picture with reference to the PPS are specified in the order indicated by the tile_idx_delta value. When absent, the value of tile_idx_delta_present_flag is inferred to be equal to 0.
[0149] slice_width_in_tiles_minus1[i] plus 1 specifies the width of the i-th rectangular strip in terms of tile columns. The value of slice_width_in_tiles_minus1[i] shall be in the range of 0 to NumTileColumns–1 (including the end values).
[0150] When slice_width_in_tiles_minus1[i] does not exist, the following applies:
[0151] -- If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0152] -- Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred as specified in Clause 6.5.1.
[0153] slice_height_in_tiles_minus1[i] plus 1 specifies the height of the i-th rectangular strip in terms of tile rows. The value of slice_height_in_tiles_minus1[i] shall be in the range of 0 to NumTileRows–1 (including the end values).
[0154] When slice_height_in_tiles_minus1[i] does not exist, the following applies:
[0155] -- If NumTileRows is equal to 1, or tile_idx_delta_present_flag is equal to 0 and tileIdx % NumTileColumns is greater than 0, the value of slice_height_in_tiles_minus1[i] is inferred to be equal to 0.
[0156] -- 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].
[0157] num_exp_slices_in_tile[i] specifies the number of explicitly provided slice heights in the current tile that consists of multiple rectangular stripes. The value of num_exp_slices_in_tile[i] shall be in the range of 0 to RowHeight[tileY] – 1 (inclusive), where tileY is the tile row index that contains the i-th stripe. 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.
[0158] exp_slice_height_in_ctus_minus1[j] plus 1 specifies the height of the j-th rectangular stripe in the current slice in units of CTU rows. The value of exp_slice_height_in_ctus_minus1[j] shall be in the range of 0 to RowHeight[tileY] – 1 (inclusive), where tileY is the slice row index of the current slice.
[0159] When num_exp_slices_in_tile[i] is greater than 0, the variables NumSlicesInTile[i] and SliceHeightInCtusMinus1[i + k] for k in the range of 0 to NumSlicesInTile[i] - 1 (inclusive) are derived as follows:
[0160]
[0161] tile_idx_delta[i] specifies the difference between the slice index of the first slice in the i-th rectangular stripe and the slice index of the first slice in the (i + 1)-th rectangular stripe. The value of tile_idx_delta[i] shall be in the range of -NumTilesInPic + 1 to NumTilesInPic – 1 (inclusive). When 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.
[0162] When loop_filter_across_tiles_enabled_flag equals 1, it specifies that loop filtering operations can be performed across tile boundaries in the picture of the reference PPS. When loop_filter_cross_tiles_enabled_flag equals 0, it specifies that loop filtering operations are not performed across tile boundaries in the picture of the reference PPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of loop_filter_cross_tiles_enabled_flag is inferred to be equal to 1.
[0163] When loop_filter_cross_slices_enabled_flag equals 1, it specifies that loop filtering operations can be performed across slice boundaries in the picture of the reference PPS. When loop_filter_cross_slice_enabled_flag equals 0, it specifies that loop filtering operations are not performed across slice boundaries in the picture of the reference PPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of loop_filter_cross_slices_enabled_flag is inferred to be equal to 0.
[0164] When cabac_init_present_flag equals 1, it specifies that cabac_init_flag is present in the slice header of the reference PPS. When cabac_init_present_flag equals 0, it specifies that cabac_init_flag is not present in the slice header of the reference PPS.
[0165] num_ref_idx_default_active_minus1[i] plus 1, when equal to 0, specifies the inferred value of the variable NumRefIdxActive[0] for P or B slices with num_ref_idx_active_override_flag equal to 0, and when i equals 1, specifies the inferred value of NumRefIdxActive[1] for B slices with num_ref_idx_active_override_flag equal to 0. The value of num_ref_idx_default_active_minus1[i] should be in the range of 0 to 14 (including the end values).
[0166] 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 slice header of 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 slice header of pictures referencing the PPS.
[0167] 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 init_qp_minus26 is modified at the picture level, or at the slice level when a non-zero value of slice_qp_delta is decoded. The value of init_qp_minus26 should be in the range of -(26+QpBdOffset) to +37 (inclusive).
[0168] 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 referencing the PPS and that cu_qp_delta_abs may be present in the transform unit syntax. 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 referencing the PPS and that cu_qp_delta_abs is not present in the transform unit syntax.
[0169] 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.
[0170] pps_cb_qp_offset and pps_cr_qp_offset respectively specify the offsets for deriving Qp' Cb and Qp' Cr for the luma quantization parameter Qp' Y The values of pps_cb_qp_offset and pps_cr_qp_offset shall be in the range of -12 to +12 (including the end values). When ChromaArrayType is equal to 0, pps_cb_qp_offset and pps_cr_qp_offset are not used during the decoding process, and the decoder shall ignore their values. When not present, the values of pps_cb_qp_offset and pps_cr_qp_offset are inferred to be equal to 0.
[0171] pps_joint_cbcr_qp_offset_present_flag being 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 being 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.
[0172] pps_joint_cbcr_qp_offset_value specifies the offset for deriving Qp' CbCr for the luma quantization parameter Qp' YOffset. The value of pps_joint_cbcr_qp_offset_value shall be in the range of -12 to +12 (including the end values). When ChromaArrayType is equal to 0 or sps_joint_cbcr_enabled_flag is equal to 0, pps_joint_cbcr_qp_offset_value is not used during the decoding process, and the decoder shall ignore its value. When pps_joint_cbcr_qp_offset_present_flag is equal to 0, pps_joint_cbcr_qp_offset_value does not exist and is inferred to be equal to 0.
[0173] pps_slice_chroma_qp_offsets_present_flag being 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 being 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.
[0174] pps_cu_chroma_qp_offset_list_enabled_flag being equal to 1 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are present in the PH of the reference PPS, indicating that the PPS and cu_chroma_qp_offset_flag may be present in the transform unit syntax and palette coding / decoding syntax. pps_cu_chroma_qp_offset_list_enabled_flag being equal to 0 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are not present in the PH of the reference PPS, and the cu_chroma_qp_offset_flag is not present in the transform unit syntax and palette coding / decoding syntax. When not present, the value of pps_cu_chroma_qp_offset_list_enabled_flag is inferred to be equal to 0.
[0175] chroma_qp_offset_list_len_minus1 plus 1 specifies the number of the syntax elements cb_qp_offset_list[i], cr_qp_offset_list[i] and joint_cbcr_qp_offset_list[i] that exist in the PPS RBSP syntax structure. The value of chroma_qp_offset_list_len_minus1 shall be in the range of 0 to 5 (including the end values).
[0176] cb_qp_offset_list[i], cr_qp_offset_list[i] and joint_cbcr_qp_offset_list[i] respectively specify the offsets used in the derivation of Qp′ Cb , Qp′ Cr and Qp′ CbCr . The values of cb_qp_offset_list[i], cr_qp_offset_list[i] and joint_cbcr_qp_offset_list[i] shall be in the range of -12 to +12 (including the end values). When pps_joint_cbcr_qp_offset_present_flag is equal to 0, joint_cbcr_qp_offset_list[i] does not exist and is inferred to be equal to 0.
[0177] pps_weighted_pred_flag being equal to 0 specifies that weighted prediction is not applied to P slices that reference the PPS. pps_weighted_pred_flag being equal to 1 specifies that weighted prediction is applied to P slices that reference the PPS. When sps_weighted_pred_flag is equal to 0, the value of pps_weighted_pred_flag shall be equal to 0.
[0178] pps_weighted_bipred_flag being equal to 0 specifies that explicit weighted prediction is not applied to B slices that reference the PPS. pps_weighted_bipred_flag being equal to 1 specifies that explicit weighted prediction is applied to B slices that reference the PPS. When sps_weighted_bipred_flag is equal to 0, the value of pps_weighted_bipred_flag shall be equal to 0.
[0179] The deblocking_filter_control_present_flag being equal to 1 specifies that deblocking filter control syntax elements are present in the PPS. The deblocking_filter_control_present_flag being equal to 0 specifies that deblocking filter control syntax elements are not present in the PPS.
[0180] The deblocking_filter_override_enabled_flag being equal to 1 specifies that ph_deblocking_filter_override_flag is present in the PH of the reference PPS, or slice_deblocking_filter_override_flag is present in the slice header of the reference PPS. The deblocking_filter_override_enabled_flag being equal to 0 specifies that ph_deblocking_filter_override_flag is not present in the PH of the reference PPS, or slice_deblocking_filter_override_flag is not present in the slice header of the reference PPS. When not present, the value of the deblocking_filter_override_enabled_flag is inferred to be equal to 0.
[0181] The pps_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of the deblocking filter does not apply to slices that reference a PPS where slice_deblocking_filter_disabled_flag is not present. The pps_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter applies to slices that reference a PPS where slice_deblocking_filter_disabled_flag is not present. When not present, the value of the pps_deblocking_filter_disabled_flag is inferred to be equal to 0.
[0182] pps_beta_offset_div2 and pps_tc_offset_div2 specify default deblocking parameter offsets for β and tC (divided by 2), which are applied to the luma component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slices of the reference PPS. The values of both pps_beta_offset_div2 and pps_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). When absent, the values of both pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.
[0183] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify default deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cb component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slices of the reference PPS. The values of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). When absent, the values of both pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are inferred to be equal to 0.
[0184] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify default deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cr component of the slices of the reference PPS, unless the default deblocking parameter offsets are overridden by deblocking parameter offsets present in the picture header or slice header of the slices of the reference pps. The values of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). When absent, the values of both pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are inferred to be equal to 0.
[0185] rpl_info_in_ph_flag equal to 1 specifies that the reference picture list information exists in the PH syntax structure and does not exist in the slice header of the PPS that does not contain the PH syntax structure. rpl_info_in_ph_flag equal to 0 specifies that the reference picture list information does not exist in the PH syntax structure and may exist in the slice header of the PPS that does not contain the PH syntax structure.
[0186] When dbf_info_in_ph_flag equals 1, it specifies that the deblocking filter information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS not containing the PH syntax structure. When dbf_info_in_ph_flag equals 0, it specifies that the deblocking filter information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS not containing the PH syntax structure. When it does not exist, the value of dbf_info_in_ph_flag is inferred to be equal to 0.
[0187] When sao_info_in_ph_flag equals 1, it specifies that the SAO filter information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS not containing the PH syntax structure. When sao_info_in_ph_flag equals 0, it specifies that the SAO filter information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS not containing the PH syntax structure.
[0188] When alf_info_in_ph_flag equals 1, it specifies that the ALF information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS not containing the PH syntax structure. When alf_info_in_ph_flag equals 0, it specifies that the ALF information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS not containing the PH syntax structure.
[0189] When wp_info_in_ph_flag equals 1, it specifies that the weighted prediction information may exist in the PH syntax structure and does not exist in the slice header that refers to a PPS not containing the PH syntax structure. When wp_info_in_ph_flag equals 0, it specifies that the weighted prediction information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS not containing the PH syntax structure. When it does not exist, the value of wp_info_in_ph_flag is inferred to be equal to 0.
[0190] When qp_delta_info_in_ph_flag equals 1, it specifies that the QP delta information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS not containing the PH syntax structure. When qp_delta_info_in_ph_flag equals 0, it specifies that the QP delta information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS not containing the PH syntax structure.
[0191] The pps_ref_wraparound_enabled_flag being equal to 1 specifies that horizontal wrap-around motion compensation is applied in inter prediction. The pps_ref_wraparound_enabled_flag being equal to 0 specifies that horizontal wrap-around motion compensation is not applied. When the value of CtbSizeY / MinCbSizeY + 1 is greater than pic_width_in_luma_samples / MinCbSizeY - 1, the value of pps_ref_wraparound_enabled_flag shall be equal to 0. When the sps_ref_wraparound_enabled_flag is equal to 0, the value of pps_ref_wraparound_enabled_flag shall be equal to 0.
[0192] pps_ref_wraparound_offset plus (CtbSizeY / MinCbSizeY) + 2 specifies the offset used to calculate the horizontal wrap-around position in units of MinCbSizeY luma samples. The value of pps_ref_wraparound_offset shall be in the range (including the end values) of 0 to (pic_width_in_luma_samples / MinCbSizeY) - (CtbSizeY / MinCbSizeY) - 2.
[0193] The variable PpsRefWraparoundOffset is set to be equal to pps_ref_wraparound_offset + (CtbSizeY / MinCbSizeY) + 2.
[0194] The picture_header_extension_present_flag being equal to 0 specifies that the PH extension syntax element does not exist in the PH of the reference PPS. The picture_header_extension_present_flag being equal to 1 specifies that the PH extension syntax element exists in the PH of the reference PPS. In a bitstream compliant with this version of this specification, the picture_header_extension_present_flag shall be equal to 0.
[0195] A slice_header_extension_present_flag equal to 0 specifies that the slice header extension syntax element does not exist in the slice header of the decoded picture of the reference PPS. A slice_header_extension_present_flag equal to 1 specifies that the slice header extension syntax element exists in the slice header of the decoded picture of the reference PPS. In a bitstream compliant with this version of this specification, the slice_header_extension_present_flag shall be equal to 0.
[0196] A pps_extension_flag equal to 0 specifies that the pps_extension_data_flag syntax element does not exist in the PPS RBSP syntax structure. A pps_extension_flag equal to 1 specifies that the pps_extension_data_flag syntax element exists in the PPS RBSP syntax structure.
[0197] The pps_extension_data_flag can have any value. Its presence and value do not affect the decoder's compliance with the profiles specified in this version of this specification. Decoders compliant with this version of this specification shall ignore all pps_extension_data_flag syntax elements.
[0198] 3.2.PH Syntax and Semantics
[0199] In the latest VVC draft text, the PH syntax and semantics are as follows:
[0200]
[0201] The PH RBSP contains the PH syntax structure, namely picture_header_structure().
[0202]
[0203]
[0204]
[0205]
[0206]
[0207] The PH syntax structure contains information common to all slices of the decoded picture associated with the PH syntax structure.
[0208] A gdr_or_irap_pic_flag equal to 1 specifies that the current picture is a GDR or IRAP picture. A gdr_or_irap_pic_flag equal to 0 specifies that the current picture may or may not be a GDR or IRAP picture.
[0209] A gdr_pic_flag equal to 1 specifies that the picture associated with PH is a GDR picture. A gdr_pic_flag equal to 0 specifies that the picture associated with PH is not a GDR picture. When not present, the value of gdr_pic_flag is inferred to be equal to 0. When gdr_enabled_flag is equal to 0, the value of gdr_pic_flag shall be equal to 0.
[0210] A ph_inter_slice_allowed_flag equal to 0 specifies that the slice_type of all coded slices of the picture is equal to 2. A ph_inter_slice_allowed_flag equal to 1 specifies that there may or may not be one or more coded slices in the picture with slice_type equal to 0 or 1.
[0211] A ph_intra_slice_allowed_flag equal to 0 specifies that the slice_type of all coded slices of the picture is equal to 0 or 1. A ph_intra_slice_allowed_flag equal to 1 specifies that there may or may not be one or more coded slices in the picture with slice_type equal to 2. When not present, the value of ph_intra_slice_allowed_flag is inferred to be equal to 1.
[0212] Note 1 – For bitstreams for which sub-picture based bitstream merging should be possible without changing the PH NAL unit, the codec shall set the values of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag equal to 1.
[0213] A non_reference_picture_flag equal to 1 specifies that the picture associated with PH is never used as a reference picture. A non_reference_picture_flag equal to 0 specifies that the picture associated with PH may or may not be used as a reference picture.
[0214] The ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id for the PPS in use. The value of ph_pic_parameter_set_id shall be in the range of 0 to 63 (inclusive of the end values).
[0215] For bitstream consistency, the value of the TemporalId of PH shall be greater than or equal to the value of the TemporalId of the PPS for which pps_pic_parameter_set_id is equal to ph_pic_parameter_set_id.
[0216] 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.
[0217] no_output_of_prior_pics_flag affects the output of previously decoded pictures in the DPB after decoding a CLVSS picture that is not the first picture in the bitstream specified in Annex C.
[0218] recovery_poc_cnt specifies the recovery point of the decoded pictures in output order. If the current picture is a GDR picture associated with PH and there is a picture picA in CLVS that is after the current GDR picture in decoding order and whose PicOrderCntVal is equal to the PicOrderCntVal of the current GDR picture plus the value of recovery_poc_cnt, then picture picA is called a recovery point picture. Otherwise, the first picture in output order whose PicOrderCntVal is greater than the PicOrderCntVal of the current picture plus the value of recovery_poc_cnt is called a recovery point picture. In decoding order, the recovery point picture shall not be before the current GDR picture. The value of recovery_poc_cnt shall be in the range of 0 to MaxPicOrderCntLsb–1, inclusive.
[0219] When the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows:
[0220] RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (82)
[0221] 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 preceding the associated GDR picture (if any) in decoding order.
[0222] ph_extra_bit[i] may be equal to 1 or 0. Decoders conforming to this version of this specification shall ignore the value of ph_extra_bit[i]. Its value does not affect the conformance of the decoder to the profile specified in this version of this specification.
[0223] 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.
[0224] 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.
[0225] 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.
[0226] ph_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slice associated with the PH.
[0227] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS, which the luma component of the slice associated with the PH refers to.
[0228] The value of alf_luma_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be equal to 1.
[0229] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with PH.
[0230] 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 absent, it is inferred to be equal to 0.
[0231] ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS to which the chrominance components of the slices associated with PH refer.
[0232] The value of alf_chroma_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma should be equal to 1.
[0233] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_alf_aps_id_chroma shall be less than or equal to the TemporalId of the picture associated with PH.
[0234] The ph_cc_alf_cb_enabled_flag being equal to 1 specifies that the cross-component filter for the Cb color component is enabled for all slices associated with PH and can be applied to the Cb color component in the slices. The ph_cc_alf_cb_enabled_flag being equal to 0 specifies that the cross-component filter for the Cb color component can be disabled for one, more than one, or all slices associated with PH. When absent, the ph_cc_alf_cb_enabled_flag is inferred to be equal to 0.
[0235] The ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cb color component of the slices associated with PH.
[0236] The value of the alf_cc_cb_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id shall be equal to 1.
[0237] 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 PH.
[0238] The ph_cc_alf_cr_enabled_flag being equal to 1 specifies that the cross-component filter for the Cr color component is enabled for all slices associated with PH and can be applied to the Cr color component in the slices. The ph_cc_alf_cr_enabled_flag being equal to 0 specifies that the cross-component filter for the Cr color component can be disabled for one, more than one, or all slices associated with PH. When absent, the ph_cc_alf_cr_enabled_flag is inferred to be equal to 0.
[0239] The ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cr color component of the slices associated with PH.
[0240] The value of alf_cc_cr_filter_signal_flag for an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id shall be equal to 1.
[0241] The TemporalId of an APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to ph_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[0242] ph_lmcs_enabled_flag being equal to 1 specifies that luminance mapping with chroma scaling is enabled for all slices associated with PH, ph_lmcs_enabled_flag being equal to 0 specifies that luminance mapping with chroma scaling is disabled for one, more than one, or all slices associated with PH, and when it is absent, the value of ph_lmcs_enabled_flag is inferred to be equal to 0.
[0243] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referred to by the slices associated with PH. The TemporalId of an APS NAL unit where aps_params_type is equal to LMCS_APS and adaptation_parameter_set_id is equal to ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[0244] ph_chroma_residual_scale_flag being equal to 1 specifies that chroma residual scaling is enabled for all slices associated with PH. ph_chroma_residual_scale_flag being equal to 0 specifies that chroma residual scaling can be disabled for one, more than one, or all slices associated with PH. When ph_chroma_residual_scale_flag is absent, it is inferred to be equal to 0.
[0245] The ph_scaling_list_present_flag being equal to 1 specifies that the scaling list data for the slice associated with PH is derived based on the scaling list data included in the reference scaling list APS. The ph_scaling_list_present_flag being equal to 0 specifies that the scaling list data for the slice associated with PH is set to be equal to 16. When not present, the value of ph_scaling_list_present_flag is inferred to be equal to 0.
[0246] The ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS. The TemporalId of the APS NAL unit with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id shall be less than or equal to the TemporalId of the picture associated with PH.
[0247] The ph_virtual_boundaries_present_flag being equal to 1 specifies that information about virtual boundaries is signaled in ph. The ph_virtual_boundaries_present_flag being equal to 0 specifies that information about virtual boundaries is not signaled in PH. When one or more virtual boundaries are signaled in PH, the loop filter operations are disabled at the virtual boundaries in the picture. The loop filter 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.
[0248] The requirement for bitstream conformance is that when subpic_info_present_flag is equal to 1, the value of ph_virtual_boundaries_present_flag should be equal to 0.
[0249] The variable VirtualBoundariesPresentFlag is derived as follows:
[0250]
[0251] 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.
[0252] The derivation of the variable NumVerVirtualBoundaries is as follows:
[0253]
[0254] 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] should be in the range of 1 to Ceil(pic_width_in_luma_samples÷8)–1 (including the end values).
[0255] The list VirtualBoundariesPosX[i] for i ranging from 0 to NumVerVirtualBoundaries–1 (including the end values), in units of luma samples, specifies the positions of the vertical virtual boundaries, and the derivation is as follows:
[0256] for(i = 0; i < NumVerVirtualBoundaries; i++)
[0257] VirtualBoundariesPosX[i] = (sps_virtual_boundaries_present_flag?
[0258] sps_virtual_boundaries_pos_x[i]:ph_virtual_boundaries_pos_x[i]) * 8 (85)
[0259] The distance between any two vertical virtual boundaries should be greater than or equal to CtbSizeY luma samples.
[0260] 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.
[0261] The derivation of the parameter NumHorVirtualBoundaries is as follows:
[0262]
[0263]
[0264] 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 0.
[0265] ph_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary in units of luminance samples divided by 8. The value of ph_virtual_boundaries_pos_y[i] shall be in the range of 1 to Ceil(pic_height_in_luma_samples÷8)–1 (including the end values).
[0266] The list VirtualBoundariesPosY[i] with i ranging from 0 to NumHorVirtualBoundaries–1 (including the end values), specifying the positions of the horizontal virtual boundaries in units of luminance samples, is derived as follows:
[0267] for(i = 0; i < NumHorVirtualBoundaries; i++)
[0268] VirtualBoundariesPosY[i]=(sps_virtual_boundaries_present_flag?
[0269] sps_virtual_boundaries_pos_y[i]:ph_virtual_boundaries_pos_y[i])*8(87)
[0270] The distance between any two horizontal virtual boundaries shall be greater than or equal to CtbSizeY luminance samples.
[0271] 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.
[0272] A partition_constraints_override_flag equal to 1 specifies that the partition constraint parameter exists in the PH. A partition_constraints_override_flag equal to 0 specifies that the partition constraint parameter does not exist in the PH. When it does not exist, the value of partition_constraints_override_flag is inferred to be equal to 0.
[0273] ph_log2_diff_min_qt_min_cb_intra_slice_luma specifies the difference between the logarithm to the base 2 of the minimum size of the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU and the logarithm to the base 2 of the minimum decoded block size of the luma samples of the luma CUs in a slice with slice_type equal to 2 (I) associated with the PH. The value of ph_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY (including the end values). When it does not exist, the value of ph_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_intra_slice_luma.
[0274] ph_max_mtt_hierarchy_depth_intra_slice_luma specifies the maximum hierarchical depth of the coding units resulting from the multi-type tree partitioning of the quadtree leaves in a slice 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) (including the end values). When it does not exist, the value of ph_max_mtt_hierarchy_depth_intra_slice_luma is inferred to be equal to sps_max_mtt_hierarchy_depth_intra_slice_luma.
[0275] ph_log2_diff_max_bt_min_qt_intra_slice_luma specifies the difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a luma coding block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY (including the end values). 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.
[0276] ph_log2_diff_max_tt_min_qt_intra_slice_luma specifies
[0277] the difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a luma coding block that can be partitioned using ternary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY (including the end values). When not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_luma.
[0278] ph_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the minimum size in terms of the base-2 logarithm of the luma samples of the chroma leaf blocks resulting from the quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA, and the difference between the minimum size in terms of the base-2 logarithm of the luma samples of the chroma CUs with treeType equal to DUAL_TREE_CHROMA in a slice where the slice_type associated with PH is equal to 2(I). The value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY (including the end values). When not present, the value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to sps_log2_diff_min_qt_min_cb_intra_slice_chroma.
[0279] ph_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchical depth of a chroma coding unit that is generated by the multi-type tree partitioning of a chroma quadtree leaf in a slice where the slice_type associated with PH is equal to 2(I) and treeType is equal to DUAL_TREE_CHROMA. The value of ph_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including the end values). When not present, the value of ph_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to sps_max_mtt_hierarchy_depth_intra_slice_chroma.
[0280] ph_log2_diff_max_bt_min_qt_intra_slice_chroma specifies
[0281] The difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a chroma coding block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a chroma leaf block resulting from the quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice where slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC (including the end values). When not present, the value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_bt_min_qt_intra_slice_chroma.
[0282] ph_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a chroma coding block that can be partitioned using ternary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a chroma leaf block resulting from the quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice where slice_type associated with PH is equal to 2 (I). The value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC (including the end values). When not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_chroma.
[0283] ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value for the coding units in an intra slice that transmits cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of ph_cu_qp_delta_subdiv_intra_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma) (including the end values).
[0284] When not present, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.
[0285] ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value for the coding units in an intra slice that transmits cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_intra_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma) (including the end values).
[0286] When not present, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.
[0287] ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the base-2 logarithm of the minimum size of the luma samples of the luma leaf blocks produced by the quadtree partitioning of the CTU and the base-2 logarithm of the minimum luma coding block size of the luma samples in the luma CUs in a slice where the slice_type associated with PH is equal to 0 (B) or 1 (P). The value of ph_log2_diff_min_qt_min_cb_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY (including the end values). 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.
[0288] ph_max_mtt_hierarchy_depth_inter_slice specifies the maximum hierarchical depth of the coding tree unit that is generated by the multi-type tree partitioning of the quadtree leaves in the slice with slice_type equal to 0 (B) or 1 (P) associated with PH. The value of ph_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY) (including the end values). When it is absent, the value of ph_max_mtt_hierarchy_depth_inter_slice is inferred to be equal to sps_max_mtt_hierarchy_depth_inter_slice.
[0289] ph_log2_diff_max_bt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum size (width or height) in the luma samples of the luma coding block that can be partitioned using binary partitioning and the base-2 logarithm of the minimum size (width or height) in the luma samples of the luma leaf block generated by the quadtree partitioning of the CTU in the slice with slice_type equal to 0 (B) or 1 (P) associated with PH. The value of ph_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY (including the end values). When it is absent, the value of ph_log2_diff_max_bt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_bt_min_qt_inter_slice.
[0290] ph_log2_diff_max_tt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum size (width or height) of the luma samples in a luma coded block that can be partitioned using ternary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples in a luma leaf block resulting from the quadtree partitioning of a CTU in a slice where the slice_type associated with PH is equal to 0 (B) or 1 (P). 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.
[0291] ph_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding units that transmit cu_qp_delta_abs and cu_qp_delta_sign_flag in an inter slice. The value of ph_cu_qp_delta_subdiv_inter_slice shall be in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice) (inclusive).
[0292] When not present, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.
[0293] ph_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value of the coding units that transmit cu_chroma_qp_offset_flag in an inter slice. The value of ph_cu_chroma_qp_offset_subdiv_inter_slice shall be in the range of 0 to 2 * (CtbLog2SizeY - MinQtLog2SizeInterY + ph_max_mtt_hierarchy_depth_inter_slice) (inclusive).
[0294] When it is not present, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.
[0295] ph_temporal_mvp_enabled_flag specifies whether the temporal motion vector predictor can be used for inter prediction of the slice associated with PH. If ph_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the slice associated with PH shall be constrained such that the temporal motion vector predictor is not used in the decoding of the slice. Otherwise (ph_temporal_mvp_enabled_flag is equal to 1), the temporal motion vector predictor can be used for decoding the slice associated with PH. When it is not present, the value of ph_temporal_mvp_enabled_flag is inferred to be equal to 0. When no reference picture in the DPB has the same spatial resolution as the current picture, the value of ph_temporal_mvp_enabled_flag should be equal to 0.
[0296] The derivation of the maximum number of sub-block based merging MVP candidates, MaxNumSubblockMergeCand, is as follows:
[0297]
[0298] The value of MaxNumSubblockMergeCand shall be in the range of 0 to 5 (inclusive of the end values).
[0299] ph_collocated_from_l0_flag being 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 being equal to 0 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 1.
[0300] ph_collocated_ref_idx specifies the reference index of the collocated picture used for temporal motion vector prediction.
[0301] When ph_collocated_from_l0_flag is equal to 1, ph_collocated_ref_idx refers to an entry in reference picture list 0, and the value of ph_collocated_ref_idx shall be in the range of 0 to num_ref_entries[0][RplsIdx[0]] – 1 (inclusive of the end values).
[0302] When ph_collocated_from_l0_flag is equal to 0, ph_collocated_ref_idx refers to an entry in Reference Picture List 1, and the value of ph_collocated_ref_idx shall be in the range of 0 to num_ref_entries[1][RplsIdx[1]]-1 (inclusive of the end values).
[0303] When it does not exist, the value of ph_collocated_ref_idx is inferred to be equal to 0.
[0304] mvd_l1_zero_flag being equal to 1 indicates that the mvd_coding(x0,y0,1) syntax structure is not parsed, and for compIdx = 0..1 and cpIdx = 0..2, MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compIdx] are set to be equal to 0. mvd_l1_zero_flag being equal to 0 indicates that the mvd_coding(x0,y0,1) syntax structure is parsed.
[0305] ph_fpel_mmvd_enabled_flag being equal to 1 specifies that the merge mode with motion vector difference uses integer sample precision in the slice associated with PH. ph_fpel_mmvd_enabled_flag being equal to 0 specifies that the merge mode with motion vector difference can use fractional sample precision in the slice associated with PH. When it does not exist, the value of ph_fpel_mmvd_enabled_flag is inferred to be 0.
[0306] ph_disable_bdof_flag being equal to 1 specifies that the inter prediction using bidirectional optical flow for inter bidirectional prediction is disabled in the slice associated with PH. ph_disable_bdof_flag being equal to 0 specifies that the inter prediction using bidirectional optical flow for inter bidirectional prediction can be enabled or disabled in the slice associated with PH.
[0307] When ph_disable_bdof_flag does not exist, the following applies:
[0308] -- If sps_bdof_enabled_flag is equal to 1, the value of ph_disable_bdof_flag is inferred to be equal to 0.
[0309] -- Otherwise (sps_bdof_enabled_flag is equal to 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.
[0310] ph_disable_dmvr_flag being equal to 1 specifies that inter - bidirectional prediction based on decoder motion vector refinement is disabled in the slices associated with PH. ph_disable_dmvr_flag being equal to 0 specifies that inter - bidirectional prediction based on decoder motion vector refinement may or may not be enabled in the slices associated with PH.
[0311] When ph_disable_dmvr_flag is absent, the following applies:
[0312] -- If sps_dmvr_enabled_flag is equal to 1, the value of ph_disable_dmvr_flag is inferred to be equal to 0.
[0313] -- Otherwise (sps_dmvr_enabled_flag is equal to 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[0314] ph_disable_prof_flag being equal to 1 specifies that prediction refinement of optical flow is disabled in the slices associated with PH. ph_disable_prof_flag being equal to 0 specifies that prediction refinement of optical flow may or may not be enabled in the slices associated with PH.
[0315] When ph_disable_prof_flag is absent, the following applies:
[0316] -- If sps_affine_prof_enabled_flag is equal to 1, the value of ph_disable_prof_flag is inferred to be equal to 0.
[0317] -- Otherwise (sps_affine_prof_enabled_flag is equal to 0), the value of ph_disable_prof_flag is inferred to be equal to 1.
[0318] ph_qp_delta specifies the initial value of Qp Y for the coded - decoding blocks in the picture until it is modified by the value of CuQpDeltaVal in the coding unit layer.
[0319] When qp_delta_info_in_ph_flag is equal to 1, the initial value of the quantization parameter SliceQpY for all slices of the picture Y is derived as follows:
[0320] SliceQp Y= 26 + init_qp_minus26 + ph_qp_delta(89)
[0321] SliceQp Y shall be in the range of -QpBdOffset to +63 (inclusive).
[0322] ph_joint_cbcr_sign_flag specifies whether the co-located residual samples of the two chrominance components have inverted signs in the transform unit where tu_joint_cbcr_residual_flag[x0][y0] equals 1. When tu_joint_cbcr_residual_flag[x0][y0] equals 1 for the transform unit, ph_joint_cbcr_sign_flag equals 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 equals 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.
[0323] ph_sao_luma_enabled_flag equals 1 specifies that SAO is enabled for the luma component in all slices related to PH; ph_sao_luma_enabled_flag equals 0 specifies that SAO for the luma component can be disabled for one, more than one, or all slices related to PH. When ph_sao_luma_enabled_flag is absent, it is inferred to be equal to 0.
[0324] ph_sao_chroma_enabled_flag equals 1 specifies that SAO is enabled for the chrominance component in all slices associated with PH; ph_sao_chroma_enabled_flag equals 0 specifies that SAO for the chrominance component can be disabled for one, more than one, or all slices associated with PH. When ph_sao_chroma_enabled_flag is absent, it is inferred to be equal to 0.
[0325] ph_dep_quant_enabled_flag equals 0 specifies that the related quantization is disabled for the current picture. ph_dep_quant_enabled_flag equals 1 specifies that the related quantization is enabled for the current picture. When ph_dep_quant_enabled_flag is absent, it is inferred to be equal to 0.
[0326] The pic_sign_data_hiding_enabled_flag being equal to 0 specifies that sign bit hiding is disabled for the current picture. The pic_sign_data_hiding_enabled_flag being equal to 1 specifies that sign bit hiding is enabled for the current picture. When the pic_sign_data_hiding_enabled_flag does not exist, it is inferred to be equal to 0.
[0327] The ph_deblocking_filter_override_flag being equal to 1 specifies that the deblocking parameters exist in the PH. The ph_deblocking_filter_override_flag being equal to 0 specifies that the deblocking parameters do not exist in the PH. When it does not exist, the value of the ph_deblocking_filter_override_flag is inferred to be equal to 0.
[0328] The ph_deblocking_filter_disabled_flag being equal to 1 specifies that the operation of the deblocking filter does not apply to the slices associated with the PH. The ph_deblocking_filter_disabled_flag being equal to 0 specifies that the operation of the deblocking filter applies to the slices associated with the PH. When the ph_deblocking_filter_disabled_flag does not exist, it is inferred to be equal to the pps_deblocking_filter_disabled_flag.
[0329] The ph_beta_offset_div2 and ph_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the luma component of the slices associated with the PH. The values of both ph_beta_offset_div2 and ph_tc_offset_div2 should be in the range of -12 to 12 (including the end values). When they do not exist, 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.
[0330] ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cb component of the PH-related slices. The values of both ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). When not present, the values of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are inferred to be equal to pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 respectively.
[0331] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2), which are applied to the Cr component of the PH-related slices. The values of both ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 shall be in the range of -12 to 12 (including the end values). When 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.
[0332] ph_extension_length specifies the length of the PH extension data in bytes, excluding the bits used to signal ph_extension_length itself. The value of ph_extension_length shall be in the range of 0 to 256 (including the end values). When not present, the value of ph_extension_length is inferred to be equal to 0.
[0333] ph_extension_data_byte can be any value. Decoders compliant with this version of the specification shall ignore the value of ph_extension_data_byte. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.
[0334] 3.3. SH Syntax and Semantics
[0335] In the latest VVC draft text, the SH syntax and semantics are as follows:
[0336]
[0337]
[0338]
[0339]
[0340] The variable CuQpDeltaVal that specifies the difference between the luma quantization parameter of the coding / decoding unit containing cu_qp_delta_abs and its prediction is set to be equal to 0. It is specified that when determining the Qp′ Cb 、Qp′ Cr and Qp′ CbCr the variables CuQpOffset of the values to be used for the respective values of the quantization parameters, Cb 、CuQpOffset Cr and CuQpOffset CbCr are all set to be equal to 0.
[0341] picture_header_in_slice_header_flag being equal to 1 specifies that the PH syntax structure exists in the slice header. picture_header_in_slice_header_flag being equal to 0 specifies that the PH syntax structure does not exist in the slice header.
[0342] The requirement for bitstream consistency is that in all coded / decoded slices in the CLVS, the value of picture_header_in_slice_header_flag should be the same.
[0343] When picture_header_in_slice_header_flag is equal to 1 for a coded / decoded slice, the requirement for bitstream consistency is that there should be no VCL NAL unit with nal_unit_type equal to PH_NUT in the CLVS.
[0344] When picture_header_in_slice_header_flag is equal to 0, all coded / decoded slices in the current picture should have picture_header_in_slice_header_flag equal to 0, and the current PU should have a PH NAL unit.
[0345] The 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 to be equal to 0. The length of slice_subpic_id is sps_subpic_id_len_minus1 + 1 bits.
[0346] The slice_address specifies the slice address of the slice. When it does not exist, the value of slice_address is inferred to be equal to 0. When rect_slice_flag is equal to 1 and NumSlicesInSubpic[CurrSubpicIdx] is equal to 1, the value of slice_address is inferred to be equal to 0.
[0347] If rect_slice_flag is equal to 0, the following applies:
[0348] -- The slice address is the raster scan slice index.
[0349] -- The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0350] -- The value of slice_address shall be in the range of 0 to NumTilesInPic – 1 (inclusive).
[0351] Otherwise (rect_slice_flag is equal to 1), the following applies:
[0352] -- The slice address is the sub-picture level slice index of the slice.
[0353] -- The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.
[0354] -- The value of slice_address shall be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx] – 1 (inclusive).
[0355] The requirements for bitstream conformance are to apply the following constraints:
[0356] -- If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address shall not be equal to the value of slice_address of any other coded slice NAL unit of the same coded picture.
[0357] -- Otherwise, a pair of slice_subpic_id and slice_address values shall not be equal to a pair of slice_subpic_id and slice_address values of any other coded slice NAL unit of the same coded picture.
[0358] -- The shape of the slices of a picture shall be such that when each CTU is decoded, its entire left boundary and its entire top boundary shall be formed by the picture boundary or by the boundaries of previously decoded CTU(s).
[0359] sh_extra_bit[i] may be equal to 1 or 0. A decoder compliant with this version of the specification shall ignore the value of sh_extra_bit[i]. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.
[0360] num_tiles_in_slice_minus1 plus 1 (if present) specifies the number of tiles in the slice. The value of num_tiles_in_slice_minus1 shall be in the range of 0 to NumTilesInPic – 1 (inclusive).
[0361] The variable NumCtusInCurrSlice specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i] for i ranging from 0 to NumCtusInCurrSlice – 1 (inclusive) specifies the picture raster scan address of the i-th CTB within the slice, derived as follows:
[0362]
[0363]
[0364] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos,
[0365]
[0366] slice_type specifies the coding type of the slice according to Table 9.
[0367] Table 9 – Association with the names of slice_type
[0368] slice_type Name of slice_type 0 B (B-slice) 1 P (P-slice) 2 I (I-slice)
[0369] When it does not exist, the value of slice_type is inferred to be equal to 2.
[0370] 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 from IDR_W_RADL to CRA_NUT (including the end values), and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.
[0371] The derivation of the variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC is as follows:
[0372] -- If slice_type is equal to 2 (I), then the following applies:
[0373] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_luma (119)
[0374] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_chroma (120)
[0375] MaxBtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_intra_slice_luma) (121)
[0376] MaxBtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_intra_slice_chroma) (122)
[0377] MaxTtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma) (123)
[0378] MaxTtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma) (124)
[0379] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma (125)
[0380] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma (126)
[0381] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice (127)
[0382] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice(128)
[0383] -- Otherwise (slice_type is equal to 0 (B) or 1 (P)), the following applies:
[0384] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(129)
[0385] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice(130)
[0386] MaxBtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice) (131)
[0387] MaxBtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice) (132)
[0388] MaxTtSizeY = 1 << (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice) (133)
[0389] MaxTtSizeC = 1 << (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_inter_slice) (134)
[0390] MaxMttDepthY = ph_max_mtt_hierarchy_depth_inter_slice (135)
[0391] MaxMttDepthC = ph_max_mtt_hierarchy_depth_inter_slice (136)
[0392] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (137)
[0393] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice(138)
[0394] -- The following applies:
[0395] MinQtSizeY = 1 << MinQtLog2SizeY (139)
[0396] MinQtSizeC = 1 << MinQtLog2SizeC (140)
[0397] MinBtSizeY = 1 << MinCbLog2SizeY (141)
[0398] MinTtSizeY = 1 << MinCbLog2SizeY (142)
[0399] When slice_alf_enabled_flag equals 1, it specifies that the adaptive loop filter is enabled and can be applied to the Y, Cb, or Cr color components in the slice. When slice_alf_enabled_flag equals 0, it specifies that the adaptive loop filter is disabled for all color components in the slice. When not present, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.
[0400] slice_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slice. When slice_alf_enabled_flag equals 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.
[0401] 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] should be less than or equal to the TemporalId of the coded slice NAL unit. When slice_alf_enabled_flag equals 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].
[0402] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] should be equal to 1.
[0403] A slice_alf_chroma_idc equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. A slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. A slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. A slice_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to 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.
[0404] slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS that the chroma component of the slice refers to. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the coded 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.
[0405] The value of alf_chroma_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_chroma shall be equal to 1.
[0406] A slice_cc_alf_cb_enabled_flag equal to 0 specifies that the cross-component filter is not applied to the Cb color component. A slice_cc_alf_cb_enabled_flag equal to 1 indicates that the cross-component filter is enabled and can be applied to the Cb color component. When slice_cc_alf_cb_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cb_enabled_flag.
[0407] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id that the Cb color component of the slice references.
[0408] The TemporalId of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 1 and slice_cc_alf_cb_aps_id does not exist, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id.
[0409] The value of alf_cc_cb_filter_signal_flag of the APS NAL unit where aps_params_type is equal to ALF_APS and adaptation_parameter_set_id is equal to slice_cc_alf_cb_aps_id shall be equal to 1.
[0410] slice_cc_alf_cr_enabled_flag being equal to 0 specifies that the cross-component filter is not applied to the Cr color component. slice_cc_alf_cb_enabled_flag being equal to 1 indicates that the cross-component adaptive loop filter is enabled and may be applied to the Cr color component. When slice_cc_alf_cr_enabled_flag does not exist, it is inferred to be equal to ph_cc_alf_cr_enabled_flag.
[0411] The slice_cc_alf_cr_aps_id refers to the adaptation_parameter_set_id that the Cr color component of the slice references. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id should be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id does not exist, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[0412] The alf_cc_cr_filter_signal_flag value of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id should be equal to 1.
[0413] 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 should be in the range of 0 to 2 (inclusive of the end values). The 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.
[0414] Note 1 – There is no dependency between the decoding processes of different colour planes of a picture.
[0415] num_ref_idx_active_override_flag equal to 1 specifies that the syntax element num_ref_idx_active_minus1[0] exists in P and B slices, and the syntax element num_ref_idx_active_minus1[1] exists 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] do not exist. When not present, the value of num_ref_idx_active_override_flag is inferred to be equal to 1.
[0416] num_ref_idx_active_minus1[i] is used to derive the variable NumRefIdxActive[i], as specified by Formula 143. The value of num_ref_idx_active_minus1[i] shall be in the range of 0 to 14 (including the end values).
[0417] 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] does not exist, num_ref_idx_active_minus1[i] is inferred to be equal to 0.
[0418] When the current slice is a P slice, num_ref_idx_active_override_flag is equal to 1, and num_ref_idx_active_minus1[0] does not exist, num_ref_idx_active_minus1[0] is inferred to be equal to 0.
[0419] The derivation of the variable NumRefIdxActive[i] is as follows:
[0420]
[0421] 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.
[0422] When the current slice is a P slice, the value of NumRefIdxActive[0] shall be greater than 0.
[0423] When the current slice is a B slice, both NumRefIdxActive[0] and NumRefIdxActive[1] shall be greater than 0.
[0424] cabac_init_flag specifies the method used to determine the initialization table during the initialization process of context variables. When cabac_init_flag does not exist, it is inferred to be equal to 0.
[0425] A value of 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. A value of 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.
[0426] 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:
[0427] -- If rpl_info_in_ph_flag is equal to 1, then slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag.
[0428] -- 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.
[0429] slice_collocated_ref_idx specifies the reference index of the collocated picture used for temporal motion vector prediction.
[0430] When slice_type is equal to P or when slice_type is equal to B and slice_collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to an entry in reference picture list 0, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0] – 1 (inclusive).
[0431] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to an entry in reference picture list 1, and the value of slice_collocated_ref_idx should be in the range of 0 to NumRefIdxActive[1] – 1 (inclusive).
[0432] When slice_collocated_ref_idx is not present, the following applies:
[0433] -- If rpl_info_in_ph_flag is equal to 1, then it is inferred that the value of slice_collocated_ref_idx is equal to ph_collocated_ref_idx.
[0434] -- Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[0435] The requirement for bitstream consistency is that the picture referenced by slice_collocated_ref_idx should be the same for all slices of the coded picture.
[0436] The requirement for bitstream consistency is that the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture referenced by slice_collocated_ref_idx should be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples of the current picture respectively, and RprConstraintsActive[slice_collocated_from_l0_flag? 0:1][slice_collocated_ref_idx] should be equal to 0.
[0437] slice_qp_delta specifies the initial value of Qp Y for the coded blocks in the slice until it is modified by the value of CuQpDeltaVal in the coded unit layer.
[0438] When qp_delta_info_in_ph_flag is equal to 0, the initial value of the quantization parameter SliceQp Y for the slice is derived as follows: Y SliceQp
[0439] SliceQp Y = 26 + init_qp_minus26 + slice_qp_delta (144)
[0440] SliceQp Y should be in the range of -QpBdOffset to +63 (including the end values).
[0441] When any of the following conditions is true:
[0442] -- 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.
[0443] -- 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.
[0444] The following applies:
[0445] -- The value of NumRefIdxActive[0] shall be less than or equal to the value of NumWeightsL0.
[0446] – For each reference picture index RefPicList[0][i] where i ranges from 0 to NumRefIdxActive[0]−1 (inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL0[i], ChromaWeightL0[0][i], and ChromaWeightL0[1][i], respectively.
[0447] 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:
[0448] -- The value of NumRefIdxActive[1] shall be less than or equal to the value of NumWeightsL1.
[0449] – For each reference picture index RefPicList[1][i] where i ranges from 0 to NumRefIdxActive[1]−1 (inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL1[i], ChromaWeightL1[0][i], and ChromaWeightL1[1][i], respectively.
[0450] slice_cb_qp_offset specifies in determining Qp′ CbThe difference to be added to the value of pps_cb_qp_offset when quantizing the quantization parameter value. The value of slice_cb_qp_offset shall be in the range of -12 to +12 (including the end values). When slice_cb_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_cb_qp_offset + slice_cb_qp_offset shall be in the range of -12 to +12 (including the end values).
[0451] slice_cr_qp_offset specifies the difference to be added to the value of pps_cr_qp_offset when determining Qp′ Cr The difference to be added to the value of pps_cr_qp_offset when quantizing the quantization parameter value. The value of slice_cr_qp_offset shall be in the range of -12 to +12 (including the end values). When slice_cr_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_cr_qp_offset + slice_cr_qp_offset shall be in the range of -12 to +12 (including the end values).
[0452] slice_joint_cbcr_qp_offset specifies the difference to be added to the value of pps_joint_cbcr_qp_offset_value when determining the value of Qp′ CbCr The difference to be added to the value of pps_joint_cbcr_qp_offset_value when quantizing the quantization parameter value. The value of slice_joint_cbcr_qp_offset shall be in the range of -12 to +12 (including the end values). When slice_joint_cbcr_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_joint_cbcr_qp_offset_value + slice_joint_cbcr_qp_offset shall be in the range of -12 to +12 (including the end values).
[0453] cu_chroma_qp_offset_enabled_flag being equal to 1 specifies that cu_chroma_qp_offset_flag may exist in the transform unit and palette coding / decoding syntax. cu_chroma_qp_offset_enabled_flag being equal to 0 specifies that cu_chroma_qp_offset_flag does not exist in the transform unit or palette coding / decoding syntax. When it does not exist, the value of cu_chroma_qp_offset_enabled_flag is inferred to be equal to 0.
[0454] When slice_sao_luma_flag equals 1, SAO is specified to be enabled for the luma component in the current slice; when slice_sao_luma_flag equals 0, SAO is specified to be disabled for the luma component in the current slice. When slice_sao_luma_flag does not exist, it is inferred to be equal to ph_sao_luma_enabled_flag.
[0455] When slice_sao_chroma_flag equals 1, SAO is specified to be enabled for the chroma component in the current slice; when slice_sao_chroma_flag equals 0, SAO is specified to be disabled for the chroma component in the current slice. When slice_sao_chroma_flag does not exist, it is inferred to be equal to ph_sao_chroma_enabled_flag.
[0456] When slice_deblocking_filter_override_flag equals 1, it is specified that the deblocking parameters exist in the slice header. When slice_deblocking_filter_override_flag equals 0, it is specified that the deblocking parameters do not exist in the slice header. When it does not exist, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.
[0457] When slice_deblocking_filter_disabled_flag equals 1, it is specified that the operation of the deblocking filter is not applied to the current slice. When slice_deblocking_filter_disabled_flag equals 0, it is specified that the operation of applying the deblocking filter to the current slice. When slice_deblocking_filter_disabled_flag does not exist, it is inferred to be equal to ph_deblocking_filter_disabled_flag.
[0458] slice_beta_offset_div2 and slice_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the luma component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall each be in the range of -12 to 12, inclusive. When absent, 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.
[0459] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the Cb component of the current slice. The values of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 shall each be in the range of -12 to 12, inclusive. When absent, 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.
[0460] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for β and tC (divided by 2) applied to the Cr component of the current slice. The values of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 shall each be in the range of -12 to 12, inclusive. When absent, 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.
[0461] When slice_ts_residual_coding_disabled_flag equals 1, it specifies that the residual_coding() syntax structure is used to parse the residual samples of the transform skip blocks of the current slice. When slice_ts_residual_coding_disabled_flag equals 0, it specifies that the residual_ts_coding() syntax structure is used to parse the residual samples of the transform skip blocks of the current slice. When slice_ts_residual_coding_disabled_flag is absent, it is inferred to be equal to 0.
[0462] When slice_lmcs_enabled_flag equals 1, it specifies that the luminance mapping with chroma scaling is enabled for the current slice. When slice_lmcs_enabled_flag equals 0, it specifies that the luminance mapping with chroma scaling is not enabled for the current slice. When slice_lmcs_enabled_flag is absent, it is inferred to be equal to 0.
[0463] When slice_scaling_list_present_flag equals 1, it specifies that the scaling list data for the current slice is derived based on the scaling list data included in the reference scaling list APS, where aps_params_type equals SCALING_APS and adaptation_parameter_set_id equals ph_scaling_list_aps_id. When slice_scaling_list_present_flag equals 0, it specifies that the scaling list data for the current picture is the default scaling list data specified in Clause 7.4.3.21. When absent, the value of slice_scaling_list_present_flag is inferred to be equal to 0.
[0464] The variable NumEntryPoints specifies the number of entry points in the current slice, which is derived as follows:
[0465]
[0466] offset_len_minus1 plus 1 specifies the length (in bits) of the entry_point_offset_minus1[i] syntax element. The value of offset_len_minus1 shall be in the range of 0 to 31 (inclusive of the end values).
[0467] entry_point_offset_minus1[i] + 1 specifies the i-th entry point offset in bytes and is represented by offset_len_minus1 + 1 bits. The strip data after the strip header consists of NumEntryPoints + 1 subsets, where the subset index values range from 0 to NumEntryPoints (including the end values). The first byte of the strip data is considered byte 0. When present, the emulation prevention bytes that appear in the strip data part of the coded strip NAL unit are counted as part of the strip data for the purpose of subset identification. Subset 0 consists of bytes 0 to entry_point_offset_minus1[0] (including the end values) of the coded strip data, and subset k (where k ranges from 1 to NumEntryPoints - 1 (including the end values)) consists of bytes firstByte[k] to lastByte[k] (including the end values) of the coded strip data, where firstByte[k] and lastByte[k] are defined as:
[0468]
[0469] lastByte[ k ] = firstByte[ k ] + entry_point_offset_minus1[ k ](147)
[0470] The last subset (where the subset index is equal to NumEntryPoints) consists of the remaining bytes of the coded strip data.
[0471] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the strip contains one or more complete slices, each subset shall consist of all the coded bits of all the CTUs in the strip 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 strip.
[0472] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the strip contains a subset of CTU rows from a single slice, NumEntryPoints shall be 0 and the number of subsets shall be 1. This subset shall consist of all the coded bits of all the CTUs in the strip.
[0473] When sps_entropy_coding_sync_enabled_flag is equal to 1, for each subset k where the range of k is from 0 to NumEntryPoints (including the end values), it shall consist of all the coded and decoded bits of all CTUs in the CTU rows within a 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 strip.
[0474] slice_header_extension_length specifies the length of the slice header extension data in bytes, excluding the bits used to signal slice_header_extension_length itself. The value of slice_header_extension_length shall be in the range of 0 to 256 (including the end values). When it is absent, the value of slice_header_extension_length is inferred to be equal to 0.
[0475] slice_header_extension_data_byte[i] can have any value. Decoders compliant with this version of the specification shall ignore the values of all slice_header_extension_data_byte[i] syntax elements. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.
[0476] 4. Examples of Technical Problems Solved
[0477] The existing designs of PPS, PH, and SH syntax have the following problems:
[0478] 1) According to the latest VVC draft text, for any picture in CLVS, if the PH syntax structure is included in the SH instead of the PH NAL unit, then each picture in CLVS has only one slice, and the PH syntax structure of each picture in CLVS is included in the SH instead of the PH NAL unit. In this case, the signaling of the six PPS flags rpl_info_in_ph_flag, dbf_info_in_ph_flag, sao_info_in_ph_flag, alf_info_in_ph_flag, wp_info_in_ph_flag, and qp_delta_info_in_ph_flag in the PPS referred to by the pictures in CLVS is useless.
[0479] 2) According to the latest VVC draft text, when the condition "A & B || C" is satisfied, the syntax element num_ref_idx_active_override_flag in the SH syntax is signaled, where "A" indicates that "rpl_info_in_ph_flag equals 1, or the NAL unit type is not IDR, or sps_idr_rpl_present_flag equals 1", "B" indicates that "slice_type equals P or B, and the number of reference entries in reference picture list 0 is greater than 1", and "C" indicates that "slice_type equals B and the number of reference entries in reference picture list 1 is greater than 1". In this case, when rpl_info_in_ph_flag equals 0, the NAL unit type is IDR, and sps_idr_rpl_present_flag equals 0, but at the same time slice_type equals B, and the number of reference entries in list 1 is greater than 1, the parameters regarding num_ref_idx_active_minus1[0] and num_ref_idx_active_minus1[1] may still be overridden and set to certain numbers; this may lead to unexpected decoder behavior, including decoder crashes.
[0480] 3) The syntax structure ref_pic_list_struct() can be included in the SPS and / or PH or SH. When ref_pic_list_struct() is included in the PH or SH and long_term_ref_pics_flag equals 1, the syntax element ltrp_in_header_flag[][] is signaled in ref_pic_list_struct() to indicate whether the picture order count value of the LTRP entry is signaled by the syntax element rpls_poc_lsb_lt[][][] in ref_pic_list_struct() in the PH / SH or directly by the syntax element poc_lsb_lt[][] in ref_pic_lists() in the PH or SH. However, in this case, the signaling of ltrp_in_header_flag in ref_pic_list_struct() is meaningless because the LTRP POC information will be signaled in the picture header rather than in the SPS.
[0481] 4) The syntax structure ref_pic_lists() shall be included in PH or SH. When ref_pic_lists() is included in SH, the reference picture information of both reference picture list 0 and reference picture list 1 is always signaled, even if slice_type equals P. In this case (when ref_pic_lists() is included in SH and slice_type = P), the signaling of the reference picture list 1 reference information (e.g., rpl_sps_flag[1], rpl_idx[1], poc_lsb_lt[1][j], delta_poc_msb_present_flag[1][j], delta_poc_msb_cycle_lt[1][j], where j ranges from 0 to NumLtrpEntries[1][RplsIdx[1]-1 (including the end values)) in ref_pic_lists() of P slices becomes useless.
[0482] 5. Example Techniques and Embodiments
[0483] To address the above problems and some other unmentioned problems, the methods summarized in the following list are disclosed. These items should be considered as examples for explaining general concepts and should not be construed in a narrow manner. Additionally, these items can be used alone or in any combination.
[0484] 1. To address the first problem, the indication of whether to signal a certain piece of information should be present in PH or SH (e.g., rpl_info_in_ph_flag, dbf_info_in_ph_flag, sao_info_in_ph_flag, alf_info_in_ph_flag, wp_info_in_ph_flag, and qp_delta_info_in_ph_flag in PPS) and / or the presence of the picture header syntax structure in the slice header (e.g., picture_header_in_slice) may depend on the indication of whether each picture in CLVS has only one slice.
[0485] 1) When there is an indication that each picture in CLVS has only one slice, for CLVS where each picture has only one slice, there is no need to signal the indication of the presence of certain information in PH or SH (e.g., one or more of the 6 PPS flags), because in this case, PH is in SH.
[0486] a. In one example, the indication of whether each picture of the reference PPS has only one slice can be signaled in the PPS.
[0487] i. Alternatively, in the PPS, a signaling notification may indicate whether each picture of the reference PPS has only one intra slice.
[0488] ii. Alternatively, in the PPS, a signaling notification may indicate whether each picture of the reference PPS has only one inter slice.
[0489] b. In one example, the indication may be a flag in the PPS, such as named pps_one_slice_per_picture_flag. Alternatively, additionally, the flag equal to 1 specifies that each picture of the reference PPS has only one slice, and the flag equal to 0 specifies that each picture of the reference PPS has one or more slices.
[0490] i. Alternatively, the indication may not be signaled, but rather inferred from the signaled slice partitioning information. For example, the PPS syntax element num_slices_in_pic_minus1 equals 0 (signaled or inferred, in either case, the value of rect_slice_flag will equal 1 because when rect_slice_flag equals 0, num_slices_in_pic_minus1 is not signaled and its value is not inferred). Thus, when rect_slice_flag equals 1, pps_one_slice_per_picture_flag equals 1 is equivalent to num_slices_in_pic_minus1 equals 0. The disadvantage of this alternative method is that it does not cover the case when rect_slice_flag equals 0, while the method using pps_one_slice_per_picture_flag applies to both cases when rect_slice_flag equals 0 and rect_slice_flag equals 1.
[0491] ii. Additionally, in one example, when sps_num_subpics_minus1 is greater than 0, the value of pps_one_slice_per_picture_flag needs to equal 0.
[0492] iii. Furthermore, for all PPSs referred to by pictures in CLVS, the flag may be required to be the same.
[0493] iv. Additionally, when the value of one_slice_per_pic_constraint_flag equals 1, the flag may be required to equal 1.
[0494] v. Additionally, the semantics of one_slice_per_pic_constraint_flag are updated by adding that when one_slice_per_pic_constraint_flag equals 1, pps_one_slice_per_picture_flag should also equal 1.
[0495] vi. When it is known from the PPS that there is only one slice per picture (e.g., sps_num_subpics_minus1 is 0) and each slice contains only one strip (in which case it can be known that each picture contains only one strip), the signaling of this flag in the PPS can be skipped.
[0496] c. When this indication indicates that each picture contains only one strip (e.g., pps_one_slice_per_picture_flag equals 1), the signaling of the indication of some information present in the PH or SH (e.g., 6 PPS flags) can be skipped.
[0497] i. Additionally, when pps_one_slice_per_picture_flag equals 1, the values of all 6 flags are inferred to be equal to 0.
[0498] Note that for at least some parameters, such as those related to RPL (e.g., co-located picture and weighted prediction parameters), it is better to infer them as 0 (better than inferring them as 1) because the number of active entries is known for their signaling, and knowing this can make the signaling more optimized.
[0499] 1. Alternatively, additionally, when pps_one_slice_per_picture_flag equals 1, the values of all 6 flags are inferred to be equal to 1.
[0500] 2. Alternatively, when pps_one_slice_per_picture_flag equals 1, additionally, the value of each of the 6 flags other than wp_info_in_ph_flag is inferred to be equal to 1 or 0 regardless of how the other flags are inferred, and for wp_info_in_ph_flag, when rpl_info_in_ph_flag equals 0, the value is inferred to be equal to 0, and when rpl_info_in_ph_flag equals 1, the value is inferred to be 1 or 0 regardless of the values of the other 4 of the 6 flags.
[0501] d. When the indication indicates that each picture contains only one strip (e.g., pps_one_slice_per_picture_flag equals 1), the signaling of picture_header_in_slice_header_flag in the SH syntax can be skipped. For example, by setting the condition of the syntax element to "if(!pps_one_slice_per_picture_flag)" and inferring the value of picture_header_in_slice_header_flag when pps_one_slice_per_picture_flag equals 1.
[0502] e. When pps_one_slice_per_picture_flag equals 1, the signaling of slice_address in the SH syntax can be skipped as follows (the added part is italicized and underlined):
[0503]
[0504] And the following inferences are added:
[0505] f. When pps_one_slice_per_picture_flag equals 1, the signaling of num_tiles_in_slice_minus1 in the SH syntax can be skipped as follows:
[0506]
[0507] And the following inferences are added:
[0508] g. Instead of all the above, do not add the flag pps_one_slice_per_picture_flag, but when the picture_header_in_slice_header_flag of any strip referring to the PPS equals 1, it is required that the values of the six PPS flags equal 0.
[0509] i. This is technically equivalent to adding the following constraint (editorially better) to the semantics of picture_header_in_slice_header_flag: when any of the six PPS flags equals 1, the value of picture_header_in_slice_header_flag should equal 0.
[0510] h. Instead of all the above, the flag pps_one_slice_per_pic_flag is not added, but when one_slice_per_pic_constraint_flag equals 1, the values of the six PPS flags need to equal 0.
[0511] i. Independently of any of the above, the following constraint can be added: when one_slice_per_pic_constraint_flag equals 1, the value of picture_header_in_slice_header_flag should equal 1. Technically equivalently, the semantics of one_slice_per_pic_constraint_flag are updated by adding that one_slice_per_pic_constraint_flag equals 1, and also specifying that picture_header_in_slice_header_flag should equal 1 (for all slices in each OLS to which the PTL syntax structure containing this flag applies).
[0512] j. When pps_one_slice_per_picture_flag equals 1, the signaling of rect_slice_flag in the PPS syntax can be skipped as follows (the added parts are italicized and underlined):
[0513] <![CDATA[if(NumTilesInPic>1 &&!pps_one_slice_per_picture_flag )]]> rect_slice_flag u(1)
[0514] i. And the following inferences are added:
[0515] k. When pps_one_slice_per_picture_flag equals 1, the signaling of single_slice_per_subpic_flag in the PPS syntax can be skipped as follows (the added parts are italicized and underlined):
[0516] <![CDATA[if(rect_slice_flag &&!pps_one_slice_per_picture_flag )]]> single_slice_per_subpic_flag u(1)
[0517] i. And the following inferences are added:
[0518] 1. When pps_one_slice_per_picture_flag is equal to 1, the signaling of loop_filter_cross_slices_enabled_flag in the PPS syntax can be skipped. For example, by setting the syntax element condition to "if(!pps_one_slice_per_picture_flag)" and inferring the value of loop_filter_cross_slices_enabled_flag when pps_one_slice_per_picture_flag is equal to 1.
[0519] m. In one example, an indication of whether each picture in the CLVS has only one strip can be signaled in the SPS associated with the CLVS.
[0520] n. In one example, an indication of whether each picture in the CLVS has only one slice can be signaled in the SPS associated with the CLVS.
[0521] o. When it is indicated that each picture associated with the first PPS has only one strip, one or more syntax elements related to strip partitioning (such as rect_slice_flag, single_slice_per_subpic_flag, num_slices_in_pic_minus1, tile_idx_delta_present_flag, slice_width_in_tiles_minus1, slice_height_in_tiles_minus1, num_exp_slices_in_tile, exp_slice_height_in_ctus_minus1, tile_idx_delta, etc. in JVET-Q2001-vC.) may not be signaled in the first PPS.
[0522] i. In one example, the indication is pps_one_slice_per_picture_flag, which is included in the PPS syntax before the strip signaling syntax, for example, just before rect_slice_flag.
[0523] 1. Additionally, in one example, when pps_one_slice_per_picture_flag is equal to 1 and rect_slice_flag is not signaled, its value is inferred to be equal to 1.
[0524] 2. Additionally, in one example, when pps_one_slice_per_picture_flag equals 1 and single_slice_per_subpic_flag is not signaled, its value is inferred to be equal to 1.
[0525] 3. Additionally, in one example, when pps_one_slice_per_picture_flag equals 1 and num_slices_in_pic_minus1 is not signaled, its value is inferred to be equal to 0.
[0526] p. When it is indicated that each picture associated with the first PPS has only one slice, one or more syntax elements related to strip partitioning (e.g., num_exp_tile_columns_minus1, num_exp_tile_rows_minus1, tile_column_width_minus1, tile_row_height_minus1 in JVET-Q2001-vC.) may not be signaled in the first PPS.
[0527] i. In one example, the indication is pps_one_tile_per_picture_flag, which is included in the PPS syntax before the slice signaling syntax, e.g., just before pps_log2_ctu_size_minus5 (but under the same syntax condition "if(!no_pic_partition_flag)").
[0528] 2. Signaling of the syntax element num_ref_idx_active_override_flag in SH:
[0529] 1) To solve the second problem, the syntax element num_ref_idx_active_override_flag in SH can be signaled by the condition "A & (B || C)", where "A" indicates "rpl_info_in_ph_flag = 1, or the NAL unit type is not equal to IDR, or sps_idr_rpl_present_flag equals 1", and "B" indicates "slice_type equals P or B, and the number of reference entries in reference picture list 0 is greater than 1", and "C" indicates "slice_type equals B, and the number of reference entries in reference picture list 1 is greater than 1".
[0530] a. In one example, the following syntax in PH:
[0531]
[0532] Change to as follows:
[0533]
[0534] 3. To solve the third problem, the following signaling methods for the syntax elements ltrp_in_header_flag[listIdx][rplsIdx] and rpls_poc_lsb_lt[listIdx][rplsIdx][i] in the syntax structure ref_pic_list_struct() are disclosed:
[0535] 1) Whether to signal the syntax elements (e.g., ltrp_in_header_flag and / or rpls_poc_lsb_lt) related to the value of the picture order count for long-term reference in the syntax structure ref_pic_list_struct() can depend on whether the index of the reference picture list (e.g., rplsIdx) is less than the number of ref_pic_list_struct(listIdx,rplsIdx) syntaxes in the SPS (e.g., num_ref_pic_lists_in_sps[listIdx]), as in the second embodiment.
[0536] a. In one example, if the index of the reference picture list is equal to the number of ref_pic_list_struct(listIdx, rplsIdx) syntaxes in the SPS (i.e., rplsIdx is equal to num_ref_pic_lists_in_sps[listIdx]), the syntax elements (e.g., ltrp_in_header_flag) related to the value of the picture order count for long-term reference may not be signaled, and the value of ltrp_in_header_flag is inferred to be equal to 1 or 0.
[0537] 2) Alternatively, whether to signal the syntax elements (e.g., ltrp_in_header_flag and / or rpls_poc_lsb_lt) related to the value of the picture order count for long-term reference in the syntax structure ref_pic_list_struct() can depend on whether the syntax structure ref_pic_list_struct() is included in the SPS, as in the second embodiment.
[0538] a. In one example, if the syntax structure ref_pic_list_struct() is not included in the SPS, the syntax element related to the value of the picture order count for long-term reference (e.g., ltrp_in_header_flag) may not be signaled, and the value of ltrp_in_header_flag is inferred to be equal to 1 or 0.
[0539] 3) Alternatively, instead of signaling ltrp_in_header_flag within ref_pic_list_struct(), it is signaled directly in the SPS, one for each ref_pic_list_struct() in the SPS, for example, as follows:
[0540]
[0541]
[0542]
[0543] And the ref_pic_list_struct(listIdx, rplsIdx) syntax is changed as follows. Deleted text is marked with double brackets (e.g., [[a]] means deleting the character 'a'):
[0544]
[0545] 4) Alternatively, instead of signaling ltrp_in_header_flag within ref_pic_list_struct(), it is signaled directly in the SPS, one for list 0 and one for list 1, for example, as follows:
[0546]
[0547]
[0548] And the ref_pic_lists() syntax is changed as follows:
[0549] if(ltrp_in_header_flag[i][[[RplsIdx[i]]]]) poc_lsb_lt[i][j] u(v)
[0550] And the ref_pic_list_struct(listIdx, rplsIdx) syntax is changed as follows:
[0551]
[0552]
[0553] 5) Alternatively, instead of signaling the ltrp_in_header_flag within ref_pic_list_struct(), it is directly signaled in the SPS, and there is only one, for example, as follows:
[0554]
[0555]
[0556] And the ref_pic_lists() syntax is changed as follows:
[0557] if(ltrp_in_header_flag[[[i][RplsIdx[i]]]]) poc_lsb_lt[i][j] u(v)
[0558] And the syntax of ref_pic_list_struct(listIdx, rplsIdx) is changed as follows:
[0559]
[0560] 6) Alternatively, instead of signaling the ltrp_in_header_flag and rpls_poc_lsb_lt within ref_pic_list_struct(), they are directly signaled in the SPS, and there is a set for each ref_pic_list_struct() in the SPS, for example, as in the second embodiment.
[0561] 7) Alternatively, instead of signaling the ltrp_in_header_flag and rpls_poc_lsb_lt within ref_pic_list_struct(), they are directly signaled in the SPS, and there is a set for each of list 0 and list 1, for example, as in the second embodiment.
[0562] 8) Alternatively, instead of signaling the ltrp_in_header_flag and rpls_poc_lsb_lt within ref_pic_list_struct(), they are directly signaled in the SPS, and there is only one set, for example, as in the second embodiment.
[0563] 4. Signaling of the syntax elements related to the reference pictures in reference picture list 1 in the syntax structure ref_pic_list():
[0564] 1) To solve the fourth problem, is it possible that the signaling in the syntax structure ref_pic_list() of the syntax elements related to the reference information of reference picture list 1 (e.g., rpl_sps_flag[1], rpl_idx[1], poc_lsb_lt[1][j], delta_poc_msb_present_flag[1][j], delta_poc_msb_cycle_lt[1][j], where j ranges from 0 to NumLtrpEntries[1][RplsIdx[1]-1 (including the end values)]) may depend on the variable X (e.g., X = 1 or 2 or depends on the slice type), as in the third embodiment.
[0565] 6. Embodiment
[0566] The following are some example embodiments of some aspects of the present invention summarized in the above section 5, which can be applied to the VVC specification. The changed text is based on the latest VVC text in JVET-Q2001-vC. Most of the relevant parts that have been added or modified are highlighted in italics and underlined, and some deleted parts are marked with double brackets (e.g., [[a]] indicates deleting the character "a").
[0567] First Embodiment
[0568] This is an embodiment of items 1, 1.1, 1.1.a, 1.1.b, 1.1.b.iii, 1.1.b.iv, 1.1.c, 1.1.c.i, 1.1.e, 1.1.f, and 1.1.i summarized in the above section 5.
[0569] 7.3.2.4 Picture Parameter Set RBSP Syntax
[0570]
[0571] 7.4.3.4 Picture Parameter Set RBSP Semantics ...
[0573]
[0574] rpl_info_in_ph_flag being equal to 1 specifies that the reference picture list information exists in the PH syntax structure and does not exist in the slice header of the PPS that does not contain the PH syntax structure. rpl_info_in_ph_flag being equal to 0 specifies that the reference picture list information does not exist in the PH syntax structure and may exist in the slice header of the PPS that does not contain the PH syntax structure.
[0575] The dbf_info_in_ph_flag being equal to 1 specifies that the deblocking filter information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS that does not contain the PH syntax structure. The dbf_info_in_ph_flag being equal to 0 specifies that the deblocking filter information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS that does not contain the PH syntax structure. When it does not exist, the value of the dbf_info_in_ph_flag is inferred to be equal to 0.
[0576] The sao_info_in_ph_flag being equal to 1 specifies that the SAO filter information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS that does not contain the PH syntax structure. The sao_info_in_ph_flag being equal to 0 specifies that the SAO filter information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS that does not contain the PH syntax structure.
[0577] The alf_info_in_ph_flag being equal to 1 specifies that the ALF information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS that does not contain the PH syntax structure. The alf_info_in_ph_flag being equal to 0 specifies that the ALF information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS that does not contain the PH syntax structure.
[0578] The wp_info_in_ph_flag being equal to 1 specifies that the weighted prediction information may exist in the PH syntax structure and does not exist in the slice header that refers to a PPS that does not contain the PH syntax structure. The wp_info_in_ph_flag being equal to 0 specifies that the weighted prediction information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS that does not contain the PH syntax structure. When it does not exist, the value of the wp_info_in_ph_flag is inferred to be equal to 0.
[0579] The qp_delta_info_in_ph_flag being equal to 1 specifies that the QP delta information exists in the PH syntax structure and does not exist in the slice header that refers to a PPS that does not contain the PH syntax structure. The qp_delta_info_in_ph_flag being equal to 0 specifies that the QP delta information does not exist in the PH syntax structure and may exist in the slice header that refers to a PPS that does not contain the PH syntax structure. ...
[0581] 7.3.7.1 General slice header syntax
[0582]
[0583] 7.4.8.1 General slice header semantics ...
[0585] A picture_header_in_slice_header_flag equal to 1 specifies that the PH syntax structure is present in the slice header. A picture_header_in_slice_header_flag equal to 0 specifies that the PH syntax structure is not present in the slice header.
[0586] The requirement for bitstream conformance is that the value of picture_header_in_slice_header_flag should be the same for all decoded and encoded slices in the CLVS.
[0587] When picture_header_in_slice_header_flag is equal to 1 for an encoded or decoded slice, the requirement for bitstream conformance is that no VCL NAL unit with nal_unit_type equal to PH_NUT should be present in the CLVS.
[0588] When picture_header_in_slice_header_flag is equal to 0, all decoded and encoded 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.
[0589]
[0590] slice_subpic_id specifies the subpicture ID of the subpicture containing the slice. If slice_subpic_id is present, the value of the variable CurrSubpicIdx is derived such that SubpicIdVal[CurrSubpicIdx] is equal to slice_subpic_id. Otherwise (slice_subpic_id is not present), CurrSubpicIdx is derived to be equal to 0. The length of slice_subpic_id is sps_subpic_id_len_minus1 + 1 bits.
[0591] The slice_address specifies the slice address of the slice. When it is absent, 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.]]
[0592] If rect_slice_flag is equal to 0, the following applies:
[0593] -- The slice address is the raster scan slice index.
[0594] -- The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0595] -- The value of slice_address shall be in the range of 0 to NumTilesInPic – 1 (inclusive).
[0596] Otherwise (rect_slice_flag is equal to 1), the following applies:
[0597] -- The slice address is the sub - picture level slice index of the slice.
[0598] -- The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.
[0599] -- The value of slice_address shall be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx] – 1 (inclusive).
[0600] The requirements for bitstream conformance are to apply the following constraints:
[0601] -- If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address shall not be equal to the value of slice_address of any other coded slice NAL unit of the same coded picture.
[0602] -- Otherwise, a pair of slice_subpic_id and slice_address values shall not be equal to a pair of slice_subpic_id and slice_address values of any other coded slice NAL unit of the same coded picture.
[0603] -- The shape of the stripes of the picture shall be such that for each CTU during decoding, its entire left boundary and entire top boundary shall be formed by the picture boundary or by the boundaries of previously decoded CTUs (if any).
[0604] sh_extra_bit[i] may be equal to 1 or 0. A decoder compliant with this version of the specification shall ignore the value of sh_extra_bit[i]. Its value does not affect the decoder's compliance with the profiles specified in this version of the specification.
[0605] num_tiles_in_slice_minus1 plus 1 [[, if present,]] specifies the number of slices in the stripe. The value of num_tiles_in_slice_minus1 shall be in the range of 0 to NumTilesInPic–1 (inclusive). ...
[0607] 6.1. Second Embodiment
[0608] This is an embodiment of Items 3.1, 3.1a, 3.2, 3.2a, 3.6, 3.7, and 3.8 summarized in Section 5 of the previous article.
[0609] 6.1.1. Embodiment of Items 3.1 and 3.1a
[0610] In one example, ref_pic_list_struct(listIdx, rplsIdx) is changed as follows:
[0611]
[0612]
[0613] [[ID=�4]]6.1.2. Embodiment of Items 3.2 and 3.2a
[0614] Alternatively, ref_pic_list_struct(listIdx, rplsIdx) is changed as follows:
[0615]
[0616] ltrp_in_header_flag[listIdx][rplsIdx] being equal to 0 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure exists in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure. ltrp_in_header_flag[list idx][rplsIdx] being equal to 1 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure does not exist in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure.
[0617] 6.1.3. Example of Item 3.6
[0618] Alternatively, seq_parameter_set_rbsp() and ref_pic_list_struct() are changed as follows:
[0619]
[0620]
[0621] And the ref_pic_list_struct(listIdx, rplsIdx) syntax is changed as follows:
[0622]
[0623]
[0624] [[ltrp_in_header_flag[listIdx][rplsIdx] being equal to 0 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure exists in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure. ltrp_in_header_flag[list idx][rplsIdx] being equal to 1 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure does not exist in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure.
[0625] rpls_poc_lsb_lt[listIdx][rplsIdx][i] specifies the value of the picture order count modulo MaxPicOrderCntLsb of the picture referred to by the i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure. The length of the rpls_poc_lsb_lt[listIdx][rplsIdx][i] syntax element is log2_max_pic_order_cnt_lsb_minus4 + 4 bits.
[0626] 6.1.4. Example of Item 3.7
[0627] Alternatively, seq_parameter_set_rbsp() and ref_pic_list_struct() are changed as follows:
[0628]
[0629]
[0630]
[0631] And the ref_pic_lists() syntax is changed as follows:
[0632] if(ltrp_in_header_flag[i][[[RplsIdx[i]]]]) poc_lsb_lt[i][j] u(v)
[0633] And the ref_pic_list_struct(listIdx, rplsIdx) syntax is changed as follows:
[0634]
[0635]
[0636] [[ltrp_in_header_flag[listIdx][rplsIdx] being equal to 0 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is present in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure. ltrp_in_header_flag[list idx][rplsIdx] being equal to 1 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is not present in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure.
[0637] rpls_poc_lsb_lt[listIdx][rplsIdx][i] specifies the value of the picture order count modulo MaxPicOrderCntLsb of the picture referred to by the i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure. The length of the rpls_poc_lsb_lt[listIdx][rplsIdx][i] syntax element is log2_max_pic_order_cnt_lsb_minus4 + 4 bits.]]
[0638] 6.1.5. Example of Item 3.8
[0639] Alternatively, seq_parameter_set_rbsp() and ref_pic_list_struct() are changed as follows:
[0640]
[0641]
[0642]
[0643] And ref_pic_lists() sytnax is changed as follows:
[0644] if(ltrp_in_header_flag[[[i][RplsIdx[i]]]]) poc_lsb_lt[i][j] u(v)
[0645] And the ref_pic_list_struct(listIdx, rplsIdx) syntax is changed as follows:
[0646]
[0647] [[ltrp_in_header_flag[listIdx][rplsIdx] being equal to 0 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is present in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure. ltrp_in_header_flag[list idx][rplsIdx] being equal to 1 specifies that the POC LSB of the LTRP entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure is not present in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure.
[0648] rpls_poc_lsb_lt[listIdx][rplsIdx][i] specifies the value of the picture order count modulo MaxPicOrderCntLsb of the picture referred to by the i-th entry in the ref_pic_list_struct(listIdx, rplsIdx) syntax structure. The length of the rpls_poc_lsb_lt[listIdx][rplsIdx][i] syntax element is log2_max_pic_order_cnt_lsb_minus4 + 4 bits.]]
[0649] 6.2. Third Embodiment
[0650] This is an embodiment of item 4.1 summarized in the previous section 5.
[0651] In one example, the syntax structures picture_header_structure(), slice_header(), and ref_pic_lists() are changed as follows:
[0652]
[0653]
[0654]
[0655]
[0656] Figure 1FIG. 1900 is a block diagram of an example video processing system 1900 that can implement the 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 it 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 Network (PON), etc.) and wireless interfaces (such as Wi-Fi or cellular interfaces).
[0657] System 1900 may include a codec component 1904 that can implement the various codec or encoding methods described in this document. The codec component 1904 may reduce the average bit rate of the video from the input 1902 to the output of the codec component 1904 to produce a coded representation of the video. Thus, codec techniques are sometimes referred to as video compression or video transcoding techniques. The output of the codec component 1904 may be stored or transmitted via the connected communication, as represented by component 1906. The stored or communicated bitstream (or coded) representation of the video received at input 1902 may be used by component 3108 to generate pixel values or a displayable video that is sent to the display interface 1910. The process of generating a user-visible video from the bitstream representation is sometimes referred to as video decompression. Additionally, although certain video processing operations are referred to as "codec" operations or tools, it should be understood that codec tools or operations are used at the encoder, and the corresponding decoding tools or operations that invert the results of the codec will be performed by the decoder.
[0658] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB), High-Definition Multimedia Interface (HDMI), or Displayport, etc. Examples of storage interfaces include SATA (Serial Advanced Technology Attachment), PCI, IDE interfaces, etc. The techniques described in this document may be implemented in various electronic devices, such as mobile phones, laptop computers, smartphones, or other devices capable of digital data processing and / or video display.
[0659] Figure 2is a block diagram of a video processing apparatus 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 smart phone, a tablet computer, 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 (multiple) processors 3602 may be configured to implement one or more of the methods described in this document. The (multiple) memories 3604 may be used to store data and code for implementing 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 circuitry. In some embodiments, the hardware 3606 may be partially or fully within the processor 3602, such as a graphics processor.
[0660] Figure 4 is a block diagram illustrating an example video codec system 100 that may utilize the techniques of the present disclosure.
[0661] As Figure 4 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, and the destination device 120 may be referred to as a video decoding device.
[0662] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface 116.
[0663] The video source 112 may include sources 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 bitstream. The bitstream may include a sequence of bits that form a codec representation of the video data. The bitstream may include coded pictures and associated data. A coded picture is a codec representation of a 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 sent directly to the destination device 120 via the I / O interface 116 over a network 130a. The encoded video data may also be stored on a storage medium / server l30b for access by the destination device 120.
[0664] The destination device ⒓0 may include an I / O interface 126, a video decoder 124, and a display device 122.
[0665] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain 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 the 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.
[0666] The video encoder 114 and the video decoder 124 may operate according to video compression standards such as, for example, the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVC) standard, and other current and / or other standards.
[0667] Figure 5 is a block diagram illustrating an example of a video encoder 200, which may be the Figure 4 video encoder 114 in the system 100 illustrated in
[0668] The video encoder 200 may be configured to perform any or all of the techniques of the present disclosure. In an Figure 5 example, the video encoder 200 includes a plurality of functional components. The techniques described in the present disclosure may be shared among the various components of the video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in the present disclosure.
[0669] The functional components of the video encoder 200 may include a splitting 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 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.
[0670] 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 IBC mode, where at least one reference picture is the picture in which the current video block is located.
[0671] In addition, some components such as the motion estimation unit 204 and the motion compensation unit 205 may be highly integrated but are shown separately in the Figure 5 example for purposes of explanation.
[0672] The splitting unit 201 may split a picture into one or more video blocks. The video encoder 200 and the video decoder 300 may support various video block sizes.
[0673] The mode selection unit 203 may select, for example, one of the intra or inter coding modes based on an error result, and provide the resulting intra or inter coded block to the residual generation unit 207 to generate residual block data and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 may select a combined intra and inter prediction (CIIP) mode, where the prediction is based on an inter prediction signal and an intra prediction signal. The mode selection unit 203 may also select the resolution of the motion vector (e.g., sub-pixel or full-pixel accuracy) for a block in the case of inter prediction.
[0674] To perform inter prediction on a current video block, the motion estimation unit 204 may generate motion information for the current video block by comparing one or more reference frames from the buffer 213 with the current video block. The motion compensation unit 205 may determine a predicted video block for the current video block based on motion information from a picture (other than the picture associated with the current video block) from the buffer 213 and decoded samples.
[0675] The motion estimation unit 204 and the motion compensation unit 205 may perform different operations for the current video block, e.g., perform different operations depending on whether the current video block is in an I-slice, a P-slice, or a B-slice.
[0676] In some examples, the motion estimation unit 204 may perform uni-directional prediction of the current video block, and the motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0 or list 1. The motion estimation unit 204 may then generate a reference index indicating the reference picture of list 0 or list 1 that contains the reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, a prediction direction indicator, and the motion vector as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current block based on the reference video block indicated by the motion information of the current video block.
[0677] In other examples, the motion estimation unit 204 may perform bidirectional prediction of the current video block. The motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0 and may also search for another reference video block of the current video block in the reference pictures of list 1. The motion estimation unit 204 may then generate a reference index indicating that the reference picture of list 0 or list 1 contains the reference video block and a motion vector indicating the spatial displacement between the reference video block and the current video block. The motion estimation unit 204 may output the reference index and the motion vector of the current video block as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current video block based on the reference video block indicated by the motion information of the current video block.
[0678] In some examples, the motion estimation unit 204 may output the entire set of motion information for the decoding process of the decoder.
[0679] In some examples, the motion estimation unit 204 may not output the entire set of motion information of the current video. Instead, the motion estimation unit 204 may signal the motion information of the current video block by referring to the motion information of another video block. For example, the motion estimation unit 204 may determine that the motion information of the current video block is similar enough to the motion information of the neighboring video block.
[0680] In one example, the motion estimation unit 204 may indicate in the syntax structure associated with the current video block: indicating to the video decoder 300 that the current video block has a value of the same motion information as another video block.
[0681] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in the syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.
[0682] As discussed above, the video encoder 200 may predictively signal the motion vector. Two examples of predictive signaling techniques that may be implemented by the video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.
[0683] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate prediction data of the current video block based on the decoded samples of other video blocks in the same picture. The prediction data of the current video block may include a predicted video block and various syntax elements.
[0684] The residual generation unit 207 may generate residual data for a current video block by subtracting (e.g., denoted by a minus sign) a (plurality of) predicted video blocks of the current video block from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.
[0685] In other examples, such as in the skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform the subtraction operation.
[0686] The transform processing unit 208 may generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video blocks associated with the current video block.
[0687] After the transform processing unit 208 generates the transform coefficient video blocks associated with the current video block, the quantization unit 209 may quantize the transform coefficient video blocks associated with the current video block based on one or more quantization parameter (QP) values associated with the current video block.
[0688] The inverse quantization unit 210 and the inverse transform unit 211 may apply inverse quantization and inverse transform to the transform coefficient video blocks, respectively, to reconstruct the residual video blocks from the transform coefficient video blocks. The reconstruction unit 212 may add the reconstructed residual video blocks to the corresponding samples of one or more predicted video blocks generated by the prediction unit 202 to produce a reconstructed video block associated with the current block for storage in the buffer 213.
[0689] After the reconstruction unit 212 reconstructs the video block, a loop filtering operation may be performed to reduce blockiness artifacts in the video block.
[0690] The entropy coding unit 214 may receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives data, the entropy coding unit 214 may perform one or more entropy coding operations to generate entropy coded data and output a bitstream including the entropy coded data.
[0691] Figure 6 is a block diagram illustrating an example of a video decoder 300, which may be Figure 4 the video decoder 114 in the system 100 illustrated in
[0692] The video decoder 300 may be configured to perform any or all of the techniques of the present disclosure. In Figure 6 the example of, the video decoder 300 includes a plurality of functional components. The techniques described in the present disclosure may be shared among various components of the video decoder 300. In some examples, a processor may be configured to perform any or all of the techniques described in the present disclosure.
[0693] In Figure 6 example, video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. In some examples, video decoder 300 may perform a decoding process that is generally inverse to the encoding process described with respect to video encoder 200 ( Figure 5 ).
[0694] Entropy decoding unit 301 may retrieve an encoded bitstream. The encoded bitstream may include entropy-encoded decoded video data (e.g., encoded blocks of video data). Entropy decoding unit 301 may decode the entropy-encoded decoded video, and based on the entropy-decoded video data, motion compensation unit 302 may determine motion information including motion vectors, motion vector precision, reference picture list indices, and other motion information. Motion compensation unit 302 may determine such information, for example, by performing AMVP and merge mode.
[0695] Motion compensation unit 302 may generate a motion-compensated block, possibly with interpolation based on an interpolation filter. An identifier of the interpolation filter to be used with sub-pixel precision may be included in a syntax element.
[0696] Motion compensation unit 302 may use the interpolation filter used by video encoder 200 during encoding of a video block to calculate interpolated values of sub-integer pixels of a reference block. Motion compensation unit 302 may determine the interpolation filter used by video encoder 200 based on received syntax information and use the interpolation filter to generate a prediction block.
[0697] Motion compensation unit 302 may use some syntax information to determine: the size of the blocks used to encode the (multiple) frames and / or (multiple) slices of an encoded video sequence, partitioning information describing how each macroblock of a picture of the encoded video sequence is partitioned, a mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the encoded video sequence.
[0698] Intra prediction unit 303 may form a prediction block from spatially adjacent blocks using, for example, an intra prediction mode received in a bitstream. Inverse quantization unit 303 inverse quantizes (i.e., dequantizes) the quantized video block coefficients provided in the bitstream and decoded by entropy decoding unit 301. Inverse transform unit 303 applies an inverse transform.
[0699] The reconstruction unit 306 can sum the corresponding prediction block and the residual block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. As desired, the deblocking filter can also be applied to filter the decoded block to remove the blocking artifacts. The decoded video block is then stored in the buffer 307, which provides reference blocks for subsequent motion compensation / intra prediction and also generates the decoded video for presentation on a display device.
[0700] Next, a list of preferred examples of some embodiments is provided.
[0701] The first set of clauses shows example embodiments of the techniques discussed in the previous section (e.g., item 1).
[0702] 1. A video processing method (e.g., Figure 3 the method 300 depicted in), comprising: performing (302) a conversion between a video having one or more pictures and an encoded / decoded representation of the video, wherein each of the one or more pictures exactly includes one slice; wherein the encoded / decoded representation conforms to format rules; wherein the format rules specify that the picture parameter set flag is excluded from the encoded / decoded representation because the picture exactly has one slice.
[0703] 2. The method according to clause 1, wherein the format rules specify whether to signal an indication of each picture of the reference picture parameter set in the picture parameter set.
[0704] 3. The method according to clause 1, wherein the format rules further specify omitting an indication of a missing picture parameter set flag in the encoded / decoded representation.
[0705] 4. The method according to clause 1, wherein the format rules specify that for a picture that exactly has one slice, the encoded / decoded representation skips signaling a flag indicating the presence of a picture header in the slice header.
[0706] The following clauses show example embodiments of the techniques discussed in the previous section (e.g., item 2).
[0707] 5. A method for video processing, comprising: performing a conversion between a video strip of a video and an encoded / decoded representation of the video, wherein the encoded / decoded representation conforms to format rules, and wherein the format rules specify a first field including an indication of the existence of a second field, the second field identifying, based on a condition, a maximum index of a reference picture for encoding / decoding the video strip; wherein the condition can be expressed as a logical expression "A&(B||C)", where A indicates "rpl_info_in_ph_flag = 1, or the NAL unit type is not equal to IDR, or sps_idr_rpl_present_flag is equal to 1", and "B" indicates "slice_type is equal to P or B, and the number of reference entries in reference picture list 0 is greater than 1", and "C" indicates "slice_type is equal to B, and the number of reference entries in reference picture list 1 is greater than 1", and "&" is a logical "AND" operation, and "||" is a logical "OR" operation.
[0708] The following clauses show example embodiments (e.g., items) of the techniques discussed in the previous chapter.
[0709] 6. A method for video processing, comprising: performing a conversion between a video region of a video and an encoded / decoded representation of the video, wherein the encoded / decoded representation conforms to format rules, and wherein the format rules specify a condition for controlling the use of a syntax element that indicates a picture order count of a long-term reference picture for the conversion of the video region.
[0710] 7. The method according to clause 6, wherein the format rules specify that the syntax element is included in the encoded / decoded representation if and only if the index of the reference picture list is less than the number of reference picture list syntax structures included in the sequence parameter set.
[0711] 8. The method according to clause 6, wherein the format rules specify that the syntax element is included in the encoded / decoded representation if and only if the reference picture list syntax structure is included in the sequence parameter set of the encoded / decoded representation.
[0712] The following clauses show example embodiments (e.g., item 4) of the techniques discussed in the previous chapter.
[0713] 9. A method for video processing, comprising: performing a conversion between a video region of a video and an encoded / decoded representation of the video, wherein the encoded / decoded representation conforms to format rules, and wherein the format rules specify that a reference picture-related syntax structure is included if and only if a variable X is equal to a specific value, where X depends on the slice type of the video region.
[0714] 10. The method according to clause 9, wherein the specific value is equal to 1 or 2.
[0715] 11. The method according to any one of the above clauses, wherein the video region includes a video codec unit.
[0716] 12. The method according to any one of the above clauses, wherein the video region includes video pictures.
[0717] 13. The method according to any one of clauses 1 to 12, wherein the conversion includes encoding the video into a codec representation.
[0718] 14. The method according to any one of clauses 1 to 12, wherein the conversion includes decoding the codec representation to generate pixel values of the video.
[0719] 15. A video decoding device, comprising a processor configured to implement the method according to one or more of clauses 1 to 14.
[0720] 16. A video codec device, comprising a processor configured to implement the method according to one or more of clauses 1 to 14.
[0721] 17. A computer program product having computer code stored thereon, which when executed by a processor causes the processor to implement the method according to any one of clauses 1 to 14.
[0722] 18. The method, device or system described in this document.
[0723] The second set of clauses describes certain features and aspects of the technology disclosed in the previous section (e.g., items 1.1.a to 1.1.f and 1.1.h to 1.1.p in the "Example Technologies and Embodiments" section).
[0724] 1. A method for video processing (e.g., the method 710 as Figure 7A shown), comprising: performing 712 a conversion between a video including one or more pictures and a bitstream of the video; wherein the bitstream conforms to format rules; wherein the format rules specify that one or more syntax elements indicating codec information are selectively included in the picture parameter set of the bitstream in response to whether each picture indicating a reference picture parameter set includes a single strip.
[0725] 2. The method according to clause 1, wherein the one or more syntax elements include six flags indicating whether certain codec syntax elements are included in the picture header syntax structure or directly included in the strip header.
[0726] 3. The method according to clause 2, wherein the six flags include a first flag indicating whether the reference picture list information is included in the picture header syntax structure or directly included in the strip header.
[0727] 4. The method according to clause 3, wherein the formatting rule further specifies that in the case where the first flag does not exist in the picture parameter set, the value of the first flag is inferred to be equal to 0.
[0728] 5. The method according to clauses 2 to 4, wherein the six flags include a second flag, and the second flag indicates whether the deblocking filter information is included in the picture header syntax structure or directly included in the strip header.
[0729] 6. The method according to any one of clause 5, wherein the formatting rule also specifies that in the case where the second flag does not exist in the picture parameter set, the value of the second flag is inferred to be equal to 0.
[0730] 7. The method according to any one of clauses 2 to 6, wherein the six flags include a third flag, and the third flag indicates whether the sample adaptive offset filter information is included in the picture header syntax structure or directly included in the strip header.
[0731] 8. The method according to any one of clause 7, wherein the formatting rule also specifies that in the case where the third flag does not exist in the picture parameter set, the value of the third flag is inferred to be equal to 0.
[0732] 9. The method according to any one of clauses 2 to 8, wherein the six flags include a fourth flag, and the fourth flag indicates whether the adaptive loop filter information is included in the picture header syntax structure or directly included in the strip header.
[0733] 10. The method according to any one of clause 9, wherein the formatting rule further specifies that in the case where the fourth flag does not exist in the picture parameter set, the value of the fourth flag is inferred to be equal to 0.
[0734] 11. The method according to any one of clauses 2 to 10, wherein the six flags include a fifth flag, and the fifth flag indicates whether the weighted prediction information is included in the picture header syntax structure or directly included in the strip header.
[0735] 12. The method according to clause 11, wherein the formatting rule further specifies that in the case where the fifth flag does not exist in the picture parameter set, the value of the fifth flag is inferred to be equal to 0.
[0736] 13. The method according to any one of clauses 2 to 12, wherein the six flags include a sixth flag, and the sixth flag indicates whether the quantization parameter increment information is included in the picture header syntax structure or directly included in the strip header.
[0737] 14. The method according to any one of clause 13, wherein the formatting rule further specifies that in the case where the sixth flag does not exist in the picture parameter set, the value of the sixth flag is inferred to be equal to 0.
[0738] 15. A method according to any one of clauses 1 to 14, wherein at least one flag includes a seventh flag, and the seventh flag indicates whether loop filtering operations across strip boundaries are enabled for pictures of a reference picture parameter set.
[0739] 16. A method according to any one of clause 15, wherein the format rule further specifies that in the case where the seventh flag does not exist in the picture parameter set, the value of the seventh flag is inferred to be equal to 0.
[0740] 17. A method according to any one of clauses 1 to 16, wherein the format rule further specifies that in the case where each picture indicating the reference picture parameter set includes a single strip, one or more syntax elements are omitted.
[0741] 18. A method according to clause 17, wherein the format rule further specifies including an indication indicating whether each picture indicating the reference picture parameter set has only one strip in the picture parameter set.
[0742] 19. A method according to clause 17, wherein the format rule further specifies including an indication indicating whether each picture indicating the reference picture parameter set has only one intra-strip in the picture parameter set.
[0743] 20. A method according to clause 17, wherein the format rule further specifies including an indication indicating whether each picture indicating the reference picture parameter set has only one inter-strip in the picture parameter set.
[0744] 21. A method according to clause 1, wherein the format rule also specifies an indication indicating whether each picture indicating the reference picture parameter set has only one strip, and one strip corresponds to a flag included in the picture parameter set.
[0745] 22. A method according to clause 21, wherein a flag with a value of 1 specifies that each picture of the reference picture parameter set has only one strip, and a flag with a value of 0 specifies that each picture of the reference picture parameter set has more than one strip.
[0746] 23. A method according to clause 21, wherein the format rule also specifies omitting the indication and inferring the indication from strip segmentation information included in the picture parameter set.
[0747] 24. A method according to clause 21, wherein the format rule also specifies that in the case where another indication indicating whether there is only one sub-picture in each picture is greater than 0, the indication is equal to 0.
[0748] 25. The method according to clause 21, wherein the formatting rule further specifies that the flag is the same for all picture parameter sets referenced by one or more pictures in the coded video sequence.
[0749] 26. The method according to clause 21, wherein the formatting rule further specifies that the flag equals 1 when one_slice_per_pic_constraint_flag equals 1.
[0750] 27. The method according to clause 21, wherein the formatting rule further specifies that the semantics of one_slice_per_pic_constraint_flag are updated by specifying that the flag equals 1 by adding one_slice_per_pic_constraint_flag equal to 1.
[0751] 28. The method according to clause 21, wherein the formatting rule further specifies that the flag is omitted when it is known from the picture parameter set that there is only one sub - picture in each picture and each sub - picture contains only one strip.
[0752] 29. The method according to clause 17, wherein the formatting rule further specifies that the values of one or more syntax elements are inferred to be equal to 0 or 1 when each picture indicating a reference picture parameter set includes a single strip.
[0753] 30. The method according to clause 17, wherein one or more syntax elements include an eighth flag (wp_info_in_ph_flag) that indicates whether weighted prediction information is included in the picture header syntax structure, and wherein the formatting rule further specifies that i) when each picture indicating a reference picture parameter set includes a single strip, the values of each other syntax element except wp_info_in_ph_flag are inferred to be equal to 1 or 0, and ii) when the value of a ninth flag (rpl_info_in_ph_flag) that indicates whether reference picture list information is included in the picture header syntax structure equals 0, the value of wp_info_in_ph_flag is inferred to equal 0, and when the value of rpl_info_in_ph_flag equals 1, the value of wp_info_in_ph_flag is inferred to be 1 or 0.
[0754] 31. The method according to clause 1, wherein the formatting rule further specifies that when each picture indicating a reference picture parameter set includes a single strip, the picture header in the strip header flags in the strip header syntax structure is omitted and the value of the picture header is inferred to equal 1.
[0755] 32. The method according to clause 1, wherein the formatting rule further specifies that in the case where each picture indicating a reference picture parameter set includes a single strip, the strip address parameter is omitted in the strip header syntax structure.
[0756] 33. The method according to clause 32, wherein the formatting rule further specifies that in the following cases, the value of the strip address parameter is inferred to be equal to 0: i) each picture indicating a reference picture parameter set includes a single strip, and ii) rect_slice_flag is equal to 0.
[0757] 34. The method according to clause 1, wherein the formatting rule further specifies that in the case where each picture indicating a reference picture parameter set includes a single strip, the parameter indicating the number of slices in the strip is omitted.
[0758] 35. The method according to clause 34, wherein the formatting rule further specifies that in the following cases, the value of the parameter is inferred to be equal to "NumTilesInPic - 1": i) each picture indicating a reference picture parameter set includes a single strip, and ii) rect_slice_flag is equal to 0, where NumTilesInPic indicates the number of slices in the picture.
[0759] 36. The method according to clause 1, wherein the formatting rule further specifies that in the case where one_slice_per_pic_constraint_flag is equal to 1, the values of one or more syntax elements are equal to 0.
[0760] 37. The method according to clause 1, wherein the formatting rule further specifies that in the case where one_slice_per_pic_constraint_flag is equal to 1, the value of the picture header in the strip header flag is equal to 1.
[0761] 38. The method according to clause 1, wherein the formatting rule further specifies that in the case where each picture indicating a reference picture parameter set includes a single strip, rect_slice_flag is omitted.
[0762] 39. The method according to clause 38, wherein the formatting rule further specifies that in the case where each picture indicating a reference picture parameter set includes a single strip, the value of rect_slice_flag is inferred to be equal to 1.
[0763] 40. The method according to clause 1, wherein the formatting rule further specifies that in the case where each picture indicating a reference picture parameter set includes a single strip, single_slice_per_subpic_flag is omitted.
[0764] 41. The method according to Clause 40, wherein the formatting rule further specifies that in the case where each picture indicating the reference picture parameter set includes a single slice, the value of single_slice_per_subpic_flag is inferred to be equal to 1.
[0765] 42. The method according to Clause 1, wherein the formatting rule further specifies that in the case where each picture indicating the reference picture parameter set includes a single slice, loop_filter_cross_slices_enabled_flag is omitted.
[0766] 43. The method according to Clause 42, wherein the formatting rule further specifies that in the case where each picture indicating the reference picture parameter set includes a single slice, the tenth flag in the bitstream is omitted, where the tenth flag specifies whether loop filtering operations across slice boundaries are enabled for the pictures of the reference picture parameter set.
[0767] 44. The method according to Clause 1, wherein the formatting rule further specifies including whether each picture indicating the reference picture parameter set includes a single slice in the sequence parameter set associated with the coded video sequence.
[0768] 45. The method according to Clause 1, wherein the formatting rule further specifies including an indication indicating whether each picture in the coded video sequence has only one slice in the sequence parameter set associated with the coded video sequence.
[0769] 46. The method according to Clause 1, wherein the formatting rule further specifies that in the case where each picture associated with the first picture parameter set has only one slice, one or more slice segmentation related syntax elements are omitted from the first picture parameter set.
[0770] 47. The method according to Clause 1, wherein the formatting rule further specifies that in the case where each picture associated with the first picture parameter set has only one slice, one or more slice segmentation related syntax elements are omitted from the first picture parameter set.
[0771] 48. The method according to any one of Clauses 1 to 47, wherein the conversion includes encoding the video into a bitstream.
[0772] 49. The method according to any one of Clauses 1 to 47, wherein the conversion includes decoding the video from the bitstream.
[0773] 50. The method according to Clauses 1 to 47, wherein the conversion includes generating a bitstream from the video; and the method further includes: storing the bitstream in a non-transitory computer-readable recording medium.
[0774] 51. A video processing apparatus includes a processor configured to implement the method according to any one or more of clauses 1 to 50.
[0775] 52. A method of storing a bitstream of a video includes the method according to any one of clauses 1 to 50, and further includes storing the bitstream into a non-transitory computer-readable recording medium.
[0776] 53. A computer-readable medium storing program code, which when executed, causes a processor to implement the method according to any one or more of clauses 1 to 50.
[0777] 54. A computer-readable medium storing a codec representation or a bitstream representation generated according to any of the above methods.
[0778] 55. A video processing apparatus for storing a bitstream representation, wherein the video processing apparatus is configured to implement the method according to any one or more of clauses 1 to 50.
[0779] The third group of clauses describes certain features and aspects of the technology disclosed in the previous chapter (e.g., item 1.1.g in the "Example Technologies and Embodiments" chapter).
[0780] 1. A method of video processing (e.g., the method 720 as Figure 7B shown), includes: performing 722 conversion between a video including a plurality of pictures and a bitstream of the video, each picture including at least one strip, wherein the bitstream conforms to format rules; wherein the format rules specify that a first flag in the bitstream indicates whether the picture header syntax structure of the picture is included in the strip header of the strip of the picture; and wherein the format rules provide that in response to any one of six flags in a picture parameter set associated with the picture being equal to 1, the first flag is equal to 0.
[0781] 2. The method according to clause 1, wherein the six flags indicate whether certain codec syntax elements are included in the picture header syntax structure or directly included in the strip header.
[0782] 3. The method according to any one of clauses 1 and 2, wherein the six flags include a second flag indicating whether reference picture list information is included in the picture header syntax structure or directly included in the strip header.
[0783] 4. The method according to any one of clauses 1 to 3, wherein the six flags include a third flag indicating whether deblocking filter information is included in the picture header syntax structure or directly included in the strip header.
[0784] 5. The method according to any one of clauses 1 to 4, wherein the six flags include a fourth flag that indicates whether the sample adaptive offset filter information is included in the picture header syntax structure or directly included in the slice header.
[0785] 6. The method according to any one of clauses 1 to 5, wherein the six flags include a fifth flag that indicates whether the adaptive loop filter information is included in the picture header syntax structure or directly included in the slice header.
[0786] 7. The method according to any one of clauses 1 to 6, wherein the six flags include a sixth flag that indicates whether the weighted prediction information is included in the picture header syntax structure or directly included in the slice header.
[0787] 8. The method according to any one of clauses 1 to 7, wherein the six flags include a seventh flag that indicates whether the quantization parameter delta information is included in the picture header syntax structure or directly included in the slice header.
[0788] 9. The method according to any one of clauses 1 to 8, wherein a first flag equal to 0 specifies that the picture header syntax structure does not exist in the slice header.
[0789] 10. The method according to any one of clauses 1 to 9, wherein one of the six flags equal to 1 specifies that the associated information is included in the picture header syntax structure.
[0790] 11. The method according to any one of clauses 1 to 10, wherein the conversion includes encoding the video into a bitstream.
[0791] 12. The method according to any one of clauses 1 to 10, wherein the conversion includes decoding the video from the bitstream.
[0792] 13. The method according to clauses 1 to 10, wherein the conversion includes generating a bitstream from the video, and the method further includes: storing the bitstream in a non-transitory computer-readable recording medium.
[0793] 14. A video processing apparatus, including a processor configured to implement the method according to any one or more of clauses 1 to 13.
[0794] 15. A method for storing a bitstream of a video, including the method according to any one of clauses 1 to 13, and further including storing the bitstream in a non-transitory computer-readable recording medium.
[0795] 16. A computer-readable medium storing program code that, when executed, causes a processor to implement the method according to any one or more of clauses 1 to 13.
[0796] 17. A computer-readable medium storing a bitstream generated according to any of the above methods.
[0797] 18. A video processing apparatus for storing a bitstream, wherein the video processing apparatus is configured to implement the method according to any one or more of clauses 1 to 13.
[0798] The fourth group of clauses describes certain features and aspects of the technology disclosed in the previous chapter (e.g., item 2 in the "Example Technologies and Embodiments" chapter).
[0799] 1. A method for video processing (e.g., method 730 as shown in Figure 7C ), including: performing a 732 conversion between a video including one or more pictures and a bitstream of the video, each picture including at least one strip, wherein the bitstream conforms to format rules, and the format rules specify a first field including an indication of the presence of a second field, and the second field identifies a maximum index of a reference picture for encoding / decoding a strip based on a condition; wherein the condition can be expressed as a logical expression "A&(B||C)", where:
[0800] A indicates that a first flag indicating whether reference picture list information is included in the picture header syntax structure is equal to 1, or the network abstraction layer (NAL) unit type is not equal to the instantaneous decoding refresh (IDR) type, or a second flag indicating whether reference picture list information may exist in the strip header of a strip with an IDR NAL unit type is equal to 1,
[0801] B indicates that the strip type is equal to P or B, and the number of reference entries in reference picture list 0 is greater than 1,
[0802] C indicates that the strip type is equal to B, and the number of reference entries in reference picture list 1 is greater than 1, and
[0803] wherein "&" is a logical "AND" operation, and "||" is a logical "OR" operation.
[0804] 2. The method according to clause 1, wherein the first flag corresponds to rpl_info_in_ph_flag.
[0805] 3. The method according to clause 1, wherein the first flag equal to 1 specifies that the reference picture list information exists in the picture header syntax structure and does not exist in the strip header, and the first flag equal to 0 specifies that the reference picture list information does not exist in the picture header syntax structure and the reference picture list information has a chance to directly exist in the strip header.
[0806] 4. The method according to clause 1, wherein the second flag corresponds to sps_idr_rpl_present_flag.
[0807] 5. The method according to clause 1, wherein the first field corresponds to num_ref_idx_active_override_flag.
[0808] 6. The method according to clause 1, wherein the second field corresponds to num_ref_idx_active_minus1.
[0809] 7. The method according to any one of clauses 1 to 6, wherein the conversion includes encoding the video into a bitstream.
[0810] 8. The method according to any one of clauses 1 to 6, wherein the conversion includes decoding the video from the bitstream.
[0811] 9. The method according to any one of clauses 1 to 6, wherein the conversion includes generating a bitstream from the video; and the method further includes: storing the bitstream in a non-transitory computer-readable recording medium.
[0812] 10. A video processing apparatus, including a processor configured to implement the method according to any one or more of clauses 1 to 9.
[0813] 11. A method of storing a bitstream of a video, including the method according to any one of clauses 1 to 9, and further including storing the bitstream in a non-transitory computer-readable recording medium.
[0814] 12. A computer-readable medium storing program code, which when executed causes a processor to implement the method according to any one or more of clauses 1 to 9.
[0815] 13. A computer-readable medium storing a bitstream generated according to any of the above methods.
[0816] The fifth group of clauses describes certain features and aspects of the technology disclosed in the previous chapter (e.g., items 2 and 3 in the "Example Technologies and Embodiments" chapter).
[0817] 1. A method of video processing (e.g., method 740 as Figure 7D shown), including: performing a conversion between a video and a bitstream of the video, wherein the bitstream conforms to format rules, and wherein the format rules specify conditions for controlling whether or how one or more syntax elements related to the picture order count of long-term reference pictures are included in the reference picture list syntax structure in the bitstream.
[0818] 2. The method according to clause 1, wherein the formatting rule further specifies that in response to the index of the reference picture list being less than the number of reference picture list syntax structures included in the sequence parameter set, one or more syntax elements are included in the reference picture list syntax structure.
[0819] 3. The method according to clause 2, wherein the formatting rule also specifies whether a flag indicating whether one or more syntax elements are included in the reference picture list syntax structure is included in the reference picture list syntax structure.
[0820] 4. The method according to clause 3, wherein the flag corresponds to ltrp_in_header_flag.
[0821] 5. The method according to clause 4, wherein the formatting rule also specifies that when the index of the reference picture list is equal to the number of reference picture list syntax structures in the sequence parameter set, the inclusion of ltrp_in_header_flag in the reference picture list syntax structure is omitted.
[0822] 6. The method according to clause 5, wherein the formatting rule also specifies that when the index of the reference picture list is equal to the number of reference picture list syntax structures in the sequence parameter set, the value of ltrp_in_header_flag is inferred to be equal to 1.
[0823] 7. The method according to clause 1, wherein the formatting rule also specifies that in response to whether the reference picture list syntax structure is included in the sequence parameter set of the bitstream, one or more syntax elements are included in the reference picture list syntax structure.
[0824] 8. The method according to clause 1, wherein the formatting rule further specifies that one or more syntax elements are omitted from the reference picture list syntax structure, and one or more syntax elements are included for each of the reference picture list syntax structure and another reference picture list syntax structure.
[0825] 9. The method according to clause 1, wherein the formatting rule further specifies that one or more syntax elements are omitted from the reference picture list syntax structure, and one or more syntax elements are included for each reference of the picture list.
[0826] 10. The method according to clause 1, wherein the formatting rule further specifies that one or more syntax elements are omitted from the reference picture list syntax structure, and one or more syntax elements are included for the reference picture list syntax structure and another reference picture list syntax structure.
[0827] 11. A method for video processing (e.g., as Figure 7DThe method 740) shown includes: performing 742 a conversion between a video and a bitstream of the video, where the bitstream conforms to formatting rules, and where the formatting rules specify whether a syntax element related to a reference picture in a reference picture list is included in a reference picture list syntax structure.
[0828] 12. The method according to clause 11, wherein the reference picture list is reference picture list 1.
[0829] 13. The method according to clause 11, wherein the formatting rules depend on whether a variable X is equal to a specific value, and wherein X depends on the slice type of a video region.
[0830] 14. The method according to clause 11, wherein the specific value is equal to 1 or 2.
[0831] 15. The method according to any one of the above clauses, wherein the syntax element includes a flag indicating the presence of a reference picture list in a sequence parameter set.
[0832] 16. The method according to any one of the above clauses, wherein the syntax element indicates an index of the reference picture list.
[0833] 17. The method according to any one of the above clauses, wherein the syntax element indicates a value of the least significant bit of a picture order count of a long-term reference picture.
[0834] 18. The method according to any one of the above clauses, wherein the syntax element indicates whether a difference between the most significant bits of the picture order counts of the current picture and a long-term reference picture is included in the bitstream.
[0835] 19. The method according to any one of the above clauses, wherein the syntax element indicates whether a difference between the most significant bits of the picture order counts of the current picture and a long-term reference picture is included in the bitstream.
[0836] 20. The method according to any one of clauses 1 to 19, wherein the conversion includes encoding the video into a bitstream.
[0837] 21. The method according to any one of clauses 1 to 19, wherein the conversion includes decoding the video from the bitstream.
[0838] 22. The method according to clauses 1 to 19, wherein the conversion includes generating a bitstream from the video; and the method further includes: storing the bitstream in a non-transitory computer-readable recording medium.
[0839] 23. A video processing apparatus, including a processor configured to implement the method according to any one or more of clauses 1 to 22.
[0840] 24. A method for storing a bitstream of video, including the method according to any one of clauses 1 to 22, and further including storing the bitstream into a non-transitory computer-readable recording medium.
[0841] 25. A computer-readable medium storing program code, the program code, when executed, causing a processor to implement the method according to any one or more of clauses 1 to 22.
[0842] 26. A computer-readable medium storing a bitstream generated according to any of the above methods.
[0843] 27. A video processing apparatus for storing a bitstream, wherein the video processing apparatus is configured to implement the method according to any one or more of clauses 1 to 22.
[0844] In this document, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, during the conversion from the pixel representation of a video to the corresponding bitstream representation, a video compression algorithm may be applied, and vice versa. As defined by the syntax, the bitstream representation of the current video block may (e.g.) correspond to bits co-located or scattered at different positions within the bitstream. For example, a macroblock may be encoded based on the transform and codec error residual values and also using bits in the header and other fields in the bitstream. Additionally, during the conversion, the decoder may parse the bitstream based on this determination, knowing that some fields may or may not be present, as described in the above solutions. Similarly, the encoder may determine whether to include or exclude certain syntax fields and generate the codec representation accordingly by including or excluding the syntax fields from the codec representation.
[0845] The disclosures and other scenarios, examples, embodiments, modules, and functional operations described in this document can be implemented in digital electronic circuits or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or a combination of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products encoded on a computer-readable medium, such as one or more computer program instruction modules, for execution by, or to control the operation of, a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition affecting a machine-readable propagated signal, or a combination of one or more of them. The term "data processing apparatus" encompasses all apparatuses, devices, and machines for processing data, including, for example, programmable processors, computers, or multiple processors or computers. In addition to hardware, the apparatus can also include code for creating an execution environment for the computer programs under discussion, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical, or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device.
[0846] A computer program (also referred to as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program or as modules, components, subroutines, or other units suitable for use in a computing environment. A computer program does not have to correspond to a file in a file system. The program can be stored in a portion of a file that holds other programs or data (for example, one or more scripts stored in a markup language document), in a single file dedicated to the program under discussion, or in multiple cooperating files (for example, files that store one or more modules, subroutines, or portions of code). A computer program can be deployed to execute on one computer or on multiple computers, which are located at one site or distributed across multiple sites and interconnected by a communication network.
[0847] The processes and logical flows described in this document can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logical flows can also be performed by special-purpose logic circuitry, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC), and the apparatus can be implemented as special-purpose logic circuitry, such as an FPGA or an ASIC.
[0848] Processors suitable for the execution of a computer program include, for example, both general and special purpose microprocessors, as well as any one or more processors of any type of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for performing instructions and one or more memory devices for storing the instructions and data. Generally, a computer will also include one or more mass storage devices (such as magnetic, magneto-optical or optical disks) for storing data, or operatively coupled to receive data from a mass storage device (such as magnetic, magneto-optical or optical disks) or to transfer data to a mass storage device (such as magnetic, magneto-optical or optical disks), or both. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including, for example, semiconductor memory devices (such as EPROM, EEPROM and flash memory devices); magnetic disks (such as internal hard disks or removable disks); magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.
[0849] Although this patent document contains many details, these details should not be construed as limitations on any subject or the scope of what can be claimed, but rather as descriptions of features specific to particular embodiments of a particular technology. In this patent document, certain features described in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, the various features described in the context of a single embodiment may also be implemented separately in multiple embodiments or in various suitable sub-combinations. Additionally, although features may be described as acting in certain combinations and even initially claimed as such, in some cases one or more features from a claimed combination may be removed from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.
[0850] Similarly, although operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all shown operations be performed, to achieve a desired result. Additionally, the separation of various system components in the embodiments described in this patent document should not be understood as required in all embodiments.
[0851] Only a few implementations and examples have been described, and other implementations, enhancements and variations may be made based on what is described and shown in this patent document.
Claims
1. A method for video processing, comprising: Performing a conversion between a video including one or more pictures and a bitstream of the video; Wherein the bitstream conforms to format rules; Wherein the format rules specify that, in response to whether each picture indicating a reference picture parameter set includes a single strip, one or more syntax elements indicating codec information are selectively included in the picture parameter set of the bitstream; Wherein the one or more syntax elements include six flags, and the six flags indicate whether the corresponding codec information is included in the picture header syntax structure or directly included in the strip header, wherein the codec information corresponding to the six flags is reference picture list information, deblocking filter information, sample adaptive offset filter information, adaptive loop filter information, weighted prediction information, and quantization parameter increment information; Wherein the format rules further specify that, in the case of indicating that each picture referring to the picture parameter set includes a single strip, the six flags are omitted, and the values of the six flags are inferred to be equal to 0, wherein the values of the six flags being inferred to be equal to 0 indicate that the corresponding codec information is directly included in the strip header.
2. The method according to claim 1, wherein, The six flags include a first flag, and the first flag is rpl_info_in_ph_flag.
3. The method according to claim 1, wherein The six flags include a second flag, and the second flag is dbf_info_in_ph_flag.
4. The method according to claim 1, wherein, The six flags include a third flag, and the third flag is sao_info_in_ph_flag.
5. The method according to claim 1, wherein The six flags include a fourth flag, and the fourth flag is alf_info_in_ph_flag.
6. The method according to claim 1, wherein, The six flags include a fifth flag, and the fifth flag is wp_info_in_ph_flag.
7. The method according to claim 1, wherein The six flags include a sixth flag, and the sixth flag is qp_delta_info_in_ph_flag.
8. The method according to claim 1, wherein The one or more syntax elements include a seventh flag, and the seventh flag indicates whether loop filtering operations across strip boundaries are enabled for pictures referring to the picture parameter set.
9. The method according to claim 8, wherein The format rules further specify that, in the case of indicating that each picture referring to the picture parameter set includes the single strip, the seventh flag is omitted, and the value of the seventh flag is inferred to be equal to 0, wherein the value of the seventh flag being inferred to be equal to 0 indicates that loop filtering operations across strip boundaries are disabled for the picture parameter set.
10. The method according to any one of claims 1 to 9, wherein The conversion includes encoding the video into the bitstream.
11. The method according to any one of claims 1 to 9, wherein, The conversion includes decoding the video from the bitstream.
12. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: Perform a conversion between a video including one or more pictures and a bitstream of the video; Among them, The bitstream conforms to format rules; Among them, the format rule specifies that, in response to whether each picture indicating a reference picture parameter set includes a single strip, one or more syntax elements indicating coding and decoding information are selectively included in the picture parameter set of the bitstream; Among them, the one or more syntax elements include six flags, and the six flags indicate whether the corresponding coding and decoding information is included in the picture header syntax structure or directly included in the strip header, where the coding and decoding information corresponding to the six flags is reference picture list information, deblocking filter information, sample adaptive offset filter information, adaptive loop filter information, weighted prediction information, and quantization parameter increment information; Among them, the format rule further specifies that the six flags are omitted in the case of indicating that each picture referring to the picture parameter set includes a single strip, and the values of the six flags are inferred to be equal to 0, where the values of the six flags being inferred to be equal to 0 indicate that the corresponding coding and decoding information is directly included in the strip header.
13. The device according to claim 12, wherein, The six flags include a first flag, and the first flag is rpl_info_in_ph_flag.
14. The apparatus according to claim 12, wherein, The six flags include a second flag, and the second flag is dbf_info_in_ph_flag.
15. The apparatus according to claim 12, wherein, The six flags include a third flag, and the third flag is sao_info_in_ph_flag.
16. The device according to claim 12, wherein, The six flags include a fourth flag, and the fourth flag is alf_info_in_ph_flag.
17. The apparatus according to claim 12, wherein The six flags include a fifth flag, and the fifth flag is wp_info_in_ph_flag.
18. The device according to claim 12, wherein, The six flags include a sixth flag, and the sixth flag is qp_delta_info_in_ph_flag.
19. The device according to claim 12, wherein The one or more syntax elements include a seventh flag, and the seventh flag indicates whether loop filtering operations across strip boundaries are enabled for pictures referring to the picture parameter set.
20. The apparatus according to claim 19, wherein, The format rule further specifies that the seventh flag is omitted in the case of indicating that each picture referring to the picture parameter set includes the single strip, and the value of the seventh flag is inferred to be equal to 0, where the value of the seventh flag being inferred to be equal to 0 indicates that the loop filtering operation across strip boundaries is disabled for the picture parameter set.
21. A non-transitory computer-readable storage medium storing instructions, the instructions causing a processor to: Perform conversion between a video including one or more pictures and a bitstream of the video; Among them, The bitstream conforms to the format rule; Among them, the format rule specifies that, in response to whether each picture indicating a reference picture parameter set includes a single strip, one or more syntax elements indicating coding and decoding information are selectively included in the picture parameter set of the bitstream; Among them, the one or more syntax elements include six flags, and the six flags indicate whether the corresponding encoding / decoding syntax element is included in the picture header syntax structure or directly included in the slice header, where the encoding / decoding information corresponding to the six flags is reference picture list information, deblocking filter information, sample adaptive offset filter information, adaptive loop filter information, weighted prediction information, and quantization parameter delta information; Among them, the format rule further specifies that the six flags are omitted in the case where it is indicated that each picture referring to the picture parameter set includes a single slice, and the values of the six flags are inferred to be equal to 0, where the values of the six flags being inferred to be equal to 0 indicate that the corresponding encoding / decoding syntax element is directly included in the slice header.
22. A non-transitory computer-readable recording medium storing a video bitstream generated by a method executed by a video processing apparatus, wherein, The method includes: Generating a bitstream of the video, where the video includes one or more pictures; Among them, the bitstream conforms to the format rule; Among them, the format rule specifies that one or more syntax elements indicating encoding / decoding information are selectively included in the picture parameter set of the bitstream in response to whether it is indicated that each picture referring to the picture parameter set includes a single slice; Among them, the one or more syntax elements include six flags, and the six flags indicate whether the corresponding encoding / decoding information is included in the picture header syntax structure or directly included in the slice header, where the encoding / decoding information corresponding to the six flags is reference picture list information, deblocking filter information, sample adaptive offset filter information, adaptive loop filter information, weighted prediction information, and quantization parameter delta information; Among them, the format rule further specifies that the six flags are omitted in the case where it is indicated that each picture referring to the picture parameter set includes a single slice, and the values of the six flags are inferred to be equal to 0, where the values of the six flags being inferred to be equal to 0 indicate that the corresponding encoding / decoding information is directly included in the slice header.
23. The non-transitory computer-readable recording medium according to claim 22, Among them, The six flags include a first flag, and the first flag is rpl_info_in_ph_flag.
24. The non-transitory computer-readable recording medium according to claim 22, Among them, The six flags include a second flag, and the second flag is dbf_info_in_ph_flag.
25. The non-transitory computer-readable recording medium according to claim 22, Among them, The six flags include a third flag, and the third flag is sao_info_in_ph_flag.
26. The non-transitory computer-readable recording medium according to claim 22, Among them, The six flags include a fourth flag, and the fourth flag is alf_info_in_ph_flag.
27. The non-transitory computer-readable recording medium according to claim 22, Among them, The six flags include a fifth flag, and the fifth flag is wp_info_in_ph_flag.
28. The non-transitory computer-readable recording medium according to claim 22, Among them, The six flags include a sixth flag, and the sixth flag is qp_delta_info_in_ph_flag.
29. The non-transitory computer-readable recording medium according to claim 22, Among them, The one or more syntax elements include a seventh flag, and the seventh flag indicates whether loop filtering operations across strip boundaries are enabled for pictures that refer to the picture parameter set.
30. The non-transitory computer-readable recording medium according to claim 29, Among them, The format rule further specifies that the seventh flag is omitted in the case where it is indicated that each picture referring to the picture parameter set includes the single strip, and the value of the seventh flag is inferred to be equal to 0, where the value of the seventh flag being inferred to be equal to 0 indicates that the loop filtering operation across strip boundaries is disabled for the picture parameter set.
31. A method for storing a bitstream of a video, comprising: generating a bitstream of the video, where the video includes one or more pictures; and storing the bitstream in a non-transitory computer-readable recording medium, where the bitstream conforms to a format rule; where the format rule specifies that one or more syntax elements indicating coding and decoding information are selectively included in the picture parameter set of the bitstream in response to whether it is indicated that each picture referring to the picture parameter set includes a single strip; where the one or more syntax elements include six flags, and the six flags indicate whether the corresponding coding and decoding information is included in the picture header syntax structure or directly included in the strip header, where the coding and decoding information corresponding to the six flags is reference picture list information, deblocking filter information, sample adaptive offset filter information, adaptive loop filter information, weighted prediction information, and quantization parameter increment information; where the format rule further specifies that the six flags are omitted in the case where it is indicated that each picture referring to the picture parameter set includes a single strip, and the values of the six flags are inferred to be equal to 0, where the values of the six flags being inferred to be equal to 0 indicate that the corresponding coding and decoding information is directly included in the strip header.
32. The method according to claim 31, wherein, The six flags include a first flag, and the first flag is rpl_info_in_ph_flag.
33. The method according to claim 31, wherein The six flags include a second flag, and the second flag is dbf_info_in_ph_flag.
34. The method according to claim 31, wherein The six flags include a third flag, and the third flag is sao_info_in_ph_flag.
35. The method according to claim 31, wherein, The six flags include a fourth flag, and the fourth flag is alf_info_in_ph_flag.
36. The method according to claim 31, wherein The six flags include a fifth flag, and the fifth flag is wp_info_in_ph_flag.
37. The method according to claim 31, wherein, The six flags include a sixth flag, and the sixth flag is qp_delta_info_in_ph_flag.
38. The method according to claim 31, wherein, The one or more syntax elements include a seventh flag, and the seventh flag indicates whether loop filtering operations across strip boundaries are enabled for pictures that refer to the picture parameter set.
39. The method according to claim 38, Among them, wherein the formatting rule further specifies that the seventh flag is omitted in the case where each picture indicating reference to the picture parameter set includes the single strip, and the value of the seventh flag is inferred to be equal to 0, wherein the value of the seventh flag being inferred to be equal to 0 indicates that the loop filtering operation across the strip boundary is disabled for the picture parameter set.
40. A video processing apparatus, comprising a processor configured to implement the method according to claim 10 or 11.
41. A non-transitory computer-readable storage medium storing instructions which, when executed, cause a processor to implement the method according to any one of claims 2 to 11.
Citation Information
Patent Citations
Video decoder with signaling
CN104919803A
Image processing device and method
US20160286239A1