Use of general constraint flags in video bitstreams
Through format rules, the video strips and syntax elements are constrained, and the video encoding and decoding process is optimized, which solves the problem of high bandwidth demand in video encoding and decoding technology, improves encoding efficiency, and is suitable for video encoding and decoding standards such as HEVC and VVC.
Patent Information
- Application Number
- CN202180014357.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-02-14
- Filing Date
- 2021-02-10
- Publication Date
- 2025-08-12
- Estimated Expiration
- 2041-02-10
AI Technical Summary
When processing video data, existing video encoding and decoding technologies have problems such as high bandwidth demand and low encoding efficiency, especially in the Internet and digital communication networks. As the number of user equipment increases, bandwidth demand continues to grow.
The video processing method is adopted to constrain the strip type of video strips, the value of syntax elements and the reference index through format rules, disable reference picture resampling, control the boundary operation of sub-pictures, and use constraint flags and syntax elements to optimize the video encoding and decoding process, ensuring the effective conversion of video strips and the applicability of the encoding and decoding tools.
It improves the efficiency of video encoding and decoding, reduces bandwidth requirements, optimizes the transmission and storage of video data, and is suitable for various video encoding and decoding standards and future standards, including HEVC and VVC.
Smart Images

Figure CN115176467B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application is based on International Patent Application No. PCT / CN2021 / 076552, filed on February 10, 2021, which claims priority to and the benefit of International Patent Application No. PCT / CN2020 / 075194, filed on February 14, 2020. All of the above patent applications are hereby incorporated by reference in their entirety. Technical Field
[0003] This patent document relates to picture encoding and decoding as well as video encoding and decoding. Background Art
[0004] Digital video accounts for the largest use of bandwidth on the Internet and other digital communication networks.As the number of connected user devices capable of receiving and displaying video increases, it is expected that the bandwidth demand for digital video usage will continue to grow. Summary of the Invention
[0005] This document discloses techniques that can be used by video encoders and decoders for video processing, where conversion is performed between a codec representation of a video and pixel values of the video.
[0006] In one example aspect, a video processing method is disclosed. The method includes performing conversion between a video including a video picture having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies that a slice type of the video slice determines how certain information from a picture header of the video picture is inherited by a slice header of the video slice.
[0007] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including video pictures having video slices and a bitstream of the video. The bitstream conforms to a format rule that specifies that a slice type of the video slice determines a value of a first syntax element in a video slice header. The first syntax element specifies a reference index of a collocated picture for temporal motion vector prediction.
[0008] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including video pictures having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies disabling reference picture resampling (RPR) for reference pictures in a collocated reference picture list when a slice type of the video slice is P type and temporal motion vector prediction is enabled. The reference picture is indicated by a reference index of a collocated picture of the video slice used for temporal motion vector prediction.
[0009] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including video pictures having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies that a slice type of the video slice excludes type P if a syntax element in a video slice header indicates that the video slice is not collocated with reference picture list 0.
[0010] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video comprising a video picture having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that selectively includes a first syntax element indicating whether to perform an operation across a sub-picture boundary in a codec layer video sequence, responsive to a plurality of sub-pictures in the video picture.
[0011] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including a video picture having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that specifies that a plurality of sub-pictures within the video picture in the bitstream are constrained by a constraint flag in the bitstream.
[0012] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video comprising a video picture having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that specifies that a number of slices in a sub-picture determines a manner in which a syntax element indicating a width of the slice is signaled, wherein the width of the slice is specified as a number of slice columns.
[0013] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including a video picture having one or more sub-pictures and a bitstream of the video according to a format rule, the format rule providing for determining whether each of the one or more sub-pictures in the video picture includes a single slice based on a constraint flag.
[0014] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including video pictures and a bitstream of the video. At least one of the video pictures includes one or more sub-pictures. The bitstream conforms to a format rule that specifies that, to determine an output sub-bitstream for one or more target sub-pictures during a sub-picture sub-bitstream extraction process of the conversion, each target sub-picture across different video pictures uses the same sub-picture index.
[0015] In another example aspect, a video processing method is disclosed. The method includes determining an output sub-bitstream by extracting a sub-bitstream of one or more target sub-pictures from a bitstream of a video including video pictures. At least one of the video pictures includes the one or more sub-pictures, and the output sub-bitstream conforms to a format rule that specifies that the one or more target sub-pictures are represented as a single sub-picture in the output sub-bitstream.
[0016] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including an instantaneous decoding refresh (IDR) picture and a bitstream of the video. The bitstream conforms to a format rule that specifies that one or more syntax elements associated with a reference picture list are present in a slice header of the IDR picture.
[0017] In another exemplary aspect, a video processing method is disclosed. The method includes performing conversion between a video including luma video blocks and chroma video blocks and a bitstream of the video. The luma video blocks are segmented according to a luma segmentation tree, and the chroma video blocks are segmented according to a chroma segmentation tree. The bitstream includes luma block partition information indicating the luma segmentation tree and chroma block partition information indicating the chroma segmentation tree. The bitstream complies with a rule that allows the chroma block partition information to be different from the luma block partition information.
[0018] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video comprising a video picture having one or more sub-pictures and a bitstream of the video. The bitstream conforms to a format rule that specifies that one or more syntax structures are constrained based on a constraint flag of a syntax element comprising general constraint information.
[0019] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video including a video picture having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies how a slice type of the video slice determines how certain information from a picture header of the video picture is inherited by a slice header of the video slice.
[0020] In another exemplary aspect, a video processing method is disclosed. The method includes performing a conversion between a video unit in a video region of a video and a codec representation of the video, wherein the codec representation conforms to a grammatical rule. The rule specifies that a first indicator at a video picture level and a second indicator at a video region level indicate use of a temporal motion vector prediction codec during the conversion. The rule specifies conditions for omitting the first indicator and / or the second indicator in the codec representation.
[0021] In another example aspect, a video processing method is disclosed that includes performing conversion between video units in a video region of a video and a codec representation of the video, wherein the codec representation complies with grammatical rules, wherein the grammatical rules provide for inferring information from a video region-level header to information from a video unit-level header.
[0022] In another example aspect, a video processing method is disclosed that includes performing a conversion between a video unit in a video region of a video comprising a plurality of pictures organized as a layer-by-layer video sequence and a codec representation of the video, wherein one or more fields in the codec representation indicate a plurality of sub-pictures in the video unit.
[0023] In another example aspect, a video processing method is disclosed. The method includes performing conversion between a video unit in a video region of a video comprising a plurality of pictures organized as a layer-by-layer video sequence and a codec representation of the video, wherein the codec representation conforms to a format rule that specifies that a value of a second field indicating a number of sub-pictures in the video unit controls whether the second field indicates applicability of a cross-sub-picture codec for the conversion.
[0024] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between a video unit in a video region of a video comprising a plurality of pictures organized as a layer-by-layer video sequence and a codec representation of the video, wherein the codec representation conforms to a format rule that specifies that a number of sub-pictures per video unit controls a value of a syntax element in the codec representation.
[0025] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between a video unit in a video region of a video comprising a plurality of pictures organized as a layer-by-layer video sequence and a codec representation of the video, wherein the codec representation conforms to a format rule that specifies that a value of a field indicating whether a single video slice is present in the video unit controls codec characteristics of rectangular slices of the video.
[0026] In another example aspect, a video processing method is disclosed that includes performing conversion between video units in a video region of a video comprising a plurality of pictures organized as a layer-wide video sequence and a codec representation of the video, wherein the codec representation conforms to grammatical rules such that extracted sub-pictures across different pictures in the codec representation of the layer-wide video sequence have the same sub-picture index.
[0027] In another example aspect, a video processing method is disclosed that includes performing conversion between a video unit in a video region of a video comprising a plurality of pictures organized as a layer-by-layer video sequence and a codec representation of the video, wherein the codec representation conforms to a grammatical rule, i.e., a sub-bitstream extracted for a sub-picture sub-bitstream conforms to a format of a single sub-picture.
[0028] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between a video unit in a video region of a video comprising a plurality of pictures organized as a layer-by-layer video sequence and a codec representation of the video, wherein the codec representation conforms to a format rule that specifies including one or more constraint flags that control the presence of one or more syntax elements in a syntax structure in the codec representation.
[0029] In yet another exemplary aspect, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the above method.
[0030] In yet another exemplary aspect, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the above method.
[0031] In yet another exemplary aspect, a computer-readable medium having stored thereon code is disclosed. The code is in the form of processor-executable code embodying one of the methods described herein.
[0032] These and other features are described in this document. BRIEF DESCRIPTION OF THE DRAWINGS
[0033] Figure 1 is a block diagram of an example video processing system.
[0034] Figure 2 It is a block diagram of a video processing device.
[0035] Figure 3 is a flow chart of an example method of video processing.
[0036] Figure 4 is a block diagram illustrating a video encoding and decoding system according to some embodiments of the present disclosure.
[0037] Figure 5 is a block diagram illustrating an encoder according to some embodiments of the present disclosure.
[0038] Figure 6 is a block diagram illustrating a decoder according to some embodiments of the present disclosure.
[0039] Figure 7 is a flowchart representation of a video processing method according to the present technology.
[0040] Figure 8 is a flowchart representation of another video processing method according to the present technology.
[0041] Figure 9 is a flowchart representation of another video processing method according to the present technology.
[0042] Figure 10 is a flowchart representation of another video processing method according to the present technology.
[0043] Figure 11 is a flowchart representation of another video processing method according to the present technology.
[0044] Figure 12 is a flowchart representation of another video processing method according to the present technology.
[0045] Figure 13 is a flowchart representation of another video processing method according to the present technology.
[0046] Figure 14 is a flowchart representation of another video processing method according to the present technology.
[0047] Figure 15 is a flowchart representation of another video processing method according to the present technology.
[0048] Figure 16 is a flowchart representation of another video processing method according to the present technology.
[0049] Figure 17 is a flowchart representation of another video processing method according to the present technology.
[0050] Figure 18 is a flowchart representation of another video processing method according to the present technology.
[0051] Figure 19 is a flowchart representation of yet another video processing method according to the present technology. DETAILED DESCRIPTION
[0052] The section headings used in this document are for ease of understanding and do not limit the techniques and embodiments disclosed in each section to only that section. In addition, the use of H.266 terminology in some descriptions is for ease of understanding only and is not intended to limit the scope of the disclosed techniques. As such, the techniques described herein are also applicable to other video codec protocols and designs. In addition, some techniques are described using examples of how the current version of the VCC standard can be modified by inserting new text (highlighting) or deleting current text (strikethrough).
[0053] This document is about video codec technology. Specifically, it is about High-Level Syntax (HLS) and related technologies in video codecs. It can be applied to existing video codec standards such as HEVC or to upcoming standards (Universal Video Codec). It can also be applied to future video codec standards or video codecs.
[0054] Video codec standards are primarily developed through the development of the renowned ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, while ISO / IEC produced MPEG-1 and MPEG-4 Visual. The two organizations jointly produced the H.262 / MPEG-2 Video standard, the H.264 / MPEG-4 Advanced Video Codec (AVC) standard, and the H.265 / HEVC standard. Since H.262, video codec standards have been based on a hybrid video codec architecture that utilizes temporal prediction plus transform coding. To explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, many new approaches have been adopted by JVET and incorporated into reference software called the Joint Exploration Model (JEM). JVET meetings are held quarterly, and the goal for new codec standards is to reduce bitrates by 50% compared to HEVC. At the JVET meeting in April 2018, the new video codec standard was officially named the Versatile Video Codec (VVC), and the first version of the VVC Test Model (VTM) was released at that time. As efforts to standardize VVC continue, new codec technologies are adopted for the VCC standard at each JVET meeting.
[0055] Example Definition
[0056] The following definitions are used in this document.
[0057] Access Unit (AU): A set of PUs belonging to different layers and containing codec pictures associated with the same time for output from the DPB.
[0058] Adaptive Loop Filter (ALF): A filtering process applied as part of the decoding process and controlled by parameters conveyed in the APS.
[0059] AC transform coefficient: Any transform coefficient with a non-zero frequency index in at least one of its two dimensions.
[0060] ALF APS: APS that controls the ALF process.
[0061] Adaptation Parameter Set (APS): A syntax structure containing syntax elements that apply to zero or more slices as determined by zero or more syntax elements found in a slice header.
[0062] Associated IRAP picture (of a specific picture): the previous IRAP picture in decoding order (when present) that has the same nuh_layer_id value as the specific picture.
[0063] Associated non-VCL NAL unit: a non-VCL NAL unit of a VCL NAL unit (when present), where the VCL NAL unit is the associated VCL NAL unit of the non-VCL NAL unit.
[0064] Associated VCL NAL unit: the previous VCL NAL unit in decoding order of a non-VCL NAL unit whose nal_unit_type is equal to EOS_NUT, EOB_NUT, SUFFIX_APS_NUT, SUFFIX_SEI_NUT, FD_NUT, RSV_NVCL_27, or in the range UNSPEC_30…UNSPEC_31; or the next VCL NAL unit in decoding order.
[0065] Binary digit: One bit of a binary digit string.
[0066] Binarization: A set of binary bit strings for all possible values of a syntax element.
[0067] Binarization process: A unique mapping process that maps all possible values of a syntax element to a set of binary bit strings.
[0068] Binary partitioning: The rectangular MxN block of samples is partitioned into two blocks, where the vertical partitioning produces a first (M / 2)xN block and a second (M / 2)xN block, and the horizontal partitioning produces a first Mx(N / 2) block and a second Mx(N / 2) block.
[0069] Bin string: An intermediate binary representation of a syntax element value resulting from the binarization of a syntax element.
[0070] Bi-predicted (B) slice: A slice that is decoded using intra prediction or inter prediction using up to two motion vectors and reference indices to predict the sample values for each block.
[0071] Bitstream: A sequence of bits in the form of a single bitstream or byte stream of NALs that forms an identification of a sequence of AUs that form one or more Coded Video Sequences (CVSs).
[0072] Block: An MxN (M columns x N rows) array of samples, or an MxN array of transform coefficients.
[0073] Block vector: A two-dimensional vector used for IBC prediction that provides the offset from the coordinates of the current codec block to the coordinates of the predicted block in the same decoded picture.
[0074] Byte: A sequence of 8 bits that, when written or read as a sequence of bit values, has the leftmost and rightmost bits representing the most significant bit and the least significant bit, respectively.
[0075] Byte-aligned: A position in a bitstream is byte-aligned when the position is an integer multiple of 8 bits of the position of the first bit in the bitstream; and bits or bytes or syntax elements are said to be byte-aligned when the positions at which they appear in a bitstream are byte-aligned.
[0076] Byte stream: An encapsulation of a NAL unit stream containing a start code prefix and NAL units.
[0077] May: A term used to refer to behavior that is permitted but not necessarily required.
[0078] Chroma: An adjective, represented by the symbols Cb and Cr, that specifies that an array of samples or a single sample represents one of the two color difference signals associated with a primary color. Note that the term chroma is used rather than the term chrominance to avoid the connotation of linear light transfer characteristics commonly associated with the term chrominance.
[0079] Clean Random Access (CRA) PU: A PU where the codec picture is a CRA picture.
[0080] Clean Random Access (CRA) picture: An IRAP picture with nal_unit_type equal to CRA_NUT for each VCL NAL unit. Note that a CRA picture does not refer to any picture other than itself for inter prediction during its decoding process and may be the first picture in the bitstream in decoding order or may appear later in the bitstream. A CRA picture may have associated RADL or RASL pictures. When the NoOutputBeforeRecoveryFlag of a CRA picture is equal to 1, the decoder does not output the associated RASL pictures because they may not be decodable since they may contain references to pictures that are not present in the bitstream.
[0081] Codec layer video sequence (CLVS): A sequence of PUs with the same value of nuh_layer_id consists, in decoding order, of a CLVSS PU followed by zero or more PUs that are not CLVSS PUs, including all subsequent PUs, but excluding any subsequent PU that is a CLVSS PU. Note that a CLVSS PU can be an IDR PU, a CRA PU, or a GDR PU. The value of NoOutputBeforeRecoveryFlag is equal to 1 for each IDR PU, each CRA PU with HandleCraAsCvsStartFlag equal to 1, and each CRA or GDR PU that is the first PU in a bitstream layer in decoding order or the first PU in a bitstream layer after an EOS NAL unit in decoding order.
[0082] Codec Layer Video Sequence Start (CLVSS) PU: A PU where the codec picture is a CLVSS picture.
[0083] Codec layer video sequence start (CLVSS) picture: A codec picture that is an IRAP picture with NoOutputBeforeRecoveryFlag equal to 1, or a GDR picture with NoOutputBeforeRecoveryFlag equal to 1.
[0084] Codec picture: The codec representation of a picture, consisting of VCL NAL units with a specific value of nuh_layer_id within an AU, and including all CTUs of the picture.
[0085] Codec Picture Buffer (CPB): A first-in, first-out buffer containing DUs in the decoding order specified by the assumed reference decoder.
[0086] Codec representation: A data element represented in its coded or decoded form.
[0087] Coded Video Sequence (CVS): An AU sequence consisting of a CVSS AU, followed by zero or more AUs that are not CVSS AUs, in decoding order, including all subsequent AUs but excluding any subsequent AU that is a CVSS AU.
[0088] Codec Video Sequence Start (CVSS) AU: An AU in which each layer in the CVS has a PU, and the coded picture in each PU is a CLVSS picture.
[0089] Codec block: An MxN block of samples with M and N values. Dividing the CTB into codec blocks is a kind of segmentation.
[0090] Codec Tree Block (CTB): An N×N block of samples for a certain value of N, such that the division of components into CTBs is a partitioning.
[0091] Codec Tree Unit (CTU): A CTB for luma samples, two corresponding CTBs for chroma samples for a picture with three sample arrays, or a CTB for samples of a monochrome picture, or a picture coded or decoded using three separate color planes and syntax structures for coding and decoding samples.
[0092] Codec Unit (CU): A codec block of luma samples, two corresponding codec blocks of chroma samples for a picture with three sample arrays, or a codec block of samples for a monochrome picture, or a picture coded or decoded using three separate color planes and syntax structures for codec samples.
[0093] Component: An array or a single sample from the three arrays (luminance and two chrominance) that make up a picture in 4:2:0, 4:2:2, or 4:4:4 color format, or an array or a single sample from the array that makes up a picture in monochrome format.
[0094] Context variables: Variables specified for the adaptive binary arithmetic decoding process of bins by equations involving the most recently decoded bins.
[0095] Deblocking filter: A filtering process applied as part of the decoding process in order to minimize the appearance of visual artifacts at the boundaries between blocks.
[0096] Decoded picture: A picture produced by applying the decoding process to a codec picture.
[0097] Decoded Picture Buffer (DPB): A buffer that holds decoded pictures, used for referencing, output reordering, or output delay assuming reference decoder specifications.
[0098] Decoder: An embodiment of the decoding process.
[0099] Decoding order: The order in which the decoding process processes syntax elements.
[0100] Decoding process: The process specified in this specification that reads a bitstream and derives a decoded picture from it.
[0101] Decoding Unit (DU): If DecodingUnitHrdFlag is equal to 0, it is an AU, otherwise it is a subset of the AU, consisting of one or more VCL NAL units in the AU and associated non-VCL NAL units.
[0102] Emulation prevention byte: A byte equal to 0x03 present in a NAL unit when the syntax elements of the bitstream form patterns of certain byte values in a way that ensures that consecutive byte-aligned sequences of bytes in the NAL unit cannot contain a start code prefix.
[0103] Encoder: An embodiment of the encoding process.
[0104] Coding process: A process that is not specified in this specification and that produces a bitstream that conforms to this specification.
[0105] Filler data NAL unit: a NAL unit whose nal_unit_type is equal to FD_NUT.
[0106] Flag: A variable or single bit syntax element that can take one of two possible values: 0 and 1.
[0107] Frequency index: A one-dimensional or two-dimensional index associated with a transform coefficient before the transform is applied during the decoding process.
[0108] Progressive Decoding Refresh (GDR) AU: an AU in which each codec picture in the current PU is a GDR picture.
[0109] Progressive Decoding Refresh (GDR) PU: A PU where the codec picture is a GDR picture.
[0110] Progressive Decoding Refresh (GDR) picture: A picture where the nal_unit_type of each VCL NAL unit is equal to GDR_NUT.
[0111] Hypothetical Reference Decoder (HRD): A hypothetical decoder model that specifies variability constraints on the conforming NAL unit stream or conforming byte stream that may be produced by the encoding process.
[0112] Hypothetical Stream Scheduler (HSS): A hypothetical decoder model used to check the consistency of a bitstream or decoder in terms of timing and data flow of inputting the bitstream into a hypothetical reference decoder.
[0113] Informational: Used to refer to a term provided in this specification that does not establish any mandatory requirements for conformity with this specification and is therefore not considered to be part of this specification.
[0114] Instantaneous Decoding Refresh (IDR) PU: A PU where the codec picture is an IDR picture.
[0115] Instantaneous Decoding Refresh (IDR) picture: An IRAP picture with nal_unit_type equal to IDR_W_RADL or IDR_N_LP for each VCL NAL unit. Note that an IDR picture does not reference any pictures other than itself for inter prediction during its decoding process and may be the first picture in the bitstream in decoding order or may appear later in the bitstream. Each IDR picture is the first picture of a CVS in decoding order. When the nal_unit_type of each VCL NAL unit is an IDR picture of IDR_W_RADL, it may have an associated RADL picture. When the nal_unit_type of each VCL NAL unit is an IDR picture of IDR_N_LP, it does not have any associated leading pictures. IDR pictures do not have associated RASL pictures.
[0116] Inter-layer reference picture (ILRP): A picture in the same AU as the current picture, where the nuh_layer_id is smaller than the nuh_layer_id of the current picture and is marked as "used for long-term reference".
[0117] Inter-frame coding: Coding and decoding of codec blocks, slices or pictures using inter-frame prediction.
[0118] Inter prediction: A prediction that is derived in a way that depends on data elements (e.g., sample values or motion vectors) of one or more reference pictures.
[0119] Intra-block copy (IBC) prediction: A prediction derived in a way that depends on data elements (eg, sample values or block vectors) of the same decoded slice without referring to a reference picture.
[0120] Intra-frame codec: Codec performed on a block, slice, or picture using intra-frame prediction.
[0121] Intra prediction: prediction derived only from data elements (e.g., sample values) of the same decoded slice without reference to a reference picture.
[0122] Inter-frame random access point (IRAP) AU: an AU in which each layer in the CVS has a PU and the codec picture in each PU is an IRAP picture.
[0123] Intra Random Access Point (IRAP) PU: A PU where the codec picture is an IRAP picture.
[0124] Intra Random Access Point (IRAP) picture: A codec picture in which all VCL NAL units have the same nal_unit_type value in the range IDR_W_RADL to CRA_NUT (inclusive). Note that an IRAP picture does not refer to any pictures other than itself used for inter prediction during its decoding process and can be either a CRA picture or an IDR picture. The first picture in the bitstream in decoding order must be an IRAP or GDR picture. If the necessary parameter sets are available when they need to be referenced, the IRAP picture and all subsequent non-RASL pictures in decoding order in the CVS can be correctly decoded without performing decoding processing on any pictures preceding the IRAP picture in decoding order. It should also be noted that the value of mixed_nalu_types_in_pic_flag for an IRAP picture is equal to 0. When mixed_nalu_types_in_pic_flag of a picture is equal to 0, and the nal_unit_type of any slice of the picture is in the range of IDR_W_RADL to CRA_NUT (inclusive), all other slices of the picture have the same nal_unit_type value, and the picture is called an IRAP picture.
[0125] Intra (I) slice: A slice that is decoded using only intra prediction.
[0126] Layer: The set of all VCL NAL units with a specific value of nuh_layer_id and the associated non-VCL NAL units.
[0127] Preceding picture: A picture that is in the same layer as the associated IRAP picture and precedes the associated IRAP picture in output order.
[0128] Leaf: A terminal node of a tree that is the root node of a tree with a depth of 0.
[0129] Level: A defined set of constraints on the possible values of syntax elements and variables of this specification, or on the values of transform coefficients before scaling. Note that all profiles define the same set of levels, with most aspects of each level definition being common across profiles. Within the specified constraints, individual implementations may support different levels for each supported profile.
[0130] List 0 (List 1) motion vector: The motion vector associated with the reference index pointing to reference picture List 0 (List 1).
[0131] List 0 (List 1) prediction: Inter prediction of slice content using reference indices pointing to reference picture list 0 (List 1).
[0132] LMCS APS: APS that controls the LMCS process.
[0133] Long-term reference picture (LTRP): A picture whose nuh_layer_id is equal to the nuh_layer_id of the current picture and is marked as "used for long-term reference".
[0134] Luminance: An adjective, denoted by the symbol or subscript Y or L, specifying that an array of samples or a single sample represents a monochromatic signal associated with a primary color. Note that the term luma is used rather than luminance to avoid the connotation of linear light transfer characteristics commonly associated with the term luminance. The symbol L is sometimes used instead of Y to avoid confusion with the symbol y, which is used for vertical position.
[0135] Luma Mapping with Chroma Scaling (LMCS): A process applied as part of the decoding process that maps luma samples to specific values and may apply scaling operations to the values of chroma samples.
[0136] May: A term used to refer to behavior that is permitted but not necessarily required. Note that in some places, the phrase "may or may not" is used to emphasize the optional nature of the described behavior. This term is used in this document only to highlight example embodiments where this requirement is adopted by the codec standard and does not limit the scope of the disclosed technology.
[0137] Motion vector: A two-dimensional vector used for inter prediction that provides the offset from coordinates in the decoded picture to coordinates in the reference picture.
[0138] Multi-type tree: A tree in which a parent node can be partitioned into two child nodes using a binary partition or into three child nodes using a ternary partition, and each child node can become the parent of another node that is partitioned into two or three child nodes.
[0139] Must: A term used to indicate an observation of a requirement or the implications of a requirement specified elsewhere in this specification (used in an informational context only). This term is used in this document only to highlight example embodiments where the requirement is adopted by the codec standard, and is not intended to limit the scope of the disclosed technology.
[0140] Network Abstraction Layer (NAL) Unit: A syntax structure containing an indication of the type of data to follow, and bytes containing that data in the form of RBSPs, interspersed with emulation prevention bytes as necessary.
[0141] Network Abstraction Layer (NAL) unit stream: a sequence of NAL units.
[0142] NOTE: Term used to prefix informational remarks (used only in informational contexts).
[0143] Operating Point (OP): A temporal subset of the OLS, identified by the highest value of the OLS index and TemporalId.
[0144] Output layer: The output layer of the set of output layers.
[0145] Output layer set (OLS): A hierarchy consisting of a specified layer set, where one or more layers in the layer set are specified as output layers.
[0146] Output Layer Set (OLS) layer index: the index of the layer in OLS to the list of layers in OLS.
[0147] Output order: The order in which decoded pictures are output from the DPB (for decoded pictures to be output from the DPB).
[0148] Output time: The time at which a decoded picture will be output from the DPB, as specified by the HRD, according to the output timing DPB operation (for decoded pictures to be output from the DPB).
[0149] Parameter: A syntax element of a sequence parameter set (SPS) or picture parameter set (PPS), or the second word defining the term quantization parameter.
[0150] Partitioning: Dividing a set into subsets so that every element of the set is in exactly one of the subsets.
[0151] Picture: A luma sample array in monochrome format or a luma sample array and two corresponding chroma sample arrays in 4:2:0, 4:2:2, and 4:4:4 color formats. Note that a picture can be either a frame or a field. However, in a CVS, either all pictures are frames or all pictures are fields.
[0152] Picture Header (PH): A syntax structure that contains syntax elements applicable to all slices of a coded picture.
[0153] Picture-level slice index: When rect_slice_flag is equal to 1, the index of the slice into the slice list in the picture in the order signaled in the PPS.
[0154] Picture Order Count (POC): A variable associated with each picture that uniquely identifies the associated picture among all pictures in the CLVS and, when the associated picture is to be output from the DPB, indicates the position of the associated picture in the output order relative to the output order positions of other pictures in the same CLVS to be output from the DPB.
[0155] Picture Parameter Set (PPS): A syntax structure, as determined by syntax elements in each slice header, containing syntax elements applicable to zero or more complete codec pictures.
[0156] Picture Unit (PU): A set of NAL units that are related to each other according to a specified classification rule, are consecutive in decoding order, and contain only one coded picture.
[0157] Forecast: An embodiment of the forecasting process.
[0158] Prediction process: Use the predicted value to estimate the data element currently being decoded (for example, sample value or motion vector).
[0159] Predicted (P) slice: A slice that is decoded using intra prediction or inter prediction (at most one motion vector and reference index) to predict the sample values for each block.
[0160] Prediction value: A specified value or combination of previously decoded data elements (e.g., sample values or motion vectors) used in the decoding process of a subsequent data element.
[0161] Profile: A prescribed subset of the syntax of this specification.
[0162] Quadtree: A tree in which a parent node can be partitioned into four child nodes, and each child node can become the parent of another node that is partitioned into four child nodes.
[0163] Quantization parameter: A variable used by the decoding process to scale the levels of transform coefficients.
[0164] Random access: The act of starting the bitstream decoding process at a point other than the beginning of the stream.
[0165] Random Access Decodable Leading (RADL) PU: A PU where the codec picture is a RADL picture.
[0166] Random Access Decodable Leading (RADL) picture: A codec picture with nal_unit_type equal to RADL_NUT for each VCL NAL unit. Note that all RADL pictures are leading pictures. RADL pictures are not used as reference pictures in the decoding process of subsequent pictures of the same associated IRAP picture. When field_seq_flag is 0, all RADL pictures (if present) precede all non-leading pictures of the same associated IRAP picture in decoding order.
[0167] Random Access Skip Leading (RASL) PU: A PU whose coded picture is a RASL picture.
[0168] Random Access Skip Leading (RASL) picture: A codec picture with nal_unit_type equal to RASL_NUT for each VCL NAL unit. Note that all RASL pictures are leading pictures of the associated CRA picture. When the NoOutputBeforeRecoveryFlag of the associated CRA picture is equal to 1, RASL pictures are not output and may not be decoded correctly because RASL pictures may contain references to pictures that are not present in the bitstream. RASL pictures are not used as reference pictures in the decoding process of non-RASL pictures. When field_seq_flag is equal to 0, all RASL pictures (if present) will precede all non-leading pictures of the same associated CRA picture in decoding order.
[0169] Raster Scan: The mapping of a rectangular two-dimensional pattern to a one-dimensional pattern such that the first entry in the one-dimensional pattern starts with the first top row of the two-dimensional pattern scanned from left to right, followed by the second, third, etc. rows (downwards) of each pattern scanned from left to right.
[0170] Raw Byte Sequence Payload (RBSP): A syntax structure consisting of an integer number of bytes encapsulated in a NAL unit and which is either empty or has the form of a data bit string containing a syntax element, followed by the RBSP stop bit and zero or more subsequent bits equal to 0.
[0171] Raw Byte Sequence Payload (RBSP) Stop Bit: A bit equal to 1 in a Raw Byte Sequence Payload (RBSP) that follows a sequence of data bits. The end of the RBSP can be identified by searching for the RBSP stop bit (the last non-zero bit in the RBSP) from the end of the RBSP.
[0172] Reference Index: Index into the reference picture list.
[0173] Reference picture: A picture that is a short-term reference picture, a long-term reference picture, or an inter-layer reference picture. Note that a reference picture contains samples that can be used for inter-frame prediction in the decoding process of subsequent pictures in decoding order.
[0174] Reference picture list: A reference picture list used for inter prediction of P or B slices. Note that two reference picture lists, reference picture list 0 and reference picture list 1, are generated for each slice of a non-IDR picture. The unique set of pictures referenced by all entries in the two reference picture lists associated with a picture consists of all reference pictures that can be used for inter prediction of the associated picture or any picture after the associated picture in decoding order. For the decoding process of P slices, only reference picture list 0 is used for inter prediction. For the decoding process of B slices, both reference picture list 0 and reference picture list 1 are used for inter prediction. For the decoding of slice data of I slices, there is no reference picture list used for inter prediction.
[0175] Reference picture list 0: a reference picture list used for inter prediction of P slices or the first reference picture list used for inter prediction of B slices.
[0176] Reference picture list 1: the second reference picture list used for inter prediction of B slices.
[0177] Reserved: A term that may be used to specify that some values of a particular syntax element are for future use by ITU-T | ISO / IEC and should not be used in bitstreams conforming to this version of this specification, but may be used in bitstreams conforming to future extensions of this specification by ITU-T | ISO / IEC.
[0178] Residual: The decoded difference between the prediction of a sample or data element and its decoded value.
[0179] Scaling: The process of multiplying the transform coefficient level by a factor to obtain the transform coefficient.
[0180] scaling list: A list that associates each frequency index with a scaling factor for the scaling process.
[0181] Zoom List APS: An APS with syntax elements for building a zoom list.
[0182] Sequence parameter set (SPS): A syntax structure containing syntax elements applicable to zero or more complete CLVSs, as determined by the contents of syntax elements found in the PPS referenced by syntax elements in each picture header.
[0183] Shall: A term used to indicate compliance with a mandatory requirement of this specification. Note that when used to indicate a mandatory constraint on the value of a syntax element or on the result obtained by the operation of a specified decoding process, it is the encoder's responsibility to ensure that the constraint is met. When used with reference to the operations performed by a decoding process, any decoding process that produces the same cropped decoded picture as the output of a decoding process described in this specification complies with the decoding process requirements of this specification. The term is used in this document only to highlight example embodiments where the codec standard adopts this requirement, and does not limit the scope of the disclosed technology.
[0184] Short-term reference picture (STRP): A picture whose nuh_layer_id is equal to the nuh_layer_id of the current picture and is marked as "used for short-term reference".
[0185] Should: A term used to refer to behavior that implementations are encouraged to follow under expected normal circumstances, but is not a mandatory requirement for conformance to this specification. This term is used in this document only to highlight example embodiments of codec standards adopting this requirement, and is not intended to limit the scope of the disclosed technology.
[0186] Slice: An integer number of complete slices or an integer number of consecutive complete CTU rows within a slice that contains only pictures in a single NAL unit.
[0187] Slice header: A portion of a codec slice that contains data elements related to all slices or CTU rows within the slice represented in the slice.
[0188] Source: A term used to describe video material or some of its properties before encoding.
[0189] Start code prefix: A unique sequence of three bytes equal to 0x000001 embedded in the byte stream as a prefix to each NAL unit. Note that the position of the start code prefix can be used by a decoder to identify the start of a new NAL unit and the end of the previous NAL unit. Emulation of the start code prefix within a NAL unit can be prevented by including an emulation prevention byte.
[0190] Step-by-step temporal sub-layer access (STSA) PU: a PU where the codec picture is a STSA picture.
[0191] Stepwise Temporal Sublayer Access (STSA) picture: A codec picture with nal_unit_type equal to STSA_NUT for each VCL NAL unit. Note that for inter-prediction reference, STSA pictures do not use pictures with the same TemporalId as the STSA picture. For inter-prediction reference, pictures following an STSA picture in decoding order with the same TemporalId as the STSA picture do not use pictures preceding an STSA picture in decoding order with the same TemporalId as the STSA picture. STSA pictures enable upward switching from the immediately lower sublayer to the sublayer containing the STSA picture at the STSA picture. The TemporalId of an STSA picture must be greater than 0.
[0192] Data bit string (SODB): A sequence of bits representing a syntax element present within the raw byte sequence payload before the stop bit of the raw byte sequence payload, where the leftmost bit is considered the first and most significant bit and the rightmost bit is considered the last and least significant bit.
[0193] Sub-bitstream extraction process: A specified process by which NAL units in the bitstream that do not belong to a target set (determined by the target OLS index and the target highest TemporalId) are removed from the bitstream, where the output sub-bitstream consists of the NAL units in the bitstream that belong to the target set.
[0194] Sublayer: The temporal scalability layer of a temporal scalable bitstream, consisting of VCL NAL units with a specific value of the TemporalId variable and associated non-VCL NAL units.
[0195] Sub-layer representation: A bitstream subset consisting of NAL units of a specific sub-layer and lower sub-layers.
[0196] Sub-image: A rectangular area of one or more strips within an image.
[0197] Sub-picture level slice index: When rect_slice_flag is equal to 1, the index of the slice list in the sub-picture according to the order of the slices signaled in the PPS.
[0198] Supplemental Enhancement Information (SEI) message: A syntactic structure with specified semantics that conveys information not required by the decoding process to determine the values of samples in the decoded picture.
[0199] Syntax element: A data element represented in a bitstream.
[0200] Syntax structure: Zero or more syntax elements that appear together in a bitstream in a specified order.
[0201] Ternary partitioning: Divide the rectangular MxN block of samples into three blocks, where vertical partitioning produces the first (M / 4)xN block, the second (M / 2)xN block, and the third (M / 4)xN block, and horizontal partitioning produces the first Mx(N / 4) block, the second Mx(N / 2) block, and the third Mx(N / 4) block.
[0202] Tier: A level constraint of a specified kind imposed on the values of syntax elements in a bitstream, where level constraints are nested within a hierarchy and a decoder conforming to a certain tier and level will be able to decode all bitstreams conforming to that level at the same or lower tiers or any level below it.
[0203] Slice: A rectangular area of a CTU within a specific slice column and a specific slice row in a picture.
[0204] Slice column: A rectangular area of a CTU whose height is equal to the height of the picture and whose width is specified by the syntax elements in the picture parameter set.
[0205] Slice row: A rectangular area of a CTU whose height is specified by the syntax elements in the picture parameter set and whose width is equal to the width of the picture.
[0206] Slice scan: A specific sequential order of the CTUs that partition a picture, where the CTUs are ordered consecutively in a raster scan of CTUs within a slice, and the slices within a picture are arranged consecutively in a raster scan of the slices of the picture.
[0207] Subsequent pictures: Non-IRAP pictures that follow the associated IRAP picture in output order and are not STSA pictures. Note that subsequent pictures associated with an IRAP picture also follow the IRAP picture in decoding order. Pictures that follow the associated IRAP picture in output order and precede the associated IRAP picture in decoding order are not allowed.
[0208] Transform: The part of the decoding process by which a block of transform coefficients is converted into a block of spatial domain values.
[0209] Transform block: A rectangular MxN sample block generated by a transform during the decoding process.
[0210] Transform coefficient: During the decoding process, a scalar quantity associated with a specific one-dimensional frequency index or two-dimensional frequency index in a transform that is considered to be in the frequency domain.
[0211] Transform coefficient level: An integer representing the value associated with a specific 2D frequency index during the decoding process, before scaling of the transform coefficient values is calculated.
[0212] Transform Unit (TU): A transform block of luma samples and two corresponding transform blocks of chroma samples of a picture when a single codec tree is used for luma and chroma; or, when two separate codec trees are used for luma and chroma, a transform block of luma samples or two transform blocks of chroma samples, and the syntax structures used to transform the transform block samples.
[0213] Tree: A tree with a finite set of nodes that has a unique root node.
[0214] Unspecified: A term that may be used to specify some values of a particular syntax element to indicate that these values have no specified meaning in this specification and will not have a specified meaning as part of a future version of this specification.
[0215] Video Codec Layer (VCL) NAL unit: A collective term for codec slice NAL units and NAL unit subsets that have a reserved value of nal_unit_type that are classified as VCL NAL units in this specification.
[0216] Some example bitstream and picture formats, partitions, scanning processes, and neighbor relationships are described below. 6.3 Partitioning of pictures, sub-pictures, slices, slices, and CTUs
[0217] 6.3.2 Block, Quadtree, and Multi-Type Tree Structures
[0218] Samples are processed in CTB units. The width and height of each luma CTB array are CtbSizeY (in samples). The width and height of each chroma CTB array are CtbWidthC and CtbHeightC (in samples).
[0219] Each CTB is assigned a partition signaling that identifies the block size used for intra or inter prediction and transform coding. Partitioning is a recursive quadtree partitioning. The root of the quadtree is associated with the CTB. The quadtree is partitioned until a leaf is reached, which is called a quadtree leaf. When the component width is not an integer multiple of the CTB size, the CTB at the right component boundary is incomplete. When the component height is not an integer multiple of the CTB size, the CTB at the bottom component boundary is incomplete.
[0220] The codec block is the root node of two trees: the prediction tree and the transform tree. The prediction tree specifies the location and size of the prediction block. The transform tree specifies the location and size of the transform block. The luma and chroma partitioning information is the same for the prediction tree and may or may not be the same for the transform tree.
[0221] Blocks and associated syntax structures are grouped into "unit" structures, as follows:
[0222] One transform block (monochrome picture or separate_colour_plane_flag equal to 1) or three transform blocks (luminance and chrominance components of a picture in 4:2:0, 4:2:2 or 4:4:4 color format) and the associated transform syntax structure unit are associated with a transform unit.
[0223] – One codec block (monochrome picture or separate_colour_plane_flag is equal to 1) or three codec blocks (luminance and chrominance), the associated codec syntax structure and the associated transform unit are associated with the codec block.
[0224] – One CTB (monochrome picture or separate_colour_plane_flag equal to 1) or three CTBs (luminance and chrominance), the associated codec tree syntax structure and the associated codec unit are associated with the CTU.
[0225] 7 Syntax and Semantics
[0226] 7.3 Tabular Syntax
[0227] 7.3.1 NAL unit syntax
[0228] 7.3.1.1 Generic NAL unit syntax
[0229]
[0230] 7.3.1.2 NAL unit header syntax
[0231]
[0232] 7.3.2 Raw Byte Sequence Payload, Subsequent Bits, and Byte Alignment Syntax
[0233] 7.3.2.1 Decoding Capability Information RBSP Syntax
[0234]
[0235] 7.3.2.2 Video Parameter Set RBSP Syntax
[0236]
[0237]
[0238]
[0239] 7.3.2.3 Sequence Parameter Set RBSP Syntax
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247] 7.3.2.4 Picture Parameter Set RBSP Syntax
[0248]
[0249]
[0250]
[0251]
[0252] 7.3.2.5 Adaptation Parameter Set RBSP Syntax
[0253]
[0254]
[0255] 7.3.2.6 Picture Header RBSP Syntax
[0256]
[0257] 7.3.2.7 Picture header structure syntax
[0258]
[0259]
[0260]
[0261]
[0262]
[0263] 7.3.2.8 Supplementary Enhancement Information RBSP Syntax
[0264]
[0265] 7.3.2.9 AU Separator RBSP Syntax
[0266]
[0267] 7.3.2.10 End of Sequence RBSP Syntax
[0268] end_of_seq_rbsp(){ Descriptor }
[0269] 7.3.2.11 End of bitstream RBSP syntax
[0270] end_of_bitstream_rbsp(){ Descriptor }
[0271] 7.4 Semantics
[0272] 7.4.1 Overview
[0273] The semantics associated with syntax structures and with syntax elements within those structures are specified in this clause. When a table or a set of tables is used to specify the semantics of a syntax element, any value not specified in the table shall not appear in the bitstream unless otherwise specified in this specification.
[0274] 7.4.2 NAL unit semantics
[0275] 7.4.2.1 General NAL unit semantics
[0276] NumBytesInNalUnit specifies the size of the NAL unit in bytes. This value is required for decoding of the NAL unit. Some form of demarcation of NAL unit boundaries is necessary to enable inference of NumBytesInNalUnit. One such demarcation method is specified for the byte stream format. Other demarcation methods may be specified outside of this specification.
[0277] NOTE 1 – The Video Codec Layer (VCL) is defined to efficiently represent the content of video data. The NAL is defined to format this data and provide header information in a manner suitable for delivery over various communication channels or storage media. All data is contained in NAL units, each containing an integer number of bytes. The NAL unit defines a common format for both packet-oriented and bitstream systems. The format of the NAL unit for packet-oriented transport and bytestream is the same, except that each NAL unit may be preceded by a start code prefix and additional padding bytes in the bytestream format.
[0278] rbsp_byte[i] is the i-th byte of RBSP. RBSP is defined as an ordered sequence of bytes as follows:
[0279] The RBSP consists of a string of data bits (SODB) as follows:
[0280] – If SODB is empty (i.e., its length is zero bits), then RBSP is also empty.
[0281] – Otherwise, RBSP contains SODB as follows:
[0282] 1) The first byte of the RBSP contains the first (most significant, leftmost) eight bits of the SODB; the next byte of the RBSP contains the next eight bits of the SODB, and so on, until there are fewer than eight bits of SODB left.
[0283] 2) The syntax structure of rbsp_trailing_bits() is located after SODB and is as follows:
[0284] i) The first (most significant, leftmost) bit of the last RBSP byte contains the remaining bits of the SODB, if any.
[0285] ii) The next bit consists of a single bit equal to 1 (ie, rbsp_stop_one_bit).
[0286] iii) When rbsp_stop_one_bit is not the last bit of a byte-aligned byte, one or more zero-valued bits (i.e., instances of rbsp_alignment_zero_bit) may appear to cause byte alignment.
[0287] 3) In some RBSPs, after rbsp_training_bits() at the end of the RBSP, there may be one or more cabac_zero_word 16-bit syntax elements equal to 0x0000.
[0288] The syntax tables use the "_rbsp" suffix to indicate syntax structures with these RBSP attributes. These structures are carried in NAL units as the contents of the rbsp_byte[i] data byte. The association of RBSP syntax structures with NAL units is specified in Table 5.
[0289] NOTE 2 – When the boundaries of the RBSP are known, the decoder can extract the SODB from the RBSP by concatenating the bits of the RBSP bytes and discarding the rbsp_stop_one_bit (the last (least significant, rightmost) bit that is equal to 1) and any following (less significant, more rightward) bits that are equal to 0. The data required for the decoding process is contained in the SODB portion of the RBSP.
[0290] emulation_prevention_three_byte is a byte equal to 0x03. When emulation_prevention_three_byte is present in a NAL unit, it shall be discarded by the decoding process.
[0291] The last byte of a NAL unit shall not be equal to 0x00.
[0292] Within a NAL unit, the following three-byte sequence SHOULD NOT appear at any byte-aligned position:
[0293] –0x000000
[0294] –0x000001
[0295] –0x000002
[0296] Within a NAL unit, any four-byte sequence starting with 0x000003 SHOULD NOT appear at any byte-aligned position except the following sequence:
[0297] –0x00000300
[0298] –0x00000301
[0299] –0x00000302
[0300] –0x00000303
[0301] 7.4.2.2 NAL unit header semantics
[0302] forbidden_zero_bit should be equal to 0.
[0303] nuh_reserved_zero_bit shall be equal to 0. The value 1 of nuh_reserved_zero_bit may be specified in the future by ITU-T|ISO / IEC. A decoder shall ignore (i.e., remove from the bitstream and discard) NAL units with nuh_reserved_zero_bit equal to 1.
[0304] nuh_layer_id specifies the identifier of the layer to which a VCL NAL unit belongs or the identifier of the layer to which a non-VCL NAL unit applies. The value of nuh_layer_id shall be in the range of 0 to 55 (inclusive). Other values of nuh_layer_id are reserved for future use by ITU-T | ISO / IEC.
[0305] The value of nuh_layer_id shall be the same for all VCL NAL units of a codec picture. The value of nuh_layer_id of a codec picture or PU shall be the value of nuh_layer_id of the VCL NAL unit of the codec picture or PU.
[0306] The nuh_layer_id values for AUD, PH, EOS, and FD NAL units are subject to the following constraints:
[0307] – If nal_unit_type is equal to AUD_NUT, nuh_layer_id shall be equal to vps_layer_id[0].
[0308] – Otherwise, when nal_unit_type is equal to PH_NUT, EOS_NUT or FD_NUT, nuh_layer_id shall be equal to the nuh_layer_id of the associated VCL NAL unit.
[0309] NOTE 1 – The nuh_layer_id value of DCI, VPS and EOB NAL units is not restricted.
[0310] The value of nal_unit_type should be the same for all pictures in a CVSS AU.
[0311] nal_unit_type specifies the NAL unit type, that is, the type of the RBSP data structure contained in the NAL unit specified in Table 5.
[0312] NAL units with nal_unit_type in the range UNSPEC_28…UNSPEC_31 inclusive (unspecified semantics) shall not affect the decoding process specified in this specification.
[0313] NOTE 2 – NAL unit types in the range UNSPEC_28…UNSPEC_31 (inclusive) MAY be used as determined by the application. The decoding process for these values of nal_unit_type is not specified in this specification. Because different applications may use these NAL unit types for different purposes, care must be taken when designing encoders that generate NAL units using these nal_unit_type values, and when designing decoders that interpret the content of NAL units using these nal_unit_type values. This specification does not define any management of these values. These nal_unit_type values MAY only be used in contexts where "conflicts" of use (i.e., different definitions of the meaning of the NAL unit content for the same nal_unit_type value) are unimportant, unlikely, or managed (e.g., defined or managed) in the controlling application or transport specification, or by the environment controlling the bitstream distribution.
[0314] For purposes other than determining the amount of data in a DU, a bitstream decoder shall ignore (remove from the bitstream and discard) the contents of all NAL units using the reserved value of nal_unit_type.
[0315] NOTE 3 – This requirement allows compatible extensions to this specification to be defined in the future.
[0316] Table 5 – NAL unit type codes and NAL unit type categories
[0317]
[0318]
[0319] NOTE 4 – A Clean Random Access (CRA) picture may have an associated RASL or RADL picture present in the bitstream.
[0320] NOTE 5 – An Instantaneous Decoding Refresh (IDR) picture with nal_unit_type equal to IDR_N_LP has no associated leading picture in the bitstream. An IDR picture with nal_unit_type equal to IDR_W_RADL has no associated RASL picture present in the bitstream, but may have associated RADL pictures in the bitstream.
[0321] For any particular picture's VCL NAL unit, the following applies:
[0322] – If mixed_nalu_types_in_pic_flag is equal to 0, the value of nal_unit_type shall be the same for all codec slice NAL units of a picture. A picture or PU is said to have the same NAL unit type as the codec slice NAL units of the picture or PU.
[0323] – Otherwise (mixed_nalu_types_in_pic_flag is equal to 1), the VCL NAL units of one or more sub-pictures in the picture have a specific value of nal_unit_type equal to STSA_NUT, RADL_NUT, RASL_NUT, IDR_W_RADL, IDR_N_LP, or CRA_NUT, while the other VCL NAL units in the picture have a different specific value of nal_unit_type equal to TRAIL_NUT, RADL_NUT, or RASL_NUT.
[0324] For single-layer bitstreams, the following constraints apply:
[0325] – Except for the first picture in the bitstream in decoding order, every picture is considered to be associated with the previous IRAP picture in decoding order.
[0326] – When a picture is the leading picture of an IRAP picture, it shall be a RADL picture or a RASL picture.
[0327] – When a picture is a subsequent picture of an IRAP picture, it shall not be a RADL picture or a RASL picture.
[0328] – No RASL pictures shall be present in the bitstream associated with an IDR picture.
[0329] – No RADL picture shall be present in the bitstream associated with an IDR picture with nal_unit_type equal to IDR_N_LP.
[0330] NOTE 6: If each parameter set is available when referenced (either in the bitstream or by external means not specified in this specification), random access can be performed at the IRAP PU location (and correctly decode the IRAP picture and all subsequent non-RASL pictures in decoding order) by discarding all PUs preceding the IRAP PU.
[0331] Any picture that precedes an IRAP picture in decoding order shall precede the IRAP picture in output order, and shall precede any RADL pictures associated with the IRAP picture in output order.
[0332] – Any RASL pictures associated with a CRA picture shall precede any RADL pictures associated with the CRA picture in output order.
[0333] – Any RASL picture associated with a CRA picture shall immediately follow, in output order, any IRAP picture that precedes the CRA picture in decoding order.
[0334] – If field_seq_flag is equal to 0 and the current picture is a leading picture associated with an IRAP picture, then it shall precede all non-leading pictures associated with the same IRAP picture in decoding order. Otherwise, let picA and picB be the first and last leading pictures, respectively, in decoding order associated with the IRAP picture, there shall be at most one non-leading picture before picA in decoding order, and there shall be no non-leading pictures between picA and picB in decoding order.
[0335] num_temporal_id_plus1 minus 1 specifies the temporal identifier of the NAL unit.
[0336] The value of nuh_temporal_id_plus1 shall not be equal to 0.
[0337] The variable TemporalId is derived as follows:
[0338] TemporalId=nuh_temporal_id_plus1-1 (36)
[0339] When nal_unit_type is in the range of IDR_W_RADL to RSV_IRAP_12 (inclusive), TemporalId shall be equal to 0.
[0340] When nal_unit_type is equal to STSA_NUT and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, TemporalId shall not be equal to 0.
[0341] The value of TemporalId shall be the same for all VCL NAL units of an AU. The TemporalId value of a codec picture PU or AU is the TemporalId value of the VCL NAL unit of the codec picture PU or AU. The TemporalId value of a sublayer representation is the maximum value of the TemporalId of all VCL NAL units in the sublayer representation.
[0342] TemporalId values for non-VCL NAL units are subject to the following constraints:
[0343] – If nal_unit_type is equal to DCI_NUT, VPS_NUT or SPS_NUT, TemporalId shall be equal to 0 and the TemporalId of the AU containing the NAL unit shall be equal to 0.
[0344] - Otherwise, if nal_unit_type is equal to PH_NUT, TemporalId shall be equal to the TemporalId of the PU containing the NAL unit.
[0345] – Otherwise, if nal_unit_type is equal to EOS_NUT or EOB_NUT, TemporalId shall be equal to 0.
[0346] – Otherwise, if nal_unit_type is equal to AUD_NUT, FD_NUT, PREFIX_SEI_NUT or SUFFIX_SEI_NUT, TemporalId shall be equal to the TemporalId of the AU containing the NAL unit.
[0347] – Otherwise, when nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT, or SUFFIX_APS_NUT, TemporalId shall be greater than or equal to the TemporalId of the PU containing the NAL unit.
[0348] NOTE 7 - When the NAL unit is a non-VCL NAL unit, the value of TemporalId is equal to the minimum of the TemporalId values of all AUs to which the non-VCL NAL unit applies. When nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT, or SUFFIX_APS_NUT, TemporalId can be greater than or equal to the TemporalId of the containing AU, since all PPS and APS can be included at the beginning of the bitstream (e.g., when they are transmitted out of band and the receiver places them at the beginning of the bitstream), where the TemporalId of the first codec picture is equal to 0.
[0349] 7.4.2.3 Encapsulating SODB in RBSP (Informative)
[0350] This clause does not form part of this Code.
[0351] The encapsulation of SODB within RBSP and the encapsulation of RBSP within NAL units using emulation_prevention_three_byte are described for the following purposes:
[0352] – prevents emulation of startup codes within NAL units, while allowing arbitrary SODBs to be represented within NAL units,
[0353] – enables identification of the end of SODB within a NAL unit by searching for the rbsp_stop_one_bit starting from the end of the RBSP,
[0354] – In some cases (using one or more cabac_zero_word syntax elements), it is possible to enable the size of the NAL unit to be larger than the size of the SODB.
[0355] The encoder can generate NAL units from RBSP by the following procedure:
[0356] 1. Search the byte alignment bits of the following binary pattern in the RBSP data:
[0357] '00000000 00000000 000000xx' (where 'xx' represents any two-digit pattern: "00", "01", "10", or "11"),
[0358] and insert a byte equal to 0x03 to replace the bit pattern with the pattern:
[0359] '00000000 00000000 00000011 000000xx',
[0360] And finally, when the last byte of the RBSP data is equal to 0x00 (which only occurs when the RBSP ends with cabac_zero_word), a final byte equal to 0x03 is appended to the end of the data. The last zero byte of the byte-aligned three-byte sequence 0x000000 in the RBSP is considered (which is replaced by the four-byte sequence 0x00000300) when searching the RBSP data for the next occurrence of the byte alignment bit with the binary pattern specified above.
[0361] 2. The resulting byte sequence is then prefixed with a NAL unit header, where nal_unit_type indicates the type of RBSP data structure in the NAL unit.
[0362] The process specified above results in the construction of an entire NAL unit.
[0363] This process allows any SODB to be represented in a NAL unit while ensuring both of the following:
[0364] – Byte-aligned start code prefix is not emulated within NAL units.
[0365] – Within a NAL unit, the sequence of 8 zero-valued bits followed by a start code prefix is not simulated, regardless of byte alignment.
[0366] 7.4.2.4 Order of NAL units in the bitstream
[0367] 7.4.2.4.1 Overview
[0368] The subclauses of clause 7.4.2.4 specify restrictions on the order of NAL units in a bitstream.
[0369] Any order of NAL units in a bitstream that obeys these constraints is referred to herein as the decoding order of the NAL units.
[0370] Within a NAL unit, the syntax in clauses 7.3 and D.2 specifies the decoding order of syntax elements. When the VUI parameters or any SEI messages specified in ITU-T H.SEI | ISO / IEC 23002-7 are included in a NAL unit specified in this specification, the syntax of the VUI parameters or SEI messages specified in ITU-T H.SEI | ISO / IEC 23002-7 specifies the decoding order of those syntax elements. A decoder shall be able to receive NAL units and their syntax elements in decoding order.
[0371] 7.4.2.4.2 AU order and its association with CVS
[0372] A bitstream consists of one or more CVSs.
[0373] A CVS consists of one or more AUs. The order of PUs and their association with AUs is described in clause 7.4.2.4.3.
[0374] The first AU of CVS is a CVSS AU, where each current PU is a CLVSS PU, which is either an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1 or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1.
[0375] Each CVSS AU should have a PU for each layer present in the CVS.
[0376] Bitstream conformance requires that, when present, the next AU following an AU containing an EOS NAL unit shall be a CVSS AU.
[0377] 7.4.2.4.3 Order of PUs and their association with AUs
[0378] An AU consists of one or more PUs in increasing order of nuh_layer_id. The order of NAL units and codec pictures and their association with PUs is described in clause 7.4.2.4.4.
[0379] There can be at most one AUD NAL unit in an AU. When an AUD NAL unit is present in an AU, it shall be the first NAL unit of the AU and, therefore, the first NAL unit of the first PU of the AU.
[0380] There can be at most one EOB NAL unit in an AU. When the EOB NAL unit is present in an AU, it shall be the last NAL unit of the AU and, therefore, the last NAL unit of the last PU of the AU.
[0381] A VCL NAL unit is the first VCL NAL unit of an AU (and therefore, the PU containing the VCL NAL unit is the first PU of the AU) when the VCL NAL unit is the first VCL NAL unit after a PH NAL unit and one or more of the following conditions hold:
[0382] - The value of nuh_layer_id of the VCL NAL unit is less than the nuh_layer_id of the previous picture in decoding order.
[0383] – The value of ph_pic_order_cnt_lsb of a VCL NAL unit is different from the ph_pic_order_cnt_lsb of the previous picture in decoding order.
[0384] – The PicOrderCntVal derived for a VCL NAL unit is different from the PicOrderCntVal of the previous picture in decoding order.
[0385] Let FirstVclNalUnitInAu be the first VCL NAL unit of an AU. The first of the following NAL units preceding firstVclNalUnitInAu and following the last VCL NAL unit before firstVclNalUnitInAu (if any) specifies the start of a new AU:
[0386] – AUD NAL unit (if present),
[0387] – DCI NAL unit (if present),
[0388] – VPS NAL unit (if present),
[0389] – SPS NAL unit (if present),
[0390] –PPS NAL unit (if present),
[0391] – prefix APS NAL unit (if present),
[0392] -PH NAL unit (if present),
[0393] – prefix SEI NAL unit (if present),
[0394] – NAL units with nal_unit_type equal to RSV_NVCL_26 (if present),
[0395] –nal_unit_type NAL unit in the range UNSPEC28..UNSPEC29 (if any).
[0396] NOTE: The first NAL unit before firstVclNalUnitInAu and after the last VCLNAL unit before firstVclNalUnitInAu (if any) can only be one of the NAL units listed above.
[0397] One requirement of bitstream conformance is that, when present, the next PU of a particular layer following a PU belonging to the same layer and containing an EOS NAL unit shall be a CLVSS PU, which is either an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1 or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1.
[0398] 7.4.2.4.4 Order of NAL units and codec pictures and their association with PUs
[0399] A PU consists of zero or one PH NAL unit, a codec picture (including one or more VCL NAL units), and zero or more other non-VCL NAL units. The association of VCL NAL units with codec pictures is described in clause 7.4.2.4.5.
[0400] When a picture consists of more than one VCL NAL unit, a PH NAL unit shall be present in the PU.
[0401] If the PH NAL unit is present in the PU, the first VCL NAL unit of the picture is the first VCL NAL unit following the PH NAL unit in the decoding order of the picture. Otherwise (no PH NAL unit is present in the PU), the first VCL NAL unit of the picture is the only VCL NAL unit of the picture.
[0402] The order of non-VCL NAL units (except AUD and EOB NAL units) within a PU shall obey the following constraints:
[0403] – When a PH NAL unit is present in a PU, it shall precede the first VCL NAL unit of the PU.
[0404] – When any DCI NAL units, VPS NAL units, SPS NAL units, PPS NAL units, prefix APS NAL units, prefix SEI NAL units, NAL units with nal_unit_type equal to RSV_NVCL_26, or NAL units with nal_unit_type in the range UNSPEC_28..UNSPEC_29 are present in a PU, they shall not follow the last VCL NAL unit of the PU.
[0405] – When any DCI NAL units, VPS NAL units, SPS NAL units, or PPS NAL units are present in a PU, they shall precede the PH NAL unit of the PU (if present) and shall precede the first VCL NAL unit of the PU.
[0406] – NAL units in a PU whose nal_unit_type is equal to SUFFIX_APS_NUT, SUFFIX_SEI_NUT, FD_NUT, or RSV_NVCL_27, or in the range UNSPEC_30..UNSPEC_31 shall not precede the first VCL NAL unit of the PU.
[0407] – When the EOS NAL unit is present in a PU, it shall be the last NAL unit among all NAL units except the EOB NAL unit (when present).
[0408] 7.4.2.4.5 Order of VCL NAL units and their association with coded and decoded pictures
[0409] The order of VCL NAL units within a codec picture is subject to the following constraints:
[0410] – For any two codec slice NAL units A and B of a codec picture, let subpicIdxA and subpicIdxB be their sub-picture level index values, and sliceAddrA and sliceddrB be their slice_address values.
[0411] – Codec slice NAL unit A shall precede codec slice NAL unit B when any of the following conditions is true:
[0412] –subpicIdxA is less than subpicIdxB.
[0413] –subpicIdxA is equal to subpicIdxB, and sliceAddrA is less than sliceAddrB.
[0414] 7.4.3. Raw Byte Sequence Payload, Trailing Bit, and Byte Alignment Semantics
[0415] 7.4.3.1 Decoding Capability Information RBSP Semantics
[0416] The DCI RBSP may be made available to the decoder by being present in the bitstream, included in at least the first AU of the bitstream, or provided by external means.
[0417] NOTE 1 – The information contained in the DCI RBSP is not essential for the operation of the decoding process.
[0418] When present, all DCI NAL units in a bitstream shall have the same content.
[0419] dci_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers in a layer that may be present in each CVS of the bitstream. The value of dci_max_sublayers_minus1 shall be between 0 and 6, inclusive.
[0420] The dci_reserved_zero_bit shall be equal to 0 in bitstreams conforming to this version of this specification. The value 1 of the dci_reserved_zero_bit is reserved for future use by ITU-T | ISO / IEC.
[0421] dci_num_ptls_minus1 plus 1 specifies the number of profile_tier_level() syntax structures in the DCI NAL unit.
[0422] The bitstream conformance requirement is that each OLS in the CVS in the bitstream shall conform to at least one profile_tier_level() syntax structure in the DCI NAL unit.
[0423] NOTE 2: A DCI NAL unit may include PTL information, possibly carried in multiple profile_tier_level() syntax structures. This information is commonly applicable to multiple OLSs and does not need to include PTL information for each OLS separately.
[0424] dci_extension_flag equal to 0 specifies that the dci_extension_data_flag syntax element is not present in the DCI RBSP syntax structure. dci_extension_flag equal to 1 specifies that the dci_extension_data_flag syntax element is present in the DCI RBSP syntax structure.
[0425] The dci_extension_data_flag can have any value. Its presence and value do not affect the conformance of the decoder to the profile. Decoders conforming to this version of this specification shall ignore all dci_extension_data_flag syntax elements.
[0426] 7.4.3.2 Video Parameter Setting RBSP Semantics
[0427] The VPS RBSP shall be available to the decoding process before being referenced, included in at least one AU with TemporalId equal to 0, or provided by external means.
[0428] All VPS NAL units in CVS with a specific value of vps_video_parameter_set_id shall have the same content.
[0429] vps_video_parameter_set_id provides an identifier for the VPS for reference by other syntax elements. The value of vps_video_parameter_set_id should be greater than 0.
[0430] vps_max_layers_minus1 plus 1 specifies the maximum number of layers allowed in each CVS that references the VPS.
[0431] vps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that may be present in a layer in each CVS that references a VPS. The value of vps_max_sublayers_minus1 shall be between 0 and 6, inclusive.
[0432] vps_all_layers_same_num_sublayers_flag equal to 1 specifies that all layers referencing the VPS in each CVS have the same number of temporal sublayers. vps_all_layers_same_num_sublayers_flag equal to 0 specifies that the layers referencing the VPS in each CVS may or may not have the same number of temporal sublayers. When not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1.
[0433] vps_all_independent_layers_flag equal to 1 specifies that all layers in the CVS are independently coded without using inter-layer prediction. vps_all_independent_layers_flag equal to 0 specifies that one or more layers in the CVS may use inter-layer prediction. When not present, the value of vps_all_independent_layers_flag is inferred to be equal to 1.
[0434] vps_layer_id[i] specifies the nuh_layer_id value of layer i. For any two non-negative integer values of m and n, when m is less than n, the value of vps_layer_id[m] shall be less than vps_layer_id[n].
[0435] vps_independent_layer_flag[i] equal to 1 specifies that the layer with index i does not use inter-layer prediction. vps_independent_layer_flag[i] equal to 0 specifies that the layer with index i can use inter-layer prediction, and the syntax element vps_direct_ref_layer_flag[i][j] (j is in the range of 0 to i-1 (inclusive)) is present in the VPS. When not present, the value of vps_independent_layer_flag[i] is inferred to be equal to 1.
[0436] vps_direct_ref_layer_flag[i][j] equal to 0 specifies that the layer with index j is not a direct reference layer of the layer with index i. vps_direct_ref_layer_flag[i][j] equal to 1 specifies that the layer with index j is a direct reference layer of the layer with index i. When vps_direct_ref_layer_flag[i][j] is not present (i and j are in the range of 0 to vps_max_layers_minus1, inclusive), it is inferred to be equal to 0. When vps_independent_layer_flag[i] is equal to 0, there shall be at least one value of j in the range of 0 to i-1, inclusive, such that the value of vps_direct_ref_layer_flag[i][j] is equal to 1.
[0437] The variables NumDirectRefLayers[i], DirectRefLayerIdx[i][d], NumRefLayers[i], RefLayerIdx[i][r], and LayerUsedAsRefLayerFlag[j] are derived as follows:
[0438]
[0439]
[0440] The variable GeneralLayerIdx[i] that specifies the layer index of the layer whose nuh_layer_id is equal to vps_layer_id[i] is derived as follows:
[0441]
[0442] For any two different values of i and j in the range 0 to vps_max_layers_minus1 (inclusive), when dependencyFlag[i][j] is equal to 1, bitstream conformance requires that the values of chroma_format_idc and bit_depth_minus8 applicable to layer i shall be equal to the values of chroma_format_idc and bit_depth_minus8 applicable to layer j, respectively.
[0443] max_tid_ref_present_flag[i] equal to 1 specifies that the syntax element max_tid_il_ref_pics_plus1[i] is present. max_tid_ref_present_flag[i] equal to 0 specifies that the syntax element max_tid_il_ref_pics_plus1[i] is not present.
[0444] max_tid_il_ref_pics_plus1[i] equal to 0 specifies that non-IRAP pictures of layer i do not use inter-layer prediction. max_tid_il_ref_pics_plus1[i] greater than 0 specifies that for decoding pictures of layer i, no picture with a TemporalId greater than max_tid_il_ref_pics_plus1[i]-1 is used as ILRP. When not present, the value of max_tid_il_ref_pics_plus1[i] is inferred to be equal to 7.
[0445] each_layer_is_an_ols_flag equal to 1 specifies that each OLS contains only one layer, and that each layer in the CVS referencing the VPS is itself an OLS, where the single included layer is the only output layer. each_layer_is_an_ols_flag equal to 0 specifies that the OLS may contain multiple layers. If vps_max_layers_minus1 is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 1. Otherwise, when vps_all_independent_layers_flag is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 0.
[0446] ols_mode_idc equal to 0 specifies that the total number of OLSs specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices 0 to i (inclusive), and for each OLS, only the highest layer in the OLS is output.
[0447] ols_mode_idc equal to 1 specifies that the total number of OLSs specified by the VPS is equal to vps_max_layers_minus1+1, the i-th OLS includes layers with layer indices 0 to i (inclusive), and for each OLS, all layers in the OLS are output.
[0448] ols_mode_idc equal to 2 specifies that the total number of OLSs specified by the VPS is explicitly signaled, and for each OLS, the output layer is explicitly signaled, and the other layers are direct or indirect reference layers to the output layer of the OLS.
[0449] The value of ols_mode_idc shall be in the range of 0 to 2, inclusive. The value 3 of ols_mode_idc is reserved for future use by ITU-T | ISO / IEC.
[0450] When vps_all_independent_layers_flag is equal to 1 and each_layer_is_an_ols_flag is equal to 0, the value of ols_mode_idc is inferred to be equal to 2.
[0451] num_output_layer_sets_minus1 plus 1 specifies the total number of OLSs specified by the VPS when ols_mode_idc is equal to 2.
[0452] The variable TotalNumOlss that specifies the total number of OLSs specified by the VPS is derived as follows:
[0453]
[0454] ols_output_layer_flag[i][j] equal to 1 specifies that when ols_mode_idc is equal to 2, the layer with nuh_layer_id equal to vps_layer_id[j] is the output layer of the i-th OLS. ols_output_layer_flag[i][j] equal to 0 specifies that when ols_mode_idc is equal to 2, the layer with nuh_layer_id equal to vps_layer_id[j] is not the output layer of the i-th OLS.
[0455] The variable NumOutputLayersInOls[i] that specifies the number of output layers in the i-th OLS, the variable NumSubLayersInLayerInOLS[i][j] that specifies the number of sublayers in the j-th layer in the i-th OLS, the variable OutputLayerIdInOLS[i][j] that specifies the nuh_layer_id value of the j-th output layer in the i-th OLS, and the variable LayerUsedAsOutputLayerFlag[k] that specifies whether the k-th layer is used as an output layer in at least one OLS are derived as follows:
[0456]
[0457]
[0458] For each value of i in the range from 0 to vps_max_layers_minus1 (inclusive), the values of LayerUsedAsRefLayerFlag[i] and LayerUsedAsOutputLayerFlag[i] shall not be simultaneously equal to 0. In other words, there shall be no layer that is neither an output layer of at least one OLS nor a direct reference layer of any other layer.
[0459] For each OLS, there should be at least one layer that is an output layer. In other words, for any value of i in the range 0 to TotalNumOlss-1 (inclusive), the value of NumOutputLayersInOls[i] should be greater than or equal to 1.
[0460] The variable NumLayersInOls[i] that specifies the number of layers in the i-th OLS and the variable LayerIdInOls[i][j] that specifies the nuh_layer_id value of the j-th layer in the i-th OLS are derived as follows:
[0461]
[0462]
[0463] NOTE 1 – The 0th OLS only includes the lowest layer (i.e. the layer with nuh_layer_id equal to vps_layer_id[0]), and for the 0th OLS, only the included layers are output.
[0464] The variable OlsLayerIdx[i][j] that specifies the OLS layer index of the layer whose nuh_layer_id is equal to LayerIdInOls[i][j] is derived as follows:
[0465]
[0466] The lowest layer in each OLS shall be an independent layer. In other words, for each i in the range 0 to TotalNumOlss-1 (inclusive), the value of vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]] shall be equal to 1.
[0467] Each layer shall be included in at least one OLS specified by the VPS. In other words, for each layer with a particular value of nuh_layer_id nuhLayerId equal to one of vps_layer_id[k] (for k in the range 0 to vps_max_layers_minus1, inclusive), there shall be at least one pair of values of i and j, where i is in the range 0 to TotalNumOlss-1, inclusive, and j is in the range NumLayersInOls[i]-1, inclusive, such that the value of LayerIdInOls[i][j] is equal to nuhLayerId.
[0468] vps_num_ptls_minus1 plus 1 specifies the number of profile_tier_level() syntax structures in the VPS. The value of vps_num_ptls_minus1 should be less than TotalNumOlss.
[0469] pt_present_flag[i] equal to 1 specifies that profile, tier, and general constraint information is present in the i-th profile_tier_level() syntax structure in the VPS. pt_present_flag[i] equal to 0 specifies that profile, tier, and general constraint information is not present in the i-th profile_tier_level() syntax structure in the VPS. The value of pt_present_flag[0] is inferred to be equal to 1. When pt_present_flag[i] is equal to 0, the profile, tier, and general constraint information of the i-th profile_tier_level() syntax structure in the VPS is inferred to be the same as the (i-1)-th profile_tier_level() syntax structure in the VPS.
[0470] ptl_max_temporal_id[i] specifies the TemporalId of the highest sublayer representation for which level information is present in the i-th profile_tier_level() syntax structure in the VPS. The value of ptl_max_temporal_id[i] shall be in the range of 0 to vps_max_sublayers_minus1, inclusive. When vps_max_sublayers_minus1 is equal to 0, the value of ptl_max_temporal_id[i] is inferred to be equal to 0. When vps_max_sublayers_minus1 is greater than 0 and vps_all_layers_same_num_sublayers_flag is equal to 1, the value of ptl_max_temporal_id[i] is inferred to be equal to vps_max_sublayers_minus1.
[0471] vps_ptl_alignment_zero_bit shall be equal to 0.
[0472] ols_ptl_idx[i] specifies the index of the profile_tier_level() syntax structure in the list of profile_tier_level() syntax structures in the VPS that applies to the i-th OLS. When present, the value of ols_ptl_idx[i] shall be in the range of 0 to vps_num_ptls_minus1, inclusive. When vps_num_ptls_minus1 is equal to 0, the value of ols_ptl_idx[i] is inferred to be equal to 0.
[0473] When NumLayersInOls[i] is equal to 1, the profile_tier_level() syntax structure applicable to the i-th OLS is also present in the SPS referenced by the layers in the i-th OLS. A requirement of bitstream conformance is that when NumLayersInOls[i] is equal to 1, the profile_tier_level() syntax structure signaled in the VPS and SPS for the i-th OLS shall be the same.
[0474] vps_num_dpb_params specifies the number of dpb_parameters() syntax structures in the VPS. The value of vps_num_dpb_params should be between 0 and 16 (inclusive). When not present, the value of vps_num_dpb_params is inferred to be equal to 0.
[0475] The vps_sublayer_dpb_params_present_flag is used to control the presence of the max_dec_pic_buffering_minus1[], max_num_reorder_pics[], and max_latency_increase_plus1[] syntax elements in the dpb_parameters() syntax structure in the VPS. When not present, the vps_sub_dpb_params_info_present_flag is inferred to be equal to 0.
[0476] dpb_max_temporal_id[i] specifies the TemporalId of the highest sublayer representation for which DPB parameters may be present in the i-th dpb_parameters() syntax structure in the VPS. The value of dpb_max_temporal_id[i] shall be in the range of 0 to vps_max_sublayers_minus1, inclusive. When vps_max_sublayers_minus1 is equal to 0, the value of dpb_max_temporal_id[i] is inferred to be equal to 0. When vps_max_sublayers_minus1 is greater than 0 and vps_all_layers_same_num_sublayers_flag is equal to 1, the value of dpb_max_temporal_id[i] is inferred to be equal to vps_max_sublayers_minus1.
[0477] ols_dpb_pic_width[i] specifies the width of each picture storage buffer of the i-th OLS, in units of luma samples.
[0478] ols_dpb_pic_height[i] specifies the height of each picture storage buffer of the i-th OLS, in units of luminance samples.
[0479] ols_dpb_params_idx[i] specifies the index of the dpb_parameters() syntax structure in the list of dpb_parameters() syntax structures in the VPS that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params-1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.
[0480] When NumLayersInOls[i] is equal to 1, the dpb_parameters() syntax structure applicable to the i-th OLS exists in the SPS referenced by the layer in the i-th OLS.
[0481] vps_general_hrd_params_present_flag equal to 1 specifies that the syntax structure general_hrd_parameters() and other HRD parameters are present in the VPS RBSP syntax structure. vps_general_hrd_params_present_flag equal to 0 specifies that the syntax structure general_hrd_parameters() and other HRD parameters are not present in the VPS RBSP syntax structure. When not present, the value of vps_general_hrd_params_present_flag is inferred to be equal to 0.
[0482] When NumLayersInOls[i] is equal to 1, the general_hrd_parameters() syntax structure applicable to the i-th OLS is present in the SPS referenced by the layers in the i-th OLS.
[0483] vps_sublayer_cpb_params_present_flag equal to 1 specifies that the i-th ols_hrd_parameters() syntax structure in the VPS contains HRD parameters for sublayer representation, where TemporalId is between 0 and hrd_max_tid[i] (inclusive). vps_sublayer_cpb_params_present_flag equal to 0 specifies that the i-th ols_hrd_parameters() syntax structure in the VPS contains HRD parameters for sublayer representation, where TemporalId is equal to hrd_max_tid[i] only. When vps_max_sublayers_minus1 is equal to 0, the value of vps_sublayer_cpb_params_present_flag is inferred to be equal to 0.
[0484] When vps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters of the sublayer representation with TemporalId in the range of 0 to hrd_max_tid[i]-1 (inclusive) are inferred to be the same as the HRD parameters of the sublayer representation with TemporalId equal to hrd_max_tid[i]. This includes the HRD parameters starting from the fixed_pic_rate_general_flag[i] syntax element up to the sublayer_hrd_parameters(i) syntax structure under the "if (general_vcl_hrd_params_present_flag)" condition in the ols_hrd_parameters syntax structure.
[0485] num_ols_hrd_params_minus1 plus 1 specifies the number of ols_hrd_parameters() syntax structures present in the general_hrd_parameters() syntax structure when vps_general_hrd_params_present_flag is equal to 1. The value of num_ols_hrd_params_minus1 shall be in the range of 0 to TotalNumOlss-1, inclusive.
[0486] hrd_max_tid[i] specifies the TemporalId of the highest sublayer representation for which the HRD parameters are contained in the i-th ols_hrd_parameters() syntax structure. The value of hrd_max_tid[i] shall be in the range of 0 to vps_max_sublayers_minus1, inclusive. When vps_max_sublayers_minus1 is equal to 0, the value of hrd_max_tid[i] is inferred to be equal to 0. When vps_max_sublayers_minus1 is greater than 0 and vps_all_layers_same_num_sublayers_flag is equal to 1, the value of hrd_max_tid[i] is inferred to be equal to vps_max_sublayers_minus1.
[0487] ols_hrd_idx[i] specifies the index of the ols_hrd_parameters() syntax structure in the list of ols_hrd_parameters() syntax structures in the VPS that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. The value of ols_hrd_idx[[i]] shall be in the range of 0 to num_ols_hrd_params_minus1, inclusive.
[0488] When NumLayersInOls[i] is equal to 1, the ols_hrd_parameters() syntax structure applicable to the i-th OLS is present in the SPS referenced by the layers in the i-th OLS.
[0489] If the value of num_ols_hrd_param_minus1+1 is equal to TotalNumOlss, then the value of ols_hrd_idx[i] is inferred to be equal to i. Otherwise, when NumLayersInOls[i] is greater than 1 and num_ols_hrd_params_minus1 is equal to 0, the value of ols_hrd_idx[i] is inferred to be equal to 0.
[0490] vps_extension_flag equal to 0 specifies that no vps_extension_data_flag syntax element is present in the VPS RBSP syntax structure. vps_extension_flag equal to 1 specifies that the vps_extension_data_flag syntax element is present in the VPS RBSP syntax structure.
[0491] The vps_extension_data_flag may have any value. Its presence and value do not affect the conformance of a decoder to the profile specified in this version of this specification. Decoders conforming to this version of this specification shall ignore all vps_extension_data_flag syntax elements.
[0492] 7.4.3.3 Sequence Parameter Set RBSP Semantics
[0493] The SPS RBSP shall be available to the decoding process before being referenced, included in at least one AU (with TemporalId equal to 0), or provided by external means.
[0494] All SPS NAL units in a CVS with a specific value of sps_seq_parameter_set_id shall have the same content.
[0495] sps_seq_parameter_set_id provides an identifier for the SPS for reference by other syntax elements.
[0496] Regardless of the value of nuh_layer_id, SPS NAL units share the same value space of sps_seq_parameter_set_id.
[0497] Let spsLayerId be the value of nuh_layer_id of a specific SPS NAL unit, and vclLayerId be the value of nuh_layer_id of a specific VCL NAL unit. A specific VCL NAL unit shall not refer to a specific SPS NAL unit unless spsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to spsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.
[0498] When sps_video_parameter_set_id is greater than 0, it specifies the value of vps_video_parameter_set_id of the VPS referenced by the SPS.
[0499] When sps_video_parameter_set_id is equal to 0, the following applies:
[0500] –SPS does not refer to VPS.
[0501] – When decoding each CLVS that references an SPS, no VPS is referenced.
[0502] The value of –vps_max_layers_minus1 is inferred to be equal to 0.
[0503] - A CVS shall contain only one layer (ie, all VCL NAL units in a CVS shall have the same nuh_layer_id value).
[0504] –The value of GeneralLayerIdx[nuh_layer_id] is inferred to be equal to 0.
[0505] – The value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is inferred to be equal to 1.
[0506] When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the nuh_layer_id of the SPS referenced by the CLVS with a specific nuh_layer_id value nuhLayerId shall be equal to nuhLayerId.
[0507] The value of sps_video_parameter_set_id shall be the same in all SPSs referenced by CLVS in CVS.
[0508] sps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that may exist in each CLVS referencing the SPS. The value of sps_max_sublayers_minus1 shall be in the range of 0 to vps_max_sublayers_minus1, inclusive.
[0509] sps_reserved_zero_4bits shall be equal to 0 in a bitstream conforming to this version of this specification. Other values of sps_reserved_zero_4bits are reserved for future use by ITU-T | ISO / IEC.
[0510] sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies the presence of the profile_tier_level() syntax structure and the dpb_parameters() syntax structure in the SPS. Furthermore, the general_hrd_parameters() syntax structure and the ols_hrd_parameters() syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies the absence of these four syntax structures in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]].
[0511] gdr_enabled_flag equal to 1 specifies that GDR pictures may be present in the CLVS that references the SPS. gdr_enabled_flag equal to 0 specifies that GDR pictures are not present in the CLVS that references the SPS.
[0512] chroma_format_idc specifies the chroma samples relative to the luma samples as specified in clause 6.2.
[0513] separate_colour_plane_flag equal to 1 specifies that the three color components of the 4:4:4 chroma format are coded separately. separate_colour_plane_flag equal to 0 specifies that the color components are not coded separately. When separate_colour_plane_flag is not present, it is inferred to be equal to 0. When separate_colour_plane_flag is equal to 1, the codec picture consists of three separate components, each consisting of the coded samples of one color plane (Y, Cb, or Cr), and uses the monochrome codec syntax. In this case, each color plane is associated with a specific_color_plane_id value.
[0514] NOTE 1 – There is no dependency in the decoding process between color planes with different color_plane_id values. For example, the decoding process of a monochrome picture with one color_plane_id value does not use any data from monochrome pictures with different color_plane_id values for inter prediction.
[0515] Depending on the value of separate_colour_plane_flag, the value of the variable ChromaArrayType is assigned as follows:
[0516] – If separate_colour_plane_flag is equal to 0, ChromaArrayType is set equal to chroma_format_idc.
[0517] – Otherwise (separate_colour_plane_flag is equal to 1), ChromaArrayType is set equal to 0.
[0518] res_change_in_clvs_allowed_flag equal to 1 specifies that the picture spatial resolution may change within a CLVS referencing an SPS. res_change_in_clvs_allowed_flag equal to 0 specifies that the picture spatial resolution will not change within any CLVS referencing an SPS.
[0519] pic_width_max_in_luma_samples specifies the maximum width of each decoded picture that references the SPS, in units of luma samples. pic_width_max_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8,MinCbSizeY).
[0520] A requirement for bitstream conformance is that for any OLS with OLS index i that contains one or more referenced SPS layers, the value of pic_width_max_in_luma_samples shall be less than or equal to the value of ols_dpb_pic_width[i].
[0521] pic_height_max_in_luma_samples specifies the maximum height of each decoded picture that references the SPS, in units of luma samples. pic_height_max_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8,MinCbSizeY).
[0522] It is a requirement of bitstream conformance that for any OLS of OLS index i containing one or more layers referencing an SPS, the value of pic_height_max_in_luma_samples shall be less than or equal to the value of ols_dpb_pic_height[i].
[0523] sps_conformance_window_flag equal to 1 indicates that the conformance cropping window offset parameter immediately follows in the SPS. sps_conformance_window_flag equal to 0 indicates that the conformance cropping window offset parameter is not present in the SPS.
[0524] sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset specify the cropping window applied to the picture, where 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. When sps_conformance_window_flag is equal to 0, the values of sps_conf_win_left_offset, sps_conf_win_right_offset, sps_conf_win_top_offset, and sps_conf_win_bottom_offset are inferred to be equal to 0.
[0525] The conforming cropping window contains luma samples with horizontal picture coordinates from SubWidthC*sps_conf_win_left_offset to pic_width_max_in_luma_samples-(SubWidthC*sps_conf_win_right_offset+1) and vertical picture coordinates from SubHeightC*sps_conf_win_top_offset to pic_height_max_in_luma_samples-(SubHeightC*sps_conf_win_bottom_offset+1), inclusive.
[0526] The value of SubWidthC*(sps_conf_win_left_offset+sps_conf_win_right_offset) should be less than pic_width_max_in_luma_samples, and the value of SubHeightC*(sps_conf_win_top_offset+sps_conf_win_bottom_offset) should be less than pic_height_max_in_luma_samples.
[0527] 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.
[0528] NOTE 2 – The consistency crop window offset parameter applies only to output. All internal decoding processes are applied to the uncropped picture size.
[0529] sps_log2_ctu_size_minus5 plus 5 specifies the luma codec treeblock size for each CTU. The value of sps_log2_ctu_size_minus5 shall be in the range of 0 to 2, inclusive. The value 3 of sps_log2_ctu_size_minus5 is reserved for future use by ITU-T | ISO / IEC.
[0530] The variables CtbLog2SizeY and CtbSizeY are derived as follows:
[0531] CtbLog2SizeY=sps_log2_ctu_size_minus5+5 (43)
[0532] CtbSizeY=1< <CtbLog2SizeY (44)
[0533] subpic_info_present_flag is equal to 1 and specifies that sub-picture information of CLVS is present and there may be one or more sub-pictures in each picture of CLVS. subpic_info_present_flag is equal to 0 and specifies that sub-picture information of CLVS is not present and there may be only one sub-picture in each picture of CLVS.
[0534] When res_change_in_clvs_allowed_flag is equal to 1, the value of subpic_info_present_flag shall be equal to 0.
[0535] NOTE 3 – When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the sub-pictures of the input bitstream of the sub-bitstream extraction process, it may be necessary to set the value of subpic_info_present_flag equal to 1 in the RBSP of the SPS.
[0536] sps_num_subpics_minus1 plus 1 specifies the number of sub-pictures in each picture in the CLVS. The value of sps_num_subpics_minus1 shall be in the range of 0 to Ceil(pic_width_max_in_luma_samples ÷ CtbSizeY)*Ceil(pic_height_max_in_luma_samples ÷ CtbSizeY) – 1, inclusive. When not present, the value of sps_num_subpics_minus1 is inferred to be equal to 0.
[0537] sps_independent_subpics_flag equal to 1 specifies that no intra prediction, inter prediction, and loop filtering operations may be performed across any sub-picture boundaries in the CLVS. sps_independent_subpics_flag equal to 0 specifies that inter prediction or loop filtering operations may be allowed across sub-picture boundaries in the CLVS. When not present, the value of sps_independent_subpics_flag is inferred to be equal to 0.
[0538] subpic_ctu_top_left_x[i] specifies the horizontal position of the left top CTU of the i-th sub-picture in units of CTB size. The length of the syntax element is Ceil(Log2((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of subpic_ctu_top_left_x[i] is inferred to be equal to 0.
[0539] subpic_ctu_top_left_y[i] specifies the vertical position of the top left CTU of the i-th sub-picture in units of the CTB size. The length of the syntax element is Ceil(Log2((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of subpic_ctu_top_left_y[i] is inferred to be equal to 0.
[0540] subpic_width_minus1[i] plus 1 specifies the width of the i-th sub-picture in units of CtbSizeY. The length of the syntax element is Ceil(Log2((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of subpic_width_minus1[i] is inferred to be equal to ((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-subpic_ctu_top_left_x[i]-1.
[0541] subpic_height_minus1[i] plus 1 specifies the height of the i-th sub-picture in units of CtbSizeY. The length of this syntax element is Ceil(Log2((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. When not present, the value of subpic_height_minus1[i] is inferred to be equal to ((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-subpic_ctu_top_left_y[i]-1.
[0542] subpic_treated_as_pic_flag[i] equal to 1 specifies that the i-th subpicture of each codec picture in the CLVS is treated as a picture during decoding, excluding loop filtering operations. subpic_treated_as_pic_flag[i] equal to 0 specifies that the i-th subpicture of each codec picture in the CLVS is not treated as a picture during decoding, excluding loop filtering operations. When not present, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to sps_independent_subpics_flag.
[0543] When subpic_treated_as_pic_flag[i] is equal to 1, bitstream conformance is required that, in an OLS that includes a layer containing the i-th sub-picture as an output layer, all of the following conditions are true for each output layer and its reference layers:
[0544] – All pictures in the output layer and its reference layers shall have the same value of pic_width_in_luma_samples and the same value of pic_height_in_luma_samples.
[0545] – All SPSs referenced by an output layer and its reference layers shall have the same value of sps_num_subpics_minus1 and shall have the same values of subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j] and loop_filter_across_subpic_enabled_flag[j], respectively (for each value of j in the range of 0 to sps_num_subpics_minus1, inclusive).
[0546] – For each value of j in the range 0 to sps_num_subpics_minus1 (inclusive), all pictures in each access unit in the output layer and its reference layers shall have the same value of SubpicIdVal[j].
[0547] loop_filter_across_subpic_enabled_flag[i] equal to 1 specifies that loop filtering operations can be performed across the boundaries of the i-th subpic in each coded picture in the CLVS.
[0548] loop_filter_across_subpic_enabled_flag[i] is equal to 0. In-loop filtering is not performed across the boundary of the i-th subpic in each coded picture in the CLVS. When not present, the value of loop_filter_across_subpic_enabled_pic_flag[i] is inferred to be equal to 1-sps_independent_subpics_flag.
[0549] One requirement for bitstream conformance is that sub-pictures should be shaped such that each sub-picture, when decoded, should have its entire left and upper borders consisting of either picture boundaries or boundaries of previously decoded sub-pictures.
[0550] sps_subpic_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax element sps_subpic_id[i], the syntax element pps_subpic_id[i] (if present), and the syntax element slice_subpic_id (if present). The value of sps_subpic_id_len_minus1 shall be between 0 and 15 (inclusive). The value of 1<<(sps_subpic_id_len_minus1+1) shall be greater than or equal to sps_num_subpics_minus1+1.
[0551] subpic_id_mapping_explicitly_signalled_flag equal to 1 specifies that sub-picture ID mapping is explicitly signaled in the PPS of a codec picture reference for an SPS or CLVS. subpic_id_mapping_explicitly_signalled_flag equal to 0 specifies that sub-picture ID mapping is not explicitly signaled for CLVS. When not present, the value of subpic_id_mapping_explicitly_signalled_flag is inferred to be equal to 0.
[0552] subpic_id_mapping_in_sps_flag equal to 1 specifies that sub-picture ID mapping is signaled in the SPS when subpic_id_mapping_explicitly_signalled_flag is equal to 1. subpic_id_mapping_in_sps_flag equal to 0 specifies that sub-picture ID mapping is signaled in the PPS referenced by the coded picture of the CLVS when subpic_id_mapping_explicitly_signalled_flag is equal to 1.
[0553] sps_subpic_id[i] specifies the sub-picture ID of the i-th sub-picture. The length of the sps_subpic_id[i] syntax element is sps_subpic_id_len_minus1+1 bits.
[0554] bit_depth_minus8 specifies the bit depth BitDepth of the samples of the luma array and chroma array, as well as the value QpBdOffset of the luma and chroma quantization parameter range offset, as shown below:
[0555] BitDepth=8+bit_depth_minus8 (45)
[0556] QpBdOffset=6*bit_depth_minus8 (46)
[0557] bit_depth_minus8 should be in the range of 0 to 8 (inclusive).
[0558] sps_entropy_coding_sync_enabled_flag equal to 1 specifies that a specific synchronization procedure for context variables is called before decoding a CTU that includes the first CTB of a CTB row in each slice in each picture of the SPS, and that a specific storage procedure for context variables is called after decoding a CTU that includes the first CTB of a CTB row in each slice in each picture of the SPS.
[0559] sps_entropy_coding_sync_enabled_flag equal to 0 specifies that a specific synchronization procedure for context variables does not need to be called before decoding a CTU, which includes the first CTB of a CTB row in each slice in each picture of the SPS, and that a specific storage procedure for context variables does not need to be called after decoding a CTU, which includes the first CTB of a CTB row in each slice in each picture of the SPS.
[0560] sps_wpp_entry_point_offsets_present_flag equal to 1 specifies that signaling of entry point offsets for CTU rows may be present in the slice header of a picture referencing an SPS when sps_entropy_coding_sync_enabled_flag is equal to 1. sps_wpp_entry_point_offsets_present_flag equal to 0 specifies that signaling of entry point offsets for CTU rows is absent in the slice header of a picture referencing an SPS. When not present, the value of sps_wpp_entry_point_offsets_present_flag is inferred to be equal to 0.
[0561] sps_weighted_pred_flag equal to 1 specifies that weighted prediction may be applied to P slices referencing the SPS. sps_weighted_pred_flag equal to 0 specifies that weighted prediction is not applied to P slices referencing the SPS.
[0562] sps_weighted_bipred_flag equal to 1 specifies that explicit weighted prediction may be applied to B slices referencing the SPS. sps_weighted_bipred_flag equal to 0 specifies that explicit weighted prediction is not applied to B slices referencing the SPS.
[0563] log2_max_pic_order_cnt_lsb_minus4 specifies the value of the variable MaxPicOrderCntLsb used for picture order count during decoding, as shown below:
[0564] MaxPicOrderCntLsb=2 (log2_max_pic_order_cnt_lsb_minus4+4) (47)
[0565] The value of log2_max_pic_order_cnt_lsb_minus4 should be between 0 and 12 (inclusive).
[0566] sps_poc_msb_flag equal to 1 specifies that the ph_poc_msb_present_flag syntax element is present in the PH referencing the SPS. sps_poc_msb_flag equal to 0 specifies that the ph_poc_msb_present_flag syntax element is not present in the PH referencing the SPS.
[0567] poc_msb_len_minus1 plus 1 specifies the length (in bits) of the poc_msb_val syntax element when appearing in a PH referencing an SPS. The value of poc_msb_len_minus1 shall be between 0 and 32-log2_max_pic_order_cnt_lsb_minus4-5, inclusive.
[0568] num_extra_ph_bits_bytes specifies the number of bytes of extra bits in the PH syntax structure of a codec picture referencing an SPS. In bitstreams conforming to this version of this specification, the value of num_extra_ph_bits_bytes shall be equal to 0. Although this version of this specification requires the value of num_extra_ph_bits_bytes to be equal to 0, decoders conforming to this version of this specification shall allow the value of num_extra_ph_bits_bytes to be equal to 1 or 2 in the syntax.
[0569] num_extra_sh_bits_bytes specifies the number of bytes of extra bits in the slice header of the codec picture referencing the SPS. In bitstreams conforming to this version of this specification, the value of num_extra_sh_bits_bytes shall be equal to 0. Although this version of this specification requires the value of num_extra_sh_bits_bytes to be equal to 0, decoders conforming to this version of this specification shall allow the value of num_extra_sh_bits_bytes to be equal to 1 or 2 in the syntax.
[0570] sps_sublayer_dpb_params_flag is used to control the presence of the max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i], and max_latency_increase_plus1[i] syntax elements in the dpb_parameters() syntax structure in the SPS. When not present, the value of sps_sub_dpb_params_info_present_flag is inferred to be equal to 0.
[0571] long_term_ref_pics_flag equal to 0 specifies that no LTRP is used for inter prediction of any codec picture in the CLVS. long_term_ref_pics_flag equal to 1 specifies that LTRP may be used for inter prediction of one or more codec pictures in the CLVS.
[0572] inter_layer_ref_pics_present_flag equal to 0 specifies that no ILRP is used for inter prediction of any codec picture in the CLVS. inter_layer_ref_pic_flag equal to 1 specifies that ILRP may be used for inter prediction of one or more codec pictures in the CLVS. When sps_video_parameter_set_id is equal to 0, the value of inter_layer_ref_pics_present_flag is inferred to be equal to 0. When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the value of inter_layer_ref_pics_present_flag shall be equal to 0.
[0573] sps_idr_rpl_present_flag equal to 1 specifies that the reference picture list syntax element is present in the slice header of the IDR picture. sps_idr_rpl_present_flag equal to 0 specifies that the reference picture list syntax element is not present in the slice header of the IDR picture.
[0574] rpl1_same_as_rpl0_flag equal to 1 specifies that the syntax element num_ref_pic_lists_in_sps[1] and the syntax structure ref_pic_list_struct(1, rplsIdx) are not present, and the following applies:
[0575] – The value of num_ref_pic_lists_in_sps[1] is inferred to be equal to the value of num_ref_pic_lists_in_sps[0].
[0576] – The value of each syntax element in ref_pic_list_struct(1,rplsIdx) is inferred to be equal to the value of the corresponding syntax element in ref_pic_list_struct(0,rplsIdx) of rplsIdx, ranging from 0 to num_ref_pic_lists_in_sps[0]-1.
[0577] num_ref_pic_lists_in_sps[i] specifies the number of ref_pic_list_struct(listIdx, rplsIdx) syntax structures contained in the SPS with listIdx equal to i. The value of num_ref_pic_lists_in_sps[i] shall be between 0 and 64 (inclusive).
[0578] NOTE 4 – For each value of listIdx (equal to 0 or 1), the decoder shall allocate memory for a total number of num_ref_pic_lists_in_sps[i]+1ref_pic_list_struct(listIdx, rplsIdx) syntax structures, since there may be one ref_pic_list_struct(listIdx, rplsIdx) syntax structure signaled directly in the slice header of the current picture.
[0579] qtbtt_dual_tree_intra_flag equal to 1 specifies that, for I slices, each CTU is split into codec units with 64×64 luma samples using implicit quadtree partitioning, and these codec units are the roots of two separate codec tree syntax structures for luma and chroma. qtbtt_dual_tree_intra_flag equal to 0 specifies that separate codec tree syntax structures are not used for I slices. When qtbtt_dual_tree_intra_flag is not present, it is inferred to be equal to 0.
[0580] log2_min_luma_coding_block_size_minus2 plus 2 specifies the minimum luma coding block size. The value of log2_min_luma_coding_block_size_minus2 shall be in the range of 0 to Min(4,sps_log2_ctu_size_minus5+3), inclusive.
[0581] The variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC, and Vsize are derived as follows:
[0582] MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2 (48)
[0583] MinCbSizeY=1< <MinCbLog2SizeY (49)
[0584] IbcBufWidthY=256*128 / CtbSizeY (50)
[0585] IbcBufWidthC=IbcBufWidthY / SubWidthC (51)
[0586] VSize=Min(64,CtbSizeY) (52)
[0587] The value of MinCbSizeY should be less than or equal to VSize.
[0588] Derive the variables CtbWidthC and CtbHeightC that respectively specify the width and height of the array of each chroma CTB as follows:
[0589] – If chroma_format_idc is equal to 0 (monochrome) or separate_colour_plane_flag is equal to 1, then both CtbWidthC and CtbHeightC are equal to 0.
[0590] – Otherwise, derive CtbWidthC and CtbHeightC as follows:
[0591] CtbWidthC = CtbSizeY / SubWidthC (53)
[0592] CtbHeightC = CtbSizeY / SubHeightC (54)
[0593] For log2BlockWidth in the range from 0 to 4 (inclusive) and log2BlockHeight in the range from 0 to 4 (inclusive), call the upper-right diagonal scan order array initialization process specified in Clause 6.5.2 with 1 << log2BlockWidth and 1 << log2BlockHeight as inputs, and assign the output to DiagScanOrder[log2BlockWidth][log2BlockHeight].
[0594] For log2BlockWidth in the range from 0 to 6 (inclusive) and log2BlockHeight in the range from 0 to 6 (inclusive), call the horizontal and vertical traversal scan order array initialization process specified in Clause 6.5.3 with 1 << log2BlockWidth and 1 << log2BlockHeight as inputs, and assign the output to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].
[0595] partition_constraints_override_enabled_flag equal to 1 specifies that partition_constraints_override_flag is present in the PH referencing the SPS. partition_constraints_override_enabled_flag equal to 0 specifies that partition_constraints_override_flag is not present in the PH referencing the SPS.
[0596] sps_log2_diff_min_qt_min_cb_intra_slice_luma specifies the default difference between the base-2 logarithm of the minimum size among the luma samples of the luma leaf blocks resulting from a quadtree partitioning of a CTU and the base-2 logarithm of the minimum decoded block size among the luma samples of the luma CU in the slice, where slice_type is equal to 2(1) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_min_qt_min_cb_luma present in the PH of the referenced SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_luma should be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. The base-2 logarithm of the minimum size among the luma samples of the luma leaf blocks resulting from a quadtree partitioning of a CTU is derived as follows:
[0597] MinQtLog2SizeIntraY=sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY (55)
[0598] sps_max_mtt_hierarchy_depth_intra_slice_luma specifies the default maximum hierarchy depth for codec units resulting from quadtree partitioning of quadtree leaves in slices with slice_type equal to 2(I) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth can be overridden by ph_max_mtt_hierarchy_depth_intra_slice_luma in the PH of the referenced SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive.
[0599] sps_log2_diff_max_bt_min_qt_intra_slice_luma specifies the default difference between the base-2 logarithm of the maximum size (width or height) in the luma samples of a luma codec block that can use binary partitioning and the minimum size (width or height) in the luma samples of a luma leaf block that results from a quadtree partition of a CTU in a slice with slice_type equal to 2(I) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_bt_min_qt_luma present in the PH of the referenced SPS. The value of sps_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When sps_log2_diff_max_bt_min_qt_intra_slice_luma is not present, the value of sps_log2_diff_max_bt_min_qt_intra_slice_luma is inferred to be equal to 0.
[0600] sps_log2_diff_max_tt_min_qt_intra_slice_luma specifies the default difference between the base-2 logarithm of the maximum size (width or height) among the luma samples of a luma codec block that can use ternary partitioning and the minimum size (width or height) among the luma samples of a luma leaf block that results from a quadtree partition of a CTU with slice_type equal to 2(I) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_tt_min_qt_luma present in the PH of the referenced SPS. The value of sps_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When sps_log2_diff_max_tt_min_qt_intra_slice_luma is not present, the value of sps_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to 0.
[0601] sps_log2_diff_min_qt_min_cb_inter_slice specifies the default difference between the base-2 logarithm of the minimum size in the luma samples of the luma leaf blocks resulting from a quadtree partitioning of a CTU and the base-2 logarithm of the minimum luma codec block size in the luma samples of the luma CU in a slice, where slice_type is equal to 0 (B) or 1 (P) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_min_qt_min_cb_luma present in the PH of the referenced SPS. The value of sps_log2_diff_min_qt_min_cb_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. The base-2 logarithm of the minimum size in the luma samples of the luma leaf blocks resulting from a quadtree partitioning of a CTU is derived as follows:
[0602] MinQtLog2SizeInterY=sps_log2_diff_min_qt_min_cb_inter_slice+MinCbLog2SizeY (56)
[0603] sps_max_mtt_hierarchy_depth_inter_slice specifies the default maximum hierarchy depth for codec units generated after multi-type tree partitioning of quadtree leaves in slices with slice_type equal to 0 (B) or 1 (P) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth can be overridden by ph_max_mtt_hierarchy_depth_inter_slice present in the PH of the referenced SPS. The value of sps_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive.
[0604] sps_log2_diff_max_bt_min_qt_inter_slice specifies the default difference between the base-2 logarithm of the maximum dimension (width or height) of the luma samples of a luma codec block that can use binary partitioning and the minimum dimension (width or height) of the luma samples of a luma leaf block that results from a quadtree partition of a CTU in a slice with slice_type equal to reference 0 (B) or 1 (P). When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by referencing ph_log2_diff_max_bt_min_qt_luma present in the PH of the SPS. The value of sps_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When sps_log2_diff_max_bt_min_qt_inter_slice is not present, the value of sps_log2_diff_max_bt_min_qt_inter_slice is inferred to be equal to 0.
[0605] sps_log2_diff_max_tt_min_qt_inter_slice specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luma samples of a luma codec block that can use ternary partitioning and the minimum size (width or height) of the luma samples of a luma leaf block that is generated by quadtree partitioning of a CTU in a slice whose slice_type is equal to 0 (B) or 1 (P) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_tt_min_qt_luma present in the PH of the referenced SPS. The value of sps_log2_diff_max_tt_min_qt_inter_slice should be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When sps_log2_diff_max_tt_min_qt_inter_slice is not present, the value of sps_log2_diff_max_tt_min_qt_inter_slice is inferred to be equal to 0.
[0606] sps_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the default difference between the base-2 logarithm of the minimum size in the luma samples of the chroma leaf blocks resulting from a quadtree partition of a chroma CTU (with treeType equal to DUAL_TREE_CHROMA) and the base-2 logarithm of the minimum decoded block size in the luma samples of the chroma CU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_min_qt_min_cb_chroma present in the PH of the referenced SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of sps_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to 0. The base-2 logarithm of the minimum size among the luma samples of the chroma leaf blocks resulting from the quadtree partitioning of a CTU with treeType equal to DUAL_TREE_CHROMA is derived as follows:
[0607] MinQtLog2SizeIntraC=sps_log2_diff_min_qt_min_cb_intra_slice_chroma+MinCbLog2SizeY (57)
[0608] sps_max_mtt_hierarchy_depth_intra_slice_chroma specifies the default maximum hierarchy depth for chroma codec units resulting from multi-type tree partitioning of chroma quad leaves with treeType equal to DUAL_TREE_CHROMA in slices with slice_type equal to 2(1) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth can be overridden by ph_max_mtt_hierarchy_depth_chroma present in the PH of the referenced SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When not present, the value of sps_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to 0.
[0609] sps_log2_diff_max_bt_min_qt_intra_slice_chroma specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luma samples of a chroma codec block that can use binary partitioning and the minimum size (width or height) of the luma samples of a chroma leaf block that results from a quadtree partition of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by ph_log2_diff_max_bt_min_qt_chroma present in the PH of the referenced SPS. The value of sps_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC, inclusive. When sps_log2_diff_max_bt_min_qt_intra_slice_chroma is not present, the value of sps_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred to be equal to 0.
[0610] sps_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luma samples of a chroma codec block that can use ternary partitioning and the minimum size (width or height) of the luma samples of a chroma leaf block resulting from a quadtree partition of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) of the referenced SPS. The default difference can be overridden by ph_log2_diff_max_tt_min_qt_chroma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC, inclusive. When sps_log2_diff_max_tt_min_qt_intra_slice_chroma is not present, the value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to 0.
[0611] sps_max_luma_transform_size_64_flag equal to 1 specifies that the maximum transform size in luma samples is equal to 64. sps_max_luma_transform_size_64_flag equal to 0 specifies that the maximum transform size in luma samples is equal to 32.
[0612] When CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag shall be equal to 0.
[0613] The variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, and MaxTbSizeY are derived as follows:
[0614] MinTbLog2SizeY=2 (58)
[0615] MaxTbLog2SizeY=sps_max_luma_transform_size_64_flag? 6:5 (59)
[0616] MinTbSizeY=1< <MinTbLog2SizeY (60)
[0617] MaxTbSizeY=1< <MaxTbLog2SizeY (61)
[0618] sps_joint_cbcr_enabled_flag equal to 0 specifies disabling of joint coding of chroma residual. sps_joint_cbcr_enabled_flag equal to 1 specifies enabling of joint coding of chroma residual. When not present, the value of sps_joint_cbcr_enabled_flag is inferred to be equal to 0.
[0619] When sps_joint_cbcr_enabled_flag is equal to 1, same_qp_table_for_chroma equal to 1 specifies that only one chroma QP mapping table is signaled, and this table applies to both Cb and Cr residuals, and additionally to the joint Cb-Cr residual. same_qp_table_for_chroma equal to 0 specifies that when sps_joint_cbcr_enabled_flag is equal to 1, chroma QP mapping tables are signaled in the SPS, two for Cb and Cr and one for the joint Cb-Cr. When same_qp_table_for_chroma is not present in the bitstream, the value of same_qp_table_for_chroma is inferred to be equal to 1.
[0620] qp_table_start_minus26[i] plus 26 specifies the starting luma and chroma QPs for describing the i-th chroma QP map. The value of qp_table_start_minus26[i] shall be in the range of -26 - QpBdOffset to 36 (inclusive). When qp_table_start_minus26[i] is not present in the bitstream, the value of qp_table_start_minus26[i] is inferred to be equal to 0.
[0621] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the i-th chroma QP map table. The value of num_points_in_qp_table_minus1[i] shall be in the range of 0 to 63+QpBdOffset, inclusive. When num_points_in_qp_table_minus1[0] is not present in the bitstream, the value of num_points_in_qp_table_minus1[0] is inferred to be equal to 0.
[0622] delta_qp_in_val_minus1[i][j] specifies the incremental value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP map. When delta_qp_in_val_minus1[0][j] is not present in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.
[0623] delta_qp_diff_val[i][j] specifies the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP map.
[0624] The i-th chroma QP mapping table ChromaQpTable[i] (for i=0…numQpTables-1) is derived as follows:
[0625]
[0626]
[0627] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[1][k] and ChromaQpTable[2][k] are set equal to ChromaQpTable[0][k] (for k in the range -QpBdOffset to 63, inclusive).
[0628] The bitstream conformance requirement is that the values of qpInVal[i][j] and qpOutVal[i][j] shall be in the range -QpBdOffset to 63 (inclusive) for i in the range 0 to numQpTables-1 (inclusive), and for j in the range 0 to num_points_in_qp_table_minus1[i]+1 (inclusive).
[0629] sps_sao_enabled_flag equal to 1 specifies that the sample adaptive offset process is applied to the reconstructed picture after the deblocking filtering process. sps_sao_enabled_flag equal to 0 specifies that the sample adaptive offset process is not applied to the reconstructed picture after the deblocking filtering process.
[0630] sps_alf_enabled_flag equal to 0 specifies disabling of the cross-component adaptive loop filter. sps_alf_enabled_flag equal to 1 specifies enabling of the adaptive loop filter.
[0631] sps_ccalf_enabled_flag equal to 0 specifies that the cross-component adaptive loop filter is disabled. sps_ccalf_enabled_flag equal to 1 specifies that the cross-component adaptive loop filter can be enabled.
[0632] sps_transform_skip_enabled_flag equal to 1 specifies that transform_skip_flag may be present in the transform unit syntax. sps_transform_skip_enabled_flag equal to 0 specifies that transform_skip_flag is not present in the transform unit syntax.
[0633] log2_transform_skip_max_size_minus2 specifies the maximum block size for transform skipping and should be in the range of 0 to 3 (inclusive).
[0634] The variable MaxTsSize is set equal to 1<<(log2_transform_skip_max_size_minus2+2).
[0635] sps_bdpcm_enabled_flag equal to 1 specifies that intra_bdpcm_luma_flag and intra_bdpcm_chroma_flag may be present in the codec unit syntax of the intra codec unit. sps_bdpcm_enabled_flag equal to 0 specifies that intra_bdpcm_luma_flag and intra_bdpcm_chroma_flag are not present in the codec unit syntax of the intra codec unit. When not present, the value of sps_bdpcm_enabled_flag is inferred to be equal to 0.
[0636] sps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wrap motion compensation is applied in inter prediction. sps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wrap motion compensation is not applied. The value of sps_ref_wraparound_enabled_flag shall be equal to 0 when the value of (CtbSizeY / MinCbSizeY+1) is greater than (pic_width_in_luma_samples / MinCbSizeY-1), where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS.
[0637] sps_temporal_mvp_enabled_flag equal to 1 specifies that the temporal motion vector prediction value can be used in CLVS. sps_temporal_mvp_enabled_flag equal to 0 specifies that the temporal motion vector prediction value is not used in CLVS.
[0638] sps_sbtmvp_enabled_flag equal to 1 specifies that subblock-based temporal motion vector prediction can be used for decoding pictures where slice_type of all slices in the CLVS is not equal to 1. sps_sbtmvp_enabled_flag equal to 0 specifies that subblock-based temporal motion vector prediction is not used in the CLVS. When sps_sbtmvp_enabled_flag is not present, it is inferred to be equal to 0.
[0639] sps_amvr_enabled_flag equal to 1 specifies that adaptive motion vector difference resolution is used in motion vector coding and decoding. amvr_enabled_flag equal to 0 specifies that adaptive motion vector difference resolution is not used in motion vector coding and decoding.
[0640] sps_bdof_enabled_flag equal to 0 specifies disabling bidirectional optical flow inter-frame prediction. sps_bdof_enabled_flag equal to 1 specifies enabling bidirectional optical flow inter-frame prediction.
[0641] sps_bdof_pic_present_flag equal to 1 specifies that ph_disable_bdof_flag is present in the PH referencing the SPS. sps_bdof_pic_present_flag equal to 0 specifies that ph_disable_bdof_flag is not present in the PH referencing the SPS. When sps_bdof_pic_present_flag is not present, the value of sps_bdof_pic_present_flag is inferred to be equal to 0.
[0642] sps_smvd_enabled_flag equal to 1 specifies that symmetric motion vector differences can be used for motion vector decoding. sps_smvd_enabled_flag equal to 0 specifies that symmetric motion vector differences are not used in motion vector encoding and decoding.
[0643] sps_dmvr_enabled_flag equal to 1 specifies enabling of decoder motion vector optimization based on inter-frame bi-prediction. sps_dmvr_enabled_flag equal to 0 specifies disabling of decoder motion vector optimization based on inter-frame bi-prediction.
[0644] sps_dmvr_pic_present_flag equal to 1 specifies that ph_disable_dmvr_flag is present in the PH referencing the SPS. sps_dmvr_pic_present_flag equal to 0 specifies that ph_disable_dmvr_flag is not present in the PH referencing the SPS. When sps_dmvr_pic_present_flag is not present, the value of sps_dmvr_pic_present_flag is inferred to be equal to 0.
[0645] sps_mmvd_enabled_flag equal to 1 specifies that the merge mode with motion vector difference is enabled. sps_mmvd_enabled_flag equal to 0 specifies that the merge mode with motion vector difference is disabled.
[0646] sps_isp_enabled_flag equal to 1 specifies that intra prediction with subpartitions is enabled. sps_isp_enabled_flag equal to 0 specifies that intra prediction with subpartitions is disabled.
[0647] sps_mrl_enabled_flag equal to 1 specifies that intra prediction with multiple reference lines is enabled. sps_mrl_enabled_flag equal to 0 specifies that intra prediction with multiple reference lines is disabled.
[0648] sps_mip_enabled_flag equal to 1 specifies that matrix-based intra prediction is enabled. sps_mip_enabled_flag equal to 0 specifies that matrix-based intra prediction is disabled.
[0649] sps_cclm_enabled_flag equal to 0 specifies disabling cross-component linear model intra prediction from luma components to chroma components. sps_cclm_enabled_flag equal to 1 specifies enabling cross-component linear model intra prediction from luma components to chroma components. When sps_cclm_enabled_flag is not present, it is inferred to be equal to 0.
[0650] sps_chroma_horizontal_collocated_flag equal to 1 specifies that the prediction process operates in a manner designed for chroma sample positions that are not horizontally shifted relative to the corresponding luma sample positions. sps_chroma_horizontal_collocated_flag equal to 0 specifies that the prediction process operates in a manner designed for chroma sample positions that are shifted right by 0.5 luma samples relative to the corresponding luma sample positions. When sps_chroma_horizontal_collocated_flag is not present, it is inferred to be equal to 1.
[0651] sps_chroma_vertical_collocated_flag equal to 1 specifies that the prediction process operates in a manner designed for chroma sample positions that are not vertically shifted relative to the corresponding luma sample positions. sps_chroma_vertical_collocated_flag equal to 0 specifies that the prediction process operates in a manner designed for chroma sample positions that are shifted downward by 0.5 luma samples relative to the corresponding luma sample positions. When sps_chroma_vertical_collocated_flag is not present, it is inferred to be equal to 1.
[0652] sps_mts_enabled_flag equal to 1 specifies that sps_explicit_mts_intra_enabled_flag is present in the sequence parameter set RBSP syntax and that sps_explicit_mts_inter_enabled_flag is present in the sequence parameter set RBSP syntax. sps_mts_enabled_flag equal to 0 specifies that sps_explicit_mts_intra_enabled_flag is not present in the sequence parameter set RBSP syntax and that sps_explicit_mts_inter_enabled_flag is not present in the sequence parameter set RBSP syntax.
[0653] sps_explicit_mts_intra_enabled_flag equal to 1 specifies that mts_idx may be present in intra codec unit syntax. sps_explicit_mts_intra_enabled_flag equal to 0 specifies that mts_idx is not present in intra codec unit syntax. When not present, the value of sps_explicit_mts_intra_enabled_flag is inferred to be equal to 0.
[0654] sps_explicit_mts_inter_enabled_flag equal to 1 specifies that mts_idx may be present in inter-codec unit syntax. sps_explicit_mts_inter_enabled_flag equal to 0 specifies that mts_idx is not present in inter-codec unit syntax. When not present, the value of sps_explicit_mts_inter_enabled_flag is inferred to be equal to 0.
[0655] six_minus_max_num_merge_cand specifies the maximum number of merging motion vector prediction (MVP) candidates supported in the SPS to be subtracted from 6. The maximum number of merging MVP candidates MaxNumMergeCand is derived as follows:
[0656] MaxNumMergeCand=6-six_minus_max_num_merge_cand (63)
[0657] The value of MaxNumMergeCand should be in the range of 1 to 6 (inclusive).
[0658] sps_sbt_enabled_flag equal to 0 specifies that sub-block transform of inter-predicted CUs is disabled. sps_sbt_enabled_flag equal to 1 specifies that sub-block transform of inter-predicted CUs is enabled.
[0659] sps_affine_enabled_flag specifies whether affine-based motion compensation can be used for inter prediction. If sps_affine_enabled_flag is equal to 0, the syntax should be restricted so that affine-based motion compensation is not used in CLVS, and inter_affine_flag and cu_affine_type_flag are not present in the codec syntax of CLVS. Otherwise (sps_affine_enabled_flag is equal to 1), affine-based motion compensation can be used for CLVS.
[0660] five_minus_max_num_subblock_merge_cand specifies the maximum number of sub-block based merging motion vector prediction candidates supported in the SPS minus 5.
[0661] sps_affine_type_flag specifies whether motion compensation based on a 6-parameter affine model can be used for inter prediction. If sps_affine_type_flag is equal to 0, the syntax should be restricted so that motion compensation based on a 6-parameter affine model is not used in CLVS, and cu_affine_type_flag is not present in the codec unit syntax in CLVS. Otherwise (sps_affine_type_flag is equal to 1), motion compensation based on a 6-parameter affine model can be used in CLVS. When not present, the value of sps_affine_type_flag is inferred to be equal to 0.
[0662] sps_affine_amvr_enabled_flag equal to 1 specifies the use of adaptive motion vector difference resolution in motion vector coding for affine inter mode. sps_affine_amvr_enabled_flag equal to 0 specifies the use of adaptive motion vector difference resolution in motion vector coding for affine inter mode. When not present, the value of sps_affine_amvr_enabled_flag is inferred to be equal to 0.
[0663] sps_affine_prof_enabled_flag specifies whether prediction optimization using optical flow can be used for affine motion compensation. If sps_affine_prof_enabled_flag is equal to 0, affine motion compensation should not be optimized using optical flow. Otherwise (sps_affine_prof_enabled_flag is equal to 1), affine motion compensation can be optimized using optical flow. When not present, the value of sps_affine_prof_enabled_flag is inferred to be equal to 0.
[0664] sps_prof_pic_present_flag equal to 1 specifies that ph_disable_prof_flag is present in the PH referencing the SPS. sps_prof_pic_present_flag equal to 0 specifies that ph_disable_prof_flag is not present in the PH referencing the SPS. When sps_prof_pic_present_flag is not present, the value of sps_prof_pic_present_flag is inferred to be equal to 0.
[0665] sps_palette_enabled_flag equal to 1 specifies that pred_mode_plt_flag may be present in the codec unit syntax. sps_palette_enabled_flag equal to 0 specifies that pred_mode_plt_flag is not present in the codec unit syntax. When sps_palette_enabled_flag is not present, it is inferred to be equal to 0.
[0666] sps_act_enabled_flag equal to 1 specifies that adaptive color transform can be used and cu_act_enabled_flag can be present in the codec unit syntax. sps_act_enabled_flag equal to 0 specifies that adaptive color transform is not used and cu_act_enabled_flag is not present in the codec unit syntax. When sps_act_enabled_flag is not present, it is inferred to be equal to 0.
[0667] min_qp_prime_ts_minus4 specifies the minimum allowed quantization parameter for transform skip mode as follows:
[0668] QpPrimeTsMin=4+min_qp_prime_ts_minus4 (64)
[0669] The value of min_qp_prime_ts_minus4 should be in the range of 0 to 48 (inclusive).
[0670] sps_bcw_enabled_flag specifies whether bi-prediction with CU weights can be used for inter prediction. If sps_bcw_enabled_flag is equal to 0, the syntax should be restricted so that bi-prediction with CU weights is not used in CLVS and bcw_idx is not present in the codec unit syntax of CLVS. Otherwise (sps_bcw_enabled_flag is equal to 1), bi-prediction with CU weights can be used in CLVS.
[0671] sps_ibc_enabled_flag equal to 1 specifies that IBC prediction mode can be used for decoding of pictures in CLVS. sps_ibc_enabled_flag equal to 0 specifies that IBC prediction mode is not used in CLVS. When sps_ibc_enabled_flag is not present, it is inferred to be equal to 0.
[0672] six_minus_max_num_ibc_merge_cand specifies the number of cans supported by SPS to be subtracted from 6.
[0673] Maximum number of block vector prediction (BVP) candidates for IBC merging.
[0674] The maximum number of IBC merging BVP candidates, MaxNumIbcMergeCand, is derived as follows:
[0675]
[0676] sps_ciip_enabled_flag specifies that ciip_flag may be present in the codec unit syntax for an inter codec unit. sps_ciip_enabled_flag equal to 0 specifies that ciip_flag is not present in the codec unit syntax for an inter codec unit.
[0677] sps_fpel_mmvd_enabled_flag equal to 1 specifies that the merge mode with motion vector difference uses integer sample precision. sps_fpel_mmvd_enabled_flag equal to 0 specifies that the merge mode with motion vector difference can use fractional sample precision.
[0678] sps_gpm_enabled_flag specifies whether geometric partitioning-based motion compensation can be used for inter prediction. sps_gpm_enabled_flag equal to 0 specifies that the syntax should be constrained so that geometric partitioning-based motion compensation is not used in CLVS, and merge_gpm_partition_idx, merge_gpm_idx0, and merge_gpm_idx1 are not present in the codec syntax of CLVS. sps_gpm_enabled_flag equal to 1 specifies that geometric partitioning-based motion compensation can be used in CLVS. When not present, the value of sps_gpm_enabled_flag is inferred to be equal to 0.
[0679] max_num_merge_cand_minus_max_num_gpm_cand specifies the maximum number of geometric partition merge mode candidates supported in the SPS subtracted from MaxNumMergeCand.
[0680] If sps_gpm_enabled_flag is equal to 1 and MaxNumMergeCand is greater than or equal to 3, the maximum number of geometric partition merge mode candidates MaxNumGeoMergeCand is derived as follows:
[0681]
[0682]
[0683] The value of MaxNumGeoMergeCand should be in the range of 2 to MaxNumMergeCand, inclusive.
[0684] sps_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is used in CLVS. sps_lmcs_enabled_flag equal to 0 specifies that luma mapping with chroma scaling is not used in CLVS.
[0685] sps_lfnst_enabled_flag equal to 1 specifies that lfnst_idx may be present in the intra codec unit syntax. sps_lfnst_enabled_flag equal to 0 specifies that lfnst_idx is not present in the intra codec unit syntax.
[0686] sps_ladf_enabled_flag equal to 1 specifies the presence of sps_num_ladf_intervals_minus2, sps_ladf_lowest_interval_qp_offset, sps_ladf_qp_offset[i], and sps_ladf_delta_threshold_minus1[i] in the SPS.
[0687] sps_num_ladf_interval_minus2 plus 1 specifies the number of sps_ladf_delta_threshold_minus1[i] and sps_ladf_qp_offset[i] syntax elements present in the SPS. The value of sps_num_ladf_intervals_minus2 shall be in the range of 0 to 3 (inclusive).
[0688] sps_ladf_lowest_interval_qp_offset specifies the offset used to derive the variable qP as specified in clause 8.8.3.6.1. The value of sps_ladf_lowest_interval_qp_offset shall be in the range of -63 to 63 (inclusive).
[0689] sps_ladf_qp_offset[i] specifies the offset array used to derive the variable qP as specified in clause 8.8.3.6.1. The value of sps_ladf_qp_offset[i] shall be in the range -63 to 63 (inclusive).
[0690] sps_ladf_delta_threshold_minus1[i] is used to calculate the value of SpsLadfIntervalLowerBound[i], which specifies the lower bound of the interval of the i-th luminance intensity level. The value of sps_ladf_delta_threshold_minus1[i] should be between 0 and 2 BitDepth In the range of -3 (inclusive).
[0691] The value of SpsLadfIntervalLowerBound[0] is set equal to 0.
[0692] For each value of i in the range from 0 to sps_num_ladf_intervals_minus2 (inclusive), the variable SpsLadfIntervalLowerBound[i+1] is derived as follows:
[0693]
[0694] log2_parallel_merge_level_minus2 plus 2 specifies the value of the variable Log2ParMrgLevel, which is used for the derivation of spatial merging candidates as specified in clause 8.5.2.3, the derivation of motion vectors and reference indices in sub-block merge mode as specified in clause 8.5.5.2, and for controlling the call of the history-based motion vector predictor list update procedure as specified in clause 8.5.2.1. The value of log2_parallel_merge_level_minus2 shall be in the range of 0 to CtbLog2SizeY-2 (inclusive). The variable Log2ParMrgLevel is derived as follows:
[0695] Log2ParMrgLevel=log2_parallel_merge_level_minus2+2 (68)
[0696] sps_scaling_list_enabled_flag equal to 1 specifies that the scaling list is used for the scaling process of transform coefficients. sps_scaling_list_enabled_flag equal to 0 specifies that the scaling list is not used for the scaling process of transform coefficients.
[0697] sps_dep_quant_enabled_flag equal to 0 specifies that correlated quantization is disabled for pictures that reference SPS. sps_dep_quant_enabled_flag equal to 1 specifies that correlated quantization is enabled for pictures that reference SPS.
[0698] sps_sign_data_hiding_enabled_flag equal to 0 specifies that sign bit hiding is disabled for pictures that reference the SPS. sps_sign_data_hiding_enabled_flag equal to 1 specifies that sign bit hiding can be enabled for pictures that reference the SPS. When sps_sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.
[0699] sps_virtual_boundaries_enabled_flag equal to 1 specifies that loop filtering with disabled cross-virtual boundaries can be applied in coded pictures in CLVS. sps_virtual_boundaries_enabled_flag equal to 0 specifies that loop filtering with disabled cross-virtual boundaries is not applied in coded pictures in CLVS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations.
[0700] sps_virtual_boundaries_present_flag equal to 1 specifies that virtual boundaries are signaled in the SPS. sps_virtual_boundaries_present_flag equal to 0 specifies that virtual boundaries are not signaled in the SPS. When one or more virtual boundaries are signaled in the SPS, loop filtering operations are disabled across virtual boundaries in pictures referencing the SPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations.
[0701] A requirement of bitstream conformance is that when the value of res_change_in_clvs_allowed_flag is equal to 1, the value of sps_virtual_boundaries_present_flag shall be equal to 0.
[0702] sps_num_ver_virtual_boundaries specifies the number of sps_virtual_boundaries_pos_x[i] syntax elements present in the SPS. When sps_num_ver_virtual_boundaries is not present, it is inferred to be equal to 0.
[0703] sps_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 sps_virtual_boundaries_pos_x[i] shall be in the range of 1 to Ceil(pic_width_in_luma_samples ÷ 8) - 1, inclusive.
[0704] sps_num_hor_virtual_boundaries specifies the number of sps_virtual_boundaries_pos_y[i] syntax elements present in the SPS. When sps_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0.
[0705] When sps_virtual_boundaries_enabled_flag is equal to 1 and sps_virtual_boundaries_present_flag is equal to 1, the sum of sps_num_ver_virtual_boundaries and sps_num_hor_virtual_boundaries shall be greater than 0.
[0706] sps_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary in units of luma samples divided by 8. The value of sps_virtual_boundaries_pos_y[i] shall be in the range of 1 to Ceil(pic_height_in_luma_samples ÷ 8) - 1, inclusive.
[0707] sps_general_hrd_params_present_flag equal to 1 specifies that the syntax structure general_hrd_parameters() is present in the SPS RBSP syntax structure. sps_general_hrd_params_present_flag equal to 0 specifies that the syntax structure general_hrd_parameters() is not present in the SPS RBSP syntax structure.
[0708] sps_sublayer_cpb_params_present_flag equal to 1 specifies that the syntax structure old_hrd_parameters() in the SPS RBSP includes HRD parameters for sublayer representation with TemporalId in the range of 0 to sps_max_sublayers_minus1 (inclusive). sps_sublayer_cpb_params_present_flag equal to 0 specifies that the syntax structure ols_hrd_parameters() in the SPS RBSP includes HRD parameters for sublayer representation with TemporalId equal to sps_max_sublayers_minus1 only. When sps_max_sublayers_minus1 is equal to 0, the value of sps_sublayer_cpb_params_present_flag is inferred to be equal to 0.
[0709] When sps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters of the sublayer representation (where TemporalId is in the range of 0 to sps_max_sublayers_minus1-1, inclusive) are inferred to be the same as the HRD parameters of the sublayer representation (where TemporalId is equal to sps_max_sublayers_minus1). These include the HRD parameters starting from the fixed_pic_rate_general_flag[i] syntax element up to the sublayer_hrd_parameters(i) syntax structure under the "if (general_vcl_hrd_params_present_flag)" condition in the ols_hrd_parameters syntax structure.
[0710] field_seq_flag equal to 1 indicates that CLVS conveys pictures representing fields. field_seq_flag equal to 0 indicates that CLVS conveys pictures representing frames. When general_frame_only_constraint_flag is equal to 1, the value of field_seq_flag shall be equal to 0.
[0711] When field_seq_flag is equal to 1, the frame field information SEI message shall be present for each codec picture in the CLVS.
[0712] NOTE 5 – The specified decoding process does not treat pictures representing fields or frames differently. Therefore, a sequence of pictures representing a field will be encoded and decoded using the picture dimensions of a single field. For example, a picture representing a 1080i field will typically have cropped output dimensions of 1920x540, and the sequence picture rate will typically represent the source field rate (typically between 50 and 60 Hz) rather than the source frame rate (typically between 25 and 30 Hz).
[0713] vui_parameters_present_flag equal to 1 specifies that the syntax structure vui_parameters() is present in the SPS RBSP syntax structure. vui_parameters_present_flag equal to 0 specifies that the syntax structure vui_parameters() is not present in the SPS RBSP syntax structure.
[0714] sps_extension_flag equal to 0 specifies that the sps_extension_data_flag syntax element is not present in the SPS RBSP syntax structure. sps_extension_flag equal to 1 specifies that the sps_extension_data_flag syntax element is present in the SPS RBSP syntax structure.
[0715] sps_extension_data_flag can have any value. Its presence and value do not affect the conformance of a decoder to the profiles specified in this version of this specification. Decoders conforming to this version of this specification shall ignore all sps_extension_data_flag syntax elements.
[0716] 7.4.3.4 Picture Parameter Set RBSP Semantics
[0717] The PPS RBSP shall be available to the decoding process before being referenced, included in at least one AU (where the TemporalId is less than or equal to the TemporalId of the PPS NAL unit), or provided by external means.
[0718] All PPS NAL units within a PU with a specific value of pps_pic_parameter_set_id shall have the same content.
[0719] pps_pic_parameter_set_id identifies the PPS for reference by other syntax elements. The value of pps_pic_parameter_set_id should be in the range of 0 to 63 (inclusive).
[0720] Regardless of the nuh_layer_id value, PPS NAL units share the same value space of pps_pic_parameter_set_id.
[0721] Let ppsLayerId be the value of nuh_layer_id of the specific PPS NAL unit, and let vclLayerId be the value of nuh_layer_id of the specific VCL NAL unit. A specific VCL NAL unit shall not reference 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 a layer with nuh_layer_id equal to vclLayerId.
[0722] pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id for the SPS. The value of pps_seq_parameter_set_id should be in the range of 0 to 15 (inclusive). The value of pps_seq_parameter_set_id should be the same in all PPSs referenced by codec pictures in the CLVS.
[0723] mixed_nalu_types_in_pic_flag equal to 1 specifies that each picture referencing a 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 referencing a PPS has one or more VCL NAL units, and the VCL NAL units of each picture referencing a PPS have the same nal_unit_type value.
[0724] 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.
[0725] For each slice in a picture picA having a nal_unit_type value nalUnitTypeA in the range IDR_W_RADL to CRA_NUT (inclusive), which picture picA also contains one or more slices with another nal_unit_type value (i.e., the value of mixed_nalu_types_in_pic_flag of picture picA is equal to 1), the following applies:
[0726] – The slice shall belong to the sub-picture subpicA, and its corresponding subpic_treated_as_pic_flag[i] value is equal to 1.
[0727] – A slice shall not belong to a sub-picture of picA containing a VCL NAL unit where nal_unit_type is not equal to nalUnitTypeA.
[0728] – If nalUnitTypeA is equal to CRA, then for all subsequent PUs following the current picture in CLVS in decoding order and output order, neither RefPicList[0] nor RefPicList[1] for slices in subpicA in those PUs shall include in the active entries any pictures before picA in decoding order.
[0729] – Otherwise (i.e., nalUnitTypeA is equal to IDR_W_RADL or IDR_N_LP), for all PUs in the CLVS following the current picture in decoding order, neither the RefPicList[0] nor the RefPicList[1] for the slices in subpicA in those PUs shall include in the active entries any pictures preceding picA in decoding order.
[0730] NOTE 1 – mixed_nalu_types_in_pic_flag is equal to 1 to indicate that the picture referencing the PPS contains slices with different NAL unit types, for example, a codec picture resulting from a sub-picture bitstream merging operation. The encoder must ensure matching bitstream structure and further alignment of parameters of the original bitstream. An example of such alignment is as follows: When the value of sps_idr_rpl_flag is equal to 0 and mixed_nalu_types_in_pic_flag is equal to 1, the picture referencing the PPS shall not have slices with nal_unit_type equal to IDR_W_RADL or IDR_N_LP.
[0731] pic_width_in_luma_samples specifies the width of each decoded picture referencing the PPS in units of luma samples. pic_width_in_luma_samples shall not be equal to 0, shall be an integer multiple of Max(8, MinCbSizeY), and shall be less than or equal to pic_width_max_in_luma_samples.
[0732] When res_change_in_clvs_allowed_flag is equal to 0, the value of pic_width_in_luma_samples shall be equal to pic_width_max_in_luma_samples.
[0733] pic_height_in_luma_samples specifies the height of each decoded picture referencing the PPS in units of 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.
[0734] When res_change_in_clvs_allowed_flag is equal to 0, the value of pic_height_in_luma_samples shall be equal to pic_height_max_in_luma_samples.
[0735] The variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC, and PicHeightInSamplesC are derived as follows:
[0736] PicWidthInCtbsY=Ceil(pic_width_in_luma_samples÷CtbSizeY) (69)
[0737] PicHeightInCtbsY=Ceil(pic_height_in_luma_samples÷CtbSizeY) (70)
[0738] PicSizeInCtbsY=PicWidthInCtbsY*PicHeightInCtbsY (71)
[0739] PicWidthInMinCbsY=pic_width_in_luma_samples / MinCbSizeY (72)
[0740] PicHeightInMinCbsY=pic_height_in_luma_samples / MinCbSizeY (73)
[0741] PicSizeInMinCbsY=PicWidthInMinCbsY*PicHeightInMinCbsY (74)
[0742] PicSizeInSamplesY=pic_width_in_luma_samples*pic_height_in_luma_samples (75)
[0743] PicWidthInSamplesC=pic_width_in_luma_samples / SubWidthC (76)
[0744] PicHeightInSamplesC=pic_height_in_luma_samples / SubHeightC (77)
[0745] pps_conformance_window_flag equal to 1 indicates that the conformance cropping window offset parameter follows in the PPS. pps_conformance_window_flag equal to 0 indicates that the conformance cropping window offset parameter does not exist in the PPS.
[0746] 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 during decoding, with the rectangular area specified in picture coordinates as the output. 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.
[0747] The conforming cropping window contains luma samples with horizontal picture coordinates from SubWidthC*pps_conf_win_left_offset to pic_width_in_luma_samples-(SubWidthC*pps_conf_win_right_offset+1) and vertical picture coordinates from SubHeightC*pps_conf_win_top_offset to pic_height_in_luma_samples-(SubHeightC*pps_conf_win_bottom_offset+1), inclusive.
[0748] The value of SubWidthC*(pps_conf_win_left_offset+pps_conf_win_right_offset) should be less than pic_width_in_luma_samples, and the value of SubweightC*(pps_conf_win_top_offset+pps_conf_win_bottom_offset) should be less than pic_height_in_luma_samples.
[0749] 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.
[0750] NOTE 2 – The consistency crop window offset parameter applies only to output. All internal decoding processes are applied to the uncropped picture size.
[0751] Let ppsA and ppsB be any two PPSs that reference the same SPS. A requirement for bitstream conformance is that when ppsA and ppsB have the same values of pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, then ppsA and ppsB shall have the same values of pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset, respectively.
[0752] 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, one requirement for bitstream conformance 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.
[0753] scaling_window_explicit_signalling_flag equal to 1 specifies that the scaling window offset parameter is present in the PPS. scaling_window_explicit_signalling_flag equal to 0 specifies that the scaling window offset parameter is not present in the PPS. When res_change_in_clvs_allowed_flag is equal to 0, the value of scaling_window_explicit_signalling_flag shall be equal to 0.
[0754] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify offsets to the picture size that should be used for scaling ratio calculations. When not present, the values of scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset are inferred to be equal to SubWidthC*conf_win_left_offset, SubWidthC*conf_win_right_offset, SubHeightC*conf_win_top_offset, and SubHeightC*conf_win_bottom_offset, respectively.
[0755] The value of SubWidthC*(scaling_win_left_offset+scaling_win_right_offset) should be less than pic_width_in_luma_samples, and the value of SubHeightC*(scaling_win_top_offset+scaling_win_bottom_offset) should be less than pic_height_in_luma_samples.
[0756] The variables PicOutputWidthL and PicOutputHeightL are derived as follows:
[0757]
[0758]
[0759] Let refPicOutputWidthL and refPicOutputHeightL be the PicOutputWidthL and PicOutputHeightL of the reference picture that references the current picture of this PPS. It is a bitstream conformance requirement that all of the following conditions are met:
[0760] –PicOutputWidthL*2 should be greater than or equal to refPicWidthInLumaSamples.
[0761] –PicOutputHeightL*2 should be greater than or equal to refPicHeightInLumaSamples.
[0762] –PicOutputWidthL should be less than or equal to refPicWidthInLumaSamples*8.
[0763] –PicOutputHeightL should be less than or equal to refPicHeightInLumaSamples*8.
[0764] –PicOutputWidthL*pic_width_max_in_luma_samples shall be greater than or equal to refPicOutputWidthL*(pic_width_in_luma_samples-Max(8,MinCbSizeY)).
[0765] –PicOutputHeightL*pic_height_max_in_luma_samples shall be greater than or equal to refPicOutputHeightL*(pic_height_in_luma_samples-Max(8,MinCbSizeY)).
[0766] output_flag_present_flag equal to 1 indicates that the pic_output_flag syntax element is present in the slice header referencing the PPS. output_flag_present_flag equal to 0 indicates that the pic_output_flag syntax element is not present in the slice header referencing the PPS.
[0767] subpic_id_mapping_in_pps_flag equal to 1 specifies that sub-picture ID mapping is signaled in the PPS. subpic_id_mapping_in_pps_flag equal to 0 specifies that sub-picture ID mapping is not signaled in the PPS. If subpic_id_mapping_explicitly_signalled_flag is 0 or subpic_id_mapping_in_sps_flag is 1, then the value of subpic_id_mapping_in_pps_flag shall be 0. Otherwise (subpic_id_mapping_explicitly_signalled_flag is 1 and subpic_id_mapping_in_sps_flag is 0), the value of subpic_id_mapping_in_pps_flag shall be 1.
[0768] pps_num_subpics_minus1 shall be equal to sps_num_subpics_minus1.
[0769] pps_subpic_id_len_minus1 shall be equal to sps_subpic_id_len_minus1.
[0770] 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.
[0771] For each value of i in the range 0 to sps_num_subpics_minus1 (inclusive), the variable SubpicIdVal[i] is derived as follows:
[0772]
[0773] The bitstream conformance requirement is that the following two constraints apply:
[0774] – For any two differences of i and j in the range 0 to sps_num_subpics_minus1 (inclusive), SubpicIdVal[i] shall not be equal to SubpicIdVal[j].
[0775] – When the current picture is not the first picture of a CLVS, for each value of i in the range 0 to sps_num_subpics_minus1 (inclusive), if the value of SubpicIdVal[i] is not equal to the value of SubpicIdVal[i] of the previous picture in decoding order in the same layer, the nal_unit_type of all codec slice NAL units of the sub-picture with sub-picture index i in the current picture shall be equal to the specified value in the range IDR_W_RADL to CRA_NUT (inclusive).
[0776] no_pic_partition_flag equal to 1 specifies that no picture partitioning is applied to each picture referencing a PPS. no_pic_partition_flag equal to 0 specifies that each picture referencing a PPS may be partitioned into multiple slices or slices.
[0777] One requirement for bitstream conformance is that the value of no_pic_partition_flag shall be the same for all PPSs referenced by a codec picture in a CLVS.
[0778] One requirement for bitstream conformance is that when the value of sps_num_subpics_minus1+1 is greater than 1, the value of no_pic_partition_flag shall be different from 1.
[0779] pps_log2_ctu_size_minus5 plus 5 specifies the luma codec tree block size for each CTU.
[0780] pps_log2_ctu_size_minus5 should be equal to sps_log2_ctu_size_minus5.
[0781] num_exp_tile_columns_minus1 plus 1 specifies the number of explicitly provided tile column widths. The value of num_exp_tile_columns_minus1 shall be in the range of 0 to PicWidthInCtbsY-1, inclusive. When no_pic_partition_flag is equal to 1, the value of num_exp_tile_columns_minus1 is inferred to be equal to 0.
[0782] num_exp_tile_rows_minus1 plus 1 specifies the number of explicitly provided tile row heights. The value of num_exp_tile_rows_minus1 shall be in the range of 0 to PicHeightInCtbsY-1, inclusive. When no_pic_partition_flag is equal to 1, the value of num_tile_rows_minus1 is inferred to be equal to 0.
[0783] tile_column_width_minus1[i] plus 1 specifies the width of the i-th tile column in units of CTBs, for i in the range of 0 to num_exp_tile_columns_minus1-1 (inclusive).
[0784] tile_column_width_minus1[num_exp_tile_columns_minus1] is used to derive the width of tile columns with indices greater than or equal to num_exp_tile_columns_minus1, as specified in clause 6.5.1. The value of tile_column_width_minus1[i] shall be in the range 0 to PicWidthInCtbsY-1, inclusive. When not present, the value of tile_column_width_minus1[0] is inferred to be equal to PicWidthInCtbsY-1.
[0785] tile_row_height_minus1[i] plus 1 specifies the height of the i-th tile row in units of CTBs, for i in the range 0 to num_exp_tile_rows_minus1-1, inclusive. 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 0 to PicHeightInCtbsY-1, inclusive. When not present, the value of tile_row_height_minus1[0] is inferred to be equal to PicHeightInCtbsY-1.
[0786] rect_slice_flag equal to 0 specifies that the slices within each slice are in raster scan order and that slice information is not signaled in the PPS. rect_slice_flag equal to 1 specifies that the slices within each slice cover a rectangular area of the picture and that slice information is signaled in the PPS. When not present, rect_slice_flag is inferred to be equal to 1. When subpic_info_present_flag is equal to 1, the value of rect_slice_flag shall be equal to 1.
[0787] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[0788] num_slices_in_pic_minus1 plus 1 specifies the number of rectangular slices in each picture that references the PPS. The value of num_slices_in_pic_minus1 shall be in the range of 0 to MaxSlicesPerPicture-1 (inclusive), where MaxSlicesPerPicture. When no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minus1 is inferred to be equal to 0.
[0789] tile_idx_delta_present_flag equal to 0 specifies that tile_idx_delta values are not present in the PPS and that all rectangular slices in pictures referencing the PPS are specified in raster order according to the procedure defined in clause 6.5.1. tile_idx_delta_present_flag equal to 1 specifies that tile_idx_delta values may be present in the PPS and that all rectangular slices in pictures referencing the PPS are specified in raster order according to the procedure defined in clause 6.5.1. When not present, the value of tile_idx_delta_present_flag is inferred to be equal to 0.
[0790] slice_width_in_tiles_minus1[i] plus 1 specifies the width of the i-th rectangular strip in units of tile columns. The value of slice_width_in_tiles_minus1[i] should be in the range of 0 to NumTileColumns-1 (inclusive).
[0791] When slice_width_in_tiles_minus1[i] is not present, the following applies:
[0792] – If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[0793] – Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred according to clause 6.5.1.
[0794] slice_height_in_tiles_minus1[i] plus 1 specifies the height of the i-th rectangular strip in tile rows. The value of slice_height_in_tiles_minus1[i] should be in the range of 0 to NumTileRows-1 (inclusive).
[0795] When slice_height_in_tiles_minus1[i] is not present, the following applies:
[0796] – If NumTileRows is equal to 1, or tile_idx_delta_present_flag is equal to 0, and tileIdx % NumTileColumns is greater than 0, then the value of slice_height_in_tiles_minus1[i] is inferred to be equal to 0.
[0797] 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].
[0798] num_exp_slices_in_tile[i] specifies the number of explicitly provided strip heights in the current slice containing multiple rectangular strips. The value of num_exp_slices_in_tile[i] should be in the range of 0 to RowHeight[tileY]-1 (inclusive), where tileY is the index of the slice row containing the i-th strip. When not present, the value of num_exp_slices_in_tile[i] is inferred to be equal to 0. When num_exp_slices_in_tile[i] is equal to 0, the value of the variable NumSlicesInTile[i] is inferred to be equal to 1.
[0799] exp_slice_height_in_ctus_minus1[j] plus 1 specifies the height of the j-th rectangular slice in the current slice in CTU rows. The value of exp_slice_height_in_ctus_minus1[j] should be in the range of 0 to RowHeight[tileY]-1 (inclusive), where tileY is the slice row index of the current slice.
[0800] When num_exp_slices_in_tile[i] is greater than 0, the variables NumSlicesInTile[i] and SliceHeightInCtusMinus1[i+k] are derived as follows (for k in the range of 0 to NumSlicesInTile[i]-1, inclusive):
[0801]
[0802] tile_idx_delta[i] specifies the difference between the tile index of the first tile in the i-th rectangular strip and the tile index of the first tile in the (i+1)-th rectangular strip. The value of tile_idx_delta[i] shall be in the range -NumTilesInPic+1 to NumTilesInPic–1 (inclusive). When not present, the value of tile_idx_delta[i] is inferred to be equal to 0. When present, the value of tile_idx_delta[i] shall not be equal to 0.
[0803] loop_filter_across_tiles_enabled_flag equal to 1 specifies that loop filtering operations may be performed across slice boundaries in pictures that reference a PPS. loop_filter_across_tiles_enabled_flag equal to 0 specifies that loop filtering operations will not be performed across slice boundaries in pictures that reference a PPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of loop_filter_across_tiles_enabled_flag is inferred to be equal to 1.
[0804] The loop_filter_across_slices_enabled_flag equal to 1 specifies that loop filtering operations may be performed across slice boundaries in pictures that reference a PPS. The loop_filter_across_slice_enabled_flag equal to 0 specifies that loop filtering operations will not be performed across slice boundaries in pictures that reference a PPS. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of loop_filter_across_slices_enabled_flag is inferred to be equal to 0.
[0805] cabac_init_present_flag equal to 1 specifies that cabac_init_flag is present in the slice header referencing the PPS. cabac_init_present_flag equal to 0 specifies that cabac_init_flag is not present in the slice header referencing the PPS.
[0806] num_ref_idx_default_active_minus1[i] plus 1 (when i is equal to 0) specifies the inferred value of the variable NumRefIdxActive[0] for P or B slices (where num_ref_idx_active_override_flag is equal to 0), and specifies the inferred value of NumRefIdxActive[1] for B slices (where num_ref_idx_active_override_flag is equal to 0) when i is equal to 1. The value of num_ref_idx_default_active_minus1[i] shall be in the range of 0 to 14, inclusive.
[0807] 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 the picture 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 the picture referencing the PPS.
[0808] init_qp_minus26 plus 26 specifies the SliceQp of each slice that references the PPS Y When decoding a non-zero value of ph_qp_delta, SliceQP is modified at the picture level. Y The initial value of SliceQp, or when decoding a non-zero value of slice_qp_delta, modify SliceQp at the slice level Y The initial value of init_qp_minus26 should be in the range of -(26+QpBdOffset) to +37 (inclusive).
[0809] 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 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 cu_qp_delta_abs is not present in the transform unit syntax.
[0810] 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.
[0811] pps_cb_qp_offset and pps_cr_qp_offset are used to derive Qp' Cb and Qp' Cr The brightness quantization parameter Qp' Y The offset of pps_cb_qp_offset and pps_cr_qp_offset should be in the range of -12 to +12 (inclusive). When ChromaArrayType is equal to 0, pps_cb_qp_offset and pps_cr_qp_offset are not used in the decoding process and the decoder should ignore their values. When not present, the values of pps_cb_qp_offset and pps_cr_qp_offset are inferred to be equal to 0.
[0812] pps_joint_cbcr_qp_offset_present_flag equal to 1 specifies that pps_joint_cbcr_qp_offset_value and joint_cbcr_qp_offset_list[i] are present in the PPS RBSP syntax structure. pps_joint_cbcr_qp_offset_present_flag equal to 0 specifies that pps_joint_cbcr_qp_offset_value and joint_cbcr_qp_offset_list[i] are not present in the PPS RBSP syntax structure. When ChromaArrayType is equal to 0 or sps_joint_cbcr_enabled_flag is equal to 0, the value of pps_joint_cbcr_qp_offset_present_flag shall be equal to 0. When not present, the value of pps_joint_cbcr_qp_offset_present_flag is inferred to be equal to 0.
[0813] pps_joint_cbcr_qp_offset_value is specified for deriving Qp' CbCr The brightness quantization parameter Qp' Y The value of pps_joint_cbcr_qp_offset_value shall be in the range of -12 to +12 (inclusive). When ChromaArrayType is equal to 0 or sps_joint_cbcr_enabled_flag is equal to 0, pps_joint_cbcr_qp_offset_value is not used during decoding and the decoder shall ignore its value. When pps_joint_cbcr_qp_offset_present_flag is equal to 0, pps_joint_cbcr_qp_offset_value is not present and is inferred to be equal to 0.
[0814] pps_slice_chroma_qp_offsets_present_flag equal to 1 specifies that the slice_cb_qp_offset and slice_cr_qp_offset syntax elements are present in the associated slice header. pps_slice_chroma_qp_offsets_present_flag equal to 0 specifies that the slice_cb_qp_offset and slice_cr_qp_offset syntax elements are not present in the associated slice header. When not present, the value of pps_slice_chroma_qp_offsets_present_flag is inferred to be equal to 0.
[0815] pps_cu_chroma_qp_offset_list_enabled_flag equal to 1 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are present in the PH referencing a PPS, and that cu_chroma_qp_offset_flag may be present in transform unit syntax and palette codec syntax. pps_cu_chroma_qp_offset_list_enabled_flag equal to 0 specifies that the ph_cu_chroma_qp_offset_subdiv_intra_slice and ph_cu_chroma_qp_offset_subdiv_inter_slice syntax elements are not present in the PH referencing a PPS, and that cu_chroma_qp_offset_flag is not present in transform unit syntax and palette codec syntax. When not present, the value of pps_cu_chroma_qp_offset_list_enabled_flag is inferred to be equal to 0.
[0816] chroma_qp_offset_list_len_minus1 plus 1 specifies the number of cb_qp_offset_list[i], cr_qp_offset_list[i], and joint_cbcr_qp_offset_list[i] syntax elements present in the PPS RBSP syntax structure. The value of chroma_qp_offset_list_len_minus1 shall be in the range of 0 to 5 (inclusive).
[0817] cb_qp_offset_list[i], cr_qp_offset_list[i] and joint_cbcr_qp_offset_list[i] are specified for 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 (inclusive). When pps_joint_cbcr_qp_offset_present_flag is equal to 0, joint_cbcr_qp_offset_list[i] is not present and is inferred to be equal to 0.
[0818] pps_weighted_pred_flag equal to 0 specifies that weighted prediction is not applied to P slices referencing a PPS. pps_weighted_pred_flag equal to 1 specifies that weighted prediction is applied to P slices referencing a PPS. When sps_weighted_pred_flag is equal to 0, the value of pps_weighted_pred_flag shall be equal to 0.
[0819] pps_weighted_bipred_flag equal to 0 specifies that explicit weighted prediction is not applied to B slices referencing a PPS. pps_weighted_bipred_flag equal to 1 specifies that explicit weighted prediction is applied to B slices referencing a PPS. When sps_weighted_bipred_flag is equal to 0, the value of pps_weighted_bipred_flag shall be equal to 0.
[0820] deblocking_filter_control_present_flag equal to 1 specifies whether a deblocking filter control syntax element is present in the PPS. deblocking_filter_control_present_flag equal to 0 specifies that no deblocking filter control syntax element is present in the PPS.
[0821] deblocking_filter_override_enabled_flag equal to 1 specifies that ph_deblocking_filter_override_flag is present in the PH referencing the PPS, or slice_deblocking_filter_override_flag is present in the slice header referencing the PPS. deblocking_filter_override_enabled_flag equal to 0 specifies that ph_deblocking_filter_override_flag is not present in the PH referencing the PPS, or slice_deblocking_filter_override_flag is not present in the slice header referencing the PPS. When not present, the value of deblocking_filter_override_enabled_flag is inferred to be equal to 0.
[0822] pps_deblocking_filter_disabled_flag equal to 1 specifies that the operation of the deblocking filter should not be applied to slices referencing the PPS where slice_deblocking_filter_disabled_flag is not present.
[0823] pps_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter should not be applied to slices referencing the PPS where slice_deblocking_filter_disabled_flag is not present. When not present, the value of pps_deblocking_filter_disabled_flag is inferred to be equal to 0.
[0824] pps_beta_offset_div2 and pps_tc_offset_div2 specify the default deblocking parameter offsets for beta and tc (divided by 2) applied to the luma component of the slice referencing the PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values of pps_beta_offset_div2 and pps_tc_offset_div2 shall both be in the range of -12 to 12, inclusive. When not present, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are both inferred to be equal to 0.
[0825] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets for beta and tc (divided by 2) applied to the Cb component of the slice referencing the PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values of pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 shall both be in the range of -12 to 12, inclusive. When not present, the values of pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 are both inferred to be equal to 0.
[0826] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets for beta and tc (divided by 2) applied to the Cr components of the slice referencing the PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the picture header or slice header of the slice referencing the PPS. The values of pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 shall both be in the range of -12 to 12, inclusive. When not present, the values of pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 are both inferred to be equal to 0.
[0827] rpl_info_in_ph_flag equal to 1 specifies that the reference picture list information is present in the PH syntax structure and not in slice headers referencing PPSs that do not contain a PH syntax structure. rpl_info_in_ph_flag equal to 0 specifies that the reference picture list information is not present in the PH syntax structure and may be present in slice headers referencing PPSs that do not contain a PH syntax structure.
[0828] dbf_info_in_ph_flag equal to 1 specifies that the deblocking filter information is present in the PH syntax structure, but not in slice headers referencing PPSs that do not contain a PH syntax structure. dbf_info_in_ph_flag equal to 0 specifies that the deblocking filter information is not present in the PH syntax structure, and may be present in slice headers referencing PPSs that do not contain a PH syntax structure. When not present, the value of dbf_info_in_ph_flag is inferred to be equal to 0.
[0829] sao_info_in_ph_flag equal to 1 specifies that the SAO filter information is present in the PH syntax structure and not in slice headers referencing PPSs that do not contain the PH syntax structure. sao_info_in_ph_flag equal to 0 specifies that the SAO filter information is not present in the PH syntax structure and may be present in slice headers referencing PPSs that do not contain the PH syntax structure.
[0830] alf_info_in_ph_flag equal to 1 specifies that ALF information is present in the PH syntax structure and not in slice headers referencing PPSs that do not contain a PH syntax structure. alf_info_in_ph_flag equal to 0 specifies that ALF information is not present in the PH syntax structure and may be present in slice headers referencing PPSs that do not contain a PH syntax structure.
[0831] wp_info_in_ph_flag equal to 1 specifies that weighted prediction information may be present in the PH syntax structure, but not in slice headers referencing PPSs that do not contain a PH syntax structure. wp_info_in_ph_flag equal to 0 specifies that weighted prediction information is not present in the PH syntax structure, and may be present in slice headers referencing PPSs that do not contain a PH syntax structure. When not present, the value of wp_info_in_ph_flag is inferred to be equal to 0.
[0832] qp_delta_info_in_ph_flag equal to 1 specifies that QP delta information is present in the PH syntax structure and not in slice headers that reference a PPS that does not contain a PH syntax structure. qp_delta_info_in_ph_flag equal to 0 specifies that QP delta information is not present in the PH syntax structure and may be present in slice headers that reference a PPS that does not contain a PH syntax structure.
[0833] pps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wrap motion compensation is applied in inter prediction. pps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wrap motion compensation is not applied. When the value of CtbSizeY / MinCbSizeY+1 is greater than pic_width_in_luma_samples / MinCbSizeY-1, the value of pps_ref_wraparound_enabled_flag shall be equal to 0. When sps_ref_wraparound_enabled_flag is equal to 0, the value of pps_ref_wraparound_enabled_flag shall be equal to 0.
[0834] pps_ref_wraparound_offset plus (CtbSizeY / MinCbSizeY)+2 specifies the offset used to calculate the horizontal wrap position in units of MinCbSizeY luma samples. The value of pps_ref_wraparound_offset shall be in the range of 0 to (pic_width_in_luma_samples / MinCbSizeY)-(CtbSizeY / MinCbSizeY)-2, inclusive.
[0835] The variable PpsRefWraparoundOffset is set equal to pps_ref_wraparound_offset+(CtbSizeY / MinCbSizeY)+2.
[0836] picture_header_extension_present_flag equal to 0 specifies that the PH extension syntax element is not present in the PH referencing the PPS. picture_header_extension_present_flag equal to 1 specifies that the PH extension syntax element is present in the PH referencing the PPS. picture_header_extension_present_flag shall be equal to 0 in bitstreams conforming to this version of the specification.
[0837] slice_header_extension_present_flag equal to 0 specifies that the slice header extension syntax element is not present in the slice header of the codec picture referencing the PPS. slice_header_extension_present_flag equal to 1 specifies that the slice header extension syntax element is present in the slice header of the codec picture referencing the PPS. slice_header_extension_present_flag shall be equal to 0 in bitstreams conforming to this version of the specification.
[0838] pps_extension_flag equal to 0 specifies that no pps_extension_data_flag syntax element is present in the PPS RBSP syntax structure. pps_extension_flag equal to 1 specifies that the pps_extension_data_flag syntax element is present in the PPS RBSP syntax structure.
[0839] The pps_extension_data_flag may have any value. Its presence and value do not affect the conformance of a decoder to the profiles specified in this version of this specification. Decoders conforming to this version of this specification shall ignore all pps_extension_data_flag syntax elements.
[0840] 7.4.3.5 Adaptation parameter set semantics
[0841] Each APS RBSP shall be available to the decoding process before being referenced, included in at least one AU (whose TemporalId is less than or equal to the TemporalId of the codec slice NAL unit that references it), or provided by external means.
[0842] All APS NAL units within a PU with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type shall have the same content, regardless of whether they are prefix or suffix APS NAL units.
[0843] adaptation_parameter_set_id provides an identifier for APS to be referenced by other syntax elements.
[0844] When aps_params_type is equal to ALF_APS or SCALING_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 7 (inclusive).
[0845] When aps_params_type is equal to LMCS_APS, the value of adaptation_parameter_set_id shall be in the range of 0 to 3 (inclusive).
[0846] Let apsLayerId be the value of nuh_layer_id of the specific APS NAL unit, and vclLayerId be the value of nuh_layer_id of the specific VCL NAL unit. A specific VCL NAL unit shall not reference a specific APS NAL unit unless apsLayerId is less than or equal to vclLayerId and the layer with nuh_layer_id equal to apsLayerId is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerId.
[0847] aps_params_type specifies the APS parameter type carried in the APS, as shown in Table 6.
[0848] Table 6 – APS parameter type codes and APS parameter types
[0849]
[0850] All APS NAL units with a specific value of aps_params_type, regardless of the value of nuh_layer_id, share the same value space for adaptation_parameter_set_id. APS NAL units with different values of aps_params_type use separate value spaces for adaptation_parameter_set_id.
[0851] NOTE 1 – APS NAL units (with a specific value of adaptation_parameter_set_id and a specific value of aps_params_type) can be shared between pictures, and different slices within a picture can reference different ALF APSs.
[0852] NOTE 2 – A suffix APS NAL unit associated with a particular VCL NAL unit that precedes the suffix APS NAL unit in decoding order is not intended for use by the particular VCL NAL unit, but rather for use by the VCL NAL units that follow the suffix APS NAL unit in decoding order.
[0853] aps_extension_flag equal to 0 specifies that the aps_extension_data_flag syntax element is not present in the APS RBSP syntax structure. aps_extension_flag equal to 1 specifies that the aps_extension_data_flag syntax element is present in the APS RBSP syntax structure.
[0854] aps_extension_data_flag can have any value. Its presence and value do not affect the conformance of a decoder to the profiles specified in this version of this specification. Decoders conforming to this version of this specification shall ignore all aps_extension_data_flag syntax elements.
[0855] 7.4.3.6 Image Header RBSP Semantics
[0856] The PH RBSP contains the PH syntax structure, namely picture_header_structure().
[0857] 7.4.3.7 Image header structure semantics
[0858] The PH syntax structure contains common information for all slices of the codec picture associated with the PH syntax structure.
[0859] gdr_or_irap_pic_flag equal to 1 specifies that the current picture is a GDR or IRAP picture. gdr_or_irap_pic_flag equal to 0 specifies that the current picture may or may not be a GDR or IRAP picture.
[0860] gdr_pic_flag equal to 1 specifies that the picture associated with the PH is a GDR picture. gdr_pic_flag equal to 0 specifies that the picture associated with the PH is not a GDR picture. When not present, the value of gdr_pic_flag is inferred to be equal to 0. When gdr_enabled_flag is equal to 0, the value of gdr_pic_flag shall be equal to 0.
[0861] ph_inter_slice_allowed_flag equal to 0 specifies that all codec slices of the picture have slice_type equal to 2. ph_inter_slice_allowed_flag equal to 1 specifies that one or more codec slices with slice_type equal to 0 or 1 may or may not be present in the picture.
[0862] ph_intra_slice_allowed_flag equal to 0 specifies that all codec slices of the picture have slice_type equal to 0 or 1. ph_intra_slice_allowed_flag equal to 1 specifies that the picture may or may not have one or more codec slices with slice_type equal to 2. When not present, the value of ph_intra_slice_allowed_flag is inferred to be equal to 1.
[0863] NOTE 1 – For bitstreams that support sub-picture based bitstream merging without changing the PH NAL units, the encoder is expected to set the values of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag equal to 1.
[0864] non_reference_picture_flag equal to 1 specifies that the picture associated with the PH is never used as a reference picture. non_reference_picture_flag equal to 0 specifies that the picture associated with the PH may or may not be used as a reference picture.
[0865] ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id of the PPS being used. The value of ph_pic_parameter_set_id shall be in the range of 0 to 63 (inclusive).
[0866] One requirement for bitstream conformance is that the TemporalId value of the PH shall be greater than or equal to the TemporalId value of the PPS with pps_pic_parameter_set_id equal to ph_pic_parameter_set_id.
[0867] 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.
[0868] After decoding a CLVSS picture that is not the first picture in the bitstream, no_output_of_prior_pics_flag affects the output of previously decoded pictures in the DPB.
[0869] recovery_poc_cnt specifies the recovery point of the decoded picture in output order. If the current picture is a GDR picture associated with PH, and there is a picture picA following the current GDR picture in decoding order in CLVS whose PicOrderCntVal is equal to the PicOrderCntVal of the current GDR picture plus the value of recovery_poc_cnt, then picture picA is called the 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 the recovery point picture. The recovery point picture shall not precede the current GDR picture in decoding order. The value of recovery_poc_cnt shall be in the range of 0 to MaxPicOrderCntLsb-1, inclusive.
[0870] When the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows:
[0871] RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (82)
[0872] 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 exactly match the corresponding pictures produced by starting the decoding process from the previous IRAP picture (if any), in output order, and precede the associated GDR picture in decoding order.
[0873] ph_extra_bit[i] may be equal to 1 or 0. A decoder conforming to this version of this specification shall ignore the value of ph_extra_bit[i]. Its value does not affect the conformance of the decoder to the profiles specified in this version of this specification.
[0874] 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 equal to 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.
[0875] poc_msb_val specifies the POC MAB value of the current picture. The length of the syntax element poc_msb_val is poc_msb_len_minus1+1 bits.
[0876] 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, multiple, or all slices associated with the PH. When not present, ph_alf_enabled_flag is inferred to be equal to 0.
[0877] ph_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slice associated with the PH.
[0878] ph_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALFAPS referenced by the luma component of the slice associated with the PH.
[0879] The value of alf_luma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i].
[0880] The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the picture associated with the PH.
[0881] ph_alf_chroma_idc equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. ph_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. ph_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. ph_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to the Cb and Cr color components. When ph_alf_chroma_idc is not present, it is inferred to be equal to 0.
[0882] ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referenced by the chroma components of the slice associated with the PH.
[0883] The value of alf_chroma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma.
[0884] The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma shall be less than or equal to the TemporalId of the picture associated with the PH.
[0885] ph_cc_alf_cb_enabled_flag equal to 1 specifies that the cross-component filter for the Cb color component is enabled for all slices associated with the PH and may be applied to the Cb color components in the slice. ph_cc_alf_cb_enabled_flag equal to 0 specifies that the cross-component filter for the Cb color component may be disabled for one or more or all slices associated with the PH. When not present, ph_cc_alf_cb_enabled_flag is inferred to be equal to 0.
[0886] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cb color component of the slice associated with the PH.
[0887] The value of alf_cc_cb_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id.
[0888] ph_cc_alf_cr_enabled_flag equal to 1 specifies that cross-component filters for Cr color components are enabled for all slices associated with the PH and may be applied to Cr color components in a slice. ph_cc_alf_cr_enabled_flag equal to 0 specifies that cross-component filters for Cr color components may be disabled for one or more or all slices associated with the PH. When not present, ph_cc_alf_cr_enabled_flag is inferred to be equal to 0.
[0889] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referenced by the Cr color component of the slice associated with the PH.
[0890] The value of alf_cc_cr_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id.
[0891] ph_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is enabled for all slices associated with the PH. ph_lmcs_enabled_flag equal to 0 specifies that luma mapping with chroma scaling may be disabled for one or more or all slices associated with the PH. When not present, the value of ph_lmcs_enabled_flag is inferred to be equal to 0.
[0892] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referenced by the slice associated with the PH. The TemporalId of the APS NAL unit with aps_params_type equal to LMCS_APS and adaptation_parameter_set_id equal to ph_lmcs_aps_id shall be less than or equal to the TemporalId of the picture associated with the PH.
[0893] ph_chroma_residual_scale_flag equal to 1 specifies that chroma residual scaling is enabled for all slices associated with the PH. ph_chroma_residual_scale_flag equal to 0 specifies that chroma residual scaling may be disabled for one or more or all slices associated with the PH. When ph_chroma_residual_scale_flag is not present, it is inferred to be equal to 0.
[0894] ph_scaling_list_present_flag equal to 1 specifies that the scaling list data for the slices associated with the PH is derived based on the scaling list data contained in the reference scaling list APS. ph_scaling_list_present_flag equal to 0 specifies that the scaling list data for the slices associated with the PH is set equal to 16. When not present, the value of ph_scaling_list_present_flag is inferred to be equal to 0.
[0895] ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS. The TemporalId of the APS NAL unit with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id shall be less than or equal to the TemporalId of the picture associated with the PH.
[0896] ph_virtual_boundaries_present_flag equal to 1 specifies that virtual boundaries are signaled in the PH. ph_virtual_boundaries_present_flag equal to 0 specifies that virtual boundaries are not signaled in the PH. When one or more virtual boundaries are signaled in the PH, loop filtering operations are disabled across virtual boundaries in the picture. Loop filtering operations include deblocking filter, sample adaptive offset filter, and adaptive loop filter operations. When not present, the value of ph_virtual_boundaries_present_flag is inferred to be equal to 0.
[0897] A requirement of bitstream conformance is that when subpic_info_present_flag is equal to 1, the value of ph_virtual_boundaries_present_flag shall be equal to 0.
[0898] The variable VirtualBoundariesPresentFlag is derived as follows:
[0899]
[0900] 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.
[0901] The variable NumVerVirtualBoundaries is derived as follows:
[0902]
[0903] ph_virtual_boundaries_pos_x[i] specifies the position of the i-th vertical virtual boundary in units of luma samples divided by 8. The value of ph_virtual_boundaries_pos_x[i] shall be in the range of 1 to Ceil(pic_width_in_luma_samples ÷ 8) - 1, inclusive.
[0904] The list VirtualBoundariesPosX[i] (for i in the range 0 to NumVirtualBoundaries-1, inclusive) specifies the positions of the vertical virtual boundaries in units of luma samples as follows:
[0905]
[0906] The distance between any two vertical virtual boundaries shall be greater than or equal to CtbSizeY luma samples.
[0907] ph_num_hor_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_y[i] syntax elements present in PH. When ph_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0.
[0908] The parameter NumHorVirtualBoundaries is derived as follows:
[0909]
[0910] 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.
[0911] ph_virtual_boundaries_pos_y[i] specifies the position of the i-th horizontal virtual boundary in units of luma samples divided by 8. The value of ph_virtual_boundaries_pos_y[i] shall be in the range of 1 to Ceil(pic_height_in_luma_samples ÷ 8) - 1, inclusive.
[0912] The list VirtualBoundariesPosY[i] (for i in the range 0 to NumVirtualBoundaries-1, inclusive) specifies the positions of the horizontal virtual boundaries in units of luma samples as follows:
[0913]
[0914] The distance between any two horizontal virtual boundaries shall be greater than or equal to CtbSizeY luma samples.
[0915] pic_output_flag affects the decoded picture output and deletion process. When pic_output_flag is not present, it is inferred to be equal to 1.
[0916] partition_constraints_override_flag equal to 1 specifies that the partition constraint parameters are present in the PH. partition_constraints_override_flag equal to 0 specifies that the partition constraint parameters are not present in the PH. When not present, the value of partition_constraints_override_flag is inferred to be equal to 0.
[0917] ph_log2_diff_min_qt_min_cb_intra_slice_luma specifies the difference between the base-2 logarithm of the minimum size among the luma samples of the luma leaf blocks resulting from the quadtree partitioning of the CTU and the base-2 logarithm of the minimum decoded block size among the luma samples of the luma CU in the slice with slice_type equal to 2 associated with the PH. The value of ph_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of ph_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_intra_slice_luma.
[0918] ph_max_mtt_hierarchy_depth_intra_slice_luma specifies the maximum hierarchical depth of a codec unit resulting from a multi-type tree partitioning of quadtree leaves in slices with slice_type equal to 2 (I) associated with the PH. The value of ph_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When not present, the value of ph_max_mtt_hierarchy_depth_intra_slice_luma is inferred to be equal to sps_max_mtt_hierarchy_depth_intra_slice_luma.
[0919] ph_log2_diff_max_bt_min_qt_intra_slice_luma specifies the difference between the base-2 logarithm of the maximum dimension (width or height) among the luma samples of a luma codec block that can use binary partitioning and the minimum dimension (width or height) among the luma samples of a luma leaf block resulting from a quadtree partitioning of a CTU in a slice with slice_type equal to 2(1) associated with the PH. The value of ph_log2_diff_max_bt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When not present, the value of ph_log2_diff_max_bt_min_qt_intra_slice_luma is inferred to be equal to sps_log2_diff_max_bt_min_qt_intra_slice_luma.
[0920] ph_log2_diff_max_tt_min_qt_intra_slice_luma specifies the difference between the base-2 logarithm of the maximum dimension (width or height) among the luma samples of a luma codec block that can use ternary partitioning and the minimum dimension (width or height) among the luma samples of a luma leaf block resulting from a quadtree partitioning of a CTU in a slice with slice_type equal to 2(1) associated with the PH. The value of ph_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_luma.
[0921] ph_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the difference between the base-2 logarithm of the minimum size among the luma samples of the chroma leaf blocks resulting from a quadtree partition of a chroma CTU with treeType equal to DUAL_TREE_CHROMA and the base-2 logarithm of the minimum decoded block size among the luma samples of the chroma CU with treeType equal to DUAL_TREE_CHROMA in slices associated with the PH value slice_type equal to 2(1). The value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of ph_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to sps_log2_diff_min_qt_cb_intra_slice_chroma.
[0922] ph_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchical depth of chroma codec units resulting from multi-type tree partitioning of chroma quadtree leaves with treeType equal to DUAL_TREE_CHROMA in slices with slice_type equal to 2(I) associated with the PH. The value of ph_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When not present, the value of ph_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to sps_max_mtt_hierarchy_depth_intra_slice_chroma.
[0923] ph_log2_diff_max_bt_min_qt_intra_slice_chroma specifies the difference between the base-2 logarithm of the maximum dimension (width or height) among the luma samples of a chroma codec block that can use binary partitioning and the minimum dimension (width or height) among the luma samples of a chroma leaf block resulting from a quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) associated with the PH. The value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC, inclusive. When not present, the value of ph_log2_diff_max_bt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_bt_min_qt_intra_slice_chroma.
[0924] ph_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the difference between the base-2 logarithm of the maximum dimension (width or height) among the luma samples of a chroma codec block that can use ternary partitioning and the minimum dimension (width or height) among the luma samples of a chroma leaf block resulting from a quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) associated with the PH. The value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC, inclusive. When not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_chroma.
[0925] ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of a codec unit in an intra slice representing cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of ph_cu_qp_delta_subdiv_intra_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.
[0926] When not present, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.
[0927] ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of the codec unit in the intra slice that indicates cu_chroma_qp_offset_flag. The value of ph_cu_chroma_qp_offset_subdiv_intra_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + ph_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.
[0928] When not present, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.
[0929] ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the base-2 logarithm of the minimum size in the luma samples of the luma leaf blocks resulting from quadtree partitioning of the CTU and the base-2 logarithm of the minimum luma codec block size in the luma samples of the luma CU in slices with slice_type equal to 0 (B) or 1 (P) associated with the PH. The value of ph_log2_diff_min_qt_min_cb_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of ph_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_inter_slice.
[0930] ph_max_mtt_hierarchy_depth_inter_slice specifies the maximum hierarchical depth of codec units resulting from multi-type tree partitioning of quadtree leaves in slices with slice_type equal to 0 (B) or 1 (P) associated with the PH. The value of ph_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When not present, the value of ph_max_mtt_hierarchy_depth_inter_slice is inferred to be equal to sps_max_mtt_hierarchy_depth_inter_slice.
[0931] ph_log2_diff_max_bt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum dimension (width or height) among the luma samples of a luma codec block that can use binary partitioning and the minimum dimension (width or height) among the luma samples of a luma leaf block resulting from a quadtree partitioning of a CTU in a slice with slice_type equal to 0 (B) or 1 (P) associated with the PH. The value of ph_log2_diff_max_bt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When not present, the value of ph_log2_diff_max_bt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_bt_min_qt_inter_slice.
[0932] ph_log2_diff_max_tt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum dimension (width or height) among the luma samples of a luma codec block that can use ternary partitioning and the minimum dimension (width or height) among the luma samples of a luma leaf block resulting from a quadtree partitioning of a CTU in a slice with slice_type equal to 0 (B) or 1 (P) associated with the PH. The value of ph_log2_diff_max_tt_min_qt_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When not present, the value of ph_log2_diff_max_tt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_tt_min_qt_inter_slice.
[0933] ph_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value in codec units representing inter slices with cu_qp_delta_abs and cu_qp_delta_sign_flag. 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.
[0934] When not present, the value of ph_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.
[0935] ph_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value of a codec unit in an inter slice that indicates cu_chroma_qp_offset_flag. 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.
[0936] When not present, the value of ph_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.
[0937] The ph_temporal_mvp_enabled_flag specifies whether the temporal motion vector predictor can be used for inter prediction of slices associated with the PH. If ph_temporal_mvp_enabled_flag is equal to 0, the syntax elements of the slices associated with the PH shall be constrained so that the temporal motion vector predictor is not used in the decoding of the slices. Otherwise (ph_temporal_mvp_enabled_flag is equal to 1), the temporal motion vector predictor can be used for decoding the slices associated with the PH. When not present, the value of ph_temporal_mvp_enabled_flag is inferred to be equal to 0. The value of ph_temporal_mvp_enabled_flag shall be equal to 0 when no reference picture in the DPB has the same spatial resolution as the current picture.
[0938] The maximum number of sub-block-based merging MVP candidates MaxNumSubblockMergeCand is derived as follows:
[0939]
[0940] The value of MaxNumSubblockMergeCand should be in the range of 0 to 5 (inclusive).
[0941] ph_collocated_from_l0_flag equal to 1 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 0. ph_collocated_from_l0_flag equal to 0 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 1.
[0942] ph_collocated_ref_idx specifies the reference index of the collocated picture used for temporal motion vector prediction.
[0943] When ph_collocated_from_l0_flag is equal to 1, ph_collocated_ref_idx refers to the entry in reference picture list 0, and the value of ph_collocated_ref_idx shall be in the range of 0 to num_ref_entries[0][PicRplsIdx[0]]-1, inclusive.
[0944] 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][PicRplsIdx[1]]-1, inclusive.
[0945] When not present, the value of ph_collocated_ref_idx is inferred to be equal to 0.
[0946] mvd_l1_zero_flag equal to 1 indicates that the mvd_coding(x0, y0, 1) syntax structure is not parsed and, for compIdx=0..1 and cpIdx=0..2, MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compIdx] are set equal to 0. mvd_l1_zero_flag equal to 0 indicates that the mvd_coding(x0, y0, 1) syntax structure is parsed.
[0947] ph_fpel_mmvd_enabled_flag equal to 1 specifies that merge mode with motion vector differences uses integer sample precision in slices associated with the PH. ph_fpel_mmvd_enabled_flag equal to 0 specifies that merge mode with motion vector differences may use fractional sample precision in slices associated with the PH. When not present, the value of ph_fpel_mmvd_enabled_flag is inferred to be 0.
[0948] ph_disable_bdof_flag equal to 1 specifies that inter prediction based on bidirectional optical flow is disabled in the slice associated with PH. ph_disable_bdof_flag equal to 0 specifies that inter prediction based on bidirectional optical flow may or may not be enabled in the slice associated with PH.
[0949] When ph_disable_bdof_flag is not present, the following applies:
[0950] – If sps_bdof_enabled_flag is equal to 1, the value of ph_disable_bdof_flag is inferred to be equal to 0.
[0951] – Otherwise (sps_bdof_enabled_flag is equal to 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.
[0952] ph_disable_dmvr_flag equal to 1 specifies that decoder motion vector optimization based inter bi-prediction is disabled in slices associated with the PH. ph_disable_dmvr_flag equal to 0 specifies that decoder motion vector optimization based inter bi-prediction may or may not be enabled in slices associated with the PH.
[0953] When ph_disable_dmvr_flag is not present, the following applies:
[0954] – If sps_dmvr_enabled_flag is equal to 1, the value of ph_disable_dmvr_flag is inferred to be equal to 0.
[0955] – Otherwise (sps_dmvr_enabled_flag is equal to 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[0956] ph_disable_prof_flag equal to 1 specifies that prediction optimization with optical flow is disabled in slices associated with PH. ph_disable_prof_flag equal to 0 specifies that prediction optimization with optical flow may be enabled or not enabled in slices associated with PH.
[0957] When ph_disable_prof_flag is not present, the following applies:
[0958] – If sps_affine_prof_enabled_flag is equal to 1, the value of ph_disable_prof_flag is inferred to be equal to 0.
[0959] – Otherwise (sps_affine_prof_enabled_flag is equal to 0), the value of ph_disable_prof_flag is inferred to be equal to 1.
[0960] ph_qp_delta specifies the Qp to be used for the codec blocks in the picture Y The initial value of until it is modified by the value of CuQpDeltaVal in the codec unit layer.
[0961] When qp_delta_info_in_ph_flag is equal to 1, the Qp of all slices of the picture are derived as follows Y The initial value of the quantization parameter SliceQp Y :
[0962] SliceQp Y =26+init_qp_minus26+ph_qp_delta (89)
[0963] SliceQp Y The value of should be in the range of -QpBdOffset to +63 (inclusive).
[0964] ph_joint_cbcr_sign_flag specifies whether the concatenated residual samples of the two chroma components have inverted signs in the transform unit for which tu_joint_cbcr_residual_flag[x0][y0] is equal to 1. When tu_joint_cbcr_residual_flag[x0][y0] is equal to 1 for the transform unit, ph_joint_cbcr_sign_flag equal to 0 specifies that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the concatenated Cb (or Cr) residual sample, and ph_joint_cbcr_sign_flag equal to 1 specifies that the sign of each residual sample of the Cr (or Cb) component is given by the inverted sign of the concatenated Cb (or Cr) residual sample.
[0965] ph_sao_luma_enabled_flag equal to 1 specifies that SAO is enabled for luma components in all slices associated with the PH; ph_sao_luma_enabled_flag equal to 0 specifies that SAO for luma components may be disabled for one or more or all slices associated with the PH. When ph_sao_luma_enabled_flag is not present, it is inferred to be equal to 0.
[0966] ph_sao_chroma_enabled_flag equal to 1 specifies that SAO is enabled for chroma components in all slices associated with the PH; ph_sao_chroma_enabled_flag equal to 0 specifies that SAO for chroma components may be disabled for one or more or all slices associated with the PH. When ph_sao_chroma_enabled_flag is not present, it is inferred to be equal to 0.
[0967] ph_dep_quant_enabled_flag equal to 0 specifies that correlated quantization is disabled for the current picture. ph_dep_quant_enabled_flag equal to 1 specifies that correlated quantization is enabled for the current picture. When ph_dep_quant_enabled_flag is not present, it is inferred to be equal to 0.
[0968] pic_sign_data_hiding_enabled_flag equal to 0 specifies that sign bit hiding is disabled for the current picture. pic_sign_data_hiding_enabled_flag equal to 1 specifies that sign bit hiding is enabled for the current picture. When pic_sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.
[0969] ph_deblocking_filter_override_flag equal to 1 specifies that deblocking parameters are present in PH. ph_deblocking_filter_override_flag equal to 0 specifies that deblocking parameters are not present in PH. When not present, the value of ph_deblocking_filter_override_flag is inferred to be equal to 0.
[0970] ph_deblocking_filter_disabled_flag equal to 1 specifies that the operation of the deblocking filter is not applied to the slices associated with the PH. ph_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter is not applied to the slices associated with the PH. When ph_deblocking_filter_disabled_flag is not present, it is inferred to be equal to pps_deblocking_filter_disabled_flag.
[0971] ph_beta_offset_div2 and ph_tc_offset_div2 specify the deblocking parameter offsets for beta and tc (divided by 2) applied to the luma component of the slice associated with the PH. The values of ph_beta_offset_div2 and ph_tc_offset_div2 shall both be in the range -12 to 12, inclusive. When not present, the values of ph_beta_offset_div2 and ph_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.
[0972] ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 specify the deblocking parameter offsets for beta and tc (divided by 2) applied to the Cb component of the slice associated with the PH. The values of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 shall both be in the range of -12 to 12, inclusive. When not present, the values of ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2 are inferred to be equal to pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2, respectively.
[0973] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets applied to the beta and tc (divided by 2) of the Cr components of the slice associated with the PH. The values of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 shall both be in the range of -12 to 12, inclusive. When not present, the values of ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 are inferred to be equal to pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2, respectively.
[0974] ph_extension_length specifies the length of the PH extension data in bytes, excluding the bits used to signal the ph_extension_length itself. The value of ph_extension_length shall be in the range of 0 to 256 (inclusive). When not present, the value of ph_extension_length is inferred to be equal to 0.
[0975] ph_extension_data_byte can have any value. Decoders conforming to this version of this specification shall ignore the value of ph_extension_data_byte. Its value does not affect the conformance of the decoder to the profile specified in this version of this specification.
[0976] 7.4.8 Strip Header Semantics
[0977] 7.4.8.1 Common Strip Header Semantics
[0978] The variable CuQpDeltaVal is set equal to 0, which specifies the difference between the quantization parameter of the codec unit containing cu_qp_delta_abs and its prediction. Cb 、Qp' Cr and Qp' CbCr The variable CuQpOffset to use when quantizing the respective values of the parameters Cb 、CuQpOffset Cr and CuQpOffset CbCr are all set equal to 0.
[0979] picture_header_in_slice_header_flag equal to 1 specifies that the PH syntax structure is present in the slice header. picture_header_in_slice_header_flag equal to 0 specifies that the PH syntax structure is not present in the slice header.
[0980] One requirement for bitstream conformance is that the value of picture_header_in_slice_header_flag shall be the same in all codec slices in a CLVS.
[0981] When picture_header_in_slice_header_flag is equal to 1 for a codec slice, a bitstream conformance requirement is that no VCL NAL units with nal_unit_type equal to PH_NUT shall be present in the CLVS.
[0982] When picture_header_in_slice_header_flag is equal to 0, picture_header_in_slice_header_flag of all codec slices in the current picture shall be equal to 0, and the current PU shall have a PH NAL unit.
[0983] slice_subpic_id specifies the sub-picture ID of the sub-picture 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.
[0984] slice_address specifies the slice address of the slice. When not present, the value of slice_address is inferred to be equal to 0. When rect_slice_flag is equal to 1 and NumSlicesInSubpic[CurrSubicIdx] is equal to 1, the value of slice_address is inferred to be equal to 0.
[0985] If rect_slice_flag is equal to 0, the following applies:
[0986] - The strip address is the raster scan slice index.
[0987] - The length of slice_address is Ceil(Log2(NumTilesInPic)) bits.
[0988] - The value of slice_address should be in the range of 0 to NumTilesInPic-1 (inclusive).
[0989] Otherwise (rect_slice_flag is equal to 1), the following applies:
[0990] - The slice address is the sub-picture level slice index of the slice.
[0991] - The length of slice_address is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits.
[0992] - The value of slice_address should be in the range of 0 to NumSlicesInSubpic[CurrSubpicIdx]-1 (inclusive).
[0993] The requirements for bitstream conformance are that the following constraints apply:
[0994] - If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address shall not be equal to the value of slice_address of any other codec slice NAL unit of the same codec picture.
[0995] - Otherwise, the slice_subpic_id and slice_address value pair shall not be equal to the slice_subpic_id and slice_address value pair of any other codec slice NAL unit of the same codec picture.
[0996] - The shape of the slices of a picture shall be such that each CTU, when decoded, shall have its entire left and entire top borders consisting of either a picture boundary or a previously decoded CTU boundary.
[0997] sh_extra_bit[i] may be equal to 1 or 0. A decoder conforming to this version of this specification shall ignore the value of sh_extra_bit[i]. Its value does not affect the conformance of the decoder to the profiles specified in this version of this specification.
[0998] num_tiles_in_slice_minus1 plus 1 (when present) specifies the number of tiles in a slice. The value of num_tiles_in_slice_minus1 should be in the range of 0 to NumTilesInPic-1 (inclusive).
[0999] The variable NumCtusInCurrSlice specifying the number of CTUs in the current slice and the list CtbAddrInCurrSlice[i] specifying the picture raster scan address of the i-th CTB in the slice (for i in the range of 0 to NumCtusInCurrSlice-1, inclusive) are derived as follows:
[1000]
[1001] Derived variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos,
[1002]
[1003] slice_type specifies the codec type of the slice according to Table 9.
[1004] Table 9 - Name association with slicetype
[1005] slice_type The name of the slice_type 0 B (B strip) 1 P (P stripe) 2 I(I strip)
[1006] When not present, the value of slice_type is inferred to be equal to 2.
[1007] When ph_intra_slice_allowed_flag is equal to 0, the value of slice_type shall be equal to 0 or 1. When nal_unit_type is in the range of IDR_W_RADL to CRA_NUT (inclusive) and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.
[1008] The variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC are derived as follows: If slice_type equals to 2(I),
[1009] MinQtLog2SizeY=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_luma (119)
[1010] MinQtLog2SizeC=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_intra_slice_chroma (120)
[1011] MaxBtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_bt_min_qt_intra_slice_luma) (121)
[1012] MaxBtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_bt_min_qt_intra_slice_chroma) (122)
[1013] MaxTtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_tt_min_qt_intra_slice_luma) (123)
[1014] MaxTtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_tt_min_qt_intra_slice_chroma) (124)
[1015] MaxMttDepthY=ph_max_mtt_hierarchy_depth_intra_slice_luma (125)
[1016] MaxMttDepthC=ph_max_mtt_hierarchy_depth_intra_slice_chroma (126)
[1017] CuQpDeltaSubdiv=ph_cu_qp_delta_subdiv_intra_slice (127)
[1018] CuChromaQpOffsetSubdiv=ph_cu_chroma_qp_offset_subdiv_intra_slice(128)
[1019] Otherwise(slice_type equal to 0(B)or 1(P)),
[1020] MinQtLog2SizeY=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_inter_slice(129)
[1021] MinQtLog2SizeC=MinCbLog2SizeY+ph_log2_diff_min_qt_min_cb_inter_slice(130)
[1022] MaxBtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_bt_min_qt_inter_slice) (131)
[1023] MaxBtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_bt_min_qt_inter_slice) (132)
[1024] MaxTtSizeY=1<<(MinQtLog2SizeY+ph_log2_diff_max_tt_min_qt_inter_slice) (133)
[1025] MaxTtSizeC=1<<(MinQtLog2SizeC+ph_log2_diff_max_tt_min_qt_inter_slice) (134)
[1026] MaxMttDepthY=ph_max_mtt_hierarchy_depth_inter_slice (135)
[1027] MaxMttDepthC=ph_max_mtt_hierarchy_depth_inter_slice (136)
[1028] CuQpDeltaSubdiv=ph_cu_qp_delta_subdiv_inter_slice (137)
[1029] CuChromaQpOffsetSubdiv=ph_cu_chroma_qp_offset_subdiv_inter_slice(138)
[1030] MinQtSizeY=1< <MinQtLog2SizeY (139)
[1031] MinQtSizeC=1< <MinQtLog2SizeC (140)
[1032] MinBtSizeY=1< <MinCbLog2SizeY (141)
[1033] MinTtSizeY=1< <MinCbLog2SizeY (142)
[1034] slice_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled and can be applied to the Y, Cb, or Cr color components in the slice. slice_alf_enabled_flag equal to 0 specifies that the adaptive loop filter is disabled for all color components in the slice. When not present, the value of slice_alf_enabled_flag is inferred to be equal to ph_alf_enabled_flag.
[1035] slice_num_alf_aps_ids_luma specifies the number of ALF APSs referenced by the slice. When slice_alf_enabled_flag is equal to 1 and slice_num_alf_aps_ids_luma 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.
[1036] slice_alf_aps_id_luma[i] specifies the adaptation_parameter_set_id of the i-th ALF APS referenced by the luma component of the slice. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i] shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_alf_enabled_flag is equal to 1 and slice_alf_aps_id_luma[i] is not present, the value of slice_alf_aps_id_luma[i] is inferred to be equal to the value of ph_alf_aps_id_luma[i].
[1037] The value of alf_luma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[i].
[1038] slice_alf_chroma_idc equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color components. 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.
[1039] slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referenced by the chroma components of the slice. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be less than or equal to the TemporalId of the 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.
[1040] The value of alf_chroma_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma.
[1041] slice_cc_alf_cb_enabled_flag equal to 0 specifies that the cross-component filter is not applied to the Cb color component. slice_cc_alf_cb_enabled_flag equal to 1 indicates that the cross-component filter is enabled and 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.
[1042] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id referenced by the Cb color component of the slice.
[1043] The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cb_enabled_flag is equal to 1 and slice_cc_alf_cb_aps_id is not present, the value of slice_cc_alf_cb_aps_id is inferred to be equal to the value of ph_cc_alf_cb_aps_id.
[1044] The value of alf_cc_cb_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id.
[1045] slice_cc_alf_cr_enabled_flag equal to 0 specifies that the cross-component filter is not applied to the Cr color components. slice_cc_alf_cb_enabled_flag equal to 1 indicates that the cross-component adaptive loop filter is enabled and can be applied to the Cr color components. When slice_cc_alf_cr_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cr_enabled_flag.
[1046] slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id referenced by the Cr color components of the slice. The TemporalId of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be less than or equal to the TemporalId of the coded slice NAL unit. When slice_cc_alf_cr_enabled_flag is equal to 1 and slice_cc_alf_cr_aps_id is not present, the value of slice_cc_alf_cr_aps_id is inferred to be equal to the value of ph_cc_alf_cr_aps_id.
[1047] The value of alf_cc_cr_filter_signal_flag shall be equal to 1 for APS NAL units with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id.
[1048] When separate_colour_plane_flag is equal to 1, colour_plane_id identifies the colour plane associated with the current slice. The value of colour_plane_id shall be in the range 0 to 2 (inclusive). colour_plane_id values 0, 1 and 2 correspond to the Y, Cb and Cr planes respectively. The value 3 of colour_plane_id is reserved for future use by ITU-T | ISO / IEC.
[1049] NOTE 1 – There is no correlation between the decoding processes of different color planes of a picture.
[1050] num_ref_idx_active_override_flag equal to 1 specifies that the syntax element num_ref_idx_active_minus1[0] is present for P and B slices, and the syntax element num_ref_idx_active_minus1[1] is present for B slices. num_ref_idx_active_override_flag equal to 0 specifies that the syntax elements num_ref_idx_active_minus1[0] and num_ref_idx_active_minus1[1] are not present. When not present, the value of num_ref_idx_active_override_flag is inferred to be equal to 1.
[1051] num_ref_idx_active_minus1[i] is used to derive the variable NumRefIdxActive[i] as specified in Equation 143. The value of num_ref_idx_active_minus1[i] shall be in the range of 0 to 14, inclusive.
[1052] 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.
[1053] 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.
[1054] The variable NumRefIdxActive[i] is derived as follows:
[1055]
[1056] The value of NumRefIdxActive[i]-1 specifies the maximum reference index of reference picture list i that can be used for decoding the slice. When the value of NumRefIdxActive[i] is equal to 0, no reference index of reference picture list i can be used for decoding the slice.
[1057] When the current slice is a P slice, the value of NumRefIdxActive[0] should be greater than 0.
[1058] When the current slice is a B slice, both NumRefIdxActive[0] and NumRefIdxActive[1] should be greater than 0.
[1059] cabac_init_flag specifies the method used to determine the initialization table used during context variable initialization. When cabac_init_flag is not present, it is inferred to be equal to 0.
[1060] slice_collocated_from_l0_flag equal to 1 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 0. slice_collocated_from_l0_flag equal to 0 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 1.
[1061] 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:
[1062] – If rpl_info_in_ph_flag is equal to 1, slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag.
[1063] – Otherwise (rpl_info_in_ph_flag is equal to 0 and if slice_type is equal to P, then the value of slice_collocated_from_l0_flag is inferred to be equal to 1.
[1064] slice_collocated_ref_idx specifies the reference index of the collocated picture used for temporal motion vector prediction.
[1065] When slice_type is equal to P or slice_type is equal to B and collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to the entry in reference picture list 0, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0]-1 (inclusive).
[1066] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to the entry in reference picture list 1, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1]-1 (inclusive).
[1067] When slice_collocated_ref_idx is not present, the following applies:
[1068] – If rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx.
[1069] – Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[1070] A requirement for bitstream conformance is that the picture referenced by slice_collocated_ref_idx shall be the same for all slices of a codec picture.
[1071] One requirement for bitstream conformance 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 shall be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, of the current picture, and RprConstraintsActive[slice_collocated_from_10_flag?0:1][slice_collocated_ref_idx] shall be equal to 0.
[1072] slice_qp_delta specifies the Qp used for codec blocks in the slice Y The initial value of until it is modified by the CuQpDeltaVal value in the codec unit layer.
[1073] When qp_delta_info_in_ph_flag is equal to 0, the Qp of the slice is derived as follows Y The initial value of the quantization parameter SliceQp Y :
[1074] SliceQp Y =26+init_qp_minus26+slice_qp_delta(144)
[1075] SliceQp Y The value of should be in the range of -QpBdOffset to +63 (inclusive).
[1076] When any of the following conditions is true:
[1077] – 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.
[1078] – 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.
[1079] The following applies:
[1080] –The value of NumRefIdxActive[0] shall be less than or equal to the value of NumWeightsL0.
[1081] – For each reference picture index RefPicList[0][i] (for i in the range 0 to NumRefIdxActive[0]-1, inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL0[i], ChromaWeightL0[0][i], and ChromaWeightL0[1][i], respectively.
[1082] 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:
[1083] –The value of NumRefIdxActive[1] shall be less than or equal to the value of NumWeightsL1.
[1084] – For each reference picture index RefPicList[1][i] (for i in the range 0 to NumRefIdxActive[1]-1, inclusive), the luma weight, Cb weight, and Cr weight applied to the reference picture index are LumaWeightL1[i], ChromaWeightL1[0][i], and ChromaWeightL1[1][i], respectively.
[1085] slice_cb_qp_offset specifies the Qp' Cb The value of the quantization parameter is the difference to be added to pps_cb_qp_offset. The value of slice_cb_qp_offset shall be in the range of -12 to +12 (inclusive). When slice_cb_qp_offset is not present, it is inferred to be equal to 0. The value of pps_cb_qp_offset + slice_cb_qp_offset shall be in the range of -12 to +12 (inclusive).
[1086] slice_cr_qp_offset specifies the time to determine Qp' Cr The value of the quantization parameter is the difference to be added to pps_cr_qp_offset. The value of slice_cr_qp_offset shall be in the range of -12 to +12 (inclusive). When slice_cr_qp_offset is not present, it is inferred to be equal to 0. The value of pps_cr_qp_offset + slice_cr_qp_offset shall be in the range of -12 to +12 (inclusive).
[1087] slice_join_cbcr_qp_offset specifies the offset in determining Qp' CbCrThe difference to be added to pps_joint_cbcr_qp_offset_value when slice_joint_cbcr_qp_offset is not present. The value of slice_joint_cbcr_qp_offset shall be in the range of -12 to +12, inclusive. When slice_joint_cbcr_qp_offset is not present, it is inferred to be equal to 0. The value of pps_joint_cbcr_qp_offset_value + slice_joint_cbcr_qp_offset shall be in the range of -12 to +12, inclusive.
[1088] cu_chroma_qp_offset_enabled_flag equal to 1 specifies that cu_chroma_qp_offset_flag may be present in the transform unit and palette codec syntax. cu_chroma_qp_offset_enabled_flag equal to 0 specifies that cu_chroma_qp_offset_flag is not present in the transform unit or palette codec syntax. When not present, the value of cu_chroma_qp_offset_enabled_flag is inferred to be equal to 0.
[1089] slice_sao_luma_flag equal to 1 specifies that SAO is enabled for the luma components in the current slice; slice_sao_luma_flag equal to 0 specifies that SAO is disabled for the luma components in the current slice. When slice_sao_luma_flag is not present, it is inferred to be equal to ph_sao_luma_enabled_flag.
[1090] slice_sao_chroma_flag equal to 1 specifies that SAO is enabled for the chroma components in the current slice; slice_sao_chroma_flag equal to 0 specifies that SAO is disabled for the chroma components in the current slice. When slice_sao_chroma_flag is not present, it is inferred to be equal to ph_sao_chroma_enabled_flag.
[1091] slice_deblocking_filter_override_flag equal to 1 specifies that deblocking parameters are present in the slice header. slice_deblocking_filter_override_flag equal to 0 specifies that deblocking parameters are not present in the slice header. When not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.
[1092] slice_deblocking_filter_disabled_flag equal to 1 specifies that the deblocking filter operation is not applied to the current slice. slice_deblocking_filter_disabled_flag equal to 0 specifies that the deblocking filter operation is applied to the current slice. When slice_deblocking_filter_disabled_flag is not present, it is inferred to be equal to ph_deblocking_filter_disabled_flag.
[1093] slice_beta_offset_div2 and slice_tc_offset_div2 specify the deblocking parameter offsets for beta and tc (divided by 2) applied to the luma component of the current slice. The values of slice_beta_offset_div2 and slice_tc_offset_div2 shall both be in the range -12 to 12, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to ph_beta_offset_div2 and ph_tc_offset_div2, respectively.
[1094] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for beta and tc (divided by 2) applied to the Cb component of the current slice. The values of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 shall both be in the range -12 to 12, inclusive. When not present, the values of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 are inferred to be equal to ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2, respectively.
[1095] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for beta and tc (divided by 2) applied to the Cr components of the current slice. The values of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 shall both be in the range -12 to 12, inclusive. When not present, the values of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 are inferred to be equal to ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2, respectively.
[1096] slice_ts_residual_coding_disabled_flag specifies that the residual_coding() syntax structure is used to parse the residual samples of the transform skip blocks of the current slice. slice_ts_residual_coding_disabled_flag equal to 0 specifies that the residual_ts_coding() syntax structure is used to parse the residual samples of the transform skip blocks of the current slice. When slice_ts_residual_coding_disabled_flag is not present, it is inferred to be equal to 0.
[1097] slice_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is enabled for the current slice. slice_lmcs_enabled_flag equal to 0 specifies that luma mapping with chroma scaling is not enabled for the current slice. When slice_lmcs_enabled_flag is not present, it is inferred to be equal to 0.
[1098] slice_scaling_list_present_flag equal to 1 specifies that the scaling list data for the current slice is derived based on the scaling list data contained in the referenced scaling list APS with aps_params_type equal to SCALING_APS and adaptation_parameter_set_id equal to ph_scaling_list_aps_id. slice_scaling_list_present_flag equal to 0 specifies that the scaling list data for the current picture is the default scaling list data derived as specified in clause 7.4.3.21. When not present, the value of slice_scaling_list_present_flag is inferred to be equal to 0.
[1099] The variable NumEntryPoints that specifies the number of entry points in the current strip is derived as follows:
[1100]
[1101] 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).
[1102] entry_point_offset_minus1[i] plus 1 specifies the i-th entry point offset (in bytes) and is represented by offset_len_minus1 plus 1 bit. The slice data following the slice header consists of NumEntryPoints+1 subsets, where the subset index values range from 0 to NumEntryPoints (inclusive). The first byte of the slice data is considered to be byte 0. When present, the emulation prevention bytes appearing in the slice data portion of the codec slice NAL unit are counted as part of the slice data for the purpose of subset identification. Subset 0 consists of bytes 0 to entry_point_offset_minus1[0] (inclusive) of the codec slice data, and subset k consists of bytes firstByte[k] to lastByte[k] (inclusive) of the codec slice data (where k is in the range of 1 to NumEntryPoints-1 (inclusive)), where firstByte[k] and lastByte[k] are defined as:
[1103]
[1104] lastByte[k]=firstByte[k]+entry_point_offset_minus1[k](147)
[1105] The last subset (with subset index equal to NumEntryPoints) consists of the remaining bytes of the codec stripe data.
[1106] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains one or more complete slices, each subset shall consist of all codec bits of all CTUs in the same slice of the slice, and the number of subsets (i.e., the value of NumEntryPoints+1) shall be equal to the number of slices in the slice.
[1107] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains a subset of CTU rows from a single slice, NumEntryPoints shall be 0 and the number of subsets shall be 1. The subset shall consist of all codec bits of all CTUs in the slice.
[1108] When sps_entropy_coding_sync_enabled_flag is equal to 1, each subset k (where k is in the range of 0 to NumEntryPoints, inclusive) shall consist of all codec bits of all CTUs in the CTU rows in the slice, and the number of subsets (i.e., the value of NumEntryPoints+1) shall be equal to the total number of slice-specific CTU rows in the slice.
[1109] slice_header_extension_length specifies the length of the slice header extension data in bytes, excluding the bits used to signal the slice_header_extension_length itself. The value of slice_header_extension_length shall be in the range of 0 to 256 (inclusive). When not present, the value of slice_header_extension_length is inferred to be equal to 0.
[1110] The slice_header_extension_data_byte[i] syntax element can have any value. A decoder conforming to this version of this specification shall ignore all values of the slice_header_extension_data_byte[i] syntax element. Its value does not affect the conformance of the decoder to the profile specified in this version of this specification.
[1111] Example technical problems solved by the disclosed technical solutions
[1112] There are several potential problems in the current design of HLS, which are described below.
[1113] (1) The control of the temporal prediction flag in the SPS, picture header, and slice header causes problems for P slices and / or B slices.
[1114] a) The picture header and slice level control of the temporal prediction flag may result in uninitialized collocated pictures and / or collocated reference indices for P slices.
[1115] b) Slice_collocated_ref_idx indicates that the entry in reference picture list 1 can be used for a P slice.
[1116] c) For P slices, the value of slice_collocated_ref_idx referring to the entry in reference picture list 0 may be out of the range of 0 to NumRefIdxActive[0]-1.
[1117] d) The picture-level and slice-level temporal prediction flags are about whether the collocated picture is from L0 or L1, and which reference pictures are referenced, but there is no advanced control such as whether temporal prediction is allowed, which may not be clear enough.
[1118] (2) Considering the interaction of related grammatical elements, it may be necessary to modify the semantics of sub-picture related grammatical elements to obtain a more accurate interpretation.
[1119] a) When there is only one sub-picture, sps_independent_subpics_flag may be equal to 0.
[1120] b) When there is only one slice in a sub-picture, the value of slice_width_in_tiles_minus1 still needs to be calculated rather than inferred.
[1121] c) When there is only one slice and / or one slice in the picture, single_slice_per_subpic_flag may be equal to 0.
[1122] d) When single_slice_per_subpic_flag is not present, for example, when no_pic_partition_flag is equal to 1, single_slice_per_subpic_flag is inferred to be 0. A requirement of bitstream conformance 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. Therefore, there is only one subpicture in a picture. And since there is only one slice in a subpicture, single_slice_per_subpic_flag shall be equal to 1 in this case.
[1123] (3) During the sub-picture sub-bitstream extraction process, some syntax elements are not set correctly.
[1124] a) Syntax elements of sub-pictures extracted from the sub-bitstream extraction process, such as sps_independent_subpics_flag, subpic_treated_as_pic_flag, loop_filter_across_subpic_enabled_flag, and no_pic_partition_flag, are not written, which may be undesirable.
[1125] b) The sub-picture sub-bitstream extraction process depends on the sub-picture ID, which may change on a picture-by-picture basis. This will result in different sub-picture indices being extracted from different pictures, which may be undesirable.
[1126] c) sps_num_subpics_minus1 and pps_num_subpics_minus1 of the output stream of the sub-picture sub-bitstream extraction process are written to 1, indicating that two sub-pictures should be extracted at a time, which may not be desired.
[1127] (4) Syntax elements on reference picture lists may appear in IDR pictures without any usage.
[1128] (5) For the luminance and chrominance of the prediction tree, the partition information is considered to be the same, which is incorrect.
[1129] (6) The syntax elements of the codec are not restricted or constrained by the corresponding general constraint flags, and the values of some general constraint flags are not restricted by the relevant constraints, which may cause some conflicts.
[1130] a) res_change_in_clvs_allowed_flag is not constrained by the value of the general constraint flag no_res_change_in_clvs_constraint_flag.
[1131] b) scaling_window_explicit_signalling_flag is not constrained by no_res_change_in_clvs_constraint_flag.
[1132] c)scaling_window_explicit_signalling_flag is not constrained by res_change_in_clvs_allowed_flag.
[1133] d) The value of sps_num_subpics_minus1 is not constrained by one_subpic_per_pic_constraint_flag.
[1134] e)subpic_treated_as_pic_flag is not constrained by one_subpic_per_pic_constraint_flag and / or sps_num_subpics_minus1 and / or pps_num_subpics_minus1.
[1135] f)loop_filter_across_subpic_enabled_flag is not constrained by one_subpic_per_pic_constraint_flag and / or sps_num_subpics_minus1 and / or pps_num_subpics_minus1.
[1136] g)one_subpic_per_pic_constraint_flag is not constrained by one_slice_per_pic_constraint_flag.
[1137] h)no_bdpcm_constraint_flag is not constrained by no_transform_skip_constraint_flag.
[1138] i) num_slices_in_pic_minus1 is not constrained by one_slice_per_pic_constraint_flag.
[1139] j)num_tiles_in_slice_minus1 is not constrained by one_slice_per_pic_constraint_flag.
[1140] Example Techniques and Embodiments
[1141] The following detailed inventions should be considered as examples to explain the general concept. These inventions should not be interpreted narrowly. In addition, these inventions can be combined in any way. In the following description, deleted parts are marked between [[ ]], and added parts are marked as Underlined bold italic .
[1142] Time domain prediction related HLS
[1143] 1. Two levels of control of TMVP can be utilized, and one is the picture level and the other is the stripe / slice / sub-picture / brick level.
[1144] a) In one example, TMVP may be enabled by signaling at the picture level the first syntax element indicating whether there is at least one inter-coded slice referencing the flag (eg, indicated by ph_temporal_mvp_allowed_flag).
[1145] i. In one example, it can be signaled in the picture header or PPS.
[1146] ii. In one example, it may be conditionally signaled, eg, based on TMVP being enabled in the SPS and / or the current picture containing at least one inter-codec slice and / or RPL present in the current picture header.
[1147] b) In one example, a second syntax element (eg, represented by sh_temporal_mvp_allowed_flag) indicating whether TMVP is enabled for the current slice may be signaled at the slice level, which may depend on the first syntax element.
[1148] i. In one example, sh_temporal_mvp_allowed_flag may be signaled only if ph_temporal_mvp_allowed_flag is equal to 1. Otherwise, it is inferred to be 0.
[1149] ii. In one example, sh_temporal_mvp_allowed_flag may be signaled only if ph_temporal_mvp_allowed_flag is equal to 0. Otherwise, it is inferred to be 1.
[1150] c) In one example, a second syntax element (e.g., represented by sh_temporal_mvp_allowed_flag) indicating whether TMVP is enabled for the current slice may be signaled at the slice level, which may depend on whether TMVP is enabled in the RPL and / or SPS present in the current slice header and / or whether the current slice is an inter-coded slice.
[1151] d) In one example, a third syntax element (eg, tmvp_info_in_ph_flag) is signaled to indicate whether the TMVP information is signaled in the picture header or the slice header.
[1152] i. TMVP information may include information on whether TMVP is enabled.
[1153] ii. TMVP information may include information of collocated reference pictures.
[1154] iii. In one example, tmvp_info_in_ph_flag is signaled only when TMVP is enabled at the sequence level (eg, sps_temporal_mvp_enabled_flag is equal to 1).
[1155] e) In one example, the second syntax element, when not present, is inferred to be equal to a default value (eg, the value of the first syntax element). For example, when not present, sh_temporal_mvp_allowed_flag is inferred to be equal to ph_temporal_mvp_allowed_flag.
[1156] 2. Whether and / or how collocated picture information (e.g., collocated picture from list 0; reference picture index of collocated picture) is inherited from PH to SH depends at least on the slice type and whether reference picture list information is present in the PH syntax structure (e.g., rpl_info_in_ph_flag is 1).
[1157] a) In one example, when slice_type is equal to P, rpl_info_in_ph_flag is equal to 1 (or / and ph_temporal_mvp_enabled_flag is equal to 1), slice_collocated_from_10_flag is set to 1 regardless of the value of ph_collocated_from_10_flag.
[1158] i. Alternatively, when slice_type is equal to P, slice_collocated_from_l0_flag may be inferred to be equal to 1 regardless of other conditions.
[1159] b) In another example, 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.
[1160] c) In one example, when slice_type is equal to P, slice_collocated_from_l0_flag may be inferred to be 1 when TMVP is enabled.
[1161] d) In one example, when slice_type is equal to P and TMVP is enabled and slice_collocated_ref_idx is in the range of 0 to NumRefIdxActive[0]-1 (inclusive).
[1162] e) In one example, when slice_type is equal to P and TMVP is enabled, RprConstraintsActive[0][slice_collocated_ref_idx] of the P slice may need to be equal to 0.
[1163] f) In one example, the following example modifications may be introduced.
[1164] slice_collocated_ref_idx specifies the reference index of the collocated picture used for temporal motion vector prediction.
[1165] When slice_type is equal to P or slice_type is equal to B and slice_ When 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 should be in the range of 0 to NumRefIdxActive[0]-1 (inclusive).
[1166] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to the entry in reference picture list 1, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1]-1 (inclusive).
[1167] When slice_collocated_ref_idx is not present, the following applies:
[1168] – If rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx.
[1169] – Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[1170] A requirement for bitstream conformance is that the picture referenced by slice_collocated_ref_idx shall be the same for all slices of a codec picture.
[1171] One requirement for bitstream conformance 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 shall be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, of the current picture, and RprConstraintsActive[slice_collocated_from_10_flag?0:1][slice_collocated_ref_idx] shall be equal to 0.
[1172] g) In one example, when ph_collocated_from_10_flag is equal to 0, the picture may be required to contain no P slices.
[1173] i. In one example, the following example modifications may be introduced.
[1174] slice_type specifies the codec type of the slice according to Table 9.
[1175] Table 9 - slice_type name association
[1176] slice_type The name of the slice_type 0 B (B strip) 1 P (P stripe) 2 I(I strip)
[1177] When not present, the value of slice_type is inferred to be equal to 2.
[1178] When ph_intra_slice_allowed_flag is equal to 0, the value of slice_type shall be equal to 0 or 1. When nal_unit_type is in the range of IDR_W_RADL to CRA_NUT (inclusive) and vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, slice_type shall be equal to 2.
[1179]
[1180] ii. Alternatively, whether the slice type is signaled may depend on whether the collocated picture is from list 0 or not.
[1181] 1. In one example, if all of the following conditions are true, the signaling of the slice type for the slice referencing the current picture header may be skipped.
[1182] –rpl_info_in_ph_flag is equal to 1
[1183] –ph_temporal_mvp_enabled_flag is equal to 1
[1184] –ph_intra_slice_allowed_flag is equal to 0
[1185] –ph_collocated_from_l0_flag is equal to 0
[1186] Alternatively, furthermore, the stripe type may be inferred to be B-stripe.
[1187] h) In one example, when ph_temporal_mvp_enabled_flag is equal to 1 and rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_from_10_flag for a P slice may always be inferred to be equal to 1. The following example modifications may be introduced.
[1188] slice_collocated_from_l0_flag equal to 1 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 0. slice_collocated_from_l0_flag equal to 0 specifies that the collocated picture used for temporal motion vector prediction is derived from reference picture list 1.
[1189] [[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:
[1190] – If rpl_info_in_ph_flag is equal to 1, slice_collocated_from_l0_flag is inferred to be equal to ph_collocated_from_l0_flag.
[1191] – 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. ]]
[1192]
[1193] i) In one example, when slice_type is equal to P and slice_collocated_from_10_flag is equal to 0, slice_collocated_ref_idx may be considered to refer to an inactive entry in reference picture list 1, and it may be required that the reference pictures referenced by the inactive entry in reference picture list 1 should also be referenced by the active entry in reference picture list 0. The following example modifications may be introduced.
[1194] slice_collocated_ref_idx specifies the reference index of the collocated picture used for temporal motion vector prediction.
[1195] When slice_type is equal to P or slice_type is equal to B and When collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to the entry in reference picture list 0, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0]-1 (inclusive).
[1196] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to the entry in reference picture list 1, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1]-1 (inclusive).
[1197] When slice_collocated_ref_idx is not present, the following applies:
[1198] – If rpl_info_in_ph_flag is equal to 1, the value of slice_collocated_ref_idx is inferred to be equal to ph_collocated_ref_idx.
[1199] – Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[1200] A requirement for bitstream conformance is that the picture referenced by slice_collocated_ref_idx shall be the same for all slices of a codec picture.
[1201] One requirement for bitstream conformance 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 shall be equal to the values of pic_width_in_luma_samples and pic_height_in_luma_samples, respectively, of the current picture, and RprConstraintsActive[slice_collocated_from_10_flag?0:1][slice_collocated_ref_idx] shall be equal to 0.
[1202] j) Alternatively, B and P slices that refer to the same picture header may use different collocated pictures.
[1203] i. In one example, even if the RPL is signaled in the picture header, the reference picture index of the collocated picture can be further signaled in the slice header.
[1204] 1. In one example, when the current slice is a P slice, the RPL signal is signaled in the picture header, temporal motion vector prediction is enabled (eg, ph_temporal_mvp_enabled_flag is true), and ph_collocated_from_10_flag is equal to 0, and the reference picture index of the collocated picture may be further signaled.
[1205] a) Alternatively, in addition, it also points to reference picture list 0.
[1206] ii. In one example, two collocated reference picture indices may be signaled or derived, and one for B slices and another for P slices that reference the same picture header.
[1207] 1. In one example, these two indexes may be signaled only when ph_collocated_from_10_flag is equal to 0.
[1208] k) In one example, an indication of whether there are B slices and P slices that reference the same picture header may be signaled.
[1209] i. Alternatively, an indication of the type of slices referring to the same picture header may be signaled in the picture header.
[1210] ii. Alternatively, it may be signaled whether there are only B slices (excluding P slices) that reference the same picture header.
[1211] iii. Alternatively, an indication of whether there are only P slices (excluding B slices) that refer to the same picture header may be signaled.
[1212] iv. Alternatively, an indication may be signaled whether there are only B slices and I slices that refer to the same picture header.
[1213] v. Alternatively, an indication may be signaled whether there are only P slices and I slices that refer to the same picture header.
[1214] vi. Alternatively, the indication of the slice type referring to the same picture header may be signaled in the picture header only when the RPL is signaled in the picture header.
[1215] vii. Alternatively, RPL is signaled in the picture header only when the slice type is signaled in the picture header that refers to the same picture header.
[1216] l) Alternatively, when slice_type is equal to P and slice_collocated_from_10_flag is equal to 0, slice_collocated_ref_idx may be modified before being used, for example, mapped to an index in the range of 0 to NumRefIdxActive[0]-1 (inclusive).
[1217] i. In one example, when slice_type is equal to P and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to an entry in reference picture list 0, and slice_collocated_ref_idx is set to (slice_collocated_ref_idx>(NumRefIdxActive[0]1)?default_col_ref_idx:slice_collocated_ref_idx), where the variable default_col_ref_idx is in the range of 0 to NumRefIdxActive[0]-1 (inclusive).
[1218] 1. In one example, the variable default_col_ref_idx is set to 0.
[1219] 2. In one example, variables can be signaled.
[1220] m) In a conforming bitstream, two slices associated with one picture header, but one of them is a P slice and the other is a B slice, may not be allowed.
[1221] n) In conformant bitstreams, two slices associated with one picture header signaling RPL, but one of them is a P slice and the other is a B slice, may not be allowed.
[1222] o) In a conformant bitstream, a slice associated with one picture header that uses two reference picture lists to signal an RPL may not be allowed, but the slice is a P slice.
[1223] Sub-image related HLS
[1224] 3. The number of sub-pictures in each picture in CLVS (eg, sps_num_subpics_minus1 and / or pps_num_subpics_minus1) can be adjusted by a general constraint flag (eg, one_subpic_per_pic_constraint_flag).
[1225] a) In one example, when a general constraint flag (eg, one_subpic_per_pic_constraint_flag) is equal to 1, the value of sps_num_subpics_minus1 and / or pps_num_subpics_minus1 may be required to be equal to 0.
[1226] b) In one example, the following example modifications may be introduced.
[1227] sps_num_subpics_minus1 plus 1 specifies the number of subpictures in each picture in the CLVS. The value of sps_num_subpics_minus1 shall be in the range of 0 to Ceil(pic_width_max_in_luma_samples ÷ CtbSizeY)*Ceil(pic_height_max_in_luma_samples ÷ CtbSizeY)-1, inclusive. When not present, the value of sps_num_subpics_minus1 is inferred to be equal to 0.
[1228] 4. Whether to signal a syntax element specifying “no intra prediction, no inter prediction, and no loop filtering operations performed across any sub-picture boundaries in the CLVS” (e.g., sps_independent_subpics_flag) may depend on the number of sub-pictures in each picture in the CLVS (e.g., sps_num_subpics_minus1).
[1229] a) In one example, when there is only one sub-picture per picture in the CLVS, the syntax element sps_independent_subpics_flag may not be signaled and inferred to be 1.
[1230] b) In one example, the following example modifications may be introduced.
[1231] sps_independent_subpics_flag equal to 1 specifies that intra prediction, inter prediction, and loop filtering operations cannot be performed across any sub-picture boundaries in the CLVS. sps_independent_subpics_flag equal to 0 specifies that inter prediction or loop filtering operations may be allowed across sub-picture boundaries in the CLVS. When not present, the value of sps_independent_subpics_flag is inferred to be equal to [[0]]1.
[1232] c) In one example, the following example modifications may be introduced.
[1233] sps_independent_subpics_flag equal to 1 specifies that intra prediction, inter prediction, and loop filtering operations cannot be performed across any sub-picture boundaries in the CLVS. sps_independent_subpics_flag equal to 0 specifies that inter prediction or loop filtering operations may be allowed across sub-picture boundaries in the CLVS. When not present, the value of sps_independent_subpics_flag is inferred to be equal to 0.
[1234] 5. The value of subpic_treated_as_pic_flag may depend on whether there is only one subpicture in the picture.
[1235] a) In one example, if one_subpic_per_pic_constraint_flag is equal to 1, then the value of subpic_treated_as_pic_flag may need to be equal to 1, or inferred to be equal to 1.
[1236] b) In one example, if sps_num_subpics_minus1 is equal to 0, then the value of subpic_treated_as_pic_flag may need to be equal to 1, or inferred to be equal to 1.
[1237] c) In one example, if pps_num_subpics_minus1 is equal to 0, then the value of subpic_treated_as_pic_flag may need to be equal to 1.
[1238] 6. The value of loop_filter_across_subpic_enabled_flag may depend on whether there is only one sub-picture in the picture.
[1239] a) In one example, if one_subpic_per_pic_constraint_flag is equal to 1, then the value of loop_filter_across_subpic_enabled_flag may need to be equal to 0, or be inferred to be equal to 0.
[1240] b) In one example, if sps_num_subpics_minus1 is equal to 0, then the value of loop_filter_across_subpic_enabled_flag may need to be equal to 0, or be inferred to be equal to 0.
[1241] c) In one example, if pps_num_subpics_minus1 is equal to 0, then the value of loop_filter_across_subpic_enabled_flag may need to be equal to 0.
[1242] 7. Whether the width of the i-th rectangular slice in units of slice columns is specified (eg, slice_width_in_tiles_minus1) may depend on single_slice_per_subpic_flag.
[1243] a) In one example, when slice_width_in_tiles_minus1 is not present but single_slice_per_subpic_flag is equal to 1, then the value of slice_width_in_tiles_minus1 may not be set.
[1244] b) In one example, the following example modifications may be introduced.
[1245] slice_width_in_tiles_minus1[i] plus 1 specifies the width of the i-th rectangular strip in units of tile columns. The value of slice_width_in_tiles_minus1[i] should be in the range of 0 to NumTileColumns-1 (inclusive).
[1246] When slice_width_in_tiles_minus1[i] does not exist The following applies:
[1247] – If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is inferred to be equal to 0.
[1248] – Otherwise, the value of slice_width_in_tiles_minus1[i] is inferred according to clause 6.5.1.
[1249] 8. Whether each sub-picture consists of one and only one rectangular slice (eg, single_slice_per_subpic_flag) can be adjusted by a general constraint flag (eg, one_slice_per_pic_constraint_flag).
[1250] a) In another example, when the syntax element single_slice_per_subpic_flag is not present, the value of single_slice_per_subpic_flag may be inferred to be equal to 1.
[1251] b) In another example, when the syntax element single_slice_per_subpic_flag does not exist, the value of single_slice_per_subpic_flag may be inferred according to whether the current picture is partitioned (eg, no_pic_partition_flag).
[1252] c) In one example, the following example modifications may be introduced.
[1253] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. [[When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.]]
[1254] d) In one example, the following example modifications may be introduced.
[1255] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When single_slice_per_subpic_flag is equal to 1, num_slice_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[1256] e) In one example, the following example modifications may be introduced.
[1257] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[1258] f) In one example, the following example modifications may be introduced.
[1259] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[1260] g) In one example, the following example modifications may be introduced.
[1261] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to [[0]]
[1262] 9. In one example, regarding derivation of the output sub-bitstream during sub-picture sub-bitstream extraction, extracted sub-pictures across different pictures in the CLVS may need to have the same sub-picture index.
[1263] a) For example, the target sub-picture ID that may need to be extracted may reference the same sub-picture index between different pictures in the CLVS.
[1264] b) For example, if subpic_id_mapping_explicitly_signalled_flag is equal to 1, and when processing sub-picture sub-bitstream extraction, it may be necessary not to signal sub-picture ID mapping in the PPS (eg, subpic_id_mapping_in_pps_flag is equal to 0).
[1265] i. In one example, if subpic_id_mapping_explicitly_signalled_flag is equal to 1, and when processing sub-picture sub-bitstream extraction, sub-picture ID mapping may need to be signaled in the SPS (eg, subpic_id_mapping_in_sps_flag is equal to 1).
[1266] c) For example, which sub-picture is extracted during the sub-picture sub-bitstream extraction process may depend on the sub-picture index.
[1267] d) For example, which syntax elements are rewritten and / or removed during sub-picture sub-bitstream extraction may depend on the sub-picture index.
[1268] e) In one example, the following example modifications may be introduced.
[1269] C.7 Sub-picture sub-bitstream extraction process
[1270] The input to this process is the bitstream inBitstream, the target OLS index targetOlsIdx, the target highest TemporalId value tIdTarget, and the target sub-picture [[ID]] for each layer subpicIdxTarget[] An array of values.
[1271] The output of this process is the sub-bitstream outBitstream.
[1272] The requirement for bitstream conformance of an input bitstream is that any output sub-bitstream that satisfies all of the following conditions shall be a conforming bitstream:
[1273] – The output sub-bitstream is the output of the process specified in this clause, where the bitstream targetOlsIdx is equal to the index into the OLS list specified by the VPS, and subpicIdxTarget[] is equal to the sub-picture ID present in the OLS, given as input.
[1274] – The output sub-bitstream contains at least one VCL NAL unit where nuh_layer_id is equal to each nuh_layer_id value in LayerIdInOls[targetOlsIdx].
[1275] – The output sub-bitstream contains at least one VCL NAL unit with TemporalId equal to tIdTarget.
[1276] NOTE - A conforming bitstream contains one or more codec slice NAL units with TemporalId equal to 0, but does not necessarily contain a codec slice NAL unit with nuh_layer_id equal to 0.
[1277] – The output sub-bitstream contains at least one VCL NAL unit where nuh_layer_id is equal to LayerIdInOls[targetOlsIdx][i] and where slice_subpic_id is equal to the value in subpicIdxTarget[i] (for each i in the range 0 to NumLayersInOls[targetOlsIdx]-1).
[1278] The output sub-bitstream outBitstream is derived as follows:
[1279] – The sub-bitstream extraction process specified in Annex C.6 is called with inBitstream, targetOlsIdx and tIdTarget as input and the output of the process is assigned to outBitstream.
[1280] – If some external means not specified in this specification is available to provide alternative parameter sets for the sub-bitstream outBitstream, all parameter sets are replaced by the alternative parameter sets.
[1281] – Otherwise, when the sub-picture level information SEI message is present in the inBitstream, the following applies:
[1282] – For all entries with sub-picture ID equal to subpicIdxTarget[], rewrite the general_level_idc value in the ols_ptl_idx[targetOlsIdx]th entry in the profile_tier_level() syntax structure list in all referenced VPS NAL units to be equal to SubpicSetLevelIdc derived in D.3.8.
[1283] For a sub-picture set consisting of sub-pictures whose sub-picture IDs are equal to all entries in subpicIdxTarget[] and j ranges from 0 to hrd_cpb_cnt_minus1, rewrite the values of cpb_size_value_minus1[tIdTarget][j] and bit_rate_value_minus1[tIdTarget][j] of the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry in the ols_hrd_parameters() syntax structure list in all referenced VPS NAL units to correspond to SubpicSetCpbSizeVcl[0], SubpicSetCpbSizeNal[0], SubpicSetBitrateVcl[0] and SubpicSetBitrateNal[0] derived in D.3.8.
[1284] For the i-th layer where i is in the range 0 to NumLayersInOls[targetOlsIdx]-1, the following applies.
[1285] –subpicIdx is set equal to the value of subpicIdxTarget[i].
[1286] – For the subpicture[[ID]] The set of sub-pictures consisting of sub-pictures with subpicIdx equal to the value of general_level_idc in the profile_tier_level() syntax structure in all referenced SPS NAL units is overwritten, where sps_ptl_dpb_hrd_params_present_flag equal to 1 will be equal to SubpicSetLevelIdc derived in D.3.8.
[1287] – the values of cpb_size_value_minus1[tIdTarget][j] and bit_rate_value_minus1[tIdTarget][j] for the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry of the ols_hrd_parameters() syntax structure list in all referenced SPS NAL units, corresponding to SubpicCpbSizeVcl[0][SubpicIdxList[subPicIdx]], SubpicBitrateVcl[0][SubpicIdxList[subPicIdx]], and SubpicBitrateNal[0][SubpicIdxList[subPicIdx]], as specified for subpic[[ID]] in D.3.8 Derived from j which is equal to the sub-picture of subpicIdx and ranges from 0 to hrd_cpb_cnt_minus1.
[1288] – Set the values of pic_width_max_in_luma_samples and pic_height_max_in_luma_samples in all referenced SPS NAL units, and the values of pic_width_in_luma_samples and pic_height_in_luma_samples in all referenced PPS NAL units to be equal to subpic_width_minus1[SubpicIdxList[subPicIdx]] and subpic_height_minus1[SubpicIdxList[subPicIdx]].
[1289] Rewrite the value of sps_num_subpics_minus1 in all referenced SPS NAL units and pps_num_subpics_minus1 in all referenced PPS NAL units to 1.
[1290] The syntax elements subpic_ctu_top_left_x[SubpicIdxList[subPicIdx]], subpic_ctu_top_left_y[SubpicIdxList[subPicIdx]] in the referenced SPS NAL unit are rewritten to 0 (if present).
[1291] For each j where SubpicIdxList[j] is not equal to subPicIdx, the syntax elements subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], subpic_treated_as_pic_flag[j], loop_filter_across_subpic_enabled_flag[j], and sps_subpic_id[j] in all referenced SPS NAL units are deleted.
[1292] Rewrite the syntax elements related to the slice and slice structure in all referenced PPSs to delete all slice rows, slice columns, and slices that are not related to the sub-picture with the sub-picture ID equal to subPicIdx.
[1293] Delete from outBitstream all VCL NAL units whose nuh_layer_id is equal to the nuh_layer_id of layer i and whose slice_subpic_id is not equal to subPicIdx.
[1294] When sli_cbr_constraint_flag is equal to 1, delete all NAL units with nal_unit_type equal to FD_NUT and filter payload SEI messages that are not associated with the VCL NAL unit of the sub-picture in subpicIdxTarget[], and set cbr_flag[tIdTarget][j] equal to 1 for the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry in the ols_hrd_parameters() syntax structure list of all referenced VPS NAL units and SPS NAL units, and j is in the range of 0 to hrd_cpb_cnt_minus1. Otherwise, (sli_cbr_constraint_flag is equal to 0), delete all NAL units with nal_unit_type equal to FD_NUT and filter payload SEI messages, and set cbr_flag[tIdTarget][j] equal to 0.
[1295] – When outBitstream contains an SEI NAL unit applicable to the scalable nesting SEI message of outBitstream (with nesting_ols_flag equal to 1 and nesting_subpic_flag equal to 1), extract the appropriate non-scalable nesting SEI message from the scalable nesting SEI message with payloadType equal to 1 (picture timing) or 130 (decoding unit information), and place the extracted SEI message into outBitstream.
[1296] 10. In one example, with respect to derivation of an output sub-bitstream during sub-picture sub-bitstream extraction, the extracted sub-bitstream may be considered as a single sub-picture in the output bitstream.
[1297] a) In one example, for syntax structures that reference output sub-bitstreams with extracted sub-pictures, the syntax element sps_independent_subpics_flag may be rewritten equal to 1.
[1298] b) In one example, the syntax elements subpic_treated_as_pic_flag and / or loop_filter_across_subpic_enabled_flag that refer to the extracted sub-picture in all output layers may not be signaled (eg, may be removed) from the syntax structure of the output sub-bitstream.
[1299] i. In one example, for syntax structures referencing an output sub-bitstream with extracted sub-pictures, the syntax element subpic_treated_as_pic_flag may be inferred to be equal to 1.
[1300] ii. In one example, for syntax structures referencing an output sub-bitstream with extracted sub-pics, the syntax element loop_filter_across_subpic_enabled_flag may be inferred to be equal to 0.
[1301] c) In one example, the value of sps_num_subpics_minus1 in all referenced SPS NAL units and the value of pps_num_subpics_minus1 in all referenced PPS NAL units with extracted sub-pictures may be rewritten to be equal to 0.
[1302] d) In one example, for syntax structures that refer to output sub-bitstreams with extracted sub-pictures, the syntax element no_pic_partition_flag may be overridden.
[1303] i. For example, whether the syntax element no_pic_partition_flag is overwritten may depend on the number of slices / slices in the output bitstream containing the extracted sub-picture.
[1304] 1. In one example, if there is only one slice and one slice in the extracted sub-picture, then the syntax element no_pic_partition_flag may be rewritten equal to 1 for syntax structures that reference output sub-bitstreams with the extracted sub-picture.
[1305] 2. Alternatively, if the number of slices and / or slices in the extracted sub-picture is greater than 1, the syntax element no_pic_partition_flag may be equal to 0 for syntax structures referencing output sub-bitstreams with extracted sub-pictures.
[1306] e) In one example, the following example modifications may be introduced.
[1307] C.7 Sub-picture sub-bitstream extraction process
[1308] The output sub-bitstream outBitstream is derived as follows:
[1309] – The sub-bitstream extraction process specified in Annex C.6 is called with inBitstream, targetOlsIdx and tIdTarget as input and the output of the process is assigned to outBitstream.
[1310] – If some external means not specified in this specification is available to provide alternative parameter sets for the sub-bitstream outBitstream, all parameter sets are replaced by the alternative parameter sets.
[1311] – Otherwise, when the sub-picture level information SEI message is present in the inBitstream, the following applies:
[1312] – For all entries with sub-picture ID equal to subpicIdxTarget[], rewrite the general_level_idc value in the ols_ptl_idx[targetOlsIdx]th entry in the profile_tier_level() syntax structure list in all referenced VPS NAL units to be equal to SubpicSetLevelIdc derived in D.3.8.
[1313] For a sub-picture set consisting of sub-pictures whose sub-picture IDs are equal to all entries in subpicIdxTarget[] and j ranges from 0 to hrd_cpb_cnt_minus1, rewrite the values of cpb_size_value_minus1[tIdTarget][j] and bit_rate_value_minus1[tIdTarget][j] of the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry in the ols_hrd_parameters() syntax structure list in all referenced VPS NAL units to correspond to SubpicSetCpbSizeVcl[0], SubpicSetCpbSizeNal[0], SubpicSetBitrateVcl[0] and SubpicSetBitrateNal[0] derived in D.3.8.
[1314] For the i-th layer where i is in the range 0 to NumLayersInOls[targetOlsIdx]-1, the following applies.
[1315] –subpicId is set equal to the value of subpicIdTarget[i].
[1316] – For a sub-picture set consisting of a sub-picture with subpicId, rewrite the value of general_level_idc in the profile_tier_level() syntax structure in all referenced SPS NAL units with sps_ptl_dpb_hrd_params_present_flag equal to 1 to SubpicSetLevelIdc derived in D.3.8.
[1317] – the values of cpb_size_value_minus1[tIdTarget][j] and bit_rate_value_minus1[tIdTarget][j] for the j-th CPB in the ols_hrd_idx[targetOlsIdx]-th entry of the ols_hrd_parameters() syntax structure list in all referenced SPS NAL units, corresponding to SubpicCpbSizeVcl[0][SubpicIdxList[subPicIdx]], SubpicBitrateVcl[0][SubpicIdxList[subPicIdx]], and SubpicBitrateNal[0][SubpicIdxList[subPicIdx]], as derived in D.3.8 for j in the range 0 to hrd_cpb_cnt_minus1 for a sub-picture with subpicId ID equal to subpicId.
[1318] – Set the values of pic_width_max_in_luma_samples and pic_height_max_in_luma_samples in all referenced SPS NAL units, and the values of pic_width_in_luma_samples and pic_height_in_luma_samples in all referenced PPS NAL units to be equal to subpic_width_minus1[SubpicIdxList[subPicIdx]] and subpic_height_minus1[SubpicIdxList[subPicIdx]].
[1319] Rewrite the value of sps_num_subpics_minus1 in all referenced SPS NAL units and pps_num_subpics_minus1 in all referenced PPS NAL units to 1.
[1320] The syntax elements subpic_ctu_top_left_x[SubpicIdList[subPicIdx]], subpic_ctu_top_left_y[SubpicIdList[subPicIdx]] in the referenced SPS NAL unit are rewritten to 0 (if present).
[1321]
[1322] For each j where SubpicIdList[j] is not equal to subPicId, delete the syntax elements subpic_ctu_top_left_x[j], subpic_ctu_top_left_y[j], subpic_width_minus1[j], subpic_height_minus1[j], subpic_treated_as_pic_flag[j], loop_filter_across_subpic_enabled_flag[j], and sps_subpic_id[j] in all referenced SPS NAL units.
[1323] Rewrite the syntax elements related to the slice and slice structure in all referenced PPSs to delete all slice rows, slice columns, and slices that are n...
Claims
1. A method for processing video data, comprising: Converting between a video comprising video pictures and a bitstream of said video is performed, wherein The video picture includes one or more sub-pictures. The bitstream complies with a format rule, and the format rule stipulates that one or more syntax elements are constrained based on one or more constraint flags of general constraint information. wherein the one or more constraint flags include a first constraint flag indicating whether each video picture in the output layer set contains only one slice, and the one or more syntax elements include a first syntax element present in each slice header of the output layer set, the first syntax element plus 1 indicating the number of slices in the slice, and Wherein, if the first constraint flag is equal to 1 and the second syntax element indicating whether a rectangular slice is used for each video picture is equal to 0, the first syntax element is constrained to be equal to a variable minus 1, where the variable indicates the number of slices in the video picture, and wherein the first constraint flag being equal to 1 indicates that each video picture contains only one slice, and the second syntax element being equal to 0 indicates that the rectangular slice is not used for each video picture.
2. The method according to claim 1, wherein The one or more syntax elements further include a third syntax element, the third syntax element incremented by 1 indicating the number of rectangular slices in each video picture, and Wherein, if the first constraint flag is equal to 1 and the second syntax element is equal to 1, the third syntax element is constrained to be equal to 0, and wherein the second syntax element being equal to 1 indicates that the rectangular slice is used for each video picture.
3. The method according to claim 1, wherein In the case where a second constraint flag indicating whether each video picture in the output layer set contains only one slice is equal to 1, the variable is constrained to be equal to 1, and the second constraint flag equal to 1 indicates that each video picture in the output layer set contains only one slice.
4. The method according to claim 1, wherein The one or more constraint flags further include a third constraint flag, the third constraint flag indicating whether the video picture includes only one sub-picture and whether sub-picture information exists, and the one or more syntax elements further include a fourth syntax element, the fourth syntax element plus 1 indicating the number of sub-pictures in the video picture, In which, when the third constraint flag is equal to 1, the fourth syntax element is constrained to be 0, and the third constraint flag is equal to 1, indicating that the video picture includes only one sub-picture and the sub-picture information does not exist.
5. The method according to claim 1, wherein The converting includes encoding the video into the bitstream.
6. The method according to claim 1, wherein The converting includes decoding the video from the bitstream.
7. An apparatus for processing video data, comprising a processor and non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: Converting between a video comprising video pictures and a bitstream of said video is performed, wherein The video picture includes one or more sub-pictures. The bitstream complies with a format rule, and the format rule stipulates that one or more syntax elements are constrained based on one or more constraint flags of general constraint information. wherein the one or more constraint flags include a first constraint flag indicating whether each video picture in the output layer set contains only one slice, and the one or more syntax elements include a first syntax element present in each slice header of the output layer set, the first syntax element plus 1 indicating the number of slices in the slice, and Wherein, if the first constraint flag is equal to 1 and the second syntax element indicating whether a rectangular slice is used for each video picture is equal to 0, the first syntax element is constrained to be equal to a variable minus 1, where the variable indicates the number of slices in the video picture, and wherein the first constraint flag being equal to 1 indicates that each video picture contains only one slice, and the second syntax element being equal to 0 indicates that the rectangular slice is not used for each video picture.
8. The device according to claim 7, wherein The one or more syntax elements further include a third syntax element, the third syntax element incremented by 1 indicating the number of rectangular slices in each video picture, and Wherein, if the first constraint flag is equal to 1 and the second syntax element is equal to 1, the third syntax element is constrained to be equal to 0, and wherein the second syntax element being equal to 1 indicates that the rectangular slice is used for each video picture.
9. The device according to claim 7, wherein In the case where a second constraint flag indicating whether each video picture in the output layer set contains only one slice is equal to 1, the variable is constrained to be equal to 1, and the second constraint flag equal to 1 indicates that each video picture in the output layer set contains only one slice.
10. The device according to claim 7, wherein The one or more constraint flags further include a third constraint flag, the third constraint flag indicating whether the video picture includes only one sub-picture and whether sub-picture information exists, and the one or more syntax elements further include a fourth syntax element, the fourth syntax element plus 1 indicating the number of sub-pictures in the video picture, In which, when the third constraint flag is equal to 1, the fourth syntax element is constrained to be 0, and the third constraint flag is equal to 1, indicating that the video picture includes only one sub-picture and the sub-picture information does not exist.
11. The device according to claim 7, wherein The device is an encoder.
12. The device according to claim 7, wherein The device is a decoder.
13. A non-transitory computer-readable storage medium storing instructions that cause a processor to: Converting between a video comprising video pictures and a bitstream of said video is performed, wherein The video picture includes one or more sub-pictures. The bitstream complies with a format rule, and the format rule stipulates that one or more syntax elements are constrained based on one or more constraint flags of general constraint information. wherein the one or more constraint flags include a first constraint flag indicating whether each video picture in the output layer set contains only one slice, and the one or more syntax elements include a first syntax element present in each slice header of the output layer set, the first syntax element plus 1 indicating the number of slices in the slice, and Wherein, if the first constraint flag is equal to 1 and the second syntax element indicating whether a rectangular slice is used for each video picture is equal to 0, the first syntax element is constrained to be equal to a variable minus 1, where the variable indicates the number of slices in the video picture, and wherein the first constraint flag being equal to 1 indicates that each video picture contains only one slice, and the second syntax element being equal to 0 indicates that the rectangular slice is not used for each video picture.
14. The non-transitory computer-readable storage medium of claim 13, wherein: The one or more syntax elements further include a third syntax element, the third syntax element incremented by 1 indicating the number of rectangular slices in each video picture, and Wherein, if the first constraint flag is equal to 1 and the second syntax element is equal to 1, the third syntax element is constrained to be equal to 0, and wherein the second syntax element being equal to 1 indicates that the rectangular slice is used for each video picture.
15. The non-transitory computer-readable storage medium of claim 13, wherein: In the case where a second constraint flag indicating whether each video picture in the output layer set contains only one slice is equal to 1, the variable is constrained to be equal to 1, and the second constraint flag equal to 1 indicates that each video picture in the output layer set contains only one slice.
16. The non-transitory computer-readable storage medium of claim 13, wherein: The one or more constraint flags further include a third constraint flag, the third constraint flag indicating whether the video picture includes only one sub-picture and whether sub-picture information exists, and the one or more syntax elements further include a fourth syntax element, the fourth syntax element plus 1 indicating the number of sub-pictures in the video picture, In which, when the third constraint flag is equal to 1, the fourth syntax element is constrained to be 0, and the third constraint flag is equal to 1, indicating that the video picture includes only one sub-picture and the sub-picture information does not exist.
17. A non-transitory computer-readable recording medium storing a video bitstream generated by a method performed by a video processing apparatus, wherein: The method comprises: generating a bitstream of a video comprising a video picture, wherein the video picture comprises one or more sub-pictures, The bitstream complies with a format rule, and the format rule stipulates that one or more syntax elements are constrained based on one or more constraint flags of general constraint information. wherein the one or more constraint flags include a first constraint flag indicating whether each video picture in the output layer set contains only one slice, and the one or more syntax elements include a first syntax element present in each slice header of the output layer set, the first syntax element plus 1 indicating the number of slices in the slice, and Wherein, if the first constraint flag is equal to 1 and the second syntax element indicating whether a rectangular slice is used for each video picture is equal to 0, the first syntax element is constrained to be equal to a variable minus 1, where the variable indicates the number of slices in the video picture, and wherein the first constraint flag being equal to 1 indicates that each video picture contains only one slice, and the second syntax element being equal to 0 indicates that the rectangular slice is not used for each video picture.
18. The non-transitory computer-readable recording medium according to claim 17, wherein The one or more syntax elements further include a third syntax element, the third syntax element incremented by 1 indicating the number of rectangular slices in each video picture, and Wherein, if the first constraint flag is equal to 1 and the second syntax element is equal to 1, the third syntax element is constrained to be equal to 0, and wherein the second syntax element being equal to 1 indicates that the rectangular slice is used for each video picture.
19. The non-transitory computer-readable recording medium according to claim 17, wherein In the case where a second constraint flag indicating whether each video picture in the output layer set contains only one slice is equal to 1, the variable is constrained to be equal to 1, and the second constraint flag equal to 1 indicates that each video picture in the output layer set contains only one slice.
20. The non-transitory computer-readable recording medium according to claim 17, wherein The one or more constraint flags further include a third constraint flag, the third constraint flag indicating whether the video picture includes only one sub-picture and whether sub-picture information exists, and the one or more syntax elements further include a fourth syntax element, the fourth syntax element plus 1 indicating the number of sub-pictures in the video picture, In which, when the third constraint flag is equal to 1, the fourth syntax element is constrained to be 0, and the third constraint flag is equal to 1, indicating that the video picture includes only one sub-picture and the sub-picture information does not exist.
21. A method for storing a bitstream of a video, comprising: generating a bitstream of a video comprising a video picture, wherein the video picture comprises one or more sub-pictures, and storing the bitstream in a non-transitory computer-readable recording medium, The bitstream complies with a format rule, and the format rule stipulates that one or more syntax elements are constrained based on one or more constraint flags of general constraint information. wherein the one or more constraint flags include a first constraint flag indicating whether each video picture in the output layer set contains only one slice, and the one or more syntax elements include a first syntax element present in each slice header of the output layer set, the first syntax element plus 1 indicating the number of slices in the slice, and Wherein, if the first constraint flag is equal to 1 and the second syntax element indicating whether a rectangular slice is used for each video picture is equal to 0, the first syntax element is constrained to be equal to a variable minus 1, where the variable indicates the number of slices in the video picture, and wherein the first constraint flag being equal to 1 indicates that each video picture contains only one slice, and the second syntax element being equal to 0 indicates that the rectangular slice is not used for each video picture.
Citation Information
Patent Citations
Image prediction method and device
CN106559669A
Parameter set coding
CN106664424A