Signaling of subpicture information in video bitstreams
By applying format rules to convert video images and bitstreams during video encoding and decoding, the problems of low video encoding and decoding efficiency and high bandwidth requirements in existing technologies are solved, achieving more efficient video data processing.
Patent Information
- Application Number
- CN202180014201.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-02-14
- Filing Date
- 2021-02-10
- Publication Date
- 2026-01-02
- Estimated Expiration
- 2041-02-10
AI Technical Summary
Existing video encoding and decoding technologies suffer from low efficiency and high bandwidth requirements when processing video data, especially in the Internet and digital communication networks, where bandwidth demands continue to grow as the number of users increases.
By employing format rules to convert video images and bitstreams during video encoding and decoding, including techniques such as determining video stripe type, temporal motion vector prediction, disabling reference image resampling, sub-image boundary operations, stripe width signaling, sub-image indexing, and luminance and chrominance segmentation tree segmentation, the processing of video data is optimized.
It improves video encoding and decoding efficiency, reduces bandwidth requirements, and enhances the performance and quality of video data processing.
Smart Images

Figure CN115176466B_ABST
Abstract
Description
[0001] Cross Reference to Related Applications
[0002] This application is based on International Patent Application No. PCT / CN2021 / 076546 filed on February 10, 2021, which claims priority to and the benefit of International Patent Application PCT / CN2020 / 075194 filed on February 14, 2020. All of the above-identified applications are hereby incorporated by reference in their entirety. TECHNICAL FIELD
[0003] This patent document relates to picture coding and decoding and video coding and decoding. BACKGROUND
[0004] Digital video accounts for the largest bandwidth use 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
[0005] This document discloses techniques that can be used by video encoders and decoders for video processing, in which a conversion is performed between a coded representation of a video and pixel values of the video.
[0006] In one example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies a manner in which a slice type of the video slice determines that 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 method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies a value of a first syntax element in a video slice header based on a slice type of the video slice. The first syntax element specifies a reference index of a collocated picture used for temporal motion vector prediction.
[0008] In another example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies, in a case that a slice type of the video slice is a P type and temporal motion vector prediction is enabled, a reference picture resampling (RPR) for a reference picture in a collocated reference picture list is disabled. 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 method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having a video slice and a bitstream of the video. The bitstream conforms to a format rule that specifies a slice type of the video slice excludes a type P in a case that 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 method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having one or more subpictures and a bitstream of the video. The bitstream conforms to a format rule that specifies a first syntax element indicating whether an operation is performed across boundaries of subpictures in a coded layer video sequence is selectively included in the bitstream in response to a number of subpictures in the video picture.
[0011] In another example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having one or more subpictures and a bitstream of the video. The bitstream conforms to a format rule that specifies a number of subpictures in the video picture in the bitstream is constrained by a constraint flag in the bitstream.
[0012] In another example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having one or more subpictures and a bitstream of the video. The bitstream conforms to a format rule that specifies a number of slices in a subpicture determines a manner in which a syntax element indicating a width of a slice is signaled, wherein the width of the slice is specified as a number of tile columns.
[0013] In another example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture having one or more subpictures and a bitstream of the video according to a format rule that specifies whether each of the one or more subpictures in the video picture includes a single slice is determined based on a constraint flag.
[0014] In another example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising a video picture and a bitstream of the video. At least one of the video picture comprises one or more subpictures. The bitstream conforms to a format rule that specifies, for determining an output subbitstream of one or more target subpictures in a subpicture subbitstream extraction process, a same subpicture index is used across each target subpicture of different video pictures.
[0015] In another example aspect, a method of video processing is disclosed. The method includes determining an output sub-bitstream by extracting one or more target sub-pictures from a bitstream of a video comprising video pictures. At least one of the video pictures comprises 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 method of video processing is disclosed. The method includes performing a conversion between a video comprising 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 example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising a luma video block and a chroma video block and a bitstream of the video. The luma video block is partitioned according to a luma partition tree, and the chroma video block is partitioned according to a chroma partition tree. The bitstream includes luma block partition information indicative of the luma partition tree and chroma block partition information indicative of the chroma partition tree. The bitstream conforms to a rule that specifies that the chroma block partition information is allowed to be different from the luma block partition information.
[0018] In another example aspect, a method of video processing is disclosed. The method includes performing a 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 regular constraint information.
[0019] In another example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video comprising 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 a manner in which certain information from a picture header of the video picture is inherited by a slice header of the video slice.
[0020] In another example aspect, a method of video processing is disclosed. The method includes performing a conversion between a video unit in a video region of a video and a coded representation of the video, wherein the coded representation conforms to a syntax rule. The rule specifies that a first indicator at a video picture level and a second indicator at a video region level indicate that a temporal motion vector prediction coding tool is used during the conversion. The rule specifies a condition under which the first indicator and / or the second indicator are omitted in the coded representation.
[0021] In another example aspect, a video processing method is disclosed. This method includes performing a conversion between video units within a video region of the video and a codec representation of the video, wherein the codec representation conforms to syntax rules; wherein the syntax rules specify that information from video region-level headers is inferred as information from video unit-level headers.
[0022] In another example aspect, a video processing method is disclosed. This method includes performing a conversion between video units within a video region comprising multiple images organized as a layered video sequence and a codec representation of the video; wherein one or more fields in the codec representation indicate multiple sub-images within the video unit.
[0023] In another example aspect, a video processing method is disclosed. The method includes performing a conversion between video units within a video region comprising multiple images organized as a layered video sequence and a codec representation of the video; wherein the codec representation conforms to a format rule specifying that the value of a second field indicating the number of sub-images in the video unit controls whether the second field is suitable for indicating the applicability of a codec tool across sub-images.
[0024] In another example aspect, a video processing method is disclosed. This method includes performing a conversion between video units within a video region comprising multiple images organized as a layered video sequence and a codec representation of the video; wherein the codec representation conforms to a format rule that specifies the number of sub-images for each video unit, controlling the values of syntax elements in the codec representation.
[0025] In another example aspect, a video processing method is disclosed. This method includes performing a conversion between video units within a video region comprising multiple images organized as a layered video sequence and a codec representation of the video, wherein the codec representation conforms to a format rule specifying that field values indicating whether a single video stripe appears within a video unit control the codec characteristics of rectangular stripes of the video.
[0026] In another example aspect, a video processing method is disclosed. This method includes performing a conversion between video units within a video region comprising multiple images organized as a layered video sequence and a codec representation of the video; wherein the codec representation conforms to grammatical rules such that extracted sub-images across different images in the codec representation of the layered video sequence have the same sub-image index.
[0027] 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 coded representation of the video; wherein the coded representation conforms to a syntax rule that 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 coded representation of the video; wherein the coded representation conforms to a format rule that specifies including one or more constraint flags that control an occurrence of one or more syntax elements in a syntax structure in the coded representation.
[0029] In yet another example aspect, a video encoder apparatus is disclosed. The video encoder includes a processor configured to implement the above-described method.
[0030] In yet another example aspect, a video decoder apparatus is disclosed. The video decoder includes a processor configured to implement the above-described method.
[0031] In yet another example aspect, a computer readable medium having code stored thereon is disclosed. The code embodies one of the methods described herein in the form of processor-executable code.
[0032] These and other features are described in this document. BRIEF DESCRIPTION OF DRAWINGS
[0033] Figure 1 is a block diagram of an example video processing system.
[0034] Figure 2 is a block diagram of a video processing apparatus.
[0035] Figure 3 is a flowchart of an example method of video processing.
[0036] Figure 4 is a block diagram illustrating a video coding system according to some embodiments of the disclosure.
[0037] Figure 5 is a block diagram illustrating an encoder according to some embodiments of the disclosure.
[0038] Figure 6 is a block diagram illustrating a decoder according to some embodiments of the 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 another video processing method according to the present technology. DETAILED DESCRIPTION
[0052] The use of section headings in this document is for convenience only and does not limit the techniques and embodiments disclosed in each section to the section in which it is disclosed. Also, the use of H.266 terminology in some of the specification is for convenience only and is not intended to limit the scope of the disclosed technology. As such, the technology described herein is applicable to other video codec protocols and designs. Also, examples of how the current version of the VCC standard can be modified by inserting new text (highlighted) or deleting current text (strikethrough) describe some of the technology.
[0053] This document relates to video coding technology. In particular, it is about high level syntax (HLS) in video coding and related techniques. It can be applied to existing video coding standards such as HEVC or to be completed standards (Versatile Video Coding). It can also be applicable to future video coding standards or video codecs.
[0054] Video coding standards have evolved primarily through the development of the well-known ITU-T and ISO / IEC standards. ITU-T produced H.261 and H.263, ISO / IEC produced MPEG-1 and MPEG-4 Visual, and the two organizations jointly produced the H.262 / MPEG-2 Video standard and the H.264 / MPEG-4 Advanced Video Coding (AVC) standard and the H.265 / HEVC standard. Since H.262, the video coding standards are based on the hybrid video coding structure wherein temporal prediction plus transform coding are used. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was founded by VCEG and MPEG jointly in 2015. Since then, many new methods have been adopted by JVET and applied to the reference software named Joint Exploration Model (JEM). The JVET meeting is held every quarter and new coding techniques are adopted for the new video coding standard targeting 50% bit rate reduction over HEVC. In the April 2018 JVET meeting, the new video coding standard was officially named as Versatile Video Coding (VVC) and the first version of VVC test model (VTM) was released at that time. As the effort of VVC standardization is ongoing, new coding techniques are being adopted for the VCC standard in every JVET meeting.
[0055] Example definitions
[0056] The following definitions are used in this document.
[0057] Access Unit (AU): A set of PUs belonging to different layers and containing coded 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 an APS.
[0059] AC transform coefficient: Any transform coefficient whose frequency index in at least one dimension is non-zero.
[0060] ALF APS: An APS that controls the ALF process.
[0061] Adaptive 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 slice headers.
[0062] Associated IRAP picture (of a particular picture): The previous IRAP picture (when present) in decoding order that has the same nuh layer id value as the particular picture.
[0063] Associated non-VCL NAL unit: The non-VCL NAL unit (when present) that is associated with a VCL NAL unit.
[0064] Associated VCL NAL unit: The previous VCL NAL unit in decoding order of a non-VCL NAL unit with nal unit type 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 bit: A bit of a bin string.
[0066] Bin string: A set of binary bits for all possible values of a syntax element.
[0067] Binarization process: A unique mapping process that maps all possible values of a syntax element onto a set of bin strings.
[0068] Bipartition: A partition of a rectangular MxN block of samples into two blocks, where a vertical partition yields a first (M / 2)xN block and a second (M / 2)xN block, and a horizontal partition yields a first Mx(N / 2) block and a second Mx(N / 2) block.
[0069] Bin string: An intermediate binary representation of a binarized syntax element value from a syntax element.
[0070] Bi-predictive (B) slice: A slice decoded using intra prediction or inter prediction using at most two motion vectors and reference indices to predict sample values for each block.
[0071] Bitstream: A sequence of bits in the form of a NAL unit bitstream or byte stream that forms the identification of an AU sequence, which forms 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 an offset from the coordinates of the current coded block to the coordinates of the predicted block in the same decoded picture.
[0074] Byte: A sequence of 8 bits, where the leftmost and rightmost bits represent the most and least significant bits, respectively, when written or read as a sequence of bit values.
[0075] Byte-aligned: A position in the bitstream is byte-aligned when it is an 8-bit integer multiple of the position of the first bit in the bitstream; and a bit or byte or syntax element is said to be byte-aligned when it occurs at a position in the bitstream that is byte-aligned.
[0076] Byte stream: An encapsulation of a NAL unit stream containing a start code prefix and NAL units.
[0077] Can: A term used to refer to an allowed but not necessarily required action.
[0078] Chroma: An adjective, denoted by the symbols Cb and Cr, that specifies that an array of samples or a single sample represents one of two color-difference signals related to a primary color. It is noted that the term chroma is used instead of the term chrominance to avoid the implication of linear light transfer properties that are often associated with the term chrominance.
[0079] Clean random access (CRA) PU: A PU in which the coded picture is a CRA picture.
[0080] Clean random access (CRA) picture: An IRAP picture for which each VCL NAL unit has nal_unit_type equal to CRA NUT. It is noted that a CRA picture does not refer to any picture other than itself for inter prediction in its decoding process, and can be the first picture in the bitstream in decoding order, or can appear later in the bitstream. A CRA picture can 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 as they can not be decodable due to the fact that they can contain references to pictures that are not present in the bitstream.
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090] Coding Tree Block (CTB): NxN block of samples of a certain N, such that dividing a component into CTBs is a kind of partitioning.
[0091] Coding Tree Unit (CTU): CTB of luma samples, two corresponding CTBs of chroma samples of a picture having three arrays of samples, or a CTB of samples of a monochrome picture, or a picture coded using three separate color planes and syntax structures for coding samples.
[0092] Coding Unit (CU): Coding block of luma samples, two corresponding coding blocks of chroma samples of a picture having three arrays of samples, or a coding block of samples of a monochrome picture, or a picture coded using three separate color planes and syntax structures for coding samples.
[0093] Component: Single sample in an array or one of three arrays constituting a picture in 4:2:0, 4:2:2 or 4:4:4 color format, or a single sample in an array or array constituting a picture in monochrome format.
[0094] Context variable: Variable specified for the adaptive binary arithmetic decoding process of a bin by an equation that includes the most recently decoded bin.
[0095] Deblocking filter: 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: Picture resulting from applying the decoding process to a coded picture.
[0097] Decoded Picture Buffer (DPB): Buffer holding decoded pictures for the purpose of reference picture respecification, output reordering or output delay specified by the hypothetical reference decoder.
[0098] Decoder: Embodiment of the decoding process.
[0099] Decoding order: Order in which the decoding process processes syntax elements.
[0100] Decoding process: Process specified in this Specification that reads a bitstream and derives decoded pictures therefrom.
[0101] Decoding Unit (DU): AU if DecodingUnitHrdFlag is equal to 0, otherwise a subset of an AU, consisting of one or more VCL NAL units and associated non-VCL NAL units in the AU.
[0102] Emulation prevention bytes: Bytes equal to 0x03 present in a NAL unit when the bitstream's syntax elements form a pattern of certain byte values in such a way that the sequence of consecutive bytes in the NAL unit cannot contain a start code prefix.
[0103] Encoder: An embodiment of an encoding process.
[0104] Encoding process: A process not specified in this Specification that produces a bitstream conforming to this Specification.
[0105] Filler data NAL unit: A NAL unit with nal_unit_type equal to FD_NUT.
[0106] Flag: A variable or a 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 prior to application of a transform in the decoding process.
[0108] Gradual decoding refresh (GDR) AU: An AU in which the coded pictures in each current PU are GDR pictures.
[0109] Gradual decoding refresh (GDR) PU: A PU in which the coded pictures are GDR pictures.
[0110] Gradual decoding refresh (GDR) picture: A picture for which each VCL NAL unit has nal_unit_type equal to GDR_NUT.
[0111] Hypothetical reference decoder (HRD): A hypothetical decoder model that specifies the variability constraints for a conforming NAL unit stream or a conforming byte stream that an encoding process can produce.
[0112] Hypothetical stream scheduler (HSS): A hypothetical decoder model used to check the conformance of a bitstream or a decoder in terms of the timing and data flow of a bitstream into a hypothetical reference decoder.
[0113] Informative: Used to refer to a term provided in this Specification that does not establish any mandatory requirement for conformance to this Specification and is therefore not considered to be a part of this Specification.
[0114] Instantaneous decoding refresh (IDR) PU: A PU in which the coded pictures are IDR pictures.
[0115] Instantaneous decoding refresh (IDR) picture: An IRAP picture for which each VCL NAL unit has nal unit type equal to IDR W RADL or IDR N LP. Note that an IDR picture does not refer to any picture other than itself for inter prediction in its decoding process, and can be the first picture in the bitstream in decoding order or can appear later in the bitstream. Each IDR picture is the first picture of a CVS in decoding order. When an IDR picture has each VCL NAL unit with nal unit type equal to IDR W RADL, it can have associated RADL pictures. When an IDR picture has each VCL NAL unit with nal unit type equal to IDR N LP, it has no associated leading pictures. An IDR picture has no associated RASL pictures.
[0116] Inter-layer reference picture (ILRP): A picture in the same AU as the current picture with nuh layer id less than the nuh layer id of the current picture and marked as "used for long-term reference".
[0117] Inter-coded: Coded for a block, slice, or picture that uses inter prediction.
[0118] Inter prediction: A prediction derived in a manner 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 manner that depends on data elements (e.g., sample values or block vectors) of the same decoded slice without reference to reference pictures.
[0120] Intra-coded: Coded for a block, slice, or picture that uses intra prediction.
[0121] Intra prediction: A prediction derived only from data elements (e.g., sample values) of the same decoded slice without reference to reference pictures.
[0122] Inter random access point (IRAP) AU: An AU in which there is a PU for each layer in the CVS and the coded picture in each PU is an IRAP picture.
[0123] Intra random access point (IRAP) PU: A PU in which the coded picture is an IRAP picture.
[0124] Intra random access point (IRAP) picture: A coded picture in which all VCL NAL units have the same nal unit type value in the range of IDR W RADL to CRA NUT, inclusive. Note that an IRAP picture does not refer to any picture other than itself for inter prediction in its decoding process and can be a CRA picture or an IDR picture. The first picture in the bitstream in decoding order must be an IRAP or GDR picture. An IRAP picture and all subsequent non-RASL pictures in decoding order in the CVS can be correctly decoded without performing the decoding process on any picture that precedes the IRAP picture in decoding order if the necessary parameter sets are available when needed. It should also be noted that the value of mixed nal types in pic flag for an IRAP picture is equal to 0. When the value of mixed nal types in pic flag for 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 referred to as an IRAP picture.
[0125] Intra (I) slice: A slice that is decoded using only intra prediction.
[0126] Layer: A set of VCL NAL units all having a particular value of nuh layer id and associated non-VCL NAL units.
[0127] Leading 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 terminating node of a tree that is a root node of a tree with depth 0.
[0129] Level: A defined set of constraints on the values that syntax elements of this specification and transformed coefficient values before scaling can take. It is noted that all profiles define the same set of levels, where most aspects defined for each level are common across different profiles. Within the specified constraints, individual implementations can support different levels for each supported profile.
[0130] List 0 (list 1) motion vector: A motion vector associated with a reference index pointing to reference picture list 0 (list 1).
[0131] List 0 (list 1) prediction: Inter prediction of slice content using a reference index pointing to reference picture list 0 (list 1).
[0132] LMCS APS: An APS that controls the LMCS process.
[0133] Long-term reference picture (LTRP): A picture with nuh layer id equal to the nuh layer id of the current picture and marked as "used for long-term reference".
[0134] Luma: An adjective, denoted by the symbol or subscript Y or L, that specifies that a sample array or individual sample represents a monochrome signal related to the primary color. Note that the term luma is used instead of the term luminance to avoid the implication of the linear light transfer characteristics that are usually associated with the term luminance. The symbol L is sometimes used instead of the symbol Y to avoid confusion with the symbol y 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 can apply scaling operations to the values of chroma samples.
[0136] May: A term used to refer to an action that is allowed but not necessarily required. Note that the phrase "may or can not" is used in some places to emphasize the optional nature of the described behavior. The use of this term in this document is only to emphasize that the requirement is adopted by example implementations of 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 an offset from a coordinate in the decoded picture to a coordinate in the reference picture.
[0138] Multi-type tree: A tree in which a parent node can be split into two child nodes using binary splitting or into three child nodes using ternary splitting, each of which can become a parent node of another split into two or three child nodes.
[0139] MUST: A term used to denote an observation of a requirement or requirement meaning specified elsewhere in this specification (used only in an informative context). The use of this term in this document is only to emphasize that the requirement is adopted by example implementations of the codec standard and does not 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 containing the bytes of that data in the form of an RBSP interspersed with emulation prevention bytes as necessary.
[0141] Network abstraction layer (NAL) unit stream: A sequence of NAL units.
[0142] NOTE: A term used to prefix informative notes (used only in an informative context).
[0143] Operation point (OP): A temporal subset of an OLS, identified by an OLS index and the highest value of Temporalld.
[0144] Output layer: A layer of an output layer set that is output.
[0145] Output layer set (OLS): A hierarchy of layer sets, where one or more layers in a layer set are specified as output layers.
[0146] Output layer set (OLS) layer index: An index of a layer in an OLS to a list of layers in the OLS.
[0147] Output order: The order in which decoded pictures are output from the DPB (used for the decoded pictures that are output from the DPB).
[0148] Output time: The time at which a decoded picture is to be output from the DPB as specified by the output timing DPB operation (used for the decoded pictures that are output from the DPB).
[0149] Parameter: A syntax element of a sequence parameter set (SPS) or a picture parameter set (PPS), or a second word defining a term quantization parameter.
[0150] Partition: Dividing a set into subsets such that each element of the set is in exactly one of the subsets.
[0151] Picture: An array of luma samples in monochrome format or an array of luma samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2, and 4:4:4 color formats. Note that a picture can be a frame or a field. However, in one CVS, either all pictures are frames or all pictures are fields.
[0152] Picture header (PH): A syntax structure containing syntax elements that apply to all slices of a coded picture.
[0153] Picture-level slice index: An index of a slice to a list of slices in a picture in the order signaled in the PPS when rect_slice_flag is equal to 1.
[0154] Picture order count (POC): A variable associated with each picture that uniquely identifies the associated picture among all pictures in a CLVS and indicates the position of the associated picture in output order relative to the output order of other pictures in the same CLVS that are to be output from the DPB when the associated picture is to be output from the DPB.
[0155] Picture parameter set (PPS): A syntax structure containing syntax elements that apply to zero or more complete coded pictures as determined by a syntax element in each slice header.
[0156] Picture Unit (PU): A set of NAL units that are related according to a specified classification rule, are consecutive in decoding order, and contain only one coded picture.
[0157] Prediction: An embodiment of a prediction process.
[0158] Prediction process: An estimation of a data element currently being decoded (e.g., a sample value or a motion vector) using a predictor.
[0159] Predicted (P) slice: A slice that is decoded using intra prediction or using inter prediction (at most one motion vector and reference index) to predict sample values for each block.
[0160] Predictor: A specified value used in the decoding process of a subsequent data element or a combination of previously decoded data elements (e.g., a sample value or a motion vector).
[0161] Profile: A specified subset of the syntax of this specification.
[0162] Quadtree: A tree in which a parent node can be split into four child nodes, each of which can become a parent node of another split into four child nodes.
[0163] Quantization parameter: A variable used by the decoding process to scale the levels of the transform coefficients.
[0164] Random access: The behavior of the bitstream decoding process starting at a point other than the stream start point.
[0165] Random access decodable leading (RADL) PU: A PU in which the coded picture is a RADL picture.
[0166] Random access decodable leading (RADL) picture: A coded picture for which each VCL NAL unit has nal_unit_type equal to RADL NUT. Note that all RADL pictures are leading pictures. A RADL picture is not used as a reference picture for the decoding process of subsequent pictures of the same associated IRAP picture. When field_seq_flag is equal to 0, all RADL pictures, if present, precede, in decoding order, all non-leading pictures of the same associated IRAP picture.
[0167] Random access skipped leading (RASL) PU: A PU in which the coded picture is a RASL picture.
[0168] Random access skipped leading (RASL) picture: A coded picture each VCL NAL unit of which has nal unit type equal to RASL NUT. Note that all RASL pictures are leading pictures of an associated CRA picture. When the NoOutputBeforeRecoveryFlag of the associated CRA picture is equal to 1, RASL pictures are not output and can not be correctly decodable, since a RASL picture can contain references to pictures that are not present in the bitstream. RASL pictures are not used as reference pictures for the decoding process of non-RASL pictures. When field_seq_flag is equal to 0, all RASL pictures, if present, precede all non-leading pictures of the same associated CRA picture in decoding order.
[0169] Raster scan: A mapping of a rectangular two-dimensional pattern to a one-dimensional pattern such that the first entry in the one-dimensional pattern is the first top row of the two-dimensional pattern scanned from left to right, followed by the second, third, etc. row of each pattern scanned from left to right (downward).
[0170] Raw Byte Sequence Payload (RBSP): A syntax structure that contains an integer number of bytes that are encapsulated in a NAL unit and that is either empty or has the form of a string of data bits containing syntax elements, followed by an 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 string of data bits and identifies the location of the end of the RBSP within the RBSP by searching from the end of the RBSP for the RBSP stop bit (the last non-zero bit in the RBSP).
[0172] Reference index: An index of a 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 prediction in the decoding process of subsequent pictures in decoding order.
[0174] Reference picture list: A list of reference pictures used for inter prediction of a P slice or a B slice. 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 referred to 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 following the associated picture in decoding order. For the decoding process of a P slice, only reference picture list 0 is used for inter prediction. For the decoding process of a B slice, both reference picture list 0 and reference picture list 1 are used for inter prediction. For the decoding of slice data of an I slice, there is no reference picture list for inter prediction.
[0175] Reference picture list 0: A reference picture list used for inter prediction of a P slice or the first reference picture list used for inter prediction of a B slice.
[0176] Reference picture list 1: The second reference picture list used for inter prediction of a B slice.
[0177] Reserved: A term that can be used to specify some values of a particular syntax element for future use by ITU-T | ISO / IEC and shall not be used in bitstreams conforming to this version of the specification, but can be used in bitstreams conforming to future extensions of this specification by ITU-T | ISO / IEC.
[0178] Residual: The decoded difference between a prediction of a sample or data element and its decoded value.
[0179] Scaling: The process of multiplying a transform coefficient level by a factor to obtain a transform coefficient.
[0180] Scaling list: A list that associates each frequency index with a scaling factor of a scaling process.
[0181] Scaling list APS: An APS with syntax elements for constructing a scaling list.
[0182] Sequence parameter set (SPS): A syntax structure containing syntax elements that apply to zero or more complete CLVS, as determined by the content of the syntax elements found in the PPS, as referenced by syntax elements in each picture header.
[0183] Shall: a term used to indicate a mandatory requirement of this Specification. Note that when used to indicate a mandatory constraint on the value of a syntax element or on a result obtained by an operation that specifies a decoding process, it is the responsibility of the encoder to ensure that the constraint is met. When referring to operations performed by a decoding process, any decoding process that produces the same cropped decoded picture as the decoding process described in this Specification meets the decoding process requirements of this Specification. The use of this term in this document is only to emphasize that the example implementation of the coding standard adopts this requirement and is not to limit the scope of the disclosed technology.
[0184] Short-term reference picture (STRP): a picture with nuh layer id equal to the nuh layer id of the current picture and marked as "used for short-term reference".
[0185] Should: a term used to refer to an implementation practice that is encouraged to be followed in a normal situation, but is not a mandatory requirement of this Specification. The use of this term in this document is only to emphasize that the example implementation of the coding standard adopts this requirement and is not 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 picture contained in a single NAL unit.
[0187] Slice header: a part of a coded slice containing 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 of each NAL unit. Note that the position of the start code prefix can be used by decoders to identify the beginning of a new NAL unit and the end of a previous NAL unit. Simulation of the start code prefix within a NAL unit can be prevented by including an emulation prevention byte.
[0190] Step-wise temporal sub-layer access (STSA) PU: a PU in which the coded picture is an STSA picture.
[0191] Stepwise temporal sub-layer access (STSA) picture: A coded picture for which each VCL NAL unit has nal unit type equal to STSA NUT. Note that for inter prediction reference, STSA pictures do not use pictures with the same Temporalld as the STSA picture. For inter prediction reference, pictures following a picture in decoding order with the same Temporalld as the STSA picture do not use pictures preceding the picture in decoding order with the same Temporalld as the STSA picture. An STSA picture enables switching up from the immediately lower sub-layer to the sub-layer containing the STSA picture at the STSA picture. The Temporalld of an STSA picture must be greater than 0.
[0192] String of data bits (SODB): A sequence of some number of bits representing syntax elements present within the raw byte sequence payload before the raw byte sequence payload stop bit, where the leftmost bit is considered the first bit and most significant bit, and the rightmost bit is considered the last bit and least significant bit.
[0193] Sub-bitstream extraction process: A prescribed process by which NAL units in a bitstream that do not belong to a target set (determined by a target OLS index and a target highest Temporalld) are removed from the bitstream, where the output sub-bitstream consists of NAL units in the bitstream that belong to the target set.
[0194] Sub-layer: A temporal scalable layer of a temporal scalable bitstream consisting of VCL NAL units with a particular value of the Temporalld variable and associated non-VCL NAL units.
[0195] Sub-layer representation: A subset of a bitstream consisting of NAL units of a particular sub-layer and lower sub-layers.
[0196] Sub-picture: A rectangular region of one or more slices within a picture.
[0197] Sub-picture level slice index: An index of a slice into a list of slices in a sub-picture in the order signaled in the PPS when rect_slice_flag is equal to 1.
[0198] Supplemental enhancement information (SEI) message: A syntax structure with prescribed semantics that conveys information that is not needed by the decoding process to determine the values of the samples in the decoded picture.
[0199] Syntax element: An element of data represented in the bitstream.
[0200] Syntax structure: Zero or more syntax elements that occur together in a bitstream in a prescribed order.
[0201] Tri-partition: A rectangular MxN block of samples is partitioned into three blocks, where a vertical partition produces a first (M / 4)xN block, a second (M / 2)xN block, a third (M / 4)xN block, and a horizontal partition produces a first Mx(N / 4) block, a second Mx(N / 2) block, a third Mx(N / 4) block.
[0202] Tier: A prescribed level of constraint imposed on the values of syntax elements in a bitstream, where level constraints are nested in tiers, and a decoder conforming to a tier and level will be able to decode all bitstreams conforming to the same tier or any tier below the level.
[0203] Tile: A rectangular region of CTUs within a particular tile column and a particular tile row in a picture.
[0204] Tile column: A rectangular region of CTUs whose height is equal to the height of the picture and whose width is specified by a syntax element in the picture parameter set.
[0205] Tile row: A rectangular region of CTUs whose height is specified by a syntax element in the picture parameter set and whose width is equal to the width of the picture.
[0206] Tile scan: A particular sequential order of partitioning the CTUs of a picture, where the CTUs are ordered consecutively in the CTB raster scan of the CTUs in a tile, while the tiles in a picture are arranged consecutively in the raster scan of the tiles of the picture.
[0207] Subsequent picture: A non-IRAP picture that follows the associated IRAP picture in output order and is not an STSA picture. Note that a subsequent picture associated with an IRAP picture also follows the IRAP picture in decoding order. A picture that follows the associated IRAP picture in output order and precedes the associated IRAP picture in decoding order is not allowed.
[0208] Transform: A part of the decoding process by which a block of transform coefficients is converted to a block of spatial domain values.
[0209] Transform block: A rectangular MxN block of samples resulting from a transform in the decoding process.
[0210] Transform coefficient: A scalar associated with a particular one-dimensional frequency index or two-dimensional frequency index in a transform that is considered to be in the frequency domain in the decoding process.
[0211] Transform coefficient level: An integer representing a value associated with a particular two-dimensional frequency index in the decoding process before scaling of the transform coefficient value is computed.
[0212] Transform Unit (TU): A transform block of luma samples and two corresponding transform blocks of chroma samples of a picture when a single coding unit tree is used for luma and chroma; or a transform block of luma samples or two transform blocks of chroma samples and the syntax structure used for transforming the transform block samples when two separate coding unit trees are used for luma and chroma.
[0213] Tree: A tree with a unique root node of a finite set of nodes.
[0214] Unspecified: A term that can be used to specify some values of a particular syntax element to indicate that these values have no meaning specified in this specification and will not have a meaning specified in the future as an integral part of this specification.
[0215] Video Coding Layer (VCL) NAL unit: The collective term for coded slice NAL units and the subset of NAL units that have a reserved value of nal unit type that is classified as a VCL NAL unit in this specification.
[0216] Some example bitstream and picture formats, partitioning, scanning processes, and neighboring relationships are described as follows.6.3 Picture, subpicture, slice, tile, and CTU partitioning
[0217] 6.3.2 Block, quadtree, and multi-type tree structures
[0218] Samples are processed in CTBs. Each luma CTB has an array size of CtbSizeY in width and height in samples. Each chroma CTB has an array size of CtbWidthC and CtbHeightC in width and height, respectively, in samples.
[0219] Each CTB is assigned a partitioning signaling to identify the block size used for intra or inter prediction and transform coding. The partitioning is a recursive quadtree partitioning. The root of the quadtree is associated with the CTB. The quadtree is split until a leaf is reached, which is referred to as a quadtree leaf. When the component width is not an integer multiple of the CTB size, then the CTB at the right component boundary is incomplete. When the component height is not an integer multiple of the CTB size, then the CTB at the bottom component boundary is incomplete.
[0220] A coding block is the root node of two trees, a prediction tree and a transform tree. The prediction tree specifies the location and size of a prediction block. The transform tree specifies the location and size of a transform block. The partitioning information for luma and chroma is the same for the prediction tree and can or can 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 (luma and chroma components of a picture in 4:2:0, 4:2:2 or 4:4:4 colour format) and the associated transform syntax structure units are associated with the transform unit.
[0223] - one coded block (monochrome picture or separate_colour_plane_flag equal to 1) or three coded blocks (luma and chroma), the associated coded syntax structure and the associated transform unit are associated with the coding unit.
[0224] - one CTB (monochrome picture or separate_colour_plane_flag equal to 1) or three CTBs (luma and chroma), the associated coding tree syntax structure and the associated coding unit are associated with the CTU.
[0225] 7 Syntax and semantics
[0226] 7.3 Syntax in table form
[0227] 7.3.1 NAL unit syntax
[0228] 7.3.1.1 General NAL unit syntax
[0229]
[0230] 7.3.1.2 NAL unit header syntax
[0231]
[0232] 7.3.2 Raw Byte Sequence Payload, trailing 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 Supplemental enhancement information RBSP syntax
[0264]
[0265] 7.3.2.9 AU delimiter 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 the syntax structures and with the syntax elements in those structures are specified in this clause. When the semantics of a syntax element are specified using a table or set of tables, unless otherwise specified in this specification, any value not specified in the table(s) shall not occur in the bitstream.
[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. The value is needed for the decoding of the NAL unit. Some form of delimiting of the NAL unit boundaries is necessary to enable the inference of NumBytesInNalUnit. One such delimiting method is the byte stream format. Other delimiting methods can be specified outside of this specification.
[0277] NOTE 1 - The video coding layer (VCL) is specified to efficiently represent the content of the video data. The NAL is specified 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 of which contains an integer number of bytes. The NAL unit specifies a general format for packet-oriented and bitstream-oriented systems. The format of the NAL unit is the same for packet-oriented transport and the byte stream format, except that each NAL unit can be prefixed in the byte stream format with a start code prefix and additional padding bytes.
[0278] rbsp_byte[ i ] is the i-th byte of the RBSP. The RBSP is specified to be an ordered sequence of bytes as follows:
[0279] The RBSP contains a string of data bits (SODB) as follows:
[0280] - If the SODB is empty (i.e., zero bits in length), the RBSP is also empty.
[0281] - Otherwise, the RBSP contains SODBs as follows:
[0282] 1) The first byte of the RBSP contains the first (most significant, leftmost) octet of the SODB;
[0283] The next byte of the RBSP contains the next octet of the SODB, and so on, until there are fewer than eight bits of the SODB remaining.
[0284] 2) The rbsp_trailing_bits( ) syntax structure follows the SODB as follows:
[0285] i) The first (most significant, leftmost) bit of the last RBSP byte contains the remaining bits of the SODB, if any.
[0286] ii) The next bit consists of a single bit equal to one (i.e., rbsp_stop_one_bit).
[0287] 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) occur to cause byte-alignment.
[0288] 3) In certain RBSPs, following rbsp_trailing_bits( ) at the end of the RBSP, there can be one or more cabac_zero_word 16-bit syntax elements equal to 0x0000.
[0289] The use of the "_rbsp" suffix in the syntax table indicates a syntax structure with these RBSP properties. These structures are carried in the NAL unit as the contents of rbsp_byte[i] data bytes. The association of RBSP syntax structures with NAL units is specified in Table 5.
[0290] 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 rbsp_stop_one_bit (the last (least significant, rightmost) bit equal to one) and any following (less significant, more rightward) bits equal to zero. The data required for the decoding process is contained in the SODB portion of the RBSP.
[0291] 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.
[0292] The last byte of a NAL unit shall not be equal to 0x00.
[0293] Within a NAL unit, the following three-byte sequences shall not occur at any byte-aligned position:
[0294] - 0x000000
[0295] - 0x000001
[0296] - 0x000002
[0297] Within a NAL unit, any four-byte sequence starting with 0x000003 shall not occur at any byte-aligned position, except for the following sequences:
[0298] - 0x00000300
[0299] - 0x00000301
[0300] - 0x00000302
[0301] - 0x00000303
[0302] 7.4.2.2 NAL unit header semantics
[0303] The forbidden zero bit shall be equal to 0.
[0304] The nuh_reserved_zero_bit shall be equal to 0. A value of 1 for nuh_reserved_zero_bit can be specified in the future by ITU-T | ISO / IEC. Decoders shall ignore (i.e., remove from the bitstream and discard) NAL units with nuh_reserved_zero_bit equal to 1.
[0305] The nuh_layer_id specifies an identifier of the layer to which VCL NAL units belong or an identifier of the layer to which non-VCL NAL units are applied. 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.
[0306] The value of nuh_layer_id shall be the same for all VCL NAL units of a coded picture. The value of nuh_layer_id for a coded picture or a PU is the value of nuh_layer_id for the VCL NAL units of the coded picture or the PU.
[0307] The nuh layer id values of AUD, PH, EOS, and FD NAL units are constrained as follows:
[0308] – If nal unit type is equal to AUD NUT, nuh layer id shall be equal to vps layer id[0].
[0309] – 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.
[0310] NOTE 1 – The nuh layer id values of DCI, VPS, and EOB NAL units are not constrained.
[0311] The value of nal unit type shall be the same for all pictures of a CVS S AU.
[0312] nal unit type specifies the NAL unit type, i.e., the type of RBSP data structure contained in the NAL unit as specified in Table 5.
[0313] NAL units with nal unit type in the range of UNSPEC_28 … UNSPEC_31, inclusive, (for which no semantics are specified) shall not affect the decoding process specified in this Specification.
[0314] NOTE 2 – NAL unit types in the range of UNSPEC_28 … UNSPEC_31, inclusive, can be used as determined by application. No decoding process for these values of nal unit type is specified in this Specification. As different applications can use these NAL unit types for different purposes, special care must be taken when designing encoders that generate NAL units using these nal unit type values, and when designing decoders that interpret NAL unit content using these nal unit type values. This Specification does not define any management of these values. These nal unit type values can only be applicable in contexts where the use of “conflict” (i.e., different definitions of the meaning of the NAL unit content for the same nal unit type value) is unimportant, impossible, or managed (e.g., defined or managed) in a controlling application or transport specification, or by the environment controlling the distribution of the bitstream.
[0315] For purposes other than the following: The content of all NAL units using the nal unit type reserved value shall be ignored (removed from the bitstream and discarded) for determining the amount of data in DUs of a bitstream decoder.
[0316] NOTE 3 - This requirement allows for future definition of compatible extensions of this Specification.
[0317] Table 5 - NAL unit type codes and NAL unit type categories
[0318]
[0319]
[0320] NOTE 4 - A clean random access (CRA) picture can have an associated RASL or RADL picture present in the bitstream.
[0321] NOTE 5 - An instantaneous decoding refresh (IDR) picture with nal_unit_type equal to IDR N LP has no associated leading pictures 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 can have associated RADL pictures in the bitstream.
[0322] The following apply for VCL NAL units of any particular picture:
[0323] - If mixed_nalu_types_in_pic_flag is equal to 0, the value of nal_unit_type shall be the same for all coded slice NAL units of the picture. A picture or PU is said to have the same NAL unit type as the coded slice NAL units of the picture or PU.
[0324] - Otherwise (mixed_nalu_types_in_pic_flag is equal to 1), the VCL NAL units of one or more sub-pictures in the picture all have a particular value of nal_unit_type equal to STSA NUT, RADL NUT, RASL NUT, IDR W RADL, IDR N LP, or CRA NUT, and the other VCL NAL units in the picture all have a different particular value of nal_unit_type equal to TRAIL NUT, RADL NUT, or RASL NUT.
[0325] The following constraint applies for single-layer bitstreams:
[0326] - Except for the first picture in the bitstream in decoding order, each picture is considered to be associated with the preceding IRAP picture in decoding order.
[0327] - When a picture is a leading picture of an IRAP picture, it shall be a RADL picture or a RASL picture.
[0328] - When a picture is a subsequent picture of an IRAP picture, it shall not be a RADL picture or a RASL picture.
[0329] - There shall not be a RASL picture in the bitstream associated with an IDR picture.
[0330] - There shall not be a RADL picture in the bitstream associated with an IDR picture with nal_unit_type equal to IDR N LP.
[0331] NOTE 6: If each parameter set is available at the time it is referenced (either in the bitstream or through external means not specified in this Specification), random access can be performed at the location of an IRAP PU by discarding all PUs prior to the IRAP PU (and correctly decoding the IRAP picture and all subsequent non-RASL pictures in decoding order).
[0332] - Any picture that precedes an IRAP picture in decoding order shall precede the IRAP picture in output order, and shall precede any RADL picture associated with the IRAP picture in output order.
[0333] - Any RASL picture associated with a CRA picture shall precede any RADL picture associated with the CRA picture in output order.
[0334] - Any RASL picture associated with a CRA picture shall follow, in output order, any IRAP picture that precedes the CRA picture in decoding order.
[0335] - If field_seq_flag is equal to 0 and the current picture is a leading picture associated with an IRAP picture, it shall precede, in decoding order, all non-leading pictures associated with the same IRAP picture. Otherwise, let picA and picB be the first and last leading pictures, respectively, in decoding order associated with an IRAP picture, there shall be at most one non-leading picture preceding picA in decoding order, and there shall be no non-leading pictures between picA and picB in decoding order.
[0336] num_temporal_id_plus1 minus 1 specifies the temporal identifier of the NAL unit.
[0337] The value of nuh_temporal_id_plus1 shall not be equal to 0.
[0338] The variable Temporalld is derived as follows:
[0339] Temporalld = nuh temporal id plusl - 1 (36)
[0340] When nal unit type is in the range of IDR W RADL to RS V IRAP 12, inclusive, Temporalld shall be equal to 0.
[0341] When nal unit type is equal to STSA NUT and vps independent layer flag[GeneralLayerldx[nuh layer id]] is equal to 1, Temporalld shall not be equal to 0.
[0342] The value of Temporalld shall be the same for all VCL NAL units of an AU. The Temporalld value of a coded picture PU or AU is the Temporalld value of the VCL NAL units of the coded picture PU or AU. The Temporalld value of a sublayer representation is the maximum of the Temporalld values of all VCL NAL units in the sublayer representation.
[0343] The Temporalld value of a non-VCL NAL unit is constrained as follows:
[0344] - If nal unit type is equal to DCI NUT, VPS NUT, or SPS NUT, Temporalld shall be equal to 0 and the Temporalld of the AU containing the NAL unit shall be equal to 0.
[0345] - Otherwise, if nal unit type is equal to PH NUT, Temporalld shall be equal to the Temporalld of the PU containing the NAL unit.
[0346] - Otherwise, if nal unit type is equal to EOS NUT or EOB NUT, Temporalld shall be equal to 0.
[0347] - Otherwise, if nal unit type is equal to AUD NUT, FD NUT, PREFIX SEI NUT, or SUFFIX SEI NUT, Temporalld shall be equal to the Temporalld of the AU containing the NAL unit.
[0348] - Otherwise, when nal_unit_type is equal to PPS NUT, PREFIX APS NUT or SUFFIX APS NUT, Temporalld shall be greater than or equal to the Temporalld of the PU containing the NAL unit.
[0349] NOTE 7 - When the NAL unit is a non-VCL NAL unit, the value of Temporalld is equal to the minimum value of the Temporalld 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, Temporalld can be greater than or equal to the Temporalld of the AU containing it, 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), with the first coded picture having Temporalld equal to 0.
[0350] 7.4.2.3 Encapsulation of SODB within RBSP (informative)
[0351] This clause does not form an integral part of this specification.
[0352] The encapsulation form of SODB within RBSP and the emulation_prevention_three_byte using encapsulation of RBSP within NAL unit are described for the following purposes:
[0353] - To prevent emulation of start code within NAL unit while allowing to represent any SODB within NAL unit,
[0354] - To enable identification of the end of SODB within NAL unit by searching for rbsp_stop_one_bit in the RBSP starting from the end of the RBSP,
[0355] - To enable in some cases (using one or more cabac_zero_word syntax elements) the size of the NAL unit to be larger than the size of the SODB.
[0356] An encoder can generate a NAL unit from an RBSP by the following procedure:
[0357] 1. Search in the RBSP data for a byte-aligned bit of the following binary pattern:
[0358] '00000000 00000000 000000xx' (where 'xx' denotes any two-bit pattern: "00", "01", "10" or "11"),
[0359] and a byte equal to 0x03 is inserted to replace the bit pattern with the pattern:
[0360] '00000000 00000000 00000011 000000xx',
[0361] and finally, when the last byte of RBSP data is equal to 0x00 (which only occurs when the RBSP ends with cabac_zero_word), a last byte equal to 0x03 is appended to the end of the data. When searching for the next occurrence of a byte-aligned bit having the binary pattern specified above in the RBSP data, the last zero byte of the three-byte sequence 0x000000 that is byte-aligned in the RBSP (which is replaced by the four-byte sequence 0x00000300) is considered.
[0362] 2. The resulting byte sequence is then prefixed with a NAL unit header, where nal_unit_type indicates the type of the RBSP data structure in the NAL unit.
[0363] The procedure specified above results in the construction of the entire NAL unit.
[0364] This procedure can allow any SODB to be represented in a NAL unit while ensuring the following two items:
[0365] - the start code prefix is not emulated within the NAL unit.
[0366] - within the NAL unit, the sequence of 8 zero-valued bits followed by the start code prefix is not emulated regardless of the byte alignment.
[0367] 7.4.2.4 Order of NAL units in the bitstream
[0368] 7.4.2.4.1 Overview
[0369] Subclause 7.4.2.4 of clause 7 specifies restrictions on the order of NAL units in the bitstream.
[0370] Any order of NAL units in the bitstream that is subject to these constraints is referred to in this document as the decoding order of the NAL units.
[0371] Within a NAL unit, the syntax specified in clauses 7.3 and D.2 specifies the decoding order of the syntax elements. When a NAL unit as specified in this Specification includes VUI parameters or any SEI messages as specified in ITU-T H.265 | ISO / IEC 23008-7, the syntax specified in ITU-T H.265 | ISO / IEC 23008-7 for the VUI parameters or SEI messages specifies the decoding order of those syntax elements. Decoders shall be capable of receiving NAL units and their syntax elements in the decoding order.
[0372] 7.4.2.4.2 Order of AUs and their association with a CVS
[0373] A bitstream consists of one or more CVSs.
[0374] 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.
[0375] The first AU of a CVS is a CVSS AU in which each current PU is a CLVSS PU that is an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1 or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1.
[0376] Each CVSS AU shall have a PU for each layer present in the CVS.
[0377] Bitstream conformance requires that the next AU after an AU containing an EOS NAL unit, when present, shall be a CVSS AU.
[0378] 7.4.2.4.3 Order of PUs and their association with AUs
[0379] An AU consists of one or more PUs in increasing order of nuh layer id. The order of NAL units and coded pictures and their association with PUs is described in clause 7.4.2.4.4.
[0380] 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, consequently, it is the first NAL unit of the first PU of the AU.
[0381] There can be at most one EOB NAL unit in an AU. When an EOB NAL unit is present in an AU, it shall be the last NAL unit of the AU and, consequently, it is the last NAL unit of the last PU of the AU.
[0382] A VCL NAL unit is the first VCL NAL unit of an AU (and, consequently, 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 are true:
[0383] - 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.
[0384] - The value of ph_pic_order_cnt_lsb of the VCL NAL unit is different from the ph_pic_order_cnt_lsb of the previous picture in decoding order.
[0385] - The PicOrderCntVal derived for the VCL NAL unit is different from the PicOrderCntVal of the previous picture in decoding order.
[0386] 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 preceding firstVclNalUnitInAu if any, specifies the start of a new AU:
[0387] - AUD NAL unit (if present),
[0388] - DCI NAL unit (if present),
[0389] - VPS NAL unit (if present),
[0390] - SPS NAL unit (if present),
[0391] - PPS NAL unit (if present),
[0392] - prefix APS NAL unit (if present),
[0393] - PH NAL unit (if present),
[0394] - prefix SEI NAL unit (if present),
[0395] - NAL unit with nal unit type equal to RSV_NVCL_26 (if present),
[0396] - NAL unit with nal unit type in the range of UNSPEC28..UNSPEC29 (if any).
[0397] NOTE - The first NAL unit (if any) that precedes the first VCL NAL unit in the Au and that follows the last VCL NAL unit in the Au (if any) preceding the first VCL NAL unit in the Au can only be one of the NAL units listed above.
[0398] One requirement for bitstream conformance is that, when present, the next PU of a particular layer following a PU that belongs to the same layer and contains an EOS NAL unit shall be a CLVSS PU, which is an IRAP PU with NoOutputBeforeRecoveryFlag equal to 1 or a GDR PU with NoOutputBeforeRecoveryFlag equal to 1.
[0399] 7.4.2.4.4 Order of NAL units and coded pictures and their association with PUs
[0400] A PU consists of zero or one PH NAL unit, one coded picture (including one or more VCL NAL units), and zero or more other non-VCL NAL units. The association of VCL NAL units with a coded picture is described in clause 7.4.2.4.5.
[0401] When a picture consists of more than one VCL NAL unit, there shall be a PH NAL unit in the PU.
[0402] If there is a PH NAL unit 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 in the PU), the first VCL NAL unit of the picture is the only VCL NAL unit of the picture.
[0403] The order of non-VCL NAL units (except AUD and EOB NAL units) within a PU shall follow the below constraints:
[0404] – When a PH NAL unit is present in the PU, it shall precede the first VCL NAL unit of the PU.
[0405] – When any DCI NAL unit, VPS NAL unit, SPS NAL unit, PPS NAL unit, prefix APS NAL unit, prefix SEI NAL unit, NAL unit with nal_unit_type equal to RSV_NVCL_26, or NAL unit with nal_unit_type in the range of UNSPEC_28..UNSPEC_29 are present in the PU, they shall not follow the last VCL NAL unit of the PU.
[0406] - When any DCI NAL unit, VPS NAL unit, SPS NAL unit, or PPS NAL unit is present in a PU, it shall be located prior to the PH NAL unit, if present, of the PU and shall be located prior to the first VCL NAL unit of the PU.
[0407] - A NAL unit with nal_unit_type equal to SUFFIX_APS_NUT, SUFFIX_SEI_NUT, FD_NUT, or RSV_NVCL_27, or in the range of UNSPEC_30..UNSPEC_31 shall not be located prior to the first VCL NAL unit of the PU.
[0408] - When an EOS NAL unit is present in a PU, it shall be the last NAL unit among all NAL units except the EOB NAL unit, if present, in the PU.
[0409] 7.4.2.4.5 Order of VCL NAL units and their association with coded pictures
[0410] The order of VCL NAL units within a coded picture is subject to the following constraints:
[0411] - For any two coded slice NAL units A and B of a coded picture, let subpicIdxA and subpicIdxB be their subpicture level index values, and let sliceAddrA and sliceAddrB be their slice_address values.
[0412] - Coded slice NAL unit A shall be located prior to coded slice NAL unit B when any of the following conditions is true:
[0413] - subpicIdxA is less than subpicIdxB.
[0414] - subpicIdxA is equal to subpicIdxB and sliceAddrA is less than sliceAddrB.
[0415] 7.4.3. Raw Byte Sequence Payload, trailing bits, and byte alignment semantics
[0416] 7.4.3.1 Decoding capability information RBSP semantics
[0417] A DCI RBSP can be made available to the decoder by being present in the bitstream, included in at least the first AU of the bitstream, or provided through external means.
[0418] NOTE 1 - The information contained in the DCI RBSP is not essential for the operation of the decoding process.
[0419] When present, all DCI NAL units in the bitstream shall have the same content.
[0420] dci_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sub-layers that can be present in layers in each CVS of the bitstream. The value of dci_max_sublayers_minus1 shall be in the range of 0 to 6, inclusive.
[0421] dci_reserved_zero_bit shall be equal to 0 in bitstreams conforming to this version of this Specification. The value 1 of dci_reserved_zero_bit is reserved for future use by ITU-T | ISO / IEC.
[0422] dci_num_ptls_minus1 plus 1 specifies the number of profile_tier_level( ) syntax structures in the DCI NAL unit.
[0423] It is a requirement of bitstream conformance that each OLS in a CVS in the bitstream shall conform to at least one profile_tier_level( ) syntax structure in a DCI NAL unit.
[0424] NOTE 2 - A DCI NAL unit can include PTL information, possibly carried in multiple profile_tier_level( ) syntax structures, that collectively apply to multiple OLSs, and it is not necessary to include PTL information for each OLS separately.
[0425] dci_extension_flag equal to 0 specifies that there is no dci_extension_data_flag syntax element in the DCI RBSP syntax structure. dci_extension_flag equal to 1 specifies that there is a dci_extension_data_flag syntax element in the DCI RBSP syntax structure.
[0426] dci_extension_data_flag can have any value. Its presence and value do not affect decoder conformance to a profile. Decoders conforming to this version of this Specification shall ignore all dci_extension_data_flag syntax elements.
[0427] 7.4.3.2 Video parameter set RBSP semantics
[0428] A VPS RBSP shall be available to the decoding process prior to being referenced, included in at least one AU with Temporalld equal to 0, or provided through external means.
[0429] All VPS NAL units with the vps_video_parameter_set_id specific value in a CVS shall have the same content.
[0430] vps_video_parameter_set_id provides an identifier for a VPS for other syntax elements to reference. The value of vps_video_parameter_set_id shall be greater than 0.
[0431] vps_max_layers_minus1 plus 1 specifies the maximum allowed number of layers in each CVS that references the VPS.
[0432] vps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sub-layers that can be present in the layers in each CVS that references the VPS. The value of vps_max_sublayers_minus1 shall be in the range of 0 to 6, inclusive.
[0433] vps_all_layers_same_num_sublayers_flag equal to 1 specifies that the number of temporal sub-layers for all layers in each CVS that references the VPS is the same. vps_all_layers_same_num_sublayers_flag equal to 0 specifies that the layers in each CVS that references the VPS can or can not have the same number of temporal sub-layers. When not present, the value of vps_all_layers_same_num_sublayers_flag is inferred to be equal to 1.
[0434] vps_all_independent_layers_flag equal to 1 specifies that all layers in a CVS are coded independently without using inter-layer prediction. vps_all_independent_layers_flag equal to 0 specifies that one or more layers in a CVS can use inter-layer prediction. When not present, the value of vps_all_independent_layers_flag is inferred to be equal to 1.
[0435] vps_layer_id[ i ] specifies the nuh_layer_id value of the i-th layer. For any two non-negative integer values of m and n, the value of vps_layer_id[ m ] shall be less than vps_layer_id[ n ] when m is less than n.
[0436] 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 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.
[0437] 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 ] ( i and j in the range of 0 to vps_max_layers_minus1, inclusive) is not present, 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.
[0438] The variables NumDirectRefLayers[ i ], DirectRefLayerIdx[ i ][ d ], NumRefLayers[ i ], RefLayerIdx[ i ][ r ], and LayerUsedAsRefLayerFlag[ j ] are derived as follows:
[0439]
[0440]
[0441] The variable GeneralLayerIdx[ i ] that specifies the layer index of the layer with nuh_layer_id equal to vps_layer_id[ i ] is derived as follows:
[0442] for( i = 0; i <= vps_max_layers_minus1; i++ ) (38)
[0443] GeneralLayerIdx[ vps_layer_id[ i ] ] = i
[0444] For any two different i and j values in the range of 0 to vps_max_layers_minusl, 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 the i-th layer shall be equal to the values of chroma format idc and bit depth minus8 applicable to the j-th layer, respectively.
[0445] max_tid_ref_present_flag[ i ] equal to 1 specifies that the syntax element max_tid_il_ref_pics_plusl[ i ] is present. max_tid_ref_present_flag[ i ] equal to 0 specifies that the syntax element max_tid_il_ref_pics_plusl[ i ] is not present.
[0446] max_tid_il_ref_pics_plusl[ i ] equal to 0 specifies that no inter-layer prediction is used for non-IRAP pictures of the i-th layer. max_tid_il_ref_pics_plusl[ i ] greater than 0 specifies that, for decoding pictures of the i-th layer, no picture with Temporalld greater than max_tid_il_ref_pics_plusl[ i ] - 1 is used as ILRP. When not present, the value of max_tid_il_ref_pics_plusl[ i ] is inferred to be equal to 7.
[0447] each_layer_is_an_ols_flag equal to 1 specifies that each OLS contains only one layer and that each layer in the CVS referring to 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 indicates that an OLS can contain multiple layers. If vps_max_layers_minusl 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.
[0448] ols_mode_idc equal to 0 specifies that the total number of OLSs specified by the VPS is equal to vps_max_layers_minusl + 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.
[0449] 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 output OLS.
[0450] 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 of the output layer of the OLS.
[0451] The value of ols_mode_idc shall be in the range of 0 to 2, inclusive. The value of 3 for ols_mode_idc is reserved for future use by ITU-T | ISO / IEC.
[0452] 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.
[0453] 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.
[0454] The variable TotalNumOlss that specifies the total number of OLSs specified by the VPS is derived as follows:
[0455]
[0456] ols_output_layer_flag[ i ][ j ] equal to 1 specifies that the layer with nuh_layer_id equal to vps_layer_id[ j ] is the output layer of the i-th OLS when ols_mode_idc is equal to 2. ols_output_layer_flag[ i ][ j ] equal to 0 specifies that the layer with nuh_layer_id equal to vps_layer_id[ j ] is not the output layer of the i-th OLS when ols_mode_idc is equal to 2.
[0457] The variables NumOutputLayersInOls[ i ], specifying the number of output layers in the i-th OLS, NumSubLayersInLayerInOLS[ i ][ j ], specifying the number of sub-layers in the j-th layer in the i-th OLS, OutputLayerIdInOLS[ i ][ j ], specifying the nuh layer id value of the j-th output layer in the i-th OLS, and LayerUsedAsOutputLayerFlag[ k ], specifying whether the k-th layer is used as an output layer in at least one OLS, are derived as follows:
[0458]
[0459]
[0460] For each i value in the range of 0 to vps max layers minusl, inclusive, the values of LayerUsedAsRefLayerFlag[ i ] and LayerUsedAsOutputLayerFlag[ i ] shall not both be equal to 0. In other words, there shall not be a layer that is neither an output layer of at least one OLS nor a direct reference layer of any other layer.
[0461] For each OLS, there shall be at least one layer that is an output layer. In other words, for any i value in the range of 0 to TotalNumOlss - 1, inclusive, the value of NumOutputLayersInOls[ i ] shall be greater than or equal to 1.
[0462] The variables NumLayersInOls[ i ], specifying the number of layers in the i-th OLS, and LayerIdInOls[ i ][ j ], specifying the nuh layer id value of the j-th layer in the i-th OLS, are derived as follows:
[0463]
[0464]
[0465] NOTE 1 - The 0-th OLS contains only the lowest layer (i.e., the layer with nuh layer id equal to vps layer id[ 0 ]) and, for the 0-th OLS, only the contained layer is output.
[0466] The variable OlsLayerIdx[ i ][ j ], specifying the OLS layer index of the layer with nuh layer id equal to LayerIdInOls[ i ][ j ], is derived as follows:
[0467] for ( i = 0; i < TotalNumOlss; i++ )
[0468] for ( j = 0; j < NumLayersInOls[ i ][ j++ ] ) (42)
[0469] OlsLayerIdx[ i ][ LayerIdInOls[ i ][ j ] ] = j
[0470] The lowest layer in each OLS shall be an independent layer. In other words, for each i in the range of 0 to TotalNumOlss - 1, inclusive, the value of vps_independent_layer_flag[ GeneralLayerIdx[ LayerIdInOls[ i ][ 0 ] ] ] shall be equal to 1.
[0471] 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 equal to one of the vps_layer_id[ k ] for k in the range of 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 of 0 to TotalNumOlss - 1, inclusive, and j is in the range of 0 to NumLayersInOls[ i ] - 1, inclusive, such that the value of LayerIdInOls[ i ][ j ] is equal to nuhLayerId.
[0472] 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 shall be less than TotalNumOlss.
[0473] The value of 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. The value of 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.
[0474] ptl_max_temporal_id[ i ] specifies the highest sublayer representation Temporalld 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_minusl, inclusive. When vps_max_sublayers_minusl is equal to 0, the value of ptl_max_temporal_id[ i ] is inferred to be equal to 0. When vps_max_sublayers_minusl 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_minusl.
[0475] vps_ptl_alignment_zero_bit shall be equal to 0.
[0476] 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 is applicable 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_minusl, inclusive. When vps_num_ptls_minusl is equal to 0, the value of ols_ptl_idx[ i ] is inferred to be equal to 0.
[0477] 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 referred to by the layer in the i-th OLS. One requirement for bitstream conformance is that the profile_tier_level( ) syntax structure signaled in the VPS and the SPS for the i-th OLS shall be the same when NumLayersInOls[ i ] is equal to 1.
[0478] vps_num_dpb_params specifies the number of dpb_parameters( ) syntax structures in the VPS. The value of vps_num_dpb_params shall be in the range of 0 to 16, inclusive. When not present, the value of vps_num_dpb_params is inferred to be equal to 0.
[0479] vps_sublayer_dpb_params_present_flag controls the presence of max_dec_pic_buffering_minusl[], max_num_reorder_pics[], and max_latency_increase_plusl[] syntax elements in the dpb_parameters( ) syntax structure in the VPS. When not present, vps_sub_dpb_params_info_present_flag is inferred to be equal to 0.
[0480] dpb_max_temporal_id[ i ] specifies the highest sub-layer representation for which DPB parameters can 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_minusl, inclusive. When vps_max_sublayers_minusl is equal to 0, the value of dpb_max_temporal_id[ i ] is inferred to be equal to 0. When vps_max_sublayers_minusl 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_minusl.
[0481] ols_dpb_pic_width[ i ] specifies the width of each picture storage buffer of the i-th OLS, in units of luma samples.
[0482] ols_dpb_pic_height[ i ] specifies the height of each picture storage buffer of the i-th OLS, in units of luma samples.
[0483] 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 is applicable 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.
[0484] When NumLayersInOls[ i ] is equal to 1, the dpb_parameters( ) syntax structure applicable to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.
[0485] 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.
[0486] When NumLayersInOls[ i ] is equal to 1, the general_hrd_parameters( ) syntax structure applicable to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.
[0487] 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 representations with Temporalld 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 representations with Temporalld 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.
[0488] When vps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters of sub-layer representations with Temporalld in the range of 0 to hrd_max_tid[ i ] - 1, inclusive, are inferred to be the same as the HRD parameters of the sub-layer representation with Temporalld equal to hrd_max_tid[ i ]. These include the HRD parameters 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.
[0489] 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.
[0490] hrd_max_tid[ i ] specifies the highest sub-layer representation Temporalld for which 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.
[0491] ols_hrd_idx[ i ] specifies the index into the list of ols_hrd_parameters( ) syntax structures in the VPS of the ols_hrd_parameters( ) syntax structure 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, inclusive, to num_ols_hrd_params_minus1, inclusive.
[0492] When NumLayersInOls[ i ] is equal to 1, the ols_hrd_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.
[0493] If the value of num_ols_hrd_param_minus1 + 1 is equal to TotalNumOlss, 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.
[0494] 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 a vps_extension_data_flag syntax element is present in the VPS RBSP syntax structure.
[0495] vps_extension_data_flag can have any value. Its presence and value do not affect decoder conformance to profiles specified in this version of this Specification. Decoders conformant to this version of this Specification shall ignore all vps_extension_data_flag syntax elements.
[0496] 7.4.3.3 Sequence parameter set RBSP semantics
[0497] A SPS RBSP shall be available to the decoding process before it is referenced, included in at least one AU with Temporalld equal to 0, or provided through external means.
[0498] All SPS NAL units with the same value of sps_seq_parameter_set_id in a CVS shall have the same content.
[0499] sps_seq_parameter_set_id provides an identifier for the SPS for reference by other syntax elements.
[0500] Regardless of the nuh layer id value, SPS NAL units share the same value space for sps_seq_parameter_set_id.
[0501] Let spsLayerld be the value of nuh layer id for a particular SPS NAL unit, and vclLayerld be the value of nuh layer id for a particular VCL NAL unit. A particular VCL NAL unit shall not refer to a particular SPS NAL unit unless spsLayerld is less than or equal to vclLayerld and the layer with nuh layer id equal to spsLayerld is included in at least one OLS that includes the layer with nuh layer id equal to vclLayerld.
[0502] sps_video_parameter_set_id when greater than 0 specifies the value of vps_video_parameter_set_id of the VPS referred to by the SPS.
[0503] When sps_video_parameter_set_id is equal to 0, the following applies:
[0504] - the SPS does not refer to a VPS.
[0505] - no VPS is referred to when decoding each CLVS referring to the SPS.
[0506] - the value of vps_max_layers_minusl is inferred to be equal to 0.
[0507] - a CVS shall contain only one layer (i.e., all VCL NAL units in a CVS shall have the same value of nuh layer id).
[0508] - the value of GeneralLayerld[ nuh layer id ] is inferred to be equal to 0.
[0509] - the value of vps_independent_layer_flag[ GeneralLayerld[ nuh layer id ] ] is inferred to be equal to 1.
[0510] When vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] is equal to 1, the nuh layer id of the SPS referred to by the CLVS with the particular nuh layer id value nuhLayerld shall be equal to nuhLayerld.
[0511] The value of sps_video_parameter_set_id shall be the same in all SPS referred to by a CVS.
[0512] sps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sub-layers that can be present in each CLVS referring to the SPS. The value of sps_max_sublayers_minus1 shall be in the range of 0 to vps_max_sublayers_minus1, inclusive.
[0513] sps_reserved_zero_4bits shall be equal to 0 in bitstreams conforming to this version of this Specification. Other values of sps_reserved_zero_4bits are reserved for future use by ITU-T | ISO / IEC.
[0514] sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that the profile_tier_level( ) syntax structure and the dpb_parameters( ) syntax structure are present in the SPS, and the general_hrd_parameters( ) syntax structure and the ols_hrd_parameters( ) syntax structure can also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of the four syntax structures are present 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 ] ].
[0515] gdr_enabled_flag equal to 1 specifies that GDR pictures can be present in the CLVS referring to the SPS. gdr_enabled_flag equal to 0 specifies that GDR pictures are not present in the CLVS referring to the SPS.
[0516] chroma_format_idc specifies the chroma sampling relative to luma sampling as specified in clause 6.2.
[0517] separate_colour_plane_flag equal to 1 specifies that the three colour components of the 4:4:4 chroma format are coded separately. separate_colour_plane_flag equal to 0 specifies that the colour 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 coded picture consists of three separate components, each consisting of coded samples of one colour plane (Y, Cb or Cr), and using monochrome coding syntax. In this case, each colour plane is associated with a specific_color_plane_id value.
[0518] NOTE 1 - There is no dependency between the decoding processes of colour 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 a monochrome picture with a different color_plane_id value for inter prediction.
[0519] The value of the variable ChromaArrayType is assigned according to the value of separate_colour_plane_flag as follows:
[0520] - If separate_colour_plane_flag is equal to 0, ChromaArrayType is set equal to chroma_format_idc.
[0521] - Otherwise (separate_colour_plane_flag is equal to 1), ChromaArrayType is set equal to 0.
[0522] res_change_in_clvs_allowed_flag equal to 1 specifies that picture spatial resolution can change within a CLVS referring to the SPS. res_change_in_clvs_allowed_flag equal to 0 specifies that picture spatial resolution does not change within any CLVS referring to the SPS.
[0523] pic_width_max_in_luma_samples specifies the maximum width, in luma samples, of each decoded picture referring to the SPS. pic_width_max_in_luma_samples shall not be equal to 0 and shall be an integer multiple of Max(8, MinCbSizeY).
[0524] One requirement of bitstream conformance is that the value of pic width max in luma samples shall be less than or equal to the value of ols dpb pic width [ i ] for any OLS containing one or more layers referring to SPS with index i.
[0525] pic height max in luma samples specifies the maximum height, in luma samples, of each decoded picture referring to the SPS. pic height max in luma samples shall not be equal to 0 and shall be an integer multiple of Max( 8, MinCbSizeY ).
[0526] One requirement of bitstream conformance is that the value of pic height max in luma samples shall be less than or equal to the value of ols dpb pic height [ i ] for any OLS containing one or more layers referring to SPS with index i.
[0527] sps conformance window flag equal to 1 specifies that conformance clipping window offset parameters follow immediately after in the SPS. sps conformance window flag equal to 0 specifies that no conformance clipping window offset parameters are present in the SPS.
[0528] sps conf win left offset, sps conf win right offset, sps conf win top offset, and sps conf win bottom offset specify the clipping window applied to a picture for which 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.
[0529] The consistent clipping 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.
[0530] The value of SubWidthC * (sps_conf_win_left_offset + sps_conf_win_right_offset) shall be less than pic_width_max_in_luma_samples and the value of SubHeightC * (sps_conf_win_top_offset + sps_conf_win_bottom_offset) shall be less than pic_height_max_in_luma_samples.
[0531] When ChromaArrayType is not equal to 0, the corresponding specified sample of the two chroma arrays is the sample with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample.
[0532] NOTE 2 - The consistent clipping window offset parameters apply only to output. All internal decoding processes apply to the unclipped picture dimensions.
[0533] sps_log2_ctu_size_minus5 plus 5 specifies the luma coding tree block size of each CTU. The value of sps_log2_ctu_size_minus5 shall be in the range of 0 to 2, inclusive. The value of 3 for sps_log2_ctu_size_minus5 is reserved for future use by ITU-T | ISO / IEC.
[0534] The variables CtbLog2SizeY and CtbSizeY are derived as follows:
[0535] CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5 (43)
[0536] CtbSizeY = 1 << CtbLog2SizeY (44)
[0537] subpic_info_present_flag equal to 1 specifies that subpicture information for the CLVS is present and there can be one or more subpictures in each picture of the CLVS. subpic_info_present_flag equal to 0 specifies that subpicture information for the CLVS is not present and there is only one subpicture in each picture of the CLVS.
[0538] When res_change_in_clvs_allowed_flag is equal to 1, the value of subpic_info_present_flag shall be equal to 0.
[0539] NOTE 3 - When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the subpictures of the input bitstream of the sub-bitstream extraction process, it can be necessary to set the value of subpic_info_present_flag equal to 1 in the RBSP of the SPS.
[0540] 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.
[0541] sps_independent_subpics_flag equal to 1 specifies that no intra prediction, inter prediction, and loop filtering operations can be performed across any subpicture boundary in the CLVS. sps_independent_subpics_flag equal to 0 specifies that inter prediction or loop filtering operations across subpicture boundaries in the CLVS can be allowed. When not present, the value of sps_independent_subpics_flag is inferred to be equal to 0.
[0542] subpic_ctu_top_left_x[ i ] specifies the horizontal position of the top-left CTU of the i-th subpicture 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.
[0543] subpic_ctu_top_left_y[ i ] specifies the vertical position of the top-left CTU of the i-th subpicture in units of 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.
[0544] subpic_width_minus1[ i ] plus 1 specifies the width of the i-th subpicture 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.
[0545] subpic_height_minus1[ i ] plus 1 specifies the height of the i-th subpicture in units of CtbSizeY. 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_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.
[0546] subpic_treated_as_pic_flag[ i ] equal to 1 specifies that the i-th subpicture of each coded picture in a CLVS is treated as a picture in the decoding process, excluding the in-loop filtering operation. subpic_treated_as_pic_flag[ i ] equal to 0 specifies that the i-th subpicture of each coded picture in a CLVS is not treated as a picture in the decoding process, excluding the in-loop filtering operation. When not present, the value of subpic_treated_as_pic_flag[ i ] is inferred to be equal to sps_independent_subpics_flag.
[0547] When subpic_treated_as_pic_flag[ i ] is equal to 1, the requirement for bitstream conformance is that in the OLS that includes the layer containing the i-th subpicture as an output layer, the following conditions are all true for each output layer and its reference layers:
[0548] - All pictures in the output layer and its reference layers shall have the same pic_width_in_luma_samples value and the same pic_height_in_luma_samples value.
[0549] - All SPS referred to by the output layer and its reference layers shall have the same sps_num_subpics_minus1 value and shall have the same 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 ] values (for each j value in the range of 0 to sps_num_subpics_minus1, inclusive), respectively.
[0550] - For each j value in the range of 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 SubpicIdVal[ j ] value.
[0551] loop_filter_across_subpic_enabled_flag[ i ] equal to 1 specifies that in-loop filtering operation can be performed across the boundaries of the i-th subpicture in each coded picture in a CLVS.
[0552] loop_filter_across_subpic_enabled_flag[ i ] equal to 0 fixes that the loop filtering operation is not performed across the boundary of the i-th subpicture in each coded picture in a 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.
[0553] One requirement for bitstream conformance is that the shape of subpictures shall be such that each subpicture shall have its entire left and top boundaries consisting of picture boundaries or boundaries of previously decoded subpictures when decoded.
[0554] sps_subpic_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax elements sps_subpic_id[ i ], the syntax elements pps_subpic_id[ i ] (if present), and the syntax elements slice_subpic_id (if present). The value of sps_subpic_id_len_minus1 shall be in the range of 0 to 15, inclusive. The value of 1 « ( sps_subpic_id_len_minus1 + 1 ) shall be greater than or equal to sps_num_subpics_minus1 + 1.
[0555] subpic_id_mapping_explicitly_signalled_flag equal to 1 specifies that subpicture ID mapping is explicitly signalled in the SPS or the PPS referred by the coded pictures of a CLVS. subpic_id_mapping_explicitly_signalled_flag equal to 0 specifies that subpicture ID mapping is not explicitly signalled for a CLVS. When not present, the value of subpic_id_mapping_explicitly_signalled_flag is inferred to be equal to 0.
[0556] subpic_id_mapping_in_sps_flag equal to 1 specifies that subpicture ID mapping is signalled 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 subpicture ID mapping is signalled in the PPS referred by the coded pictures of a CLVS when subpic_id_mapping_explicitly_signalled_flag is equal to 1.
[0557] sps_subpic_id[ i ] specifies the subpicture ID of the i-th subpicture. The length of the sps_subpic_id[ i ] syntax element is sps_subpic_id_len_minusl + 1 bits.
[0558] bit_depth_minus8 specifies the bit depth BitDepth of the samples of the luma array and the chroma arrays, and the value of the luma and chroma quantization parameter range offset QpBdOffset, as follows:
[0559] BitDepth = 8 + bit_depth_minus8 (45)
[0560] QpBdOffset = 6 * bit_depth_minus8 (46)
[0561] bit_depth_minus8 shall be in the range of 0 to 8, inclusive.
[0562] sps_entropy_coding_sync_enabled_flag equal to 1 specifies that a specific synchronization process of context variables is invoked prior to decoding a CTU that includes the first CTB of the CTB row in each slice in each picture referring to the SPS, and a specific storage process of context variables is invoked after decoding a CTU that includes the first CTB of the CTB row in each slice in each picture referring to the SPS.
[0563] sps_entropy_coding_sync_enabled_flag equal to 0 specifies that a specific synchronization process of context variables does not need to be invoked prior to decoding a CTU that includes the first CTB of the CTB row in each slice in each picture referring to the SPS, and a specific storage process of context variables does not need to be invoked after decoding a CTU that includes the first CTB of the CTB row in each slice in each picture referring to the SPS.
[0564] sps wpp entry point offsets present flag equal to 1 specifies that signaling of entry point offsets for CTU rows can be present in slice headers of pictures referring to the SPS when sps entropy coding sync enabled flag is equal to 1. sps wpp entry point offsets present flag equal to 0 specifies that there is no signaling of entry point offsets for CTU rows in slice headers of pictures referring to the SPS. When not present, the value of sps wpp entry point offsets present flag is inferred to be equal to 0.
[0565] sps weighted pred flag equal to 1 specifies that weighted prediction can be applied to P slices referring to the SPS. sps weighted pred flag equal to 0 specifies that weighted prediction is not applied to P slices referring to the SPS.
[0566] sps weighted bipred flag equal to 1 specifies that explicit weighted prediction can be applied to B slices referring to the SPS. sps weighted bipred flag equal to 0 specifies that explicit weighted prediction is not applied to B slices referring to the SPS.
[0567] log2 max pic order cnt lsb minus4 specifies the value of the variable MaxPicOrderCntLsb used in the decoding process for picture order count as follows:
[0568] MaxPicOrderCntLsb = 2 (log2_max_pic_order_cnt_lsb_minus4+4) (47)
[0569] The value of log2 max pic order cnt lsb minus4 shall be in the range of 0 to 12, inclusive.
[0570] sps poc msb flag equal to 1 specifies that the ph_poc_msb_present_flag syntax element is present in PH referring to the SPS. sps poc msb flag equal to 0 specifies that the ph_poc_msb_present_flag syntax element is not present in PH referring to the SPS.
[0571] poc_msb_len_minus1 plus 1 specifies the length, in bits, of the poc_msb_val syntax element when present in a PH referring to an SPS. The value of poc_msb_len_minus1 shall be in the range of 0 to 32 - log2_max_pic_order_cnt_lsb_minus4 - 5, inclusive.
[0572] num_extra_ph_bits_bytes specifies the number of bytes of extra bits in the PH syntax structure of a coded picture referring to 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 the value of num_extra_ph_bits_bytes is required to be equal to 0 in this version of this Specification, 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.
[0573] num_extra_sh_bits_bytes specifies the number of bytes of extra bits in the slice header of a coded picture referring to an SPS. In bitstreams conforming to this version of this Specification, the value of num_extra_sh_bits_bytes shall be equal to 0. Although the value of num_extra_sh_bits_bytes is required to be equal to 0 in this version of this Specification, 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.
[0574] sps_sublayer_dpb_params_flag controls 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.
[0575] long_term_ref_pics_flag equal to 0 specifies that no LTRP is used for inter prediction of any coded picture in a CLVS. long_term_ref_pics_flag equal to 1 specifies that LTRP can be used for inter prediction of one or more coded pictures in a CLVS.
[0576] inter_layer_ref_pics_present_flag equal to 0 specifies that no ILRPs are used for inter prediction of any coded picture in the CLVS. inter_layer_ref_pic_flag equal to 1 specifies that ILRPs can be used for inter prediction of one or more coded 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[ GeneralLayerldx[ nuh_layer_id ] ] is equal to 1, the value of inter_layer_ref_pics_present_flag shall be equal to 0.
[0577] sps_idr_rpl_present_flag equal to 1 specifies that reference picture list syntax elements are present in slice headers of IDR pictures. sps_idr_rpl_present_flag equal to 0 specifies that reference picture list syntax elements are not present in slice headers of IDR pictures.
[0578] rpl1_same_as_rpl0_flag equal to 1 specifies that the syntax elements num_ref_pic_lists_in_sps[ 1 ] and the syntax structure ref_pic_list_struct( 1, rplsIdx ) are not present and the following applies:
[0579] - 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 ].
[0580] - 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.
[0581] num_ref_pic_lists_in_sps[ i ] specifies the number of ref_pic_list_struct( listldx, rplsIdx ) syntax structures with listldx equal to i included in the SPS. The value of num_ref_pic_lists_in_sps[ i ] shall be in the range of 0 to 64, inclusive.
[0582] NOTE 4 - For each value of listldx (equal to 0 or 1), the decoder shall allocate memory for the total number of num_ref_pic_lists_in_sps[ i ] + 1 ref_pic_list_struct( listldx, rplsldx ) syntax structures, since there can be one directly signalled in the slice header of the current picture.
[0583] qtbtt_dual_tree_intra_flag equal to 1 specifies that for I slices, each CTU is split using implicit quadtree partitioning into coding units with 64x64 luma samples and that these coding units are the roots of two separate coding tree syntax structures for luma and chroma. qtbtt_dual_tree_intra_flag equal to 0 specifies that separate coding 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.
[0584] 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.
[0585] The variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC and Vsize are derived as follows:
[0586] MinCbLog2SizeY = log2_min_luma_coding_block_size_minus2 + 2 (48)
[0587] MinCbSizeY = 1 « MinCbLog2SizeY (49)
[0589] IbcBufWidthY = 256 * 128 / CtbSizeY (50)
[0591] IbcBufWidthC = IbcBufWidthY / SubWidthC (51)
[0592] VSize = Min(64, CtbSizeY) (52)
[0593] The value of MinCbSizeY shall be less than or equal to VSize.
[0594] The variables CtbWidthC and CtbHeightC, which specify the width and height of the array of each chroma CTB, respectively, are derived as follows:
[0595] - If chroma format idc is equal to 0 (monochrome) or separate colour plane flag is equal to 1, CtbWidthC and CtbHeightC are both equal to 0.
[0596] - Otherwise, CtbWidthC and CtbHeightC are derived as follows:
[0597] CtbWidthC = CtbSizeY / SubWidthC (53)
[0598] CtbHeightC = CtbSizeY / SubHeightC (54)
[0599] For log2BlockWidth in the range of 0 to 4, inclusive, and log2BlockHeight in the range of 0 to 4, inclusive, the right-up diagonal scan order array initialization process specified in clause 6.5.2 is invoked with 1 « log2BlockWidth and 1 « log2BlockHeight as inputs and the output is assigned to DiagScanOrder[log2BlockWidth][log2BlockHeight].
[0600] For log2BlockWidth in the range of 0 to 6, inclusive, and log2BlockHeight in the range of 0 to 6, inclusive, the horizontal and vertical traversal scan order array initialization process specified in clause 6.5.3 is invoked with 1 « log2BlockWidth and 1 « log2BlockHeight as inputs and the output is assigned to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].
[0601] partition_constraints_override_enabled_flag equal to 1 specifies that partition_constraints_override_flag is present in the PH referring to the SPS. partition_constraints_override_enabled_flag equal to 0 specifies that partition_constraints_override_flag is not present in the PH referring to the SPS.
[0602] sps_log2_diff_min_qt_min_cb_intra_slice_luma specifies the default difference, in base 2 logarithm, between the minimum size of luma samples of luma leaf blocks resulting from quad-tree partitioning of CTUs and the minimum coding block size in luma samples of luma CUs in the slice, where slice_type is equal to 2 (I) referring to the 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 referring to the SPS. The value of sps_log2_diff_min_qt_min_cb_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. The base 2 logarithm of the minimum size of luma samples of luma leaf blocks resulting from quad-tree partitioning of CTUs is derived as follows:
[0603] MinQtLog2SizeIntraY = sps_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY (55)
[0604] sps_max_mtt_hierarchy_depth_intra_slice_luma specifies the default maximum hierarchy depth of a coding unit resulting from the quadtree partitioning of a quadtree leaf in a slice with slice_type equal to 2 (I) referring to the 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 present in the PH referring to the SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive.
[0605] sps_log2_diff_max_bt_min_qt_intra_slice_luma specifies the default difference, in base 2 logarithm, between the maximum size (width or height) in luma samples of a luma coding block that can use binary splitting and the minimum size (width or height) in luma samples of a luma leaf block resulting from the quadtree partitioning of a CTU in a slice with slice_type equal to 2 (I) referring to the 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 referring to the 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.
[0606] sps_log2_diff_max_tt_min_qt_intra_slice_luma specifies a default difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a luma coding block for which ternary partitioning can be used and the base-2 logarithm of the minimum size (width or height) in luma samples of a luma leaf block resulting from the quadtree partitioning of a CTU with slice_type equal to 2 (I) referring to the 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 referring to the 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.
[0607] sps_log2_diff_min_qt_min_cb_inter_slice specifies a default difference between the base-2 logarithm of the minimum size in luma samples of a luma leaf block resulting from the quadtree partitioning of a CTU and the base-2 logarithm of the minimum luma coding block size in luma samples of a luma CU in a slice with slice_type equal to 0 (B) or 1 (P) referring to the 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 referring to the 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 luma samples of a luma leaf block resulting from the quadtree partitioning of a CTU is derived as follows:
[0608] MinQtLog2SizeInterY = sps_log2_diff_min_qt_min_cb_inter_slice + MinCbLog2SizeY (56)
[0610] sps_max_mtt_hierarchy_depth_inter_slice specifies the default maximum hierarchy depth of a coding unit that is generated after multi-type tree partitioning of a quad-tree leaf in a slice with slice type equal to 0 (B) or 1 (P) referring to the 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 a PH referring to the SPS. The value of sps_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive.
[0611] sps_log2_diff_max_bt_min_qt_inter_slice specifies the default difference, in base 2 logarithm, between the maximum size (width or height) in luma samples of a luma coding block that can use binary splitting and the minimum size (width or height) in luma samples of a luma leaf block resulting from quad-tree partitioning of a CTU in a slice with slice type equal to 0 (B) or 1 (P) referring to the 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 a PH referring to 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.
[0612] 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) in luma samples of a luma coding block for which ternary partitioning can be used and the base-2 logarithm of the minimum size (width or height) in luma samples of a luma leaf block, which is produced by quad-tree partitioning of a CTU in a slice with slice type equal to 0 (B) or 1 (P) referring to the 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 referring to the SPS. The value of sps_log2_diff_max_tt_min_qt_inter_slice shall 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.
[0613] sps_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the default difference between the base-2 logarithm of the minimum size in luma samples of a chroma leaf block produced from quad-tree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA and the base-2 logarithm of the minimum coding block size in luma samples of a chroma CU with treeType equal to DUAL_TREE_CHROMA in a slice with slice type equal to 2 (I) referring to the 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 referring to the 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 in luma samples of a chroma leaf block produced from quad-tree partitioning of a CTU with treeType equal to DUAL_TREE_CHROMA is derived as follows:
[0614] MinQtLog2SizeIntraC = sps_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY (57)
[0615] sps_max_mtt_hierarchy_depth_intra_slice_chroma specifies the default maximum hierarchy depth of chroma coding units resulting from the partitioning of a chroma quadtree leaf of treeType equal to DUAL_TREE_CHROMA in slices with slice_type equal to 2 (I) referring to the 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 referring to the 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.
[0616] 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) in luma samples of a chroma coding block that can use binary splitting and the minimum size (width or height) in luma samples of a chroma leaf block resulting from the quad-tree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2 (I) referring to the 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 referring to the 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.
[0617] 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) in luma samples of a chroma coding block for which ternary partitioning can be used and the minimum size (width or height) in luma samples of a chroma leaf block resulting from the quad-tree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in slices with slice_type equal to 2 (I) referring to the SPS, which can be overridden by ph_log2_diff_max_tt_min_qt_chroma present in the PH referring to the 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.
[0618] 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.
[0619] When CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag shall be equal to 0.
[0620] The variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY and MaxTbSizeY are derived as follows:
[0621] MinTbLog2SizeY = 2 (58)
[0622] MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag? 6 : 5 (59)
[0623] MinTbSizeY = 1 « MinTbLog2SizeY (60)
[0624] MaxTbSizeY = 1 « MaxTbLog2SizeY (61)
[0625] sps_joint_cbcr_enabled_flag equal to 0 specifies that joint coding of chrominance residuals is disabled. sps_joint_cbcr_enabled_flag equal to 1 specifies that joint coding of chrominance residuals is enabled. When not present, the value of sps_joint_cbcr_enabled_flag is inferred to be equal to 0.
[0626] 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 also to joint Cb-Cr residuals. same_qp_table_for_chroma equal to 0 specifies that when sps_joint_cbcr_enabled_flag is equal to 1, chroma QP mapping tables are signaled in the SPS, two for Cb and Cr and one for joint Cb-Cr. When same_qp_table_for_chroma is not present in the bitstream, the value of same_qp_table_for_chroma is inferred to be equal to 1.
[0627] qp_table_start_minus26[ i ] plus 26 specifies the starting luma and chroma QPs used to describe the i-th chroma QP mapping table. The value of qp_table_start_minus26[ i ] shall be in the range of -26 - QpBdOffset to 36, inclusive. 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.
[0628] num_points_in_qp_table_minus1[ i ] plus 1 specifies the number of points used to describe the i-th chroma QP mapping table. The value of num_points_in_qp_table_minus1[ i ] shall be in the range of 0 to 63 + QpBdOffset, inclusive. 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.
[0629] delta_qp_in_val_minus1[ i ][ j ] specifies the delta value for deriving the input coordinate of the j-th pivot point of the i-th chroma QP mapping table. When delta_qp_in_val_minus1[ 0 ][ j ] is not present in the bitstream, the value of delta_qp_in_val_minus1[ 0 ][ j ] is inferred to be equal to 0.
[0630] delta_qp_diff_val[ i ][ j ] specifies the delta value for deriving the output coordinate of the j-th pivot point of the i-th chroma QP mapping table.
[0631] The i-th chroma QP mapping table, ChromaQpTable[ i ] (for i = 0... numQpTables - 1), is derived as follows:
[0632]
[0633]
[0634] 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 of -QpBdOffset to 63, inclusive).
[0635] It is a requirement of bitstream conformance that the values of qpInVal[ i ][ j ] and qpOutVal[ i ][ j ] shall be in the range of -QpBdOffset to 63, inclusive, for i in the range of 0 to numQpTables - 1, inclusive, and j in the range of 0 to num_points_in_qp_table_minus1[ i ] + 1, inclusive.
[0636] 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.
[0637] sps_alf_enabled_flag equal to 0 specifies that the cross-component adaptive loop filter is disabled. sps_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled.
[0638] sps_ccalf_enabled_flag equal to 0 specifies that cross component adaptive loop filter is disabled. sps_ccalf_enabled_flag equal to 1 specifies that cross component adaptive loop filter can be enabled.
[0639] sps_transform_skip_enabled_flag equal to 1 specifies that transform_skip_flag can 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.
[0640] log2_transform_skip_max_size_minus2 specifies the maximum block size for transform skip and shall be in the range of 0 to 3, inclusive.
[0641] The variable MaxTsSize is set equal to 1 « (log2_transform_skip_max_size_minus2 + 2).
[0642] sps_bdpcm_enabled_flag equal to 1 specifies that intra bdpcm luma flag and intra bdpcm chroma flag can be present in the coding unit syntax of an intra coded unit. sps_bdpcm_enabled_flag equal to 0 specifies that intra bdpcm luma flag and intra bdpcm chroma flag are not present in the coding unit syntax of an intra coded unit. When not present, the value of sps_bdpcm_enabled_flag is inferred to be equal to 0.
[0643] sps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction. sps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is not applied. When the value of (CtbSizeY / MinCbSizeY + 1) is greater than (pic_width_in_luma_samples / MinCbSizeY - 1), where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS referring to the SPS, the value of sps_ref_wraparound_enabled_flag shall be equal to 0.
[0644] sps_temporal_mvp_enabled_flag equal to 1 specifies that temporal motion vector prediction can be used in the CLVS. sps_temporal_mvp_enabled_flag equal to 0 specifies that temporal motion vector prediction is not used in the CLVS.
[0645] 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 of the CLVS is not equal to I. 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.
[0646] sps_amvr_enabled_flag equal to 1 specifies that adaptive motion vector difference resolution is used in motion vector coding. sps_amvr_enabled_flag equal to 0 specifies that adaptive motion vector difference resolution is not used in motion vector coding.
[0647] sps_bdof_enabled_flag equal to 0 specifies that bi-directional optical flow inter prediction is disabled. sps_bdof_enabled_flag equal to 1 specifies that bi-directional optical flow inter prediction is enabled.
[0648] sps_bdof_pic_present_flag equal to 1 specifies that ph_disable_bdof_flag is present in PH referring to the SPS. sps_bdof_pic_present_flag equal to 0 specifies that ph_disable_bdof_flag is not present in PH referring to 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.
[0649] sps_smvd_enabled_flag equal to 1 specifies that symmetric motion vector difference can be used for motion vector decoding. sps_smvd_enabled_flag equal to 0 specifies that symmetric motion vector difference is not used in motion vector coding.
[0650] sps_dmvr_enabled_flag equal to 1 specifies that inter-double-prediction based decoder motion vector optimization is enabled. sps_dmvr_enabled_flag equal to 0 specifies that inter-double-prediction based decoder motion vector optimization is disabled.
[0651] sps_dmvr_pic_present_flag equal to 1 specifies that ph disable dmvr flag is present in the PH referring to the SPS. sps_dmvr_pic_present_flag equal to 0 specifies that ph disable dmvr flag is not present in the PH referring to 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.
[0652] sps_mmvd_enabled_flag equal to 1 specifies that merge mode with motion vector difference is enabled. sps_mmvd_enabled_flag equal to 0 specifies that merge mode with motion vector difference is disabled.
[0653] sps_isp_enabled_flag equal to 1 specifies that intra prediction with sub-partitions is enabled. sps_isp_enabled_flag equal to 0 specifies that intra prediction with sub-partitions is disabled.
[0654] 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.
[0655] 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.
[0656] sps_cclm_enabled_flag equal to 0 specifies that cross-component linear model intra prediction from luma to chroma is disabled. sps_cclm_enabled_flag equal to 1 specifies that cross-component linear model intra prediction from luma to chroma is enabled. When sps_cclm_enabled_flag is not present, it is inferred to be equal to 0.
[0657] 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 moved horizontally 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 moved 0.5 units to the right in 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.
[0658] 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 moved vertically 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 moved 0.5 units down in 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.
[0659] 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 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 sps_explicit_mts_inter_enabled_flag is not present in the sequence parameter set RBSP syntax.
[0660] sps_explicit_mts_intra_enabled_flag equal to 1 specifies that mts_idx can be present in the intra coded slice syntax. sps_explicit_mts_intra_enabled_flag equal to 0 specifies that mts_idx is not present in the intra coded slice syntax. When not present, the value of sps_explicit_mts_intra_enabled_flag is inferred to be equal to 0.
[0661] sps_explicit_mts_inter_enabled_flag equal to 1 specifies that mts_idx can be present in the inter-coded slice syntax. sps_explicit_mts_inter_enabled_flag equal to 0 specifies that mts_idx is not present in the inter-coded slice syntax. When not present, the value of sps_explicit_mts_inter_enabled_flag is inferred to be equal to 0.
[0662] six_minus_max_num_merge_cand specifies the maximum number of merging motion vector predictor (MVP) candidates supported in the SPS minus 6. The maximum number of merging MVP candidates, MaxNumMergeCand, is derived as follows:
[0663] MaxNumMergeCand = 6 - six_minus_max_num_merge_cand (63)
[0664] The value of MaxNumMergeCand shall be in the range of 1 to 6, inclusive.
[0665] sps_sbt_enabled_flag equal to 0 specifies that sub-block transform for inter- predicted CUs is disabled. sps_sbt_enabled_flag equal to 1 specifies that sub-block transform for inter-predicted CUs is enabled.
[0666] sps_affine_enabled_flag specifies whether affine model based motion compensation can be used for inter prediction. If sps_affine_enabled_flag is equal to 0, the syntax shall be constrained such that affine model based motion compensation is not used in the CLVS and inter_affine_flag and cu_affine_type_flag are not present in the slice syntax of the CLVS. Otherwise (sps_affine_enabled_flag is equal to 1), affine model based motion compensation can be used for the CLVS.
[0667] five_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based merging motion vector predictor candidates supported in the SPS minus 5.
[0668] sps_affine_type_flag specifies whether 6-parameter affine model based motion compensation can be used for inter prediction. If sps_affine_type_flag is equal to 0, the syntax shall be constrained such that 6-parameter affine model based motion compensation is not used in the CLVS and cu_affine_type_flag is not present in the coding unit syntax in the CLVS. Otherwise (sps_affine_type_flag is equal to 1), 6-parameter affine model based motion compensation can be used in the CLVS. When not present, the value of sps_affine_type_flag is inferred to be equal to 0.
[0669] sps_affine_amvr_enabled_flag equal to 1 specifies that adaptive motion vector difference resolution is used in the motion vector coding of affine inter mode. sps_affine_amvr_enabled_flag equal to 0 specifies that adaptive motion vector difference resolution is not used in the motion vector coding of affine inter mode. When not present, the value of sps_affine_amvr_enabled_flag is inferred to be equal to 0.
[0670] 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 shall 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.
[0671] sps_prof_pic_present_flag equal to 1 specifies that ph_disable_prof_flag is present in the PH referring to the SPS. sps_prof_pic_present_flag equal to 0 specifies that ph_disable_prof_flag is not present in the PH referring to 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.
[0672] sps_palette_enabled_flag equal to 1 specifies that pred mode plt flag can be present in the coding unit syntax. sps_palette_enabled_flag equal to 0 specifies that pred mode plt flag is not present in the coding unit syntax. When sps_palette_enabled_flag is not present, it is inferred to be equal to 0.
[0673] 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 coding 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 coding unit syntax. When sps act enabled flag is not present, it is inferred to be equal to 0.
[0674] min qp prime ts minus4 specifies the minimum allowed quantization parameter for transform skip mode as follows:
[0675] QpPrimeTsMin = 4 + min qp prime ts minus4 (64)
[0676] The value of min qp prime ts minus4 shall be in the range of 0 to 48, inclusive.
[0677] 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 shall be constrained such that bi-prediction with CU weights is not used in the CLVS and bcw idx is not present in the coding unit syntax of the CLVS. Otherwise (sps bcw enabled flag is equal to 1), bi-prediction with CU weights can be used in the CLVS.
[0678] sps ibc enabled flag equal to 1 specifies that IBC prediction mode can be used for the decoding of pictures in the CLVS. sps ibc enabled flag equal to 0 specifies that IBC prediction mode is not used in the CLVS. When sps ibc enabled flag is not present, it is inferred to be equal to 0.
[0679] six_minus_max_num_ibc_merge_cand specifies the maximum number of IBC merging block vector prediction (BVP) candidates supported in the SPS minus 6.
[0680] The maximum number of IBC merging BVP candidates, MaxNumIbcMergeCand, is derived as follows:
[0681]
[0682] sps_ciip_enabled_flag specifies that ciip_flag can be present in the coding unit syntax for inter-coded units. sps_ciip_enabled_flag equal to 0 specifies that ciip_flag is not present in the coding unit syntax for inter-coded units.
[0683] sps_fpel_mmvd_enabled_flag equal to 1 specifies that merge mode with motion vector difference uses integer sample precision. sps_fpel_mmvd_enabled_flag equal to 0 specifies that merge mode with motion vector difference can use fractional sample precision.
[0684] sps_gpm_enabled_flag specifies whether geometry partitioning based motion compensation can be used for inter prediction. sps_gpm_enabled_flag equal to 0 specifies that the syntax shall be constrained such that geometry partitioning based motion compensation is not used in the CLVS and merge_gpm_partition_idx, merge_gpm_idx0 and merge_gpm_idx1 are not present in the coding unit syntax of the CLVS. sps_gpm_enabled_flag equal to 1 specifies that geometry partitioning based motion compensation can be used in the CLVS. When not present, the value of sps_gpm_enabled_flag is inferred to be equal to 0.
[0685] max_num_merge_cand_minus_max_num_gpm_cand specifies the maximum number of geometry partitioning merge mode candidates supported in the SPS minus MaxNumMergeCand.
[0686] If sps_gpm_enabled_flag is equal to 1 and MaxNumMergeCand is greater than or equal to 3, the maximum number of geometry partitioning merge mode candidates, MaxNumGeoMergeCand, is derived as follows:
[0687]
[0688]
[0689] The value of MaxNumGeoMergeCand shall be in the range of 2, inclusive, to MaxNumMergeCand, inclusive.
[0690] sps_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is used in the CLVS. sps_lmcs_enabled_flag equal to 0 specifies that luma mapping with chroma scaling is not used in the CLVS.
[0691] sps_lfnst_enabled_flag equal to 1 specifies that lfnst_idx can be present in the intra coding unit syntax. sps_lfnst_enabled_flag equal to 0 specifies that lfnst_idx is not present in the intra coding unit syntax.
[0692] sps_ladf_enabled_flag equal to 1 specifies that sps_num_ladf_intervals_minus2, sps_ladf_lowest_interval_qp_offset, sps_ladf_qp_offset[ i ], and sps_ladf_delta_threshold_minus1[ i ] are present in the SPS.
[0693] 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.
[0694] sps_ladf_lowest_interval_qp_offset specifies the offset used for deriving the variable qP 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.
[0695] sps_ladf_qp_offset[ i ] specifies the offset array used for deriving the variable qP specified in clause 8.8.3.6.1. The value of sps_ladf_qp_offset[ i ] shall be in the range of -63 to 63, inclusive.
[0696] sps_ladf_delta_threshold_minus1[ i ] is used to compute the value of SpsLadfIntervalLowerBound[ i ], which specifies the lower bound of the i-th luma intensity level interval. The value of sps_ladf_delta_threshold_minus1[ i ] shall be in the range of 0 to 2 BitDepth - 3, inclusive.
[0697] The value of SpsLadfIntervalLowerBound[ 0 ] is set equal to 0.
[0698] For each i value in the range of 0 to sps_num_ladf_intervals_minus2, inclusive, the variable SpsLadfIntervalLowerBound[ i + 1 ] is derived as follows:
[0699] SpsLadfIntervalLowerBound[ i + 1 ] = SpsLadfIntervalLowerBound[ i ] + sps_ladf_delta_threshold_minus1[ i ] + 1 (67)
[0700]
[0701] log2_parallel_merge_level_minus2 plus 2 specifies the value of the variable Log2ParMrgLevel, which is used in the derivation process of the spatial merging candidates specified in clause 8.5.2.3, the derivation process of the motion vectors and reference indices in sub-block merge mode specified in clause 8.5.5.2, and for controlling the invocation of the history-based motion vector prediction value list update process 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:
[0702] Log2ParMrgLevel = log2_parallel_merge_level_minus2 + 2 (68)
[0703] sps_scaling_list_enabled_flag equal to 1 specifies that scaling lists are used for the scaling process of transform coefficients. sps_scaling_list_enabled_flag equal to 0 specifies that scaling lists are not used for the scaling process of transform coefficients.
[0704] sps_dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled for pictures referring to the SPS. sps_dep_quant_enabled_flag equal to 1 specifies that dependent quantization can be enabled for pictures referring to the SPS.
[0705] sps_sign_data_hiding_enabled_flag equal to 0 specifies that sign data hiding is disabled for pictures referring to the SPS. sps_sign_data_hiding_enabled_flag equal to 1 specifies that sign data hiding can be enabled for pictures referring to the SPS. When sps_sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.
[0706] sps_virtual_boundaries_enabled_flag equal to 1 specifies that disabling cross- virtual-boundary loop filtering can be applied in coded pictures in a CLVS. sps_virtual_boundaries_enabled_flag equal to 0 specifies that disabling cross- virtual-boundary loop filtering is not applied in coded pictures in a CLVS. Loop filtering operations include the de-blocking filter, the sample adaptive offset filter, and the adaptive loop filter operation.
[0707] sps_virtual_boundaries_present_flag equal to 1 specifies that information of virtual boundaries is signaled in the SPS. sps_virtual_boundaries_present_flag equal to 0 specifies that information of virtual boundaries is not signaled in the SPS. When one or more virtual boundaries are signaled in the SPS, disabling cross-virtual-boundary loop filtering operations in pictures referring to the SPS. Loop filtering operations include the de-blocking filter, the sample adaptive offset filter, and the adaptive loop filter operation.
[0708] One requirement for bitstream conformance is that the value of sps_virtual_boundaries_present_flag shall be equal to 0 when the value of res_change_in_clvs_allowed_flag is equal to 1.
[0709] 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.
[0710] 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.
[0711] 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.
[0712] 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.
[0713] 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.
[0714] 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.
[0715] sps_sublayer_cpb_params_present_flag equal to 1 specifies that the syntax structure old_hrd_parameters() in the SPS RBSP includes sub-layer represented HRD parameters with Temporalld in the range of 0 to sps_max_sublayers_minusl, inclusive. sps_sublayer_cpb_params_present_flag equal to 0 specifies that the syntax structure ols_hrd_parameters() in the SPS RBSP includes sub-layer represented HRD parameters with Temporalld equal to sps_max_sublayers_minusl only. When sps_max_sublayers_minusl is equal to 0, the value of sps_sublayer_cpb_params_present_flag is inferred to be equal to 0.
[0716] When sps_sublayer_cpb_params_present_flag is equal to 0, the sub-layer represented HRD parameters with Temporalld in the range of 0 to sps_max_sublayers_minusl - 1, inclusive, are inferred to be the same as the sub-layer represented HRD parameters with Temporalld equal to sps_max_sublayers_minusl. These include the HRD parameters 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.
[0717] field_seq_flag equal to 1 indicates that the CLVS conveys pictures that represent fields. field_seq_flag equal to 0 indicates that the CLVS conveys pictures that represent frames. When general_frame_only_constraint_flag is equal to 1, the value of field_seq_flag shall be equal to 0.
[0718] When field_seq_flag is equal to 1, a frame field information SEI message shall be present for each coded picture in the CLVS.
[0719] NOTE 5 - The specified decoding process does not treat pictures that represent fields differently than pictures that represent frames. Thus, a sequence of pictures that represent fields will be coded using the picture dimensions of a single field. For example, pictures that represent 1080i fields will typically have a cropped output dimension of 1920x540, and the sequence picture rate will typically represent the rate of the source fields (typically between 50 and 60 Hz), rather than the source frame rate (typically between 25 and 30 Hz).
[0720] vui_parameters_present_flag equal to 1 specifies that the syntax structure vui_parameters( ) is present in the SPS RBSP. vui_parameters_present_flag equal to 0 specifies that the syntax structure vui_parameters( ) is not present in the SPS RBSP.
[0721] sps_extension_flag equal to 0 specifies that the sps_extension_data_flag syntax element is not present in the SPS RBSP. sps_extension_flag equal to 1 specifies that the sps_extension_data_flag syntax element is present in the SPS RBSP.
[0722] sps_extension_data_flag can have any value. Its presence and value do not affect the conformance of decoders to the profiles specified in this version of the specification. Decoders conforming to this version of the specification shall ignore all sps_extension_data_flag syntax elements.
[0723] 7.4.3.4 Picture parameter set RBSP semantics
[0724] A PPS RBSP shall be available to the decoding process before it is referenced, included in at least one AU with Temporalld less than or equal to the Temporalld of the PPS NAL unit, or provided through external means.
[0725] All PPS NAL units with the specific value of pps_pic_parameter_set_id within a PU shall have the same content.
[0726] pps_pic_parameter_set_id identifies the PPS for reference by other syntax elements. The value of pps_pic_parameter_set_id shall be in the range of 0 to 63, inclusive.
[0727] Regardless of the nuh layer id value, PPS NAL units share the same value space of pps_pic_parameter_set_id.
[0728] Let ppsLayerld be the value of nuh layer id of a particular PPS NAL unit, and let vclLayerld be the value of nuh layer id of a particular VCL NAL unit. A particular VCL NAL unit shall not refer to a particular PPS NAL unit unless ppsLayerld is less than or equal to vclLayerld, and the layer with nuh layer id equal to ppsLayerld is included in at least one OLS that includes the layer with nuh layer id equal to vclLayerld.
[0729] 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 shall be in the range of 0 to 15, inclusive. The value of pps seq parameter set id shall be the same in all PPS referred to by coded pictures in a CL VS.
[0730] mixed nal u types in pic flag equal to 1 specifies that each picture referring to the PPS has multiple VCL NAL units that do not have the same nal unit type value and the picture is not an IRAP picture. mixed nal u types in pic flag equal to 0 specifies that each picture referring to the PPS has one or more VCL NAL units and the VCL NAL units of each picture referring to the PPS have the same nal unit type value.
[0731] When no mixed nal u types in pic constraint flag is equal to 1, the value of mixed nal u types in pic flag shall be equal to 0.
[0732] For each slice in picture picA with nal unit type value nalUnitTypeA in the range of IDR W RADL to CRA NUT, inclusive, the picture picA also contains one or more slices with another nal unit type value (i.e., the value of mixed nal u types in pic flag for picture picA is equal to 1), the following applies:
[0733] - The slice shall belong to subpicture subpicA for which the value of subpic_treated_as_pic_flag[ i ] is equal to 1.
[0734] - The slice shall not belong to subpicture of picA containing VCL NAL units for which nal_unit_type is not equal to nalUnitTypeA.
[0735] - If nalUnitTypeA is equal to CRA, then for all subsequent PUs in CLVS following the current picture in decoding and output order, neither RefPicList[0] nor RefPicList[1] of slices in subpicA in those PUs shall include in the active entries any picture preceding picA in decoding order.
[0736] - Otherwise (i.e., nalUnitTypeA is equal to IDR W RADL or IDR N LP), for all PUs in CLVS following the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of slices in subpicA in those PUs shall include in the active entries any picture preceding picA in decoding order.
[0737] NOTE 1 - mixed_nalu_types_in_pic_flag equal to 1 indicates that the picture referring to the PPS contains slices with different NAL unit types, e.g., coded pictures resulting from subpicture bitstream merging operation. The encoder must ensure matching bitstream structure and further alignment of parameters of the original bitstreams. One 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 referring to the PPS cannot have a slice with nal_unit_type equal to IDR W RADL or IDR N LP.
[0738] pic_width_in_luma_samples specifies the width of each decoded picture referring to 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.
[0739] 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.
[0740] pic_height_in_luma_samples specifies the height of each decoded picture referring to 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.
[0741] 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.
[0742] The variables PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC and PicHeightInSamplesC are derived as follows:
[0743] PicWidthInCtbsY = Ceil( pic_width_in_luma_samples ÷ CtbSizeY ) (69)
[0744] PicHeightInCtbsY = Ceil( pic_height_in_luma_samples ÷ CtbSizeY ) (70)
[0745] PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY (71)
[0746] PicWidthInMinCbsY = pic_width_in_luma_samples ÷ MinCbSizeY (72)
[0747] PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY (73)
[0748] PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY (74)
[0749] PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples (75)
[0750] PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC (76)
[0751] PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC (77)
[0752] pps_conformance_window_flag equal to 1 specifies that conformance clipping window offset parameters follow in the PPS. pps_conformance_window_flag equal to 0 specifies that no conformance clipping window offset parameters are present in the PPS.
[0753] pps_conf_win_left_offset, pps_conf_win_right_offset, pps_conf_win_top_offset, and pps_conf_win_bottom_offset specify a rectangular region in picture coordinates that is the output of the decoded pictures in the CLVS. 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.
[0754] The consistent clipping 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.
[0755] The value of SubWidthC * (pps_conf_win_left_offset + pps_conf_win_right_offset) shall be less than pic_width_in_luma_samples and the value of SubHeightC * (pps_conf_win_top_offset + pps_conf_win_bottom_offset) shall be less than pic_height_in_luma_samples.
[0756] When ChromaArrayType is not equal to 0, the corresponding specified sample of the two chroma arrays is the sample with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample.
[0757] NOTE 2 - The consistent clipping window offset parameters only apply to output. All internal decoding processes apply to the unclipped picture dimensions.
[0758] Let ppsA and ppsB be any two PPS referring to the same SPS. One requirement for bitstream conformance is that 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, when ppsA and ppsB have the same values of pic_width_in_luma_samples and pic_height_in_luma_samples, respectively.
[0759] 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.
[0760] scaling_window_explicit_signalling_flag equal to 1 specifies that scaling window offset parameters are present in the PPS. scaling_window_explicit_signalling_flag equal to 0 specifies that scaling window offset parameters are not present in the PPS. When res_change_in_clvs_allowed_flag is equal to 0, the value of scaling_window_explicit_signalling_flag shall be equal to 0.
[0761] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify the offsets to the picture dimensions that are applied for scaling list calculation. 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.
[0762] The value of SubWidthC * (scaling_win_left_offset + scaling_win_right_offset) shall be less than pic_width_in_luma_samples and the value of SubHeightC * (scaling_win_top_offset + scaling_win_bottom_offset) shall be less than pic_height_in_luma_samples.
[0763] The variables PicOutputWidthL and PicOutputHeightL are derived as follows:
[0764] PicOutputWidthL = pic_width_in_luma_samples - (78)
[0765] SubWidthC * (scaling_win_right_offset + scaling_win_left_offset)
[0766] PicOutputHeightL = pic_height_in_luma_samples - (79)
[0767] SubHeightC * (scaling_win_bottom_offset + scaling_win_top_offset)
[0768] Let refPicOutputWidthL and refPicOutputHeightL be PicOutputWidthL and PicOutputHeightL of a reference picture of the current picture referring to this PPS. The following are bitstream conformance requirements that shall be satisfied by all:
[0769] - PicOutputWidthL * 2 shall be greater than or equal to refPicWidthInLumaSamples.
[0770] - PicOutputHeightL * 2 shall be greater than or equal to refPicHeightInLumaSamples.
[0771] - PicOutputWidthL shall be less than or equal to refPicWidthInLumaSamples * 8.
[0772] - PicOutputHeightL shall be less than or equal to refPicHeightInLumaSamples * 8.
[0773] - PicOutputWidthL * pic_width_max_in_luma_samples shall be greater than or equal to refPicOutputWidthL * (pic_width_in_luma_samples - Max(8, MinCbSizeY)).
[0774] - PicOutputHeightL * pic_height_max_in_luma_samples shall be greater than or equal to refPicOutputHeightL * (pic_height_in_luma_samples - Max(8, MinCbSizeY)).
[0775] output_flag_present_flag equal to 1 specifies that the pic_output_flag syntax element is present in the slice header referring to the PPS. output_flag_present_flag equal to 0 specifies that the pic_output_flag syntax element is not present in the slice header referring to the PPS.
[0776] subpic_id_mapping_in_pps_flag equal to 1 specifies that subpicture ID mapping is signaled in the PPS. subpic_id_mapping_in_pps_flag equal to 0 specifies that subpicture ID mapping is not signaled in the PPS. If subpic_id_mapping_explicitly_signalled_flag is 0 or subpic_id_mapping_in_sps_flag is equal to 1, the value of subpic_id_mapping_in_pps_flag shall be equal to 0. Otherwise (subpic_id_mapping_explicitly_signalled_flag is equal to 1 and subpic_id_mapping_in_sps_flag is equal to 0), the value of subpic_id_mapping_in_pps_flag shall be equal to 1.
[0777] pps_num_subpics_minus1 shall be equal to sps_num_subpics_minus1.
[0778] pps_subpic_id_len_minus1 shall be equal to sps_subpic_id_len_minus1.
[0779] pps_subpic_id[ i ] specifies the subpicture ID of the i-th subpicture. The length of the pps_subpic_id[ i ] syntax element is pps_subpic_id_len_minus1 + 1 bits.
[0780] For each i value in the range of 0 to sps_num_subpics_minus1, inclusive, the variable SubpicIdVal[ i ] is derived as follows:
[0781]
[0782] One requirement for bitstream conformance is that the following two constraints apply:
[0783] - For any two difference values of i and j in the range of 0 to sps_num_subpics_minus1, inclusive, SubpicIdVal[ i ] shall not be equal to SubpicIdVal[ j ].
[0784] - When the current picture is not the first picture of a CLVS, for each i value in the range of 0 to sps_num_subpics_minus1, inclusive, if the value of SubpicIdVal[ i ] is not equal to the value of SubpicIdVal[ i ] of the previous picture in decoding order in the same layer, the nal_unit_type of all coded slice NAL units of the subpicture with subpicture index i in the current picture shall be equal to a particular value in the range of IDR W RADL to CRA NUT, inclusive.
[0785] no_pic_partition_flag equal to 1 specifies that no picture partitioning is applied to each picture referring to the PPS. no_pic_partition_flag equal to 0 specifies that each picture referring to the PPS can be partitioned into multiple tiles or slices.
[0786] One requirement for bitstream conformance is that the value of no_pic_partition_flag shall be the same for all PPS referred to by coded pictures in a CLVS.
[0787] One requirement for bitstream conformance is that the value of no_pic_partition_flag shall not be equal to 1 when the value of sps_num_subpics_minus1 + 1 is greater than 1.
[0788] pps_log2_ctu_size_minus5 plus 5 specifies the luma coding tree block size of each CTU.
[0789] pps_log2_ctu_size_minus5 shall be equal to sps_log2_ctu_size_minus5.
[0790] 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.
[0791] 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.
[0792] tile_column_width_minus1[ i ] plus 1 specifies the width, in CTBs, of the i-th tile column, for i in the range of 0 to num_exp_tile_columns_minus1 - 1, inclusive.
[0793] tile_column_width_minus1[ num_exp_tile_columns_minus1 ] is used to derive the width of tile columns with index greater than or equal to num_exp_tile_columns_minus1, as specified in clause 6.5.1. The value of tile_column_width_minus1[ i ] shall be in the range of 0 to PicWidthInCtbsY - 1, inclusive. When not present, the value of tile_column_width_minus1[ 0 ] is inferred to be equal to PicWidthInCtbsY - 1.
[0794] tile_row_height_minusl [ i ] plus 1 specifies the height, in CTBs, of the i-th tile row for i in the range of 0 to num_exp_tile_rows_minusl - 1, inclusive. tile_row_height_minusl [ num_exp_tile_rows_minusl ] is used to derive the height of tile rows with index greater than or equal to num_exp_tile_rows_minusl as specified in clause 6.5.1. The value of tile_row_height_minusl [ i ] shall be in the range of 0 to PicHeightInCtbsY - 1, inclusive. When not present, the value of tile_row_height_minusl [ 0 ] is inferred to be equal to PicHeightInCtbsY - 1.
[0795] rect_slice_flag equal to 0 specifies that tiles within each slice follow a raster scan order and no slice information is signalled in the PPS. rect_slice_flag equal to 1 specifies that tiles within each slice cover a rectangular region of the picture and slice information is signalled 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.
[0796] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture can consist of one or more rectangular slices. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minusl is inferred to be equal to sps_num_subpics_minusl. When not present, the value of single_slice_per_subpic_flag is inferred to be equal to 0.
[0797] num_slices_in_pic_minusl plus 1 specifies the number of rectangular slices in each picture referring to the PPS. The value of num_slices_in_pic_minusl 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_minusl is inferred to be equal to 0.
[0798] 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 the picture referring to the PPS are specified in raster order according to the process defined in clause 6.5.1. tile_idx_delta_present_flag equal to 1 specifies that tile_idx_delta values can be present in the PPS and that all rectangular slices in the picture referring to the PPS are specified in raster order according to the process defined in clause 6.5.1. When not present, the value of tile_idx_delta_present_flag is inferred to be equal to 0.
[0799] slice_width_in_tiles_minus1[ i ] plus 1 specifies the width of the i-th rectangular slice in tile columns. The value of slice_width_in_tiles_minus1[ i ] shall be in the range of 0 to NumTileColumns - 1, inclusive.
[0800] When slice_width_in_tiles_minus1[ i ] is not present, the following applies:
[0801] – If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[ i ] is inferred to be equal to 0.
[0802] – Otherwise, the value of slice_width_in_tiles_minus1[ i ] is inferred according to the provisions of clause 6.5.1.
[0803] slice_height_in_tiles_minus1[ i ] plus 1 specifies the height of the i-th rectangular slice in tiles. The value of slice_height_in_tiles_minus1[ i ] shall be in the range of 0 to NumTileRows - 1, inclusive.
[0804] When slice_height_in_tiles_minus1[ i ] is not present, the following applies:
[0805] – If NumTileRows is equal to 1, or tile_idx_delta_present_flag is equal to 0 and tileldx % NumTileColumns is greater than 0, the value of slice_height_in_tiles_minus1[ i ] is inferred to be equal to 0.
[0806] - Otherwise (NumTileRows is not equal to 1 and tile_idx_delta_present_flag is equal to 1 or tileldx % NumTileColumns is equal to 0), the value of slice_height_in_tiles_minusl[ i ] is inferred to be equal to slice_height_in_tiles_minusl[ i - 1 ] when tile_idx_delta_present_flag is equal to 1 or tileldx % NumTileColumns is equal to 0.
[0807] num_exp_slices_in_tile[ i ] specifies the number of explicitly provided slice heights in the current slice containing multiple rectangular slices. The value of num_exp_slices_in_tile[ i ] shall be in the range of 0 to RowHeight[ tileY ] - 1, inclusive, where tileY is the slice row index of the current slice. 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.
[0808] exp_slice_height_in_ctus_minusl[ j ] plus 1 specifies the height of the j-th rectangular slice in the current slice in units of CTUs. The value of exp_slice_height_in_ctus_minusl[ j ] shall be in the range of 0 to RowHeight[ tileY ] - 1, inclusive, where tileY is the slice row index of the current slice.
[0809] When num_exp_slices_in_tile[ i ] is greater than 0, the variable NumSlicesInTile[ i ] and SliceHeightInCtusMinusl[ i + k ] for k in the range of 0 to NumSlicesInTile[ i ] - 1, inclusive, are derived as follows:
[0810]
[0811] tile_idx_delta[ i ] specifies the difference between the tile index of the first tile in the i-th rectangular slice and the tile index of the first tile in the (i+1)-th rectangular slice. The value of tile_idx_delta[ i ] shall be in the range of - NumTilesInPic + 1 to NumTilesInPic - 1, inclusive. When not present, the value of tile_idx_delta[ i ] is inferred to be equal to 0. When present, the value of tile_idx_delta[ i ] shall not be equal to 0.
[0812] loop_filter_across_tiles_enabled_flag equal to 1 specifies that loop filter operations can be performed across tile boundaries in pictures referring to the PPS. loop_filter_across_tiles_enabled_flag equal to 0 specifies that loop filter operations are not performed across tile boundaries in pictures referring to the PPS. The loop filter operations include the de-blocking filter, the sample adaptive offset filter, and the adaptive loop filter operation. When not present, the value of loop_filter_across_tiles_enabled_flag is inferred to be equal to 1.
[0813] loop_filter_across_slices_enabled_flag equal to 1 specifies that loop filter operations can be performed across slice boundaries in pictures referring to the PPS. loop_filter_across_slice_enabled_flag equal to 0 specifies that loop filter operations are not performed across slice boundaries in pictures referring to the PPS. The loop filter operations include the de-blocking filter, the sample adaptive offset filter, and the adaptive loop filter operation. When not present, the value of loop_filter_across_slices_enabled_flag is inferred to be equal to 0.
[0814] cabac_init_present_flag equal to 1 specifies that cabac_init_flag is present in the slice header referring to the PPS. cabac_init_present_flag equal to 0 specifies that cabac_init_flag is not present in the slice header referring to the PPS.
[0815] 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 when i is equal to 1 specifies the inferred value of NumRefIdxActive[ 1 ] for B slices (where num_ref_idx_active_override_flag is equal to 0). The value of num_ref_idx_default_active_minus1[ i ] shall be in the range of 0 to 14, inclusive.
[0816] 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 a picture referring to the PPS. rpl1_idx_present_flag equal to 1 specifies that ref_pic_list_sps_flag[ 1 ] and ref_pic_list_idx[ 1 ] can be present in the PH syntax structure or slice header of a picture referring to the PPS.
[0817] init_qp_minus26 plus 26 specifies the initial value of SliceQp Y for each slice of a picture referring to the PPS. When a non-zero value of ph_qp_delta is decoded, the initial value of SliceQp Y is modified at picture level, or when a non-zero value of slice_qp_delta is decoded, the initial value of SliceQp Y is modified at slice level. The value of init_qp_minus26 shall be in the range of -( 26 + QpBdOffset ) to + 37, inclusive.
[0818] cu qp delta enabled flag equal to 1 specifies that ph cu qp delta subdiv intra slice and ph cu qp delta subdiv inter slice syntax elements are present in the PH referring to the PPS, and cu qp delta abs can be present in the transform unit syntax. cu qp delta enabled flag equal to 0 specifies that ph cu qp delta subdiv intra slice and ph cu qp delta subdiv inter slice syntax elements are not present in the PH referring to the PPS, and cu qp delta abs is not present in the transform unit syntax.
[0819] 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.
[0820] pps cb qp offset and pps cr qp offset specify offsets for deriving the luma quantization parameter Qp' Cb and the chroma quantization parameters Qp' Cr Qp' Y . The values of pps cb qp offset and pps cr qp offset shall 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 shall ignore their values. When not present, the values of pps cb qp offset and pps cr qp offset are inferred to be equal to 0.
[0821] A value of 1 for `pps_joint_cbcr_qp_offset_present_flag` indicates that `pps_joint_cbcr_qp_offset_value` and `joint_cbcr_qp_offset_list[i]` exist in the PPS RBSP syntax structure. A value of 0 for `pps_joint_cbcr_qp_offset_present_flag` indicates that `pps_joint_cbcr_qp_offset_value` and `joint_cbcr_qp_offset_list[i]` do not exist in the PPS RBSP syntax structure. When `ChromaArrayType` equals 0 or `sps_joint_cbcr_enabled_flag` equals 0, the value of `pps_joint_cbcr_qp_offset_present_flag` should be 0. When it does not exist, the value of `pps_joint_cbcr_qp_offset_present_flag` is inferred to be 0.
[0822] The pps_joint_cbcr_qp_offset_value specification is used to derive Qp' CbCr Brightness quantization parameter Qp' Y The offset. The value of pps_joint_cbcr_qp_offset_value should be in the range of -12 to +12 (inclusive). When ChromaArrayType equals 0 or sps_joint_cbcr_enabled_flag equals 0, pps_joint_cbcr_qp_offset_value is not used during decoding, and the decoder should ignore its value. When pps_joint_cbcr_qp_offset_present_flag equals 0, pps_joint_cbcr_qp_offset_value does not exist and is inferred to be equal to 0.
[0823] 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.
[0824] 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 referring to the PPS and cu_chroma_qp_offset_flag can be present in the transform unit syntax and palette coding 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 referring to the PPS and cu_chroma_qp_offset_flag is not present in the transform unit syntax and palette coding syntax. When not present, the value of pps_cu_chroma_qp_offset_list_enabled_flag is inferred to be equal to 0.
[0825] 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.
[0826] cb_qp_offset_list[ i ], cr_qp_offset_list[ i ], and joint_cbcr_qp_offset_list[ i ] specify offsets used for derivation of Qp' Cb , Qp' Cr , and Qp' CbCr , respectively. 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.
[0827] pps_weighted_pred_flag equal to 0 specifies that weighted prediction is not applied to P slices referring to the PPS. pps_weighted_pred_flag equal to 1 specifies that weighted prediction is applied to P slices referring to the PPS. When sps_weighted_pred_flag is equal to 0, the value of pps_weighted_pred_flag shall be equal to 0.
[0828] pps_weighted_bipred_flag equal to 0 specifies that explicit weighted prediction is not applied to B slices referring to the PPS. pps_weighted_bipred_flag equal to 1 specifies that explicit weighted prediction is applied to B slices referring to the PPS. When sps_weighted_bipred_flag is equal to 0, the value of pps_weighted_bipred_flag shall be equal to 0.
[0829] deblocking_filter_control_present_flag equal to 1 specifies whether deblocking filter control syntax elements are present in the PPS. deblocking_filter_control_present_flag equal to 0 specifies that deblocking filter control syntax elements are not present in the PPS.
[0830] deblocking_filter_override_enabled_flag equal to 1 specifies that ph_deblocking_filter_override_flag is present in the PH referring to the PPS or slice_deblocking_filter_override_flag is present in the slice header referring to the PPS. deblocking_filter_override_enabled_flag equal to 0 specifies that ph_deblocking_filter_override_flag is not present in the PH referring to the PPS or slice_deblocking_filter_override_flag is not present in the slice header referring to the PPS. When not present, the value of deblocking_filter_override_enabled_flag is inferred to be equal to 0.
[0831] pps_deblocking_filter_disabled_flag equal to 1 specifies that the operation of the deblocking filter is not applied to slices referring to the PPS where slice_deblocking_filter_disabled_flag is not present.
[0832] pps_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter is not applied to slices referring to 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.
[0833] 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 slices referring to the PPS unless overridden by deblocking parameter offsets present in the picture header or slice header of slices referring to 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.
[0834] pps_cb_beta_offset_div2 and pps_cb_tc_offset_div2 specify the default deblocking parameter offsets for the beta and tC (divided by 2) of the Cb component of slices referring to the PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the picture header or slice header of slices referring to 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.
[0835] pps_cr_beta_offset_div2 and pps_cr_tc_offset_div2 specify the default deblocking parameter offsets for the beta and tC (divided by 2) of the Cr component of slices referring to the PPS, unless the default deblocking parameter offsets are overridden by the deblocking parameter offsets present in the picture header or slice header of slices referring to 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.
[0836] rpl_info_in_ph_flag equal to 1 specifies that reference picture list information is present in the PH syntax structure and is not present in the slice header referring to a PPS that does not contain the PH syntax structure. rpl_info_in_ph_flag equal to 0 specifies that reference picture list information is not present in the PH syntax structure and can be present in the slice header referring to a PPS that does not contain the PH syntax structure.
[0837] dbf_info_in_ph_flag equal to 1 specifies that deblocking filter information is present in the PH syntax structure and is not present in the slice header referring to a PPS that does not contain the PH syntax structure. dbf_info_in_ph_flag equal to 0 specifies that deblocking filter information is not present in the PH syntax structure and can be present in the slice header referring to a PPS that does not contain the PH syntax structure. When not present, the value of dbf_info_in_ph_flag is inferred to be equal to 0.
[0838] sao_info_in_ph_flag equal to 1 specifies that SAO filter information is present in the PH syntax structure and is not present in the slice header referring to a PPS that does not contain the PH syntax structure. sao_info_in_ph_flag equal to 0 specifies that SAO filter information is not present in the PH syntax structure and can be present in the slice header referring to a PPS that does not contain the PH syntax structure.
[0839] alf_info_in_ph_flag equal to 1 specifies that ALF information is present in the PH syntax structure and is not present in the slice header referring to a PPS that does not contain the PH syntax structure. alf_info_in_ph_flag equal to 0 specifies that ALF information is not present in the PH syntax structure and can be present in the slice header referring to a PPS that does not contain the PH syntax structure.
[0840] wp_info_in_ph_flag equal to 1 specifies that weighted prediction information can be present in the PH syntax structure and is not present in the slice header referring to a PPS that does not contain the 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 can be present in the slice header referring to a PPS that does not contain the PH syntax structure. When not present, the value of wp_info_in_ph_flag is inferred to be equal to 0.
[0841] qp_delta_info_in_ph_flag equal to 1 specifies that QP delta information is present in the PH syntax structure and is not present in the slice header referring to a PPS that does not contain the PH syntax structure. qp_delta_info_in_ph_flag equal to 0 specifies that QP delta information is not present in the PH syntax structure and can be present in the slice header referring to a PPS that does not contain the PH syntax structure.
[0842] pps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction. pps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is not applied. When the value of CtbSizeY / MinCbSizeY + 1 is greater than pic_width_in_luma_samples / MinCbSizeY - 1, the value of pps_ref_wraparound_enabled_flag shall be equal to 0. When sps_ref_wraparound_enabled_flag is equal to 0, the value of pps_ref_wraparound_enabled_flag shall be equal to 0.
[0843] pps_ref_wraparound_offset plus ( CtbSizeY / MinCbSizeY ) plus 2 specifies the offset for calculating the horizontal wrap-around 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.
[0844] The variable PpsRefWraparoundOffset is set equal to pps_ref_wraparound_offset plus ( CtbSizeY / MinCbSizeY ) plus 2.
[0845] picture_header_extension_present_flag equal to 0 specifies that no PH extension syntax elements are present in the PH referring to the PPS. picture_header_extension_present_flag equal to 1 specifies that PH extension syntax elements are present in the PH referring to the PPS. picture_header_extension_present_flag shall be equal to 0 in bitstreams conforming to this version of this Specification.
[0846] slice_header_extension_present_flag equal to 0 specifies that no slice header extension syntax elements are present in the slice header of the coded picture referring to the PPS. slice_header_extension_present_flag equal to 1 specifies that slice header extension syntax elements are present in the slice header of the coded picture referring to the PPS. slice_header_extension_present_flag shall be equal to 0 in bitstreams conforming to this version of this Specification.
[0847] 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 a pps_extension_data_flag syntax element is present in the PPS RBSP syntax structure.
[0848] pps_extension_data_flag can have any value. Its presence and value do not affect conformance of decoders to profiles specified in this version of the specification. Decoders conforming to this version of the specification shall ignore all pps_extension_data_flag syntax elements.
[0849] 7.4.3.5 Adaptation parameter set semantics
[0850] Each APS RBSP shall be available to the decoding process before it is referenced, included in at least one AU with Temporalld less than or equal to the Temporalld of the coded slice NAL unit referencing it, or provided through external means.
[0851] All APS NAL units with the same value of adaptation_parameter_set_id and the same value of aps_params_type within a PU, whether they are prefix or suffix APS NAL units, shall have the same content.
[0852] adaptation_parameter_set_id provides an identifier for the APS for referencing by other syntax elements.
[0853] 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.
[0854] 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.
[0855] Let apsLayerld be the value of nuh_layer_id of the particular APS NAL unit, and vclLayerld be the value of nuh_layer_id of the particular VCL NAL unit. The particular VCL NAL unit shall not reference the particular APS NAL unit unless apsLayerld is less than or equal to vclLayerld, and the layer with nuh_layer_id equal to apsLayerld is included in at least one OLS that includes the layer with nuh_layer_id equal to vclLayerld.
[0856] aps_params_type specifies the type of APS parameters carried in the APS, as specified in Table 6.
[0857] Table 6 - APS parameter type codes and APS parameter types
[0858]
[0859] All APS NAL units with a particular value of aps_params_type, regardless of nuh layer id value, share the same value space for adaptation_parameter_set_id. APS NAL units with different values of aps_params_type use separate value spaces for adaptation_parameter_set_id.
[0860] NOTE 1 - APS NAL units (with a particular value of adaptation_parameter_set_id and a particular value of aps_params_type) can be shared between pictures, and different slices within a picture can refer to different ALF APSs.
[0861] NOTE 2 - A suffix APS NAL unit associated with a particular VCL NAL unit (this VCL NAL unit precedes the suffix APS NAL unit in decoding order) is not used by the particular VCL NAL unit, but by VCL NAL units that follow the suffix APS NAL unit in decoding order.
[0862] 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.
[0863] aps_extension_data_flag can have any value. Its presence and value do not affect decoder conformance to a profile specified in this version of this Specification. Decoders conforming to this version of this Specification shall ignore all aps_extension_data_flag syntax elements.
[0864] 7.4.3.6 Picture header RBSP semantics
[0865] The PH RBSP contains the PH syntax structure, i.e., picture_header_structure ().
[0866] 7.4.3.7 Picture header structure semantics
[0867] The PH syntax structure contains general information for all slices of the coded picture associated with the PH syntax structure.
[0868] 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 can or can not be a GDR or IRAP picture.
[0869] 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.
[0870] ph_inter_slice_allowed_flag equal to 0 specifies that all coded slices of the picture have slice_type equal to 2. ph_inter_slice_allowed_flag equal to 1 specifies that there can or can not be one or more coded slices in the picture with slice_type equal to 0 or 1.
[0871] ph_intra_slice_allowed_flag equal to 0 specifies that all coded slices of the picture have slice_type equal to 0 or 1. ph_intra_slice_allowed_flag equal to 1 specifies that there can or can not be one or more coded slices in the picture with slice_type equal to 2. When not present, the value of ph_intra_slice_allowed_flag is inferred to be equal to 1.
[0872] NOTE 1 - For supporting sub-picture based bitstream merging without changing the bitstream of PH NAL units, encoders are expected to set the values of ph_inter_slice_allowed_flag and ph_intra_slice_allowed_flag equal to 1.
[0873] 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 can or can not be used as a reference picture.
[0874] ph_pic_parameter_set_id specifies the value of pps_pic_parameter_set_id of the PPS that is in use. The value of ph_pic_parameter_set_id shall be in the range of 0 to 63, inclusive.
[0875] One requirement for bitstream conformance is that the value of Temporalld of a PH shall be greater than or equal to the value of Temporalld of the PPS with pps_pic_parameter_set_id equal to ph_pic_parameter_set_id.
[0876] 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.
[0877] 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.
[0878] recovery_poc_cnt specifies the recovery point of the decoded picture in output order. If the current picture is a GDR picture associated with a PH and there exists a picture picA in the CLVS that follows the current GDR picture in decoding order with PicOrderCntVal equal to the PicOrderCntVal of the current GDR picture plus the value of recovery_poc_cnt, then picture picA is referred to as the recovery point picture. Otherwise, the first picture in output order with PicOrderCntVal greater than the PicOrderCntVal of the current picture plus the value of recovery_poc_cnt is referred to as 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.
[0879] When the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows:
[0880] RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (82)
[0881] NOTE 2 - When gdr_enabled_flag is equal to 1 and PicOrderCntVal of the current picture is greater than or equal to RpPicOrderCntVal of the associated GDR picture, the current and subsequent decoded pictures exactly match the corresponding pictures produced by the decoding process starting from the previous IRAP picture (if present) in output order, preceding the associated GDR picture in decoding order.
[0882] ph_extra_bit[ i ] can be equal to 1 or 0. Decoders conformant to this version of the specification shall ignore the value of ph_extra_bit[ i ]. The value does not affect the conformance of the decoder to the profile specified in this version of the specification.
[0883] 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. When vps_independent_layer_flag[ GeneralLayerldx[ nuh_layer_id ] ] is equal to 0 and there are pictures in the current AU in the reference layers of the current layer, the value of ph_poc_msb_present_flag shall be equal to 0.
[0884] 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.
[0885] ph_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled for all slices associated with the PH and can be applied to the Y, Cb or Cr colour components in the slices. ph_alf_enabled_flag equal to 0 specifies that the adaptive loop filter can be disabled for one, more or all slices associated with the PH. When not present, ph_alf_enabled_flag is inferred to be equal to 0.
[0886] ph_num_alf_aps_ids_luma specifies the number of ALF APS referred to by slices associated with the PH.
[0887] ph_alf_aps_id_luma[ i ] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma component of slices associated with the PH.
[0888] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_luma[ i ] shall be equal to 1.
[0889] The Temporalld 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 Temporalld of the picture associated with the PH.
[0890] 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.
[0891] ph_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referred to by the chroma components of the slices associated with the PH.
[0892] The value of alf_chroma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_alf_aps_id_chroma shall be equal to 1.
[0893] The Temporalld 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 Temporalld of the picture associated with the PH.
[0894] ph_cc_alf_cb_enabled_flag equal to 1 specifies that the cross-component filter for the Cb colour component is enabled for all slices associated with the PH and can be applied to the Cb colour component in the slices. ph_cc_alf_cb_enabled_flag equal to 0 specifies that the cross-component filter for the Cb colour component can 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.
[0895] ph_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cb colour component of the slices associated with the PH.
[0896] The value of alf_cc_cb_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cb_aps_id shall be equal to 1.
[0897] ph_cc_alf_cr_enabled_flag equal to 1 specifies that the cross-component filter for the Cr colour component is enabled for all slices associated with the PH and can be applied to the Cr colour component in the slices. ph_cc_alf_cr_enabled_flag equal to 0 specifies that the cross-component filter for the Cr colour component can 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.
[0898] ph_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id of the ALF APS referred to by the Cr colour component of the slices associated with the PH.
[0899] The value of alf_cc_cr_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to ph_cc_alf_cr_aps_id shall be equal to 1.
[0900] 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 can 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.
[0901] ph_lmcs_aps_id specifies the adaptation_parameter_set_id of the LMCS APS referred to by the slices associated with the PH. The Temporalld 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 Temporalld of the picture associated with the PH.
[0902] 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 can be disabled for one or more or all slices associated with the PH. When not present, ph_chroma_residual_scale_flag is inferred to be equal to 0.
[0903] 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.
[0904] ph_scaling_list_aps_id specifies the adaptation_parameter_set_id of the scaling list APS. The Temporalld 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 Temporalld of the picture associated with the PH.
[0905] ph_virtual_boundaries_present_flag equal to 1 specifies that information of virtual boundaries is signaled in the PH. ph_virtual_boundaries_present_flag equal to 0 specifies that information of virtual boundaries is not signaled in the PH. When one or more virtual boundaries are signaled in the PH, the in-picture virtual boundary disabling flag is applied across the virtual boundaries. The in-picture virtual boundary disabling flag applies to the following loop filter operations: the deblocking filter, the sample adaptive offset filter, and the adaptive loop filter. When not present, the value of ph_virtual_boundaries_present_flag is inferred to be equal to 0.
[0906] One requirement for bitstream conformance is that the value of ph_virtual_boundaries_present_flag shall be equal to 0 when subpic_info_present_flag is equal to 1.
[0907] The variable VirtualBoundariesPresentFlag is derived as follows:
[0908]
[0909] ph_num_ver_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_x[ i ] syntax elements present in the PH. When not present, ph_num_ver_virtual_boundaries is inferred to be equal to 0.
[0910] The variable NumVerVirtualBoundaries is derived as follows:
[0911]
[0912] 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.
[0913] The list VirtualBoundariesPosX[ i ] (for i in the range of 0 to NumVirtualBoundaries - 1, inclusive) is derived as follows to specify the position of the vertical virtual boundaries in units of luma samples:
[0914]
[0915] The distance between any two vertical virtual boundaries shall be greater than or equal to CtbSizeY luma samples.
[0916] ph num hor virtual boundaries specifies the number of ph virtual boundaries pos y[ i ] syntax elements present in a PH. When ph num hor virtual boundaries is not present, it is inferred to be equal to 0.
[0917] The parameter NumHorVirtualBoundaries is derived as follows:
[0918]
[0919] 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.
[0920] ph virtual boundaries pos y[ i ] specifies the position of the i-th horizontal virtual boundary in 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.
[0921] The list VirtualBoundariesPosY[ i ] (for i in the range of 0 to NumVirtualBoundaries - 1, inclusive) specifying the position of the horizontal virtual boundaries in luma samples is derived as follows:
[0922]
[0923] The distance between any two horizontal virtual boundaries shall be greater than or equal to CtbSizeY luma samples.
[0924] pic output flag affects the decoded picture output and removal process. When pic output flag is not present, it is inferred to be equal to 1.
[0925] partition_constraints_override_flag equal to 1 specifies that the partitioning constraints parameters are present in the PH. partition_constraints_override_flag equal to 0 specifies that the partitioning constraints parameters are not present in the PH. When not present, the value of partition_constraints_override_flag is inferred to be equal to 0.
[0926] ph_log2_diff_min_qt_min_cb_intra_slice_luma specifies the difference between the base-2 logarithm of the minimum size in luma samples of the luma leaf blocks resulting from the quad-tree partitioning of the CTU and the base-2 logarithm of the minimum coding block size in luma samples of the luma CUs 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.
[0927] ph_max_mtt_hierarchy_depth_intra_slice_luma specifies the maximum hierarchy depth of the coding units resulting from the multi-type tree partitioning of the quad-tree leaf in the slice with slice_type equal to 2 (I) associated with the PH. The value of ph_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to 2 * (CtbLog2SizeY - MinCbLog2SizeY), 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.
[0928] ph_log2_diff_max_bt_min_qt_intra_slice_luma specifies the difference, in base-2 logarithm, between the maximum size (width or height) in luma samples of a luma coding block that can use binary splitting and the minimum size (width or height) in luma samples of a luma leaf block resulting from the quad-tree splitting of CTUs 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_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.
[0929] ph_log2_diff_max_tt_min_qt_intra_slice_luma specifies the difference, in base-2 logarithm, between the maximum size (width or height) in luma samples of a luma coding block that can use ternary splitting and the minimum size (width or height) in luma samples of a luma leaf block resulting from the quad-tree splitting of CTUs in a slice with slice type equal to 2 (I) associated with the PH. The value of ph_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When not present, the value of ph_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to sps_log2_diff_max_tt_min_qt_intra_slice_luma.
[0930] ph_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the difference between the base-2 logarithm of the minimum size of luma samples of a chroma leaf block resulting from quad-tree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA and the base-2 logarithm of the minimum coding block size of luma samples of a chroma CU 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_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.
[0931] ph_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchy depth of chroma coding units resulting from multi-type tree partitioning of a chroma quad-tree leaf 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_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.
[0932] ph_log2_diff_max_bt_min_qt_intra_slice_chroma specifies the difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a chroma coding block that can use binary splitting and the minimum size (width or height) in luma samples 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.
[0933] ph_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a chroma coding block that can use ternary splitting and the minimum size (width or height) in luma samples 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.
[0934] ph_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value of coding units in an intra slice for 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.
[0935] When not present, the value of ph_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.
[0936] ph_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value of coding units in an intra slice for 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.
[0937] When not present, the value of ph_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.
[0938] ph_log2_diff_min_qt_min_cb_inter_slice specifies the difference between the base-2 logarithm of the minimum size in luma samples of a luma leaf block resulting from a quad-tree partitioning of a CTU and the base-2 logarithm of the minimum luma coding block size in luma samples of a luma CU in a slice with slice_type equal to 0 (B) or 1 (P) associated with 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.
[0939] ph max mtt hierarchy depth inter slice specifies the maximum hierarchy depth of coding units resulting from quad-tree leaf multi-type tree partitioning 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.
[0940] ph log2 diff max bt min qt inter slice specifies the difference, in base-2 logarithm, between the maximum dimension (width or height) in luma samples of luma coding blocks for which binary partitioning can be used and the minimum dimension (width or height) in luma samples of luma leaf blocks resulting from quad-tree partitioning of CTUs in slices with slice type equal to 0 (B) or 1 (P) associated with the PH. The value of ph log2 diff max bt min qt inter slice shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When not present, the value of ph log2 diff max bt min qt inter slice is inferred to be equal to sps log2 diff max bt min qt inter slice.
[0941] ph log2 diff max tt min qt inter slice specifies the difference, in base-2 logarithm, between the maximum dimension (width or height) in luma samples of luma coding blocks for which ternary partitioning can be used and the minimum dimension (width or height) in luma samples of luma leaf blocks resulting from quad-tree partitioning of CTUs in slices with slice type equal to 0 (B) or 1 (P) associated with the PH. The value of ph log2 diff max 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.
[0942] ph cu qp delta subdiv inter slice specifies the maximum cbSubdiv value of coding units in the inter slice that represents 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.
[0943] When not present, the value of ph cu qp delta subdiv inter slice is inferred to be equal to 0.
[0944] ph cu chroma qp offset subdiv inter slice specifies the maximum cbSubdiv value of coding units in the inter slice that represents 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.
[0945] When not present, the value of ph cu chroma qp offset subdiv inter slice is inferred to be equal to 0.
[0946] ph temporal mvp enabled flag specifies whether temporal motion vector prediction values can be used for inter prediction of slices associated with a PH. If ph temporal mvp enabled flag is equal to 0, the syntax elements of slices associated with the PH shall be constrained such that temporal motion vector prediction values are not used in the decoding of the slices. Otherwise (ph temporal mvp enabled flag is equal to 1), temporal motion vector prediction values 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 there is no reference picture in the DPB that has the same spatial resolution as the current picture.
[0947] The maximum number of sub-block based merging MVP candidates, MaxNumSubblockMergeCand, is derived as follows:
[0948]
[0949] The value of MaxNumSubblockMergeCand shall be in the range of 0 to 5, inclusive.
[0950] ph_collocated_from_l0_flag equal to 1 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 0. ph_collocated_from_l0_flag equal to 0 specifies that the collocated picture for temporal motion vector prediction is derived from reference picture list 1.
[0951] ph_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.
[0952] When ph_collocated_from_l0_flag is equal to 1, ph_collocated_ref_idx refers to an entry in reference picture list 0, and the value of ph_collocated_ref_idx shall be in the range of 0 to num_ref_entries[0][PicRplsIdx[0]] - 1, inclusive.
[0953] 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.
[0954] When not present, the value of ph_collocated_ref_idx is inferred to be equal to 0.
[0955] mvd_l1_zero_flag equal to 1 indicates that the mvd_coding(x0, y0, 1) syntax structure is not parsed, and MvdL1[x0][y0][compIdx] and MvdCpL1[x0][y0][cpIdx][compIdx] are set equal to 0 for compIdx = 0..1 and cpIdx = 0..2. mvd_l1_zero_flag equal to 0 indicates that the mvd_coding(x0, y0, 1) syntax structure is parsed.
[0956] ph_fpel_mmvd_enabled_flag equal to 1 specifies that the merge mode with motion vector difference uses integer sample precision in the slice associated with the PH. ph_fpel_mmvd_enabled_flag equal to 0 specifies that the merge mode with motion vector difference can use fractional sample precision in the slice associated with the PH. When not present, the value of ph_fpel_mmvd_enabled_flag is inferred to be 0.
[0957] ph_disable_bdof_flag equal to 1 specifies that inter bi-prediction based on bi-directional optical flow inter prediction is disabled in the slice associated with the PH. ph_disable_bdof_flag equal to 0 specifies that inter bi-prediction based on bi-directional optical flow inter prediction can or can not be enabled in the slice associated with the PH.
[0958] When ph_disable_bdof_flag is not present, the following applies:
[0959] - If sps_bdof_enabled_flag is equal to 1, the value of ph_disable_bdof_flag is inferred to be equal to 0.
[0960] - Otherwise (sps_bdof_enabled_flag is equal to 0), the value of ph_disable_bdof_flag is inferred to be equal to 1.
[0961] ph_disable_dmvr_flag equal to 1 specifies that inter bi-prediction based on decoder motion vector optimization is disabled in the slice associated with the PH. ph_disable_dmvr_flag equal to 0 specifies that inter bi-prediction based on decoder motion vector optimization can or can not be enabled in the slice associated with the PH.
[0962] When ph_disable_dmvr_flag is not present, the following applies:
[0963] - If sps_dmvr_enabled_flag is equal to 1, the value of ph_disable_dmvr_flag is inferred to be equal to 0.
[0964] - Otherwise (sps_dmvr_enabled_flag is equal to 0), the value of ph_disable_dmvr_flag is inferred to be equal to 1.
[0965] ph_disable_prof_flag equal to 1 specifies that the prediction refinement with optical flow is disabled in the slice associated with the PH. ph_disable_prof_flag equal to 0 specifies that the prediction refinement with optical flow can be enabled or not in the slice associated with the PH.
[0966] When ph_disable_prof_flag is not present, the following applies:
[0967] - If sps_affine_prof_enabled_flag is equal to 1, the value of ph_disable_prof_flag is inferred to be equal to 0.
[0968] - Otherwise (sps_affine_prof_enabled_flag is equal to 0), the value of ph_disable_prof_flag is inferred to be equal to 1.
[0969] ph_qp_delta specifies the initial value of the Qp Y to be used for the coded blocks in the picture until modified by the value of CuQpDeltaVal in the coding unit layer.
[0970] When qp_delta_info_in_ph_flag is equal to 1, the initial value of the Qp Y quantization parameter for all slices of the picture, SliceQp Y , is derived as follows:
[0971] SliceQp Y = 26 + init_qp_minus26 + ph_qp_delta (89)
[0972] The value of SliceQp Y shall be in the range of -QpBdOffset to +63, inclusive.
[0973] ph_joint_cbcr_sign_flag specifies whether the collocated residual samples of the two chroma components have inverted sign in a transform unit for which tu_joint_cbcr_residual_flag[ x0 ][ y0 ] is equal to 1. When tu_joint_cbcr_residual_flag[ x0 ][ y0 ] is equal to 1 for a transform unit, ph_joint_cbcr_sign_flag equal to 0 specifies that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the collocated 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 collocated Cb (or Cr) residual sample.
[0974] ph_sao_luma_enabled_flag equal to 1 specifies that SAO is enabled for the luma component in all slices associated with the PH; ph_sao_luma_enabled_flag equal to 0 specifies that SAO for the luma component can 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.
[0975] ph_sao_chroma_enabled_flag equal to 1 specifies that SAO is enabled for the chroma components in all slices associated with the PH; ph_sao_chroma_enabled_flag equal to 0 specifies that SAO for the chroma components can 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.
[0976] ph_dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled for the current picture. ph_dep_quant_enabled_flag equal to 1 specifies that dependent quantization is enabled for the current picture. When ph_dep_quant_enabled_flag is not present, it is inferred to be equal to 0.
[0977] 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.
[0978] ph_deblocking_filter_override_flag equal to 1 specifies that deblocking parameters in PH are present. ph_deblocking_filter_override_flag equal to 0 specifies that deblocking parameters in PH are not present. When not present, the value of ph_deblocking_filter_override_flag is inferred to be equal to 0.
[0979] ph_deblocking_filter_disabled_flag equal to 1 specifies that the operation of the deblocking filter is not applied to the slice associated with the PH. ph_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter is applied to the slice associated with the PH. When not present, ph_deblocking_filter_disabled_flag is inferred to be equal to pps_deblocking_filter_disabled_flag.
[0980] 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 of -12 to 12, inclusive. When not present, the values of ph_beta_offset_div2 and ph_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.
[0981] 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.
[0982] ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2 specify the deblocking parameter offsets for the beta and tC (divided by 2) of the Cr component that apply to slices 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.
[0983] ph_extension_length specifies the length, in bytes, of the PH extension data, not including the bits used to signal 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.
[0984] 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 a decoder to the profiles specified in this version of this Specification.
[0985] 7.4.8 Slice header semantics
[0986] 7.4.8.1 General slice header semantics
[0987] The variable CuQpDeltaVal is set equal to 0, which specifies the difference between the quantization parameter of the coding unit containing cu_qp_delta_abs and its prediction. The variable CuQpOffset Cb , CuQpOffset Cr , and CuQpOffset CbCr , which are used in determining the respective values of the quantization parameters Qp' Cb , Qp' Cr , and Qp' CbCr of the coding unit containing cu_chroma_qp_offset_flag, are all set equal to 0.
[0988] 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.
[0989] One requirement for bitstream conformance is that the value of picture_header_in_slice_header_flag in all VCL slices in a CLVS shall be the same.
[0990] When picture_header_in_slice_header_flag of a VCL slice is equal to 1, the requirement for bitstream conformance is that there shall be no VCL NAL units with nal_unit_type equal to PH NUT in the CLVS.
[0991] When picture_header_in_slice_header_flag is equal to 0, picture_header_in_slice_header_flag of all VCL slices in the current picture shall be equal to 0 and the current PU shall have a PH NAL unit.
[0992] slice_subpic_id specifies the subpicture ID of the subpicture containing the slice. If slice_subpic_id is present, the value of the derived 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.
[0993] 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.
[0994] If rect_slice_flag is equal to 0, the following applies:
[0995] - The slice address is the raster scan tile index.
[0996] - The length of slice_address is Ceil( Log2( NumTilesInPic ) ) bits.
[0997] - The value of slice_address shall be in the range of 0 to NumTilesInPic - 1, inclusive.
[0998] Otherwise (rect_slice_flag is equal to 1), the following applies:
[0999] - The slice address is the subpicture level slice index of the slice.
[1000] - The length of slice_address is Ceil( Log2( NumSlicesInSubpic[ CurrSubpicIdx ] ) ) bits.
[1001] - The value of slice_address shall be in the range of 0 to NumSlicesInSubpic[ CurrSubpicIdx ] - 1, inclusive.
[1002] The requirement of bitstream conformance is to apply the following constraint:
[1003] - If rect_slice_flag is equal to 0 or subpic_info_present_flag is equal to 0, the value of slice_address shall not be equal to the value of slice_address of any other coded slice NAL unit of the same coded picture.
[1004] - Otherwise, the pair of slice_subpic_id and slice_address values shall not be equal to the pair of slice_subpic_id and slice_address values of any other coded slice NAL unit of the same coded picture.
[1005] - The shape of the slices of a picture shall be such that each CTU, when decoded, shall have its entire left boundary and its entire top boundary consisting of picture boundaries or previously decoded CTU boundaries.
[1006] sh_extra_bit[ i ] can be equal to 1 or 0. Decoders conforming to this version of this Specification shall ignore the value of sh_extra_bit[ i ]. The value does not affect the conformance of a decoder to a profile specified in this version of this Specification.
[1007] num_tiles_in_slice_minus1 plus 1 (when present) specifies the number of tiles in the slice. The value of num_tiles_in_slice_minus1 shall be in the range of 0 to NumTilesInPic - 1, inclusive.
[1008] The variable NumCtusInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[ i ], which specifies the picture raster scan address of the i-th CTB within the slice, for i in the range of 0 to NumCtusInCurrSlice - 1, inclusive, are derived as follows:
[1009]
[1010] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBottomBoundaryPos are derived as follows:
[1011]
[1012] slice_type specifies the coding type of the slice according to Table 9.
[1013] Table 9 - Names associated with slice_type
[1014] slice_type name of slice_type 0 B (B slice) 1 P (P slice) 2 I (I slice)
[1015] When not present, the value of slice_type is inferred to be equal to 2.
[1016] 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.
[1017] The variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC are derived as follows: If slice_type equal to 2 (I),
[1018] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_luma
[1019] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_intra_slice_chroma
[1020] MaxBtSizeY = 1 « ( MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_intra_slice_luma )
[1021] MaxBtSizeC = 1 « ( MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_intra_slice_chroma )
[1022] MaxTtSizeY = 1 « ( MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma )
[1023] MaxTtSizeC = 1 « ( MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_intra_slice_chroma )
[1024] MaxMttDepthY = ph_max_mtt_hierarchy_depth_intra_slice_luma
[1025] MaxMttDepthC = ph_max_mtt_hierarchy_depth_intra_slice_chroma
[1026] MaxTtDepthY = ph_max_tt_hierarchy_depth_intra_slice_luma
[1027] MaxTtDepthC = ph_max_tt_hierarchy_depth_intra_slice_chroma
[1028] MaxTtDepth = Max( MaxTtDepthY, MaxTtDepthC )
[1029] MaxMttDepth = Max( MaxMttDepthY, MaxMttDepthC )
[1030] MaxTtSize = 1 « ( MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_intra_slice_luma )
[1031] MaxMttSize = 1 « ( MinQtLog2SizeY + ph_log2_diff_max_mtt_min_qt_intra_slice_luma )
[1032] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_intra_slice (127)
[1033] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_intra_slice (128)
[1034] Otherwise (slice_type equal to 0 (B) or 1 (P)),
[1035] MinQtLog2SizeY = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (129)
[1037] MinQtLog2SizeC = MinCbLog2SizeY + ph_log2_diff_min_qt_min_cb_inter_slice (130)
[1039] MaxBtSizeY = 1 <<
[1040] (MinQtLog2SizeY + ph_log2_diff_max_bt_min_qt_inter_slice) (131)
[1041] MaxBtSizeC = 1 <<
[1042] (MinQtLog2SizeC + ph_log2_diff_max_bt_min_qt_inter_slice) (132)
[1043] MaxTtSizeY = 1 <<
[1044] (MinQtLog2SizeY + ph_log2_diff_max_tt_min_qt_inter_slice) (133)
[1045] MaxTtSizeC = 1 <<
[1046] (MinQtLog2SizeC + ph_log2_diff_max_tt_min_qt_inter_slice) (134)
[1047] MaxMttDepthY = ph_max_mtt_hierarchy_depth_inter_slice (135)
[1048] MaxMttDepthC = ph_max_mtt_hierarchy_depth_inter_slice (136)
[1049] CuQpDeltaSubdiv = ph_cu_qp_delta_subdiv_inter_slice (137)
[1050] CuChromaQpOffsetSubdiv = ph_cu_chroma_qp_offset_subdiv_inter_slice (138)
[1051] MinQtSizeY = 1 « MinQtLog2SizeY (139)
[1053] MinQtSizeC = 1 « MinQtLog2SizeC (140)
[1055] MinBtSizeY = 1 « MinCbLog2SizeY (141)
[1057] MinTtSizeY = 1 « MinCbLog2SizeY (142)
[1059] 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.
[1060] slice_num_alf_aps_ids_luma specifies the number of ALF APSs referred to 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.
[1061] slice_alf_aps_id_luma[ i ] specifies the adaptation_parameter_set_id of the i-th ALF APS referred to by the luma component of the slice. The Temporalld 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 Temporalld 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 ].
[1062] The value of alf_luma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_luma[ i ] shall be equal to 1.
[1063] slice_alf_chroma_idc equal to 0 specifies that the adaptive loop filter is not applied to the Cb and Cr color components. slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb color component. slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr color component. slice_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to the Cb and Cr color components. When slice_alf_chroma_idc is not present, it is inferred to be equal to ph_alf_chroma_idc.
[1064] slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referred to by the chroma component of the slice. The Temporalld 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 Temporalld 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.
[1065] The value of alf_chroma_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_alf_aps_id_chroma shall be equal to 1.
[1066] slice_cc_alf_cb_enabled_flag equal to 0 specifies that the cross component filter is not applied to the Cb colour component. slice_cc_alf_cb_enabled_flag equal to 1 specifies that the cross component filter is enabled and can be applied to the Cb colour component. When slice_cc_alf_cb_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cb_enabled_flag.
[1067] slice_cc_alf_cb_aps_id specifies the adaptation_parameter_set_id referred to by the Cb colour component of the slice.
[1068] The Temporalld 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 Temporalld 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.
[1069] The value of alf_cc_cb_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cb_aps_id shall be equal to 1.
[1070] slice_cc_alf_cr_enabled_flag equal to 0 specifies that the cross-component filter is not applied to the Cr color component. 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 component. When slice_cc_alf_cr_enabled_flag is not present, it is inferred to be equal to ph_cc_alf_cr_enabled_flag.
[1071] slice_cc_alf_cr_aps_id specifies the adaptation_parameter_set_id referred to by the Cr color component of the slice. The Temporalld 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 Temporalld 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.
[1072] The value of alf_cc_cr_filter_signal_flag of the APS NAL unit with aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to slice_cc_alf_cr_aps_id shall be equal to 1.
[1073] When separate_colour_plane_flag is equal to 1, colour_plane_id specifies the colour plane associated with the current slice. The value of colour_plane_id shall be in the range of 0 to 2, inclusive. The colour_plane_id values 0, 1, and 2 correspond to the Y, Cb, and Cr planes, respectively. The value 3 of colour_plane_id is reserved for future use by ITU-T | ISO / IEC.
[1074] NOTE 1 - There is no correlation between the decoding processes of different colour planes of one picture.
[1075] num_ref_idx_active_override_flag equal to 1 specifies that there is a syntax element num_ref_idx_active_minus1[0] for P and B slices and there is a syntax element num_ref_idx_active_minus1[1] 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.
[1076] num_ref_idx_active_minus1[ i ] is used to derive the variable NumRefIdxActive[ i ] specified in equation 143. The value of num_ref_idx_active_minus1[ i ] shall be in the range of 0 to 14, inclusive.
[1077] For i equal to 0 or 1, when the current slice is a B slice, num_ref_idx_active_override_flag is equal to 1, and num_ref_idx_active_minus1[ i ] is not present, num_ref_idx_active_minus1[ i ] is inferred to be equal to 0.
[1078] When the current slice is a P slice, num_ref_idx_active_override_flag is equal to 1, and num_ref_idx_active_minus1[ 0 ] is not present, num_ref_idx_active_minus1[ 0 ] is inferred to be equal to 0.
[1079] The variable NumRefIdxActive[ i ] is derived as follows:
[1080]
[1081] 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.
[1082] When the current slice is a P slice, the value of NumRefIdxActive[ 0 ] shall be greater than 0.
[1083] When the current slice is a B slice, both NumRefIdxActive[ 0 ] and NumRefIdxActive[ 1 ] shall be greater than 0.
[1084] cabac_init_flag specifies the method used to determine the initialization table used in the context variable initialization process. When cabac_init_flag is not present, it is inferred to be equal to 0.
[1085] 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.
[1086] 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:
[1087] - 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.
[1088] - Otherwise (rpl_info_in_ph_flag is equal to 0 and if slice_type is equal to P, the value of slice_collocated_from_l0_flag is inferred to be equal to 1.
[1089] slice_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.
[1090] 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 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.
[1091] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to an entry in reference picture list 1, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1] - 1, inclusive.
[1092] When slice_collocated_ref_idx is not present, the following applies:
[1093] - 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.
[1094] - Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[1095] One requirement for bitstream conformance is that the picture referred to by slice_collocated_ref_idx shall be the same for all slices of a coded picture.
[1096] 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 referred to by slice collocated ref idx shall be equal to the values of pic width in luma samples and pic height in luma samples of the current picture, respectively, and RprConstraintsActive[ slice collocated from l0 flag? 0 : 1 ][ slice collocated ref idx ] shall be equal to 0.
[1097] slice qp delta specifies the Qp Y initial value of the quantization parameter for the coded blocks in the slice until modified by the value of CuQpDeltaVal in the coding unit layer.
[1098] When qp delta info in ph flag is equal to 0, the Qp Y initial value of the quantization parameter SliceQp Y is derived for the slice as follows:
[1099] SliceQp Y = 26 + init qp minus26 + slice qp delta (144)
[1100] The value of SliceQp Y shall be in the range of -QpBdOffset to +63, inclusive.
[1101] When any of the following conditions is true:
[1102] - 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.
[1103] - 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.
[1104] The following applies:
[1105] - the value of NumRefIdxActive[ 0 ] shall be less than or equal to the value of NumWeightsL0.
[1106] – For each reference image index RefPicList[0][i] (for i in the range from 0 to NumRefIdxActive[0]-1 (inclusive), the luminance weight, Cb weight and Cr weight applied to the reference image index are LumaWeightL0[i], ChromaWeightL0[0][i] and ChromaWeightL0[1][i], respectively.
[1107] When wp_info_in_ph_flag equals 1, pps_weighted_bipred_flag equals 1, and slice_type equals B, the following applies:
[1108] The value of –NumRefIdxActive[1] should be less than or equal to the value of NumWeightsL1.
[1109] – For each reference image index RefPicList[1][i] (for i in the range from 0 to NumRefIdxActive[1]-1 (inclusive), the luminance weight, Cb weight and Cr weight applied to the reference image index are LumaWeightL1[i], ChromaWeightL1[0][i] and ChromaWeightL1[1][i], respectively.
[1110] slice_cb_qp_offset specifies the offset when determining Qp' Cb The value of the quantization parameter should be added to the difference between pps_cb_qp_offset and the original value. The value of slice_cb_qp_offset should be in the range of -12 to +12 (inclusive). If slice_cb_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_cb_qp_offset + slice_cb_qp_offset should be in the range of -12 to +12 (inclusive).
[1111] slice_cr_qp_offset specifies the offset when determining Qp' Cr The value of the quantization parameter should be added to the difference between pps_cr_qp_offset and the original value. The value of slice_cr_qp_offset should be in the range of -12 to +12 (inclusive). If slice_cr_qp_offset does not exist, it is inferred to be equal to 0. The value of pps_cr_qp_offset + slice_cr_qp_offset should be in the range of -12 to +12 (inclusive).
[1112] slice_joint_cbcr_qp_offset specifies the offset when determining Qp' CbCrslice_joint_cbcr_qp_offset specifies the difference to be added to pps_joint_cbcr_qp_offset_value when the value of slice_joint_cbcr_qp_offset is 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.
[1113] cu_chroma_qp_offset_enabled_flag equal to 1 specifies that cu_chroma_qp_offset_flag can be present in the transform unit and palette coding 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 coding syntax. When not present, the value of cu_chroma_qp_offset_enabled_flag is inferred to be equal to 0.
[1114] slice_sao_luma_flag equal to 1 specifies that SAO is enabled for the luma component in the current slice; slice_sao_luma_flag equal to 0 specifies that SAO is disabled for the luma component in the current slice. When slice_sao_luma_flag is not present, it is inferred to be equal to ph_sao_luma_enabled_flag.
[1115] slice_sao_chroma_flag equal to 1 specifies that SAO is enabled for the chroma component in the current slice; slice_sao_chroma_flag equal to 0 specifies that SAO is disabled for the chroma component in the current slice. When slice_sao_chroma_flag is not present, it is inferred to be equal to ph_sao_chroma_enabled_flag.
[1116] slice_deblocking_filter_override_flag equal to 1 specifies that the deblocking parameters are present in the slice header. slice_deblocking_filter_override_flag equal to 0 specifies that the deblocking parameters are not present in the slice header. When not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to ph_deblocking_filter_override_flag.
[1117] slice_deblocking_filter_disabled_flag equal to 1 specifies that no deblocking filter is applied for the current slice. slice_deblocking_filter_disabled_flag equal to 0 specifies that a deblocking filter is applied for the current slice. When slice_deblocking_filter_disabled_flag is not present, it is inferred to be equal to ph_deblocking_filter_disabled_flag.
[1118] slice_beta_offset_div2 and slice_tc_offset_div2 specify the deblocking parameter offsets for the 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 of -12 to 12, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to ph_beta_offset_div2 and ph_tc_offset_div2, respectively.
[1119] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for the 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 of -12 to 12, inclusive. When not present, the values of slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 are inferred to be equal to ph_cb_beta_offset_div2 and ph_cb_tc_offset_div2, respectively.
[1120] slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2 specify the deblocking parameter offsets for the Cr component of the current slice, beta and tC (divided by 2), respectively. The values of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 shall both be in the range of -12 to 12, inclusive. When not present, the values of slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 are inferred to be equal to ph_cr_beta_offset_div2 and ph_cr_tc_offset_div2, respectively.
[1121] slice_ts_residual_coding_disabled_flag specifies whether the residual_coding( ) syntax structure is used to parse the residual samples of 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 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.
[1122] 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.
[1123] 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 referred 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.
[1124] The variable NumEntryPoints, which specifies the number of entry points in the current slice, is derived as follows:
[1125]
[1126] offset len minusl plus 1 specifies the length (in bits) of the entry point offset minusl [ i ] syntax element. The value of offset len minusl shall be in the range of 0 to 31, inclusive.
[1127] entry point offset minusl [ i ] plus 1 specifies the i-th entry point offset (in bytes) and is represented by offset len minusl plus 1 bits. The slice data following the slice header consists of NumEntryPoints + 1 subsets, with subset index values ranging from 0 to NumEntryPoints, inclusive. The first byte of the slice data is considered byte 0. When present, the emulation prevention bytes that occur in the slice data portion of the coded slice NAL unit are counted as part of the slice data for the purpose of subset identification. Subset 0 consists of bytes 0 to entry point offset minusl [ 0 ] (inclusive) of the coded slice data, subset k consists of bytes firstByte [ k ] to lastByte [ k ] (inclusive) of the coded slice data (where k is in the range of 1 to NumEntryPoints - 1, inclusive), where firstByte [ k ] and lastByte [ k ] are defined as:
[1128]
[1129] lastByte [ k ] = firstByte [ k ] + entry point offset minusl [ k ] (147)
[1130] The last subset (subset index equal to NumEntryPoints) consists of the remaining bytes of the coded slice data.
[1131] When sps entropy coding sync enabled flag is equal to 0 and the slice contains one or more complete tiles, each subset shall consist of all coded bits of all CTUs in the slice that are located within the same tile, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the number of tiles in the slice.
[1132] When sps_entropy_coding_sync_enabled_flag is equal to 0 and the slice contains a subset of CTU rows from a single tile, NumEntryPoints shall be 0 and the number of subsets shall be 1. The subset shall consist of all coding bits of all CTUs in the slice.
[1133] 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 coding bits of all CTUs in a CTU row in the tile, and the number of subsets (i.e., the value of NumEntryPoints + 1) shall be equal to the total number of tile-specific CTU rows in the slice.
[1134] slice_header_extension_length specifies the length of the slice header extension data in bytes, excluding the bits used to signal slice_header_extension_length itself. The value of slice_header_extension_length shall be in the range of 0 to 256, inclusive. When not present, the value of slice_header_extension_length is inferred to be equal to 0.
[1135] slice_header_extension_data_byte[ i ] can have any value. Decoders conforming to this version of this Specification shall ignore the value of all slice_header_extension_data_byte[ i ] syntax elements. The value does not affect the conformance of the decoder to the profile specified in this version of this Specification.
[1136] Example technical problems solved by the disclosed technical solutions
[1137] There are several potential issues in the current design of HLS, which are described as follows.
[1138] (1) The control of the temporal prediction flag in SPS, picture header and slice header causes problems for P slices and / or B slices.
[1139] a) The picture header and slice level control of the temporal prediction flag can cause un-initialized collocated pictures and / or collocated reference indices for P slices.
[1140] b) The slice_collocated_ref_idx referring to entries in reference picture list 1 can be used for P slices.
[1141] c) For P slices, the value of slice_collocated_ref_idx referring to entries in reference picture list 0 can be out of the range of o to NumRefIdxActive[0] - 1.
[1142] 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 referred to, but without high-level control such as whether temporal prediction is allowed or not, which can not be clear enough.
[1143] (2) Considering the interaction of related syntax elements, the semantics of subpicture-related syntax elements can need to be modified for more accurate interpretation.
[1144] a) When there is only one subpicture, sps_independent_subpics_flag can be equal to 0.
[1145] b) When there is only one slice in a subpicture, the value of slice_width_in_tiles_minus1 still needs to be calculated instead of inferred.
[1146] c) When there is only one slice and / or one tile in a picture, single_slice_per_subpic_flag can be equal to 0.
[1147] d) When single_slice_per_subpic_flag is not present, for example when no_pic_partition_flag is equal to 1, then single_slice_per_subpic_flag is inferred to be 0. One requirement for bitstream conformance is that the value of no_pic_partition_flag shall not be equal to 1 when the value of sps_num_subpics_minus1 + 1 is greater than 1. Therefore there is only one subpicture in a picture. And since there is only one slice in a subpicture, in this case single_slice_per_subpic_flag shall be equal to 1.
[1148] (3) During the subpicture sub-bitstream extraction process, some syntax elements are not set correctly.
[1149] a) Syntax elements of a subpicture 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 can be undesirable.
[1150] b) Subpicture sub-bitstream extraction process depends on subpicture ID, which can change on a different picture basis. This will lead to different subpicture indices being extracted from different pictures, which can be undesirable.
[1151] c) sps_num_subpics_minus1 and pps_num_subpics_minus1 of the output stream of the subpicture sub-bitstream extraction process are written to 1, which indicates that two subpictures should be extracted at a time, which can be undesirable.
[1152] (4) Syntax elements on reference picture lists can appear in IDR pictures without any usage.
[1153] (5) For luma and chroma of prediction tree, the partition information is considered to be the same, which is incorrect.
[1154] (6) Syntax elements of coding tools are not limited or constrained by the corresponding general constraint flags, and the values of some general constraint flags are not limited by the related constraints, which can cause some conflicts.
[1155] 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.
[1156] b) scaling_window_explicit_signalling_flag is not constrained by no_res_change_in_clvs_constraint_flag.
[1157] c) scaling_window_explicit_signalling_flag is not constrained by res_change_in_clvs_allowed_flag.
[1158] d) The value of sps_num_subpics_minus1 is not constrained by one_subpic_per_pic_constraint_flag.
[1159] 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.
[1160] 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.
[1161] g) one_subpic_per_pic_constraint_flag is not constrained by one_slice_per_pic_constraint_flag.
[1162] h) no_bdpcm_constraint_flag is not constrained by no_transform_skip_constraint_flag.
[1163] i) num_slices_in_pic_minus1 is not constrained by one_slice_per_pic_constraint_flag.
[1164] j) num_tiles_in_slice_minus1 is not constrained by one_slice_per_pic_constraint_flag.
[1165] Example techniques and embodiments
[1166] The following detailed inventions should be considered as examples to explain the general concepts. These inventions should not be interpreted narrowly. Furthermore, these inventions can be combined in any way. In the following description, parts that are deleted are marked between [ ] and parts that are added are marked as underlined bold italic.
[1167] Temporal prediction related HLS
[1168] 1. There can be two levels of control for TMVP, and one is picture level and the other is slice / tile / subpicture / tile level.
[1169] a) In one example, a first syntax element indicating whether there is at least one inter coded slice referring to the flag can be signaled in picture level to enable TMVP (e.g. represented by ph_temporal_mvp_allowed_flag).
[1170] i. In one example, it can be signaled in picture header or PPS.
[1171] ii. In one example, it can be conditionally signaled, e.g., depending on TMVP being enabled in SPS and / or the current picture containing at least one inter coded slice present in the current picture header and / or RPL.
[1172] b) In one example, a second syntax element (e.g., represented by sh_temporal_mvp_allowed_flag) indicating whether the current slice enables TMVP can be signaled at slice level, which can depend on the first syntax element.
[1173] i. In one example, sh_temporal_mvp_allowed_flag can be signaled only when ph_temporal_mvp_allowed_flag is equal to 1. Otherwise, it is inferred to be 0.
[1174] ii. In one example, sh_temporal_mvp_allowed_flag can be signaled only when ph_temporal_mvp_allowed_flag is equal to 0. Otherwise, it is inferred to be 1.
[1175] c) In one example, a second syntax element (e.g., represented by sh_temporal_mvp_allowed_flag) indicating whether the current slice enables TMVP can be signaled at slice level, which can depend on RPL present in the current slice header and / or TMVP being enabled in SPS and / or the current slice being an inter coded slice.
[1176] d) In one example, a third syntax element (e.g., tmvp_info_in_ph_flag) is signaled to indicate whether TMVP information is signaled in picture header or slice header.
[1177] i. TMVP information can include information of whether TMVP is enabled.
[1178] ii. TMVP information can include information of collocated reference picture.
[1179] iii. In one example, tmvp_info_in_ph_flag is signaled only when TMVP is enabled at sequence level. (e.g., sps_temporal_mvp_enabled_flag is equal to 1).
[1180] e) In one example, the second syntax element is inferred to be equal to a default value (e.g., the value of the first syntax element) when not present. For example, sh_temporal_mvp_allowed_flag is inferred to be equal to ph_temporal_mvp_allowed_flag when not present.
[1181] 2. Whether and / or how to inherit collocated picture information (e.g., collocated picture from list 0; reference picture index of collocated picture) 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 equal to 1).
[1182] 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_l0_flag is set equal to 1 regardless of the value of ph_collocated_from_l0_flag.
[1183] i. Alternatively, when slice_type is equal to P, slice_collocated_from_l0_flag can be inferred to be equal to 1 regardless of other conditions.
[1184] 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.
[1185] c) In one example, when slice_type is equal to P, slice_collocated_from_l0_flag can be inferred to be 1 when TMVP is enabled.
[1186] 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.
[1187] e) In one example, RprConstraintsActive[0][slice_collocated_ref_idx] can be required to be equal to 0 for P slices when slice_type is equal to P and TMVP is enabled.
[1188] f) In one example, the following example modification can be introduced.
[1189] slice_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.
[1190] When slice_type is equal to P or slice_type is equal to B and slice_ collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to the entry in reference picture list 0, and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0] - 1, inclusive.
[1191] 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.
[1192] When slice_collocated_ref_idx is not present, the following applies:
[1193] - 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.
[1194] - Otherwise (rpl_info_in_ph_flag is equal to 0), the value of slice_collocated_ref_idx is inferred to be equal to 0.
[1195] One requirement for bitstream conformance is that the picture referred to by slice_collocated_ref_idx shall be the same for all slices of a coded picture.
[1196] 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 referred to by slice collocated ref idx shall be equal to the values of pic width in luma samples and pic height in luma samples of the current picture, respectively, and RprConstraintsActive[ slice collocated from lO flag? 0 : 1 ][ slice collocated ref idx ] shall be equal to 0.
[1197] g) In one example, when ph collocated from lO flag is equal to 0, it can be required that the picture does not contain P slices.
[1198] i. In one example, the following example modification can be introduced.
[1199] slice type specifies the coding type of the slice according to table 9.
[1200] Table 9 - Name association for slice type
[1201] slice_type name of slice_type 0 B (B slice) 1 P (P slice) 2 I (I slice)
[1202] When not present, the value of slice type is inferred to be equal to 2.
[1203] 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[ GeneralLayerldx[ nuh layer id ] ] is equal to 1, slice type shall be equal to 2.
[1204]
[1205] ii. Alternatively, whether to signal the slice type can depend on whether the collocated picture is from list 0.
[1206] 1. In one example, the signaling of the slice type for a slice referring to the current picture header can be skipped if all of the following conditions are true.
[1207] - rpl info in ph flag is equal to 1
[1208] - ph_temporal_mvp_enabled_flag is equal to 1
[1209] - ph_intra_slice_allowed_flag is equal to 0
[1210] - ph_collocated_from_l0_flag is equal to 0
[1211] Alternatively, in addition, the slice type can be inferred to be a B slice.
[1212] 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_l0_flag for a P slice can always be inferred to be equal to 1. The following example modification can be introduced.
[1213] slice_collocated_from_l0_flag equal to 1 specifies that the collocated picture 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 for temporal motion vector prediction is derived from reference picture list 1.
[1214] [[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:
[1215] - 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.
[1216] - 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.]]
[1217]
[1218] i) In one example, when slice type is equal to P and slice collocated from lO flag is equal to 0, slice collocated ref idx can be considered to refer to a non-active entry in reference picture list 1, and it can be required that the reference picture referred to by that non-active entry in reference picture list 1 should also be referred to by an active entry in reference picture list 0. The following example modification can be introduced.
[1219] slice collocated ref idx specifies the reference index of the collocated picture for temporal motion vector prediction.
[1220] When slice type is equal to P or slice type is equal to B and collocated from lO 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.
[1221] When slice type is equal to B and slice collocated from lO flag is equal to 0, slice collocated ref idx refers to an entry in reference picture list 1, and the value of slice collocated ref idx shall be in the range of 0 to NumRefIdxActive[1] - 1, inclusive.
[1222]
[1223] When slice collocated ref idx is not present, the following applies:
[1224] - 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.
[1225] - Otherwise (rpl info in ph flag is equal to 0), the value of slice collocated ref idx is inferred to be equal to 0.
[1226] One requirement for bitstream conformance is that the picture referred to by slice collocated ref idx shall be the same for all slices of a coded picture.
[1227] 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 referred to by slice collocated ref idx shall be equal to the values of pic width in luma samples and pic height in luma samples of the current picture, respectively, and RprConstraintsActive[ slice collocated from lO flag? 0 : 1 ][ slice collocated ref idx ] shall be equal to 0.
[1228] j) Alternatively, B and P slices referring to the same picture header can use different collocated pictures.
[1229] i. In one example, the reference picture index of the collocated picture can be further signaled in the slice header even if the RPL is signaled in the picture header.
[1230] 1. In one example, when the current slice is a P slice, the RPL signal is signaled in the picture header, the temporal motion vector prediction is enabled (e.g., ph temporal mvp enabled flag is true), and ph collocated from lO flag is equal to 0, the reference picture index of the collocated picture can be further signaled.
[1231] a) Alternatively, in addition, it also points to reference picture list 0.
[1232] ii. In one example, two collocated reference picture indices can be signaled or derived, and one of them is used for the B slice and the other is used for the P slice referring to the same picture header.
[1233] 1. In one example, the two indices can be signaled only when ph collocated from lO flag is equal to 0.
[1234] k) In one example, an indication of whether there is a B slice and a P slice referring to the same picture header can be signaled.
[1235] i. Alternatively, an indication of the type of slice referring to the same picture header can be signaled in the picture header.
[1236] ii. Alternatively, an indication of whether there is only a B slice (excluding P slice) referring to the same picture header can be signaled.
[1237] iii. Alternatively, an indication whether only P slices referring to the same picture header exist (excluding B slices) can be signaled.
[1238] iv. Alternatively, an indication whether only B slices and I slices referring to the same picture header exist can be signaled.
[1239] v. Alternatively, an indication whether only P slices and I slices referring to the same picture header exist can be signaled.
[1240] vi. Alternatively, the indication of the slice type referring to the same picture header can be signaled in the picture header only when RPL is signaled in the picture header.
[1241] vii. Alternatively, RPL is signaled in the picture header only when the slice type referring to the same picture header is signaled in the picture header.
[1242] l) Alternatively, when slice type is equal to P and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx can be modified before being used, e.g. mapped to an index in the range of 0 to NumRefIdxActive[0] - 1, inclusive.
[1243] 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.
[1244] 1. In one example, the variable default_col_ref_idx is set to 0.
[1245] 2. In one example, the variable can be signaled.
[1246] m) In a conforming bitstream, it can not be allowed that two slices associated with one picture header, but one of them is a P slice and the other is a B slice.
[1247] n) In a conformance bitstream, it can not be allowed to have two slices associated with one picture header that signals RPL, but one of them is a P slice and the other is a B slice.
[1248] o) In a conformance bitstream, it can not be allowed to have a slice associated with one picture header that signals RPL using two reference picture lists, but the slice is a P slice.
[1249] HLS related to subpicture
[1250] 3. The number of sub-pictures in each picture in a CLVS (e.g., sps num subpics minusl and / or pps num subpics minusl) can be regulated by a general constraint flag (e.g., one subpic per pic constraint flag).
[1251] a) In one example, when the general constraint flag (e.g., one subpic per pic constraint flag) is equal to 1, it can be required that the value of sps num subpics minusl and / or pps num subpics minusl is equal to 0.
[1252] b) In one example, the following example modification can be introduced.
[1253] sps num subpics minusl plus 1 specifies the number of sub-pictures in each picture in a CLVS. The value of sps num subpics minusl 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 minusl is inferred to be equal to 0.
[1254] 4. Whether a syntax element (e.g., sps independent subpics flag) that specifies "no intra prediction, no inter prediction, and no loop filtering operations performed across any sub-picture boundaries in a CLVS" is signaled can depend on the number of sub-pictures in each picture in a CLVS (e.g., sps num subpics minusl).
[1255] a) In one example, when there is only one subpicture in each picture in a CLVS, the syntax element sps_independent_subpics_flag can not be signaled and inferred to be equal to 1.
[1256] b) In one example, the following example modification can be introduced.
[1257] sps_independent_subpics_flag equal to 1 specifies that intra prediction, inter prediction and loop filtering operations cannot be performed across any subpicture boundaries in a CLVS. sps_independent_subpics_flag equal to 0 specifies that inter prediction or loop filtering operations can be allowed across subpicture boundaries in a CLVS. When not present, the value of sps_independent_subpics_flag is inferred to be equal to [[0]] .
[1258] c) In one example, the following example modification can be introduced.
[1259] sps_independent_subpics_flag equal to 1 specifies that intra prediction, inter prediction and loop filtering operations cannot be performed across any subpicture boundaries in a CLVS. sps_independent_subpics_flag equal to 0 specifies that inter prediction or loop filtering operations can be allowed across subpicture boundaries in a CLVS. When not present, the value of sps_independent_subpics_flag is inferred to be equal to 0.
[1260] 5. The value of subpic_treated_as_pic_flag can depend on whether there is only one subpicture in a picture.
[1261] a) In one example, if one_subpic_per_pic_constraint_flag is equal to 1, the value of subpic_treated_as_pic_flag can need to be equal to 1, or inferred to be equal to 1.
[1262] b) In one example, if sps_num_subpics_minus1 is equal to 0, the value of subpic_treated_as_pic_flag can need to be equal to 1, or inferred to be equal to 1.
[1263] c) In one example, if pps num subpics minusl is equal to 0, the value of subpic treated as pic flag can be required to be equal to 1.
[1264] 6. The value of loop filter across subpic enabled flag can depend on whether there is only one subpicture in the picture.
[1265] a) In one example, if one subpic per pic constraint flag is equal to 1, the value of loop filter across subpic enabled flag can be required to be equal to 0, or inferred to be equal to 0.
[1266] b) In one example, if sps num subpics minusl is equal to 0, the value of loop filter across subpic enabled flag can be required to be equal to 0, or inferred to be equal to 0.
[1267] c) In one example, if pps num subpics minusl is equal to 0, the value of loop filter across subpic enabled flag can be required to be equal to 0.
[1268] 7. Whether the width of the i-th rectangular slice in tile columns is specified (e.g., slice width in tiles minusl) can depend on single slice per subpic flag.
[1269] a) In one example, when slice width in tiles minusl is not present but single slice per subpic flag is equal to 1, then the value of slice width in tiles minusl can not be signaled.
[1270] b) In one example, the following example modification can be introduced.
[1271] slice width in tiles minusl [ i ] plus 1 specifies the width of the i-th rectangular slice in tile columns. The value of slice width in tiles minusl [ i ] shall be in the range of 0 to NumTileColumns - 1, inclusive.
[1272] When slice_width_in_tiles_minus1[ i ] is not present The following applies:
[1273] – If NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[ i ] is inferred to be equal to 0.
[1274] – Otherwise, the value of slice_width_in_tiles_minus1[ i ] is inferred according to the provisions of clause 6.5.1.
[1275] 8. Whether each subpicture consists of one and only one rectangular slice (e.g., single_slice_per_subpic_flag) can be conditioned by a general constraint flag (e.g., one_slice_per_pic_constraint_flag).
[1276] a) In another example, when the syntax element single_slice_per_subpic_flag is not present, the value of single_slice_per_subpic_flag can be inferred to be equal to 1.
[1277] b) In another example, when the syntax element single_slice_per_subpic_flag is not present, the value of single_slice_per_subpic_flag can be inferred according to whether the current picture is partitioned or not (e.g., no_pic_partition_flag).
[1278] c) In one example, the following example modification can be introduced.
[1279] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture can 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.]]
[1280] d) In one example, the following example modification can be introduced.
[1281] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture can 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.
[1282] e) In one example, the following example modification can be introduced.
[1283] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture can 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.
[1284] f) In one example, the following example modification can be introduced.
[1285] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture can 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.
[1286] g) In one example, the following example modification can be introduced.
[1287] single_slice_per_subpic_flag equal to 1 specifies that each subpicture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each subpicture can 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]]
[1288] 9. In one example, regarding derivation of outputting sub-bitstreams during sub-picture sub-bitstream extraction, extracted sub-pictures across different pictures in a CLVS can need to have the same sub-picture index.
[1289] a) For example, the target sub-picture ID that can need to extract a sub-picture can refer to the same sub-picture index across different pictures in a CLVS.
[1290] b) For example, if subpic_id_mapping_explicitly_signalled_flag is equal to 1, and when processing sub-picture sub-bitstream extraction, it can be needed that sub-picture ID mapping is not signalled in PPS (e.g., subpic_id_mapping_in_pps_flag is equal to 0).
[1291] i. In one example, if subpic_id_mapping_explicitly_signalled_flag is equal to 1, and when processing sub-picture sub-bitstream extraction, it can be needed that sub-picture ID mapping is signalled in SPS (e.g., subpic_id_mapping_in_sps_flag is equal to 1).
[1292] c) For example, which sub-picture to extract during sub-picture sub-bitstream extraction can depend on the sub-picture index.
[1293] d) For example, which syntax elements to overwrite and / or remove during sub-picture sub-bitstream extraction can depend on the sub-picture index.
[1294] e) In one example, the following example modification can be introduced.
[1295] C.7 Sub-picture sub-bitstream extraction process
[1296] The inputs to this process are a bitstream, inBitstream, a target OLS index, targetOlsIdx, a target highest Temporalld value, tldTarget, and a target subpicture [[ID]] for each layer, subpicIdxTarget[ ] An array of values.
[1297] The output of this process is a sub-bitstream, outBitstream.
[1298] The requirement of bitstream conformance for the input bitstream is that any output sub-bitstream that meets all of the following conditions shall be a conforming bitstream:
[1299] - The output sub-bitstream is the output of the process specified in this clause with bitstream targetOlsIdx equal to the index of the OLS list specified in the VPS and subpicIdxTarget[ ] equal to the subpicture IDs present in the OLS as input.
[1300] - The output sub-bitstream contains at least one VCL NAL unit with nuh layer id equal to each of the nuh layer id values in LayerldlnOls[ targetOlsld ].
[1301] - The output sub-bitstream contains at least one VCL NAL unit with Temporalld equal to tldTarget.
[1302] NOTE - A conforming bitstream contains one or more coded slice NAL units with Temporalld equal to 0, but is not required to contain coded slice NAL units with nuh layer id equal to 0.
[1303] - The output sub-bitstream contains at least one VCL NAL unit with nuh layer id equal to LayerldlnOls[ targetOlsld ][ i ] and with slice subpic id equal to the value in subpicIdxTarget[ i ] for each i in the range of 0 to NumLayerslnOls[ targetOlsld ] - 1.
[1304] The output sub-bitstream, outBitstream, is derived as follows:
[1305] - The sub-bitstream extraction process specified in Annex C.6 is invoked with inBitstream, targetOlsIdx, and tldTarget as inputs and the output of this process is assigned to outBitstream.
[1306] – If some external means not specified in this Specification are available to provide a replacement parameter set for the sub-bitstream outBitstream, all parameter sets are replaced with the replacement parameter set.
[1307] – Otherwise, when subpicture level information SEI messages are present in inBitstream, the following applies:
[1308] – For all entries of subpicture ID equal to subpicIdxTarget[ ], all general_level_idc values in the entry number ols_ptl_idx[ targetOlsIdx ] of the list of profile_tier_level( ) syntax structures in the referenced VPS NAL unit are overwritten to be equal to SubpicSetLevelIdc derived in D.3.8.
[1309] For the subpicture set consisting of subpictures with subpicture ID equal to all entries of subpicIdxTarget[ ] and j in the range of 0 to hrd_cpb_cnt_minus1, the values of cpb_size_value_minus1[ tIdTarget ][ j ] and bit_rate_value_minus1[ tIdTarget ][ j ] for the j-th CPB in the entry number ols_hrd_idx[ targetOlsIdx ] of the list of ols_hrd_parameters( ) syntax structures in the referenced VPS NAL unit are overwritten to correspond to SubpicSetCpbSizeVcl[ 0 ], SubpicSetCpbSizeNal[ 0 ], SubpicSetBitrateVcl[ 0 ], and SubpicSetBitrateNal[ 0 ] derived in D.3.8.
[1310] For the i-th layer with i in the range of 0 to NumLayersInOls[ targetOlsIdx ] - 1, the following applies.
[1311] – subpicIdx is set to be equal to the value of subpicIdxTarget[ i ].
[1312] – For the subpicture [[ID]] The value of general_level_idc in the profile_tier_level( ) syntax structure in all referenced SPS NAL units is overwritten with the value of sps_ptl_dpb_hrd_params_present_flag equal to 1 shall be equal to SubpicSetLevelIdc derived in D.3.8.
[1313] - 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_parameters( ) syntax structure list entry ols_hrd_idx[ targetOlsIdx ] in all referenced SPS NAL units are overwritten with the values corresponding to SubpicCpbSizeVcl[ 0 ][ SubpicIdxList[ subPicIdx ] ], SubpicBitrateVcl[ 0 ][ SubpicIdxList[ subPicIdx ] ], and SubpicBitrateNal[ 0 ][ SubpicIdxList[ subPicIdx ] ] as specified in D.3.8 for subpicture [[ID]] - The value of hrd_cpb_cnt_minus1 is derived as follows for the subpicture equal to subpicIdx and ranging from 0 to hrd_cpb_cnt_minus1.
[1314] - 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, are overwritten with subpic_width_minus1[ SubpicIdxList[ subPicIdx ] ] and subpic_height_minus1[ SubpicIdxList[ subPicIdx ] ].
[1315] The values of sps_num_subpics_minus1 in all referenced SPS NAL units and pps_num_subpics_minus1 in all referenced PPS NAL units are overwritten with 1.
[1316] The syntax elements subpic_ctu_top_left_x[ SubpicIdxList[ subPicIdx ] ], subpic_ctu_top_left_y[ SubpicIdxList[ subPicIdx ] ] in the referenced SPS NAL unit are overwritten to 0 if present.
[1317] For each j 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 removed.
[1318] All syntax elements in all referenced PPS related to tile and slice structure are rewritten to remove all tile rows, tile columns and slices not related to subpictures with subpicture ID equal to subPicIdx.
[1319] All VCL NAL units with nuh layer id equal to the i-th layer and slice_subpic_id not equal to subPicIdx are removed from outBitstream.
[1320] When sli_cbr_constraint_flag is equal to 1, all NAL units with nal unit type equal to FD_NUT and filter payload SEI messages not associated with VCL NAL units of subpictures in subpicIdxTarget[ i ] are removed, and cbr_flag[ tldTarget ][ j ] for the j-th CPB in the ols_hrd_parameters( ) syntax structure list in all referenced VPS NAL units and SPS NAL units is set equal to 1 for the ols_hrd_idx[ targetOlsldx ]-th entry, and j is in the range of 0 to hrd_cpb_cnt_minus1. Otherwise, (sli_cbr_constraint_flag is equal to 0), all NAL units with nal unit type equal to FD_NUT and filter payload SEI messages are removed, and cbr_flag[ tldTarget ][ j ] is set equal to 0.
[1321] - When outBitstream contains SEI NAL units of the scalable-nested SEI messages applicable to outBitstream (where nesting_ols_flag is equal to 1 and nesting_subpic_flag is equal to 1), extract the appropriate non-scalable-nested SEI messages from the scalable-nested SEI messages with payloadType equal to 1 (picture timing) or 130 (decoding unit information), and put the extracted SEI messages into outBitstream.
[1322] 10. In one example, with respect to derivation for outputting a sub-bitstream during sub-picture sub-bitstream extraction, the extracted sub-bitstream can be treated as a single sub-picture in the output bitstream.
[1323] a) In one example, for syntax structures referring to the output sub-bitstream with the extracted sub-pictures, the syntax element sps_independent_subpics_flag can be overridden to be equal to 1.
[1324] b) In one example, the syntax elements subpic_treated_as_pic_flag and / or loop_filter_across_subpic_enabled_flag referring to the extracted sub-pictures in all output layers can not be signaled (e.g., can be removed) from the syntax structures of the output sub-bitstream.
[1325] i. In one example, for syntax structures referring to the output sub-bitstream with the extracted sub-pictures, the syntax element subpic_treated_as_pic_flag can be inferred to be equal to 1.
[1326] ii. In one example, for syntax structures referring to the output sub-bitstream with the extracted sub-pictures, the syntax element loop_filter_across_subpic_enabled_flag can be inferred to be equal to 0.
[1327] c) In one example, the value of sps_num_subpics_minus1 in all referred SPS NAL units and the value of pps_num_subpics_minus1 in all referred PPS NAL units with the extracted sub-pictures can be overridden to be equal to 0.
[1328] d) In one example, for syntax structures referring to the output sub-bitstream with the extracted sub-pictures, the syntax element no_pic_partition_flag can be overridden.
[1329] i. For example, whether the syntax element no_pic_partition_flag is overridden can depend on the number of slices / tiles in the output bitstream containing the extracted subpicture.
[1330] 1. In one example, if there is only one slice and one tile in the extracted subpicture, the syntax element no_pic_partition_flag can be overridden to be equal to 1 for the syntax structure referring to the output sub-bitstream with the extracted subpicture.
[1331] 2. Alternatively, if the number of slices and / or tiles in the extracted subpicture is greater than 1, the syntax element no_pic_partition_flag can be equal to 0 for the syntax structure referring to the output sub-bitstream with the extracted subpicture.
[1332] e) In one example, the following example modification can be introduced.
[1333] C.7 Subpicture sub-bitstream extraction process
[1334] The output sub-bitstream outBitstream is derived as follows:
[1335] - The sub-bitstream extraction process specified in Annex C.6 is invoked with inBitstream, targetOlsIdx and tIdTarget as inputs and the output of this process is assigned to outBitstream.
[1336] - If some external means not specified in this specification is available to provide a replacement parameter set for the sub-bitstream outBitstream, all parameter sets are replaced with the replacement parameter set.
[1337] - Otherwise, when a subpicture level information SEI message is present in inBitstream, the following applies:
[1338] - For all entries with subpicture ID equal to subpicIdxTarget[], all general_level_idc values in the ols_ptl_idx[targetOlsIdx]th entry in the list of profile_tier_level() syntax structures in VPS NAL units are overridden to be equal to SubpicSetLevelIdc derived in D.3.8.
[1339] The values of cpb_size_value_minus1[ tIdTarget ][ j ] and bit_rate_value_minus1[ tIdTarget ][ j ] in the j-th CPB in the (ols_hrd_idx[ targetOlsIdx ] + 1)-th entry of the ols_hrd_parameters( ) syntax structure list in all referenced VPS NAL units are overwritten to correspond to SubpicSetCpbSizeVcl[ 0 ], SubpicSetCpbSizeNal[ 0 ], SubpicSetBitrateVcl[ 0 ], and SubpicSetBitrateNal[ 0 ] derived in D.3.8 for the subpicture set consisting of subpictures with subpicture ID equal to all entries in subpicIdxTarget[ ] and j in the range of 0 to hrd_cpb_cnt_minus1.
[1340] For the i-th layer with i in the range of 0 to NumLayersInOls[ targetOlsIdx ] - 1, the following applies.
[1341] - subpicId is set equal to the value of subpicIdTarget[ i ].
[1342] - For the subpicture set consisting of subpictures with subpicture ID equal to subpicId, 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 shall be equal to SubpicSetLevelIdc derived in D.3.8.
[1343] - The values of cpb_size_value_minus1[ tldTarget ][ j ] and bit_rate_value_minus1[ tldTarget ][ j ] for the j-th CPB in the ols_hrd_parameters( ) syntax structure list entry ols_hrd_idx[ targetOlsldx ], in all referenced SPS NAL units, are set to correspond to SubpicCpbSizeVcl[ 0 ][ SubpicldxList[ subPicldx ] ], SubpicBitrateVcl[ 0 ][ SubpicldxList[ subPicldx ] ], and SubpicBitrateNal[ 0 ][ SubpicldxList[ subPicldx ] ], as derived in D.3.8 for sub-pictures with sub-picture ID equal to subpicld and j in the range of 0 to hrd_cpb_cnt_minusl.
[1344] - 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, are set equal to subpic_width_minusl[ SubpicldxList[ subPicldx ] ] and subpic_height_minusl[ SubpicldxList[ subPicldx ] ].
[1345] The values of sps_num_subpics_minusl in all referenced SPS NAL units and pps_num_subpics_minusl in all referenced PPS NAL units are rewritten to be equal to 1.
[1346] The syntax elements subpic_ctu_top_left_x[ SubpicldList[ subPicldx ] ], subpic_ctu_top_left_y[ SubpicldList[ subPicldx ] ] in the referenced SPS NAL units are rewritten to be equal to 0, if present.
[1347]
[1348]
[1349] For each j for which SubpicldList[ j ] is not equal to subPicld, remove the syntax elements subpic_ctu_top_left_x[ j ], subpic_ctu_top_left_y[ j ], subpic_width_minusl[ j ], subpic_height_minusl[ 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.
[1350] Rewrite all syntax elements in all referenced PPS related to slice and tile structure to remove all slice rows, slice columns, and tiles that are not related to sub-pictures with sub-picture ID equal to subPicld.
[1351] Remove from outBitstream all VCL NAL units with nuh layer id equal to the ith layer's nuh layer id and slice_subpic_id not equal to subPicld.
[1352] When sli cbr constraint flag is equal to 1, remove all NAL units with nal unit type equal to FD NUT and filter payload SEI messages not associated with VCL NAL units of sub-pictures in subpicldxTarget[ ], and set cbr flag[ tldTarget ][ j ] equal to 1 for the jth CPB in the 1stols hrd idx[ targetOlsldx ] entry in the ols hrd parameters( ) syntax structure list in all referenced VPS NAL units and SPS NAL units, and j is in the range of 0 to hrd cpb cnt minusl. Otherwise, (sli cbr constraint flag is equal to 0), remove all NAL units with nal unit type equal to FD NUT and filter payload SEI messages...
Claims
1. A method for processing video data, comprising: Perform a conversion between a video containing video images and the bitstream of the video, wherein, The video image contains one or more sub-images; The bit stream conforms to the format rules; The format rules specify that the first syntax element selectively exists in the sequence parameter set of the bitstream based on the number of sub-images in the video image; and The first syntax element indicates whether loop filtering is allowed at sub-picture boundaries in a cross-codec layer video sequence (CLVS), and whether all sub-picture boundaries in the CLVS are considered picture boundaries.
2. The method according to claim 1, wherein, The format rules stipulate that when the number of sub-images in the video image is 1, the first syntax element does not exist in the sequence parameter set, and the value of the first syntax element is inferred to be equal to 1. Wherein, if the value of the first syntax element is inferred to be equal to 1, all sub-image boundaries in the CLVS are considered as image boundaries, and the loop filtering operation is not performed across the sub-image boundaries.
3. The method according to claim 1, wherein, The first syntax element includes sps_independent_subpics_flag.
4. The method according to claim 1, wherein, The number of sub-images in the video frame is indicated by a second syntax element in the sequence parameter set, where the second syntax element plus 1 indicates the number of sub-images in each video frame in the CLVS.
5. The method according to claim 1, wherein, The format rules also specify how the number of sub-pictures in the video picture is determined by a third syntax element, which indicates whether the sub-pictures of each video picture in the CLVS are considered pictures in a transformation that does not include the loop filtering operation.
6. The method according to claim 5, wherein, If the number of sub-images in the video image is 1, it is inferred that the value of the third syntax element is equal to 1, and Wherein, when the value of the third syntax element is equal to 1, each sub-picture of a video image in the CLVS is considered as a picture in a transformation that does not include the loop filtering operation.
7. The method according to claim 1, wherein, The format rules further specify the method by which the number of sub-images in the video image is determined by indicating the fourth syntax element, wherein the fourth syntax element indicates whether the loop filtering operation is allowed to be performed across the boundaries of the sub-images.
8. The method according to claim 7, wherein, If the number of sub-images in the video image is 1, it is inferred that the value of the fourth syntax element is equal to 0, and Specifically, when the value of the fourth syntax element is equal to 0, loop filtering across the boundaries of the sub-image is disabled.
9. The method according to claim 1, wherein, The first syntax element also indicates whether the first operation is performed across the boundaries of sub-pictures in the codec layer video sequence.
10. The method according to claim 9, wherein, The first operation includes at least one of intra-frame prediction and inter-frame prediction.
11. The method according to claim 10, wherein, The format rule stipulates that when the number of sub-images in the video image is 1, the first syntax element shall be omitted in the bitstream.
12. The method according to claim 10, wherein, The format rules further specify the method by which the number of sub-pictures of the video picture in the video sequence of the codec layer determines the indication of the third syntax element, which indicates that the one or more sub-pictures of the video picture are regarded as one or more pictures of the transformation, wherein loop filtering is not applied in the transformation.
13. The method according to claim 12, wherein, When the number of sub-images in the video image is 1, the value of the third syntax element is inferred to be 1, indicating that the sub-image of the video image is considered as the transformed image.
14. The method according to claim 12, wherein, When the number of sub-images in the video image is 1, the value of the third syntax element is required to be 1 to indicate that the sub-image of the video image is considered as the transformed image.
15. The method according to claim 10, wherein, The format rules stipulate that the number of sub-pictures in the video pictures in the codec layer video sequence determines the way the fourth syntax element is indicated, and the fourth syntax element indicates whether loop filtering is enabled across the boundaries of the sub-pictures.
16. The method according to claim 15, wherein, The fourth syntax element further indicates whether the loop filtering operation is applicable across the boundaries of the sub-image.
17. The method according to claim 15, wherein, When the number of sub-images in the video image is 1, the value of the fourth syntax element is inferred to be 0, indicating that the loop filtering operation is disabled across the boundaries of the sub-images.
18. The method according to claim 17, wherein, The fourth syntax element is inferred to be 0, further indicating that the loop filtering operation is not applicable across the boundaries of the sub-image.
19. The method according to claim 15, wherein, When the number of sub-images in the video image is 1, the value of the fourth syntax element is required to be 0 to indicate that the loop filtering operation is disabled across the boundaries of the sub-images.
20. The method according to claim 19, wherein, The requirement that the fourth syntax element be 0 further indicates that the loop filtering operation is not applicable across the boundaries of the sub-image.
21. The method according to claim 9, wherein, The number of subpics is indicated by the syntax element sps_num_subpics_nimus1.
22. The method according to claim 12, wherein, The number of subpicks is indicated by the syntax element one_subpic_per_pic_contraint_flag.
23. The method according to claim 1, wherein, The format rules stipulate that the number of sub-pictures in the video images of the bitstream is constrained by the constraint flags in the bitstream.
24. The method according to claim 23, wherein, The constraint flags include one_subpic_per_pic_contraint_flag.
25. The method according to claim 24, wherein, When the value of the constraint flag is 1, the number of sub-images is required to be 1.
26. The method according to claim 1, wherein, The format rules stipulate that the number of stripes in a sub-image determines the signaling notification syntax element, which indicates the width of the stripe, wherein the width of the stripe is specified as the number of slices.
27. The method according to claim 26, wherein, The syntax element is omitted in the bitstream, and the width of the strip is inferred when the number of stripes in the sub-image is 1.
28. The method according to claim 27, wherein, The width of the strip is inferred to be one column.
29. The method according to any one of claims 1-28, wherein, The conversion includes encoding the video into the bitstream.
30. The method according to any one of claims 1-28, wherein, The conversion includes decoding the video from the bitstream.
31. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein, When the instruction is executed by the processor, the processor: Perform a conversion between a video including video images and the bitstream of the video, wherein the video images contain one or more sub-images; The bit stream conforms to the format rules; The format rules specify that the first syntax element selectively exists in the sequence parameter set of the bitstream based on the number of sub-images in the video image; and The first syntax element indicates whether loop filtering is allowed at sub-picture boundaries in a cross-codec layer video sequence (CLVS), and whether all sub-picture boundaries in the CLVS are considered picture boundaries.
32. The apparatus according to claim 31, wherein, The format rules stipulate that when the number of sub-images in the video image is 1, the first syntax element does not exist in the sequence parameter set, and the value of the first syntax element is inferred to be equal to 1. Wherein, if the value of the first syntax element is inferred to be equal to 1, all sub-image boundaries in the CLVS are considered as image boundaries, and the loop filtering operation is not performed across the sub-image boundaries.
33. The apparatus according to claim 31, wherein, The first syntax element includes sps_independent_subpics_flag.
34. The apparatus according to claim 31, wherein, The number of sub-images in the video frame is indicated by a second syntax element in the sequence parameter set, where the second syntax element plus 1 indicates the number of sub-images in each video frame in the CLVS.
35. The apparatus according to claim 31, wherein, The format rules also specify the method by which the number of sub-pictures in the video picture determines the third syntax element, which indicates whether the sub-pictures of each video picture in the CLVS are considered pictures in a transformation that does not include the loop filtering operation; Where the number of sub-images in the video image is 1, it is inferred that the value of the third syntax element is equal to 1, and Wherein, when the value of the third syntax element is equal to 1, each sub-picture of a video image in the CLVS is considered as a picture in a transformation that does not include the loop filtering operation.
36. The apparatus according to claim 31, wherein, The format rules further specify the method by which the number of sub-images in the video image is determined to indicate the fourth syntax element, wherein the fourth syntax element indicates whether the loop filtering operation is allowed to be performed across the boundaries of the sub-images; Where the number of sub-images in the video image is 1, it is inferred that the value of the fourth syntax element is equal to 0, and Specifically, when the value of the fourth syntax element is equal to 0, loop filtering across the boundaries of the sub-image is disabled.
37. A non-transitory computer-readable storage medium for storing instructions, said instructions causing a processor to: Perform a conversion between a video containing video images and the bitstream of the video, wherein, The video image contains one or more sub-images; The bit stream conforms to the format rules; The format rules specify that the first syntax element selectively exists in the sequence parameter set of the bitstream based on the number of sub-images in the video image; and The first syntax element indicates whether loop filtering is allowed at sub-picture boundaries in a cross-codec layer video sequence (CLVS), and whether all sub-picture boundaries in the CLVS are considered picture boundaries.
38. The non-transitory computer-readable storage medium according to claim 37, wherein, The format rules stipulate that when the number of sub-images in the video image is 1, the first syntax element does not exist in the sequence parameter set, and the value of the first syntax element is inferred to be equal to 1. Wherein, if the value of the first syntax element is inferred to be equal to 1, all sub-image boundaries in the CLVS are regarded as the image boundaries, and the loop filtering operation is not performed across the sub-image boundaries; The first syntax element includes sps_independent_subpics_flag; The number of sub-images in the video image is indicated by the second syntax element in the sequence parameter set, and the second syntax element plus 1 indicates the number of sub-images in each video image in the CLVS; The format rules also specify the method by which the number of sub-pictures in the video picture is determined by a third syntax element, which indicates whether the sub-pictures of each video picture in the CLVS are considered as pictures in a transformation that does not include the loop filtering operation; Where the number of sub-images in the video image is 1, it is inferred that the value of the third syntax element is equal to 1, and Wherein, when the value of the third syntax element is equal to 1, each sub-picture of a video image in the CLVS is considered as a picture in a transformation that does not include the loop filtering operation; The format rules further specify the method by which the number of sub-images in the video image is determined by indicating the fourth syntax element, wherein the fourth syntax element indicates whether the loop filtering operation is allowed to be performed across the boundaries of the sub-images; Where the number of sub-images in the video image is 1, it is inferred that the value of the fourth syntax element is equal to 0, and Specifically, when the value of the fourth syntax element is equal to 0, loop filtering across the boundaries of the sub-image is disabled.
39. A non-transitory computer-readable recording medium for storing a video bitstream generated by a method performed by a video processing apparatus, wherein, The method includes: Generate a bitstream of video including video images, wherein the video images contain one or more sub-images; The bit stream conforms to the format rules; The format rules specify that the first syntax element selectively exists in the sequence parameter set of the bitstream based on the number of sub-images in the video image; and The first syntax element indicates whether loop filtering is allowed at sub-picture boundaries in a cross-codec layer video sequence (CLVS), and whether all sub-picture boundaries in the CLVS are considered picture boundaries.
40. The non-transitory computer-readable recording medium according to claim 39, wherein, The format rules stipulate that when the number of sub-images in the video image is 1, the first syntax element does not exist in the sequence parameter set, and the value of the first syntax element is inferred to be equal to 1. Wherein, if the value of the first syntax element is inferred to be equal to 1, all sub-image boundaries in the CLVS are regarded as the image boundaries, and the loop filtering operation is not performed across the sub-image boundaries; The first syntax element includes sps_independent_subpics_flag; The number of sub-images in the video image is indicated by the second syntax element in the sequence parameter set, and the second syntax element plus 1 indicates the number of sub-images in each video image in the CLVS; The format rules also specify the method by which the number of sub-pictures in the video picture is determined by a third syntax element, which indicates whether the sub-pictures of each video picture in the CLVS are considered as pictures in a transformation that does not include the loop filtering operation; Where the number of sub-images in the video image is 1, it is inferred that the value of the third syntax element is equal to 1, and Wherein, when the value of the third syntax element is equal to 1, each sub-picture of a video image in the CLVS is considered as a picture in a transformation that does not include the loop filtering operation; The format rules further specify the method by which the number of sub-images in the video image is determined by indicating the fourth syntax element, wherein the fourth syntax element indicates whether the loop filtering operation is allowed to be performed across the boundaries of the sub-images; Where the number of sub-images in the video image is 1, it is inferred that the value of the fourth syntax element is equal to 0, and Specifically, when the value of the fourth syntax element is equal to 0, loop filtering across the boundaries of the sub-image is disabled.
41. A method for storing a bitstream of video, comprising: Generate a bitstream of video including video images, wherein the video images comprise one or more sub-images; and The bitstream is stored in a non-transitory computer-readable recording medium. The bit stream conforms to the format rules; The format rules specify that the first syntax element selectively exists in the sequence parameter set of the bitstream based on the number of sub-images in the video image; and The first syntax element indicates whether loop filtering is allowed at sub-picture boundaries in a cross-codec layer video sequence (CLVS), and whether all sub-picture boundaries in the CLVS are considered picture boundaries.
42. A video decoding apparatus including a processor configured to implement the method of any one of claims 1 to 30.
43. A video encoding apparatus including a processor configured to perform the method of any one of claims 1 to 30.
Citation Information
Patent Citations
Parameter set designs for video coding extensions
CN105103561A
Sub-Pictures for Pixel Rate Balancing on Multi-Core Platforms
US20130202051A1