Systems and methods for signaling picture information in video coding

By parsing the marker information in the image header, enabling the temporal motion vector predictor, and optimizing inter-frame prediction, the problem of insufficient coding efficiency in existing video coding standards is solved, and more efficient video coding is achieved.

CN114600462BActive Publication Date: 2026-01-20SHARP KK
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202080074862.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-12-21
Filing Date
2020-10-22
Publication Date
2026-01-20
Estimated Expiration
2040-10-22

AI Technical Summary

Technical Problem

Existing video coding standards such as ITU-T H.264, ITU-T H.265, JEM, and JVET-P2001 do not fully utilize redundant information in video sequences when encoding video data, resulting in coding efficiency that needs to be improved.

Method used

By receiving the tag information in the image header, parsing the juxtaposed image index used for temporal motion vector prediction, enabling the temporal motion vector predictor, optimizing the inter-frame prediction process, and improving coding efficiency.

Benefits of technology

It improves the efficiency and quality of video encoding, especially in high-efficiency video encoding technology, achieving higher compression capabilities and lower data requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114600462B_ABST
    Figure CN114600462B_ABST
Patent Text Reader

Abstract

The present disclosure relates to video coding, and more specifically to techniques for signaling picture information of a coded video. According to one aspect of the present disclosure, in a case where both (a) a first flag indicating whether temporal motion vector predictor can be enabled for a picture associated with a picture header and (b) a second flag indicating information associated with a reference picture list are equal to 1, a first syntax element is parsed from the picture header, the first syntax element specifying an index corresponding to a collocated picture for temporal motion vector prediction.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present disclosure relates to video coding, and more specifically to techniques for signaling picture information of a coded video. BACKGROUND

[0002] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, laptop or desktop computers, tablet computers, digital recording devices, digital media players, video gaming devices, cellular telephones, including so-called smartphones, medical imaging devices, and the like. Digital video can be coded according to a video coding standard. Video coding standards define the format of a compliant bitstream that encapsulates coded video data. A compliant bitstream is a data structure that can be received and decoded by a video decoding device to generate reconstructed video data. Video coding standards can incorporate video compression techniques. Examples of video coding standards include ISO / IEC MPEG-4 Visual and ITU-T H.264 / AVC (also known as ISO / IEC MPEG-4 AVC) and High-Efficiency Video Coding (HEVC). HEVC is described in High Efficiency Video Coding (HEVC), ITU-T H.265 Recommendation, December 2016, which is incorporated by reference, and is referred to herein as ITU-T H.265. Extensions and improvements to ITU-T H.265 are currently being considered for the development of next generation video coding standards. For example, the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC

[0003] According to various descriptions of video coding tools, a final initial draft text of a video coding specification is described in “Versatile Video Coding (Draft 1),” i.e., document JVET-J1001-v2, 10th Meeting of ISO / IEC JTC1 / SC29 / WG11, San Diego, CA, USA, April 16-20, 2018, which is incorporated by reference herein and referred to as JVET-J1001. The current development of the next generation video coding standard by VCEG and MPEG is referred to as the Versatile Video Coding (VVC) project. “Versatile Video Coding (Draft 7),” i.e., document JVET-P2001-v9, 16th Meeting of ISO / IEC JTC1 / SC29 / WG11, Geneva, CH, October 1-11, 2019, which is incorporated by reference herein and referred to as JVET-P2001, represents the current iteration of the draft text of a video coding specification corresponding to the VVC project.

[0004] Video compression techniques enable the storage and transmission of video data at a lower bit rate, while maintaining the visual quality of the video data. Video compression techniques can reduce the data required for storing and transmitting video data by exploiting the redundancies inherent in a video sequence. Video compression techniques can sub-divide a video sequence into progressively smaller portions (i.e., a group of pictures within a video sequence, a picture within a group of pictures, a region within a picture, a sub-region within a region, etc.). Intra-picture prediction coding techniques (e.g., spatial prediction techniques within a picture) and inter-picture prediction techniques (i.e., techniques across pictures (temporal)) can be used to generate difference values between the video data to be coded and a reference unit of video data. The difference values can be referred to as residual data. The residual data can be coded as quantized transform coefficients. Syntax elements can relate to the residual data and the reference coded unit (e.g., intra-prediction mode indices and motion information). The residual data and the syntax elements can be entropy coded. The entropy coded residual data and the syntax elements can be included in a data structure that forms a compliant bitstream. SUMMARY

[0005] In one example, a method of decoding video data, the method comprising: receiving a picture header; and in a case where both (a) a first flag that indicates whether temporal motion vector prediction can be enabled for a picture associated with the picture header and (b) a second flag that indicates information associated with a reference picture list are equal to 1; parsing a first syntax element from the picture header, the first syntax element specifying an index corresponding to a collocated picture used for temporal motion vector prediction.

[0006] In one example, an apparatus comprising one or more processors configured to: receive a picture header; in a case where both (a) a first flag that indicates whether a temporal motion vector predictor can be enabled for a picture associated with the picture header and (b) a second flag that indicates information associated with a reference picture list are equal to 1; parse a first syntax element from the picture header, the first syntax element specifying an index corresponding to a collocated picture for temporal motion vector prediction.

[0007] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF DRAWINGS

[0008] [ Figure 1 ] Figure 1 is a block diagram illustrating an example of a system that can be configured to encode and decode video data, in accordance with one or more techniques of this disclosure.

[0009] [ Figure 2 ] Figure 2 is a conceptual diagram illustrating encoded video data and a corresponding data structure, in accordance with one or more techniques of this disclosure.

[0010] [ Figure 3 ] Figure 3 is a conceptual diagram illustrating a data structure that encapsulates encoded video data and corresponding metadata, in accordance with one or more techniques of this disclosure.

[0011] [ Figure 4 ] Figure 4 is a conceptual diagram illustrating an example of components that can be included in an implementation of a system that can be configured to encode and decode video data, in accordance with one or more techniques of this disclosure.

[0012] [ Figure 5 ] Figure 5 is a block diagram illustrating an example of a video encoder that can be configured to encode video data, in accordance with one or more techniques of this disclosure.

[0013] [ Figure 6 ] Figure 6 is a block diagram illustrating an example of a video decoder that can be configured to decode video data, in accordance with one or more techniques of this disclosure. DETAILED DESCRIPTION

[0014] In general, this disclosure describes various techniques for encoding video data. In particular, this disclosure describes techniques for signaling picture information of encoded video data. That is, for example, the picture information can include information indicating whether one or more video coding tools (e.g., prediction techniques, filtering techniques, etc.) can be enabled for a picture and / or portions thereof. It should be noted that although the techniques of this disclosure are described with respect to ITU-T H.264, ITU-T H.265, JEM, and JVET-P2001, the techniques of this disclosure can be applied universally to video coding. For example, in addition to those techniques included in ITU-T H.265, JEM, and JVET-P2001, the coding techniques described herein can be incorporated into video coding systems, including video coding systems based on future video coding standards, including video block structures, intra prediction techniques, inter prediction techniques, transform techniques, filtering techniques, and / or other entropy coding techniques. Accordingly, the references to ITU-T H.264, ITU-T H.265, JEM, and / or JVET-P2001 are for descriptive purposes and should not be interpreted as limiting the scope of the techniques described herein. Furthermore, it should be noted that the incorporation of documents by reference herein is for descriptive purposes and should not be interpreted as limiting or creating ambiguity with respect to the terms used herein. For example, where a definition of a term provided in one incorporated reference is different from that in another incorporated reference and / or as used herein, then the term should be interpreted in a manner that broadly includes each respective definition and / or in a manner that includes each particular definition in the alternative.

[0015] Video content includes a video sequence composed of a series of frames (or pictures). A series of frames can also be referred to as a group of pictures (GOP). Each video frame or picture can be divided into one or more regions. The regions can be defined according to a base unit (e.g., a video block) and a rule set defining the regions. For example, the rule defining the regions can be that the regions must be an integer number of video blocks arranged in a rectangle. In addition, the video blocks in a region can be ordered according to a scan pattern (e.g., raster scan). As used herein, the term “video block” can generally refer to a region of a picture, or can more specifically refer to a maximum array of sample values that can be predictively coded, sub-partitions thereof, and / or corresponding structures. In addition, the term “current video block” can refer to a region of a picture that is being coded or decoded. A video block can be defined as an array of sample values. It should be noted that in some cases, pixel values can be described as including sample values of respective components of video data, which can also be referred to as color components (e.g., luma (Y) and chroma (Cb and Cr) components or red, green, and blue components). It should be noted that in some cases, the terms “pixel value” and “sample value” can be used interchangeably. In addition, in some cases, a pixel or sample can be referred to as a pel. A video sampling format (which can also be referred to as a chroma format) can define a number of chroma samples included in a video block relative to a number of luma samples included in the video block. For example, for a 4:2:0 sampling format, the sampling rate of the luma component is twice that of the chroma components in both the horizontal and vertical directions.

[0016] A video encoder can perform predictive coding on video blocks and sub-partitions thereof. Video blocks and sub-partitions thereof can be referred to as nodes. ITU-T H.264 specifies macroblocks comprising 16x16 luma samples. That is, in ITU-T H.264, pictures are segmented into macroblocks. ITU-T H.265 specifies a similar coding tree unit (CTU) structure (which can be referred to as a largest coding unit (LCU)). In ITU-T H.265, pictures are segmented into CTUs. In ITU-T H.265, for a picture, the CTU size can be set to comprise 16x16, 32x32, or 64x64 luma samples. In ITU-T H.265, a CTU is composed of respective coding tree blocks (CTBs) for each component of video data (e.g., luma (Y) and chroma (Cb and Cr)). It should be noted that video having one luma component and two corresponding chroma components can be described as having two channels, i.e., a luma channel and a chroma channel. Further, in ITU-T H.265, a CTU can be partitioned according to a quadtree (QT) partitioning structure, which causes the CTBs of the CTU to be partitioned into coding blocks (CBs). That is, in ITU-T H.265, a CTU can be partitioned into quadtree leaf nodes. According to ITU-T H.265, one luma CB along with two corresponding chroma CBs and associated syntax elements are referred to as a coding unit (CU). In ITU-T H.265, a minimum allowed size of a CB can be signaled. In ITU-T H.265, the minimum allowed minimum size of a luma CB is 8x8 luma samples. In ITU-T H.265, the decision to code a picture region using intra prediction or inter prediction is made at the CU level.

[0017] In ITU-T H.265, a CU is associated with a prediction unit structure having its root at the CU. In ITU-T H.265, the prediction unit structure allows partitioning of luma CBs and chroma CBs to generate corresponding reference samples. That is, in ITU-T H.265, a luma CB and a chroma CB can be partitioned into respective luma prediction blocks and chroma prediction blocks (PBs), where a PB includes a block of sample values to which the same prediction is applied. In ITU-T H.265, a CB can be divided into 1, 2, or 4 PBs. ITU-T H.265 supports PB sizes from 64x64 samples down to 4x4 samples. In ITU-T H.265, square PBs are supported for intra prediction, where a CB can form a PB or a CB can be partitioned into four square PBs. In ITU-T H.265, in addition to square PBs, rectangular PBs are also supported for inter prediction, where a CB can be halved vertically or horizontally to form PBs. Further, it should be noted that in ITU-T H.265, for inter prediction, four asymmetric PB partitions are supported, where a CB is partitioned into two PBs at one quarter of the height (top or bottom) or width (left or right) of the CB. Intra prediction data (e.g., intra prediction mode syntax elements) or inter prediction data (e.g., motion data syntax elements) corresponding to a PB are used to generate reference and / or predicted sample values for the PB.

[0018] JEM specifies a CTU with a maximum size of 256x256 luma samples. JEM specifies a quadtree plus binary tree (QTBT) block structure. In JEM, the QTBT structure allows further partitioning of quadtree leaf nodes by binary tree (BT) structures. That is, in JEM, the binary tree structure allows recursive partitioning of quadtree leaf nodes vertically or horizontally. In JVET-P2001, a CTU is partitioned according to a quadtree plus multi-type tree (QTMT or QT+MTT) structure. The QTMT in JVET-P2001 is similar to the QTBT in JEM. However, in JVET-P2001, in addition to indicating binary splits, the multi-type tree can also indicate so-called ternary (or ternary tree (TT)) splits. A ternary split divides one block into three blocks either vertically or horizontally. In the case of a vertical TT split, the block is split at one quarter of its width from the left edge and at one quarter of its width from the right edge, and in the case of a horizontal TT split, the block is split at one quarter of its height from the top edge and at one quarter of its height from the bottom edge.

[0019] As noted above, each video frame or picture can be divided into one or more regions. For example, according to ITU-T H.265, each video frame or picture can be partitioned to include one or more slices, and further partitioned to include one or more tiles, where each slice includes a sequence of CTUs (e.g., arranged in a raster scan order), and where a tile is a sequence of CTUs corresponding to a rectangular region of a picture. It should be noted that in ITU-T H.265, a slice is a sequence of one or more slice segments starting with an independent slice segment and containing all subsequent dependent slice segments (if any) before the next independent slice segment (if any). A slice segment, like a slice, is a sequence of CTUs. Thus, in some cases, the terms "slice" and "slice segment" can be used interchangeably to indicate a sequence of CTUs arranged in a raster scan order. Further, it should be noted that in ITU-T H.265, a tile can be composed of CTUs contained in more than one slice, and a slice can be composed of CTUs contained in more than one tile. However, ITU-T H.265 provides that one or both of the following conditions should be met: (1) all CTUs in a slice belong to the same tile; and (2) all CTUs in a tile belong to the same slice.

[0020] Regarding JVET-P2001, a slice must consist of an integer number of complete tiles or an integer number of consecutive complete CTU rows within a tile, not just an integer number of complete CTUs. It should be noted that in JVET-P2001, slice design does not include slice segments (i.e., there are no independent / dependent slice fragments). Therefore, in JVET-P2001, an image can include a single tile, where the single tile is contained within a single slice, or an image can include multiple tiles, where these multiple tiles (or their CTU rows) can be contained within one or more slices. In JVET-P2001, how an image is divided into tiles is specified by specifying the corresponding height of the tile rows and the corresponding width of the tile columns. Therefore, in JVET-P2001, a tile is a rectangular CTU region within a specific tile row and a specific tile column location. Furthermore, it should be noted that JVET-P2001 specifies that an image can be divided into sub-images, where a sub-image is a rectangular CTU region within an image. The top-left CTU of a sub-image can be located at any CTU position within the image, where the sub-image is constrained to include one or more slices. Therefore, unlike tiles, sub-images are not necessarily restricted to specific row and column positions. It should be noted that sub-images can be used to encapsulate regions of interest within an image, and the sub-bitstream extraction process can be used to decode and display only specific regions of interest. That is, as described further below, the bitstream of encoded video data comprises a sequence of Network Abstraction Layer (NAL) units, where NAL units encapsulate encoded video data (i.e., video data corresponding to image slices), or NAL units encapsulate metadata (e.g., parameter sets) used for decoding the video data, and the sub-bitstream extraction process forms a new bitstream by removing one or more NAL units from the bitstream.

[0021] Figure 2 This is a conceptual diagram illustrating examples of images within a group of images divided according to tiles, slices, and sub-images. It should be noted that the techniques described herein are applicable to tiles, slices, sub-images, their sub-regions, and / or their equivalent structures. That is, the techniques described herein are generally applicable regardless of how an image is divided into regions. For example, in some cases, the techniques described herein can be applied to situations where tiles can be divided into so-called bricks, where a brick is a rectangular CTU row region within a particular tile. Furthermore, for example, in some cases, the techniques described herein can be applied to situations where one or more tiles can be included in a so-called tile group, where the tile group comprises an integer number of adjacent tiles. Figure 2 In the example shown, Pic3 is depicted as comprising 16 tiles (i.e., tiles 0 to 16 tiles). 15 ) and three slices (i.e., slice 0 to slice 2). In Figure 2In the example shown, slice 0 includes four tiles (i.e., tiles 0 through 3), and slice 1 includes eight tiles (i.e., tiles 4 through 3). 11 ), and slice 2 includes four tiles (i.e., tiles 12 To the block 15 In addition, such as Figure 2 As shown in the example, Pic3 is illustrated as comprising two sub-pictures (i.e., sub-picture 0 and sub-picture 1), where sub-picture 0 includes slice 0 and slice 1, and where sub-picture 1 includes slice 2. As described above, sub-pictures can be used to encapsulate regions of interest within a picture, and the sub-bit extraction process stream can be used to selectively decode (and display) the regions of interest. For example, see Reference... Figure 2 sub-image O This can correspond to the action portion of a sports event presentation (e.g., a view of a field), and sub-image 1 can correspond to a scrolling banner displayed during the sports event presentation. By organizing images into sub-images in this way, viewers may be able to disable the display of the scrolling banner. That is, through the sub-bitstream extraction process, slice 2NAL units can be removed from the bitstream (and therefore not decoded), while slice 0NAL units and slice 1NAL units can be decoded and displayed. The following describes in further detail how image slices are encapsulated into corresponding NAL unit data structures and how sub-bitstream extraction is performed.

[0022] For intra-frame predictive coding, the intra-frame prediction mode can specify the location of a reference sample within the image. In ITU-T H.265, the defined possible intra-frame prediction modes include planar (i.e., surface-fitting) prediction modes, DC (i.e., flat global average) prediction modes, and 33 angular prediction modes (predMode: 2-34). In JEM, the defined possible intra-frame prediction modes include planar prediction modes, DC prediction modes, and 65 angular prediction modes. It should be noted that planar prediction modes and DC prediction modes can be referred to as non-directional prediction modes, and angular prediction modes can be referred to as directional prediction modes. It should be noted that the techniques described herein are generally applicable regardless of the number of defined possible prediction modes.

[0023] For inter-frame predictive coding, a reference picture is determined, and motion vectors (MVs) identify samples in that reference picture used to generate predictions for the current video block. For example, reference sample values ​​located in one or more previously encoded pictures can be used to predict the current video block, and motion vectors are used to indicate the position of the reference block relative to the current video block. Motion vectors can describe, for example, the horizontal displacement component of the motion vector (i.e., MV). x ), the vertical displacement component of the motion vector (i.e., MV) y) and the resolution of the motion vector (e.g., quarter-pixel precision, half-pixel precision, one-pixel precision, two-pixel precision, four-pixel precision). Previously decoded pictures, which can include pictures output before or after the current picture, can be organized into one or more reference picture lists and identified using reference picture index values. Moreover, in inter prediction coding, single prediction refers to generating a prediction using sample values from a single reference picture and bi-prediction refers to generating a prediction using corresponding sample values from two reference pictures. That is, in single prediction, a single reference picture and corresponding motion vector are used to generate a prediction for a current video block, while in bi-prediction, a first reference picture and corresponding first motion vector and a second reference picture and corresponding second motion vector are used to generate a prediction for a current video block. In bi-prediction, the corresponding sample values are combined (e.g., added, rounded and clamped, or averaged according to weights) to generate the prediction. Pictures and regions thereof can be classified based on which types of prediction modes can be used to encode video blocks thereof. That is, for regions having a B type (e.g., B slices), bi-prediction, single prediction, and intra prediction modes can be utilized, for regions having a P type (e.g., P slices), single prediction and intra prediction modes can be utilized, and for regions having an I type (e.g., I slices), only intra prediction modes can be utilized. As noted above, reference pictures are identified by reference index. For example, for P slices, there can be a single reference picture list, RefPicListO, and for B slices, in addition to RefPicListO, there can be a second independent reference picture list, RefPicListl. It should be noted that for single prediction in B slices, one of RefPicListO or RefPicListl can be used to generate a prediction. Moreover, it should be noted that during the decoding process, when starting to decode a picture, the reference picture lists are generated from previously decoded pictures stored in a decoded picture buffer (DPB).

[0024] Furthermore, coding standards can support various motion vector prediction modes. Motion vector prediction enables derivation of a value for a motion vector of a current video block based on another motion vector. For example, a set of candidate blocks with associated motion information can be derived from spatially and temporally neighboring blocks of the current video block. Furthermore, the generated (or default) motion information can be used for motion vector prediction. Examples of motion vector prediction include advanced motion vector prediction (AMVP), temporal motion vector prediction (TMVP), so-called "merge" mode, and "skip" and "direct" motion inference. Furthermore, other examples of motion vector prediction include advanced temporal motion vector prediction (ATMVP) and spatial-temporal motion vector prediction (STMVP). For motion vector prediction, both the video encoder and the video decoder perform the same process to derive a set of candidates. Thus, for a current video block, the same set of candidates is generated during encoding and decoding.

[0025] As noted above, for inter prediction coding, reference samples in previously coded pictures are used to code a video block in a current picture. Previously coded pictures that are available as references when coding the current picture are referred to as reference pictures. It should be noted that the decoding order does not necessarily correspond to the picture output order, i.e., the temporal order of pictures in a video sequence. In ITU-T H.265, when a picture is decoded, it is stored to a decoded picture buffer (DPB) (which can be referred to as a frame buffer, reference buffer, reference picture buffer, etc.). In ITU-T H.265, pictures stored to the DPB are removed from the DPB when they are output and are no longer needed for coding subsequent pictures. In ITU-T H.265, a determination of whether a picture should be removed from the DPB is invoked once per picture after decoding the slice header, i.e., at the beginning of decoding a picture. For example, a reference Figure 2 , Pic2 is shown to reference Picl. Similarly, Pic3 is shown to reference PicO. With respect to Figure 2, assuming the number of pictures corresponds to the decoding order, the DPB would be populated as follows: after decoding PicO, the DPB would include {PicO}; at the start of decoding Picl, the DPB would include {PicO}; after decoding Picl, the DPB would include {PicO, Picl}; at the start of decoding Pic2, the DPB would include {PicO, Picl}. Pic2 would then be decoded with reference to Picl, and after decoding Pic2, the DPB would include {PicO, Picl, Pic2}. At the start of decoding Pic3, pictures PicO and Picl would be marked for removal from the DPB because they are not needed for decoding Pic3 (or any subsequent pictures, not shown), and assuming Picl and Pic2 have been output, the DPB would be updated to include {PicO}. Pic3 would then be decoded with reference to PicO. The process of marking pictures for removal from the DPB can be referred to as reference picture set (RPS) management.

[0026] As noted above, intra prediction data or inter prediction data is used to produce reference sample values for a block of sample values. The difference between sample values included in a current PB or another type of picture region structure and associated reference samples (e.g., those generated using prediction) can be referred to as residual data. Residual data can include a respective array of difference values corresponding to each component of the video data. Residual data can be in the pixel domain. A transform such as a discrete cosine transform (DCT), a discrete sine transform (DST), an integer transform, a wavelet transform, or a conceptually similar transform can be applied to the array of difference values to generate transform coefficients. It should be noted that in ITU-T H.265 and JVET-P2001, a CU is associated with a transform tree structure having its root at the CU’s level. The transform tree is partitioned into one or more transform units (TUs). That is, to generate transform coefficients, the array of difference values can be partitioned (e.g., four 8x8 transforms can be applied to a 16x16 array of residual values). Such sub-divisions of difference values can be referred to as transform blocks (TBs) for each component of the video data. It should be noted that in some cases, a core transform and a subsequent secondary transform can be applied (in a video encoder) to generate transform coefficients. For a video decoder, the order of the transforms is reversed.

[0027] The quantization process can be performed directly on transform coefficient or residual sample values (e.g., for palette coding quantization). Quantization approximates transform coefficients by limiting their amplitudes to a specified set of values. Quantization essentially scales transform coefficients in order to vary the amount of data needed to represent a set of transform coefficients. Quantization can include dividing transform coefficients (or values resulting from adding an offset value to transform coefficients) by a quantization scaling factor and any associated rounding function (e.g., rounding to the nearest integer). Quantized transform coefficients can be referred to as coefficient level values. Dequantization (or “dequantization”) can include multiplying coefficient level values by a quantization scaling factor, and any inverse rounding or offset addition operations. It should be noted that, as used herein, the term quantization process can refer to dividing by a scaling factor to generate level values in some cases, and multiplying by a scaling factor to recover transform coefficients in some cases. That is, the quantization process can refer to quantization in some cases, and dequantization in some cases. Furthermore, it should be noted that while the quantization process is described in some of the examples below with respect to arithmetic operations related to decimal notation, such descriptions are for illustrative purposes and should not be interpreted as limiting. For example, the techniques described herein can be implemented in devices that use binary operations, etc. For example, the multiplication and division operations described herein can be implemented using shift operations, etc.

[0028] Quantized transform coefficients and syntax elements (e.g., syntax elements indicative of a coding structure of a video block) can be entropy encoded according to an entropy encoding technique. The entropy encoding process includes encoding the values of the syntax elements using lossless data compression algorithms. Examples of entropy encoding techniques include content adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), probability interval partitioning entropy coding (PIPE), and the like. The entropy encoded quantized transform coefficients and corresponding entropy encoded syntax elements can form a compliant bitstream that can be used to reproduce the video data at a video decoder. The entropy encoding process, e.g., CABAC, can include binarization of the syntax elements. Binarization refers to the process of converting the value of a syntax element into a sequence of one or more bits. These bits can be referred to as “bins.” Binarization can include one or a combination of the following encoding techniques: fixed length encoding, unary encoding, truncated unary encoding, truncated Rice encoding, Golomb encoding, k-th order exponential Golomb encoding, and Golomb-Rice encoding. For example, binarization can include representing the integer value 5 of a syntax element as 00000101 using an 8-bit fixed length binarization technique, or as 11110 using a unary encoding binarization technique. As used herein, each of the terms fixed length encoding, unary encoding, truncated unary encoding, truncated Rice encoding, Golomb encoding, k-th order exponential Golomb encoding, and Golomb-Rice encoding can refer to general implementations of these techniques and / or more specific implementations of these encoding techniques. For example, a Golomb-Rice encoding implementation can be specifically defined according to a video coding standard. In the example of CABAC, for a particular bin, a context provides a most probable state (MPS) value for the bin (i.e., the MPS for the bin is one of 0 or 1), and a probability value for the bin being the MPS or a least probable state (LPS). For example, a context can indicate that the MPS for a bin is 0, and the probability of the bin being 1 is 0.3. It should be noted that the context can be determined based on values of previously encoded bins, including the current syntax element and previously coded syntax elements. For example, values of syntax elements associated with neighboring video blocks can be used to determine the context for a current bin.

[0029] With respect to the equations used herein, the following arithmetic operators can be used:

[0030] + addition

[0031] - subtraction

[0032] * multiplication, including matrix multiplication

[0033] x y power. x is designated as the power of y. In other contexts, such notation is used for superscripts and is not intended to be interpreted as a power.

[0034] / Integer division that rounds the result toward zero. For example, 7 / 4 and -7 / -4 are rounded to 1, and -7 / 4 and 7 / -4 are rounded to -1.

[0035] ÷ Used in mathematical formulas to denote division without implying truncation or rounding.

[0036] ÷ Used in mathematical formulas to denote division without implying truncation or rounding.

[0037] In addition, the following mathematical functions can be used:

[0038] Log2(x) Logarithm of x with base 2.

[0039]

[0040]

[0041] Ceil(x) The smallest integer greater than or equal to x.

[0042] With respect to the example syntax used herein, the following definitions of logical operators can apply:

[0043] x && y Boolean logical "and" of x and y

[0044] x || y Boolean logical "or" of x and y

[0045] ! Boolean logical "not"

[0046] x? y : z Evaluate to y if x is TRUE or not equal to 0; otherwise, evaluate to z.

[0047] In addition, the following relational operators can apply:

[0048] > Greater than

[0049] >= Greater than or equal to

[0050] < Less than

[0051] <= Less than or equal to

[0052] == Equal to

[0053] != Not equal to

[0054] In addition, it should be noted that in the syntax descriptors used herein, the following descriptors can apply:

[0055] -b(8): Byte (8 bits) with any bit string pattern. The parsing of this descriptor is specified by the return value of the function read_bit(8).

[0056] - f(n): fixed pattern bit string of n bits (from left to right) written from the leftmost bit. The parsing process of this descriptor is specified by the return value of the function read_bit(n).

[0057] - se(v): syntax element of signed integer 0th order Exp-Golomb coding, from the leftmost bit.

[0058] - tb(v): truncated binary code using at most maxVal bits, where maxVal is defined in the semantics of the syntax element.

[0059] - tu(v): truncated unary code using at most maxVal bits, where maxVal is defined in the semantics of the syntax element.

[0060] - u(n): unsigned integer using n bits. When n is "v" in the syntax table, the number of bits varies in a way that depends on the value of other syntax elements. The parsing process of this descriptor is specified by the return value of the function read_bits(n), which is interpreted as the binary representation of an unsigned integer written first with the most significant bits.

[0061] - ue(v): syntax element of unsigned integer 0th order Exp-Golomb coding, from the leftmost bit.

[0062] As mentioned above, a video content comprises a video sequence composed of a series of pictures, and each picture can be divided into one or more regions. In JVET-P2001, the coded representation of a picture is referred to as a coded picture, and all CTUs of a coded picture are encapsulated in one or more coded slice NAL units. That is, one or more corresponding coded slice NAL units encapsulate the coded representation of a picture. For example, referring again to Figure 2, the coded representation of Pic3 is encapsulated in three coded slice NAL units (i.e., slice 0 NAL unit, slice 1 NAL unit, and slice 2 NAL unit). It should be noted that the term video coding layer (VCL) NAL unit is used as a generalization of coded slice NAL units, i.e., VCL NAL is a generalization that includes all types of slice NAL units. As mentioned above, and described in further detail below, NAL units can encapsulate metadata for decoding video data. NAL units that encapsulate metadata for decoding a video sequence are often referred to as non-VCL NAL units. Thus, in JVET-P2001, a NAL unit can be a VCL NAL unit or a non-VCL NAL unit. It should be noted that a VCL NAL unit includes slice header data that provides information for decoding a particular slice. Thus, in JVET-P2001, information for decoding video data (which can be referred to as metadata in some cases) is not limited to being included in non-VCL NAL units. JVET-P2001 specifies that a picture unit (PU) is a set of NAL units containing all VCL NAL units of a coded picture and their associated non-VCL NAL units, and an access unit (AU) is a set of NAL units that are associated with each other according to a specified classification rule, are consecutive in decoding order, and each containing exactly one coded picture that is present. A PU consists of one picture header NAL unit, one coded picture (which is composed of one or more VCL NAL units), and zero or more non-VCL NAL units. Thus, in JVET-P2001, an access unit includes one or more coded pictures. In some cases, an access unit can include pictures that are included in different video layers. Video layers are described in further detail below. Furthermore, in JVET-P2001, a coded video sequence (CVS) is a sequence of AUs arranged in decoding order consisting of a CVS start (CVSS) AU and zero or more non-CVSS AUs following it (including all subsequent AUs up to, but not including, any subsequent AU that is a CVSS AU), where a CVS start (CVSS) AU is an AU in which picture units are present for each layer in the CVS, and the coded picture in each present picture unit is a coded layer video sequence start (CLVSS) picture. In JVET-P2001, a coded layer video sequence (CLVS) is a sequence of PUs within the same layer arranged in decoding order consisting of a CLVS start (CLVSS) PU and zero or more non-CLVSS PUs following it (including all subsequent PUs up to, but not including, any subsequent PU that is a CLVSS PU).That is, in JVET-P2001, a bitstream can be described as including a sequence of NAL units forming a CVS, where the CVS includes an AU, and each AU can include respective pictures for each of a plurality of layers of encoded video.

[0063] Multi-layer video coding enables a video presentation to be decoded / displayed as a presentation corresponding to a base layer of video data, and as one or more additional presentations corresponding to enhancement layers of video data. For example, a base layer can enable a video presentation to be presented with a basic level of quality (e.g., a high definition presentation and / or a 30 Hz frame rate), and an enhancement layer can enable a video presentation to be presented with an enhanced level of quality (e.g., an ultra-high definition rendering and / or a 60 Hz frame rate). The enhancement layer can be encoded by reference to the base layer. That is, for example, a picture in the enhancement layer can be encoded by reference to one or more pictures in the base layer (including scaled versions thereof) (e.g., using inter-layer prediction techniques). It should be noted that layers can also be encoded independently of one another. In this case, there can be no inter-layer prediction between the two layers. Each NAL unit can include an identifier indicating a layer of video data with which the NAL unit is associated. As noted above, a sub-bitstream extraction process can be used to decode and display only a particular region of interest of a picture. Further, a sub-bitstream extraction process can be used to decode and display only a particular video layer. Sub-bitstream extraction can refer to a process by which a device receiving a conforming or compliant bitstream forms a new conforming or compliant bitstream by discarding and / or modifying data in the received bitstream. For example, sub-bitstream extraction can be used to form a new conforming or compliant bitstream corresponding to a particular video representation (e.g., a high quality representation).

[0064] In JVET-P2001, each of video sequence, GOP, picture, slice and CTU can be associated with metadata describing video coding properties, and some types of metadata are encapsulated in non-VCL NAL units. JVET-P2001 defines parameter sets that can be used to describe video data and / or video coding properties. In particular, JVET-P2001 includes the following five parameter sets: a decoding parameter set (DPS), a video parameter set (VPS), a sequence parameter set (SPS), a picture parameter set (PPS), and an adaptation parameter set (APS), where SPS applies to zero or more integer number of CVSs, PPS applies to zero or more integer number of coded pictures, APS applies to zero or more slices, and DPS and VPS can be optionally referred to by SPS. PPS applies to the single coded picture referring to it. In JVET-P2001, parameter sets can be encapsulated as non-VCL NAL units and / or can be signaled as messages. JVET-P2001 also includes a picture header (PH) that is encapsulated as a non-VCL NAL unit. In JVET-P2001, picture header applies to all slices of a coded picture. Further, JVET-P2001 enables supplemental enhancement information (SEI) messages to be signaled. In JVET-P2001, SEI messages assist processes related to decoding, display, or other purposes, however, SEI messages can not be required to construct luma or chroma samples according to the decoding process. In JVET-P2001, SEI messages can be signaled in the bitstream using non-VCL NAL units. Further, SEI messages can be conveyed by some mechanism other than being present in the bitstream (i.e., signaled out-of-band).

[0065] Figure 3 An example of a bitstream including a plurality of CVSs is shown, where a CVS includes an AU, and an AU includes a picture unit. Figure 3 The example shown in corresponds to the example of a slice NAL unit encapsulated in a Figure 2 The example shown in corresponds to the example of a slice NAL unit encapsulated in a Figure 3 In the example shown in, the corresponding picture unit of Pic3 includes three VCL NAL coded slice NAL units, namely slice 0 NAL unit, slice 1 NAL unit and slice 2 NAL unit, and two non-VCL NAL units, namely PPS NAL unit and PH NAL unit. It should be noted that in Figure 3 , the header is a NAL unit header (i.e., not to be confused with a slice header). Further, it should be noted that in Figure 3In the example, other non-VCL NAL units not shown can be included in the CVS, such as SPS NAL units, VPS NAL units, SEI message NAL units, and so on. Also, it should be noted that in other examples, the PPS NAL unit used to decode Pic3 can be included elsewhere in the bitstream, such as in the picture unit corresponding to PicO, or can be provided by an external agency. However, it should be noted that in JVET-P2001, it is required that the picture header for each picture is in the picture unit corresponding to that picture.

[0066] JVET-P2001 defines NAL unit header semantics, which specifies the type of raw byte sequence payload (RBSP) data structure included in a NAL unit. Table 1 shows the syntax of the NAL unit header provided in JVET-P2001.

[0067]

[0068]

[0069] Table 1

[0070] JVET-P2001 provides the following definitions for the respective syntax elements shown in Table 1.

[0071] forbidden_zero_bit shall be equal to 0.

[0072] nuh_reserved_zero_bit shall be equal to '0'. Value 1 of nuh_reserved_zero_bit can be specified by ITU-T | ISO / IEC in the future. Decoders shall ignore (i.e., remove from the bitstream and discard) NAL units with nuh_reserved_zero_bit equal to '1'.

[0073] nuh_layer_id specifies the identifier of the layer to which a VCL NAL unit belongs or the identifier of the layer to which a non-VCL NAL unit applies. The value of nuh_layer_id shall be in the range of 0 to 56, inclusive. Other values for nuh_layer_id are reserved for future use by ITU-T | ISO / IEC.

[0074] 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 PU is the value of nuh_layer_id for the VCL NAL units of the coded picture or PU.

[0075] The value of nuh_layer_id for a non-VCL NAL unit is constrained as follows:

[0076] - If nal unit type is equal to PPS NUT, PREFIX APS NUT, or SUFFIX APS NUT, nuh layer id shall be equal to the lowest nuh layer id value of the coded slice NAL units referring to the NAL unit.

[0077] - Otherwise, if nal unit type is equal to SPS NUT, nuh layer id shall be equal to the lowest nuh layer id value of the PPS NAL units referring to the SPS NAL unit.

[0078] - 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.

[0079] NOTE - The value of nuh layer id for DPS, VPS, EOB, and AUD NAL units is not restricted.

[0080] The value of nal unit type shall be the same for all pictures of a CVS.

[0081] nuh temporal id plusl minus 1 specifies the temporal identifier of the NAL unit.

[0082] The value of nuh temporal id plusl shall not be equal to 0.

[0083] The variable Temporalld is derived as follows:

[0084] Temporalld = nuh temporal id plusl - 1

[0085] When nal unit type is in the range of IDR W RADL to RS V IRAP 12, inclusive, Temporalld shall be equal to 0.

[0086] When nal unit type is equal to STSA NUT, Temporalld shall be equal to 0.

[0087] The value of Temporalld shall be the same for all VCL NAL units of an AU. The value of Temporalld for a coded picture, PU, or AU is the value of Temporalld for the VCL NAL units of the coded picture, PU, or AU. The value of Temporalld for a sub-layer representation is the maximum value of Temporalld for all VCL NAL units in the sub-layer representation.

[0088] The value of Temporalld for a non-VCL NAL unit is constrained as follows:

[0089] - If nal unit type is equal to DPS 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.

[0090] - Otherwise, if nal unit type is equal to PH NUT, Temporalld shall be equal to the Temporalld of the PU containing the NAL unit.

[0091] - Otherwise, if nal unit type is equal to EOS NUT or EOB NUT, Temporalld shall be equal to 0.

[0092] - 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.

[0093] - 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.

[0094] NOTE - When a 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 containing AU, as all PPSs and APSs can be included in the beginning of the bitstream (e.g., when they are conveyed out-of-band and the receiver places them at the beginning of the bitstream), with the first coded picture having a Temporalld equal to 0.

[0095] 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 2.

[0096] NAL units with nal_unit_type in the range of UNSPEC28...UNSPEC31, inclusive, for which the semantics are not specified, shall have no impact on the decoding process specified in this Specification.

[0097] NOTE - NAL unit types in the range of UNSPEC28...UNSPEC31 can be used as determined by the application. The decoding process for these values of nal_unit_type is not 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 with these nal_unit_type values and when designing decoders that interpret the content of NAL units with these nal_unit_type values. This Specification does not define any management of these values. These nal_unit_type values can only be appropriate in contexts where "conflict" (i.e., different definitions of the meaning of the content of NAL units of the same nal_unit_type value) is not important, or not possible, or managed, e.g., defined or managed in a control application or transport specification, or by the environment controlling the distribution of bitstreams.

[0098] For purposes other than determining the amount of data in the decoding units of a bitstream, decoders shall ignore (remove from the bitstream and discard) the content of all NAL units that use reserved values of nal_unit_type.

[0099] NOTE - This requirement allows for future definition of compatible extensions of this Specification.

[0100]

[0101]

[0102] Table 2

[0103] NOTE - A clean random access (CRA) picture can have an associated RASL or RADL picture present in the bitstream. NOTE - An instantaneous decoding refresh (IDR) picture with nal_unit_type equal to IDR N LP has no associated leading pictures present in the bitstream. An IDR picture with nal_unit_type equal to IDR W RADL has no associated RASL pictures present in the bitstream, but can have an associated RADL picture in the bitstream.

[0104] For VCL NAL units of any particular picture, the following applies:

[0105] - 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. The picture or PU is said to have the same NAL unit type as the coded slice NAL units of the picture or PU.

[0106] - Otherwise (mixed_nalu_types_in_pic_flag is equal to 1), one or more of the VCL NAL units shall all have a particular value of nal_unit_type in the range of IDR W RADL to CRA NUT, inclusive, and the other VCL NAL units shall all have a particular value of nal_unit_type in the range of TRAIL NUT to RS V VCL 6, inclusive, or equal to GRA NUT.

[0107] For single-layer bitstreams, the following constraint applies:

[0108] - Each picture, except the first one, in the bitstream, arranged in decoding order, is considered to be associated with the previous IRAP picture arranged in decoding order.

[0109] - When a picture is a leading picture of a TRAP picture, the picture shall be a RADL or RASL picture.

[0110] - When a picture is a trailing picture of an IRAP picture, the picture shall not be a RADL or RASL picture.

[0111] - RASL pictures shall not be present in the bitstream that are associated with an IDR picture.

[0112] - RADL pictures shall not be present in the bitstream that are associated with an IDR picture with nal_unit_type equal to IDR N LP.

[0113] NOTE - Random access at the location of an IRAP PU can be performed by discarding all PUs preceding the IRAP PU (and correctly decoding the IRAP picture and all subsequent non-RASL pictures in decoding order), provided that each parameter set (either in the bitstream or by external means not specified in this Specification) is available when referenced.

[0114] - Any picture preceding the 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.

[0115] - Any RASL picture associated with a CRA picture shall precede any RADL picture associated with the CRA picture in output order.

[0116] - Any RASL picture associated with a CRA picture shall follow any IRAP picture preceding the CRA picture in decoding order in output order.

[0117] - If field_seq_flag is equal to 0 and the current picture is a leading picture associated with an IRAP picture, the current picture shall precede all non-leading pictures associated with the same IRAP picture in decoding order. Otherwise, let picA and picB be the first and last leading pictures associated with an IRAP picture in decoding order, there shall be at most one non-leading picture preceding picA in decoding order and there shall be no non-leading picture between picA and picB in decoding order.

[0118] It should be noted that, in general, an intra random access point (IRAP) picture is a picture that does not reference any picture other than itself for prediction in its decoding process. In JVET-P2001, an IRAP picture can be a clean random access (CRA) picture or an instantaneous decoding refresh (IDR) picture. In JVET-P2001, the first picture in a bitstream in decoding order must be an IRAP picture or a gradual decoding refresh (GDR) picture. JVET-P2001 describes the concept of a leading picture, which is a picture that precedes an associated IRAP picture in output order. JVET-P2001 also describes the concept of a trailing picture, which is a non-IRAP picture that follows an associated IRAP picture in output order. A trailing picture associated with an IRAP picture is also after the IRAP picture in decoding order. For an IDR picture, there are no trailing pictures that need to reference pictures decoded before the IDR picture. JVET-P2001 provides that a CRA picture can have leading pictures after the CRA picture in decoding order and contain inter-picture predictions that reference pictures decoded before the CRA picture. Thus, when a CRA picture is used as a random access point, these leading pictures can not be decodable and are identified as random access skipped leading (RASL) pictures. Another type of picture that can be after an IRAP picture in decoding order and before the IRAP picture in output order is a random access decodable leading (RADL) picture, which can not contain references to any pictures before the IRAP picture in decoding order. A GDR picture is a picture in which each VCL NAL unit has a nal unit type equal to GDR NUT. A picture picA is referred to as a recovery point picture if the current picture is a GDR picture associated with a picture header that signals the syntax element recovery poc cnt, and there exists a picture picA in the CLVS that follows the current GDR picture in decoding order and has a PicOrderCntVal equal to the PicOrderCntVal of the current GDR picture plus the recovery poc cnt.

[0119] As provided in Table 2, a NAL unit can include a sequence parameter set syntax structure. Table 3 illustrates a sequence parameter set syntax structure provided in JVET-P2001.

[0120]

[0121]

[0122]

[0123]

[0124]

[0125] Table 3

[0126] Regarding Table 3, JVET-P2001 provides the following semantics:

[0127] Before being referenced, an SPS RBSP shall be available for the decoding process, be included in at least one AU with Temporalld equal to 0 or be provided through external means.

[0128] All SPS NAL units with a particular value of sps_seq_parameter_set_id in a CVS shall have the same content.

[0129] sps_decoding_parameter_set_id. When sps_decoding_parameter_set_id is greater than 0, it specifies the value of dps_decoding_parameter_set_id of the DPS referred to by the SPS. When sps_decoding_parameter_set_id is equal to 0, the SPS does not refer to a DPS, and no DPS is referred to when decoding each CLVS referring to the SPS. The value of sps_decoding_parameter_set_id shall be the same in all SPS referred to by coded pictures in the bitstream.

[0130] When sps_video_parameter_set_id is greater than 0, it specifies the value of vps_video_parameter_set_id of the VPS referred to by the SPS.

[0131] When sps_video_parameter_set_id is equal to 0, the following applies:

[0132] - The SPS does not refer to a VPS.

[0133] - No VPS is referred to when decoding each CLVS referring to the SPS.

[0134] - The value of vps_max_layers_minus1 is inferred to be equal to 0.

[0135] - The CVS shall contain only one layer (i.e., all VCL NAL units in the CVS shall have the same nuh_layer_id value).

[0136] - The value of GeneralLayerld[nuh_layer_id] is inferred to be equal to 0.

[0137] - Infer the value of vps_independent_layer_flag[ GeneralLayerldx[ nuh layer id ] ] to be equal to 1.

[0138] When vps_independent_layer_flag[ GeneralLayerldx[ nuh layer id ] ] is equal to 1, an SPS with a particular nuh layer id value nuhLayerld referenced by a CLVS shall have nuh layer id equal to nuhLayerld.

[0139] sps_max_sub_layers_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_sub_layers_minus1 shall be in the range of 0 to vps_max_sub_layers_minus1, inclusive.

[0140] In bitstreams conforming to this version of this Specification, sps_reserved_zero_4bits shall be equal to 0. Other values of sps_reserved_zero_4bits are reserved for future use by ITU-T | ISO / IEC.

[0141] 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 are also present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these syntax structures is present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to vps_independent_layer_flag[ nuh layer id ].

[0142] If vps_independent_layer_flag[ GeneralLayerldx[ nuh layer id ] ] is equal to 1, the variable MaxDecPicBuffMinusl is set to equal to max_dec_pic_buffering_minusl[ sps_max_sub_layers_minusl ] in the dpb_parameters( ) syntax structure in the SPS. Otherwise, MaxDecPicBuffMinusl is set to equal to max_dec_pic_buffering_minusl[ sps_max_sub_layers_minusl ] in the layer_nonoutput_dpb_params_idx[ GeneralLayerldx[ nuh layer id ] ]th dpb_parameters( ) syntax structure in the VPS.

[0143] 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 no GDR pictures are present in the CLVS referring to the SPS.

[0144] sps_seq_parameter_set_id provides an identifier of the SPS for other syntax elements to refer to.

[0145] Regardless of the nuh layer id value, SPS NAL units share the same value space of sps_seq_parameter_set_id.

[0146] chroma_format_idc specifies the chroma sampling relative to the luma sampling.

[0147] 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 particular colour_plane_id value.

[0148] NOTE - There is no correlation between the decoding process across colour planes with different colour_plane_id values. For example, the decoding process of a monochrome picture with one value of colour_plane_id does not use any data from a monochrome picture with a different colour_plane_id value for inter prediction.

[0149] The value of the variable ChromaArrayType is specified as follows according to the value of separate_colour_plane_flag:

[0150] - If separate_colour_plane_flag is equal to 0, ChromaArrayType is set equal to chroma format idc.

[0151] - Otherwise (separate_colour_plane_flag is equal to 1), ChromaArrayType is set equal to 0.

[0152] ref_pic_resampling_enabled_flag equal to 1 specifies that reference picture resampling can be applied when decoding coded pictures in the CLVS referring to the SPS. ref_pic_resampling_enabled_flag equal to 0 specifies that reference picture resampling is not applied when decoding coded pictures in the CLVS referring to the SPS.

[0153] pic_width_max_in_luma_samples specifies the maximum width, in luma samples, of each coded picture referring to the SPS. pic_width_max_in_luma_samples shall be equal to 0 and shall be an integer multiple of Max(8, MinCbSizeY).

[0154] pic_height_max_in_luma_samples specifies the maximum height, in luma samples, of each coded picture referring to the SPS. pic_height_max_in_luma_samples shall be equal to 0 and shall be an integer multiple of Max(8, MinCbSizeY).

[0155] sps_log2_ctu_size_minus5 plus 5 specifies the size of the luma coding tree blocks of each CTU. Bitstream conformance requires that the value of sps_log2_ctu_size_minus5 be less than or equal to 2.

[0156] The variables CtbLog2SizeY and CtbSizeY are derived as follows:

[0157] CtbLog2SizeY = sps_log2_ctu_size_minus5 + 5

[0158] CtbSizeY = 1 « CtbLog2SizeY

[0159] subpics_present_flag equal to 1 specifies that subpicture parameters are present in the SPS RBSP syntax. subpics_present_flag equal to 0 specifies that subpicture parameters are not present in the SPS RBSP syntax.

[0160] NOTE - When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the subpictures of the input bitstream to the sub-bitstream extraction process, it can be necessary to set the value of subpics_present_flag to 1 in the RBSP of the SPS.

[0161] sps_num_subpics_minus1 plus 1 specifies the number of subpictures, sps_num_subpics_minus1 shall be in the range of 0 to 254. When not present, the value of sps_num_subpics_minus1 is inferred to be equal to 0.

[0162] subpic_ctu_top_left_x[ i ] specifies the horizontal position, in units of CtbSizeY, of the top-left CTU of the i-th subpicture. The length of the syntax element is Ceil( Log2( pic_width_max_in_luma_samples / CtbSizeY ) ) bits. When not present, the value of subpic_ctu_top_left_x[ i ] is inferred to be equal to 0.

[0163] subpic_ctu_top_left_y[ i ] specifies the vertical position, in units of CtbSizeY, of the top-left CTU of the i-th subpicture. The length of the syntax element is Ceil( Log2( pic_height_max_in_luma_samples / CtbSizeY ) ) bits. When not present, the value of subpic_ctu_top_left_y[ i ] is inferred to be equal to 0.

[0164] 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 ) ) bits. When not present, the value of subpic_width_minus1[ i ] is inferred to be equal to Ceil( pic_width_max_in_luma_samples / CtbSizeY ) - 1.

[0165] 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 ) ) bits. When not present, the value of subpic_height_minus1[ i ] is inferred to be equal to Ceil( pic_height_max_in_luma_samples / CtbSizeY ) - 1.

[0166] subpic_treated_as_pic_flag[ i ] equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process that does not include in-loop filtering operations. subpic_treated_as_pic_flag[ i ] equal to 0 specifies that the i-th subpicture of each coded picture in the CLVS is not treated as a picture in the decoding process that does not include in-loop filtering operations. When not present, the value of subpic_treated_as_pic_flag[ i ] is inferred to be equal to 0.

[0167] loop_filter_across_subpic_enabled_flag[ i ] equal to 1 specifies that in-loop filtering operations can be performed across the boundaries of the i-th subpicture of each coded picture in the CLVS. loop_filter_across_subpic_enabled_flag[ i ] equal to 0 specifies that in-loop filtering operations are not performed across the boundaries of the i-th subpicture of each coded picture in the CLVS. When not present, the value of loop_filter_across_subpic_enabled_pic_flag[ i ] is inferred to be equal to 1.

[0168] Bitstream conformance requires the following constraint to apply:

[0169] - For any two sub-pictures subpicA and subpicB, when the index of subpicA is less than the index of subpicB, any coded NAL unit of subPicA shall follow any coded NAL unit of subPicB in decoding order.

[0170] - The shape of a sub-picture shall be such that each sub-picture shall have its entire left and top borders, when decoded, consisting of picture borders or borders of previously decoded sub-pictures.

[0171] sps_subpic_id_present_flag equal to 1 specifies that sub-picture ID mapping is present in the SPS. sps_subpic_id_present_flag equal to 0 specifies that sub-picture ID mapping is not present in the SPS.

[0172] sps_subpic_id_signalling_present_flag equal to 1 specifies that sub-picture ID mapping is signaled in the SPS. sps_subpic_id_signalling_present_flag equal to 0 specifies that sub-picture ID mapping is not signaled in the SPS. When not present, the value of sps_subpic_id_signalling_present_flag is inferred to be equal to 0.

[0173] sps_subpic_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax element sps_subpic_id[ i ]. The value of sps_subpic_id_len_minus1 shall be in the range of 0 to 15, inclusive.

[0174] sps_subpic_id[ i ] specifies the sub-picture ID of the i-th sub-picture. The length of the sps_subpic_id[ i ] syntax element is sps_subpic_id_len_minus1 + 1 bits. When not present, and when sps_subpic_id_present_flag is equal to 0, for each i in the range of 0 to sps_num_subpics_minus1, inclusive, the value of sps_subpic_id[ i ] is inferred to be equal to i

[0175] bit_depth_minus8 specifies the bit depth of samples of luma and chroma arrays BitDepth and the value of luma and chroma quantization parameter range offset QpBdOffset as follows:

[0176] BitDepth = 8 + bit_depth_minus8

[0177] QpBdOffset = 6 * bit_depth_minus8

[0178] bit_depth_minus8 shall be in the range of 0 to 8, inclusive.

[0179] min_qp_prime_ts_minus4 specifies the minimum allowed quantization parameter for transform skip mode as follows:

[0180] QpPrimeTsMin = 4 + min_qp_prime_ts_minus4

[0181] The value of min_qp_prime_ts_minus4 shall be in the range of 0 to 48, inclusive.

[0182] 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.

[0183] 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.

[0184] log2_max_pic_order_cnt_lsb_minus4 specifies the value of the variable MaxPicOrderCntLsb used in the decoding process of picture order count as follows:

[0185] MaxPicOrderCntLsb = 2 (log2_max_pic_order_ent_lsb_minus4+4)

[0186] The value of log2_max_pic_order_cnt_lsb_minus4 shall be in the range of 0 to 12, inclusive.

[0187] sps_poc_msb_flag equal to 1 specifies that the ph_poc_msb_cycle_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_cycle_present_flag syntax element is not present in PH referring to the SPS.

[0188] poc_msb_len_minus1 plus 1 specifies the length, in bits, of the poc_msb_val syntax element when present in the PH referring to the SPS. The value of poc_msb_len_minus1 shall be in the range of 0 to 32 - log2_max_pic_order_cnt_lsb minus 4 - 5, inclusive.

[0189] sps_sub_layer_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_layer_dpb_params_info_present_flag is inferred to be equal to 0.

[0190] long_term_ref_pics_flag equal to 0 specifies that no LTRP is used for inter prediction of any coded picture in the 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 the CLVS.

[0191] inter_layer_ref_pics_present_flag equal to 0 specifies that no ILRP is used for inter prediction of any coded picture in the CLVS. inter_layer_ref_pics_flag equal to 1 specifies that ILRP 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.

[0192] sps_idr_rpl_present_flag equal to 1 specifies that the reference picture list syntax elements are present in the slice header of an IDR picture. sps_idr_rpl_present_flag equal to 0 specifies that the reference picture list syntax elements are not present in the slice header of an IDR picture.

[0193] rpl1_same_as_rpl0_flag equal to 1 specifies that the syntax element num_ref_pic_lists_in_sps[1] and the syntax structure ref_pic_list_struct(1, rplsldx) are not present, the following applies:

[0194] - 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].

[0195] - the value of each of the syntax elements in ref_pic_list_struct(1, rplsldx) is inferred to be equal to the value of the corresponding syntax element in ref_pic_list_struct(0, rplsldx) for rplsldx ranging from 0 to num_ref_pic_lists_in_sps[0] - 1.

[0196] num_ref_pic_lists_in_sps[ i ] specifies the number of ref_pic_list_struct( listldx, rplsldx ) syntax structures included in the SPS, where listldx is equal to i. The value of num_ref_pic_lists_in_sps[ i ] shall be in the range of 0 to 64, inclusive.

[0197] NOTE - For each value of listldx (equal to 0 or 1), the decoder shall allocate memory for a total of num_ref_pic_lists_in_sps[ i ] + 1 syntax structures ref_pic_list_struct( listldx, rplsldx ) because there can be one ref_pic_list_struct( listldx, rplsldx ) syntax structure directly signaled in the slice header of the current picture.

[0198] qtbtt_dual_tree_intra_flag equal to 1 specifies that, for I slices, each CTU is partitioned into coding units with 64x64 luma samples using implicit quad-tree partitioning and that these coding units are 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.

[0199] 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 Log2_ctu_size_minus5 + 3, inclusive.

[0200] The variables MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC and Vsize are derived as follows:

[0201] MinCbLog2SizeY = Log2_min_luma_coding_block_size_minus2 + 2

[0202] MinCbSizeY = 1 « MinCbLog2SizeY

[0203] IbcBufWidthY = 256 * 128 / CtbSizeY

[0204] IbcBufWidthC = IbcBufWidthY / SubWidthC

[0205] VSize = Min(64, CtbSizeY)

[0206] The value of MinCbSizeY shall be less than or equal to VSize.

[0207] The variables CtbWidthC and CtbHeightC specify the width and height of the array of each chroma CTB, respectively, and are derived as follows:

[0208] - 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.

[0209] - Otherwise, CtbWidthC and CtbHeightC are derived as follows:

[0210] CtbWidthC = CtbSizeY / SubWidthC

[0211] CtbHeightC = CtbSizeY / SubHeightC

[0212] For log2BlockWidth in the range of 0 to 4 and log2BlockHeight in the range of 0 to 4, inclusive, call the specified diagonal and raster scan order array initialization process with 1 « log2BlockWidth and 1 « log2BlockHeight as inputs and assign the output to DiagScanOrder[log2BlockWidth][log2BlockHeight] and Raster2DiagScanPos[log2BlockWidth][log2BlockHeight], respectively.

[0213] For log2BlockWidth in the range of 0 to 6 and log2BlockHeight in the range of 0 to 6, inclusive, call the specified horizontal and vertical traverse scan order array initialization process with 1 « log2BlockWidth and 1 « log2BlockHeight as inputs and assign the output to HorTravScanOrder[log2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight], respectively.

[0214] 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.

[0215] sps_log2_diff_min_qt_min_cb_intra_slice_luma specifies the default difference between the base-2 logarithm of the minimum size in luma samples of the luma samples of a luma leaf block resulting from quadtree partitioning of a CTU and the base-2 logarithm of the minimum coding block size in luma samples of a luma CU in a slice with slice_type equal to 2 (I) referring to the SPS, when partition_constraints_override_enabled_flag is equal to 0. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by pic_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 in luma samples of the luma samples of a luma leaf block resulting from quadtree partitioning of a CTU is derived as follows:

[0216] MinQtLog2SizeIntraY = sps_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY

[0217] sps_log2_diff_min_qt_min_cb_inter_slice specifies the default difference between the base-2 logarithm of the minimum size in luma samples of the luma samples of a luma leaf block resulting from 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 0. When partition_constraints_override_enabled_flag is equal to 1, the default difference can be overridden by pic_og2_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 the luma samples of a luma leaf block resulting from quadtree partitioning of a CTU is derived as follows:

[0218] MinQtLog2SizeInterY = sps_log2_diff_min_qt_min_cb_inter_slice + MinCbLog2SizeY

[0219] sps_max_mtt_hierarchy_depth_inter_slice specifies the default maximum hierarchy depth of coding units resulting from multi-type tree partitioning of quad-tree leaves in slices of 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 pic_max_mtt_hierarchy_depth_inter_slice present in the PH referring to the SPS. The value of sps_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive.

[0220] sps_max_mtt_hierarchy_depth_intra_slice_luma specifies the default maximum hierarchy depth of coding units resulting from multi-type tree partitioning of quad-tree leaves in slices of 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 pic_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 CtbLog2SizeY - MinCbLog2SizeY, inclusive.

[0221] sps_log2_diff_max_bt_min_qt_intra_slice_luma specifies the default difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a luma coding block that can use binary splitting and the base-2 logarithm of 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 2 (I) referring to the SPS. When partition_constraints_override_enabled_flag is equal to 1, this default difference can be overridden by pic_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.

[0222] sps_log2_diff_max_bt_min_qt_intra_slice_luma specifies the default difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a luma coding block that can use ternary splitting and the base-2 logarithm of 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 2 (I) referring to the SPS. When partition_constraints_override_enabled_flag is equal to 1, this default difference can be overridden by pic_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_lmna is not present, the value of sps_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to 0.

[0223] sps_log2_diff_max_bt_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 that can use binary splitting and the base-2 logarithm of 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, this default difference can be overridden by pic_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_inter_slice shall be in the range of 0 to ClbLog2SizeY-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.

[0224] sps_log2_diff_max_bt_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 that can use binary splitting and the base-2 logarithm of 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, this default difference can be overridden by pic_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_inter_slice shall be in the range of 0 to ClbLog2SizeY-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.

[0225] 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 luma 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 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, this default difference can be overridden by pic_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 luma leaf block resulting from quad-tree partitioning of a CTU with treeType equal to DUAL_TREE_CHROMA is derived as follows:

[0226] MinQtLog2SizeIntraC = sps_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY

[0227] sps_max_mtt_hierarchy_depth_intra_slice_chroma specifies the default maximum hierarchy depth of the chroma coding units resulting from multi-type tree partitioning of the chroma quad-tree leaves with treeType equal to DUAL_TREE_CHROMA in slices of 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 pic_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 CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of sps_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to 0.

[0228] sps_log2_diff_max_bt_min_qt_intra_slice_chroma specifies the default difference, in base 2 logarithm, between 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 quad-tree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in slices of 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 pic_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.

[0229] 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 is available and the base-2 logarithm of the minimum size (width or height) in luma samples of a chroma leaf block resulting from 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, this default difference can be overridden by pic_log2_diff_max_tt_min_qt_chroma present in the PH referring to the SPS. 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.

[0230] sps_max_luma_transform_sizc_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.

[0231] When CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag shall be equal to 0.

[0232] The variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY and MaxTbSizeY are derived as follows:

[0233] MinTbLog2SizeY = 2

[0234] MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag? 6 : 5

[0235] MinTbSizeY = 1 « MinTbLog2SizeY

[0236] MaxTbSizeY = 1 « MaxTbLog2SizeY

[0237] sps_joint_cbcr_enabled_flag equal to 0 specifies that joint coding of chrominance residuals is disabled. spsjoint_cbcr_enabled_flag equal to 1 specifies that joint coding of chrominance residuals is enabled.

[0238] same_qp_table_for_chroma equal to 1 specifies that only one chroma QP mapping table is signaled and this table applies to Cb and Cr residuals as well as joint Cb-Cr residuals. same_qp_table_for_chroma equal to 0 specifies that three chroma QP mapping tables are signaled in the SPS. 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.

[0239] qp_table_start_minus26[ i ] plus 26 specifies the starting luma and chroma QPs for describing the i-th chroma QP mapping table. The value of qp_table_start_minus26[ i ] shall be in the range of -26 - QpBdOffsetC 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.

[0240] num_points_in_qp_table_minus1[ i ] plus 1 specifies the number of points for describing 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.

[0241] 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.

[0242] 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. When delta_qp_out_val[ 0 ][ j ] is not present in the bitstream, the value of delta_qp_out_val[ 0 ][ j ] is inferred to be equal to 0.

[0243] The i-th chroma QP mapping table, ChromaQpTable[ i ], is derived as follows, where i = 0.. same_qp_table_for_chroma? 0 : 2:

[0244]

[0245] When same_qp_table_for_chroma is equal to 1, ChromaQpTable[ 1 ][ k ] and ChromaQpTable[ 2 ][ k ] are set equal to ChromaQpTable[ 0 ][ k ], where k = - QpBdOffset.. 63.

[0246] Bitstream conformance requirement, the values of qpInVal[ i ][ j ] and qpOutVal[ i ][ j ] shall be in the range of - QpBdOffset to 63, inclusive, where i = 0.. same_qp_table_for_chroma? 0 : 2, and j = 0.. num_points_in_qp_table_minus1[ i ] + 1.

[0247] sps_sao_enabled_flag equal to 1 specifies that the sample adaptive offset process is applied to the reconstructed picture after the deblocking filter 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 filter process.

[0248] sps_alf_enabled_flag equal to 0 specifies that the adaptive loop filter is disabled. sps_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled.

[0249] sps_trans_form_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

[0250] sps_bdpcm_enabled_flag equal to 1 specifies that intra bdpcm luma flag can be present in the coding unit syntax for intra coded units. sps bdpcm enabled flag equal to 0 specifies that intra bdpcm luma flag is not present in the coding unit syntax for intra coded units. When not present, the value of sps bdpcm enabled flag is inferred to be equal to 0.

[0251] sps bdpcm chroma enabled flag equal to 1 specifies that intra bdpcm chroma flag can be present in the coding unit syntax for intra coded units. sps bdpcm chroma enabled flag equal to 0 specifies that intra bdpcm chroma flag is not present in the coding unit syntax for intra coded units. When not present, the value of sps bdpcm chroma enabled flag is inferred to be equal to 0.

[0252] sps_ref_wraparound_enablcd_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 less than or equal to (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.

[0253] sps_ref_wraparound_offset_minus1 plus 1 specifies the offset in units of MinCbSizeY luma samples for calculating the horizontal wraparound position. The value of ref_wraparound_offset_minus1 shall be in the range of (CtbSizeY / MinCbSizeY)+1 to (pic_width_in_luma_samples / MinCbSizeY)-1, inclusive, where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS referring to the SPS.

[0254] sps_temporal_mvp_enabled_flag equal to 1 specifies that temporal motion vector predictors can be used in the CLVS. sps_temporal_mvp_enabled_flag equal to 0 specifies that temporal motion vector predictors are not used in the CLVS.

[0255] sps_sbtmvp_enabled_flag equal to 1 specifies that subblock-based temporal motion vector predictors can be used in picture decoding in the CLVS, where all slices have slice_type not equal to I. sps_sbtmvp_enabled_flag equal to 0 specifies that subblock-based temporal motion vector predictors are not used in the CLVS. When sps_sbtmvp_enabled_flag is not present, it is inferred to be equal to 0.

[0256] 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.

[0257] 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.

[0258] sps_bdof_pic_present_flag equal to 1 specifies that pic disable bdof flag is present in the PH referring to the SPS. sps_bdof_pic_present_flag equal to 0 specifies that pic disable bdof flag is not present in the 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.

[0259] sps_smvd_enabled_flag equal to 1 specifies that symmetric motion vector difference can be used in motion vector decoding. sps_smvd_enabled_flag equal to 0 specifies that symmetric motion vector difference is not used in motion vector coding.

[0260] sps_dmvr_enabled_flag equal to 1 specifies that decoder motion vector refinement based inter bi-prediction is enabled. sps_dmvr_enabled_flag equal to 0 specifies that decoder motion vector refinement based inter bi-prediction is disabled.

[0261] sps_dmvr_pic_present_flag equal to 1 specifies that pic disable dmvr flag is present in the PH referring to the SPS. sps_dmvr_pic_present_flag equal to 0 specifies that pic 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.

[0262] 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.

[0263] sps_isp_enabled_flag equal to 1 specifies that intra prediction with sub-partition is enabled. sps_isp_enabled_flag equal to 0 specifies that intra prediction with sub-partition is disabled.

[0264] sps_mrl_enabled_flag equal to 1 specifies that intra prediction with multiple reference lines is enabled. sps_inrl_enabled_flag equal to 0 specifies that intra prediction with multiple reference lines is disabled.

[0265] 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.

[0266] 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.

[0267] sps_cclm_colocated_chroma_flag equal to 1 specifies that the down-sampled luma sample in the top-left corner of the cross-component linear model intra prediction is co-located with the luma sample in the top-left corner. sps_cclm_colocated_chroma_flag equal to 0 specifies that the down-sampled luma sample in the top-left corner of the cross-component linear model intra prediction is horizontally co-located with the luma sample in the top-left corner, but vertically shifted by 0.5 luma sample unit with respect to the luma sample in the top-left corner.

[0268] 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.

[0269] sps_explicit_mts_intra_enabled_flag equal to 1 specifies that mts idx can be present in the intra coded unit syntax, sps_explicit_mts_intra_enabled_flag equal to 0 specifies that mts idx is not present in the intra coded unit syntax. When not present, the value of sps_explicit_mts_intra_enabled_flag is inferred to be equal to 0.

[0270] sps_explicit_mts_inter_enabled_flag equal to 1 specifies that mts idx can be present in the inter coded unit syntax, sps_explicit_mts_inter_enabled_flag equal to 0 specifies that mts idx is not present in the inter coded unit syntax. When not present, the value of sps_explicit_mts_inter_enabled_flag is inferred to be equal to 0.

[0271] sps_sbt_enabled_flag equal to 0 specifies that sub-block transform for inter prediction CUs is disabled. sps_sbt_enabled_flag equal to 1 specifies that sub-block transform for inter prediction CUs is enabled.

[0272] 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 coding unit syntax of the CLVS. Otherwise (sps_affine_enabled_flag is equal to 1), affine model based motion compensation can be used in the CLVS.

[0273] 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.

[0274] 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_affinc_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.

[0275] sps_affine_prof_enabled_flag specifies whether prediction refinement with optical flow can be used for affine motion compensation. If sps_affine_prof_enabled_flag is equal to 0, optical flow is not applied to refine affine motion compensation. Otherwise (sps_affine_prof_enabled_flag is equal to 1), optical flow can be applied to refine affine motion compensation. When not present, the value of sps_affine_prof_enabled_flag is inferred to be equal to 0.

[0276] sps_prof_pic_present_flag equal to 1 specifies that pic_disable_prof_flag is present in the PH referring to the SPS. sps_prof_pic_present_flag equal to 0 specifies that pic_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.

[0277] 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.

[0278] sps_act_enabled_flag specifies whether adaptive color transform is enabled. If sps_act_enabled_flag is equal to 1, adaptive color transform can be used and the flag cu_act_enabled_flag can be present in the coding unit syntax. If sps_act_enabled_flag is equal to 0, 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.

[0279] 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.

[0280] sps_ibc_enabled_flag equal to 1 specifies that IBC prediction mode can be used in 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.

[0281] 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.

[0282] sps_fpel_mmvd_enabled_flag equal to 1 specifies that the merge mode with motion vector difference is using integer sample precision. sps_fpel_mmvd_enabled_flag equal to 0 specifies that the merge mode with motion vector difference can use fractional sample precision.

[0283] sps_triangle_enabled_flag specifies whether triangle shape based motion compensation can be used for inter prediction. sps_triangle_enabled_flag equal to 0 specifies that the syntax shall be constrained such that triangle shape based motion compensation is not used in the CLVS and merge_triangle_split_dir, merge_triangle_idx0 and merge_triangle_idx1 are not present in the coding unit syntax of the CLVS. sps_triangle_enabled_flag equal to 1 specifies that triangle shape based motion compensation can be used in the CLVS.

[0284] 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.

[0285] sps_lfnst_enabled_flag equal to 1 specifies that Ifnst_idx can be present in the intra coding unit syntax. sps_lfnst_enabled_flag equal to 0 specifies that Ifnst_idx is not present in the intra coding unit syntax.

[0286] 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.

[0287] sps_num_ladf_intervals_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.

[0288] sps_ladf_lowest_interval_qp_offset specifies the offset used to derive the variable qP as specified. The value of sps_ladf_lowest_interval_qp_offset shall be in the range of 0 to 63, inclusive.

[0289] sps_ladf_qp_offset[ i ] specifies an offset array used to derive the variable qP as specified. The value of sps_ladf_qp_offset[ i ] shall be in the range of 0 to 63, inclusive.

[0290] sps_ladf_delta_threshold_minusl[ 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_minusl[ i ] shall be in the range of 0 to 2 BitDep , inclusive.

[0291] The value of SpsLadfIntervalLowerBound[ 0 ] is set equal to 0.

[0292] For each value of i in the range of 0 to sps_num_ladf_intervals_minus2, inclusive, the variable SpsLadfIntervalLowerBound[ i + 1 ] is derived as follows:

[0293] SpsLadfIntervalLowerBound[ i + 1 ] = SpsLadfIntervalLowerBound[ i ] + sps_ladf_delta_threshold_minusl[ i ] + 1

[0294] sps_scaling_list_enabled_flag equal to 1 specifies that a scaling list is used for the scaling process of transform coefficients. sps_scaling_list_enabled_flag equal to 0 specifies that a scaling list is not used for the scaling process of transform coefficients.

[0295] sps_loop_filter_across_virtual_boundaries_disabled_present_flag equal to 1 specifies that the in-loop filtering operations are disabled across virtual boundaries in pictures referring to the SPS. sps_loop_filter_across_virtual_boundaries_disabled_present_flag equal to 0 specifies that such disabling of in-loop filtering operations does not apply in pictures referring to the SPS. In-loop filtering operations include the deblocking filter, the sample adaptive offset filter, and the adaptive loop filter operations.

[0296] 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.

[0297] sps_virtual_boundaries_pos_x[ i ] is used to calculate the value of VirtualBoundariesPosX[ i ], which specifies the position of the i-th vertical virtual boundary in units of luma samples. sps_virtual_boundaries_pos_x[ i ] shall be in the range of 1 to Ceil( pic_width_in_luma_samples ÷ 8 ) - 1, inclusive.

[0298] sps_num_hor_virtual_boundaries specifies the number of sps_virtual_boundarics_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.

[0299] sps_virtual_boundaries_pos_y[ i ] is used to calculate the value of VirtualBoundariesPosY[ i ], which specifies the position of the i-th horizontal virtual boundary in units of luma samples. sps_virtual_boundarics_pos_y[ i ] shall be in the range of 1 to Ceil( pic_height_in_luma_samples ÷ 8 ) - 1, inclusive.

[0300] 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.

[0301] sps sub layer cpb params present flag equal to 1 specifies that the syntax structure old_hrd_parameters( ) in the SPS RBSP includes HRD parameters for sub-layer representations with Temporalld in the range of 0 to sps max sublayers minus 1, inclusive. sps sub layer cpb params present flag equal to 0 specifies that the syntax structure ols_hrd_parameters( ) in the SPS RBSP includes HRD parameters for sub-layer representations with Temporalld equal to sps max sub layers minus 1 only. When sps max sub layers minus 1 is equal to 0, the value of sps sub layer cpb params present flag is inferred to be equal to 0.

[0302] When sps sub layer cpb params present flag is equal to 0, the HRD parameters for sub-layer representations with Temporalld in the range of 0 to sps max sub layers minus 1 - 1, inclusive, are inferred to be the same as the HRD parameters for the sub-layer representation with Temporalld equal to sps max sub layers minus 1. These parameters include the HRD parameters in the SPS RBSP starting with the fixed_pic_rate_gencral_flag[ i ] syntax element immediately following the conditional "if( general_vcl_hrd_params_present_flag )" in the ols_hrd_parameters syntax structure, and up to the sub_layer_hrd_parameters( i ) syntax structure.

[0303] vui_parameters_present_flag equal to 1 specifies that the syntax structure vui_parameters( ) is present in the SPS RBSP syntax structure. vui_parameters_present_flag equal to 0 specifies that the syntax structure vui_parameters( ) is not present in the SPS RBSP syntax structure.

[0304] sps_extension_flag equal to 0 specifies that the sps_extension_data_flag syntax structure is not present in the SPS RBSP syntax structure. sps_extension_flag equal to 1 specifies that the sps_extension_data_flag syntax structure is present in the SPS RBSP syntax structure.

[0305] sps_extension_data_flag can have any value. Its presence and value do not affect decoders conforming to this version of this Specification to the specified profiles. Decoders conforming to this version of this Specification shall ignore all sps_extension_data_flag syntax elements.

[0306] As provided in Table 2, a NAL unit can include a picture parameter set syntax structure. Table 4 shows the picture parameter set syntax structure provided in JVET-P2001.

[0307]

[0308]

[0309]

[0310] Table 4

[0311] With respect to Table 4, JVET-P2001 provides the following semantics:

[0312] 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.

[0313] All PPS NAL units with the particular value of pps_pic_parameter_set_id within a PU shall have the same content.

[0314] pps_pic_parameter_set_id identifies the PPS for other syntax elements to refer to. The value of pps_pic_parameter_set_id shall be in the range of 0 to 63, inclusive.

[0315] Regardless of the nuh layer id value, PPS NAL units share the same value space for pps_pic_parameter_set_id.

[0316] pps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_id of the SPS. The value of pps_seq_parameter_set_id shall be in the range of 0 to 15, inclusive. The value of pps_seq_parameter_set_id shall be the same in all PPS referred to by the coded pictures in a CL VS.

[0317] 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.

[0318] When subpics_present_flag is equal to 1 or ref_pic_resampling_enabled_flag is equal to 0, the value of pic_width_in_luma_samples shall be equal to pic_width_max_in_luma_samples.

[0319] 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_sample 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.

[0320] When subpics_present_flag is equal to 1 or ref_pic_resampling_enabled_flag is equal to 0, the value of pic_height_in_luma_samples shall be equal to pic_height_max_in_luma_samples.

[0321] Let refPicWidthlnLumaSamples and refPicHeightlnLumaSamples be pic_width_in_luma_samples and pic_height_in_luma_samples of the reference picture of the current picture referring to this PPS. Bitstream conformance requires that all of the following conditions are met:

[0322] - pic_width_in_luma_samples * 2 shall be greater than or equal to refPicWidthlnLumaSamples.

[0323] - pic_height_in_luma_samples * 2 shall be greater than or equal to refPicHeightlnLumaSamples.

[0324] - pic_width_in_luma_samples shall be less than or equal to refPicWidthlnLumaSamples * 8.

[0325] - pic_height_in_luma_samples shall be less than or equal to refPicHeightlnLumaSamples * 8.

[0326] The variables PicWidthlnCtbsY, PicHeightlnCtbsY, PicSizelnCtbsY, PicWidthlnMinCbsY, PicHeightlnMinCbsY, PicSizelnMinCbsY, PicSizelnSamplesY, PicWidthlnSamplesC and PicHeightlnSamplesC are derived as follows:

[0327] PicWidthlnCtbsY = Ceil( pic_width_in_luma_samples + CtbSizeY )

[0328] PicHeightlnCtbsY = Ceil( pic_height_in_luma_samples + CtbSizeY )

[0329] PicSizelnCtbsY = PicWidthlnCtbsY * PicHeightlnCtbsY

[0330] PicWidthlnMinCbsY = pic_width_in_luma_samples / MinCbSizeY

[0331] PicHeightlnMinCbsY = pic_height_in_luma_samples / MinCbSizeY

[0332] PicSizelnMinCbsY = PicWidthlnMinCbsY * PicHeightlnMinCbsY

[0333] PicSizelnSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples

[0334] PicWidthlnSamplesC = pic_width_in_luma_samples / SubWidthC

[0335] PicHeightlnSamplesC = pic_height_in_luma_samples / SubHeightC

[0336] conformance_window_flag equal to 1 specifies that in-spu conformance window offset parameters follow. conformance_window_flag equal to 0 specifies that no in-spu conformance window offset parameters are present.

[0337] conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, and conf_win_bottom_offset specify, in terms of a rectangular region specified in the picture coordinates of the picture to be output, the samples of the picture from the decoded process in the CLVS. When conformance_window_flag is equal to 0, the values of conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, and conf_win_bottom_offset are inferred to be equal to 0.

[0338] The in-picture cropping window contains luma samples with horizontal picture coordinates from SubWidthC * conf win left offset to pic width in luma samples - (SubWidthC * conf win right offset + 1) and vertical picture coordinates from SubHeightC * conf win top offset to pic height in luma samples - (SubHeightC * conf win bottom offset + 1), inclusive.

[0339] The value of SubWidthC * (conf win left offset + conf win right offset) shall be less than pic width in luma samples and the value of SubHeightC * (conf win top offset + conf win bottom offset) shall be less than pic height in luma samples.

[0340] When ChromaArrayType is not equal to 0, the corresponding specified sample of the two chroma matrices is the sample with picture coordinates (x / SubWidthC, y / SubHeightC), where (x, y) are the picture coordinates of the specified luma sample.

[0341] NOTE - The in-picture cropping window offset parameters are only applied at output. All internal decoding processes are applied to the uncropped picture size.

[0342] Let ppsA and ppsB be any two PPSs referring to the same SPS. Bitstream conformance requires that ppsA and ppsB shall have the same values of conf win left offset, conf win right offset, conf win top offset and conf win bottom offset, when ppsA and ppsB have the same values of pic width in luma samples and pic height in luma samples, respectively.

[0343] scaling_window_flag equal to 1 specifies that scaling window offset parameters are present in the PPS. scaling_window_flag equal to 0 specifies that scaling window offset parameters are not present in the PPS. When ref_pic_resampling_enabled_flag is equal to 0, the value of scaling_window_flag shall be equal to 0.

[0344] scaling_win_left_offset, scaling_win_right_offset, scaling_win_top_offset, and scaling_win_bottom_offset specify the offsets, in units of luma samples, applied to the picture size for scaling computation. When scaling_window_flag is equal to 0, 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 0.

[0345] 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.

[0346] The variables PicOutputWidthL and PicOutputHeightL are derived as follows:

[0347] PicOutputWidthL = pic_width_in_luma_samples - scaling_win_left_offset

[0348] SubWidthC * (scaling_win_right_offset + scaling_win_left_offset)

[0349] PicOutputHeightL = pic_height_in_pic_size_units - scaling_win_top_offset

[0350] - SubHeightC * (scaling_win_bottom_offset + scaling_win_top_offset)

[0351] 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.

[0352] mixed_nalu_types_in_pic_flag equal to 1 specifies that each picture referring to the PPS has more than one VCL NAL unit and the VCL NAL units do not have the same nal_unit_type value and the picture is not an IRAP picture. mixed_nalu_types_in_pic_flag equal to 0 specifies that each picture referring to the PPS has one or more VCL NAL units and the VCL NAL units of each picture referring to the PPS have the same nal_unit_type value.

[0353] When no_mixed_nalu_types_in_pic_constraint_flag is equal to 1, the value of mixed_nalu_types_in_pic_flag shall be equal to 0.

[0354] For each slice with nal_unit_type value nalUnitTypeA in the range of IDR W RADL to CRA NUT, inclusive, in a picture picA that also contains one or more slices with another nal_unit_type value (i.e., the value of mixed_nalu_types_in_pic_flag for picture picA is equal to 1), the following applies:

[0355] - The slice shall belong to subpicture subpicA for which the value of corresponding sub_pic_treated_as_pic_flag[ i ] is equal to 1.

[0356] - The slice shall not belong to a subpicture of picA that contains VCL NAL units with nal_unit_type not equal to nalUnitTypeA.

[0357] - Neither RefPicList[0] nor RefPicList[1] of a slice in subpic A shall not include, in the active entries, any picture that is earlier than picA in decoding order for all the following PUs that are in CLVS and are in decoding order after picA.

[0358] pps_subpic_id_signalling_present_flag equal to 1 specifies that subpicture ID mapping is signaled in the PPS. pps_subpic_id_signalling_present_flag equal to 0 specifies that subpicture ID mapping is not signaled in the PPS. When sps_subpic_id_present_flag is 0 or sps_subpic_id_signalling_present_flag is equal to 1, pps_subpic_id_signalling_present_flag shall be equal to 0.

[0359] pps_num_subpics_minus1 plus 1 specifies the number of subpictures in the coded picture referring to the PPS.

[0360] Bitstream conformance requires that the value of pps_num_subpic_minus1 shall be equal to sps_num_subpics_minus1.

[0361] pps_subpic_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax element pps_subpic_id[ i ]. The value of pps_subpic_id_len_minus1 shall be in the range of 0 to 15, inclusive.

[0362] Bitstream conformance requires that the value of pps_subpic_id_len_minus1 shall be the same for all PPS referred to by the coded pictures within a CLVS.

[0363] 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.

[0364] no_pic_partition_flag equal to 1 specifies that picture partitioning is not 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 more than one tile or slice.

[0365] Bitstream conformance requirement: The value of no_pic_partition_flag shall be the same for all PPS referred to by the coded pictures within a CLVS.

[0366] Bitstream conformance requirement: When the value of sps num subpics in luma slices plus 1 is greater than 1, the value of no_pic_partition_flag shall not be equal to 1.

[0367] Bitstream conformance requirement: When the value of sps num subpics in luma slices plus 1 is greater than 1, the value of no_pic_partition_flag shall not be equal to 1.

[0368] pps_log2_ctu_size_minus5 plus 5 specifies the size of the luma coding tree blocks per CTU. pps_log2_ctu_size_minus5 shall be equal to sps_log2_ctu_size_minus5.

[0369] 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 PicWidthlnCtbsY - 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.

[0370] 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 PicHeightlnCtbsY - 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.

[0371] tile_row_height_minusl [ i ] plus 1 specifies the height of the i-th tile row in CTBs, i is 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. When not present, the value of tile_row_height_minusl [ 0 ] is inferred to be equal to PicHeightlnCtbsY - 1.

[0372] rect_slice_flag equal to 0 specifies that tiles within each slice are in raster scan order and slice information is not signaled 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 signaled in the PPS. When not present, rect_slice_flag is inferred to be equal to 1.

[0373] 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 subpicS-present flag is equal to 0, single_slice_per_subpic_flag shall be equal to 0. When single_slice_per_subpice_flag is equal to 1, num_slices_in_pic_minusl is inferred to be equal to sps_num_subpics_minusl.

[0374] 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 is specified in Annex A. When no_pic_partition_flag is equal to 1, the value of num_slices_in_pic_minusl is inferred to be equal to 0.

[0375] tile_idx_delta_present_flag equal to 0 specifies that there are no tile idx delta values in the PPS and all rectangular slices in the picture referring to the PPS are specified in raster order according to the defined process, tile_idx_delta_present_flag equal to 1 specifies that there can be tile idx delta values in the PPS and all rectangular slices in the picture referring to the PPS are all specified in the order indicated by the tile idx delta values.

[0376] slice_width_in_tiles_minus1[ i ] plus 1 specifies the width of the i-th rectangular slice in units of tile columns. The value of slice_width_in_tiles_minus1[ i ] shall be in the range of 0 to NumTileColumns - 1, inclusive. When not present, the value of slice_width_in_tiles_minus1[ i ] is inferred as specified.

[0377] slice_height_in_tiles_minus1[ i ] plus 1 specifies the height of the i-th rectangular slice in units of tile rows. The value of slice_height_in_tiles_minus1[ i ] shall be in the range of 0 to NumTileRows - 1, inclusive. When not present, the value of slice_height_in_tiles_minus1[ i ] is inferred as specified.

[0378] num_slices_in_tile_minus1[ i ] plus 1 specifies the number of slices in the current tile in the case that the i-th slice contains a subset of CTU rows from a single tile. The value of num_slices_in_tile_minus1[ i ] shall be in the range of 0 to RowHeight[ tileY ] - 1, inclusive, where tileY is the tile row index containing the i-th slice. When not present, the value of num_slices_in_tile_minus1[ i ] is inferred to be equal to 0.

[0379] slice_height_in_ctu_minus1[ i ] plus 1 specifies the height of the i-th rectangular slice in units of CTU rows in the case that the i-th slice contains a subset of CTU rows from a single tile. The value of slice_height_in_ctu_minus1[ i ] shall be in the range of 0 to RowHeight[ tileY ] - 1, inclusive, where tileY is the tile row index containing the i-th slice.

[0380] tile_idx_delta[ i ] specifies the tile index difference between the i-th rectangular tile and the i+1-th rectangular tile. 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. In all other cases, the value of tile_idx_delta[ i ] shall not be equal to 0.

[0381] loop_filter_across_tiles_enabled_flag equal to 1 specifies that in-loop filtering operations can be performed across tile boundaries in the pictures referring to the PPS. loop_filter_across_tiles_enabled_flag equal to 0 specifies that in-loop filtering operations are not performed across tile boundaries in the pictures referring to the PPS. In-loop filtering operations include the deblocking filter, the sample adaptive offset filter, and the adaptive loop filter operations. When not present, the value of loop_filter_across_tiles_enabled_flag is inferred to be equal to 1.

[0382] loop_filter_across_slices_enabled_flag equal to 1 specifies that in-loop filtering operations can be performed across slice boundaries in the pictures referring to the PPS. loop_filter_across_slice_enabled_flag equal to 0 specifies that in-loop filtering operations are not performed across slice boundaries in the pictures referring to the PPS. In-loop filtering operations include the deblocking filter, the sample adaptive offset filter, and the adaptive loop filter operations. When not present, the value of loop_filter_across_slices_enabled_flag is inferred to be equal to 0.

[0383] entropy_coding_sync_enabled_flag equal to 1 specifies that a particular synchronization process of context variables is invoked prior to decoding CTUs of the first CTB in a CTB row in each tile in each picture that references the PPS and a particular storage process of context variables is invoked after decoding CTUs of the first CTB in a CTB row in each tile in each picture that references the PPS. entropy_coding_sync_enabled_flag equal to 0 specifies that the particular synchronization process of context variables need not be invoked prior to decoding CTUs of the first CTB in a CTB row in each tile in each picture that references the PPS and the particular storage process of context variables need not be invoked after decoding CTUs of the first CTB in a CTB row in each tile in each picture that references the PPS.

[0384] Bitstream conformance requirement: The value of entropy_coding_sync_enabled_flag shall be the same for all PPSs that are referenced by the coded pictures within a CLVS.

[0385] cabac_init_present_flag equal to 1 specifies that cabac_init_flag is present in the slice header that references the PPS. cabac_init_present_flag equal to 0 specifies that cabac_init_flag is not present in the slice header that references the PPS.

[0386] 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.

[0387] 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 slice header. 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 slice header.

[0388] init_qp_minus26 plus 26 specifies the initial value of SliceQp for each slice referring to the PPS. When a non-zero value of slice_qp_delta is decoded, the initial value of SliceQp is modified at the slice level. The value of init_qp_minus26 shall be in the range of -(26 + QpBdOffset) to +37, inclusive. Y Y The value of init_qp_minus26 shall be in the range of -(26 + QpBdOffset) to +37, inclusive.

[0389] Log2_transform_skip_max_size_minus2 specifies the maximum block size for transform skip and shall be in the range of 0 to 3.

[0390] When not present, the value of Log2_transform_skip_max_size_minus2 is inferred to be equal to 0.

[0391] The variable MaxTsSize is set equal to 1 « (Log2_transform_skip_max_size_minus2 + 2).

[0392] cu _ qp _ delta _ enabled _ flag equal to 1 specifies that the pic_cu_qp_delta_subdiv_intra_slice and pic_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 the pic_cu_qp_delta_subdiv_intra_slice and pic_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.

[0393] ​pps_cb_qp_offset and pps_cr_qp_offset specify the values ​​used for exporting Qp. Cb and Qp' Cr Brightness quantization parameter Qp' Y The offset. The values ​​of pps_cb_qp_offset and pps_cr_qp_offset should be in the range of -12 to +12 (inclusive). When ChromaArrayType equals 0, pps_cb_qp_offset and pps_cr_qp_offset are not used during decoding, and the decoder should ignore their values.

[0394] pps _ joint _ cbcr _ qp _ offset _ present _ A flag equal to 1 indicates that `pps_joint_cbcr_qp_offset_value` and `joint_cbcr_qp_offset_list[i]` exist in the PPS RBSP syntax structure. A flag equal to 0 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, PPS... _ The value of joint_cbcr_qp_offset_present_flag should be equal to 0.

[0395] pps _ joint _ cbcr _ qp _ offset _ The value specifies the value used to export 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 is not used during decoding. _ joint _ cbcr_ qp _ offset _ value, and the decoder shall ignore its value. When pps _ When joint_cbcr_qp_offset_present_flag is equal to 0, pps_joint_cbcr_qp_offset_value is not present and is inferred to be equal to 0.

[0396] 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 these syntax elements are not present in the associated slice header. When ChromaArrayType is equal to 0, pps_slice_chroma_qp_offsets_present_flag shall be equal to 0.

[0397] cu _ chroma _ qp _ offset _ enabled _ flag equal to 1 specifies that the pic_cu_chroma_qp_offset_flag_intra_slice and pic_cu_chroma_qp_offset_flag_inter_slice can be present in the transform unit syntax, cu_chroma_qp_offset_enabled_flag equal to 0 specifies that the pic_cu_chroma_qp_offset_flag_intra_slice and pic_cu_chroma_qp_offset_flag_inter_slice are not present in the transform unit syntax. When ChromaArrayType is equal to 0, the bitstream conformance requires that the value of cu_chroma_qp_offset_enabled_flag shall be equal to 0.

[0398] chroma qp offset list len minusl plus 1 specifies the number of syntax elements cb qp offset list [ i ], cr qp offset list [ i ], and joint cbcr qp offset list [ i ] present in the PPS. The value of chroma qp offset list len minusl shall be in the range of 0 to 5, inclusive.

[0399] cb _ qp _ offset _ list [ i ], cr qp offset list [ i ], and joint cbcr qp offset list [ i ] specify offsets used in the 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.

[0400] 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.

[0401] 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 _The value of the flag shall be equal to 0.

[0402] deblocking _ tllter _ control _ present _ The flag equal to 1 specifies that deblocking filter control syntax elements are present in the PPS. The deblocking_filter_control_present_flag equal to 0 specifies that deblocking filter control syntax elements are not present in the PPS.

[0403] deblocking _ filter _ override _ enabled _ The flag equal to 1 specifies that pic_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. The deblocking_filter_override_enabled_flag equal to 0 specifies that pic_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.

[0404] The 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 in which slice_deblocking_filter_disabled_flag is not present. The pps_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter is applied to slices referring to the PPS in which slice_deblocking_filter_disabled_flag is not present. When not present, the value of pps_deblocking_filter_disabled_flag is inferred to be equal to 0.

[0405] pps_beta_offset_div2 and pps_tc_offset_div2 specify the default deblocking parameter offsets (divided by 2) for the beta and tC of slices referring to the PPS, unless overridden by the deblocking parameter offsets present in the 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 -6 to 6, inclusive. When not present, the values of pps_beta_offset_div2 and pps_tc_offset_div2 are inferred to be equal to 0.

[0406] constant_slice_header_params_enabled_flag equal to 0 specifies that the _ dep _ quant _ enabled _ idc, pps_ref_pic_list_sps_idc[ i ], pps _ mvd _ l1 _ zero _ idc, pps _ collocated _ from_l0 _ idc, pps_six_minus_max_num_merge_cand_plus1 and pps _ max _ num _ merge _ cand_minus _ max _ num _ triangle _ cand _ plus1 equal to 0. constant_slice_header_params _ enabled _ flag equal to 1 specifies that these syntax elements are present in the PPS.

[0407] pps_dep_quant_enabled_idc equal to 0 specifies that the syntax element pic_dep_quant_enabled_flag is present in the PH referring to the PPS. _ dep _ quant _ enabled _idc equal to 1 or 2 specifies that the syntax element pic_dep_quant_enabled flag is not present in the PH referring to the PPS. idc equal to 3 is reserved for future use by ITU-T | ISO / IEC. _ dep _ quant _ enabled _ idc for future use by ITU-T | ISO / IEC.

[0408] pps_ref_pic_list_sps_idc[ i ] equal to 0 specifies that the syntax element pic_rpl_sps_flag[ i ] is present in the PH referring to the PPS, or slice_rpl_sps_flag[ i ] is present in the slice header referring to the PPS. pps_ref_pic_list_sps_idc[ i ] equal to 1 or 2 specifies that the syntax element pic_rpl_sps_flag[ i ] is not present in the PH referring to the PPS, and the syntax element slice_rp1_sps_flag[ i ] is not present in the slice header referring to the PPS. pps_ref_pic_list_sps_idc[ i ] equal to 3 is reserved for future use by ITU-T | ISO / IEC.

[0409] pps _ mvd_l1 _ zero _ ide equal to 0 specifies that the syntax element mvd_l1_zero_flag is present in the PH referring to the PPS. pps _ mvd _ l1 _ zero ide equal to 1 or 2 specifies that the syntax element mvd_l1_zero_flag is not present in the PH referring to the PPS. pps_mvd_l1_zero_idc equal to 3 is reserved for future use by ITU-T | ISO / IEC.

[0410] pps_collocated_from_10_idc equal to 0 specifies that the syntax element collocated_from_l0_flag is present in the slice header of the slice referring to the PPS. pps_collocated_from_l0_idc equal to 1 or 2 specifies that the syntax element collocated_from_l0_flag is not present in the slice header of the slice referring to the PPS. pps_collocated_from_l0_idc equal to 3 is reserved for future use by ITU-T | ISO / IEC.

[0411] pps_six_minus_max_num_merge_cand_plusl equal to 0 specifies that pic_six_minus_max_num_merge_cand is present in the PH referring to the PPS. pps_six_minus_max_num_merge_cand_plusl greater than 0 specifies that pic_six_minus_max_num_merge_cand is not present in the PH referring to the PPS. The value of pps_six_minus_max_num_merge_cand_plusl shall be in the range of 0 to 6, inclusive.

[0412] pps_max_num_merge_cand_minus_max_num_triangle_cand_plusl equal to 0 specifies that pic_max_num_merge_cand_minus_max_num_triangle_cand is present in the PH referring to the PPS. pps_max_num_merge_cand_minus_max_num_triangle_cand_plusl greater than 0 specifies that pic_max_num_merge_cand_minus_max_num_triangle_cand is not present in the PH referring to the PPS. The value of pps_max_num_merge_cand_minus_max_num_triangle_cand_plusl shall be in the range of 0 to MaxNumMergeCand - 1, inclusive.

[0413] picture _ header _ extension _ present _ flag equal to 0 specifies that the PH extension syntax elements are not present in the PH referring to the PPS. picture_header_extension_present_flag equal to 1 specifies that the PH extension syntax elements are present in the PH referring to the PPS. In bitstreams conforming to this version of this Specification, picture_header_extension_present_flag shall be equal to 0.

[0414] slice_header_extension_present_flag equal to 0 specifies that no slice header extension syntax elements are present in the slice header of a 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 a coded picture referring to the PPS. In bitstreams conforming to this version of this Specification, slice_header_extension_present_flag shall be equal to 0.

[0415] 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.

[0416] pps_extension_data_flag can have any value. Its presence and value do not affect a decoder conforming to the profiles specified in this version of this Specification. Decoders conforming to this version of this Specification shall ignore all pps_extension_data_flag syntax elements.

[0417] As provided in Table 2, a NAL unit can include a picture header syntax structure. Table 5 shows a picture header syntax structure provided in JVET-P2001.

[0418]

[0419]

[0420]

[0421]

[0422] Table 5

[0423] With respect to Table 5, JVET-P2001 provides the following semantics:

[0424] The PH contains information common to all slices of the coded picture associated with the PH.

[0425] non _ reference _ picture _A flag equal to 1 specifies that the picture associated with the PH must not be used as a reference picture. A 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.

[0426] A gdr_pic_flag equal to 1 specifies that the picture associated with the PH is a GDR picture. A gdr_pic_flag equal to 0 specifies that the picture associated with the PH is not a GDR picture.

[0427] A no_output_of_prior_pics_flag specifies that the output of previously decoded pictures following the picture of the CLVSS in the bitstream that is not the first picture is affected according to

[0428] A recovery_poc_cnt specifies a recovery point of a 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 following the current GDR picture in decoding order and having a PicOrderCntVal equal to the PicOrderCntVal of the current GDR picture plus the recovery_poc_cnt, the picture picA is referred to as a recovery point picture. Otherwise, the first picture in output order having a PicOrderCntVal greater than the PicOrderCntVal of the current picture plus the recovery_poc_cnt is referred to as a recovery point picture. A recovery point picture shall not precede the current GDR picture in decoding order. The value of the recovery_poc_cnt shall be in the range of 0 to MaxPicOrderCntLsb - 1, inclusive.

[0429] Note - When the gdr_enabled_flag is equal to 1 and the PicOrderCntVal of the current picture is greater than or equal to the RpPicOrderCntVal of the associated GDR picture, the current and subsequent decoded pictures in output order exactly match the corresponding pictures resulting from starting the decoding process from the previous IRAP picture (when present) preceding the associated GDR picture in decoding order.

[0430] ph _ pic _ parameter _ set _ An id specifies the value of the pps_pic_parameter_set_id of the PPS being used. The value of the ph_pic_parameter_set_id shall be in the range of 0 to 63, inclusive.

[0431] Bitstream conformance The value of Temporalld of 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.

[0432] ph_poc_msb_present_flag equal to 1 specifies that the syntax element poc_msb_val is present in PH. ph_poc_msb_present_flag equal to 0 specifies that the syntax element poc_msb_val is not present in PH. When vps_indcpclvidcnt_laver_flag[ GeneralLayerld[ nuh layer id ] ] is equal to 0 and there is a picture in the current AU that is referenced from the reference layers of the current layer, the value of ph_poc_msb_present_flag shall be equal to 0.

[0433] poc_msb_val specifies the POC MSB value of the current picture. The length of the syntax element poc_msb_val is poc_msb_len_minusl + 1 bits.

[0434] ph _ subpic _ id _ signalling _ present _ flag equal to 1 specifies that subpicture ID mapping is signaled in PH. ph_subpic_id_signalling_present_flag equal to 0 specifies that subpicture ID mapping is not signaled in PH.

[0435] ph_subpic_id_len_minusl plus 1 specifies the number of bits used to represent the syntax element ph_subpic_id[ i ]. The value of pic_subpic_id_len_minusl shall be in the range of 0 to 15, inclusive.

[0436] Bitstream conformance The value of ph_subpic_id_len_minusl shall be the same for all PHs that are referred to by the coded pictures within a CLVS.

[0437] ph_subpic_id[ i ] specifies the subpicture ID of the i-th subpicture. The length of the ph_subpic_id[ i ] syntax element is pic _ subpicid _ len _ minusl + 1 bits.

[0438] The list SubpicIdList[ i ] is derived as follows:

[0439]

[0440] ph_loop_filter_across_virtual_boundaries_disabled_present_flag equal to 1 specifies that the in-loop filtering operations are disabled across virtual boundaries in the picture associated with the PH. ph_loop_filter_across_virtual_boundaries_disabled_present_flag equal to 0 specifies that such a disabling of the in-loop filtering operations does not apply in the picture associated with the PH. The in-loop filtering operations include the deblocking filter, the sample adaptive offset filter and the adaptive loop filter operations.

[0441] When not present, the value of ph_loop_filter_across_virtual_boundaries_disabled_present_flag is inferred to be equal to 0.

[0442] The parameter VirtualBoundariesDisabledFlag is derived as follows:

[0443] VirtualBoundariesDisabledFlag = sps_loop_filter_across_virtual_boundaries_disabled_present_flag? ph_loop_filter_across_virtual_boundaries_disabled_present_flag

[0444] ph_num_ver_virtual_boundaries specifies the number of ph_virtual_boundaries_pos_x[ i ] syntax elements present in the PH. When ph_num_ver_virtual_boundaries is not present, it is inferred to be equal to 0.

[0445] The parameter VirtualBoundariesNumVer is derived as follows:

[0446] VirtualBoundariesNumVer = sps_loop_filter_across_virtual_boundaries_disabled_present_flag? sps_num_ver_virtual_boundaries : ph_num_ver_virtual_boundaries

[0447] ph_virtual_boundaries_pos_y[i] specifies the position of the i-th vertical virtual boundary in units of luma samples. ph_virtual_boundaries_pos_y[i] shall be in the range of 1 to Ceil(pic_height_in_luma_samples ÷ 8) - 1, inclusive.

[0448] The position of a vertical virtual boundary, VirtualBoundariesPosY[i], is derived as follows:

[0449] VirtualBoundariesNumHor = sps_loop_filter_across_virtual_boundaries_disabled_present_flag? sps_num_hor_virtual_boundaries : ph_num_hor_virtual_boundaries

[0450] The distance between any two horizontal virtual boundaries shall be greater than or equal to CtbSizeY luma samples.

[0451] ph _ num _ ver _ virtual _ boundaries specifies the number of ph_virtual_boundaries_pos_y[i] syntax elements present in PH. When ph_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0.

[0452] The parameter VirtualBoundariesNumHor is derived as follows:

[0453] VirtualBoundariesNumHor = sps_loop_filter_across_virtual_boundaries_disabled_present_flag? sps_num_hor_virtual_boundaries : ph_num_hor_virtual_boundaries

[0454] ph_virtual_boundaries_pos_y[ i ] is used to calculate the value of VirtualBoundariesPosY[ i ], which specifies the position of the i-th horizontal virtual boundary in units of luma samples. ph_virtual_bouudaries_pos_y[ i ] shall be in the range of 1 to Ceil( pic_height_in_luma_samples ÷ 8 ) - 1, inclusive.

[0455] The position of a horizontal virtual boundary, VirtualBoundariesPosY[ i ], is derived as follows:

[0456] VirtualBoundariesPosY[ i ] = ( sps_loop_filter_across_virtual_boundaries_disabled_present_flag? sps_virtual_boundaries_pos_y[ i ] : ph_virtual_bouudaries_pos_y[ i ] ) * 8

[0457] The distance between any two horizontal virtual boundaries shall be greater than or equal to CtbSizeY luma samples.

[0458] When separate_colour_plane_flag is equal to 1, colour_plane_id specifies the colour plane associated with the slice associated with the PH. 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.

[0459] NOTE - There is no correlation between the decoding processes of pictures with different colour_plane_id values.

[0460] pic_output_flag specifies the impact on the decoded picture output and removal processes. When pic_output_flag is not present, it is inferred to be equal to 1.

[0461] pic rpl present flag equal to 1 specifies that reference picture list signaling is present in the PH. pic rpl present flag equal to 0 specifies that reference picture list signaling is not present in the PH and that reference picture list signaling can be present in slice headers of slices of the picture.

[0462] Bitstream conformance requirement, when sps id rpl present flag is equal to 0 and the picture associated with the PH is an IDR picture, the value of pic rpl present flag shall be equal to 0.

[0463] pic rpl sps flag[ i ] equal to 1 specifies that reference picture list i of the picture associated with the PH is derived based on one of the ref_pic_list_struct( listldx, rplsldx ) syntax structures in the SPS with listldx equal to i. pic rpl sps flag[ i ] equal to 0 specifies that reference picture list i of the picture is derived based on the ref_pic_list_struct( listldx, rplsldx ) syntax structure directly included in the PH with listldx equal to i.

[0464] When pic rpl sps flag[ i ] is not present, the following applies:

[0465] - If num_ref_pic_lists_in_sps[ i ] is equal to 0, the value of pic rpl sps flag[ i ] is inferred to be equal to 0.

[0466] - Otherwise, if num_ref_pic_lists_in_sps[ i ] is greater than 0 and rpll_idx_present_flag is equal to 0, the value of pic rpl sps flag[ 1 ] is inferred to be equal to pic rpl sps flag[ 0 ].

[0467] - Otherwise, the value of pic rpl sps flag[ i ] is inferred to be equal to pps_ref_pic_list_sps_idc[ i ] - 1.

[0468] pic_rpl_idx[ i ] specifies the index of the list of ref_pic_list_struct( listldx, rplsldx ) syntax structures ( where listldx is equal to i ) included in the SPS for the ref_pic_list_struct( listldx, rplsldx ) syntax structure ( where listldx is equal to i ) used to derive the current picture. The syntax element pic_rpl_idx[ i ] is represented by Ceil( Log2( num_ref_pic_lists_in_sps[ i ] ) ) bits. When not present, the value of pic_rpl_idx[ i ] is inferred to be equal to 0. The value of pic_rpl_idx[ i ] shall be in the range of 0 to num_ref_pic_lists_in_sps[ i ] - 1, inclusive. When pic_rpl_sps_flag[ i ] is equal to 1 and num_ref_pic_lists_in_sps[ i ] is equal to 1, the value of pic_rpl_idx[ i ] is inferred to be equal to 0. When pic_rpl_sps_flag[ i ] is equal to 1 and rpl1_idx_present_flag is equal to 0, the value of pic_rpl_idx[ 1 ] is inferred to be equal to pic_rpl_idx[ 0 ].

[0469] The variable PicRplsldx[ i ] is derived as follows:

[0470] PicRplsldx[ i ] = pic_rpl_sps_flag[ i ]? pic_rpl_idx[ i ] : num_ref_pic_lists_in_sps[ i ]

[0471] pic_poc_lsb_lt[ i ][ j ] specifies the value of the picture order count modulo MaxPicOrderCntLsb of the j-th LTRP entry in the i-th reference picture list of the picture associated with the PH. The length of the pic_poc_lsb_lt[ i ][ j ] syntax element is Log2_max_pic_order_cnt_lsb minus4 + 4 bits.

[0472] The variable PicPocLsbLt[ i ][ j ] is derived as follows:

[0473] PicPocLsbLt[ i ][ j ] = ltrp_in_slice_header_flag[ i ]? pic_poc_lsb_lt[ i ][ j ] : rpls_pos_lsb_lt[ listldx ][ PicRplsldx[ i ] ][ j ]

[0474] The pic_delta_poc_msb_present_flag[ i ][ j ] equal to 1 specifies that the pic_delta_poc_msb_cycle_lt[ i ][ j ] is present. The pic_delta_poc_msb_present_flag[ i ][ j ] equal to 0 specifies that the pic_delta_poc_msb_cycle_lt[ i ][ j ] is not present.

[0475] Let prevTidOPic be the previous picture in decoding order that has the same nuh layer id as PH, has Temporalld equal to 0, and is not a RASL or RADL picture. Let setOfPrevPocVals be the set consisting of:

[0476] - the PicOrderCntVal of prevTidOPic,

[0477] - the PicOrderCntVal of each picture referenced by entries in RefPicList[ 0 ] or RefPicList[ 1 ] of prevTidOPic and having the same nuh layer id as the current picture,

[0478] - the PicOrderCntVal of each picture following prevTidOPic in decoding order, having the same nuh layer id as the current picture, and preceding the current picture in decoding order.

[0479] When there is more than one value in setOfPrevPocVals, the value whose modulo MaxPicOrderCntLsb is equal to PicPocLsbLt[ i ][ j ] shall have the value of pic_delta_poc_msb_present_flag[ i ][ j ] equal to 1.

[0480] The pic_delta_poc_msb_cycle_lt[ i ][ j ] specifies the value of PicFullPocLt[ i ][ j ] as follows:

[0481]

[0482] The value of pic_delta_poc_msb_cycle_lt[ i ][ j ] shall be in the range of 0 to 2 (32 -log2_max_pic_order_cnt_lsb_minus4-4) , inclusive. When not present, the value of pic_delta_poc_msb_cycle_lt[ i ][ j ] is inferred to be equal to 0.

[0483] partition_constraints_override_flag equal to 1 specifies that partitioning constraints parameters are present in the PH. partition_constraints_override_flag equal to 0 specifies that 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.

[0484] pic_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 a luma leaf block resulting from quad-tree partitioning of a CTU and the base-2 logarithm of the minimum coding block size in luma samples of a luma CU in a slice with slice_type equal to 2 (I) associated with the PH. The value of pic_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 pic_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_intra_slice_luma.

[0485] pic_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 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 the PH. The value of pic_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 pic_log2_diff_min_qt_min_cb_luma is inferred to be equal to sps_log2_diff_min_qt_min_cb_inter_slice.

[0486] pic_max_mtt_hierarchy_depth_inter_slice specifies the maximum hierarchy depth of coding units resulting from multi-type tree partitioning of quad-tree leaves in slices with slice_type equal to 0 (B) or 1 (P) associated with the PH. The value of pic_max_mtt_hierarchy_depth_inter_slice shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of pic_max_mtt_hierarchy_depth_inter_slice is inferred to be equal to sps_max_mtt_hierarchy_depth_inter_slice.

[0487] pic_max_mtt_hierarchy_depth_intra_slice_luma specifies the maximum hierarchy depth of coding units resulting from multi-type tree partitioning of quad-tree leaves in slices with slice_type equal to 2 (I) associated with the PH. The value of pic_max_mtt_hierarchy_depth_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of pic_max_mtt_hierarchy_depth_intra_slice_luma is inferred to be equal to sps_max_mtt_hierarchy_depth_intra_slice_luma.

[0488] pic_log2_diff_max_bt_min_qt_intra_slice_luma specifies the difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a luma coding block that can use binary splitting and the base-2 logarithm of the minimum size (width or height) in luma samples of a luma leaf block resulting from quad-tree partitioning of a CTU in slices with slice_type equal to 2 (I) associated with the PH. The value of pic_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 pic_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.

[0489] pic_log2_diff_max_tt_min_qt_intra_slice_luma specifies the difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a luma coding block for which ternary splitting 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 quadtree partitioning of a CTU in a slice with slice_type equal to 2 (I) associated with the PH. The value of pic_log2_diff_max_tt_min_qt_intra_slice_luma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive.

[0490] When not present, the value of pic_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.

[0491] pic_log2_diff_max_bt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a luma coding block for which binary splitting 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 quadtree partitioning of a CTU in a slice with slice_type equal to 0 (B) or 1 (P) associated with the PH. The value of pic_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 pic_log2_diff_max_bt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_bt_min_qt_inter_slice.

[0492] pic_log2_diff_max_tt_min_qt_inter_slice specifies the difference between the base-2 logarithm of the maximum size (width or height) in luma samples of a luma coding block that can use ternary split and the base-2 logarithm of the minimum size (width or height) in luma samples of a luma leaf block resulting from quadtree partitioning of a CTU in a slice with slice type equal to 0 (B) or 1 (P) associated with the PH. The value of pic_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 pic_log2_diff_max_tt_min_qt_inter_slice is inferred to be equal to sps_log2_diff_max_tt_min_qt_inter_slice.

[0493] pic_log2_diff_min_qt_min_cb_intra_slice_chroma specifies the difference between the base-2 logarithm of the minimum size in luma samples of a chroma leaf block resulting from quadtree 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) associated with the PH. The value of pic_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 pic_log2_diff_min_qt_min_cb_intra_slice_chroma is inferred to be equal to sps_log2_diff_min_qt_min_cb_intra_slice_chroma.

[0494] pic_max_mtt_hierarchy_depth_intra_slice_chroma specifies the maximum hierarchy depth of chroma coding units resulting from multi-type tree partitioning of chroma quad-tree leaves with treeType equal to DUAL TREE CHROMA in slices with slice_type equal to 2 (I) associated with a PH. The value of pic_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinCbLog2SizeY, inclusive. When not present, the value of pic_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to sps_max_mtt_hierarchy_depth_intra_slice_chroma.

[0495] pic_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 base-2 logarithm of the minimum size (width or height) in luma samples of a chroma leaf block resulting from quad-tree partitioning of a chroma CTU with treeType equal to DUAL TREE CHROMA in slices with slice_type equal to 2 (I) associated with a PH. The value of pic_log2_diff_max_bt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeTntraC, inclusive. When not present, the value of pic_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.

[0496] pic_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 for which ternary split can be used and the base-2 logarithm of 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 PH. The value of pic_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizcY-MinQtLog2SizcIntraC, inclusive. When not present, the value of pic_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

[0497] pic_cu_qp_delta_subdiv_intra_slice specifies the maximum cbSubdiv value for coding units of an intra slice conveying cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of pic_cu_qp_delta_subdiv_intra_slice shall be in the range of 0 to 2*(QbLog2SizeY-MinQtLog2SizeIntraY+pic_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.

[0498] When not present, the value of pic_cu_qp_delta_subdiv_intra_slice is inferred to be equal to 0.

[0499] pic_cu_qp_delta_subdiv_inter_slice specifies the maximum cbSubdiv value for coding units in an inter slice conveying cu_qp_delta_abs and cu_qp_delta_sign_flag. The value of pic_cu_qp_delta_subdiv_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY-MinQtLog2SizeInterY+pic_max_mtt_hierarchy_depth_inter_slice), inclusive.

[0500] When not present, the value of pic_cu_qp_delta_subdiv_inter_slice is inferred to be equal to 0.

[0501] pic_cu_chroma_qp_offset_subdiv_intra_slice specifies the maximum cbSubdiv value for coding units in the intra slice that convey cu chroma qp offset flag. The value of pic_cu_chroma_qp_offset_subdiv_intra_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeIntraY + pic_max_mtt_hierarchy_depth_intra_slice_luma), inclusive.

[0502] When not present, the value of pic_cu_chroma_qp_offset_subdiv_intra_slice is inferred to be equal to 0.

[0503] pic_cu_chroma_qp_offset_subdiv_inter_slice specifies the maximum cbSubdiv value for coding units in the inter slice that convey cu chroma qp offset flag. The value of pic_cu_chroma_qp_offset_subdiv_inter_slice shall be in the range of 0 to 2*(CtbLog2SizeY - MinQtLog2SizeInterY + pic_max_mtt_hierarchy_depth_inter_slice), inclusive.

[0504] When not present, the value of pic_cu_chroma_qp_offset_subdiv_inter_slice is inferred to be equal to 0.

[0505] pic_temporal_mvp_enabled_flag specifies whether temporal motion vector predictors are available for inter prediction of slices associated with a PH. If pic_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 predictors are not used in the decoding of the slices. Otherwise (pic_temporal_mvp_enabled_flag is equal to 1), temporal motion vector predictors can be used in the decoding of slices associated with the PH. When not present, the value of pic_temporal_mvp_enabled_flag is inferred to be equal to 0.

[0506] mvd_l1_zero_flag equal to 1 specifies that the mvd_coding(xO, yO, 1) syntax structure is not resolved, and MvdL 1[xO][yO][compIdx] and MvdL 1[xO][yO][cpIdx][compIdx] are set equal to 0 for compIdx = 0..1 and cpIdx = 0..2. mvd_l1_zero_flag equal to 0 specifies that the mvd_coding(xO, yO, 1) syntax structure is resolved. When not present, the value of mvd_l1_zero_flag is inferred to be equal to pps_mvdl1_zero_flag - 1.

[0507] pic_six_minus_max_num_merge_cand specifies the maximum number of merge motion vector prediction (MVP) candidates supported in the slice associated with a PH, minus 6. The maximum number of merge MVP candidates, MaxNumMergeCand, is derived as follows:

[0508] MaxNumMergeCand = 6 - pic_six_minus_max_num_merge_cand

[0509] The value of MaxNumMergeCand shall be in the range of 1 to 6, inclusive. When not present, the value of pic_six_minus_max_num_merge_cand is inferred to be equal to pps_six_minus_max_num_merge_cand_plusl - 1.

[0510] pic_five_minus_max_num_subblock_merge_cand specifies the maximum number of subblock-based merge motion vector prediction (MVP) candidates supported in the slice, minus 5. When not present, the value of pic_five_minus_max_num_subblock_merge_cand is inferred to be equal to 5 - (sps_sbtmvp_enabled_flag && pic_temporal_mvp_enabled_flag).

[0511] The maximum number of subblock-based merge MVP candidates, MaxNumSubblockMergeCand, is derived as follows:

[0512] MaxNumSubblockMergeCand = 5 - pic_five_minus_max_num_subblock_merge_cand

[0513] The value of MaxNumSubblockMergeCand shall be in the range of 0 to 5, inclusive.

[0514] pic_fpel_mmvd_enabled_flag equal to 1 specifies that integer sample precision is used for the merge mode with motion vector difference in slices associated with the PH. pic_fpel_mmvd_enabled_flag equal to 0 specifies that fractional sample precision can be used for the merge mode with motion vector difference in slices associated with the PH. When not present, the value of pic_fpel_mmvd_enabled_flag is inferred to be equal to 0.

[0515] pic_disable_bdof_flag equal to 1 specifies that inter double prediction based on bi-directional optical flow inter prediction is disabled in slices associated with the PH. pic_disable_bdofflag equal to 0 specifies that inter double prediction based on bi-directional optical flow inter prediction can or can not be enabled in slices associated with the PH.

[0516] When pic_disable_bdof_flag is not present, the following applies:

[0517] - If sps_bdof_enabled_flag is equal to 1, pic_disable_bdof_flag is inferred to be equal to 0.

[0518] - Otherwise (sps_bdof_enabled_flag is equal to 0), the value of pic_disable_bdof_flag is inferred to be equal to 1.

[0519] pic_disable_dmvr_flag equal to 1 specifies that inter double prediction based on decoder motion vector refinement is disabled in slices associated with the PH. pic_disabled_mvr_flag equal to 0 specifies that inter double prediction based on decoder motion vector refinement can or can not be enabled in slices associated with the PH. When not present, the value of pic_disable_dmvr_flag is inferred to be equal to 1.

[0520] When pic_disable_dmvr_flag is not present, the following applies:

[0521] - If sps_dmvr_enabled_flag is equal to 1, the value of pic_disable_dmvr_flag is inferred to be equal to 0.

[0522] - Otherwise (sps_dmvr_enabled_flag) is equal to 0, the value of pic disable dmvr flag is inferred to be equal to 1.

[0523] pic disable prof flag equal to 1 specifies that the prediction refinement with optical flow is disabled in the slice associated with the PH. pic disable prof flag equal to 0 specifies that the prediction refinement with optical flow can or can not be enabled in the slice associated with the PH. When not present, the value of pic disable prof flag is inferred to be equal to 1.

[0524] When pic disable prof flag is not present, the following applies:

[0525] - If sps affme prof enabled flag is equal to 1, the value of pic disable prof flag is inferred to be equal to 0.

[0526] - Otherwise (sps affme prof enabled flag is equal to 0), the value of pic disable prof flag is inferred to be equal to 1.

[0527] pic max num merge cand minus max num triangle cand specifies the maximum number of merge mode candidates from MaxNumMergeCand minus the maximum number of triangle merge mode candidates supported in the slice associated with the picture header.

[0528] When pic max num merge cand minus max num triangle cand is not present, and sps triangle enabled flag is equal to 1 and MaxNumMergeCand is greater than or equal to 2, pic max num merge cand minus max num triangle cand is inferred to be equal to pps max num merge cand minus max num triangle cand plus 1 - 1.

[0529] The maximum number of triangle merge mode candidates MaxNumTriangleMergeCand is derived as follows:

[0530] MaxNumTriangleMergeCand = MaxNumMergeCand - pic_max_num_merge_cand_minus_max_num_triangle_cand

[0531] When pic_max_num_merge_cand_minus_max_num_triangle_cand is present, the value of MaxNumTriangleMergeCand shall be in the range of 2 to MaxNumMergeCand, inclusive.

[0532] When pic_max_num_merge_cand_minus_max_num_triangle_cand is not present and (sps_triangle_enabled_flag is equal to 0 or MaxNumMergeCand is less than 2), MaxNumTriangleMergeCand is set equal to 0.

[0533] When MaxNumTriangleMergeCand is equal to 0, the slices associated with the PH do not allow the use of the triangle merge mode.

[0534] pic_six_minus_max_num_ibc_merge_cand specifies the maximum number of IBC merge block vector prediction (BVP) candidates supported in the slices associated with the PH minus 6. The maximum number of IBC merge BVP candidates, MaxNumlbcMergeCand, is derived as follows:

[0535] MaxNumlbcMergeCand = 6 - pic_six_minus_max_num_ibc_merge_cand

[0536] The value of MaxNumlbcMergeCand shall be in the range of 1 to 6, inclusive.

[0537] pic_joint_cbcr_fagn_flag specifies whether the co-located residual samples of the two chroma components have the opposite sign in a transform unit with tu_joint_cbcr_residual_flag[ xO ][ yO ] equal to 1. When the transform unit's tu_joint_cbcr_residual_flag[ xO ][ yO ] is equal to 1, pic_joint_cbcr_sign_flag equal to 0 specifies that the sign of each residual sample of the Cr (or Cb) component is the same as the sign of the co-located Cb (or Cr) residual sample, and pic_joint_cbcr_sign_flag equal to 1 specifies that the sign of each residual sample of the Cr (or Cb) component is the opposite of the sign of the co-located Cb (or Cr) residual sample.

[0538] pic_sao_enabled_present_flag equal to 1 specifies that pic_sao_luma_flag and pic_sao_chroma_flag are present in the PH. pic_sao_enabled_present_flag equal to 0 specifies that pic_sao_luma_flag and pic_sao_chroma_flag are not present in the PH. When pic_sao_enabled_present_flag is not present, it is inferred to be equal to 0.

[0539] pic_sao_luma_flag equal to 1 specifies that SAO is enabled for the luma component in all slices associated with the PH; pic_sao_luma_flag equal to 0 specifies that SAO is disabled for the luma component in one or more or all slices associated with the PH. When pic_sao_luma_flag is not present, it is inferred to be equal to 0.

[0540] pic_sao_chroma_flag equal to 1 specifies that SAO is enabled for the chroma components in all slices associated with the PH; pic_sao_chroma_flag equal to 0 specifies that SAO is disabled for the chroma components in one or more or all slices associated with the PH. When pic_sao_chroma_flag is not present, it is inferred to be equal to 0.

[0541] pic_alf_enabled_present_flag equal to 1 specifies that pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[ i ], pic_alf_chroma_idc, and pic_alf_aps_id_chroma are present in the PH. pic_alf_enabled_present_flag equal to 0 specifies that pic_alf_enabled_flag, pic_num_alf_aps_ids_luma, pic_alf_aps_id_luma[ i ], pic_alf_chroma_idc, and pic_alf_aps_id_chroma are not present in the PH. When not present, pic_alf_enabled_present_flag is inferred to be equal to 0.

[0542] pic_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled for all slices associated with the PH and that the adaptive loop filter can be applied to Y, Cb or Cr color components in the slices, pic_alf_enabled_flag equal to 0 specifies that the adaptive loop filter can be disabled for one or more or all slices associated with the PH. When not present, pic_alf_enabled_flag is inferred to be equal to 0.

[0543] pic_num_alf_aps_ids_luma specifies the number of ALF APSs referred to by slices associated with the PH.

[0544] pic_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.

[0545] 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 pic_alf_aps_id_luma[ i ] shall be equal to 1.

[0546] pic_alf_chroma_idc equal to 0 specifies that the in-loop filter is not applied to the Cb and Cr color components. pic_alf_chroma_idc equal to 1 specifies that the in-loop filter is applied to the Cb color component. pic_alf_chroma_idc equal to 2 specifies that the in-loop filter is applied to the Cr color component. pic_alf_chroma_idc equal to 3 specifies that the in-loop filter is applied to the Cb and Cr color components. When pic_alf_chroma_idc is not present, it is inferred to be equal to 0.

[0547] pic_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referenced by the chroma components of the slice associated with the PH.

[0548] The value of alf_chroma_filter_signal_flag of the APS NAL unit having aps_params_type equal to ALF_APS and adaptation_parameter_set_id equal to pic_alf_aps_id_chroma shall be equal to 1.

[0549] pic_dep_quant_enabled_flag equal to 0 specifies that dependent quantization is disabled for the slice associated with the PH. pic_dep_quant_enabled_flag equal to 1 specifies that dependent quantization is enabled for the slice associated with the PH. When not present, the value of pic_dep_quant_enabled_flag is inferred to be equal to pps_dep_quant_enable_idc - 1.

[0550] sign_data_hiding_enabled_flag equal to 0 specifies that sign data hiding is disabled. sign_data_hiding_enabled_flag equal to 1 specifies that sign data hiding is enabled. When sign_data_hiding_enabled_flag is not present, it is inferred to be equal to 0.

[0551] pic_deblocking_filter_override_present_flag equal to 1 specifies that pic_deblocking_filter_override_flag is present in the PH. sps_subpic_id_present_flag equal to 0 specifies that pic_deblocking_filter_override_flag is not present in the PH. When not present, pic_deblocking_filter_override_flag is inferred to be equal to 0.

[0552] pic_deblocking_filter_override_flag equal to 1 specifies that deblocking parameters are present in the PH. pic_deblocking_filter_override_flag equal to 0 specifies that deblocking parameters are not present in the PH. When not present, the value of pic_pic_deblocking_filter_override_flag is inferred to be equal to 0.

[0553] pic_deblocking_filter_disabled_flag equal to 1 specifies that the operation of the deblocking filter is not applied to slices associated with the PH. pic_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter is applied to slices associated with the PH. When not present, pic_deblocking_filter_disabled_flag is inferred to be equal to pps_deblocking_filter_disabled_flag.

[0554] pic_beta_offset_div2 and pic_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) for beta and tC, respectively, for slices associated with the PH. The values of pic_beta_offset_div2 and pic_tc_offset_div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of pic_beta_offset_div2 and pic_tc_offset_div2 are inferred to be equal to pps_beta_offset_div2 and pps_tc_offset_div2, respectively.

[0555] pic_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is enabled for all slices associated with the PH. pic_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 pic_lmcs_enabled_flag is inferred to be equal to 0.

[0556] pic_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 pic_lmcs_aps_id shall be less than or equal to the Temporalld of the picture associated with the PH.

[0557] pic_chroma_residual_scale_flag equal to 1 specifies that chroma residual scaling is enabled for all slices associated with the PH. pic_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 pic_chroma_residual_scale_flag is not present, it is inferred to be equal to 0.

[0558] pic_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. pic_scaling_list_present_flag equal to 0 specifies that the scaling list data for the slices associated with the PH is the default scaling list data specified to be derived. When not present, the value of pic_scaling_list_present_flag is inferred to be equal to 0.

[0559] pic_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 pic_scaling_list_aps_id shall be less than or equal to the Temporalld of the picture associated with the PH.

[0560] 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.

[0561] 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 a decoder's conformance to the profiles specified in this version of this Specification.

[0562] As provided in Table 2, a NAL unit can include a coded slice of a picture. The slice syntax structure includes a slice_header() syntax structure and a slice_data() syntax structure. Table 6 shows the syntax of the slice header provided in JVET-P2001.

[0563]

[0564]

[0565]

[0566] Table 6

[0567] With respect to Table 6, JVET-P2001 provides the following semantics:

[0568] When present, the value of the slice header syntax element slice_pic_order_cnt_lsb shall be the same in all slice headers of a coded picture.

[0569] The variable CuQpDeltaVal, which specifies the difference between the luma quantization parameter of the coding unit containing cu_qp_delta_abs and that of its prediction, is set equal to 0. The variables CuQpOffset Cb , CuQpOffset Cr , and CuQpOffset CbCr , which specify the respective values to be used when determining the Qp Cb , Qp Cr , and Qp CbCr quantization parameters of the coding unit containing cu_chroma_qp_offset_flag, are all set equal to 0.

[0570] slice_pic_order_cnt_lsb specifies the picture order count modulo MaxPicOrderCntLsb for the current picture. The length of the slice_pic_order_cnt_lsb syntax element is log2_max_pic_order_cnt_lsb_minus4 + 4 bits. The value of slice_pic_order_cnt_lsb shall be in the range of 0 to MaxPicOrderCntLsb - 1, inclusive.

[0571] When the current picture is a GDR picture, the variable RpPicOrderCntVal is derived as follows:

[0572] RpPicOrderCntVal = PicOrderCntVal + recover_poc_cnt

[0573] slice_subpic_id specifies the subpicture identifier of the subpicture containing the slice. If slice_subpic_id is present, the value of the variable SubPicIdx is derived such that SubPicIdList[ SubPicIdx ] is equal to slice_subpic_id. Otherwise (slice_subpic_id is not present), the variable SubPicIdx is derived to be equal to 0. The length of slice_subpic_id in bits is derived as follows:

[0574] - If sps_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to sps_subpic_id_len_minus1 + 1.

[0575] - Otherwise, if ph_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to ph_subpic_id_len_minus1 + 1.

[0576] - Otherwise, if ph_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to pps_sub_pic_id_len_minus1 + 1.

[0577] - Otherwise, the length of slice_subpic_id is equal to Ceil( Log2( sps_num_subpics_minus1 + 1 ) ).

[0578] slice_address specifies the slice address of the slice. When not present, the value of slice address is inferred to be equal to 0.

[0579] If rect_slice_flag is equal to 0, the following applies:

[0580] - slice_address is the raster scan tile index.

[0581] - The length of slice_address is Ceil( Log2( NumTilesInPic ) ) bits.

[0582] - The value of slice_address shall be in the range of 0 to NumTilesInPic - 1, inclusive.

[0583] Otherwise (rect_slice_flag is equal to 1), the following applies:

[0584] - slice_address is the slice index of the slice within the SubPicIdx-th subpicture.

[0585] - The length of slice_address is Ceil( Log2( NumSlicesInSubpic[ SubPicIdx ] ) ) bits.

[0586] - The value of slice_address shall be in the range of 0 to NumSlicesInSubpic[ SubPicIdx ] - 1, inclusive.

[0587] Bitstream conformance requires the following constraints to apply:

[0588] - If rect_slice_flag is equal to 0 or subpics_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.

[0589] - 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.

[0590] - When rect_slice_flag is equal to 0, the slices of a picture shall be in the order of increasing value of their slice_address.

[0591] - The shape of slices of a picture shall be such that each CTU shall have its entire left and top boundaries, when decoded, consisting of picture boundaries or boundaries of previously decoded CTUs, when decoded.

[0592] - For any two sub-pictures subpicA and subpicB, when the index of subpicA is less than the index of subpicB, any coded NAL unit of subPicA shall follow any coded NAL unit of subPicB in decoding order.

[0593] - The shape of sub-pictures of a picture shall be such that each sub-picture shall have its entire left and top boundaries, when decoded, consisting of picture boundaries or boundaries of previously decoded sub-pictures.

[0594] Num_tiles_in_slice_minus1 plus 1, when present, specifies the number of tiles in the slice. The value of num tiles in slice minus 1 shall be in the range of 0 to NumTilesInPic - 1, inclusive.

[0595] The variable NumCtuInCurrSlice, which specifies the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[ i ], i in the range of 0 to NumCtuInCurrSlice - 1, inclusive, which specifies the picture raster scan address of the i-th CTB within the slice, are derived as follows:

[0596]

[0597] The variables SubPicLeftBoundaryPos, SubPicTopBoundaryPos, SubPicRightBoundaryPos and SubPicBotBoundaryPos are derived as follows:

[0598]

[0599] slice_type specifies the coding type of the slice according to Table 7.

[0600] slice_type Name of slice_type 0 B (B slice) 1 P (P slice) 2 I (I slice)

[0601] Table 7

[0602] When nal_unit_type is a value of nal_unit_type in the range of IDR W RADL to CRA NUT, inclusive, and the current picture is the first picture in the access unit, slice_type shall be equal to 2.

[0603] The variables MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY, and MaxMttDepthC are derived as follows:

[0604] MinQtSizeY = 1 « MinQtLog2SizeY

[0605] MinQtSizeC = 1 « MinQtLog2SizeC

[0606] MinBtSizeY = 1 « MinCbLog2SizeY

[0607] MinTtSizeY = 1 « MinCbLog2SizeY

[0608] If slice type is equal to 2 (I),

[0609] MinQtLog2SizeY = MinCbLog2SizeY + pic_log2_diff_min_qt_min_cb_intra_slice_luma

[0610] MinQtLog2SizeC = MinCbLog2SizeC + pic_log2_diff_min_qt_min_cb_intra_slice_chroma

[0611] MaxBtSizeY = 1 « (MinQtLog2SizeY + pic_log2_diff_max_bt_min_qt_intra_slice_luma)

[0612] MaxBtSizeC = 1 « (MinQtLog2SizeC + pic_log2_diff_max_bt_min_qt_intra_slice_chroma)

[0613] MaxTtSizeY = 1 « (MinQtLog2SizeY + pic_log2_diff_max_tt_min_qt_intra_slice_luma)

[0614] MaxMttDepthY = pic_max_mtt_hierarchy_depth_intra_slice_luma

[0615] MaxMttDepthY = pic_max_mtt_hierarchy_depth_intra_slice_luma

[0616] MaxMttDepthC = pic_max_mtt_hierarchy_depth_intra_slice_chroma

[0617] CuQpDeltaSubdiv = pic_cu_qp_delta_subdiv_intra_slice

[0618] CuChromaQpOffsetSubdiv = pic_cu_chroma_qp_offset_subdiv_intra_slice

[0619] Otherwise (slice_type is equal to 0 (I) or 1 (P)),

[0620] MinQtLog2SizeY = MinCbLog2SizeY + pic_log2_diff_min_qt_min_cb_inter_slice

[0621] MinQtLog2SizeC = MinCbLog2SizeC + pic_log2_diff_min_qt_min_cb_inter_slice

[0622] MaxBtSizeY = 1 « (MinQtLog2SizeY + pic_log2_diff_max_bt_min_qt_inter_slice)

[0623] MaxBtSizeC = 1 « (MinQtLog2SizeC + pic_log2_diff_max_bt_min_qt_inter_slice)

[0624] MaxTtSizeY = 1 « (MinQtLog2SizeY + pic_log2_diff_max_tt_min_qt_inter_slice)

[0625] MaxTtSizeC = 1 « ( MinQtLog2SizeC + pic_log2_diff_max_tt_min_qt_inter_slice )

[0626] MaxMttDepthY = pic_max_mtt_hierarchy_depth_inter_slice

[0627] MaxMttDepthC = pic_max_mtt_hierarchy_depth_inter_slice

[0628] CuQpDeltaSubdiv = pic_cu_qp_delta_subdiv_inter_slice

[0629] CuChromaQpOffsetSubdiv = pic_cu_chroma_qp_offset_subdiv_inter_slice

[0630] slice_rpl_sps_flag[ i ] equal to 1 specifies that reference picture list i for the current slice is derived based on one of the ref_pic_list_struct( listldx, rplsldx ) syntax structures in the SPS with listldx equal to i. slice_rpl_sps_flag[ i ] equal to 0 specifies that reference picture list i for the current slice is derived based on the ref_pic_list_struct( listldx, rplsldx ) syntax structure included directly in the slice header of the current picture with listldx equal to i.

[0631] When slice_rpl_sps_flag[ i ] is not present, the following applies:

[0632] - If pic_rpl_present_flag is equal to 1, the value of slice_rpl_sps_flag[ i ] is inferred to be equal to pic_rpl_sps_flag[ i ].

[0633] - Otherwise, if num_ref_pic_lists_in_sps[ i ] is equal to 0, the value of ref_pic_list_sps_flag[ i ] is inferred to be equal to 0.

[0634] - Otherwise, if num_ref_pic_lists_in_sps[ i ] is greater than 0 and if rpl1_idx_present_flag is equal to 0, the value of slice_rpl_sps_flag[ 1 ] is inferred to be equal to slice_rpl_sps_flag[ 0 ].

[0635] slice_rpl_idx[ i ] specifies the index of the list of ref_pic_list_struct( listldx, rplsldx ) syntax structures ( where listldx is equal to i ) included in the SPS for the ref_pic_list_struct( listldx, rplsldx ) syntax structure ( where listldx is equal to i ) used to derive the reference picture list i of the current picture. The slice_rpl_idx[ i ] syntax element is represented by Ceil( Log2( num_ref_pic_lists_in_sps[ i ] ) ) bits. When not present, the value of slice_rpl_idx[ i ] is inferred to be equal to 0. The value of slice_rpl_idx[ i ] shall be in the range of 0 to num_ref_pic_lists_in_sps[ i ] - 1, inclusive. When slice_rpl_sps_flag[ i ] is equal to 1 and num_ref_pic_lists_in_sps[ i ] is equal to 1, the value of slice_rpl_idx[ i ] is inferred to be equal to 0. When slice_rpl_sps_flag[ i ] is equal to 1 and rpll_idx_present_flag is equal to 0, the value of slice_rpl_idx[ 1 ] is inferred to be equal to slice_rpl_idx[ 0 ].

[0636] The variable Rplsldx[ i ] is derived as follows:

[0637]

[0638] slice_poc_lsb_lt[ i ][ j ] specifies the value of the picture order count modulo MaxPicOrderCntLsb of the j-th LTRP entry in the i-th reference picture list. The slice_poc_lsb_lt[ i ][ j ] syntax element is of length Log2_max_pic_order_cnt_lsb_minus4 + 4 bits.

[0639] The variable PocLsbLt[ i ][ j ] is derived as follows:

[0640]

[0641] slice_delta_poc_msb_present_flag[ i ][ j ] equal to 1 specifies that slice_delta_poc_msb_cycle_lt[ i ][ j ] is present.

[0642] slice_delta_poc_msb_present_flag[ i ][ j ] equal to 0 specifies that slice_delta_poc_msb_cycle_lt[ i ][ j ] is not present.

[0643] Let prevTid0Pic be the previous picture in decoding order that has the same nuh_layer_id as the current picture, has Temporalld equal to 0 and is not a RASL or RADL picture. Let setOfPrevPocVals be the set consisting of:

[0644] - PicOrderCntVal of prevTid0Pic,

[0645] - PicOrderCntVal of each picture referred by an entry in RefPicList[ 0 ] or RefPicList[ 1 ] of prevTid0Pic and having the same nuh_layer_id as the current picture,

[0646] - PicOrderCntVal of each picture following prevTid0Pic in decoding order, having the same nuh_layer_id as the current picture and preceding the current picture in decoding order.

[0647] When pic_rpl_present_flag is equal to 0 and there is more than one value in setOfPrevPocVals, the value whose modulo MaxPicOrderCntLsb is equal to PocLsbLt[ i ][ j ] the value of slice_delta_poe_msb_present flag[ i ][ j ] shall be equal to 1.

[0648] slice_delta_poc_msb_cycle_lt[ i ][ j ] specifies the value of FullPocLt[ i ][ j ] as follows:

[0649]

[0650] The value of slice_delta_poc_msb_cycle_lt[ i ][ j ] shall be in the range of 0 to 2 (32 -log2 max pic order cnl lsb minus4-4)The value of slice_delta_poc_msb_cycle_lt[ i ][ j ] is inferred to be equal to 0 when not present.

[0651] Num_ref_idx_active_override_flag equal to 1 specifies that the syntax element num_ref_idx_active_minus1[ 0 ] is present for P slices and B slices, and the syntax element num_ref_idx_active_minus1[ 1 ] is present for B slices. Num_ref_idx_active_override_flag equal to 0 specifies that the syntax elements num_ref_idx_active_minus1[ 0 ] and num_ref_idx_active_minus1[ 1 ] are not present. When not present, the value of num_ref_idx_active_override_flag is inferred to be equal to 1.

[0652] num_ref_idx_active_minus1[ i ] is used to derive the variable NumRefIdxActive[ i ], as specified in Formulas 7 through 122. The value of num_ref_idx_active_minus1[ i ] shall be in the range of 0 to 14, inclusive.

[0653] 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.

[0654] 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.

[0655] The variable NumRefIdxActive[ i ] is derived as follows:

[0656]

[0657] The value of NumRefIdxActive[ i ] - 1 specifies the maximum reference index of reference picture list i that can be used to decode the slice. When the value of NumRefIdxActive[ i ] is equal to 0, no reference index of reference picture list i can be used to decode the slice.

[0658] When the current slice is a P slice, the value of NumRefIdxActive[ 0 ] shall be greater than 0.

[0659] When the current slice is a B slice, both NumRefIdxActive[ 0 ] and NumRefIdxActive[ 1 ] shall be greater than 0.

[0660] cabac_init_flag specifies the method to determine the initialization table used in the initialization process for context variables. When cabac_init_flag is not present, it is inferred to be equal to 0.

[0661] collocated_from_l0_flag equal to 1 specifies that the collocated picture for temporal motion vector prediction originates from reference picture list 0. collocated_from_l0_flag equal to 0 specifies that the collocated picture for temporal motion vector prediction originates from reference picture list 1.

[0662] When collocated_from_l0_flag is not present, the following applies:

[0663] - If slice_type is not equal to B, the value of collocated_from_l0_flag is inferred to be equal to 1.

[0664] - Otherwise (slice_type is equal to B), the value of collocated_from_l0_flag is inferred to be equal to pps_collocated_from_l0_idc - 1.

[0665] collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction. When slice_type is equal to P or when slice_type is equal to B and collocated_from_l0_flag is equal to 1, collocated_ref_idx refers to the picture in list 0 and the value of collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[ 0 ] - 1, inclusive.

[0666] When slice_type is equal to B and collocated_from_l0_flag is equal to 0, collocated_ref_idx refers to the picture in list 1 and the value of collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[ 1 ] - 1, inclusive.

[0667] If collocated_ref_idx does not exist, it is inferred that the value of collocated_ref_idx is equal to 0.

[0668] Bitstream compliance requirements: for all slices of an encoded image, the image referenced by collocated_ref_idx should be the same.

[0669] For bitstream compliance requirements, the reference image referenced by collocated_ref_idx and the current image should have the same resolution, and RefPicIsScaled[collocated_from_l0_flag? 0:1][collocated_ref_idx] should be equal to 0.

[0670] slice_qp_delta specifies the Qp to be used for the coded blocks in the slice. Y The initial value of the slice, until modified by the value of CuQpDeltaVal in the coding unit layer. Y Initial value of quantization parameter SliceQp Y Export as follows:

[0671] SliceQp Y =26+init_qp_minus26+slice_qp_delta

[0672] SliceQp Y The value should be in the range of -QpBdOffset to +63 (inclusive).

[0673] When Qp' is determined Cb When quantizing the parameter value, `slice_cb_qp_offset` specifies the difference to be added to `pps_cb_qp_offset`. 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).

[0674] When Qp' is determined Crslice_cr_qp_offset specifies the difference to be added to the value of pps_cr_qp_offset when determining the value of Qp'cr. The value of slice_cr_qp_offset shall be in the range of -12 to +12, inclusive. When slice_cr_qp_offset is not present, it is inferred to be equal to 0. The value of pps_cr_qp_offset + slice_cr_qp_offset shall be in the range of -12 to +12, inclusive.

[0675] slice_joint_cbcr_qp_offset specifies the difference to be added to the value of pps_joint_cb_cr_qp_offset_value when determining the value of Qp' CbCr . 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.

[0676] slice_sao_luma_flag equal to 1 specifies that SAO is enabled for luma components in the current slice; slice_sao_luma_flag equal to 0 specifies that SAO is disabled for luma components in the current slice; when slice_sao_luma_flag is not present, it is inferred to be equal to pic_sao_luma_enabled_flag.

[0677] slice_sao_chroma_flag equal to 1 specifies that SAO is enabled for chroma components in the current slice; slice_sao_chroma_flag equal to 0 specifies that SAO is disabled for chroma components in the current slice. When slice_sao_chroma_flag is not present, it is inferred to be equal to pic_sao_chroma_enabled_flag.

[0678] slice_alf_enabled_flag equal to 1 specifies that the adaptive loop filter is enabled in the slice and can be applied to Y, Cb or Cr color components. slice_alf_enabled_flag equal to 0 specifies that the adaptive loop filter is disabled in the slice for all color components. When not present, the value of slice_alf_enabled_flag is inferred to be equal to pic_alf_enabled_flag.

[0679] slice_num_alf_aps_ids_luma specifies the number of ALF APSs referred 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 pic_num_alf_aps_ids_luma.

[0680] slice_alf_aps_id_luma[ i ] specifies the adaptation_parameter_set_id of the i-th ALF APS referred by the luma component of the slice. 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. 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 pic_alf_aps_id_luma[ i ].

[0681] 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.

[0682] 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 pic_alf_chroma_idc.

[0683] slice_alf_aps_id_chroma specifies the adaptation_parameter_set_id of the ALF APS referenced 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 pic_alf_aps_id_chroma.

[0684] 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.

[0685] slice_deblocking_filter_override_flag equal to 1 specifies that deblocking parameters are present in the slice header. slice_deblocking_filter_override_flag equal to 0 specifies that deblocking parameters are not present in the slice header. When not present, the value of slice_deblocking_filter_override_flag is inferred to be equal to pic_deblocking_filter_override_flag.

[0686] slice_deblocking_filter_disabled_flag equal to 1 specifies that the operation of the deblocking filter is not applied to the current slice. slice_deblocking_filter_disabled_flag equal to 0 specifies that the operation of the deblocking filter is applied to the current slice. When not present, slice_deblocking_filter_disabled_flag is inferred to be equal to pic_deblocking_biter_disabled_flag.

[0687] slice_beta_offset_div2 and slice_tc_offset_div2 specify the deblocking parameter offsets (divided by 2) of beta and tC for the current slice. The values of slice beta offset div2 and slice tc offset div2 shall both be in the range of -6 to 6, inclusive. When not present, the values of slice_beta_offset_div2 and slice_tc_offset_div2 are inferred to be equal to pic_beta_offset_div2 and pic_tc_offset_div2, respectively.

[0688] When entry_point_offsets_present_flag is equal to 1, the variable NumEntryPoints specifying the number of entry points in the current slice is derived as follows:

[0689]

[0690] offset_len_minus1 plus 1 specifies the length, in bits, of the entry entry_point_offset_minus1[ i ] syntax elements. The value of offset_len_minus1 shall be in the range of 0 to 31, inclusive.

[0691] entry_point_offset_minus1[ i ] plus 1 specifies the i-th entry point offset in bytes and is represented by offset_len_minus1 plus 1 bits. The slice data following the slice header consists of NumEntryPoints + 1 subsets, where the subset index values range from 0 to NumEntryPoints, inclusive. The first byte of the slice data is considered to be byte 0. When present, the anticorruption 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_minus1[ 0 ] (inclusive) of the coded slice data, and subset k (where k is in the range of 1 to NumEntryPoints - 1, inclusive) consists of bytes firstByte[ k ] to lastByte[ k ] (inclusive) of the coded slice data, where firstByte[ k ] and lastByte[ k ] are defined as:

[0692]

[0693] lastByte[k] = firstByte[k] + entry_point_offset_minus1[k]

[0694] The last subset (with subset index equal to NumEntryPoints) consists of the remaining bytes of the coded slice data.

[0695] When entropy_coding_sync_enabled_flag is equal to 0 and the slice contains one or more complete tiles, each subset shall consist of all the coded bits of all CTUs in the slice that are 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.

[0696] When entropy_coding_sync_enabled_flag is equal to 0 and the slice contains subsets of CTU rows from a single tile, NumEntryPoints shall be equal to 0 and the number of subsets shall be equal to 1. The subset shall consist of all the coded bits of all CTUs in the slice. When entropy_coding_sync_enabled_flag is equal to 1, each subset k (with k in the range of 0 to NumEntryPoints, inclusive) shall consist of all the coded bits of all CTUs in the tile-specific CTU row within 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.

[0697] slice_header_extension_length specifies the length, in bytes, of the slice header extension data, not including 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.

[0698] 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 a decoder's conformance to the profiles specified in this version of this Specification.

[0699] As provided in Table 2, a NAL unit can include an adaptation parameter set syntax structure. Table 8 shows the adaptation parameter set syntax structure provided in JVET-P2001.

[0700]

[0701] Table 8

[0702] With respect to Table 8, JVET-P2001 provides the following semantics:

[0703] Each APS RBSP shall be available to the decoding process prior to being referenced, including in at least one AU in which the Temporalld is less than or equal to the Temporalld of the coded slice NAL unit that references it or is provided through external means.

[0704] All APS NAL units with a particular value of adaptation_parameter_set_id and a particular value of aps_params_type within a PU shall have the same content, whether they are prefix APS NAL units or suffix APS NAL units.

[0705] adaptation_parameter_set_id provides an identifier of the APS for referencing by other syntax elements.

[0706] 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.

[0707] 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.

[0708] aps_params_type specifies the type of APS parameters carried in the APS as specified in Table 9. When aps_params_type is equal to 1 (LMCS APS), the value of adaptation_parameter_set_id shall be in the range of 0 to 3, inclusive.

[0709]

[0710]

[0711] Table 9

[0712] NOTE - Each type of APS uses a separate value space for adaptation_parameter_set_id.

[0713] NOTE - An APS NAL unit (with a particular value of adaptation_parameter_set_id and a particular value of aps_params_type) can be shared across pictures, and different slices within a picture can refer to different ALF APSs.

[0714] NOTE - A suffix APS NAL unit associated with a particular VCL NAL unit that precedes the suffix APS NAL unit in decoding order is not used by the particular VCL NAL unit, but is used by VCL NAL units that follow the suffix APS NAL unit in decoding order.

[0715] 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.

[0716] aps_extension_data_flag can have any value. Its presence and value do not affect a decoder conforming to the profile specified in this version of this Specification. A decoder conforming to this version of this Specification shall ignore all aps_extension_data_flag syntax elements

[0717] As provided above with respect to Table 5, the picture header syntax structure provided in JVET-P2001 includes the syntax element pic_lmcs_enabled_flag, which specifies that luma mapping with chroma scaling (LMCS) is enabled for all slices associated with the PH, and the syntax element pic_lmcs_aps_id, which specifies the adaptation_parameter_set_id of the LMCS APS for the slices associated with the PH. Thus, according to JVET-P2001, if pic_lmcs_enabled_flag is equal to 1, luma mapping with chroma scaling is applied to all slices associated with the PH. That is, in JVET-P2001, LMCS cannot be turned on or off on a per-slice basis if LMCS is enabled for a picture. Similarly, the picture header syntax structure provided in JVET-P2001 includes the syntax element pic_scaling_list_present_flag, which specifies that scaling list data for the slices associated with the PH is derived based on scaling list data contained in a reference scaling list APS, and pic_scaling_list_aps_id, which specifies the adaptation_parameter_set_id of the scaling list APS. Thus, according to JVET-P2001, if pie sealing_list_present_flag is equal to 1, scaling lists are applied to all slices associated with the PH. That is, in JVET-P2001, scaling lists cannot be selected on a per-slice basis. This can be less than ideal.

[0718] As noted above, in some cases, a picture can have a single slice. According to the picture header syntax structure and the slice header syntax structure provided in JVET-P2001, in the case where a picture has a single slice, the syntax elements in the picture header that are involved in specifying syntax that can be present at the picture header or slice header level are redundant. As it impacts compression efficiency, it is not an ideal design for signaling redundant syntax elements at the picture header level.

[0719] As provided above with respect to Tables 3 and 5, the SPS syntax structure in JVET-P2001 includes the syntax element sps_subpic_id_len_minus1, which specifies the number of bits used to represent the syntax element sps_subpic_id[i], and when subpicture ids are signaled in the picture header, the length of the subpicture id syntax elements is also signaled in the picture header. That is, the picture header in JVET-P2001 includes the syntax element ph_subpic_id_len_minus1, which specifies the number of bits used to represent the syntax element ph_subpic_id[i]. Since the length of the subpicture id syntax elements is one of the items that has been identified as a characteristic that aligns between different picture encodings within a sequence, it is inefficient to repeat the length in each picture header.

[0720] Figure 1 FIG. 1 is a block diagram illustrating an example of a system that can be configured to encode (e.g., encode and / or decode) video data according to one or more techniques of this disclosure. System 100 represents an example of a video data system that can be encapsulated according to one or more techniques of this disclosure. As shown, system 100 includes source device 102, communication medium 110, and destination device 120. In the example shown, source device 102 can include any device configured to encode video data and transmit the encoded video data to communication medium 110. Destination device 120 can include any device configured to receive encoded video data via communication medium 110 and decode the encoded video data. Source device 102 and / or destination device 120 can include computing devices equipped for wired and / or wireless communication, and can include, for example, set-top boxes, digital video recorders, televisions, desktop computers, laptop computers or tablet computers, game consoles, medical imaging devices, and mobile devices including, for example, smartphones, cellular telephones, personal gaming devices. Figure 1 Figure 1

[0721] ​​Communication media 110 can include any combination of wireless and wired communication media and / or storage devices. Communication media 110 can include coaxial cables, fiber optic cables, twisted pair cables, wireless transmitters and receivers, routers, switches, repeaters, base stations, or any other equipment that can be used to facilitate communication between various devices and stations. Communication media 110 can include one or more networks. For example, communication media 110 can include a network configured to allow access to the World Wide Web, for example, the Internet. The network can operate according to one or more telecommunication protocols. The telecommunication protocols can include proprietary aspects and / or can include standardized telecommunication protocols. Examples of standardized telecommunication protocols include Digital Video Broadcast (DVB) standards, Advanced Television Systems Committee (ATSC) standards, Integrated Services Digital Broadcast (ISDB) standards, Data Over Cable Service Interface Specification (DOCSIS) standards, Global System for Mobile Communications (GSM) standards, Code Division Multiple Access (CDMA) standards, Third Generation Partnership Project (3GPP) standards, European Telecommunications Standards Institute (ETSI) standards, Internet Protocol (IP) standards, Wireless Application Protocol (WAP) standards, and Institute of Electrical and Electronics Engineers (IEEE) standards.

[0722] Storage devices can include any type of device or storage medium capable of storing data. Storage media can include tangible or non-transitory computer-readable media. Computer- readable media can include optical, flash memory, magnetic memory, or any other suitable digital memory media. In some examples, a memory device or portions thereof can be described as non-volatile storage, and in other examples, portions of memory devices can be described as volatile storage. Examples of volatile memory can include random access memory (RAM), dynamic random access memory (DRAM), and static random access memory (SRAM). Examples of non-volatile memory can include magnetic hard discs, optical discs, floppy discs, flash memories, or forms of electrically programmable memory (EPROM) or electrically erasable and programmable (EEPROM) memory. Storage devices can include memory cards (e.g., Secure Digital (SD) memory cards), internal / external hard disk drives, and / or internal / external solid state drives. Data can be stored on storage devices in accordance with defined file formats.

[0723] Figure 4 is a conceptual diagram illustrating examples of components that can be included in implementations of system 100. In Figure 4 In the example implementation shown, system 100 includes one or more computing devices 402A-402N, a television service network 404, a television service provider site 406, a wide area network 408, a local area network 410, and one or more content provider sites 412A-412N. Figure 4The specific implementations shown are representative examples of a system that can be configured to allow digital media content, such as movies, live sporting events, and the like, and data and applications associated therewith and media presentations to be distributed to and accessed by a plurality of computing devices, such as computing devices 402A-402N. In Figure 4 In the example shown, computing devices 402A-402N can include any device configured to receive data from one or more of television service network 404, wide area network 408, and / or local area network 410. For example, computing devices 402A-402N can be equipped for wired and / or wireless communication and can be configured to receive services over one or more data channels and can include televisions, including so-called "smart" televisions, set-top boxes, and digital video recorders. In addition, computing devices 402A-402N can include desktop computers, laptop or tablet computers, game consoles, mobile devices, including, for example, "smart" phones, cellular telephones, and personal gaming devices.

[0724] Television service network 404 is an example of a network configured to enable distribution of digital media content that can include television services. For example, television service network 404 can include public over-the-air television networks, public or subscription-based satellite television service provider networks, and public or subscription-based cable television provider networks and / or cloud or Internet service providers. It should be noted that, although in some examples, television service network 404 can primarily be used to allow television services to be provided, television service network 404 can also allow other types of data and services to be provided according to any combination of the telecommunication protocols described herein. In addition, it should be noted that, in some examples, television service network 404 can allow for bidirectional communication between television service provider site 406 and one or more of computing devices 402A-402N. Television service network 404 can include any combination of wireless and / or wired communication media. Television service network 404 can include coaxial cables, fiber optic cables, twisted pair cables, wireless transmitters and receivers, routers, switches, repeaters, base stations, or any other equipment that can be useful to facilitate communications between various devices and sites. Television service network 404 can operate according to a combination of one or more telecommunication protocols. The telecommunication protocols can include proprietary aspects and / or can include standardized telecommunication protocols. Examples of standardized telecommunication protocols include DVB standards, ATSC standards, ISDB standards, DTMB standards, DMB standards, Data Over Cable Service Interface Specification (DOCSIS) standards, HbbTV standards, W3C standards, and UPnP standards.

[0725] Referring again to Figure 4, the television service provider site 406 can be configured to distribute television services via the television service network 404. For example, the television service provider site 406 can include one or more broadcast stations, cable television providers, or satellite television providers, or Internet-based television providers. For example, the television service provider site 406 can be configured to receive transmissions (including television programs) over a satellite uplink / downlink. Further, as shown, the television service provider site 406 can be in communication with a wide area network 408, and can be configured to receive data from content provider sites 412A-412N. It should be noted that, in some examples, the television service provider site 406 can include a television studio, and content can originate from the television studio. Figure 4

[0726] The wide area network 408 can include a packet-based network, and operate according to a combination of one or more telecommunication protocols. The telecommunication protocols can include proprietary aspects and / or can include standardized telecommunication protocols. Examples of standardized telecommunication protocols include Global System for Mobile Communications (GSM) standards, Code Division Multiple Access (CDMA) standards, 3rd Generation Partnership Project (3GPP) standards, European Telecommunications Standards Institute (ETSI) standards, European Norm (EN), IP standards, Wireless Application Protocol (WAP) standards, and Institute of Electrical and Electronics Engineers (IEEE) standards, such as one or more IEEE 802 standards (e.g., Wi-Fi). The wide area network 408 can include any combination of wireless and / or wired communication media. The wide area network 408 can include coaxial cables, fiber optic cables, twisted pair cables, Ethernet cables, wireless transmitters and receivers, routers, switches, repeaters, base stations, or any other equipment that can be useful to facilitate communications between various devices and sites. In one example, the wide area network 408 can include the Internet. The local area network 410 can include a packet-based network, and operate according to a combination of one or more telecommunication protocols. The local area network 410 can be distinguished from the wide area network 408 based on access level and / or physical infrastructure. For example, the local area network 410 can include a secure home network.

[0727] Referring again to Figure 4 ​Content provider sites 412A-412N represent examples of sites that can provide multimedia content to television service provider site 406 and / or computing devices 402A-402N. For example, a content provider site can include a studio having one or more studio content servers configured to provide multimedia files and / or streams to television service provider site 406. In one example, content provider sites 412A-412N can be configured to provide multimedia content using an IP suite. For example, a content provider site can be configured to provide multimedia content to a receiver device according to a Real Time Streaming Protocol (RTSP), HTTP, and / or the like. Further, content provider sites 412A-412N can be configured to provide data including hypertext-based content and / or the like to one or more of receiver devices 402A-402N and / or television service provider site 406 over wide area network 408. Content provider sites 412A-412N can include one or more web servers. Data provided by content provider sites 412A-412N can be defined according to a data format.

[0728] Referring again to Figure 1 Source device 102 includes video source 104, video encoder 106, data encapsulator 107, and interface 108. Video source 104 can include any device configured to capture and / or store video data. For example, video source 104 can include a video camera and a storage device operably coupled thereto. Video encoder 106 can include any device configured to receive video data and generate a compliant bitstream representing the video data. A compliant bitstream can refer to a bitstream from which a video decoder can receive and reproduce video data. Aspects of a compliant bitstream can be defined according to a video coding standard. When generating a compliant bitstream, video encoder 106 can compress video data. Compression can be lossy (observable or non-observable to a human observer) or lossless. Figure 5 is a block diagram illustrating an example of a video encoder 500 that can implement the techniques for encoding video data described herein. It should be noted that although the example video encoder 500 is illustrated as having distinct functional blocks, such an illustration is for descriptive purposes and does not limit video encoder 500 and / or its sub-components to a particular hardware or software architecture. The functionality of video encoder 500 can be implemented using any combination of hardware, firmware, and / or software implementations.

[0729] Video encoder 500 can perform intra-picture prediction encoding and inter-picture prediction encoding of picture regions and can therefore be referred to as a hybrid video encoder. In Figure 5In the illustrated example, video encoder 500 receives a source video block. In some examples, the source video block can include a picture region that has been partitioned according to an encoding structure. For example, the source video data can include macroblocks, CTUs, CBs, sub-partitions thereof, and / or another equivalent encoding unit. In some examples, video encoder 500 can be configured to perform additional partitioning of the source video block. It should be noted that the techniques described herein are generally applicable to video encoding, regardless of how source video data is partitioned prior to and / or during encoding. In Figure 5 In the illustrated example, video encoder 500 includes summer 502, transform coefficient generator 504, coefficient quantization unit 506, inverse quantization and transform coefficient processing unit 508, summer 510, intra-prediction processing unit 512, inter-prediction processing unit 514, filter unit 516, and entropy encoding unit 518. As Figure 5 As illustrated, video encoder 500 receives a source video block and outputs a bitstream.

[0730] In Figure 5 In the illustrated example, video encoder 500 can generate residual data by subtracting a prediction video block from a source video block. The selection of the prediction video block is described in detail below. Summer 502 represents a component configured to perform this subtraction operation. In one example, the subtraction occurs in the pixel domain. Transform coefficient generator 504 applies a transform, such as a discrete cosine transform (DCT), a discrete sine transform (DST), or a conceptually similar transform, to the residual block or sub-partitions thereof to produce a set of residual transform coefficients. Transform coefficient generator 504 can be configured to perform any and all combinations of the transforms included in the discrete trigonometric transform family, including approximations thereof. Transform coefficient generator 504 can output the transform coefficients to coefficient quantization unit 506. Coefficient quantization unit 506 can be configured to perform quantization of the transform coefficients. The quantization process can reduce the bit depth associated with some or all of the coefficients. The degree of quantization can alter the rate-distortion (i.e., bit rate versus video quality) of the encoded video data. The degree of quantization can be modified by adjusting a quantization parameter (QP). The quantization parameter can be determined based on a slice level value and / or a CU level value (e.g., a CU delta QP value). QP data can include any data used to determine the QP used to quantize a particular set of transform coefficients. As Figure 5 As illustrated, the quantized transform coefficients (which can be referred to as level values) are output to inverse quantization and transform coefficient processing unit 508. Inverse quantization and transform coefficient processing unit 508 can be configured to apply inverse quantization and inverse transforms to generate reconstructed residual data. As Figure 5As shown, at adder 510, the reconstructed residual data can be added to the predicted video block. In this way, the encoded video block can be reconstructed and the resulting reconstructed video block can be used to evaluate the quality of the given prediction, transform, and / or quantization of the encoding. Video encoder 500 can be configured to perform multiple encoding passes (e.g., perform encoding while varying one or more of the prediction, transform parameters, and quantization parameters). The rate-distortion or other system parameters of the bitstream can be optimized based on the evaluation of the reconstructed video block. Moreover, the reconstructed video block can be stored and used as a reference to predict subsequent blocks.

[0731] Referring again to FIG. 5, Figure 5 , intra-prediction processing unit 512 can be configured to select an intra-prediction mode for a video block to be encoded. Intra-prediction processing unit 512 can be configured to evaluate the frame and determine an intra-prediction mode to use to encode the current block. As described above, possible intra-prediction modes can include a planar prediction mode, a DC prediction mode, and an angular prediction mode. Moreover, it should be noted that in some examples, the prediction mode for chroma components can be inferred from the prediction mode for luma. Intra-prediction processing unit 512 can select the intra-prediction mode after performing one or more encoding passes. Moreover, in one example, intra-prediction processing unit 512 can select the prediction mode based on a rate-distortion analysis. As described above, the transform performed on the residual data can be mode dependent (e.g., a quadratic transform matrix can be determined based on the prediction mode). Figure 5 As shown, intra-prediction processing unit 512 outputs intra-prediction data (e.g., syntax elements) to entropy encoding unit 518 and transform coefficient generator 504. As described above, the transform performed on the residual data can be mode dependent (e.g., a quadratic transform matrix can be determined based on the prediction mode).

[0732] Referring again to FIG. 5, Figure 5 , inter-prediction processing unit 514 can be configured to perform inter-prediction encoding for a current video block. Inter-prediction processing unit 514 can be configured to receive a source video block and calculate a motion vector for a PU of the video block. The motion vector can indicate a displacement of a prediction unit of the video block within a current video frame relative to a prediction block within a reference frame. Inter-prediction encoding can use one or more reference pictures. Moreover, motion prediction can be uni-prediction (using one motion vector) or bi-prediction (using two motion vectors). Inter-prediction processing unit 514 can be configured to select a prediction block by calculating pixel differences determined by, for example, sum of absolute differences (SAD), sum of squared differences (SSD), or other difference metrics. As described above, motion vectors can be determined and specified according to motion vector prediction. As described above, inter-prediction processing unit 514 can be configured to perform motion vector prediction. Inter-prediction processing unit 514 can be configured to generate a predicted block using the motion prediction data. For example, inter-prediction processing unit 514 can locate a predicted video block within the frame buffer (e.g., using the motion vector) and generate a predicted block based on the located predicted video block. Inter-prediction processing unit 514 can be configured to output the predicted block to adder 510. Figure 5(Not shown in the image). It should be noted that the inter-frame prediction processing unit 514 can be further configured to apply one or more interpolation filters to the reconstructed residual block to compute sub-integer pixel values ​​for motion estimation. The inter-frame prediction processing unit 514 can output the motion prediction data of the computed motion vectors to the entropy coding unit 518.

[0733] like Figure 5 As shown, filter unit 516 receives reconstructed video blocks and coding parameters, and outputs modified reconstructed video data. Filter unit 516 can be configured to perform deblocking and / or Sample Adaptive Offset (SAO) filtering. SAO filtering is a nonlinear amplitude mapping that can be used to improve the reconstruction by adding an offset to the reconstructed video data. It should be noted that, as Figure 5 As shown, the intra-frame prediction processing unit 512 and the inter-frame prediction processing unit 514 can receive modified reconstructed video blocks via the filter unit 216. The entropy coding unit 518 receives quantized transform coefficients and prediction syntax data (i.e., intra-frame prediction data and motion prediction data). It should be noted that in some examples, the coefficient quantization unit 506 can perform a scan of the matrix including the quantized transform coefficients before outputting the coefficients to the entropy coding unit 518. In other examples, the entropy coding unit 518 can perform a scan. The entropy coding unit 518 can be configured to perform entropy coding according to one or more of the techniques described herein. Thus, the video encoder 500 represents an example of a device configured to generate encoded video data according to one or more techniques of this disclosure.

[0734] Refer again Figure 1 The data encapsulator 107 can receive encoded video data and generate a compatible bitstream according to a defined data structure, such as a NAL unit sequence. A device receiving the compatible bitstream can reproduce the video data from it. Furthermore, as mentioned above, sub-bitstream extraction can refer to the process by which a device receiving an ITU-T H.265 compliant bitstream forms a new ITU-T H.265 compliant bitstream by discarding and / or modifying data in the received bitstream. It should be noted that the term compliant bitstream can be used instead of compatible bitstream. In one example, the data encapsulator 107 can be configured to generate a syntax according to one or more techniques described herein. It should be noted that the data encapsulator 107 does not necessarily need to be located in the same physical device as the video encoder 106. For example, functions described as being performed by the video encoder 106 and the data encapsulator 107 can be distributed across... Figure 4 In the device shown.

[0735] As noted above, signaling metadata describing video coding properties provided in JVET-P2001 is less than ideal. In particular, as noted above, in JVET-P2001, if LMCS is enabled for a picture, LMCS cannot be turned on or off on a per slice basis, and scaling lists cannot be selected on a per slice basis. In one example, according to the techniques herein, if LMCS is enabled for a picture, LMCS is allowed to be turned on or off on a per slice basis and / or scaling lists can be selected on a per slice basis. That is, in one example, according to the techniques herein, the relevant syntax of the slice header syntax structure used in conjunction with the picture header (e.g., the picture header based on the picture header shown in Table 5) can be based on the syntax provided in Table 10.

[0736]

[0737] Table 10

[0738] With respect to Table 10, the semantics of the syntax elements can be based on the semantics provided above with respect to Table 6, where the semantics of the syntax elements slice_lmcs_enabled_flag and slice_scaling_list_present_flag are based on the following:

[0739] 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 disabled for the current slice. When slice lines enabled flag is not present, its value is inferred to be equal to 0.

[0740] slice_scaling_list_present_flag equal to 1 specifies that the scaling list data for the current slice is derived based on the scaling list data contained in the reference scaling list APS with aps_params_type equal to SCALING APS and adaptation parameter set id equal to pic_scaling_list_aps_id. slice_scaling_list_present_flag equal to 0 specifies that the scaling list data for the current picture is the default scaling list data specified to be derived. When not present, the value of slice_scaling_list_present_flag is inferred to be equal to 0.

[0741] As noted above, in JVET-P2001, in the case of a picture having a single slice, the syntax elements in the picture header that refer to specifying syntax that can be present at the picture header or slice header level are redundant. In one example, according to the techniques herein, a flag can be signaled in the SPS and used in the picture header to control the presence of syntax in the picture header, such as RPL, SAO, ALF, and / or deblocking related syntax. This is useful and provides bit savings when the picture has only one slice. Additionally, in one example, the SPS flag can be used to control the presence of picture header extensions. Signaling such a flag in the SPS allows for specifying that every picture in a coded video sequence has this property. Alternatively, in one example, the flag can instead be signaled in the PPS or picture header. In one example, according to the techniques herein, the relevant syntax of the sequence parameter set syntax structure and the picture header syntax can be based on the syntax provided in Tables 11 and 12, respectively.

[0742]

[0743] Table 11

[0744]

[0745]

[0746] Table 12

[0747] With respect to Tables 11 and 12, the semantics of the syntax elements can be based on the semantics provided above with respect to Tables 3 and 5, with the semantics of the syntax elements sps_ph_flags_present_flag and pic_rpl_present_flag based on the following:

[0748] sps_ph_flags_present_flag equal to 1 specifies that the marking syntax elements pic rpl present flag, pic sao enabled present flag, pic alf enabled present flag and pic deblocking filter override present flag are present in the picture header and that the picture header extension is present in the picture header, sps alf enabled flag equal to 0 specifies that the marking syntax elements pic rpl present flag, pic sao enabled present flag, pic alf enabled present flag and pic deblocking filter override present flag are not present in the picture header and that the picture header extension is not present.

[0749] pic rpl present flag equal to 1 specifies that reference picture list signaling is present in the picture header. pic rpl present flag equal to 0 specifies that reference picture list signaling is not present in the picture header and that reference picture list signaling can be present in slice headers of slices of the picture. When not present, pic rpl present flag is inferred to be equal to 0.

[0750] Bitstream conformance requirement: When sps id rpl present flag is equal to 0 and the picture associated with the picture header is an IDR picture, the value of pic rpl present flag shall be equal to 0.

[0751] It should be noted that in one example, the syntax element sps ph flags present flag is not used to control the presence of the picture header extension. In this case, && sps ph flags present flag is not included in the if (picture header extension present flag && sps ph flags present flag) condition and the semantics of the syntax element sps ph flags present flag can be based on the following:

[0752] Sps_ph_flags_present_flag equal to 1 specifies that the flag syntax elements pic_rpl_present_flag, pic_sao_enabled_present_flag, pic_alf_enabled_present_flag, and pic_deblocking_filter_override_present_flag are present in the picture header, and sps_alf_enabled_flag equal to 0 specifies that the flag syntax elements pic_rpl_present_flag, pic_sao_enabled_present_flag, pic_alf_enabled_present_flag, and pic_deblocking_filter_override_present_flag are not present in the picture header.

[0753] It should be noted that in some cases, sps_ph_flags_present_flag can be described as a flag that indicates whether a picture includes a single slice. Thus, according to the techniques herein, generally, an indication of whether a picture includes a single slice can be used to indicate whether syntax is included in a picture header or a corresponding slice header. That is, for example, whether or not it is necessary to indicate in a picture header whether syntax will be present in a slice header can be based on the indication of whether a picture includes a single slice. For example, according to the techniques herein, when a picture includes a single slice, by default, redundant syntax between a picture header and a corresponding slice header will be included in the slice header, and because the redundant syntax will be included in the slice header by default, the picture header will not include syntax indicating whether the syntax is included in the picture header or the slice header (i.e., the presence of the indication syntax). It should be noted that the indication of whether a picture includes a single slice can be based on syntax (e.g., a flag) in a PPS or a condition indicated by the PPS syntax, for example, and num_slices_in_pic_minus1 is equal to 0, or based on no_pic_partition_flag equal to 1.

[0754] As another example, a flag can be signaled in the SPS, e.g., sps_ph_flags_present_flag, and another flag can be signaled in the PPS, e.g., pps_ph_flags_present_flag. Further, the flag in the SPS, e.g., sps_ph_flags_present_flag, can be used to control the presence of pic_rpl_present_flag, pic_sao_enabled_present_flag, pic_alf_enabled_present_flag, and the flag in the PPS, e.g., pps_ph_flags_present_flag, can be used to control the presence of pic_deblocking_filter_override_present_flag and the presence of the picture header extension in the condition if (picture_header_extension_present_flag && pps_ph_flags_present_flag).

[0755] In one example, according to the techniques herein, the more_rbsp_data() function can be used to signal the picture header extension data, rather than explicitly indicating the length of the extension, e.g., as provided in Table 12. That is, in one example, according to the techniques herein, the relevant syntax of the picture header syntax used to signal the picture header extension data can be based on the syntax provided in Table 12A, or in one example, based on the syntax provided in Table 12B.

[0756]

[0757] Table 12A

[0758]

[0759] Table 12B

[0760] With respect to Tables 12A-12B, the semantics of the syntax elements can be based on the semantics provided above, with the semantics of the syntax elements ph_extension_flag and ph_extension_data_flag based on the following:

[0761] ph_extension_flag equal to 0 specifies that the ph_extension_data_flag syntax element is not present in the picture header RBSP syntax structure. ph_extension_flag equal to 1 specifies that the ph_extension_data_flag syntax element is present in the picture header RBSP syntax structure.

[0762] ph_extension_data_flag can have any value. Its presence and value do not affect decoders to conform to the profiles specified in this version of this Specification. Decoders conforming to this version of this Specification shall ignore all ph_extension_data_flag syntax elements.

[0763] It should be noted that in the example corresponding to Table 12A, the syntax element picture_header_extension_present_flag can be removed from the PPS, and in the example corresponding to Table 12B, the syntax element picture_header_extension_present_flag can be included in the PPS, such that when extensions are not present, there is no need to signal the flag in the picture header.

[0764] As noted above, in JVET-P2001, the syntax element sps_subpic_id_len_minus1 is signaled in the SPS, and the syntax element ph_subpic_id_len_minus1 is signaled in each picture header is inefficient. In one example, according to the techniques herein, the subpicture ID length is not signaled in the picture header, but rather the signaled length from the parameter set is used. That is, in one example, according to the techniques herein, the syntax element ph_subpic_id_len_minus1 is not included in the picture header syntax structure, and in one example, the semantics of ph_subpic_id[i] can be based on the following:

[0765] ph_subpic_id[i] specifies the subpicture Id of the i-th subpicture. The length of the ph_subpic_id[i] syntax element is sps_subpic_id_len_minus1 + 1 bits.

[0766] The syntax element sps_subpic_id_len_minus1 is conditionally signaled in the SPS based on if (sps_subpics_id_present_flag) but not based on if (sps_subpics_id_signalling_present_flag). That is, the syntax element sps_subpic_id_len_minus1 can be immediately followed by if (sps_subpics_id_present_flag) {.

[0767] In one example, the semantics of ph_subpic_id[i] can be based on the following:

[0768] ph_subpic_id[ i ] specifies the subpicture Id of the i-th subpicture. The length of the ph_subpic_id[ i ] syntax element is pps_or_ph_subpic_id_len_minus1 + 1 bits.

[0769] In this case, in one example, the relevant syntax of the picture parameter set syntax structure can be based on the syntax provided in Table 13 according to the techniques herein.

[0770]

[0771] Table 13

[0772] With respect to Table 13, the semantics of the syntax elements can be based on the semantics provided above with respect to Table 4, with the semantics of the syntax elements pps_or_ph_subpic_id_signalling_present_flag and pps_or_ph_subpic_id_len_minus1 being based on the following:

[0773] pps_or_ph_subpic_id_signalling_present_flag equal to 1 specifies that pps_or_ph_subpic_id_lcn_minus1 is signaled in the PPS. pps_or_ph_subpic_id_signalling_present_flag equal to 0 specifies that pps_or_ph_subpic_id_len_minus1 is not signaled in the PPS.

[0774] Bitstream conformance requirement pps_or_ph_subpic_id_signalling_present_flag shall be equal to 0 when sps_subpic_id_present_flag is 0 or sps_subpic_id_signalling_present_flag is equal to 1.

[0775] pps_or_ph_subpic_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax elements pps_subpic_id[ i ] (if present) and ph_subpic_id[ i ] (if present). The value of pps_or_ph_subpic_id_len_minus1 shall be in the range of 0 to 15, inclusive.

[0776] Bitstream conformance requirement, for all PPS referred to by the coded picture within the CVS, the value of pps_or_ph_subpic_id_len_minus1 shall be the same.

[0777] In one example, according to the techniques herein, one or more of the techniques described above with respect to Tables 10-13 can be combined. For example, if LMCS is enabled for a picture, LMCS is allowed to be turned on or off per slice and / or scaling lists can be selected on a per slice basis and / or a flag can be signaled in the SPS and used in the picture header to control the presence of syntax in the picture header and / or the syntax element ph_subpic_id_len_minus1 is not included in the picture header syntax structure.

[0778] It should be noted that in JVET-P2001, it is required that each coded picture has exactly one picture header. It is beneficial to make a slice a self-contained entity, i.e., not dependent on the presence of any other NAL unit of the same access unit (assuming parameter sets are already available). For example, this improves error robustness because a slice can be processed independently even if the picture header is lost and thus not received. In one example, according to the techniques herein, the picture header syntax structure can be repeated in each slice header instead of sending the picture header syntax structure in the picture header NAL unit. In one example, this can be controlled based on a new flag that indicates whether the picture header is included in the slice header.

[0779] As provided above with respect to Table 2, a NAL unit can include a PH NUT. The NAL unit labeled PH NUT is a picture header NAL unit, and requires that each picture contain exactly one PH NUT, and that the PH NUT precede all VCL NAL units of the picture. In earlier drafts and earlier standards of VVC (i.e., HEVC and AVC), there was no picture header yet, so picture properties (e.g., picture properties related to random access) were repeated in all slices of a picture, even though the value was already required to be the same in all slices of a picture. In one example, according to the techniques herein, to provide a cleaner design, the corresponding picture level information can be provided in a picture header NAL unit instead of being repeated in all slices of a picture. Such a design also improves processing and analysis of access units, as random access properties can be determined at the picture header NAL unit, which precedes all slice NAL units, instead of having to parse the information from one of the slice NAL units to make the determination. Thus, according to the techniques herein, in one example, various slice NAL unit types (e.g., those in Table 2) can be changed to picture header NAL unit types, and there can be only one NAL unit type for coded slices. Table 14 illustrates an example of NAL unit types according to the techniques herein, where various slice NAL unit types are changed to picture header NAL unit types, and there is only one NAL unit type for coded slices. It should be noted that, according to the techniques herein, when NAL units from two different bitstreams are combined to form a new access unit of a new bitstream, if the picture header types are different in the two bitstreams, the combined access unit should (i.e., can be required to) use at least the restrictive picture header. For example, in one example, if the picture header in one bitstream is a trailing picture, and the picture header in the other bitstream is an IDR picture, the combined bitstream should use the trailing picture header in order to allow all slice types and prediction structures.

[0780]

[0781]

[0782] Table 14

[0783] For example, according to the techniques herein, slice types can be removed from the slice header and instead provided in the NAL unit header using different nal unit type values. Table 15 illustrates an example of NAL unit types according to the techniques herein, where slice types are removed from the slice header and provided in the NAL unit header. It should be noted that one benefit of including slice type information in the NAL unit header instead of the slice header is to make it easier for extractors and other network entities to identify independently decodable regions. Another benefit of including slice type information in the NAL unit header instead of the slice header is that it is more bit efficient to use the available values of nal unit type instead of having a separate syntax element in the slice header, which currently consumes one to three bits depending on the slice type.

[0784]

[0785]

[0786] Table 15

[0787] With respect to Table 15, it should be noted that the syntax element slice type is removed from the slice header(), the variable SliceType is used to replace all occurrences of slice type, and the semantics of the syntax element nal unit type can be augmented with the following:

[0788] When nal unit type is less than or equal to 2, the variable SliceType is derived as follows:

[0789] SliceType = nal unit type

[0790] Further, with respect to Table 15, the corresponding related picture header syntax can be as provided in Table 16:

[0791]

[0792]

[0793] Table 16

[0794] With respect to Table 16, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax element pic rpl present flag is based on the following:

[0795] pic rpl present flag equal to 1 specifies that reference picture list signaling is present in the PH. pic rpl present flag equal to 0 specifies that reference picture list signaling is not present in the PH and reference picture list signaling can be present in slice headers of slices of the picture. When pic rpl present flag is not present, it is inferred to be equal to 0.

[0796] Furthermore, the following text can be removed from the semantics of nal unit type:

[0797] For VCL NAL units of any particular picture, the following applies:

[0798] - 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. The picture or PU is said to have the same NAL unit type as the coded slice NAL units of the picture or PU.

[0799] - Otherwise (mixed_nalu_types_in_pic_flag is equal to 1), one or more of the VCL NAL units shall all have a particular value of nal unit type in the range of IDR W RADL to CRA NUT, inclusive, and the other VCL NAL units shall all have a particular value of nal unit type in the range of TRAIL NUT to RSV VCL 6, inclusive, or equal to GRA NUT.

[0800] Additionally, the syntax element mixed_nalu_types_in_pic_flag can be removed from the PPS, as different picture types are no longer indicated in the NAL unit header of a slice and, therefore, it is always possible to mix NAL units from different bitstreams (if they otherwise meet all the requirements needed to enable merging).

[0801] In one example, to support CRA pictures in mixed access units, in addition to being able to extract sub-pictures from a bitstream and decode the sub-pictures as independent bitstreams through appropriate rewriting of parameter sets, the following can also be applied to slices and PUs, in accordance with the techniques herein:

[0802] For each slice with nal_unit_type value nalUnitTypeA in the range of IDR W RADL to CRA NUT, inclusive, in a picture picA that also contains one or more slices with another nal_unit_type value (i.e., the value of mixed_nalu_types_in_pic_flag for the picture picA is equal to 1), the following applies:

[0803] - the slice shall belong to subpicture subpicA for which the corresponding subpic treated as pic flag[i] is equal to 1.

[0804] - the slice shall not belong to a subpicture of picA that contains VCL NAL units with nal_unit_type not equal to nalUnitTypeA.

[0805] - for all PUs in the CLVS that are arranged in decoding and output order after the current picture, neither RefPicList[0] nor RefPicList[1] of the slice in subpicA shall include any picture that is arranged in decoding order before picA.

[0806] As another example, the following can be applied to slices and PUs, with more stringent constraints for IDR pictures and more relaxed constraints for CRA pictures only:

[0807] For each slice with nal_unit_type value nalUnitTypeA in the range of IDR W RADL to CRA NUT, inclusive, in a picture picA that also contains one or more slices with another nal_unit_type value (i.e., the value of mixed_nalu_types_in_pic_flag for the picture picA is equal to 1), the following applies:

[0808] - the slice shall belong to subpicture subpicA for which the corresponding subpic treated as pic flag[i] is equal to 1.

[0809] - the slice shall not belong to a subpicture of picA that contains VCL NAL units with nal_unit_type not equal to nalUnitTypeA.

[0810] - if nalUnilTvpcA is equal to CRA:

[0811] For all PUs in the CLVS that are arranged after the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of the slice in subpicA shall include any picture that is arranged before picA in decoding order in the active entries.

[0812] - Otherwise:

[0813] For all PUs in the CLVS that are arranged after the current picture in decoding order, neither RefPicList[0] nor RefPicList[1] of the slice in subpicA shall include any picture that is arranged before picA in decoding order in the active entries.

[0814] It should be noted that it is a common case that each picture is coded with a single slice, and it is highly desirable to be able to support this use case with as little overhead as possible. In particular, it is desirable to allow support for sending a single NAL unit for each picture, for example. According to the NAL unit types provided in Table 2, it is required to send at least two NAL units for each picture (i.e., one picture header NAL unit and at least one coded slice NAL unit). To more efficiently support the common case that each picture includes a single slice, in one example, a new NAL unit type for coded pictures can be defined according to the techniques herein, and a coded picture can consist of a picture header, a slice header, and slice data syntax structures plus a syntax element indicating the picture type (e.g., IDR, CRA, trailing picture). This means that a coded picture with only one slice can be signaled in a single NAL unit, which significantly reduces the overhead related to the start code (or NAL unit length field), NAL unit header bytes, and rbsp_trailing_bits(). Table 17 is an example of NAL unit types according to the techniques herein, where there is a NAL unit type for coded pictures.

[0815]

[0816]

[0817] Table 17

[0818] With respect to Table 17, Table 18 shows the corresponding picture layer rbsp() syntax structure, Table 19 shows the corresponding relevant portion of the picture header structure() syntax structure, and Table 20 shows the corresponding slice_header() syntax structure.

[0819]

[0820] Table 18

[0821]

[0822] Table 19

[0823]

[0824]

[0825]

[0826] Table 20

[0827] With respect to Tables 18-20, semantics can be based on the semantics provided above, where the semantics of the syntax element pic_nal_type are based on the following:

[0828] pic_nal_type indicates the corresponding Nal unit type of the picture.

[0829] The value of NalType is derived as follows:

[0830] NalType = (nal_unit_type == CODED_PIC)? pic_nal_type : nal_unit_type

[0831] As another example, Table 21 shows the corresponding relevant portions of the picture_header_structure() syntax structure.

[0832]

[0833] Table 21

[0834] With respect to Table 21, the variable NalType is also used to more efficiently signal the picture header. With respect to Table 21, semantics can be based on the semantics provided above, where the semantics of the syntax element gdr_pic_flag are based on the following:

[0835] 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 (NalType == GDR_NUT? 1 : 0).

[0836] It should be noted that in JVET-P2001, the ALF parameters and the SAO parameters can be signaled in the PH or in the slice header, but not both for the same picture. It is asserted that it is sufficient to use the signaling whether the PPS level indication is in the picture header or in the slice header. This provides bit savings since there would be no need to send information at each picture about where the information will be present. Table 22 shows the corresponding relevant parts of the pic_parameter_set_rbsp() syntax structure, Table 23 shows the corresponding relevant parts of the picture_header_rbsp() syntax structure, and Table 24 shows the corresponding relevant parts of the slice_header() syntax structure, where the PPS indication is signaled in the picture header or in the slice header for the ALF parameters and the SAO parameters.

[0837]

[0838] Table 22

[0839]

[0840] Table 23

[0841]

[0842] Table 24

[0843] With respect to Tables 22-24, the semantics of the syntax elements can be based on the semantics provided above, with the semantics of the syntax elements pps_sao_enabled_present_in_pic_header_flag and pps_alf_enabled_present_in_pic_header_flag based on the following:

[0844] pps_sao_enabled_present_in_pic_header_flag equal to 1 specifies that the SAO related syntax elements can be present in the picture header and not in the slice header. pps_sao_enabled_present_in_pic_header_flag equal to 0 specifies that the SAO related syntax elements can be present in the slice header and not in the picture header.

[0845] pps_alf_enabled_present_in_pic_header_flag equal to 1 specifies that ALF related syntax elements can be present in picture header and not in slice header. pps_alf_enabled_present_in_pic_header_flag equal to 0 specifies that ALF related syntax elements can be present in slice header and not in picture header.

[0846] In one example, according to the techniques herein, an SPS level flag can be used to indicate whether virtual boundaries are enabled (i.e., allowed) in the coded video sequence. When virtual boundaries are not enabled, there is no need to signal information related to virtual boundaries in the SPS or in the picture header. This provides bit savings when virtual boundaries are not used, and facilitates detection of whether virtual boundaries are used. Table 25 shows the corresponding relevant portion of the seq_parameter_set_rbsp() syntax structure, and Table 26 shows the corresponding relevant portion of the picture_header_rbsp() syntax structure, where an SPS level flag is used to indicate whether virtual boundaries are enabled in the coded video sequence.

[0847]

[0848] Table 25

[0849]

[0850] Table 26

[0851] With respect to Tables 25-26, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax element sps_virtual_boundaries_enabled_flag is based on the following:

[0852] sps_virtual_boundaries_enabled_flag equal to 1 specifies that virtual boundaries can be used, and syntax related to virtual boundaries is present in the SPS and can be present in the picture header referring to the SPS. sps_virtual_boundaries_enabled_flag equal to 0 specifies that virtual boundaries are not used, and syntax related to virtual boundaries is not present in the SPS and not present in the picture header referring to the SPS.

[0853] It should be noted that in JVET-P2001, the reference picture list (RPL) parameters can be signaled in the PH or in the slice header (but not both for the same picture). It is asserted that it is sufficient to use the signaling at the PPS level to indicate whether the RPL parameters are used in the picture header or in the slice header. This provides bit savings since there would be no need to send information at each picture about where the information will be present. Table 27 shows the corresponding relevant parts of the pic_parameter_set_rbsp() syntax structure, Table 28 shows the corresponding relevant parts of the picture_header_rbsp() syntax structure, and Table 29 shows the corresponding relevant parts of the slice_header() syntax structure, where the PPS level flag is used to indicate whether the signaling for the RPL parameters is used in the picture header or in the slice header.

[0854]

[0855] Table 27

[0856]

[0857] Table 28

[0858]

[0859] Table 29

[0860] With respect to Tables 27-29, the semantics of the syntax elements can be based on the semantics provided above, with the semantics of the syntax element pps_rpl_enabled_present_in_pic_header_flag being based on the following:

[0861] pps rpl enabled present in pic header flag equal to 1 specifies that reference picture list related syntax elements (pic rpl sps flag[ i ], pic rpl idx[ i ], pic poc lsb lt[ i ][ j ], pic delta poc msb present flag[ i ][ j ], pic delta poc msb cycle lt[ i ][ j ]) can be present in the picture header and the corresponding reference picture list related syntax elements (slice rpl sps flag[ i ], slice rpl idx[ i ], slice poc lsb lt[ i ][ j ], slice delta poc msb present flag[ i ][ j ], slice delta poc msb cycle lt[ i ][ j ]) are not present in the slice header, pps rpl enabled present in pic header flag equal to 0 specifies that reference picture list related syntax elements (slice rpl sps flag[ i ], slice rpl idx[ i ], slice poc lsb lt[ i ][ j ], slice delta poc msb present flag[ i ][ j ], slice delta poc msb cycle lt[ i ][ j ]) can be present in the slice header and the corresponding reference picture list related syntax elements (pic rpl sps flag[ i ], pic rpl idx[ i ], pic poc lsb lt[ i ][ j ], pic delta poc msb present flag[ i ][ j ], pic delta poc msb cycle lt[ i ][ j ]) are not present in the picture header.

[0862] As another example, Table 30 shows the corresponding relevant portion of the picture_header_rbsp( ) syntax structure, where PPS-level flag is used to signal RPL parameters in the picture header or in the slice header.

[0863]

[0864] Table 30

[0865] It should be noted that in JVET-P2001, an indication of whether TMVP is used is provided in the picture header, but the information related to the reference picture used for the prediction motion vector, i.e., the collocated picture, is provided in the slice header, i.e., the same collocated picture is required in all slice headers. In one example, according to the techniques herein, when RPL information is provided in the picture header, the collocated picture information is indicated in the picture header. Table 31 shows the corresponding relevant portion of the picture_header_rbsp() syntax structure, and Table 32 shows the corresponding relevant portion of the slice_header() syntax structure, where the RPL parameters are signaled in the picture header or in the slice header using PPS-level flag.

[0866]

[0867] Table 31

[0868]

[0869] Table 32

[0870] With respect to Table 31, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax elements pic_collocated_from_l0_flag and pic_collocated_ref_idx are based on the following:

[0871] pic_collocated_from_l0_flag equal to 1 specifies that the collocated picture for temporal motion vector prediction originates from reference picture list 0. pic_collocated_from_l0_flag equal to 0 specifies that the collocated picture for temporal motion vector prediction originates from reference picture list 1.

[0872] When pic_collocated_from_10_flag is not present, the following applies:

[0873] - If rpl1_idx_present flag is equal to 0, the value of pic_collocated_from_10_flag is inferred to be equal to 1.

[0874] - Otherwise (rpll idx present is equal to 1), the value of pic_collocated_from_10_flag is inferred to be equal to pps_collocated_from_10_idc - 1.

[0875] Pic_collocated_refidx specifies the reference index of the collocated picture for temporal motion vector prediction.

[0876] When pic_collocated_from_l0_flag is equal to 1, pic_collocated_ref_idx refers to a picture in list 0, and pic_collocated_ref_idx shall be in the range of 0 to num ref entries[0][PicRplsIdx[0]] - 1, inclusive.

[0877] When pic_collocated_from_l0_flag is equal to 0, collocated_ref_idx refers to a picture in list 1, and the value of pic_collocated_ref_idx shall be in the range of 0 to num_ref_entries[1][PicRplsIdx[1]] - 1, inclusive.

[0878] When pic_collocated_ref_idx is not present, the value of pic_collocated_ref_idx is inferred to be equal to 0.

[0879] With respect to Table 32, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax elements slice_collocated_from_l0_flag and slice_collocated_ref_idx are based on the following:

[0880] slice_collocated_from_l0_flag equal to 1 specifies that the collocated picture used for temporal motion vector prediction originates from reference picture list 0. slice_collocated_from_l0_flag equal to 0 specifies that the collocated picture used for temporal motion vector prediction originates from reference picture list 1.

[0881] When slice_collocated_from_l0_flag is not present, the following applies:

[0882] - If pic_rpl_present_flag is equal to 1, slice_collocated_from_l0_flag is inferred to be equal to pic_collocated_from_l0_flag.

[0883] - Otherwise, if slice_type is not equal to B, the value of slice_collocated_from_l0_flag is inferred to be equal to 1.

[0884] - Otherwise, the value of slice_collocated_from_l0_flag is inferred to be equal to pps_collocated_from_l0_idc - 1.

[0885] slice_collocated_ref_idx specifies the reference index of the collocated picture for temporal motion vector prediction.

[0886] When slice_type is equal to P or when slice_type is equal to B and slice_collocated_from_l0_flag is equal to 1, slice_collocated_ref_idx refers to a picture in list 0 and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[0] - 1, inclusive.

[0887] When slice_type is equal to B and slice_collocated_from_l0_flag is equal to 0, slice_collocated_ref_idx refers to a picture in list 1 and the value of slice_collocated_ref_idx shall be in the range of 0 to NumRefIdxActive[1] - 1, inclusive.

[0888] When slice_collocated_ref_idx is not present, the following applies:

[0889] - If pic_rpl_present_flag is equal to 1, slice_collocated_ref_idx is inferred to be equal to pic_collocated_ref_idx.

[0890] - Otherwise, the value of slice_collocated_ref_idx is inferred to be equal to 0.

[0891] Bitstream conformance requirement, the picture referred to by slice_collocated_ref_idx shall be the same for all slices of a coded picture.

[0892] Bitstream conformance requirement, the resolution of the reference picture referred to by slice_collocated_ref_idx and the current picture shall be the same and RefPicIsScaled[ slice_collocated_from_l0_flag? 0 : 1 ][ slice_collocated_ref_idx ] shall be equal to 0.

[0893] It should be noted that in JVET-P2001, the partitioning constraint override signaling in picture header includes different parameters for intra slices and inter slices, and when partition_constraints_override_flag is equal to 1, there are parameters for both intra slices and inter slices. It is very common to encode a picture using only intra slices or only inter slices. One example is when a picture is coded with a single slice. Another example is an IRAP picture that is required to consist of only intra slices. In one example, according to the techniques herein, two different flags can be used to indicate the partition override: partition_constraints_override_intra_slice_flag, which applies to intra slices, and partition_constraints_override_inter_slice_flag, which applies to inter slices. Table 33 shows the corresponding relevant portion of the picture_header_rbsp() syntax structure, where two different flags are used to indicate the partition override.

[0894]

[0895] Table 33

[0896] With respect to Table 33, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax elements partition_constraints_override_intra_slice_flag and partition_constraints_override_inter_slice_flag are based on the following:

[0897] partition_constraints_override_intra_slice_flag equal to 1 specifies that there are partitioning constraint parameters for intra slices in the PH. partition_constraints_override_intra_slice_flag equal to 0 specifies that there are no partitioning constraint parameters for intra slices in the PH. When not present, the value of partition_constraints_override_intra_slice_flag is inferred to be equal to 0.

[0898] partition_constraints_override_inter_slice_flag equal to 1 specifies that partitioning constraint parameters for inter slices are present in the PH. partition_constraints_override_inter_slice_flag equal to 0 specifies that partitioning constraint parameters for inter slices are not present in the PH. When not present, the value of partition_constraints_override_inter_slice_flag is inferred to be equal to 0.

[0899] As another example, the syntax in Table 33 can be combined with the syntax in Tables 18-20, and the NalUnitType variable can be used to conditionally make partition_constraints_override_inter_slice_flag present so that the syntax element is not signaled in pictures that are not allowed to contain inter slices. Table 34 shows the corresponding relevant portion of the picture_header_rbsp() syntax structure.

[0900]

[0901] Table 34

[0902] With respect to Table 34, the semantics of the syntax elements can be based on the semantics provided above.

[0903] It should be noted that in JVET-P2001, the qp delta and chroma qp offset signaling in the picture header includes different parameters for intra slices and inter slices, and when cu qp delta enabled flag and pps cu chroma qp offset list enabled flag are each equal to 1, parameters for both intra slices and inter slices are present. It is very common to encode a picture using only intra slices or only inter slices. One example is when a picture is coded with a single slice. Another example is an IRAP picture that is required to consist only of intra slices. These two events, together with the partition constraint override flag, make three parts of the picture header where it would be beneficial to know whether the picture includes only intra slices, only intra slices, or both intra slices and inter slices. In one example, in accordance with the techniques herein, two flags are included in the picture header to indicate whether intra slices and inter slices can be present in the picture. Table 35 shows the corresponding relevant portion of the picture_header_rbsp() syntax structure, where two different flags are used to indicate whether intra slices and inter slices can be present in the picture.

[0904]

[0905]

[0906] Table 35

[0907] With respect to Table 35, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax elements no_intra_parameters_flag and no_inter_parameters_flag are based on the following:

[0908] no_intra_parameters_flag equal to 1 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for intra slices are not present in the PH. no_intra_parameters_flag equal to 0 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for intra slices are present in the PH.

[0909] no_inter_parameters_flag equal to 1 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for inter slices are not present in the PH. no_inter_parameters_flag equal to 0 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for inter slices are present in the PH. When not present, the value of no_inter_parameters_flag is inferred to be equal to 0.

[0910] Also, for example, no_intra_parameters_flag and no_inter_parameters_flag can be signaled unconditionally within the if condition provided below (i.e., not conditioned on the other).

[0911]

[0912] Also, for example, the order of no_intra_parameters_flag and no_inter_parameters_flag can be swapped as follows:

[0913]

[0914] When not present, the value of no_intra_parameters_flag is inferred to be equal to 0.

[0915] For another example, syntax elements can alternatively be represented with their inverses. Table 36 shows the corresponding relevant portion of the picture_header_rbsp() syntax structure.

[0916]

[0917]

[0918] Table 36

[0919] With respect to Table 36, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax elements intra_parameters_flag and inter_parameters_flag are based on the following:

[0920] intra_parameters_flag equal to 1 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for intra slices are present in the PH. intra_parameters_flag equal to 0 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for intra slices are not present in the PH.

[0921] inter_parameters_flag equal to 1 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for inter slices are not present in the PH. inter_parameters_flag equal to 0 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for inter slices are not present in the PH. When not present, the value of inter_parameters_flag is inferred to be equal to 1.

[0922] For another example, intra_parameters_flag and inter_parameters_flag can be exchanged as provided below. When not present, the value of intra_parameters_flag is inferred to be equal to 1.

[0923]

[0924] For another example, intra_parameters_flag and inter_parameters_flag can be signaled unconditionally within the if condition as provided below (i.e., not conditioned on the other).

[0925]

[0926] For example, the syntax in Table 36 can be combined with the syntax in Tables 18-20, and inter_parameters_flag can only be present in pictures that can contain inter slices. Table 37 shows the corresponding relevant portion of the picture_header_rbsp() syntax structure.

[0927]

[0928]

[0929] Table 37

[0930] With respect to Table 37, the semantics of the syntax elements can be based on the semantics provided above, where the semantics of the syntax elements intra_parameters_flag and inter_parameters_flag are based on the following:

[0931] inter_parameters_flag equal to 1 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for inter slices are not present in the PH. inter_parameters_flag equal to 0 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for inter slices are not present in the PH. When not present, the value of inter_parameters_flag is inferred to be equal to 0.

[0932] intra_parameters_flag equal to 1 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for intra slices are present in the PH. intra_parameters_flag equal to 0 specifies that the parameters cu qp delta and chroma qp offset for partitioning constraint override for intra slices are not present in the PH. When not present, the value of intra_parameters_flag is inferred to be equal to 1.

[0933] In this way, source device 102 represents an example of a device configured to signal an indication of whether a coded picture includes exactly one slice, and to signal one or more syntax elements in a slice header when the indication indicates that the coded picture includes exactly one slice, and not to signal a presence indicator for redundant syntax elements in a picture header corresponding to the one or more syntax elements in the slice header.

[0934] Referring again to Figure 1The interface 108 can include any device configured to receive data generated by the data encapsulator 107 and transmit and / or store the data to a communication medium. The interface 108 can include a network interface card, such as an Ethernet card, and can include an optical transceiver, a radio frequency transceiver, or any other type of device that can send and / or receive information. In addition, the interface 108 can include a computer system interface that can enable a file to be stored on a storage device. For example, the interface 108 can include a peripheral component interconnect (PCI) and peripheral component interconnect express (PCIe) bus protocols, proprietary bus protocols, universal serial bus (USB) protocols, I 2 The interface 108 can include any logic and physical structure that can be used to interconnect peer devices, such as a chipset of the Intel® Core® or any other logic and physical structure.

[0935] Referring again to Figure 1 The destination device 120 includes an interface 122, a data decapsulator 123, a video decoder 124, and a display 126. The interface 122 can include any device configured to receive data from a communication medium. The interface 122 can include a network interface card, such as an Ethernet card, and can include an optical transceiver, a radio frequency transceiver, or any other type of device that can receive and / or send information. In addition, the interface 122 can include a computer system interface that allows a compatible video bitstream to be retrieved from a storage device. For example, the interface 122 can include support for PCI and PCIe bus protocols, proprietary bus protocols, USB protocols, I 2 The interface 122 can include any logic and physical structure that can be used to interconnect peer devices, such as a chipset of the Intel® Core® or any other logic and physical structure. The data decapsulator 123 can be configured to receive and parse any of the example syntax structures described herein.

[0936] The video decoder 124 can include any device configured to receive a bitstream (e.g., sub-bitstream extraction) and / or acceptable variations thereof and reproduce video data therefrom. The display 126 can include any device configured to display video data. The display 126 can include one of various display devices such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display. The display 126 can include a high definition display or an ultra-high definition display. It should be noted that while the video decoder 124 is described as outputting data to the display 126 in the example shown, the video decoder 124 can be configured to output video data to various types of devices and / or subcomponents thereof. For example, the video decoder 124 can be configured to output video data to any communication medium, as described herein. Figure 1

[0937] Figure 6 ​is a block diagram illustrating an example of a video decoder that can be configured to decode video data according to one or more techniques of this disclosure (e.g., for the decoding process of the reference picture list construction described above). In one example, video decoder 600 can be configured to decode transform data and reconstruct residual data from transform coefficients based on the decoded transform data. Video decoder 600 can be configured to perform intra prediction decoding and inter prediction decoding, and thus can be referred to as a hybrid decoder. Video decoder 600 can be configured to parse any combination of the syntax elements described above in Tables 1-37. Video decoder 600 can decode pictures based on or according to the processes described above and also based on the parsed values in Tables 1-37.

[0938] In Figure 6 In the example shown, video decoder 600 includes an entropy decoding unit 602, an inverse quantization unit 604, an inverse transform processing unit 606, an intra prediction processing unit 608, an inter prediction processing unit 610, a summer 612, a post filter unit 614, and a reference buffer 616. Video decoder 600 can be configured to decode video data in a manner consistent with a video encoding system. It should be noted that while the example video decoder 600 is shown with distinct functional blocks, such an illustration is for descriptive purposes only and does not limit video decoder 600 and / or its sub-components to a particular hardware or software architecture. The functionality of video decoder 600 can be implemented using any combination of hardware, firmware, and / or software implementations.

[0939] As Figure 6 shown, entropy decoding unit 602 receives an entropy encoded bitstream. Entropy decoding unit 602 can be configured to decode syntax elements and quantized coefficients from the bitstream according to a process reciprocal to the entropy encoding process. Entropy decoding unit 602 can be configured to perform entropy decoding according to any of the entropy encoding techniques described above. Entropy decoding unit 602 can determine values for the syntax elements in the encoded bitstream in a manner consistent with a video coding standard. As Figure 6 shown, entropy decoding unit 602 can determine quantization parameters, quantized coefficient values, transform data, and prediction data from the bitstream. In this example, as Figure 6 shown, inverse quantization unit 604 and transform processing unit 606 receive quantization parameters, quantized coefficient values, transform data, and prediction data from entropy decoding unit 602 and output reconstructed residual data.

[0940] Referring again to Figure 6The reconstructed residual data can be provided to a summer 612. Summer 612 can add the reconstructed residual data to a predicted video block and generate reconstructed video data. The predicted video block can be determined according to a prediction video technique, i.e., intra prediction and inter prediction. Intra prediction processing unit 608 can be configured to receive intra prediction syntax elements and retrieve the predicted video block from reference buffer 616. Reference buffer 616 can include a memory device configured to store one or more frames of video data. The intra prediction syntax elements can identify an intra prediction mode, such as the intra prediction modes described above. Inter prediction processing unit 610 can receive inter prediction syntax elements and generate motion vectors to identify a predicted block in one or more reference frames stored in reference buffer 616. Inter prediction processing unit 610 can generate a motion compensated block, possibly performing interpolation based on an interpolation filter. An identifier for the interpolation filter used for motion estimation with sub-pixel accuracy can be included in the syntax elements. Inter prediction processing unit 610 can use the interpolation filter to calculate interpolated values for sub-integer pixels of the reference block. Post filter unit 614 can be configured to perform filtering on the reconstructed video data. For example, post filter unit 614 can be configured to perform deblocking and / or sample adaptive offset (SAO) filtering, e.g., based on parameters specified in the bitstream. Further, it should be noted that, in some examples, post filter unit 614 can be configured to perform specialized arbitrary filtering (e.g., visual enhancements such as mosquito noise removal). As Figure 6 As shown, video decoder 600 can output the reconstructed video block. In this way, video decoder 600 represents an example of a device configured to parse an indication of whether an encoded picture includes exactly one slice and, when the indication indicates that the encoded picture includes exactly one slice, infer a value of a presence indicator in the picture header such that the inferred value indicates that one or more redundant syntax elements in the picture header are included in the slice header.

[0941] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions can be stored on or transmitted over as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media can include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer- readable media generally can correspond to (1) tangible computer-readable storage media which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product can include a computer-readable medium.

[0942] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any

[0943] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term "processor," as used herein can refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules configured for encoding and decoding, or incorporated in a combined codec. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0944] The techniques of this disclosure can be implemented in various devices or apparatuses, including a wireless handset, an integrated circuit (IC) or IC package (e.g., a chip set). Various components, modules, or units described herein can be implemented as hardware, software, or a combination thereof. Various features and benefits can be employed independently or in various combinations.

[0945] Furthermore, each functional block or various features of the base station device and the terminal device used in each of the above embodiments can be implemented as an electronic circuit, which is typically an integrated circuit or a plurality of integrated circuits. The electronic circuit designed to perform the functions described in the present specification can comprise a general- purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other programmable logic devices, discrete gates or transistor logic, or a combination thereof. The general-purpose processor can be a microprocessor, or alternatively, a controller, a microcontroller, or a state machine. The general-purpose processor or each of the above can be configured by a digital circuit or can be configured by an analogue circuit. Further, when a technology of producing the integrated circuit by the conjunction of a programmable logic device and a microprocessor or a technology of producing a hybrid integrated circuit that comprises a programmable logic and a microprocessor occurs as a result of the advancement in semiconductor technology, the integrated circuit can be produced by either of the technologies. Also, the various features of the base station device and the terminal device described above can be implemented or executed using a circuit, rather than logic or hardware.

[0946] Various examples have been described. These and other examples are within the scope of the following claims.

[0947] <cross-reference>

[0948] This nonprovisional patent application claims priority under 35 U.S.C. § 119 to provisional application 62 / 926,299, filed October 25, 2019, provisional application 62 / 944,217, filed December 5, 2019, and provisional application 62 / 952,255, filed December 21, 2019, the entire contents of which are hereby incorporated by reference.

Claims

1. A method of decoding video data, the method comprising: receiving a picture header, wherein the picture header includes information common to all slices of one coded picture associated with the picture header included in a picture unit; and the picture header is included in one of a picture header network abstraction layer (NAL) unit or repeated in each slice header of all slices of one coded picture; parsing a first syntax element from the picture header, the first syntax element specifying a value of an identifier of a picture parameter set in use; only if both (a) a first flag indicating whether temporal motion vector predictor is enabled is included in the picture header and (b) a second flag indicating whether information associated with reference picture lists is present in the picture header are equal to 1, parsing a second syntax element from the picture header, the second syntax element specifying an index of a collocated picture for temporal motion vector prediction; receiving a slice header, wherein the slice header includes a flag controlling whether the picture header is included in one of the picture header NAL unit or repeated in each slice header of all slices of one coded picture; and in a case where a third syntax element is not present in the slice header, inferring the third syntax element, the third syntax element specifying an index of a collocated picture for temporal motion vector prediction is equal to the index specified by the second syntax element.

2. The method of claim 1, the method further comprising: in a case where the first flag and the second flag are equal to 1, parsing a fourth syntax element from the picture header, the fourth syntax element equal to 1 specifies that a collocated picture for temporal motion vector prediction is inferred from reference picture list 0; the fourth syntax element equal to 0 specifies that the collocated picture for temporal motion vector prediction is inferred from reference picture list 1; the second syntax element specifies a reference index of the collocated picture for temporal motion vector prediction.

3. An apparatus comprising one or more processors, the one or more processors configured to: receiving a picture header, wherein, the picture header includes information common to all slices of one coded picture associated with the picture header included in a picture unit; and the picture header is included in one of a picture header network abstraction layer (NAL) unit or repeated in each slice header of all slices of one coded picture; parse a first syntax element from the picture header, the first syntax element specifying a value of an identifier of a picture parameter set in use; only if both (a) a first flag indicating whether temporal motion vector predictor is enabled is included in the picture header and (b) a second flag indicating whether information associated with reference picture lists is present in the picture header are equal to 1, parse a second syntax element from the picture header, the second syntax element specifying an index of a collocated picture for temporal motion vector prediction; receiving a slice header, wherein the slice header includes a flag that controls whether the picture header is included in one of the picture header NAL units or repeated in each slice header of all slices of an encoded picture; and in the case that a third syntax element is not present in the slice header, inferring the third syntax element that specifies an index of a collocated picture for temporal motion vector prediction is equal to the index specified by the second syntax element.

4. The device of claim 3, wherein the one or more processors are further configured to, in the case that the first flag and the second flag are equal to one, parse a fourth syntax element from the picture header, the fourth syntax element equal to one specifies that a collocated picture for temporal motion vector prediction is inferred from reference picture list 0; the fourth syntax element equal to zero specifies that the collocated picture for temporal motion vector prediction is inferred from reference picture list 1 ; the second syntax element specifies a reference index of the collocated picture for temporal motion vector prediction.

5. The device of claim 3, wherein the device is a video decoder.

Citation Information

Patent Citations

  • Signaling of temporal motion vector predictor (MVP) flag for temporal prediction

    US20130272406A1