System and method for signaling picture timing and decoding unit information in video encoding

By receiving and parsing the flag syntax elements in the picture timing message, the problem of insufficient output delay management of the decoding unit level buffer in the existing technology is solved, the efficiency of video encoding and decoding is improved, and the timeliness and accuracy of picture display are ensured.

CN114788290BActive Publication Date: 2025-09-16SHARP KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202080083809.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-04-10
Filing Date
2020-11-30
Publication Date
2025-09-16
Estimated Expiration
2040-11-30

AI Technical Summary

Technical Problem

Existing video coding standards lack an effective mechanism to manage buffer output delay at the decoding unit level when sending and decoding picture timing information, resulting in inefficiency and resource waste.

Method used

By receiving and parsing the flag syntax element in the picture timing message, determining whether there is a decoding unit-level decoding picture buffer output delay parameter, and parsing the first syntax element used to calculate the buffer output time when necessary, precise control of the picture timing information is achieved.

Benefits of technology

It improves the efficiency of video encoding and decoding processes, reduces resource waste, and ensures the timeliness and accuracy of picture display.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114788290B_ABST
    Figure CN114788290B_ABST
Patent Text Reader

Abstract

The present disclosure relates to video coding, and more particularly to techniques for signaling picture timing and decoding unit information for encoded video. According to one aspect of the present disclosure, when a flag syntax element is equal to one, a buffering period message is parsed for a flag syntax element that specifies whether a decoding unit-level decoded picture buffer output delay parameter is present in a picture timing message, and a first syntax element for calculating a decoded picture buffer output time is parsed in the picture timing message.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to video coding, and more particularly to techniques for signaling picture timing and decoding unit information for encoded video. Background Art

[0002] Digital video capabilities can be incorporated into a variety of devices, including digital televisions, laptop or desktop computers, tablets, digital recording devices, digital media players, video gaming devices, cellular phones (including so-called smartphones), medical imaging devices, and the like. Digital video can be encoded according to a video coding standard. A video coding standard defines the format of a conforming bitstream that encapsulates coded video data. A conforming bitstream is a data structure that can be received and decoded by a video decoding device to generate reconstructed video data. A video coding standard can incorporate video compression techniques. Examples of video coding standards include ISO / IEC MPEG-4 Visual and ITU-T H.264 (also known as ISO / IEC MPEG-4 AVC) and High Efficiency Video Coding (HEVC). HEVC is described in Recommendation ITU-T H.265, High Efficiency Video Coding (HEVC), dated December 2016, which is incorporated herein by reference and referred to herein as ITU-T H.265. Extensions and improvements to ITU-T H.265 are currently under consideration for developing the next generation of video coding standards. For example, the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG), collectively referred to as the Joint Video Study Group (JVET), are working to standardize video coding techniques with compression capabilities significantly exceeding the current HEVC standard. The Joint Exploration Model 7 (JEM 7), the algorithmic description of the Joint Exploration Test Model 7 (JEM 7), ISO / IEC JTC1 / SC29 / WG11 document: JVET-G1001 (July 2017, Torino, Italy), incorporated herein by reference, describes the coding features studied by JVET under the Joint Test Model, which is a potential enhanced video coding technology that exceeds the capabilities of ITU-T H.265. It should be noted that the coding features of JEM 7 are implemented in the JEM reference software. As used herein, the term JEM may collectively refer to the algorithms in JEM 7 as well as the specific implementations of the JEM reference software. In addition, in response to the "Joint Call for Proposals on Video Compression with Capabilities beyond HEVC" jointly issued by VCEG and MPEG, at the 10th meeting of ISO / IEC JTC1 / SC29 / WG11 held in San Diego, California (San Diego, CA) from April 16 to 20, 2018, various groups proposed multiple descriptions of video coding tools.Based on various descriptions of video coding tools, the final initial draft text of the video coding specification was described in "Versatile Video Coding (Draft 1)" (document JVET-J1001-v2), presented at the 10th meeting of ISO / IEC JTC1 / SC29 / WG11, held in San Diego, California, from April 16 to 20, 2018, which is incorporated herein by reference and referred to as JVET-J1001. The current development of the next-generation video coding standard by JVET and MPEG is known as the Versatile Video Coding (VVC) project. "Versatile Video Coding (Draft 7)" (document JVET-P2001-vE), presented at the 16th meeting of ISO / IEC JTC1 / SC29 / WG11, held in Geneva, Switzerland, from October 1 to 11, 2019, which is incorporated herein by reference and referred to as JVET-P2001, represents the current iteration of the draft text of the video coding specification corresponding to the VVC project.

[0003] Video compression technology can reduce the data requirements for storing and transmitting video data. Video compression technology can reduce data requirements by exploiting the redundancy inherent in video sequences. Video compression technology can subdivide a video sequence into successively smaller parts (i.e., a group of pictures within a video sequence, pictures within a group of pictures, regions within pictures, sub-regions within regions, etc.). Intra-frame prediction coding techniques (e.g., spatial prediction techniques within pictures) and inter-frame prediction techniques (i.e., techniques (time) between pictures) can be used to generate the difference between the unit video data to be encoded and the reference unit of the video data. This difference can be called residual data. The residual data can be encoded as quantized transform coefficients. Syntax elements can involve residual data and reference coding units (e.g., intra-frame prediction mode indexes and motion information). The residual data and syntax elements can be entropy encoded. The entropy-coded residual data and syntax elements can be included in the data structure that forms a compliant bitstream. Summary of the Invention

[0004] In one example, a method for receiving a picture timing message includes: receiving a buffer period message; parsing a flag syntax element in the buffer period message, the flag syntax element specifying whether a decoding unit level decoding picture buffer output delay parameter is present in the picture timing message; receiving the picture timing message; and, if the value of the flag syntax element is equal to one, parsing a first syntax element in the picture timing message for calculating a decoding picture buffer output time.

[0005] In one example, a device for receiving a picture timing message includes: a processor and a memory associated with the processor; wherein the processor is configured to perform the following steps: receive a buffer period message; parse a flag syntax element in the buffer period message, the flag syntax element specifying whether a decoding unit level decoding picture buffer output delay parameter is present in the picture timing message; receive the picture timing message; and, if the value of the flag syntax element is equal to one, parse a first syntax element in the picture timing message for calculating a decoding picture buffer output time.

[0006] In one example, a method for signaling a picture timing message includes signaling a buffer period message including a flag syntax element specifying whether a decoding unit level decoding picture buffer output delay parameter is present in the picture timing message; and signaling the picture timing message including a first syntax element for calculating a decoding picture buffer output time when the value of the flag syntax element is equal to one.

[0007] In one example, a device for signaling a picture timing message comprises: a processor and a memory associated with the processor; wherein the processor is configured to perform the following steps: signaling a buffer period message, the buffer period message comprising a flag syntax element specifying whether a decoding unit level decoding picture buffer output delay parameter is present in the picture timing message; and, when the value of the flag syntax element is equal to one, signaling the picture timing message comprising a first syntax element for calculating a decoding picture buffer output time. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] [ Figure 1 ] Figure 1 is a block diagram illustrating an example of a system that may 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 corresponding data structures 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 according to one or more techniques of this disclosure.

[0011] [ Figure 4 ] Figure 4 is a conceptual diagram illustrating an example of components that may be included in an implementation of a system that may 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 may 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 may be configured to decode video data in accordance with one or more techniques of this disclosure. DETAILED DESCRIPTION

[0014] In general, the present disclosure describes various techniques for encoding video data. Specifically, the present disclosure describes techniques for signaling picture timing and decoding unit (DU) information for encoded video data. It should be noted that although the techniques of the present disclosure are described with respect to ITU-T H.264, ITU-T H.265, JEM, and JVET-P2001, the techniques of the present disclosure are generally applicable to video coding. For example, in addition to those included in ITU-T H.265, JEM, and JVET-P2001, the encoding techniques described herein may be incorporated into video coding systems (including video coding systems based on future video coding standards), including video block structures, intra-frame prediction techniques, inter-frame prediction techniques, transform techniques, filtering techniques, and / or other entropy coding techniques. Therefore, references to ITU-T H.264, ITU-T H.265, JEM, and / or JVET-P2001 are for descriptive purposes and should not be construed as limiting the scope of the techniques described herein. In addition, it should be noted that the incorporation of references herein is for descriptive purposes and should not be construed as limiting or creating ambiguity regarding the terms used herein. For example, where an incorporated reference provides a definition of a term that differs from another incorporated reference and / or from that term as used herein, the term should be interpreted in a manner that includes both the broadest possible definition and / or the specific alternatives.

[0015] In one example, a method of signaling decoding unit parameters for video data includes signaling a syntax element indicating whether the decoding unit parameters are included in a picture timing message, and conditionally signaling the decoding unit parameters in a picture timing message based on a value of the syntax element.

[0016] In one example, a device includes one or more processors configured to signal a syntax element indicating whether decoding unit parameters are included in a picture timing message, and conditionally signal the decoding unit parameters in the picture timing message based on a value of the syntax element.

[0017] In one example, a non-transitory computer-readable storage medium includes instructions stored thereon that, when executed, cause one or more processors of a device to signal a syntax element indicating whether decoding unit parameters are included in a picture timing message, and conditionally signal the decoding unit parameters in a picture timing message based on a value of the syntax element.

[0018] In one example, an apparatus includes means for signaling a syntax element indicating whether decoding unit parameters are included in a picture timing message, and means for conditionally signaling the decoding unit parameters in a picture timing message based on a value of the syntax element.

[0019] In one example, a method of decoding video data includes parsing a syntax element indicating whether decoding unit parameters are included in a picture timing message, and conditionally parsing the decoding unit parameters in the picture timing message based on a value of the syntax element.

[0020] In one example, a device includes one or more processors configured to parse a syntax element indicating whether decoding unit parameters are included in a picture timing message, and conditionally parse the decoding unit parameters in the picture timing message based on a value of the syntax element.

[0021] In one example, a non-transitory computer-readable storage medium includes instructions stored thereon that, when executed, cause one or more processors of a device to parse a syntax element indicating whether decoding unit parameters are included in a picture timing message, and conditionally parse the decoding unit parameters in the picture timing message based on a value of the syntax element.

[0022] In one example, an apparatus includes means for parsing a syntax element indicating whether decoding unit parameters are included in a picture timing message, and means for conditionally parsing the decoding unit parameters in the picture timing message based on a value of the syntax element.

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

[0024] Video content includes a video sequence consisting of a series of frames (or pictures). A series of frames may also be referred to as a group of pictures (GOP). Each video frame or picture may be divided into one or more regions. Regions may be defined based on a basic unit (e.g., a video block) and a set of rules defining regions. For example, a rule defining a region may be that a region must be an integer number of video blocks arranged in a rectangular shape. Furthermore, video blocks within a region may be ordered according to a scanning pattern (e.g., raster scan). As used herein, the term "video block" may generally refer to a region of a picture, or more specifically, to a maximum array of sample values ​​that can be predictively encoded, its sub-partitions, and / or corresponding structures. Furthermore, the term "current video block" may refer to a region of a picture being encoded or decoded. A video block may be defined as an array of sample values. It should be noted that in some cases, pixel values ​​may be described as comprising sample values ​​of corresponding components of video data, which may also be referred to as color components (e.g., luminance (Y) and chrominance (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" may be used interchangeably. Additionally, in some cases, a pixel or sample may be referred to as a pel. A video sampling format (also referred to as a chroma format) may define the number of chroma samples included in a video block relative to the 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 the sampling rate of the chroma components in both the horizontal and vertical directions.

[0025] A video encoder may perform predictive coding on a video block and its subpartitions. A video block and its subpartitions may be referred to as nodes. ITU-T H.264 specifies macroblocks comprising 16×16 luma samples. That is, in ITU-T H.264, a picture is segmented into macroblocks. ITU-T H.265 specifies a similar coding tree unit (CTU) structure (which may be referred to as a largest coding unit (LCU)). In ITU-T H.265, a picture is segmented into CTUs. In ITU-T H.265, for a picture, the CTU size may be set to include 16×16, 32×32, or 64×64 luma samples. In ITU-T H.265, a CTU consists of a corresponding coding tree block (CTB) for each component of the video data, e.g., luma (Y) and chroma (Cb and Cr). It should be noted that a video having one luma component and two corresponding chroma components may be described as having two channels, i.e., a luma channel and a chroma channel. In addition, in ITU-T H.265, the CTU can be divided according to a quadtree (QT) partitioning structure, which allows the CTB of the CTU to be divided into coding blocks (CBs). That is, in ITU-T H.265, the CTU can be divided into quadtree leaf nodes. According to ITU-T H.265, a luma CB together with two corresponding chroma CBs and associated syntax elements is called a coding unit (CU). In ITU-TH.265, the minimum allowed size of the CB can be signaled. In ITU-T H.265, the minimum allowed minimum size of the luma CB is 8×8 luma samples. In ITU-T H.265, the decision to encode a picture area using intra prediction or inter prediction is made at the CU level.

[0026] 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 the luma CB and chroma CB to be split to generate corresponding reference samples. That is, in ITU-T H.265, the luma CB and chroma CB can be split into corresponding luma prediction blocks and chroma prediction blocks (PBs), where the PBs include blocks 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 64×64 samples down to 4×4 samples. In ITU-T H.265, square PBs are supported for intra prediction, where the CB can form a PB or the CB can be split into four square PBs. In ITU-T H.265, in addition to square PBs, rectangular PBs are also supported for inter prediction, where the CB can be halved vertically or horizontally to form a PB. In addition, it should be noted that in ITU-T H.265, for inter prediction, four asymmetric PB partitions are supported, where the CB is divided into two PBs at one-quarter of the height (top or bottom) or width (left or right) of the CB. Intra-frame prediction data (e.g., intra-frame prediction mode syntax element) or inter-frame prediction data (e.g., motion data syntax element) corresponding to the PB is used to generate reference and / or prediction sample values ​​for the PB.

[0027] JEM specifies a CTU with a maximum size of 256×256 luma samples. JEM specifies a quadtree plus binary tree (QTBT) block structure. In JEM, the QTBT structure allows quadtree leaf nodes to be further divided by a binary tree (BT) structure. That is, in JEM, the binary tree structure allows quadtree leaf nodes to be recursively divided vertically or horizontally. In JVET-P2001, CTUs are divided 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 partitioning, the multi-type tree can also indicate a so-called ternary (or ternary tree (TT)) partitioning. Ternary partitioning divides a block into three blocks vertically or horizontally. In case of vertical TT splitting, 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 case of horizontal TT splitting, 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.

[0028] As described 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 divided into one or more slices, and further divided into one or more tiles, wherein each slice includes a CTU sequence (e.g., arranged in raster scan order), and wherein a tile is a CTU sequence corresponding to a rectangular area of ​​the picture. It should be noted that in ITU-T H.265, a slice is a sequence of one or more slice segments that starts with an independent slice segment and contains all subsequent dependent slice segments (if any) before the next independent slice segment (if any). A slice segment (such as a slice) is a CTU sequence. Therefore, in some cases, the terms "slice" and "slice segment" can be used interchangeably to indicate a sequence of CTUs arranged in raster scan order. In addition, 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 specifies 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.

[0029] Regarding JVET-P2001, a slice needs to consist of an integer number of complete tiles or an integer number of continuous complete CTU rows within a tile, rather than just an integer number of complete CTUs. It should be noted that in JVET-P2001, the slice design does not include slice segments (i.e., there are no independent / dependent slice segments). Therefore, in JVET-P2001, a picture may include a single tile, wherein a single tile is contained within a single slice, or a picture may include multiple tiles, wherein the multiple tiles (or their CTU rows) may be contained within one or more slices. In JVET-P2001, how the picture is divided into tiles is specified by specifying the corresponding height of the tile row and the corresponding width of the tile column. Therefore, in JVET-P2001, a tile is a rectangular CTU area within a specific tile row and a specific tile column position. In addition, it should be noted that JVET-P2001 stipulates that a picture can be divided into sub-pictures, wherein a sub-picture is a rectangular CTU area within the picture. The upper left CTU of a sub-picture may be located at any CTU position within a picture, where a sub-picture is constrained to include one or more slices. Thus, unlike tiles, sub-pictures do not have to be restricted to specific row and column positions. It should be noted that sub-pictures can be used to encapsulate regions of interest within a picture, and the sub-bitstream extraction process can be used to decode and display only specific regions of interest. That is, as described in further detail below, the bitstream of encoded video data includes a sequence of network abstraction layer (NAL) units, where the NAL units encapsulate encoded video data (i.e., video data corresponding to a picture slice), or the NAL units encapsulate metadata (e.g., parameter sets) 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.

[0030] Figure 2 is a conceptual diagram showing examples of pictures within a picture group divided according to tiles, slices, and sub-pictures. It should be noted that the techniques described herein may be applicable to tiles, slices, sub-pictures, sub-partitions thereof, and / or their equivalent structures. That is, no matter how the pictures are divided into regions, the techniques described herein may be generally applicable. For example, in some cases, the techniques described herein may be applicable to cases where tiles may 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 may be applicable to cases where one or more tiles may be included in a so-called tile group, where a tile group includes an integer number of adjacent tiles. In Figure 2 In the example shown, Pic3 is shown to include 16 tiles (ie, Tile0 to Tile 15 ) and three slices (ie, Slice0 to Slice2). Figure 2In the example shown, Slice 0 includes four tiles (ie, Tile 0 to Tile 3), and Slice 1 includes eight tiles (ie, Tile 4 to Tile 5). 11 ), and Slice2 includes four tiles (ie, Tile 12 To Tile 15 ). In addition, if Figure 2 As shown in the example of , Pic3 is shown to include two sub-pictures (i.e., Subpicture0 and Subpicture1), where Subpicture0 includes Slice0 and Slice1 and where Subpicture1 includes Slice2. As described above, sub-pictures can be used to encapsulate regions of interest within a picture, and a sub-bitstream extraction process can be used to selectively decode (and display) the region of interest. For example, referring to Figure 2 , Subpicture0 may correspond to the action portion of a sporting event presentation (e.g., a view of a field), and Subpicture1 may correspond to a scrolling banner displayed during the sporting event presentation. By organizing the picture into subpictures in this manner, a viewer may be able to disable the display of the scrolling banner. That is, through the sub-bitstream extraction process, the Slice2 NAL unit may be removed from the bitstream (and therefore not decoded and / or displayed), and the Slice0 NAL unit and the Slice1 NAL unit may be decoded and displayed. How slices of a picture are encapsulated into corresponding NAL unit data structures and sub-bitstream extraction is described in further detail below.

[0031] For intra-frame prediction coding, the intra-frame prediction mode specifies the position of the reference sample within the picture. In ITU-TH.265, the possible intra-frame prediction modes defined include a plane (i.e., surface fitting) prediction mode, a DC (i.e., flat overall average) prediction mode, and 33 angular prediction modes (predMode:2-34). In JEM, the possible intra-frame prediction modes defined include a plane prediction mode, a DC prediction mode, and 65 angular prediction modes. It should be noted that the plane prediction mode and the DC prediction mode can be referred to as non-directional prediction mode, and the angular prediction mode can be referred to as a directional prediction mode. It should be noted that regardless of the number of possible prediction modes defined, the technology described herein can be generally applicable.

[0032] For inter-frame prediction coding, a reference picture is determined, and a motion vector (MV) identifies samples in the reference picture that are used to generate a prediction for the current video block. For example, the current video block may be predicted using reference sample values ​​located in one or more previously coded pictures, and a motion vector is used to indicate the position of the reference block relative to the current video block. The motion vector may describe, for example, the horizontal displacement component of the motion vector (i.e., the MV x ), the vertical displacement component of the motion vector (ie 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 may 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. In addition, in inter-frame prediction coding, uni-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 uni-prediction, a single reference picture and the corresponding motion vector are used to generate a prediction for the current video block, while in bi-prediction, a first reference picture and the corresponding first motion vector and a second reference picture and the corresponding second motion vector are used to generate a prediction for the current video block. In bi-prediction, corresponding sample values ​​are combined (e.g., added, rounded and clipped, or averaged according to a weight) to generate a prediction. Pictures and their regions can be classified based on which types of prediction modes can be used to encode their video blocks. That is, for regions with B type (e.g., B slices), bi-prediction, uni-prediction, and intra-prediction modes are available, for regions with P type (e.g., P slices), uni-prediction and intra-prediction modes are available, and for regions with I type (e.g., I slices), only intra-prediction mode is available. As described above, reference pictures are identified by reference indexes. For example, for P slices, there may be a single reference picture list RefPicList0, and for B slices, there may be a second independent reference picture list RefPicList1 in addition to RefPicList0. It should be noted that for uni-prediction in B slices, either RefPicList0 or RefPicList1 may be used to generate predictions. Furthermore, it should be noted that during the decoding process, at the start of decoding a picture, a reference picture list is generated from previously decoded pictures stored in the decoded picture buffer (DPB).

[0033] In addition, the coding standard may support various motion vector prediction modes. Motion vector prediction enables the value of the motion vector for the current video block to be derived based on another motion vector. For example, a set of candidate blocks with associated motion information can be derived from the spatially neighboring blocks and the temporally neighboring blocks of the current video block. In addition, 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), the so-called "merge" mode, and "skip" and "direct" motion inference. In addition, 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. Therefore, for the current video block, the same set of candidates is generated during encoding and decoding.

[0034] As mentioned above, for inter-frame prediction coding, reference samples in a previously encoded picture are used to encode the video block in the current picture. A previously encoded picture that can be used as a reference when encoding the current picture is called a reference picture. It should be noted that the decoding order does not necessarily correspond to the picture output order, that is, 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 may be called a frame buffer, a reference buffer, a 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 encoding subsequent pictures. In ITU-T H.265, the determination of whether the picture should be removed from the DPB is called once for each picture after decoding the slice header, that is, at the beginning of decoding the picture. For example, the reference picture buffer is a frame buffer. Figure 2 , Pic2 is shown as reference to Pic1. Similarly, Pic3 is shown as reference to Pic0. Figure 2, assuming the number of pictures corresponds to the decoding order, the DPB will be filled as follows: after decoding Pic0, the DPB will include {Pic0}; at the start of decoding Pic1, the DPB will include {Pic0}; after decoding Pic1, the DPB will include {Pic0, Pic1}; at the start of decoding Pic2, the DPB will include {Pic0, Pic1}. Pic2 will then be decoded with reference to Pic1, and after decoding Pic2, the DPB will include {Pic0, Pic1, Pic2}. At the start of decoding Pic3, pictures Pic0 and Pic1 will be marked for removal from the DPB because they are not required for decoding Pic3 (or any subsequent pictures, not shown), and assuming Pic1 and Pic2 have been output, the DPB will be updated to include {Pic0}. Pic3 will then be decoded with reference to Pic0. The process of marking pictures to remove them from the DPB can be called reference picture set (RPS) management.

[0035] As described above, intra-frame prediction data or inter-frame prediction data is used to generate reference sample values ​​for a block of sample values. The differences between sample values ​​included in the 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. The residual data can include a respective array of difference values ​​corresponding to each component of the video data. The residual data may be in the pixel domain. A transform, such as a discrete cosine transform (DCT), discrete sine transform (DST), integer transform, wavelet transform, or a conceptually similar transform, can be applied to the difference array 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 rooted at the CU level. The transform tree is divided into one or more transform units (TUs). That is, to generate transform coefficients, the array of difference values ​​can be partitioned (e.g., four 8×8 transforms can be applied to a 16×16 array of residual values). For each component of the video data, this subdivision of the difference values ​​can be referred to as a transform block (TB). It should be noted that in some cases a core transform and a subsequent secondary transform may be applied (in a video encoder) to generate transform coefficients. For a video decoder, the order of transforms is reversed.

[0036] The quantization process can be performed directly on the transform coefficients or residual sample values ​​(e.g., in the case of palette-encoded quantization). Quantization approximates the transform coefficients by limiting their amplitudes to a set of specified values. Quantization essentially scales the transform coefficients to change the amount of data required to represent a set of transform coefficients. Quantization can include dividing the transform coefficients (or the values ​​resulting from adding an offset value to the transform coefficients) by a quantization scale factor and any associated rounding function (e.g., rounding to the nearest integer). The quantized transform coefficients can be referred to as coefficient level values. Inverse quantization (or "dequantization") can include multiplying the coefficient level values ​​by the quantization scale factor, as well as any reciprocal rounding or offset addition operations. It should be noted that, as used herein, the term quantization process may in some cases refer to division by a scale factor to generate a level value, and in some cases may refer to multiplication by a scale factor to recover the transform coefficients. That is, the quantization process may in some cases refer to quantization and in some cases to inverse quantization. Furthermore, it should be noted that although the quantization process is described in some of the following examples with respect to arithmetic operations associated with decimal notation, such description is for illustrative purposes and should not be construed 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.

[0037] Quantized transform coefficients and syntax elements (e.g., syntax elements indicating the coding structure of a video block) may be entropy encoded according to an entropy coding technique. The entropy coding process involves encoding the syntax element values ​​using a lossless data compression algorithm. Examples of entropy coding techniques include content-adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), and probability interval partitioning entropy coding (PIPE). The entropy-encoded quantized transform coefficients and the corresponding entropy-encoded syntax elements may form a conforming bitstream that can be used to reproduce the video data at a video decoder. Entropy coding processes, such as CABAC, may include binarizing 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 may be referred to as "bins." Binarization may include one or a combination of the following coding techniques: fixed-length coding, unary coding, truncated unary coding, truncated Rice coding, Golomb coding, k-order exponential Golomb coding, and Golomb-Rice coding. For example, binarization may include representing the integer value 5 of a syntax element as 00000101 using an 8-bit fixed-length binarization technique, or representing the integer value 5 as 11110 using a unary coding binarization technique. As used herein, each of the terms fixed-length coding, unary coding, truncated unary coding, truncated Rice coding, Golomb coding, k-order exponential Golomb coding, and Golomb-Rice coding may refer to general implementations of these techniques and / or more specific implementations of these coding techniques. For example, a Golomb-Rice coding implementation may be specifically defined according to a video coding standard. In the example of CABAC, for a particular bin, the context provides the maximum probability state (MPS) value of the bin (i.e., the MPS of the bin is one of 0 or 1), and the probability value of the bin being the MPS or the minimum probability state (LPS). For example, the context may indicate that the MPS of the bin is 0 and that the probability of the bin being 1 is 0.3. It should be noted that the context may be determined based on the values ​​of previously encoded bins, including bins in the current syntax element and previously encoded syntax elements. For example, the values ​​of syntax elements associated with neighboring video blocks may be used to determine the context of the current bin.

[0038] The following arithmetic operators can be used with the formulas used in this article:

[0039] +Addition

[0040] - Subtraction

[0041] * Multiplication, including matrix multiplication

[0042] x y Exponentiation. Raises x to the power of y. In other contexts, this notation is used for superscripts and is not intended to be interpreted as exponentiation.

[0043] Integer division truncates the result towards zero. For example, 7 / 4 and -7 / -4 truncate to 1, and -7 / 4 and 7 / -4 truncate to -1.

[0044] ÷ is used to represent division in mathematical formulas when truncation or rounding is not intended.

[0045] Used to express division in mathematical formulas without the intention of truncation or rounding.

[0046] Additionally, the following mathematical functions are defined:

[0047] Log2(x), the base-2 logarithm of x;

[0048]

[0049]

[0050] Ceil(x) is the smallest integer greater than or equal to x.

[0051] With respect to the exemplary syntax used herein, the following definitions of logical operators may apply:

[0052] x&&y Boolean logical "AND" of x and y

[0053] x||y Boolean logical OR of x and y

[0054] ! Boolean logic "NO"

[0055] x?y:z If x is TRUE or not equal to 0, then evaluate to y; otherwise, evaluate to z.

[0056] Additionally, the following relational operators can be applied:

[0057] > greater than

[0058] ≥ greater than or equal to

[0059] <

[0060] ≤ less than or equal to

[0061] ===Equal

[0062] ! = not equal to

[0063] Furthermore, it should be noted that among the syntax descriptors used herein, the following descriptors may be applied:

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

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

[0066] -se(v): signed integer order 0 Exp-Golomb coded syntax element, starting from the leftmost bit.

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

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

[0069] -u(n): Use an n-bit unsigned integer. When n is "v" in the syntax table, the number of bits varies depending on the values ​​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 the unsigned integer with the most significant bit written first.

[0070] -ue(v): unsigned integer order 0 Exp-Golomb coded syntax element, starting from the leftmost bit.

[0071] As mentioned above, video content includes a video sequence consisting 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 called 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 the picture. For example, referring again to Figure 2, the coded representation of Pic3 is encapsulated in three coded slice NAL units (i.e., Slice0 NAL unit, Slice1 NAL unit, and Slice2 NAL unit). It should be noted that the term video coding layer (VCL) NAL unit is used as a general term for coded slice NAL units, that is, VCL NAL is a general term 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 video sequences are generally referred to as non-VCL NAL units. Therefore, in JVET-P2001, NAL units can be VCL NAL units or non-VCL NAL units. It should be noted that VCL NAL units include slice header data, which provides information for decoding a specific slice. Therefore, in JVET-P2001, information used to decode video data (which may 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 that contains 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 specified classification rules, are continuous in decoding order, and each existing picture unit contains exactly one coded picture. A PU consists of a picture header NAL unit, a coded picture (which consists of one or more VCL NAL units), and zero or more non-VCL NAL units. Therefore, in JVET-P2001, an access unit includes one or more coded pictures. In some cases, an access unit may include pictures included in different video layers. The video layer is described in further detail below. In addition, in JVET-P2001, a coded video sequence (CVS) is an AU sequence consisting of a CVSS AU and zero or more subsequent non-CVSS AUs arranged in decoding order (including all subsequent AUs up to (excluding) any subsequent AU that is a CVSS AU), wherein a coded video sequence start (CVSS) AU is an AU in which a picture unit exists for each layer in the CVS, and the coded picture in each existing picture unit is a coded layer video sequence start (CLVSS) picture. In JVET-P2001, a coded layer video sequence (CLVS) is a PU sequence within the same layer, consisting of a CLVSS PU and zero or more subsequent non-CLVSS PUs arranged in decoding order (including all subsequent PUs up to (excluding) any subsequent PU that is a CLVSS PU).That is, in JVET-P2001, a bitstream may be described as including a sequence of NAL units forming a CVS, where the CVS includes AUs, and each AU may include a corresponding picture for each of a plurality of layers of coded video.

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

[0073] In JVET-P2001, each of a 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: decoding parameter set (DPS), video parameter set (VPS), sequence parameter set (SPS), picture parameter set (PPS), and adaptation parameter set (APS), where the SPS applies to zero or more integer CVSs, the PPS applies to zero or more integer coded pictures, the APS applies to zero or more slices, and the DPS and VPS can be optionally referenced by the SPS. The PPS applies to a single coded picture that references 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), which is encapsulated as a non-VCL NAL unit. In JVET-P2001, the picture header is applied to all slices of the coded picture. In addition, JVET-P2001 enables supplementary enhancement information (SEI) messages to be signaled. In JVET-P2001, SEI messages assist in processes related to decoding, display or other purposes, however, SEI messages may not be required to construct luma or chroma samples according to the decoding process. In JVET-P2001, non-VCL NAL units can be used to signal SEI messages in the bitstream. In addition, SEI messages can be transmitted through some mechanism rather than being present in the bitstream (i.e., signaled out-of-band).

[0074] Figure 3 An example of a bitstream including a plurality of CVSs is shown, wherein the CVSs include AUs, and the AUs include picture units. Figure 3 The example shown in corresponds to encapsulating Figure 2 An example of a slice NAL unit is shown in the example of . Figure 3 In the example shown, the corresponding picture unit of Pic3 includes three VCL NAL coded slice NAL units, namely Slice0 NAL unit, Slice1 NAL unit and Slice2 NAL unit, and two non-VCL NAL units, namely PPS NAL unit and PH NAL unit. It should be noted that in Figure 3 In , the header is the NAL unit header (i.e., not to be confused with the slice header). In addition, it should be noted that in Figure 3In the example, other non-VCL NAL units not shown may be included in the CVS, such as SPS NAL units, VPS NAL units, SEI message NAL units, etc. In addition, it should be noted that in other examples, the PPS NAL unit for decoding Pic3 may be included elsewhere in the bitstream, for example, in the picture unit corresponding to Pic0, or may be provided by an external mechanism. However, it should be noted that in JVET-P2001, the picture header of each picture is required to be in the picture unit corresponding to the picture.

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

[0076]

[0077] Table 1

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

[0079] forbidden_zero_bit should be equal to 0.

[0080] nuh_reserved_zero_bit shall be equal to '0'. The value 1 of nuh_reserved_zero_bit may be specified by ITU-T|ISO / IEC in the future. A decoder shall ignore (i.e., remove from the bitstream and discard) NAL units with nuh_reserved_zero_bit equal to '1'.

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

[0082] The value of nuh_layer_id of all VCL NAL units of a coded picture shall be the same. The value of nuh_layer_id of a coded picture or PU shall be the value of nuh_layer_id of the VCL NAL unit of the coded picture or PU.

[0083] The value of nuh_layer_id for non-VCL NAL units is constrained as follows:

[0084] - 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 that reference the NAL unit.

[0085] - 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 unit that references the SPS NAL unit.

[0086] - Otherwise, if nal_unit_type is equal to AUD_NUT, then nuh_layer_id shall be equal to vps_layer_id[0].

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

[0088] NOTE—The value of nuh_layer_id for DPS, VPS, and EOB NAL units is not restricted.

[0089] The value of nal_unit_type should be the same for all frames of a CVSS AU.

[0090] nuh_temporal_id_plus1 minus 1 specifies the temporal identifier of the NAL unit.

[0091] The value of nuh_temporal_id_plus1 shall not be equal to 0.

[0092] The variable TemporalId is derived as follows:

[0093] TemporalId=nuh_temporal_id_plus1-1

[0094] When nal_unit_type is in the range of IDR_W_RADL to RSV_IRAP_12 (inclusive), TemporalId shall be equal to 0.

[0095] When nal_unit_type is equal to STSA_NUT, TemporalId shall be equal to 0.

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

[0097] The value of TemporalId for non-VCL NAL units is constrained as follows:

[0098] - If nal_unit_type is equal to DPS_NUT, VPS_NUT, or SPS_NUT, TemporalId shall be equal to 0, and the TemporalId of the AU containing the NAL unit shall be equal to 0.

[0099] - Otherwise, if nal_unit_type is equal to PH_NUT, TemporalId shall be equal to the TemporalId of the PU containing the NAL unit.

[0100] - Otherwise, if nal_unit_type is equal to EOS_NUT or EOB_NUT, TemporalId shall be equal to 0.

[0101] - Otherwise, if nal_unit_type is equal to AUD_NUT, FD_NUT, PREFIX_SEI_NUT, or SUFFIX_SEI_NUT, TemporalId shall be equal to the TemporalId of the AU containing the NAL unit.

[0102] - Otherwise, when nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT, or SUFFIX_APS_NUT, TemporalId shall be greater than or equal to the TemporalId of the PU containing the NAL unit.

[0103] NOTE—When the NAL unit is a non-VCL NAL unit, the value of TemporalId is equal to the minimum of the TemporalId values ​​of all AUs to which the non-VCL NAL unit applies. When nal_unit_type is equal to PPS_NUT, PREFIX_APS_NUT, or SUFFIX_APS_NUT, TemporalId can be greater than or equal to the TemporalId of the containing AU, because all PPSs and APSs can be included in the beginning of the bitstream (for example, when they are delivered out-of-band and the receiver places them at the beginning of the bitstream), where the first coded picture has a TemporalId equal to 0.

[0104] nal_unit_type specifies the NAL unit type, ie, the type of RBSP data structure contained in the NAL unit as specified in Table 2.

[0105] NAL units with a nal_unit_type in the range of UNSPEC28...UNSPEC31 (inclusive), whose semantics are unspecified, shall not affect the decoding process specified in this specification.

[0106] NOTE—NAL unit types in the range of UNSPEC_28..UNSPEC_31 may be used as determined by the application. The decoding process for these values ​​of nal_unit_type is not specified in this specification. Because different applications may use these NAL unit types for different purposes, 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 ​​may only be used in contexts where "conflicts" of use (i.e., where the meaning of the content of NAL units with the same nal_unit_type value is defined differently) are unimportant, impossible, or managed, for example, as defined or managed in a controlling application or transport specification, or by the environment controlling the distribution of the bitstream.

[0107] For purposes other than determining the amount of data in a decoding unit of the bitstream, a decoder should ignore (remove from the bitstream and discard) the contents of all NAL units that use reserved values ​​of nal_unit_type.

[0108] NOTE—This requirement allows for the definition of compatible extensions to this specification in the future.

[0109]

[0110]

[0111] Table 2

[0112] NOTE—A Clean Random Access (CRA) picture may have an associated RASL or RADL picture present in the bitstream.

[0113] NOTE—An Instantaneous Decoding Refresh (EDR) picture with nal_unit_type equal to IDR_N_LP does not have an associated leading picture present in the bitstream.An IDR picture with nal_unit_type equal to IDR_W_RADL does not have an associated RASL picture present in the bitstream, but may have an associated RADL picture in the bitstream.

[0114] For any particular picture's VCL NAL unit, the following applies:

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

[0116] Otherwise (mixed_nalu_types_in_pic_flag is equal to 1), one or more of the VCL NAL units shall all have a specific 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 specific value of nal_unit_type in the range of TRAIL_NUT to RSV_VCL_6 (inclusive) or equal to GRA_NUT.

[0117] For single-layer bitstreams, the following constraints apply:

[0118] - Every picture except the first picture in decoding order in the bitstream is considered to be associated with the previous IRAP picture in decoding order.

[0119] - When the picture is the leading picture of an IRAP picture, the picture shall be a RADL or RASL picture.

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

[0121] - RASL pictures shall not be present in the bitstream, these RASL pictures are associated with IDR pictures.

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

[0123] 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 is available (in the bitstream or by external means not specified in this specification) when referenced.

[0124] - Any picture that precedes an IRAP picture in decoding order shall precede the IRAP picture in output order, and shall precede any RADL pictures associated with the IRAP picture in output order.

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

[0126] - Any RASL pictures associated with a CRA picture shall follow, in output order, any IRAP pictures that precede the CRA picture in decoding order.

[0127] - If field_seq_flag is equal to 0 and the current picture is a leading picture associated with an IRAP picture, then 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 leading picture and the last leading picture associated with the IRAP picture, respectively, in decoding order, there shall be at most one non-leading picture before picA in decoding order, and there shall be no non-leading pictures between picA and picB in decoding order.

[0128] 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 during 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 the bitstream arranged in decoding order must be an IRAP picture or a progressive decoding refresh (GDR) picture. JVET-P2001 describes the concept of a leading picture, which is a picture that precedes the associated IRAP picture in the output order. JVET-P2001 also describes the concept of a trailing picture, which is a non-IRAP picture that follows the associated IRAP picture in the output order. Trailing pictures associated with an IRAP picture also follow the IRAP picture in decoding order. For IDR pictures, there is no trailing picture that needs to reference a picture decoded before the IDR picture. JVET-P2001 specifies that a CRA picture may have leading pictures that follow the CRA picture in decoding order and contain inter-picture predictions that reference pictures decoded before the CRA picture. Therefore, when a CRA picture is used as a random access point, these leading pictures may not be decodable and are identified as random access skip leader (RASL) pictures. Another type of picture that may follow an IRAP picture in decoding order and precede the IRAP picture in output order is a random access decodable leader (RADL) picture, which may not contain references to any pictures that precede the IRAP picture in decoding order. A GDR picture is a picture in which every VCL NAL unit has nal_unit_type equal to GDR_NUT. If the current picture is a GDR picture associated with a picture header that signals the syntax element receovery_poc_cnt, and there is a picture picA that follows the current GDR picture in decoding order in the CLVS and has a PicOrderCntVal equal to the PicOrderCntVal of the current GDR picture plus the value of recovery_poc_cnt, then the picture picA is called a recovery point picture.

[0129] As provided in Table 2, a NAL unit may include a sequence parameter set syntax structure. Table 3 shows the syntax structure of an SPS provided in JVET-P2001.

[0130]

[0131]

[0132]

[0133]

[0134]

[0135]

[0136] Table 3

[0137] For Table 3, JVET-P2001 provides the following semantics:

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

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

[0140] When sps_decoding_parameter_set_id is greater than 0, it specifies the value of dps_decoding_parameter_set_id of the DPS referenced by the SPS. When sps_decoding_parameter_set_id is equal to 0, the SPS does not reference the DPS, and when decoding each CLVS that references the SPS, the DPS is not referenced. The value of sps_decoding_parameter_set_id should be the same in all SPSs referenced by a coded picture in the bitstream.

[0141] When sps_video_parameter_set_id is greater than 0, it specifies the value of vps_video_parameter_set_id of the VPS referenced by the SPS.

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

[0143] -SPS does not refer to VPS.

[0144] - When decoding each CLVS that references the SPS, the VPS is not referenced.

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

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

[0147] - The value of GeneralLayerIdx[nuh_layer_id] is inferred to be equal to 0.

[0148] - The value of vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is inferred to be equal to 1.

[0149] When vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the SPS with a specific nuh_layer_id value nuhLayerId referenced by the CLVS shall have nuh_layer_id equal to nuhLayerId.

[0150] sps_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers that may exist in each CLVS referencing the SPS. The value of sps_max_sublayers_minus1 shall be in the range of 0 to vps_max_sublayers_minus1, inclusive.

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

[0152] 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 that 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 neither of these syntax structures are present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to vps_independent_layer_flag[nuh_layer_id].

[0153] If vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, then the variable MaxDecPicBuffMinus1 is set equal to max_dec_pic_buffering_minus1[sps_max_sublayers_minus1] in the dpb_parameters() syntax structure of the SPS. Otherwise, MaxDecPicBuffMinus1 is set equal to max_dec_pic_buffering_minus1[sps_max_sublayers_minus1] in the layer_nonoutput_dpb_params_idx[GeneralLayerIdx[nuh_layer_id]]th dpb_parameters() syntax structure in the VPS.

[0154] gdr_enabled_flag equal to 1 specifies that GDR pictures may be present in the CLVS referencing the SPS. gdr_enabled_flag equal to 0 specifies that GDR pictures are not present in the CLVS referencing the SPS.

[0155] sps_seq_parameter_set_id provides the identifier of the SPS for reference by other syntax elements.

[0156] Regardless of the nuh_layer_id value, SPS NAL units share the same value space of sps_seq_parameter_set_id.

[0157] As specified, chroma_format_idc specifies the chroma samples relative to the luma samples.

[0158] separate_colour_plane_flag equal to 1 specifies that the three color components of the 4:4:4 chroma format are coded separately. separate_colour_plane_flag equal to 0 specifies that the color components are not coded separately. When separate_colour_plane_flag is not present, it is inferred to be equal to 0. When separate_colour_plane_flag is equal to 1, the coded picture consists of three separate components, each consisting of coded samples of one color plane (Y, Cb or Cr) and using monochrome coding syntax. In this case, each color plane is associated with a specific colour_plane_id value.

[0159] NOTE - There is no dependency in the decoding process between color planes with different values ​​of colour_plane_id. 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 value of colour_plane_id for inter prediction.

[0160] Depending on the value of separate_colour_plane_flag, the value of the variable ChromaArrayType is specified as follows:

[0161] - If separate_colour_plane_flag is equal to 0, ChromaArrayType is set equal to chroma_format_idc.

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

[0163] ref_pic_resampling_enabled_flag equal to 1 specifies that reference picture resampling may be applied when decoding a coded picture in a CLVS that references an SPS. ref_pic_resampling_enabled_flag equal to 0 specifies that reference picture resampling may not be applied when decoding a coded picture in a CLVS that references an SPS.

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

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

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

[0167] The variables CtbLog2SizeY and CtbSizeY are exported as follows:

[0168] CtbLog2SizeY=sps_log2_ctu_size_minus5+5

[0169] CtbSizeY=1< <CtbLog2SizeY

[0170] subpics_present_flag equal to 1 specifies that the sub-picture parameters are present in the SPS RBSP syntax. subpics_present_flag equal to 0 specifies that the sub-picture parameters are not present in the SPS RBSP syntax.

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

[0172] sps_num_subpics_minus1 plus 1 specifies the number of sub-pictures, and sps_num_subpics_minus1 should 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.

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

[0174] subpic_ctu_top_left_y[i] specifies the vertical position of the top left CTU of the i-th sub-picture 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_ctu_top_left_y[i] is inferred to be equal to 0.

[0175] subpic_width_minus1[i] plus 1 specifies the width of the i-th sub-picture in units of CtbSizeY. The length of this 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.

[0176] subpic_height_minus1[i] plus 1 specifies the height of the i-th sub-picture in units of CtbSizeY. The length of this syntax element is Ceil(Log2(pic_height_max_in_luma_samples / CtbSizeY)) 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.

[0177] subpic_treated_as_pic_flag[i] equal to 1 specifies that the i-th sub-picture 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 sub-picture 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.

[0178] When loop_filter_across_subpic_enabled_flag[i] is equal to 1, it specifies that the in-loop filtering operation may be performed across the boundaries of the i-th sub-picture of each coded picture in the CLVS. When loop_filter_across_subpic_enabled_flag[i] is equal to 0, it specifies that the in-loop filtering operation is not performed across the boundaries of the i-th sub-picture 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.

[0179] Bitstream conformance requires that the following constraints apply:

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

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

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

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

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

[0185] pps_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 0 to sps_num_subpics_minus1 (inclusive), the value of sps_subpic_id[i] is inferred to be equal to i.

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

[0187] BitDepth=8+bit_depth_minus8

[0188] QpBdOffset=6*bit_depth_minus8

[0189] bit_depth_minus8 should be in the range of 0 to 8 (inclusive).

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

[0191] QpPrimeTsMin=4+min_qp_prime_ts_minus4

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

[0193] sps_weighted_pred_flag equal to 1 specifies that weighted prediction may be applied to P slices referencing an SPS. sps_weighted_pred_flag equal to 0 specifies that weighted prediction is not applied to P slices referencing an SPS.

[0194] sps_weighted_bipred_flag equal to 1 specifies that explicit weighted prediction may be applied to B slices referencing the SPS. sps_weighted_bipred_flag equal to 0 specifies that explicit weighted prediction is not applied to B slices referencing the SPS.

[0195] log2_max_pic_order_cnt_lsb_minus4 specifies the value of the variable MaxPicOrderCntLsb used in the decoding process of the picture sequence number as follows:

[0196] MaxPicOrderCntLsb=2 (log2_max_pic_order_cnt_lsb_minnus4+4)

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

[0198] sps_poc_msb_flag equal to 1 specifies that the ph_poc_msb_cycle_present_flag syntax element is present in the PH referencing the SPS. sps_poc_msb_flag equal to 0 specifies that the ph_poc_msb_cycle_present_flag syntax element is not present in the PH referencing the SPS.

[0199] poc_msb_len_minus1 plus 1 specifies the length, in bits, of the poc_msb_val syntax element when it is present in the PH referencing the SPS. The value of poc_msb_len_minus1 shall be in the range of 0 to 32-log2_max_pic_order_cnt_lsb_minus4-5, inclusive.

[0200] sps_sublayer_dpb_params_flag is used to control the presence of the max_dec_pic_buffering_minus1[i], max_num_reorder_pics[i], and max_latency_increase_plus1[i] syntax elements in the dpb_parameters() syntax structure in the SPS. When not present, the value of sps_sub_dpb_params_info_present_flag is inferred to be equal to 0.

[0201] 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 indicates that LTRP may be used for inter prediction of one or more coded pictures in the CLVS.

[0202] 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 may 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[GeneralLayerIdx[nuh_layer_id]] is equal to 1, the value of inter_layer_ref_pics_present_flag shall be equal to 0.

[0203] sps_idr_rpl_present_flag equal to 1 specifies that the reference picture list syntax element is present in the slice header of the IDR picture. sps_idr_rpl_present_flag equal to 0 specifies that the reference picture list syntax element is not present in the slice header of the IDR picture.

[0204] rpl1_same_as_rpl0_flag equal to 1 indicates that the syntax element num_refjpic_lists_in_sps[1] and the syntax structure ref_pic_list_struct(1, rplsIdx) are not present, and the following applies:

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

[0206] - The value of each of the syntax elements in refjpic_list_struct(1, rplsIdx) is inferred to be equal to the value of the corresponding syntax element in ref_pic_list_struct(0, rplsIdx) for rplsIdx in the range 0 to num_ref_pic_lists_in_sps[0]-1.

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

[0208] NOTE—For each value of listIdx (equal to 0 or 1), the decoder should allocate memory for a total of num_ref_pic_lists_in_sps[i]+1 ref_pic_list_struct(listIdx,rplsIdx) syntax structures, because there may be one ref_pic_list_struct(listIdx,rplsIdx) syntax structure signaled directly in the slice header of the current picture.

[0209] 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 quadtree partitioning, and these coding units are the roots of two separate coding_tree syntax structures for luma and chroma. qtbtt_dual_tree_intra_flag equal to 0 specifies that separate coding_tree syntax structures are not used for I slices. When qtbtt_dual_tree_intra_flag is not present, it is inferred to be 0.

[0210] log2_nun_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.

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

[0212] MinCbLog2SizeY=log2_min_luma_coding_block_size_minus2+2

[0213] MinCbSizeY=1< <MinCbLog2SizeY

[0214] IbcBufWidthY=256*128 / CtbSizeY

[0215] IbcBufWidthC=IbcBufWidthY / SubWidthC

[0216] VSize=Min(64,CtbSizeY)

[0217] The value of MinCbSizeY should be less than or equal to VSize.

[0218] The variables CtbWidthC and CtbHeightC specify the width and height of the array of each chroma CTB respectively. These two variables are derived as follows:

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

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

[0221] CtbWidthC=CtbSizeY / SubWidthC

[0222] CtbHeightC=CtbSizeY / SubHeightC

[0223] For log2BlockWidth in the range from 0 to 4 and log2BlockHeight in the range from 0 to 4 (including the end values), call the specified upper-right diagonal and raster scan order array initialization process with 1 << log2BlockWidth and 1 << log2BlockHeight as inputs, and assign the output to DiagScanOrder[log2BlockWidth][log2BlockHeight].

[0224] For log2BlockWidth in the range from 0 to 6 and log2BlockHeight in the range from 0 to 6 (including the end values), call the specified horizontal and vertical traversal scan order array initialization process with 1 << log2BlockWidth and 1 << log2BlockHeight as inputs, and assign the output to HorTravScanOrderElog2BlockWidth][log2BlockHeight] and VerTravScanOrder[log2BlockWidth][log2BlockHeight].

[0225] A partition_constraints_override_enabled_flag equal to 1 specifies the presence of a partition_constraints_override_flag in the PH that references the SPS. A partition_constraints_override_enabled_flag equal to 0 specifies the absence of a partition_constraints_override_flag in the PH that references the SPS.

[0226] sps_log2_diff_min_qt_min_cb_intra_slice_luma specifies the default difference between the base 2 logarithm of the minimum size of luma samples in the luma leaf blocks resulting from quadtree partitioning of the CTU and the base 2 logarithm of the minimum coding block size in luma samples of the luma CU in the slice whose slice_type is equal to 2(I) of the referenced SPS. This default difference can be overwritten by pic_log2_diff_min_qt_min_cb_luma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_bt_min_qt_intra_slice_luma should be in the range of 0 to CtbLog2SizeY-MinCbLog2SizeY (inclusive). The base 2 logarithm of the minimum size of luma samples in the luma leaf blocks resulting from quadtree partitioning of the CTU is derived as follows:

[0227] MinQtLog2SizeIntraY=sps_log2_diff_min_qt_min_cb_intra_slice_luma+MinCbLog2SizeY

[0228] 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 leaf blocks resulting from quadtree partitioning of the CTU and the base 2 logarithm of the minimum luma coding block size in luma samples of the luma CU in the slice whose slice_type of the referenced SPS is equal to 0 (B) or 1 (P). This default difference can be overwritten by pic_log2_diff_min_qt_min_cb_luma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_min_qt_min_cb_inter_slice should be in the range of 0 to CtbLog2SizeY-MinCbLog2SizeY (inclusive). The base 2 logarithm of the minimum size in luma samples of the luma leaf blocks resulting from quadtree partitioning of the CTU is derived as follows:

[0229] MinQtLog2SizeInterY=sps_log2_diff_min_qt_min_cb_inter_slice+MinCbLog2SizeY

[0230] sps_max_mtt_hierarchy_depth_inter_slice specifies the default maximum hierarchy depth for coding units resulting from multi-type tree partitioning of quadtree leaves in slices with slice_type equal to 0 (B) or 1 (P) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth can be overridden by pic_max_mtt_hierarchy_depth_inter_slice present in the PH of the referenced SPS. The value of sps_max_mtt_hierarchy_depth_inter_slice should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive.

[0231] sps_max_mtt_hierarchy_depth_intra_slice_luma specifies the default maximum hierarchy depth for coding units resulting from multi-type tree partitioning of quadtree leaves in slices with slice_type equal to 2(I) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchy depth can be overridden by pic_max_mtt_hierarchy_depth_intra_slice_luma present in the PH of the referenced SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_luma should be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive.

[0232] 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) of luma samples in a luma coding block that can use binary partitioning and the base-2 logarithm of the minimum size (width or height) of luma samples in a luma leaf block resulting from quadtree partitioning of a CTU in a slice whose slice_type is equal to 2(I) of the referenced SPS. This default difference can be overridden by pic_log2_diff_max_bt_min_qt_luma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_bt_min_qt_intra_slice_luma should 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.

[0233] sps_log2_diff_max_tt_min_qt_intra_slice_luma specifies the default difference between the base-2 logarithm of the maximum size (width or height) of luma samples in a luma coding block that can use ternary partitioning and the base-2 logarithm of the minimum size (width or height) of luma samples in a luma leaf block resulting from quadtree partitioning of a CTU in a slice whose slice_type is equal to 2(I) of the referenced SPS. This default difference can be overridden by pic_log2_diff_max_tt_min_qt_luma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_tt_min_qt_intra_slice_luma should be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraY, inclusive. When sps_log2_diff_max_tt_min_qt_intra_slice_luma is not present, the value of sps_log2_diff_max_tt_min_qt_intra_slice_luma is inferred to be equal to 0.

[0234] 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) of luma samples of a luma coding block that can use binary partitioning and the base-2 logarithm of the minimum size (width or height) of luma samples of a luma leaf block resulting from quadtree partitioning of a CTU in a slice whose slice_type is equal to 0 (B) or 1 (P) of the referenced SPS. This default difference can be overridden by pic_log2_diff_max_bt_min_qt_luma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_bt_min_qt_inter_slice should be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When sps_log2_diff_max_bt_min_qt_inter_slice is not present, the value of sps_log2_diff_max_bt_min_qt_inter_slice is inferred to be equal to 0.

[0235] sps_log2_diff_max_tt_min_qt_inter_slice specifies the default difference between the base-2 logarithm of the maximum size (width or height) of the luma samples of a luma coding block that can use ternary partitioning and the base-2 logarithm of the minimum size (width or height) of the luma samples of a luma leaf block resulting from quadtree partitioning of a CTU in a slice whose slice_type is equal to 0 (B) or 1 (P) of the referenced SPS. This default difference can be overridden by pic_log2_diff_max_tt_min_qt_luma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_tt_min_qt_inter_slice should be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeInterY, inclusive. When sps_log2_diff_max_tt_min_qt_inter_slice is not present, the value of sps_log2_diff_max_tt_min_qt_inter_slice is inferred to be equal to 0.

[0236] sps_log2_diff_min_qt_min_cb_mtra_slice_chroma specifies the default difference between the base-2 logarithm of the minimum size of luma samples in chroma leaf blocks 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 in chroma CUs with treeType equal to DUAL_TREE_CHROMA in slices with slice_type equal to 2(I) of the referenced SPS. This default difference can be overridden by pic_log2_diff_min_qt_min_cb_chroma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_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 of luma samples of chroma leaf blocks resulting from quadtree partitioning of a CTU with treeType equal to DUAL_TREE_CHROMA is derived as follows:

[0237] MinQtLog2SizeIntraC=sps_log2_diffminqtmincbintrasliccchroma+MinCbLog2SizeY

[0238] sps_max_mtt_hierarchy_depth_intra_slice_chroma specifies the default maximum hierarchical depth for chroma coding units generated by multi-type tree partitioning of chroma quadtree leaves with treeType equal to DUAL_TREE_CHROMA in slices with slice_type equal to 2(1) of the referenced SPS. When partition_constraints_override_enabled_flag is equal to 1, the default maximum hierarchical depth may be overridden by pic_max_mtt_hierarchy_depth_chroma present in the PH of the referenced SPS. The value of sps_max_mtt_hierarchy_depth_intra_slice_chroma shall be in the range of 0 to 2*(CtbLog2SizeY - MinCbLog2SizeY), inclusive. When not present, the value of sps_max_mtt_hierarchy_depth_intra_slice_chroma is inferred to be equal to 0.

[0239] sps_log2_diff_max_bt_min_qt_intra_slice_chroma specifies the default difference between the base-2 logarithm of the maximum size (width or height) of luma samples in a chroma coded block that can be binary partitioned and the base-2 logarithm of the minimum size (width or height) of luma samples in chroma leaf blocks resulting from quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) of the referenced SPS. This default difference can be overridden by pic_log2_diff_max_bt_min_qt_chroma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_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.

[0240] sps_log2_diff_max_tt_min_qt_intra_slice_chroma specifies the default difference between the base-2 logarithm of the maximum size (width or height) of luma samples in a chroma coding block that can use ternary partitioning and the base-2 logarithm of the minimum size (width or height) of luma samples in chroma leaf blocks resulting from quadtree partitioning of a chroma CTU with treeType equal to DUAL_TREE_CHROMA in a slice with slice_type equal to 2(I) of the referenced SPS. This default difference can be overridden by pic_log2_diff_max_tt_min_qt_chroma present in the PH of the referenced SPS when partition_constraints_override_enabled_flag is equal to 1. The value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma shall be in the range of 0 to CtbLog2SizeY - MinQtLog2SizeIntraC, inclusive. When sps_log2_diff_max_tt_min_qt_intra_slice_chroma is not present, the value of sps_log2_diff_max_tt_min_qt_intra_slice_chroma is inferred to be equal to 0.

[0241] sps_max_luma_transform_size_64_flag equal to 1 specifies that the maximum transform size in luma samples is equal to 64. sps_max_luma_transform_size_64_flag equal to 0 specifies that the maximum transform size in luma samples is equal to 32.

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

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

[0244] MinTbLog2SizeY=2

[0245] MaxTbLog2SizeY=sps_max_luma_transform__size_64_flag? 6:5

[0246] MinTbSizeY=1< <MinTbLog2SizeY

[0247] MaxTbSizeY=1< <MaxTbLog2SizeY

[0248] sps_joint_cbcr_enabled_flag equal to 0 specifies that joint coding of chroma residual is disabled. sps_joint_cbcr_enabled_flag equal to 1 specifies that joint coding of chroma residual is enabled.

[0249] same_qp_table_for_chroma equal to 1 specifies that only one chroma QP mapping table is signaled, and that this table applies to both Cb and Cr residuals and additionally to the joint Cb-Cr residual when spsjoint_cbcr_enabled_flag is equal to 1. same_qp_table_for_chroma equal to 0 specifies that the chroma QP mapping table is signaled in the SPS, two for Cb and Cr, and one additional for the joint Cb-Cr when spsjoint_cbcr_enabled_flag is equal to 1. 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.

[0250] qp_table_jstart_minus26[i] plus 26 specifies the starting luma and chroma QPs used to describe the i-th chroma QP map. The value of qp_table_start_minus26[i] shall be in the range of -26 - QpBdOffset to 36, inclusive. When qp_table_start_minus26[i] is not present in the bitstream, the value of qp_table_start_minus26[i] is inferred to be equal to 0.

[0251] num_points_in_qp_table_minus1[i] plus 1 specifies the number of points used to describe the i-th chroma QP map table. The value of num_pointsjn_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.

[0252] delta_qp_in_val_minus1[i][j] specifies the delta value used to derive the input coordinates of the j-th pivot point of the i-th chroma QP map. When delta_qp_in_val_minus1[0][j] is not present in the bitstream, the value of delta_qp_in_val_minus1[0][j] is inferred to be equal to 0.

[0253] delta_qp_diff_val[i][j] specifies the delta value used to derive the output coordinates of the j-th pivot point of the i-th chroma QP map.

[0254] The i-th chroma QP mapping table ChromaQpTable[i] is derived as follows, where i=0..numQpTables-1:

[0255]

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

[0257] Bitstream conformance requires that the values ​​of qpInVal[i][j] and qpOutVal[i][j] shall be in the range -QpBdOffsetC to 63 (inclusive), where i = 0..numQpTables-1 and j = 0..num_points_in_qp_table_minus1[i]+1.

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

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

[0260] sps_transform_skip_enabled_flag equal to 1 specifies that transform_skip_flag may be present in the transform unit syntax. sps_transform_skip_enabled_flag equal to 0 specifies that transform_skip_flag is not present in the transform unit syntax.

[0261] sps_bdpcm_enabled_flag equal to 1 specifies that intra_bdpcm_luma_flag may be present in the coding unit syntax for intra coding units, and sps_bdpcm_enabled_flag equal to 0 specifies that intra_bdpcm_luma_flag is not present in the coding unit syntax for intra coding units. When not present, the value of sps_bdpcm_enabled_flag is inferred to be equal to 0.

[0262] sps_bdpcm_chroma_enabled_flag equal to 1 specifies that intra_bdpcm_chroma_flag may be present in the coding unit syntax for intra coding units, and sps_bdpcm_chroma_enabled_flag equal to 0 specifies that intra_bdpcm_chroma_flag is not present in the coding unit syntax for intra coding units. When not present, the value of sps_bdpcm_chroma_enabled_flag is inferred to be 0.

[0263] sps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction. sps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is not applied. The value of sps_ref_wraparound_enabled_flag shall be equal to 0 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 that references the SPS.

[0264] sps_ref_wraparound_offset_minus1 plus 1 specifies the offset used to calculate the horizontal wrap position, in units of MinCbSizeY luma samples. The value of ref_wraparound_offset_minus1 should 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 that references the SPS.

[0265] sps_temporal_mvp_enabled_flag equal to 1 specifies that the temporal motion vector predictor can be used in CLVS. sps_temporal_mvp_enabled_flag equal to 0 specifies that the temporal motion vector predictor is not used in CLVS.

[0266] sps_sbtmvp_enabled_flag equal to 1 specifies that the subblock based temporal motion vector predictor may be used in picture decoding in CLVS where all slices have slice_type not equal to 1. sps_sbtmvp_enabled_flag equal to 0 specifies that the subblock based temporal motion vector predictor is not used in CLVS. When sps_sbtmvp_enabled_flag is not present, it is inferred to be equal to 0.

[0267] sps_amvr_enabled_flag equal to 1 specifies that adaptive motion vector difference resolution is used in motion vector coding. amvr_enabled_flag equal to 0 specifies that adaptive motion vector difference resolution is not used in motion vector coding.

[0268] sps_bdof_enabled_flag equal to 0 specifies that bidirectional optical flow inter-frame prediction is disabled. sps_bdof_enabled_flag equal to 1 specifies that bidirectional optical flow inter-frame prediction is enabled.

[0269] sps_bdof_pic_present_flag equal to 1 specifies that pic_disable_bdof_flag is present in the PH referencing the SPS. sps_bdof_pic_present_flag equal to 0 specifies that pic_disable_bdof_flag is not present in the PH referencing the SPS. When sps_bdof_pic_present_flag is not present, the value of sps_bdof_pic_present_flag is inferred to be equal to 0.

[0270] sps_smvd_enabled_flag equal to 1 specifies that symmetric motion vector differences can be used in motion vector decoding. sps_smvd_enabled_flag equal to 0 specifies that symmetric motion vector differences are not used in motion vector encoding.

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

[0272] sps_dmvr_pic_present_flag equal to 1 specifies that pic_disable_dmvr_flag is present in the PH referencing the SPS. sps_dmvr_pic_present_flag equal to 0 specifies that pic_disable_dmvr_flag is not present in the PH referencing the SPS. When sps_dmvr_pic_present_flag is not present, the value of sps_dmvr_pic_present_flag is inferred to be equal to 0.

[0273] sps_mmvd_enabled_flag equal to 1 specifies that the merge mode with motion vector difference is enabled. sps_mmvd_enabled_flag equal to 0 specifies that the merge mode with motion vector difference is disabled.

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

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

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

[0277] sps_cclm_enabled_flag equal to 0 specifies that cross-component linear model intra prediction from luma components to chroma components is disabled. sps_cclm_enabled_flag equal to 1 specifies that cross-component linear model intra prediction from luma components to chroma components is enabled. When sps_cclm_enabled_flag is not present, it is inferred to be equal to 0.

[0278] sps_chroma_horizontal_collocated_flag equal to 1 specifies that the prediction process operates in a manner designed for chroma sample positions that are not horizontally shifted relative to the corresponding luma sample positions. sps_chroma_horizontal_collocated_flag equal to 0 specifies that the prediction process operates in a manner designed for chroma sample positions that are right-shifted by 0.5 luma samples relative to the corresponding luma sample positions. When sps_chroma_horizontal_collocated_flag is not present, it is inferred to be equal to 1.

[0279] sps_chroma_vertical_conocated_flag equal to 1 specifies that the prediction process operates in a manner designed for chroma sample positions that are not vertically shifted relative to the corresponding luma sample positions. sps_chroma_vertical_collocated_flag equal to 0 specifies that the prediction process operates in a manner designed for chroma sample positions that are shifted downward by 0.5 luma samples relative to the corresponding luma sample positions. When sps_chroma_vertical_collocated_flag is not present, it is inferred to be equal to 1.

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

[0281] sps_explicit_mts_intra_enabled_flag equal to 1 specifies that mtsidx may be present in the intra coding unit syntax. sps_explicit_mts_intra_enabled_flag equal to 0 specifies that mts_idx is not present in the intra coding unit syntax. When not present, the value of sps_explicit_mts_intra_enabled_flag is inferred to be 0.

[0282] sps_explicit_mts_inter_enabled_flag equal to 1 specifies that mts_idx may be present in the intra coding unit syntax. sps_explicit_mts_inter_enabled_flag equal to 0 specifies that mts_idx is not present in the intra coding unit syntax. When not present, the value of sps_explicit_mts_inter_enabled_flag is inferred to be 0.

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

[0284] sps_affine_enabled_flag specifies whether affine-based motion compensation can be used for inter prediction. If sps_affine_enabled_flag is equal to 0, the syntax should be constrained so that affine-based motion compensation is not used in CLVS, and inter_affine_flag and cu_affine_type_flag are not present in the coding unit syntax of CLVS. Otherwise (sps_affine_enabled_flag is equal to 1), affine-based motion compensation can be used in CLVS.

[0285] sps_affine_type_flag specifies whether motion compensation based on a 6-parameter affine model can be used for inter prediction. If sps_affine_type_flag is equal to 0, the syntax should be constrained so that motion compensation based on a 6-parameter affine model is not used in CLVS, and cu_affine_type_flag is not present in the coding unit syntax in CLVS. Otherwise (sps_affine_type_flag is equal to 1), motion compensation based on a 6-parameter affine model can be used in CLVS. When not present, the value of sps_affine_type_flag is inferred to be equal to 0.

[0286] sps_affine_amvr_enabled_flag equal to 1 specifies the use of adaptive motion vector difference resolution in motion vector coding in affine inter mode. sps_affine_amvr_enabled_flag equal to 0 specifies the use of adaptive motion vector difference resolution in motion vector coding in affine inter mode. When not present, the value of sps_affine_amvr_enabled_flag is inferred to be equal to 0.

[0287] sps_affine_prof_enabled_flag specifies whether prediction correction using 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 correct affine motion compensation. Otherwise (sps_affine_prof_enabled_flag is equal to 1), optical flow can be applied to correct affine motion compensation. When not present, the value of sps_affine_prof_enabled_flag is inferred to be equal to 0.

[0288] sps_prof_pic_present_flag equal to 1 specifies that pic_disable_prof_flag is present in the PH referencing the SPS. sps_prof_pic_present_flag equal to 0 specifies that pic_disable_prof_flag is not present in the PH referencing the SPS. When sps_prof_pic_present_flag is not present, the value of sps_prof_pic_present_flag is inferred to be equal to 0.

[0289] sps_palette_enabled_flag equal to 1 specifies that pred_mode_plt_flag may 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 0.

[0290] sps_act_enabled_flag equal to 1 specifies that adaptive color transform can be used, and cu_act_enabled_flag may be present in the coding unit syntax. sps_act_enabled_flag equal to 0 specifies that adaptive color transform is not used, and cu_act_enabled_flag is not present in the coding unit syntax. When sps_act_enabled_flag is not present, it is inferred to be equal to 0.

[0291] sps_bcw_enabled_flag specifies whether bi-prediction with CU weights can be used for inter prediction. If sps_bcw_enabled_flag is equal to 0, the syntax should be constrained so that bi-prediction with CU weights is not used in CLVS and bcw_idx is not present in the coding unit syntax of CLVS. Otherwise (sps_bcw_enabled_flag is equal to 1), bi-prediction with CU weights can be used in CLVS.

[0292] sps_ibc_enabled_flag equal to 1 specifies that IBC prediction mode can be used in decoding of pictures in CLVS. sps_ibc_enabled_flag equal to 0 specifies that IBC prediction mode is not used in CLVS. When sps_ibc_enabled_flag is not present, it is inferred to be equal to 0.

[0293] sps_ciip_enabled_flag specifies that ciip_flag may be present in the coding unit syntax for inter-frame coding units. sps_ciip_enabled_flag equal to 0 specifies that ciip_flag is not present in the coding unit syntax for inter-frame coding units.

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

[0295] sps_triangle_enabled_flag specifies whether triangle-based motion compensation can be used for inter prediction. sps_triangle_enabled_flag equal to 0 specifies that the syntax should be constrained so that triangle-based motion compensation is not used in CVS, and merge_triangle_split_dir, merge_triangle_idx0, and merge_triangle_idx1 are not present in the coding unit syntax of CVS. sps_triangle_enabled_flag equal to 1 specifies that triangle-based motion compensation can be used in CVS.

[0296] sps_lmcs_enabled_flag equal to 1 specifies that luma mapping with chroma scaling is used in CLVS. sps_lmcs_enabled_flag equal to 0 specifies that luma mapping with chroma scaling is not used in CLVS.

[0297] sps_lfnst_enabled_flag equal to 1 specifies that lfnst_idx may be present in the intra-coding unit syntax. sps_lfnst_enabled_flag equal to 0 specifies that lfnst_idx is not present in the intra-coding unit syntax.

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

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

[0300] sps_ladf_lowest_interval_qp_offset specifies the offset used to derive the specified variable qP. The value of sps_ladf_lowest_interval_qp_offset should be in the range of -63 to 63 (inclusive).

[0301] sps_ladf_qp_offset[i] specifies the offset array used to derive the specified variable qP. The value of sps_ladf_qp_offset[i] should be in the range of -63 to 63 (inclusive).

[0302] sps_ladf_delta_threshold_minus1[i] is used to calculate the value of SpsLadfIntervalLowerBound[i], which specifies the lower bound of the i-th luminance intensity level interval. The value of sps_ladf_delta_threshold_minus1[i] should be between 0 and 2 BitDepth -3 (including the end value).

[0303] Set the value of SpsLadfIntervalLowerBound[0] to 0.

[0304] 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:

[0305] SpsLadfIntervalLowerBound[i+1]=SpsLadfIntervalLowerBound[i]

[0306] +sps_ladf_delta_threshold_minus1[i]+1

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

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

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

[0310] 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. The value of sps_virtual_boundaries_pos_x[i] should be in the range of 1 to Ceil(pic_width_in_luma_samples÷8)-1 (inclusive).

[0311] sps_num_hor_virtual_boundaries specifies the number of sps_virtual_boundaries_pos_y[i] syntax elements present in the SPS. When sps_num_hor_virtual_boundaries is not present, it is inferred to be equal to 0.

[0312] 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. The value of sps_virtual_boundaries_pos_y[i] should be in the range of 1 to Ceil(pic_width_in_luma_samples÷8)-1 (inclusive).

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

[0314] sps_sublayer_cpb_params_present_flag equal to 1 specifies that the syntax structure old_hrd_parameters() in the SPS RBSP includes HRD parameters of the sublayer representation with a TemporalId in the range of 0 to sps_max_sublayers_minus1, inclusive. sps_sublayer_cpb_params_present_flag equal to 0 specifies that the syntax structure ols_hrd_parameters() in the SPS RBSP includes HRD parameters of the sublayer representation with a TemporalId equal to sps_max_sublayers_minus1 only. When sps_max_sublayers_minus1 is equal to 0, the value of sps_sublayer_cpb_params_present_flag is inferred to be equal to 0.

[0315] When sps_sublayer_cpb_params_present_flag is equal to 0, the HRD parameters for sublayer representations with TemporalId in the range of 0 to sps_max_sublayers_minus1-1 (inclusive) are inferred to be the same as the HRD parameters for sublayer representations with TemporalId equal to sps_max_sublayers_minus1. These parameters include the HRD parameters immediately following the conditional "if (general_vcl_hrd_params_present_flag)" in the ols_hrd_parameters syntax structure, starting from the fixed_pic_rate_general_flag[i] syntax element and continuing through the sublayer_hrd_parameters(i) syntax structure.

[0316] field_seq_flag equal to 1 indicates that CLVS transmits pictures representing fields. field_seq_flag equal to 0 indicates that CLVS transmits pictures representing frames. When general_frame_only_constraint_flag is equal to 1, the value of field_seq_flag shall be equal to 0. When field_seq_flag is equal to 1, a frame field information SEI message shall be present for each coded picture in CLVS.

[0317] NOTE - The specified decoding process does not treat pictures representing fields or frames differently. Therefore, a sequence of pictures representing a field will be encoded with the picture size of a single field. For example, a picture representing a 1080i field will typically have a cropped output size of 1920x540, and the sequence picture rate typically represents the source field rate (typically between 50 Hz and 60 Hz), not the source frame rate (typically between 25 Hz and 30 Hz).

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

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

[0320] sps_extension_data_flag can have any value. Its presence and value do not affect the decoder's conformance to the profile specified in this version of this specification. Decoders conforming to this version of this specification should ignore all sps_extension_data_flag syntax elements.

[0321] As described above, in JVET-P2001, when sps_general_hrd_params_present_flag is equal to 1, the syntax structure general_hrd_parameters() exists in the SPS RBSP syntax structure.

[0322] Table 4 shows the syntax structure of general_hrd_parameters() provided in JVET-P2001.

[0323]

[0324] Table 4

[0325] For Table 4, JVET-P2001 provides the following semantics:

[0326] The general_hrd_parameters() syntax structure provides HRD parameters used in HRD operations.

[0327] Bitstream conformance requires that the contents of the general_hrd_parameters() syntax structure present in any VPS or SPS in the bitstream shall be identical.

[0328] When included in a VPS, the general_hrd_parameters() syntax structure applies to all OLSs specified by the VPS.When included in an SPS, the general_hrd_parameters() syntax structure applies to only the OLS that includes the lowest layer among the layers that reference the SPS, and the lowest layer is an independent layer.

[0329] num_units_in_tick is the number of time units of a clock operating at a frequency of time_scale Hz that corresponds to one increment of the clock tick counter (called a clock tick). num_units_in_tick shall be greater than 0. The clock tick in seconds is equal to num_units_in_tick divided by time_scale.

[0330] For example, when the picture rate of the video signal is 25 Hz, time_scale may be equal to 27 000 000 and num_units_in_tick may be equal to 1 080 000, and thus the clock tick may be equal to 0.04 seconds.

[0331] time_scale is the number of time units that pass in one second. For example, a time coordinate system using a 27MHz clock would have a time_scale of 27,000,000. The value of time_scale should be greater than 0.

[0332] general_nal_hrd_params_present_flag equal to 1 specifies that NAL HRD parameters are present in the general_hrd_parameters() syntax structure (which is related to the Type II bitstream conformance point). general_nal_hrd_params_present_flag equal to 0 specifies that NAL HRD parameters are not present in the general_hrd_parameters() syntax structure.

[0333] NOTE—When general_nal_hrd_params_present_flag is equal to 0, without NAL HRD parameters and all BP SEI messages provided, and when general_vcl_hrd_params_present_flag is also equal to 0, without all PT and DU information SEI messages provided, bitstream conformance may not be verified by some means not specified in this specification.

[0334] The variable NalHrdBpPresentFlag is derived as follows:

[0335] - NalHrdBpPresentFlag is set equal to 1 if one or more of the following conditions are true:

[0336] - general_nal_hrd_params_present_flag is present in the bitstream and is equal to 1.

[0337] - The need for the presence of a BP for NAL HRD operation in the bitstream in the BP SEI message is determined by the application through some means not specified in this specification.

[0338] - Otherwise, the value of NalHrdBpPresentFlag is set equal to 0.

[0339] general_vcl_hrd_params_present_flag equal to 1 specifies the presence of VCL HRD parameters (associated with the Type I bitstream conformance point) in the general_hrd_parameters() syntax structure.

[0340] general_vcl_hrd_params_present_flag equal to 0 specifies that no VCL HRD parameters are present in the general_hrdjparameters() syntax structure.

[0341] NOTE—When general_vcl_hrd_params_present_flag is equal to 0, without providing VCL HRD parameters and all BP SEI messages, and when general_nal_hrd_params_present_flag is also equal to 0, without providing all PT and DU information SEI messages, bitstream conformance may not be verified by some means not specified in this specification.

[0342] The variable VclHrdBpPresentFlag is derived as follows:

[0343] - VclHrdBpPresentFlag is set equal to 1 if one or more of the following conditions are true:

[0344] - general_vcl_hrd_params_present_flag is present in the bitstream and is equal to 1.

[0345] - The need for the presence of a BP for a VAL HRD operation in the bitstream in the BP SEI message is determined by the application in some way not specified in this specification.

[0346] - Otherwise, the value of VclHrdBpPresentFlag is set equal to 0.

[0347] The variable CpbDpbDelaysPresentFlag is derived as follows:

[0348] - CpbDpbDelaysPresentFlag is set equal to 1 if one or more of the following conditions are true:

[0349] - general_nal_hrd_params_present_flag is present in the bitstream and is equal to 1.

[0350] - general_vcl_hrd_params_present_flag is present in the bitstream and is equal to 1.

[0351] - The presence of CPB and DPB output delays in the bitstream in the PT SEI message needs to be determined by the application through some means not specified in this specification.

[0352] - Otherwise, the value of CpbDpbDelaysPresentFlag is set equal to 0.

[0353] Bitstream conformance requires that the values ​​of general_nal_hrd_params_present_flag and general_vcl_hrd_params_present_flag in each general_hrd_parameters() syntax structure shall not both be equal to 0.

[0354] general_decoding_unit_hrd_params_present_flag equal to 1 specifies that DU-level HRD parameters are present and the HRD can operate at either AU-level or DU-level. general_decoding_unit_hrd_params_present_flag equal to 0 specifies that DU-level HRD parameters are not present and the HRD operates at AU-level. When general_decoding_unit_hrd_params_present_flag is not present, its value is inferred to be 0.

[0355] tick_divisor_minus2 is used to specify the clock sub-tick. When general_decoding_unit_hrd_params_present_flag is equal to 1, the clock sub-tick is the smallest time interval that can be represented in the encoded data.

[0356] bit_rate_scale (together with bit_rate_value_minus1[i][j]) specifies the maximum input bit rate for the j-th CPB when Htid is equal to i.

[0357] cpb_size_scale (together with cpb_size_value_minus1[i][j]) specifies the CPB size of the j-th CPB when Htid is equal to i and when the CPB operates at the AU level.

[0358] cpb_size_du_scale (together with cpb_size_du_value_minus1[1][j]) specifies the CPB size of the j-th CPB when Htid is equal to i and when the CPB operates at the DU level.

[0359] hrd_cpb_cnt_minus1 specifies the number of alternative CPB transmission schedules plus 1. The value of hrd_cpb_cnt_minus1 shall be in the range of 0 to 31, inclusive.

[0360] As described above, in JVET-P2001, when sps_sublayer_cpb_params_present_flag is equal to 1, the syntax structure old_hrd_parameters() is present in the SPS RBSP syntax structure. Table 5 shows the syntax structure of ols_hrd_parameters() provided in JVET-P2001.

[0361]

[0362] Table 5

[0363] For Table 5, JVET-P2001 provides the following semantics:

[0364] When the ols_hrd_parameters() syntax structure is included in a VPS, the OLS to which the ols_hrd_parameters() syntax structure applies is specified by the VPS. When the ols_hrd_parameters() syntax structure is included in an SPS, the ols_hrd_parameters() syntax structure applies to an OLS that includes only the lowest layer among the layers that reference the SPS, and the lowest layer is an independent layer.

[0365] fixed_pic_rate_general_flag[i] equal to 1 indicates that when Htid is equal to i, the temporal distance between HRD output times of consecutive pictures arranged in output order is constrained as described below. fixed_pic_rate_general_flag[i] equal to 0 indicates that this constraint may not apply.

[0366] When fixed_pic_rate_general_flag[i] is not present, it is inferred to be equal to 0.

[0367] fixed_pic_rate_within_cvs_flag[i] equal to 1 indicates that when Htid is equal to i, the temporal distance between HRD output times of consecutive pictures arranged in output order is constrained as described below. flxed_pic_rate_within_cvs_flag[i] equal to 0 indicates that this constraint may not apply.

[0368] When fixed_pic_rate_general_flag[i] is equal to 1, the value of fixed_pic_rate_within_cvs_flag[i] is inferred to be equal to 1.

[0369] elemental_duration_in_tc_minus1[i] plus 1 (when present) specifies the time distance in clock ticks between elemental units of HRD output times of consecutive pictures in output order as specified below when Htid is equal to i. The value of elemental_duration_in_tc_minus1[i] shall be in the range of 0 to 2047, inclusive.

[0370] For a CVS containing picture n, when Htid is equal to i and fixed_pic_rate_general_flag[i] is equal to 1, and picture n is an output picture other than the last picture in the output bitstream (in output order), the value of the variable DpbOutputElementalInterval[n] is specified as follows:

[0371] DpbOutputElementalInterval[n]=DpbOutputInterval[n]÷ElementalOutputPeriods

[0372] Where DpbOutputInterval[n] is specified below and ElementalOutputPeriods is specified as follows:

[0373] If there is a frame field information SEI message for picture n containing the display_elemental_periods_minus1 syntax element, ElementalOutputPeriods is equal to the value of display_elemental_periods_minus1+1.

[0374] Otherwise, ElementalOutputPeriods is equal to 1.

[0375] When Htid is equal to i and fixed_pic_rate_general_flag[i] is equal to 1 for the CVS containing picture n, and picture n is an output picture other than the last picture in the output bitstream (in output order), the value calculated for DpbOutputElementalInterval[n] shall be equal to ClockTick*(elemental_duration_in_tc_minus1[i]+1), where ClockTick is specified as ClockTick=num_units_in_tick+time_scale (using the value of ClockTick for the CVS containing picture n) when, for the next picture in the output order specified as provided below, nextPicInOutputOrder, one of the following conditions is true:

[0376] - Picture nextPicInOutputOrder is in the same CVS as picture n.

[0377] - The picture nextPicInOutputOrder is in a different CVS, and fixed_pic_rate_general_flag[i] is equal to 1 in the CVS containing the picture nextPicInOutputOrder, the value of ClockTick is the same for both CVSs, and the value of elemental_duration_in_tc_minus1[i] is the same for both CVSs.

[0378] When picture n is an output picture and is not the last picture of the output bitstream, the value of the variable DpbOutputInterval[n] is derived as follows:

[0379] DpbOutputInterval[n]=DpbOutputTime[nextPicInOutputOrder]-DpbOutputTime[n]

[0380] Where nextPicInOutputOrder is the picture that follows picture n in the output order and has PictureOutputFlag equal to 1.

[0381] When Htid is equal to i and fixed_pic_rate_within_cvs_flag[i] is equal to 1 for the CVS containing picture n, and picture n is an output picture other than the last picture in the output bitstream (in output order), the value calculated for DpbOutputElementalInterval[n] shall be equal to ClockTick*(elemental_duration_in_tc_minus1[i]+1), where ClockTick is as described above (using the value of ClockTick of the CVS containing picture n) when the next picture nextPicInOutputOrder designated for the output order specified above is in the same CVS as picture n.

[0382] As specified, when HTid is equal to i, low_delay_hrd_flag[i] specifies the HRD mode of operation. When not present, the value of low_delay_hrd_flag[i] is inferred to be equal to 0.

[0383] NOTE—When low_delay_hrd_flag[i] is equal to 1, "big pictures" are allowed that violate the nominal CPB removal time due to the number of bits used by the AU. It is expected, but not required, that such "big pictures" only occur occasionally.

[0384] As described above, in JVET-P2001, when sublayer_hrd_parameters() can exist in the ols_hrd_parameters() syntax structure, Table 6 shows the sub_layer_hrd_parameters() syntax structure provided in JVET-P2001.

[0385]

[0386] Table 6

[0387] For Table 6, JVET-P2001 provides the following semantics:

[0388] bit_rate_value_minus1[i][j] (together with bit_rate_scale) specifies the maximum input bit rate of the jth CPB when the CPB operates at AU level, where Htid is equal to i. bit_rate_value_minus1[i][j] shall be between 0 and 2 32 For any j greater than 0, and for any particular value of i, bit_rate_value_minus1[i][j] shall be greater than bit_rate_value_minus1[i][j-1].

[0389] When DecodingUnitHrdFlag is equal to 0, the following applies:

[0390] -The bit rate in bits per second is given by:

[0391] BitRate[i][j]=(bit_rate_value_minus1[i][j]+1)*2 (6+bit_rate_scale)

[0392] - When the bit_rate_value_minus1[i][j] syntax element is not present, it is inferred as follows:

[0393] - If general_hrd_params_present_flag is equal to 1, then bit_rate_value_minus1[i][j] is inferred to be equal to bit_rate_value_minus1[sps_max_sublayers_minus1][j].

[0394] - Otherwise (general_hrd_params_present_flag is equal to 0), the value of BitRate[i][j] is inferred to be equal to CpbBrVclFactor*MaxBR for VCL HRD parameters and equal to CpbBrNalFactor*MaxBR for NAL HRD parameters, where MaxBR, CpbBrVclFactor and CpbBrNalFactor are specified as provided in Tables 7A to 7C.

[0395]

[0396] Table 7A

[0397]

[0398] Table 7B

[0399] Simple table CpbVclFactor CpbNalFactor FormatCapabilityFactor MinCrScaleFactor Main 10 1000 1100 1.875 1.0 Main 4:4:4 10 2 500 2 750 3.750 0.5

[0400] Table 7C

[0401] cpb_size_value_minus1[i][j] is used together with cpb_size_scale to specify the jth CPB size when the CPB operates at AU level, where Htid is equal to i. cpb_size_value_minus1[i][j] should be between 0 and 2. 32 For any j greater than 0, and for any particular value of i, cpb_size_value_minus1[i][j] shall be less than or equal to cpb_size_value_minus1[i][j-1].

[0402] When DecodingUnitHrdFlag is equal to 0, the following applies:

[0403] - The CPB size in bits, given as:

[0404] CpbSize[i][j]=(cpb_size_value_minus1[1][j]+1)*2 (4+epb_size_scale)

[0405] - When the cpb_size_value_minus1[i][j] syntax element is not present, it is inferred as follows:

[0406] - If general_hrd_params_present_flag is equal to 1, cpb_size_value_minus1[i][j] is inferred to be equal to cpb_size_value_minus1[sps_max_sublayers_minus1][j].

[0407] Otherwise (general_hrd_params_present_flag is equal to 0), the value of CpbSize[i][j] is inferred to be equal to CpbBrVclFactor*MaxCPB for VCL HRD parameters and equal to CpbBrNalFactor*MaxCPB for NAL HRD parameters, where MaxCPB, CpbBrVclFactor and CpbBrNalFactor are as specified above.

[0408] cpb_size_du_value_minus1[i][j] is used together with cpb_size_du_scale to specify the i-th CPB size when the CPB operates at DU level, where Htid is equal to i. cpb_size_du_value_minus1[i][j] should be between 0 and 2 32 For any j greater than 0, and for any particular value of i, cpb_size_du_value_minus1[i][j] shall be less than or equal to cpb_size_du_value_minus1[i][j-1].

[0409] When DecodingUnitHrdFlag is equal to 1, the following applies:

[0410] - The CPB size in bits, given as:

[0411] CpbSize[i][j]=(cpb_size_du_value_minus1[i][j]+1)*2 (4+cpb-size-du-scale)

[0412] - When the cpb_size_du_value_minus1[i][j] syntax element is not present, it is inferred as follows:

[0413] - If general_hrd_params_present_flag is equal to 1, cpb_size_du_value_minus1[i][j] is inferred to be equal to cpb_size_du_value_minus1[sps_max_sublayers_minus1][j].

[0414] Otherwise (general_hrd_params_present_flag is equal to 0), the value of CpbSize[i][j] is inferred to be equal to CpbVclFactor*MaxCPB for VCL HRD parameters and equal to CpbNalFactor*MaxCPB for NAL HRD parameters, where MaxCPB, CpbVclFactor and CpbNalFactor are as specified above.

[0415] bit_rate_du_value_minus1[i][j] (together with bit_rate_scale) specifies the maximum input bit rate of the jth CPB when the CPB operates at DU level, where Htid is equal to i. bit_rate_du_value_minus1[i][j] shall be between 0 and 2 32 For any j greater than 0, and for any particular value of i, bit_rate_du_valuejninusl[i][j] shall be greater than bit_rate_du_value_minus1[i][j-1].

[0416] When DecodingUnitHrdFlag is equal to 1, the following applies:

[0417] -The bit rate in bits per second is given by:

[0418] BitRate[i][j]=(bit_rate_du_value_minus1[i][j]+1)*2 (6+bit-rate-scale)

[0419] - When the bit_rate_du_value_minus1[i][j] syntax element is not present, it is inferred as follows:

[0420] - If general_hrd_params_present_flag is equal to 1, then bit_rate_du_value_minus1[i][j] is inferred to be equal to bit_rate_du_value_minus1[sps_max_sublayers_minus1][j].

[0421] - Otherwise (general_hrd_params_present_flag is equal to 0), the value of BitRate[i][j] is inferred to be equal to BrVclFactor*MaxCPB for VCL HRD parameters and to BrNalFactor*MaxCPB for NAL HRD parameters, where MaxCPB, BrVclFactor and BrNalFactor are as specified above.

[0422] cbr_flag[i][j] equal to 0 specifies that for decoding of this bitstream by the HRD using the jth CPB specification, the Hypothetical Stream Scheduler (HSS) operates in intermittent bitrate mode. cbr_flag[i][j] equal to 1 specifies that the HSS operates in constant bitrate (CBR) mode.

[0423] When not present, the value of cbr_flag[i][j] is inferred as follows:

[0424] - When the cbr_flag[i][j] syntax element is not present, it is inferred as follows:

[0425] If general_hrd_params_present_flag is equal to 1, then cbr_flag[i][j] is inferred to be equal to cbr_flag[sps_max_sublayers_minus1][j].

[0426] Otherwise (general_hrd_params_present_flag is equal to 0), the value of cbr_flag[i][j] is inferred to be equal to 0.

[0427] As described above, JVET-P2001 enables SEI messages to be signaled, which facilitates processes related to decoding, display, or other purposes. In addition, the types of SEI messages used for VCL HRD operations include buffering period SEI messages. Table 8 shows the buffering_period() syntax structure provided in JVET-P2001.

[0428]

[0429]

[0430] Table 8

[0431] For Table 8, JVET-P2001 provides the following semantics:

[0432] The BP SEI message provides initial CPB removal delay and initial CPB removal delay offset information for initializing HRD at the location of the associated AU in decoding order. When the BP SEI message is present, when a picture has a TemporalId equal to 0, the picture is called a notDiscardablePic picture and is not a RASL or RADL picture.

[0433] When the current picture is not the first picture in decoding order in the bitstream, let prevNonDiscardablePic be the previous picture in decoding order that has TemporalId equal to 0 and is not RASL or RADL.

[0434] The presence of a BP SEI message is specified as follows:

[0435] - If NalHrdBpPresentFlag is equal to 1 or VclHrdBpPresentFlag is equal to 1, then for each AU in the CVS, the following applies:

[0436] - If the AU is an IRAP or GDR AU, the BP SEI message applicable to the operation point shall be associated with the AU.

[0437] - Otherwise, if the AU contains notDiscardablePic, the BP SEI message applicable to the operation point may or may not be associated with the AU.

[0438] - Otherwise, the AU shall not be associated with the BP SEI message applicable to the operation point.

[0439] - Otherwise (both NalHrdBpPresentFlag and VclHrdBpPresentFlag are equal to 0), there shall be no AU associated with the BP SEI message in the CVS.

[0440] NOTE—For some applications, frequent presence of BP SEI messages may be desired (eg, for random access at IRAP pictures or non-IRAP pictures or for bitstream splicing).

[0441] bp_nal_hrd_params_present_flag equal to 1 specifies that the list of syntax elements nal_initial_cpb_removal_delay[i][j] and nal_initial_cpb_removal_offset[i][j] is present in the BP SEI message. bp_nal_hrd_parameters_present_flag equal to 0 specifies that the list of syntax elements nal_initial_cpb_removal_delay[i][j] and nal_initial_cpb_removal_offset[i][j] is not present in the BP SEI message.

[0442] The value of bp_nal_hrd_params_present_flag shall be equal to general_nal_hrd_params_present_flag.

[0443] bp_vcl_hrd_params_present_flag equal to 1 specifies that the list of syntax element pairs vcl_initial_cpb_removal_delay[i][j] and vcl_initial_cpb_removal_offset[i][j] is present in the BP SEI message. bp_vcl_hrd_params_present_flag equal to 0 specifies that the list of syntax element pairs vcl_initial_cpb_removal_delay[i][j] and vcl_initial_cpb_removal_offset[i][j] is not present in the BP SEI message.

[0444] The value of bp_vcl_hrd_params_present_flag shall be equal to general_vcl_hrd_params_present_flag.

[0445] The bp_vcl_hrd_params_present_flag and bp_nal_hrd_params_present_flag in the BP SEI message shall not both be equal to 0.

[0446] initial_cpb_removal_delay_length_minus1 plus 1 specifies the length, in bits, of the syntax elements nal_initial_cpb_removal_delay[i][j], nal_initial_cpb_removal_offset[i][j], vcl_initial_cpb_removal_delay[i][j], and vcl_initial_cpb_removal_offset[i][j] of the BP SEI message in the current buffering period. When not present, the value of initial_cpb_removal_delay_length_minus1 is inferred to be equal to 23.

[0447] cpb_removal_delay_length_minus1 plus 1 specifies the length in bits of the syntax elements cpb_removal_delay_delta_minus1 and cpb_removal_delay_delta[i] in the BP SEI message and the syntax element cpb_removal_delay_minus1[i] in the PT SEI message for the current buffering period. When not present, the value of cpb_removal_delay_length_minus1 is inferred to be equal to 23.

[0448] dpb_output_delay_length_minus1 plus 1 specifies the length, in bits, of the syntax element dpb_output_delay in the PT SEI message in the current buffering period. When not present, the value of dpb_output_delay_length_minus1 is inferred to be equal to 23.

[0449] alt_cpb_params_present_flag equal to 1 specifies the presence of the syntax element use_alt_cpb_params_flag in the BP SEI message and the presence of additional timing information in the PT SEI message for the current buffering period. When not present, the value of bp_alt_cpb_params_present_flag is inferred to be equal to 0. The value of bp_alt_cpb_params_present_flag shall be equal to 0 when the associated picture is neither a CRA picture nor an IDR picture.

[0450] bp_decoding_unit_hrd_params_present_flag equal to 1 specifies that DU-level HRD parameters are present and the HRD can operate at either AU-level or DU-level. bp_decoding_unit_hrd_params_present_flag equal to 0 specifies that DU-level HRD parameters are not present and the HRD operates at AU-level. When bp_decoding_unit_hrd_params_present_flag is not present, its value is inferred to be 0. The value of bp_decoding_unit_hrd_params_present_flag shall be equal to general_decoding_unit_hrd_params_present_flag.

[0451] du_cpb_removal_delay_increment_length_minus1 plus 1 specifies the length in bits of the du_cpb_removal_delay_increment_minus1[][] and du_common_cpb_removal_delay_increment_minus1[] syntax elements in the PT SEI message and the du_spt_cpb_removal_delay_increment[] syntax element in the DU information SEI message for the current buffering period. When not present, the value of du_cpb_removal_delay_increment_length_minus1 is inferred to be 23.

[0452] dpb_output_delay_du_length_minus1 plus 1 specifies the length, in bits, of the pic_dpb_output_du_delay syntax element in the PT SEI message and the pic_spt_dpb_output_du_delay syntax element in the DU information SEI message for the current buffering period. When not present, the value of dpb_output_delay_du_length_minus1 is inferred to be 23.

[0453] decoding_unit_cpb_params_in_pic_timing_sei_flag equal to 1 specifies that the DU-level CPB removal delay parameters are present in the PT SEI message and that there is no DU information SEI message (provided in the CVS or by external means not specified in this specification). decoding_unit_cpb_params_in_pic_timing_sei_flag equal to 0 specifies that the DU-level CPB removal delay parameters are present in the DU information SEI message and that the PT SEI message does not include the DU-level CPB removal delay parameters. When the decoding_unit_cpb_params_in_pic_timing_sei_flag syntax element is not present, it is inferred to be 0.

[0454] concatenation_flag indicates whether the nominal CPB removal time of the current picture is determined relative to the nominal CPB removal time of the previous picture with a BP SEI message or relative to the nominal CPB removal time of picture prevNonDiscardablePic when the current picture is not the first picture in decoding order in the bitstream.

[0455] additional_concatenation_info_present_flag equal to 1 specifies that the syntax element max_initial_removal_delay_for_concatination is present in the BP SEI message and the syntax element delay_for_concatenation_ensured_flag is present in the PT SEI message. additional_concatenation_info_present_flag equal to 0 specifies that the syntax element max_initial_removal_delay_for_concatination is not present in the BP SEI message and the syntax element delay_for_concatenation_ensured_flag is not present in the PT SEI message.

[0456] max_initial_removal_delay_for_concatination can be used together with delay_for_concatenation_ensured_flag in the PT SEI message to indicate whether the nominal removal time of the next BP from the CPB of the first AU calculated using cpb_removal_delay_delta_minus1 is applied. The length of max_initial_removal_delay_for_concatination is initial_cpb_removal_delay_length_minus1+1 bits.

[0457] cpb_removal_delay_delta_minus1 plus 1 specifies the incremental CPB removal delay relative to the nominal CPB removal time of picture prevNonDiscardablePic when the current picture is not the first picture in decoding order in the bitstream. The length of this syntax element is cpb_removal_delay_length_minus1+1 bits.

[0458] When the current picture contains a BP SEI message and concatenation_flag is equal to 0 and the current picture is not the first picture in decoding order in the bitstream, bitstream conformance requirements apply the following constraints:

[0459] - If the picture prevNonDiscardablePic is not associated with a BP SEI message, the cpb_removal_delay_minus1 of the current picture shall be equal to the cpb_removal_delay_minus1 of prevNonDiscardablePic plus cpb_removal_delay_delta_minus1+1.

[0460] Otherwise, cpb_removal_delay_minus1 shall be equal to cpb_removal_delay_delta_minus1.

[0461] NOTE—When the current picture contains a BP SEI message and concatenation_flag is equal to 1, cpb_removal_delay_minus1 for the current picture is not used. In some cases, the constraints specified above may make it possible to splice the bitstream by simply changing the value of concatenation_flag from 0 to 1 in the BP SEI message for the IRAP or GDR picture at the splice point (using a suitably designed reference structure). When concatenation_flag is equal to 0, the constraints specified above enable the decoder to check whether the constraints are met as a way of detecting the loss of the picture prevNonDiscardablePic.

[0462] cpb_removal_delay_deltas_present_flag equal to 1 specifies that the BP SEI message contains CPB removal delay deltas. cpb_removal_delay_deltas_present_flag equal to 0 specifies that no CPB removal delay deltas are present in the BP SEI message.

[0463] num_cpb_removal_delay_deltas_minus1 plus 1 specifies the number of syntax elements cpb_removal_delay_delta[i] in the BP SEI message. The value of num_cpb_removal_offsets_minus1 shall be in the range of 0 to 15, inclusive.

[0464] cpb_removal_delay_delta[i] specifies the i-th CPB removal delay increment. The length of this syntax element is cpb_removal_delay_length_minus1+1 bits.

[0465] bp_max_sublayers_minus1 plus 1 specifies the maximum number of temporal sublayers for indicating CPB removal delay and CPB removal offset in the BP SEI message. The value of bp_max_sublayers_minus1 should be in the range of 0 to vps_max_sublayers_minus1, inclusive.

[0466] bp_cpb_cnt_minus1 plus 1 specifies the number of syntax element pairs nal_initial_cpb_removal_delay[i][j] and nal_initial_cpb_removal_offset[i][j] for the i-th temporal sub-layer when bp_nal_hrd_params_present_flag is equal to 1, and specifies the number of syntax element pairs vcl_initial_cpb_removal_delay[i][j] and vcl_initial_cpb_removal_offset[i][j] for the i-th temporal sub-layer when bp_vcl_hrd_params_present_flag is equal to 1. The value of bp_cpb_cnt_minus1 shall be in the range of 0 to 31, inclusive.

[0467] The value of bp_cpb_cnt_minus1 shall be equal to the value of hrd_cpb_cnt_minus1.

[0468] sublayer_initial_cpb_removal_delay_present_flag equal to 1 specifies that for temporal sub-layer representations in the range of 0 to bp_max_sublayers_minus1, inclusive, the initial CPB removal delay related syntax elements are present. sublayer_initial_cpb_removal_delay_present_flag equal to 0 specifies that the initial CPB removal delay related syntax elements are present for the bp_max_sublayers_minus1-th temporal sub-layer representation.

[0469] nal_initial_cpb_removal_delay[i][j] and nal_initial_alt_cpb_removal_delay[i][j] specify the j-th default and alternative initial CPB removal delays for the NAL HRD, in units of the 90 kHz clock for the i-th temporal sublayer. The length of nal_initial_cpb_removal_delay[i][j] and nal_initial_alt_cpb_removal_delay[i][j] is initial_cpb_removal_delay_length_minus1+1 bits. The values ​​of nal_initial_cpb_removal_delay[i][j] and nal_initial_alt_cpb_removal_delay[i][j] shall not be equal to 0 and shall be less than or equal to 90000*(CpbSize[i][j] ÷ BitRate[i][j]), which is the time equivalent of the CPB size in 90 kHz clock units. When not present, the values ​​of nal_initial_cpb_removal_delay[i][j] and nal_initial_alt_cpb_removal_delay[i][j] are inferred to be equal to 90000*(CpbSize[i][j]÷BitRate[i][j]).

[0470] nal_initial_cpb_removal_offset[i][j] and nal_initial_alt_cpb_removal_offset[i][j] specify the j-th default and alternative initial CPB removal offsets for the i-th temporal sublayer for the NAL HRD, in units of 90 kHz clock. The length of nal_initial_cpb_removal_offset[i][j] and nal_initial_alt_cpb_removal_offset[i][j] is initial_cpb_removal_delay_length_minus1+1 bits. When not present, the values ​​of nal_initial_cpb_removal_offset[i][j] and nal_initial_alt_cpb_removal_offset[i][j] are inferred to be equal to 0.

[0471] Throughout the CVS, for each pair of values ​​of i and j, the sum of nal_initial_cpb_removal_delay[i][j] and nal_initial_cpb_removal_offset[i][j] shall be constant, and the sum of nal_initial_alt_cpb_removal_delay[i][j] and nal_initial_alt_cpb_removal_offset[i][j] shall be constant.

[0472] vcl_initial_cpb_removal_delay[i][j] and vcl_initial_alt_cpb_removal_delay[i][j] specify the j-th default and alternative initial CPB removal delays for the i-th temporal sublayer for the VAL HRD, in units of the 90 kHz clock. The length of vcl_initial_cpb_removal_delay[i][j] and vcl_initial_alt_cpb_removal_delay[i][j] is initial_cpb_removal_delay_length_minus1+1 bits. The values ​​of vcl_initial_cpb_removal_delay[i][j] and vcl_initial_alt_cpb_removal_delay[i][j] shall not be equal to 0 and shall be less than or equal to 90000*(CpbSize[i][j] ÷ BitRate[i][j]), which is the time equivalent of the CPB size in 90 kHz clock units. When not present, the values ​​of vcl_initial_cpb_removal_delay[i][j] and vcl_initial_alt_cpb_removal_delay[i][j] are inferred to be equal to 90000*(CpbSize[i][j]÷BitRate[i][j]).

[0473] vcl_initial_cpb_removal_ofiset[i][j] and vcl_initial_alt_cpb_removal_offset[i][j] specify the j-th default and alternative initial CPB removal offsets for the i-th temporal sub-layer for the VCL HRD, in units of 90kHz clock. The length of vcl_initial_cpb_removal_offset[i][j] and vcl_initial_alt_cpb_removal_offset[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0474] When not present, the values ​​of vcl_initial_cpb_removal_offset[i][j] and vcl_initial_alt_cpb_removal_offset[i][j] are inferred to be equal to 0.

[0475] Throughout the CVS, for each pair of values ​​of i and j, the sum of vcl_initial_cpb_removal_delay[i][j] and vcl_initial_cpb_removal_offset[i][j] shall be constant, and the sum of vcl_initial_alt_cpb_removal_delay[i][j] and vcl_initial_alt_cpb_removal_offset[i][j] shall be constant.

[0476] The use_alt_cpb_params_flag may be used to derive the value of the UseAltCpbParamsFlag. When the use_alt_cpb_params_flag is not present, it is inferred to be equal to 0.

[0477] UseAltCpbParamsFlag is set equal to 1 when one or more of the following conditions apply:

[0478] -use_alt_cpb_params_flag is equal to 1.

[0479] - When some external means not specified in this specification can be used to set UseAltCpbParamsFlag, and the value of UseAltCpbParamsFlag is set to 1 by the external means.

[0480] As described above, JVET-P2001 enables SEI messages to be signaled, which facilitates processes related to decoding, display, or other purposes. In addition, the types of SEI messages used for VCL HRD operations include picture timing SEI messages. Table 9 shows the pic_timing() syntax structure provided in JVET-P2001.

[0481]

[0482]

[0483] Table 9

[0484] For Table 9, JVET-P2001 provides the following semantics:

[0485] The PT SEI message provides CPB removal delay and DPB output delay information for the AU associated with the SEI message.

[0486] If bp_nal_hrd_params_present_flag or bp_vcl_hrd_params_present_flag of the BP SEI message applicable to the current AU is equal to 1, the variable CpbDpbDelaysPresentFlag is set to 1. Otherwise, CpbDpbDelaysPresentFlag is set to 0.

[0487] The presence of a PT SEI message is specified as follows:

[0488] - If CpbDpbDelaysPresentFlag is equal to 1, the PT SEI message shall be associated with the current AU.

[0489] - Otherwise (CpbDpbDelaysPresentFlag is equal to 0), there shall be no PT SEI message associated with the current AU.

[0490] The TemporalId in the PT SEI message syntax is the TemporalId of the SEI NAL unit containing the PT SEI message.

[0491] cpb_removal_delay_minus1[i] plus 1 is used to calculate the number of clock ticks between the nominal CPB removal time of the AU associated with the PT SEI message and the previous AU in decoding order containing the BP SEI message when Htid is equal to i. This value is also used to calculate the earliest possible time that AU data arrives in the CPB of the HSS. The length of cpb_removal_delay_minus1[i] is cpb_removal_delay_length_minus1+1 bits.

[0492] cpb_alt_timing_info_present_flag equal to 1 specifies the presence of the syntax elements cpb_alt_initial_cpb_removal_delay_delta[i], cpb_delay_offset, and dpb_delay_offset. The value of cpb_alt_timing_info_present_flag shall be equal to 0 when the associated picture is a RASL picture.

[0493] NOTE—For more than one AU following an IRAP picture in decoding order, the value of cpb_alt_timing_info_present_flag may be equal to 1. However, the value of cpb_alt_timing_info_present_flag only applies to the first AU that has cpb_alt_timing_info_present_flag equal to 1 and follows an IRAP picture in decoding order.

[0494] cpb_alt_initial_cpb_removal_delay_delta[i] specifies the alternative initial CPB removal delay delta for the i-th CPB. The length of cpb_alt_initial_cpb_removal_delay_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits.

[0495] cpb_alt_imtial_cpb_removal_offset_delta[i] specifies the alternative initial CPB removal offset delta for the i-th CPB. The length of cpb_alt_initial_cpb_removal_offset_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits.

[0496] cpb_delay_offset specifies the offset to be used when deriving the nominal CPB removal time for the AU associated with the PT SEI message and the AU that follows it in decoding order, when the AU associated with the PT SEI message directly follows the AU associated with the BPSEI message in decoding order. The length of cpb_delay_offset is au_cpb_removal_delay_length_minus1+1 bits. When not present, the value of cpb_delay_offset is inferred to be equal to 0.

[0497] dpb_delay_offset specifies the offset to be used when deriving the DPB output time of the IRAP AU associated with the BP SEI message when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order. The length of dpb_delay_offset is dpb_output_delay_length_minus1+1 bits. When not present, the value of dpb_delay_offset is inferred to be equal to 0.

[0498] The variable pResetFlag of the current screen is derived as follows:

[0499] - If the current picture is associated with a BP SEI message, BpResetFlag is set equal to 1.

[0500] - Otherwise, BpResetFlag is set equal to 0.

[0501] pt_sublayer_delays_present_flag[i] equal to 1 specifies that for the sublayer with TemporalId equal to i, either cpb_removal_delay_delta_idx[i] or cpb_removal_delay_minus1[i], and either du_common_cpb_removal_delay_increment_minus1[i] or du_cpb_removal_delay_incremcnt_minus1[][] are present. pt_sublayer_delays_present_flag[i] equal to 0 specifies that for the sublayer with TemporalId equal to i, neither cpb_removal_delay_delta_idx[i] nor cpb_removal_delay_minus1[i] is present, and neither du_common_cpb_removal_delay_increment_minus1[i] nor du_cpb_removal_delay_incremcnt_minus1[][] are present. The value of pt_sublayer_delays_present_flag[bp_max_sublayers_minus1] is inferred to be equal to 1. When not present, the value of pt_sublayer_delays_present_flag[i] is inferred to be equal to 0 for any i in the range of 0 to bp_max_sublayers_minus1-1, inclusive.

[0502] cpb_removal_delay_delta_enabled_flag[i] equal to 1 specifies that cpb_removal_delay_delta_idx[i] is present in the PT SEI message.

[0503] cpb_removal_delay_delta_enabled_flag[i] equal to 0 specifies that cpb_removal_delay_delta_idx[i] is not present in the PT SEI message. When not present, the value of cpb_removal_delay_delta_enabled_flag[i] is inferred to be equal to 0.

[0504] cpb_removal_delay_delta_idx[i] specifies the index of the CPB removal delta applicable to Htid, which is equal to i in the cpb_removal_delay_delta[j] list, where j ranges from 0 to num_cpb_removal_delay_deltas_minus1 (inclusive). The length of cpb_removal_delay_delta_idx[i] is Ceil(Log2(num_cpb_removal_delay_deltas_minus1+1)) bits.

[0505] The variables CpbRemovalDelayMsb[i] and CpbRemovalDelayVal[i] of the current screen are derived as follows:

[0506] If the current AU is the AU that initializes HRD, both CpbRemovalDelayMsb[i] and CpbRemovalDelayVal[i] are set equal to 0, and the value of cpbRemovalDelayValTmp[i] is set equal to cpb_removal_delay_minus1[i]+1.

[0507] - Otherwise, for picture prevNonDiscardablePic, let picture prevNonDiscardablePic be the previous picture in decoding order with TemporalId equal to 0 and that is not RASL or RADL, let prevCpbRemovalDelayMinus1[i], prevCpbRemovalDelayMsb[i], and prevBpResetFlag be set equal to the values ​​of CpbRemovalDelayValTmp[i]-1, CpbRemovalDelayMsb[i], and BpResetFlag, respectively, and the following apply:

[0508] -CpbRemovalDelayMsb[i] is derived as follows:

[0509]

[0510] -CpbRemovalDelayVal is derived as follows:

[0511] CpbRemovalDelayVal[i]=CpbRemovalDelayMsb[i]+cpbRemovalDelayValTmp[i]

[0512] The value of CpbRemovalDelayVal[i] should be between 1 and 2 32 is within the range of (including the end value).

[0513] The variable picDpbOutputDelta[i] is derived as follows:

[0514] - If pt_sublayer_delays_present_flag[i] is equal to 0, picDpbOutputDelta[i] is set equal to 0.

[0515] Otherwise (pt_sublayer_delays_present_flag[i] is equal to 1), picDpbOutputDelta[i] is set equal to CpbRemovalDelayVal[i] - (cpb_removal_delay_minus1[sps_max_sublayers_minus1] + 1).

[0516] dpb_output_delay is used to calculate the DPB output time of the picture. It specifies how many clock ticks to wait before outputting the decoded picture from the DPB after removing the AU from the CPB.

[0517] NOTE - When a picture is still marked as "used for short-term reference" or "used for long-term reference", the picture is not removed from the DPB at its output time.

[0518] The length of dpb_delay_delay is dpb_output_delay_length_minus1+1 bits. When max_dec_pic_buffering_minus1[Htid] is equal to 0, the value of pic_dpb_output_delay shall be equal to 0.

[0519] The output time derived from dpb_output_delay of any picture output by the decoder that complies with the output timing shall precede the output time derived from dpb_output_delay of all pictures in any subsequent CVS in decoding order.

[0520] The picture output order established by the value of this syntax element shall be the same as the order established by the value of PicOrderCntVal.

[0521] For pictures that are not output by the "scramble" process because they precede in decoding order a CLVSS picture with no_output_of_prior_pics_flag equal to 1 or inferred to be 1, the output time derived from dpb_output_delay shall increase with increasing value of PicOrderCntVal with respect to all pictures within the same CVS.

[0522] pic_dpb_output_du_delay is used to calculate the DPB output time of a picture when DecodingUnitHrdFlag is equal to 1. It specifies how many sub-clock ticks to wait before outputting the decoded picture from the DPB after the last DU in an AU is removed from the CPB.

[0523] The length of the syntax element pic_dpb_output_du_delay is given in bits by dpb_output_delay_du_length_minus1+1.

[0524] The output time derived from pic_dpb_output_du_delay of any picture output from the decoder that complies with the output timing shall precede the output time derived from pic_dpb_output_du_delay of all pictures in any subsequent CVS in decoding order.

[0525] The picture output order established by the value of this syntax element shall be the same as the order established by the value of PicOrderCntVal.

[0526] For pictures that are not output by the "scramble" process because they precede in decoding order a CLVSS picture with no_output_of_prior_pics_flag equal to 1 or inferred to be 1, the output time derived from pic_dpb_output_du_delay shall increase with increasing value of PicOrderCntVal with respect to all pictures within the same CVS.

[0527] For any two pictures in CVS, the difference between the output times of the two pictures when DecodingUnitHrdFlag is equal to 1 shall be the same as the same difference when DecodingUnitHrdFlag is equal to 0.

[0528] num_decoding_units_minus1 plus 1 specifies the number of DUs in the AU associated with the PT SEI message. The value of num_decoding_units_minus1 should be in the range of 0 to PicSizelnCtbsY-1, inclusive.

[0529] du_common_cpb_removal_delay_flag is equal to 1, which indicates that the syntax element du_common_cpb_removal_delay_increment_minus1[i] is present. du_common_cpb_removal_delay_flag is equal to 0, which indicates that the syntax element du_common_cpb_removal_delay_increment_minus1[i] is not present.

[0530] du_common_cpb_removal_delay_increment_minus1[i] plus 1 specifies the duration (in clock sub-ticks) between the nominal CPB removal times of any two consecutive DUs in decoding order in the AU associated with the PT SEI message when Htid is equal to i. As specified, this value is also used to calculate the earliest possible arrival time of DU data into the CPB of the HSS. The length of this syntax element is du_cpb_removal_delay_increment_length_minus1+1 bits.

[0531] For any value of i less than bp_max_sublayers_minus1, when du_common_cpb_removal_delay_increment_minus1[i] is not present, its value is inferred to be equal to du_common_cpb_removal_delay_increment_minus1[bp_max_sublayers_minus1].

[0532] num_nalus_in_du_minus1[i] plus 1 specifies the number of NAL units in the i-th DU of the AU associated with the PT SEI message. The value of num_nalus_in_du_minus1[i] should be in the range of 0 to PicSizelnCtbsY-1, inclusive.

[0533] The first DU of an AU consists of the first num_nalus_in_du_minus1[0]+1 consecutive NAL units in the AU in decoding order. The i-th (where i is greater than 0) DU of an AU consists of num_nalus_in_du_minus1[i]+1 consecutive NAL units that immediately follow the last NAL unit in the previous DU of the AU in decoding order. There should be at least one VCL NAL unit in each DU. All non-VCL NAL units associated with a VCL NAL unit should be included in the same DU as the VCL NAL unit.

[0534] du_cpb_removal_delay_increment_minus1[i][j] plus 1 specifies the duration (in clock sub-ticks) between the (i+1)th DU in decoding order and the nominal CPB removal time of the i-th DU in the AU associated with the PT SEI message when Htid is equal to j. As specified, this value is also used to calculate the earliest possible arrival time of the DU data into the CPB of the HSS. The length of this syntax element is du_cpb_removal_delay_increment_length_minus1+1 bits.

[0535] For any value of j less than bp_max_sublayers_minus1, when du_cpb_removal_delay_increment_minus1[i][j] is not present, its value is inferred to be equal to du_cpb_removal_delay_increment_minus1[i][bp_max_sublayers_minus1].

[0536] delay_for_concatenation_ensured_flag equal to 1 specifies that the difference between the final arrival time and the CPB removal time of the AU associated with the PT SEI message is such that when followed by a BP SEI message with concatenation_flag equal to 1 and an AU with InitCpbRemovalDelay[][] less than or equal to the value of max_initial_removal_delay_for_concatination, the nominal removal time of the subsequent AU from the CPB calculated using cpb_removal_delay_delta_minus1 applies. delay_for_concatenation_ensured_flag equal to 0 specifies that the difference between the final arrival time and the CPB removal time of the AU associated with the PT SEI message may or may not exceed the value of max_val_mitial_removal_delay_for_splicing.

[0537] As described above, JVET-P2001 enables SEI messages to be signaled, which facilitates processes related to decoding, display, or other purposes. In addition, the types of SEI messages used for VCL HRD operations include decoding unit information SEI messages. Table 10 shows the syntax structure of decoding_unit_info() provided in JVET-P2001.

[0538]

[0539] Table 10

[0540] For Table 10, JVET-P2001 provides the following semantics:

[0541] The DU Information SEI message provides CPB removal delay information for the DU associated with the SEI message.

[0542] The following applies to the DU information SEI message syntax and semantics:

[0543] - The syntax elements bp_decoding_unit_hrd_params_present_fla, decoding_unit_cpb_params_in_pic_timing_sei_flag, and dpb_output_delay_du_length_minus1 are found in the BP SEI message applicable to at least one of the operation points to which the DU information SEI message applies.

[0544] A bitstream (or a portion thereof) refers to a bitstream subset (or a portion thereof) associated with any of the operation points to which the DU information SEI message applies.

[0545] The presence of the DU information SEI message for an operation point is specified as follows:

[0546] If CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1, and decoding_unit_cpb_params_in_pic_timing_sei_flag is equal to 0, one or more DU information SEI messages applicable to the operation point shall be associated with each DU in the CVS.

[0547] Otherwise, if CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1, and decoding_unit_cpb_params_in_pic_timing_sei_flag is equal to 1, one or more DU information SEI messages applicable to the operation point may or may not be associated with each DU in the CVS.

[0548] - Otherwise (CpbDpbDelaysPresentFlag is equal to 0 or bp_decoding_unit_hrd_paranis_present_flag is equal to 0), in the CVS, there shall be no DU associated with the DU information SEI message applicable to the operation point.

[0549] The set of NAL units associated with a DU information SEI message consists, in decoding order, of the SEI NAL unit containing the DU information SEI message and all subsequent NAL units in the AU, up to but not including any subsequent SEI NAL unit containing a DU information SEI message with a different decoding_unit_idx value. Each DU shall include at least one VCL NAL unit. All non-VCL NAL units associated with a VCL NAL unit shall be included in the DU containing the VCL NAL unit.

[0550] The TemporalId in the DU information SEI message syntax is the TemporalId of the SEI NAL unit containing the DU information SEI message.

[0551] decoding_unit_idx specifies the index of the DU list in the current AU to the DU associated with the DU information SEI message, starting from 0. The value of decoding_unit_idx should be in the range of 0 to PicSizelnCtbsY-1, inclusive.

[0552] A DU identified by a specific value of duIdx includes and only includes all NAL units associated with all DU information SEI messages with decoding_unit_idx equal to duIdx. Such a DU is also said to be associated with a DU information SEI message with decoding_unit_idx equal to duIdx.

[0553] For any two DUs duA and duB in an AU with decoding_unit_idx equal to duIdxA and duIdxB respectively, where duIdxA is less than duIdxB, duA shall be arranged before duB in decoding order.

[0554] In decoding order, a NAL unit of one DU shall not exist between any two NAL units of another DU.

[0555] dui_sublayer_delays_present_flag[i] equal to 1 specifies that du_spt_cpb_removal_delay_increment[i] is present for the sublayer with TemporalId equal to i. dui_sublayer_delays_present_flag[i] equal to 0 specifies that du_spt_cpb_removal_delay_increment[i] is not present for the sublayer with TemporalId equal to i. When not present, the value of dui_sublayer_delays_present_flag[i] is inferred to be equal to 0.

[0556] du_spt_cpb_removal_delay_increment[i] specifies the nominal CPB time of the last DU in decoding order in the current AU and the duration (in clock sub-ticks) between the DU associated with the DU information SEI message when Htid is equal to i. This value is also used to calculate the earliest possible arrival time of the DU data in the CPB of the HSS, as specified in Annex C. The length of this syntax element is du_cpb_removal_delay_increment_length_minus1+1. When the DU associated with the DU information SEI message is the last DU in the current AU, the value of du_spt_cpb_removal_delay_increment[i] shall be equal to 0. For any value of i less than bp_max_sublayers_minus1, when du_spt_cpb_removal_delay_increment[i] is not present, its value is inferred to be equal to du_spt_cpb_removal_delay_increment[bp_max_sublayers_minus1].

[0557] dpb_output_du_delay_present_flag equal to 1 specifies that the pic_spt_dpb_output_du_delay syntax element is present in the DU information SEI message. dpb_output_du_delay_present_flag equal to 0 specifies that the pic_spt_dpb_output_du_delay syntax element is not present in the DU information SEI message.

[0558] pic_spt_dpb_output_du_delay is used to calculate the DPB output time of a picture when DecodingUnitHrdFlag is equal to 1. It specifies how many sub-clock ticks to wait after removing the last DU in an AU from the CPB before outputting the decoded picture from the DPB. When not present, the value of pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_outpuUdu_delay. The length of the syntax element pic_spt_dpb_output_du_delay is given in bits by dpb_output_delay_du_length_minus1+1.

[0559] Bitstream conformance requires that all DU information SEI messages associated with the same AU, applied to the same operation point, and with dpb_output_du_delay_present_flag equal to 1 shall have the same pic_spt_dpb_output_du_delay value.

[0560] The output time derived from pic_spt_dpb_output_du_delay of any picture output from the decoder that complies with the output timing shall precede the output time derived from pic_spt_dpb_output_du_delay of all pictures in any subsequent CVS in decoding order.

[0561] The picture output order established by the value of this syntax element shall be the same as the order established by the value of PicOrderCntVal.

[0562] For pictures that are not output by the "scramble" process because they precede in decoding order a CLVSS picture with no_output_of_prior_pics_flag equal to 1 or inferred to be 1, the output time derived from pic_spt_dpb_output_du_delay shall increase with increasing value of PicOrderCntVal with respect to all pictures within the same CVS.

[0563] For any two pictures in CVS, the difference between the output times of the two pictures when DecodingUnitHrdFlag is equal to 1 shall be the same as the same difference when DecodingUnitHrdFlag is equal to 0.

[0564] In addition, JVET-P2001 provides the following for the picture output of the decoded picture buffer:

[0565] The process specified in this clause occurs immediately at the CPB removal time CpbRemovalTime[n] of AU n.

[0566] When picture n has PictureOutputFlag equal to 1, its DPB output time DpbOutputTime[n] is derived as follows, where the variable firstPicInBufferingPeriodFlag is equal to 1 when AU n is the first AU of the BP and equal to 0 otherwise:

[0567]

[0568] where picDpbOutputDelay is the value of pic_dpb_output_delay, and picDpbOutputDelta is the value of picDpbOutputDelta[Htid] derived from cpb_removal_delay_minus1[Htid] and cpb_removal_delay_delta_idx[Htid]] in the PT SEI message associated with AU n, and picSptDpbOutputDuDelay is the value of pic_spt_dpb_output_du_delay in the DU information SEI message associated with AU n, when present, or pic_spt_dpb_output_du_delay in the DU information SEI message associated with AU n, when there is no DU information SEI message associated with AU n or no DU information SEI message associated with AU n has pic_spt_dpb_output_du_delay. nThe value of pic_dpb_output_du_delay in the associated PTSEI message.

[0569] NOTE—When the syntax element pic_spt_dpb_output_du_delay is not present in any DU information SEI message associated with AU n, the value is inferred to be equal to pic_dpb_output_du_delay in the PT SEI message associated with AU n.

[0570] The output of the current screen is specified as follows:

[0571] -If PictureOutputFlag is equal to 1 and DpbOutputTime[n] is equal to CpbRemovalTime[n], output the current picture.

[0572] - Otherwise, if PictureOutputFlag is equal to 0, the current picture is not output but stored in the DPB according to the following clause.

[0573] - Otherwise (PictureOutputFlag is equal to 1, DpbOutputTime[n] is greater than CpbRemovalTime[n]), the current picture is output later and will be stored in the DPB (as specified below) and output at time DpbOutputTime[n], unless NoOutputOfPriorPicsFlag is equal to 1 to indicate not to output.

[0574] When outputting, the picture is cropped using the picture's conforming cropping window. When picture n is an output picture and is not the last picture in the output bitstream, the value of the variable DpbOutputInterval[n] is derived as follows:

[0575] DpbOutputInterval[n]=DpbOutputTime[nextPicInOutputOrder]-DpbOutputTime[n]

[0576] Where nextPicInOutputOrder is the picture that follows picture n in the output order and has PictureOutputFlag equal to 1.

[0577] The current decoded picture is stored in the DPB in an empty picture storage buffer, the DPB fullness is incremented by one, and the current picture is marked as "used for short-term reference".

[0578] NOTE—Unless more memory is available for storage of decoded pictures than required by the horizontal limit, the decoder shall start storing the decoded portion of the current picture into the DPB when the first slice is decoded and continue storing more decoded samples as the decoding process progresses.

[0579] In JVET-P2001, signaling the syntax elements pic_dpb_output_du_delay and pic_spt_dpb_output_du_delay is less than ideal. In particular, if DU-level HRD parameters are present (i.e., bp_decoding_unit_hrd_params_present_flag is equal to 1), the picture DPB output delay information (i.e., pic_dpb_output_du_delay) is always signaled in the picture timing SEI message. Additionally, if dpb_output_du_delay_present_flag is equal to 1, the picture DPB output delay information may be signaled in each of one or more DU information SEI messages in the syntax element pic_spt_dpb_output_du_delay. If the picture DPB output delay information is signaled in the DU information SEI message, the signaled values ​​should be the same. It is asserted that this way of signaling information about the picture DPB output delay is unnecessarily redundant and overly complex. According to the technology of this article, a simplified scheme for signaling picture DPB output delay information is proposed. In one example, according to the technology of this article, if there are DU-level HRD parameters, a signaling flag is sent in a buffering period SEI message (or picture timing SEI message) to control whether the DU-level picture DPB output delay information is signaled only in the picture timing SEI message or in the DU information SEI message. In addition, in one example, an additional flag is signaled in the picture timing SEI message (or in the buffering period SEI message) to indicate that when the DU-level picture DPB output delay information is signaled in the picture timing SEI message, it can be updated in the DU information SEI message. In one example, a signaling flag is sent in the buffering period SEI message (or picture timing SEI message) that specifies whether the DU-level picture DPB output delay information is signaled or inferred to be the same as the AU-level information.

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

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

[0582] A storage device may include any type of device or storage medium capable of storing data. The storage medium may include a tangible or non-transitory computer-readable medium. The computer-readable medium may include an optical disc, a flash memory, a magnetic memory, or any other suitable digital storage medium. In some examples, a memory device or portion thereof may be described as a non-volatile memory, and in other examples, portions of a memory device may be described as a volatile memory. Examples of volatile memory may include random access memory (RAM), dynamic random access memory (DRAM), and static random access memory (SRAM). Examples of non-volatile memory may include a magnetic hard disk, an optical disc, a floppy disk, a flash memory, or an electrically programmable memory (EPROM) or electrically erasable and programmable (EEPROM) memory. The storage device may include a memory card (e.g., a secure digital (SD) memory card), an internal / external hard drive, and / or an internal / external solid-state drive. Data may be stored on the storage device according to a defined file format.

[0583] Figure 4 is a conceptual diagram illustrating examples of components that may be included in a specific implementation of system 100. Figure 4 In the exemplary implementation shown, system 100 includes one or more computing devices 402A through 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 through 412N. Figure 4 The specific implementation shown in represents an example of a system that can be configured to allow digital media content (such as movies, live sporting events, etc.) and data and applications associated therewith and media presentations to be distributed to and accessed by multiple computing devices (such as computing devices 402A through 402N). Figure 4 In the example shown, computing devices 402A to 402N may 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 to 402N may be equipped for wired and / or wireless communication and may be configured to receive services via one or more data channels and may include televisions, including so-called smart TVs, set-top boxes, and digital video recorders. Additionally, computing devices 402A to 402N may include desktop computers, laptop computers, or tablet computers, game consoles, mobile devices (including, for example, "smart" phones, cellular phones, and personal gaming devices).

[0584] Television service network 404 is an example of a network configured to enable the distribution of digital media content, which may include television services. For example, television service network 404 may include a public over-the-air television network, a public or subscription-based satellite television service provider network, a public or subscription-based cable television provider network, and / or a cloud or internet service provider. It should be noted that while in some examples, television service network 404 may be primarily used to enable the provision of television services, television service network 404 may also enable the provision of other types of data and services based on any combination of the telecommunications protocols described herein. Furthermore, it should be noted that in some examples, television service network 404 may enable two-way communication between television service provider site 406 and one or more of computing devices 402A through 402N. Television service network 404 may include any combination of wireless and / or wired communication media. Television service network 404 may 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 sites. Television service network 404 may operate based on a combination of one or more telecommunications protocols. The telecommunication protocol may include proprietary aspects and / or may include standardized telecommunication protocols. Examples of standardized telecommunication protocols include the DVB standard, the ATSC standard, the ISDB standard, the DTMB standard, the DMB standard, the Data over Cable Service Interface Specification (DOCSIS) standard, the HbbTV standard, the W3C standard, and the UPnP standard.

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

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

[0587] Reference again Figure 4 , content provider sites 412A to 412N represent examples of sites that can provide multimedia content to television service provider site 406 and / or computing devices 402A to 402N. For example, a content provider site may 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 to 412N may be configured to provide multimedia content using an IP suite. For example, a content provider site may be configured to provide multimedia content to a receiver device using a real-time streaming protocol (RTSP), HTTP, or the like. Furthermore, content provider sites 412A to 412N may be configured to provide data, including hypertext-based content, to one or more of receiver devices 402A to 402N and / or television service provider site 406 via wide area network 408. Content provider sites 412A to 412N may include one or more web servers. The data provided by data provider sites 412A to 412N may be defined according to a data format.

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

[0589] The video encoder 500 can perform intra-frame prediction encoding and inter-frame prediction encoding of a picture area and thus can be referred to as a hybrid video encoder. Figure 5 In the example shown, the video encoder 500 receives a source video block. In some examples, the source video block may include picture areas that have been divided according to a coding structure. For example, the source video data may include macroblocks, CTUs, CBs, sub-partitions thereof, and / or other equivalent coding units. In some examples, the video encoder 500 may be configured to perform additional subdivisions of the source video block. It should be noted that the techniques described herein are generally applicable to video coding regardless of how the source video data is divided before and / or during encoding. Figure 5 In the example shown, the video encoder 500 includes an adder 502, a transform coefficient generator 504, a coefficient quantization unit 506, an inverse quantization and transform coefficient processing unit 508, an adder 510, an intra-frame prediction processing unit 512, an inter-frame prediction processing unit 514, a filter unit 516, and an entropy coding unit 518. Figure 5 As shown, video encoder 500 receives source video blocks and outputs a bitstream.

[0590] exist Figure 5In the illustrated example, the video encoder 500 can generate residual data by subtracting a predicted video block from a source video block. The selection of the predicted video block is described in detail below. Summer 502 represents a component configured to perform this subtraction operation. In one example, the subtraction of the video blocks 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 (e.g., four 8×8 transforms can be applied to a 16×16 array of residual values), to the residual block or a subpartition thereof to produce a set of residual transform coefficients. Transform coefficient generator 504 can be configured to perform any and all combinations of transforms included in the family of discrete triangular transforms, 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 coefficients. The degree of quantization can change the rate-distortion (i.e., the relationship between bit rate and video quality) of the encoded video data. The degree of quantization can be modified by adjusting the 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 may include any data used to determine the QP used to quantize a particular set of transform coefficients. Figure 5 As shown, the quantized transform coefficients (which may be referred to as level values) are output to the inverse quantization and transform coefficient processing unit 508. The inverse quantization and transform coefficient processing unit 508 may be configured to apply inverse quantization and inverse transform to generate reconstructed residual data. Figure 5 As shown, at summer 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 encoding quality of a given prediction, transform, and / or quantization. The video encoder 500 can be configured to perform multiple encoding passes (e.g., performing encoding while changing 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. In addition, the reconstructed video block can be stored and used as a reference for predicting subsequent blocks.

[0591] Reference again Figure 5, the intra-frame prediction processing unit 512 may be configured to select an intra-frame prediction mode for a video block to be encoded. The intra-frame prediction processing unit 512 may be configured to evaluate a frame and determine an intra-frame prediction mode for encoding a current block. As described above, possible intra-frame prediction modes may include a planar prediction mode, a DC prediction mode, and an angular prediction mode. Furthermore, it should be noted that in some examples, the prediction mode of the chrominance component may be inferred based on the prediction mode of the luma prediction mode. The intra-frame prediction processing unit 512 may select an intra-frame prediction mode after performing one or more encoding rounds. Furthermore, in one example, the intra-frame prediction processing unit 512 may select a prediction mode based on a rate-distortion analysis. As Figure 5 As shown, the intra-prediction processing unit 512 outputs intra-prediction data (e.g., syntax elements) to the entropy coding unit 518 and the transform coefficient generator 504. As described above, the transform performed on the residual data can be mode-dependent (e.g., a secondary transform matrix can be determined based on the prediction mode).

[0592] Reference again Figure 5 , the inter-frame prediction processing unit 514 may be configured to perform inter-frame prediction encoding for the current video block. The inter-frame prediction processing unit 514 may be configured to receive a source video block and calculate a motion vector for the PU of the video block. The motion vector may indicate the displacement of the prediction unit of the video block within the current video frame relative to the prediction block within the reference frame. Inter-frame prediction encoding may use one or more reference pictures. In addition, motion prediction may be unidirectional prediction (using one motion vector) or bidirectional prediction (using two motion vectors). The inter-frame prediction processing unit 514 may be configured to select a prediction block by calculating a pixel difference determined by, for example, the sum of absolute differences (SAD), the sum of squared differences (SSD), or other difference metrics. As described above, the motion vector may be determined and specified based on motion vector prediction. As described above, the inter-frame prediction processing unit 514 may be configured to perform motion vector prediction. The inter-frame prediction processing unit 514 may be configured to generate a prediction block using motion prediction data. For example, the inter-frame prediction processing unit 514 may locate a prediction video block within a frame buffer ( Figure 5 (not shown). 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 calculate sub-integer pixel values ​​for motion estimation. The inter-frame prediction processing unit 514 can output the motion prediction data of the calculated motion vector to the entropy coding unit 518.

[0593] like Figure 5As shown, the filter unit 516 receives the reconstructed video blocks and the encoding parameters and outputs the modified reconstructed video data. The 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 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 the modified reconstructed video block via the filter unit 216. The entropy coding unit 518 receives the 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 the scan. The entropy coding unit 518 can be configured to perform entropy coding according to one or more of the techniques described herein. As such, 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.

[0594] Reference again Figure 1 , the data encapsulator 107 can receive the encoded video data and generate a compliant bitstream according to a defined data structure, for example, a sequence of NAL units. A device that receives the compliant bitstream can reproduce the video data therefrom. In addition, as described above, sub-bitstream extraction can refer to the process by which a device that receives 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 conforming bitstream can be used instead of the term compliant bitstream. In one example, the data encapsulator 107 can be configured to generate syntax according to one or more techniques described herein. It should be noted that the data encapsulator 107 does not necessarily have to be located in the same physical device as the video encoder 106. For example, the 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.

[0595] As mentioned above, in JVET-P2001, signaling the syntax elements pic_dpb_output_du_delay and pic_spt_dpb_output_du_delay is less than ideal. As mentioned above, in one example, according to the techniques herein, if DU-level HRD parameters are present, a flag is signaled in the buffering period SEI message (or picture timing SEI message or some other location, such as a parameter set, such as a sequence parameter set) to control and specify whether DU-level picture DPB output delay information is signaled only in the picture timing SEI message or in the DU information SEI message. JVEDP2001 asserts that if it is desired to signal DU-level picture DPB output delay information in the DU information SEI message, then the DU-level picture DPB output delay value needs to be signaled in the picture timing SEI message even when it is omitted. On the other hand, when the DU-level picture DPB output delay information is known when the PT SEI message is created, it is unnecessary to signal an additional flag in each DU information SEI message. Table 11 shows an example of the buffering_period() syntax structure, Table 12 shows an example of the pic_timing() syntax structure, and Table 13 shows an example of the decoding_unit_info() syntax structure, where, if the DU-level HRD parameter is present, a signaling flag is sent in the buffering period SEI message to control whether the DU-level picture DPB output delay information is signaled only in the picture timing SEI message or in the DU information SEI message according to the technology of this document.

[0596]

[0597]

[0598] Table 11

[0599]

[0600]

[0601] Table 12

[0602]

[0603] Table 13

[0604] For Tables 11 to 13, the semantics may be based on the semantics provided above. In one example, the semantics of the syntax elements decoding_umt_dpb_du_params_in_pic_timing_sei_flag and pic_dpb_output_delay are based on the following:

[0605] decoding_unit_dpb_du_params_in_pic_timing_sei_flag equal to 1 specifies that DU-level picture DPB output delay information (i.e., syntax element pic_dpb_output_du_delay) is only present in the picture timing SEI message when bp_decoding_unit_hrd_params_present_flag is equal to 1. decoding_unit_dpb_du_params_in_pic_timing_sei_flag equal to 0 specifies that DU-level picture DPB output delay information (i.e., syntax element pic_spt_dpb_output_du_delay) is present (or may be present) in the DU information SEI message when bp_decoding_unit_hrd_params_present_flag is equal to 1. When the decoding_unit_dpb_du_params_in_pic_timing_sei_flag syntax element is not present, it is inferred to be 0.

[0606] It should be noted that decoding_unit_dpb_du_params_in_pic_timing_sei_flag may be renamed decoding_unit_dpb_params_in_pic_timing_sei_flag or may use some other name.

[0607] pic_dpb_output_delay is used to calculate the DPB output time of the picture. It specifies how many clock ticks to wait before outputting the decoded picture from the DPB after removing the AU from the CPB.

[0608] NOTE - When a picture is still marked as "used for short-term reference" or "used for long-term reference", the picture is not removed from the DPB at its output time.

[0609] The length of dpb_delay_delay is dpb_output_delay_length_minus1+1 bits.

[0610] When max_dec_pic_buffering_minus1[Htid] is equal to 0, the value of pic_dpb_output_delay shall be equal to 0.

[0611] The output time derived from dpb_output_delay of any picture output by the decoder that complies with the output timing shall precede the output time derived from dpb_output_delay of all pictures in any subsequent CVS in decoding order.

[0612] The picture output order established by the value of this syntax element shall be the same as the order established by the value of PicOrderCntVal.

[0613] For pictures that are not output by the "scramble" process because they precede in decoding order a CLVSS picture with no_output_of_prior_pics_flag equal to 1 or inferred to be 1, the output time derived from dpb_output_delay shall increase with increasing value of PicOrderCntVal with respect to all pictures within the same CVS.

[0614] Additionally, the following may apply to the DU information SEI message syntax and semantics:

[0615] - The syntax elements bp_decoding_unit_hrd_params_present_fla, decoding_unit_cpb_params_in_pic_timing_sei_flag, and dpb_output_delay_du_length_minus1 are found in the BP SEI message applicable to at least one of the operation points to which the DU information SEI message applies.

[0616] A bitstream (or a portion thereof) refers to a bitstream subset (or a portion thereof) associated with any of the operation points to which the DU information SEI message applies.

[0617] The presence of the DU information SEI message for an operation point is specified as follows:

[0618] If CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1 and decoding_unit_cpb_params_in_pic_timing_sei_flag is equal to 0, and / or decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 0, then one or more DU information SEI messages applicable to the operation point shall be associated with each DU in the CVS.

[0619] Otherwise, in the CVS, there shall be no DU associated with the DU information SEI message applicable to the operation point.

[0620] In an example:

[0621] When the DU information SEI message is present, at least one of decoding_unit_cpb_params_in_pic_timing_sei_flag or decoding_unit_dpb_du_params_in_pic_timing_sei_flag should be equal to 0.

[0622] In the variant:

[0623] The presence of the DU information SEI message for an operation point is specified as follows:

[0624] If CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1 and decoding_unit_cpb_params_in_pic_timing_sei_flag is equal to 0, and / or decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 0, then one or more DU information SEI messages applicable to the operation point shall be associated with each DU in the CVS.

[0625] Otherwise, if CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1, decoding_unit_cpb_params_in_pic_timing_sei_flag is equal to 1, and decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 1, then one or more DU information SEI messages applicable to the operation point may or may not be associated with each DU in the CVS.

[0626] Otherwise (CpbDpbDelaysPresentFlag is equal to 0 or bp_decoding_unit_hrd_params_present_flag is equal to 0), in the CVS, there shall be no DU associated with the DU information SEI message applicable to the operation point.

[0627] dpb_output_du_delay_present_flag equal to 1 specifies that the pic_spt_dpb_output_du_delay syntax element is present in the DU information SEI message. dpb_output_du_delay_present_flag equal to 0 specifies that the pic_spt_dpb_output_du_delay syntax element is not present in the DU information SEI message.

[0628] In one example, when not present, dpb_output_du_delay_present_flag is inferred to be equal to 0.

[0629] pic_spt_dpb_output_du_delay is used to calculate the DPB output time of a picture when DecodingUnitHrdFlag is equal to 1 and decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 0. It specifies how many sub-clock ticks to wait before outputting the decoded picture from the DPB after the last DU in an AU is removed from the CPB.

[0630] In an example:

[0631] When not present, the value of pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_du_delay.The length of the syntax element pic_spt_dpb_output_du_delay is given in bits by dpb_output_delay_du_length_minus1+1.

[0632] Bitstream conformance requires that all DU information SEI messages associated with the same AU, applied to the same operation point and with (in a variant without removing the string) decoding_unit_dpb_du_params_in_pic_timing_sei_flag equal to 0 shall have the same pic_spt_dpb_output_du_delay value.

[0633] The output time derived from pic_spt_dpb_output_du_delay of any picture output from the decoder that complies with the output timing shall precede the output time derived from pic_spt_dpb_output_du_delay of all pictures in any subsequent CVS in decoding order.

[0634] The picture output order established by the value of this syntax element shall be the same as the order established by the value of PicOrderCntVal.

[0635] For pictures that are not output by the "scramble" process because they precede in decoding order a CLVSS picture with no_output_of_prior_pics_flag equal to 1 or inferred to be 1, the output time derived from pic_spt_dpb_output_du_delay shall increase with increasing value of PicOrderCntVal with respect to all pictures within the same CVS.

[0636] For any two pictures in CVS, the difference between the output times of the two pictures when DecodingUnitHrdFlag is equal to 1 shall be the same as the same difference when DecodingUnitHrdFlag is equal to 0.

[0637] Furthermore, according to the techniques herein, the following process for picture output may be used to decode a picture buffer:

[0638] The process specified in this clause occurs immediately at the CPB removal time CpbRemovalTime[n] of AU n.

[0639] When picture n has PictureOutputFlag equal to 1, its DPB output time DpbOutputTime[n] is derived as follows, where the variable firstPicInBufferingPeriodFlag is equal to 1 when AU n is the first AU of the BP and equal to 0 otherwise:

[0640]

[0641] , where picDpbOutputDelay is the value of pic_dpb_output_delay, and picDpbOutputDelta is the value of picDpbOutputDelta[Htid] derived from cpb_removal_delay_minus1[Htid] and cpb_removal_delay_delta_idx[Htid]] in the PT SEI message associated with AU n, and picSptDpbOutputDuDelay is the value of picDpbOutputDuDelay when decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 0. The value of pic_spt_dpb_output_du_delay in the DU information SEI message associated with AUn, or the value of pic_dpb_output_du_delay in the PT SEI message associated with AUn when decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 1.

[0642] NOTE—When the syntax element pic_spt_dpb_output_du_delay is not present in any DU information SEI message associated with AU n, the value is inferred to be equal to pic_dpb_output_du_delay in the PT SEI message associated with AU n.

[0643] The output of the current screen is specified as follows:

[0644] -If PictureOutputFlag is equal to 1 and DpbOutputTime[n] is equal to CpbRemovalTime[n], output the current picture.

[0645] - Otherwise, if PictureOutputFlag is equal to 0, the current picture is not output but stored in the DPB as specified above.

[0646] - Otherwise (PictureOutputFlag is equal to 1, DpbOutputTime[n] is greater than CpbRemovalTime[n]), the current picture is output later and will be stored in the DPB (as specified above) and output at time DpbOutputTime[n], unless NoOutputOfPriorPicsFlag is equal to 1 to indicate not to output.

[0647] When outputting, the picture is cropped using the picture's conforming cropping window. When picture n is an output picture and is not the last picture in the output bitstream, the value of the variable DpbOutputInterval[n] is derived as follows:

[0648] DpbOutputInterval[n]=DpbOutputTime[nextPicInOutputOrder]–DpbOutputTime[n]

[0649] Where nextPicInOutputOrder is the picture that follows picture n in the output order and has PictureOutputFlag equal to 1.

[0650] For Tables 11 to 13, it should be noted that in some examples, the syntax element decoding_unit_cpb_du_params_in_pic_timing_sei_flag may be referred to as du_cpb_params_in_pic_timing_sei_flag and have the following semantics based on the semantics provided above for Table 8. Furthermore, the syntax element decoding_unit_dpb_du_params_in_pic_timing_sei_flag may be referred to as du_dpb_pararas_in_pic_timing_sei_flag and have semantics based on:

[0651] du_dpb_params_in_pic_timing_sei_flag equal to 1 specifies that the DU-level DPB output delay parameters are present in the PT SEI message and not in the DU information SEI message. du_dpb_params_in_pic_timing_sei_flag equal to 0 specifies that the DU-level DPB output delay parameters are present in the DU information SEI message and not in the PT SEI message. When the du_dpb_params_in_pic_timing_sei_flag syntax element is not present, it is inferred to be equal to 0.

[0652] It should be noted that for the example shown in Table 13, in some cases, the syntax element dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] may not need to be signaled, but its value can be inferred. This is because when the corresponding dui_sublayer_delays_present_flag[i] is equal to 0, the syntax element du_spt_cpb_removal_delay_increment[bp_max_sublayers_minus1] is used to infer du_spt_cpb_removal_delay_increment[i], i in the range of 0 to bp_max_sublayers_minus1-1. Therefore, in one example, according to the techniques herein, an example of a decoding_unit_info( ) syntax structure can be as provided in Table 13A, where dui_sublayer_delays_present_flag[i] is conditionally present and, when not present, is inferred based on bp_max_sublayers_minus1.

[0653]

[0654] Table 13A

[0655] For Table 13A, the semantics may be based on the semantics provided above. In one example, the semantics of the syntax elements dui_sublayer_delays_present_flag[i] and du_spt_cpb_removal_delay_increment[i] are based on the following:

[0656] dui_sublayer_delays_present_flag[i] equal to 1 specifies that du_spt_cpb_removal_delay_increment[i] is present for the sublayer with TemporalId equal to i. dui_sublayer_delays_present_flag[i] equal to 0 specifies that du_spt_cpb_removal_delay_increment[i] is not present for the sublayer with TemporalId equal to i. When du_cpb-params_in_pic_timing_sei_flag is equal to 0, the value of dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] is inferred to be equal to 1. Otherwise, when not present, the value of dui_sublayer_delays_present_flag[i] is inferred to be equal to 0.

[0657] du_spt_cpb_removal_delay_increment[i] specifies the nominal CPB time of the last DU in decoding order in the current AU and the duration (in clock sub-ticks) between the DUs associated with the DU information SEI message when Htid is equal to i. As specified, this value is also used to calculate the earliest possible arrival time of the DU data in the CPB of the HSS. The length of this syntax element is du_cpb_removal_delay_increment_length_minus1+1. When the DU associated with the DU information SEI message is the last DU in the current AU, the value of du_spt_cpb_removal_delay_increment[i] shall be equal to 0. For any value of i less than bp_max_sublayers_minus1, when du_spt_cpb_removal_delay_increment[i] is not present, its value is inferred to be equal to du_spt_cpb_removal_delay_increment[bp_max_sublayers_minus1].

[0658] In another example, the flag dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] may be signaled, and the following conformance constraint may be required: the value of dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] shall be equal to 1.

[0659] In another example, the constraint may be specified as follows:

[0660] When du_cpb_params_in_pic_timing_sei_flag is equal to 0, the value of dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] shall be equal to 1.

[0661] Or as follows:

[0662] When present, the value of dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] shall be equal to 1. This requires that the syntax element dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] shall be signaled when du_cpb_params_in_pic_timing_sei_flag is equal to 0. Therefore, dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] shall be signaled when decoding unit CPB parameters are signaled in the decoding unit information SEI message.

[0663] In the variant, the condition

[0664] if(i<bp_max_sublayers_minus1) dui_sublayer_delays_present_flag[i] u(1)

[0665] Can be written as

[0666] if(i!=bp_max_sublayers_minus1) dui_sublayer_delays_present_flag[i] u(1)

[0667] In another variation, the conditions may be written as provided in Table 13B.

[0668]

[0669] Table 13B

[0670] For Table 13B, the semantics may be based on the semantics provided above. In one example, the semantics of the syntax element dui_sublayer_delays_present_flag[i] is based on the following:

[0671] dui_sublayer_delays_present_flag[i] equal to 1 specifies that du_spt_cpb_removal_delay_increment[i] is present for the sublayer with TemporalId equal to i. dui_sublayer_delays_present_flag[i] equal to 0 specifies that du_spt_cpb_removal_delay_increment[i] is not present for the sublayer with TemporalId equal to i. When du_cpb_params_in_pic_timing_sei_flag is equal to 0, the value of dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] is inferred to be equal to 1. Otherwise, when not present, the value of dui_sublayer_delays_present_flag[i] is inferred to be equal to 0.

[0672] In another example, the semantics in this case might be as follows:

[0673] dui_sublayer_delays_present_flag[i] equal to 1 specifies that du_spt_cpb_removal_delay_increment[i] is present for the sublayer with TemporalId equal to i. dui_sublayer_delays_present_flag[i] equal to 0 specifies that du_spt_cpb_removal_delay_increment[i] is not present for the sublayer with TemporalId equal to i. When not present, the value of dui_sublayer_delays_present_flag[i] is inferred to be equal to 0.

[0674] Note that since the inference of du_spt_cpb_removal_delay_increment[i] when i is less than bp_max_sublayers_minus1 uses the value of du_spt_cpb_removal_delay_increment[bp_max_sublayers_minus1], in one example the for loop signaling the syntax elements dui_sublayer_delays_present_flag[i] and du_spt_cpb_removal_delay_increment[i] can be sent in the reverse order. This will allow the value of du_spt_cpb_removal_delay_increment[bp_max_sublayers_minus1] to be determined before other values ​​of du_spt_cpb_removal_delay_increment[i] for i less than bp_max_sublayers_minus1 (which may or may not be present), which it needs to use for its inference (if one or more of them are not present based on the value of dui_sublayer_delays_present_flag[i]). Thus, in one example, according to the techniques herein, an example of a dccoding_unit_info() syntax structure may be as provided in Table 13C.

[0675]

[0676] Table 13C

[0677] For Table 13C, the semantics may be based on the semantics provided above. In one example, the semantics of the syntax element dui_sublayer_delays_present_flag[i] is based on the following:

[0678] dui_sublayer_delays_present_flag[i] equal to 1 specifies that du_spt_cpb_removal_delay_increment[i] is present for the sublayer with TemporalId equal to i. dui_sublayer_delays_present_flag[i] equal to 0 specifies that du_spt_cpb_removal_delay_increment[i] is not present for the sublayer with TemporalId equal to i. When du_cpb_params_in_pic_timing_sei_flag is equal to 0, the value of dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] shall be equal to 1. When not present, the value of dui_sublayer_delays_present_flag[i] is inferred to be equal to 0.

[0679] In one example, according to the techniques herein, an example of a decoding_unit_info() syntax structure may be as provided in Table 13D.

[0680]

[0681] Table 13D

[0682] For Table 13D, the semantics may be based on the semantics provided above. Or in another example, the semantics of dui_sublayer_delays_present_flag[i] in this case may be as follows:

[0683] dui_sublayer_delays_present_flag[i] equal to 1 specifies that du_spt_cpb_removal_delay_increment[i] is present for the sublayer with TemporalId equal to i. dui_sublayer_delays_present_flag[i] equal to 0 specifies that du_spt_cpb_removal_delay_increment[i] is not present for the sublayer with TemporalId equal to i. When du_cpb_params_in_pic_timing_sei_flag is equal to 0, the value of dui_sublayer_delays_present_flag[bp_max_sublayers_minus1] is inferred to be equal to 1. Otherwise, when not present, the value of dui_sublayer_delays_present_flag[i] is inferred to be equal to 0.

[0684] In one example, according to the techniques herein, an example of a decoding_unit_info() syntax structure may be as provided in Table 13E.

[0685]

[0686] Table 13E

[0687] For Table 13E, the semantics may be based on the semantics provided above.

[0688] In one example, the condition “when du_cpb_params_in_pic_timing_sei_flag is equal to 0” may be removed from one or more of the above inferences.

[0689] It should be noted that, in one example, according to the techniques herein,

[0690] When DecodingUnitHrdFlag is equal to 1, the following applies:

[0691] -The variable duCpbRemovalDelayInc is derived as follows:

[0692] If du_cpb_params_in_pic_timing_sei_flag is equal to 0, duCpbRemovalDelayInc is set equal to the value of du_spt_cpb_removal_delay_increment[Htid] in the selected DU information SEI message associated with DU m.

[0693] Otherwise, for DU m in the selected PT SEI message associated with AU n, if du_common_cpb_removal_delay_flag is equal to 0, duCpbRemovalDelayInc is set equal to the value of du_cpb_removal_delay_increment_minus1[i][Htid]+1, where the value of i is 0 for the first num_nalus_in_du_minus1[0]+1 consecutive NAL units in the AU containing DU m, 1 for the subsequent num_nalus_in_du_minus1[1]+1 NAL units in the same AU, 2 for the subsequent num_nalus_in_du_minus1[2]+1 NAL units in the same AU, and so on.

[0694] - Otherwise, duCpbRemovalDelayInc is set equal to the value of du_common_cpb_removal_delay_increment_minus1[Htid]+1 in the PTSEI message associated with AU n, as specified in the selection.

[0695] Table 14 shows an example of the pic_timing() syntax structure, where, if the DU-level HRD parameters are present, a signaling flag is sent in the buffering period SEI message according to the techniques herein to control whether DU-level picture DPB output delay information is signaled only in the picture timing SEI message or in the DU information SEI message.

[0696]

[0697]

[0698] Table 14

[0699] For Table 14, the semantics may be based on the semantics provided above.

[0700] In addition to the signaling provided above, in one example, an additional flag is signaled in the picture timing SEI message (or in the buffering period SEI message) to indicate that when DU-level picture DPB output delay information is signaled in the picture timing SEI message, it can be updated in the DU information SEI message. Table 15 shows an example of the pic_timing() syntax structure, and Table 16 shows an example of the decoding_unit_info() syntax structure, where, according to the techniques herein, an additional flag is signaled in the picture timing SEI message to indicate that when DU-level picture DPB output delay information is signaled in the picture timing SEI message, it can be updated in the DU information SEI message.

[0701]

[0702]

[0703] Table 15

[0704]

[0705] Table 16

[0706] For Table 15 and Table 16, the semantics may be based on the semantics provided above. In one example, the semantics of the syntax element decoding_unit_dpb_du_params_in_update_du_sei_flag is based on the following:

[0707] decoding_umt_dpb_du_params_in_update_du_sei_flag equal to 1 specifies that DU-level picture DPB output information (dpb_output_du_delay_present_flag, if pic_spt_dpb_output_du_delay is present) may be signaled in the DU information SEI message. decoding_unit_dpb_du_params_in_update_du_sei_flag equal to 0 specifies that DU-level picture DPB output information (dpb_output_du_delay_present_flag and pic_spt_dpb_output_du_delay if present) is not signaled in the DU information SEI message and is (or may be) only present in the picture timing SEI message.

[0708] When bp_decoding_unit_hrd_params_present_flag is equal to 1, and when decodmg_unit_dpb_du_params_in_update_du_sei_flag is not present:

[0709] If decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 0, decoding_unit_dpb_du_params_in_update_du_sei_flag is inferred to be equal to 1.

[0710] When bp_decoding_unit_hrd_params_present_flag is equal to 0, and when decoding_unit_dpb_du_params_in_update_du_sei_flag is not present: decoding_unit_dpb_du_params_in_update_du_sei_flag is inferred to be equal to 1. (or 0)

[0711] In another example: when not present, decoding_unit_dpb_du_params_in_update_du_sei_flag is inferred to be equal to 0.

[0712] Additionally, the following may apply to the DU information SEI message syntax and semantics:

[0713] The syntax elements bp_decoding_unit_hrd_params_present_flag, decoding_unit_cpb_params_in_pictimingseiflag, and dpb_output_delay_du_length_minus1 are found in the BP SEI message applicable to at least one of the operation points to which the DU information SEI message applies.

[0714] A bitstream (or a portion thereof) refers to a bitstream subset (or a portion thereof) associated with any of the operation points to which the DU information SEI message applies.

[0715] The presence of the DU information SEI message for an operation point is specified as follows:

[0716] - If CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1 and decoding_unit_cpb_params_in_pic_timing__sei_flag is equal to 0, and / or decoding_unit_dpb_du_paranis_in_pic_timing_sei_flag is equal to 0, or decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 1 and decoding_unit_dpb_du_pararns_in_update_du_sei_flag is equal to 1, one or more DU information SEI messages applicable to the operation point shall be associated with each DU in the CVS.

[0717] Otherwise, in the CVS, there shall be no DU associated with the DU information SEI message applicable to the operation point.

[0718] In an example:

[0719] When the DU information SEI message exists, decoding_unit_cpb_params_in_pic_timing_sei_flag or

[0720] At least one of decoding_unit_dpb_du_params_in_pic_timing_sei_flag shall be equal to 0, or decoding_unit_dpb_du_params_in_update_du_sei_flag shall be equal to 1.

[0721] In the variant example:

[0722] The presence of the DU information SEI message for an operation point is specified as follows:

[0723] - If CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1 and decoding_unit_cpb_params_in_pic_timing__sei_flag is equal to 0, and / or decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 0, or decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 1 and decoding_unit_dpb_du_params_in_update_du_sei_flag is equal to 1, one or more DU information SEI messages applicable to the operation point shall be associated with each DU in the CVS.

[0724] Otherwise, if CpbDpbDelaysPresentFlag is equal to 1, bp_decoding_unit_hrd_params_present_flag is equal to 1, and decoding_unit_cpb_params_in_pictiming_sei_flag is equal to 1, and decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 1, then one or more DU information SEI messages applicable to the operation point may or may not be associated with each DU in the CVS.

[0725] Otherwise (CpbDpbDelaysPresentFlag is equal to 0 or bp_decoding_unit_hrd_params_present_flag is equal to 0), in the CVS, there shall be no DU associated with the DU information SEI message applicable to the operation point.

[0726] dpb_output_du_delay_present_flag equal to 1 specifies that the pic_spt_dpb_putput_du_delay syntax element is present in the DU information SEI message. dpb_output_du_delay_present_flag equal to 0 specifies that the pic_spt_dpb_output_du_delay syntax element is not present in the DU information SEI message.

[0727] In one example, when not present, dpb_output_du_delay_present_flag is inferred to be equal to 0.

[0728] pic_spt_dpb_output_du_delay is used to calculate the DPB output time of a picture when DecodingUnitHrdFlag is equal to 1 and decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 0 or decoding_unit_dpb_du_params_in_update_du_sei_flag is equal to 1. It specifies how many sub-clock ticks to wait before outputting the decoded picture from the DPB after the last DU in an AU is removed from the CPB.

[0729] In an example:

[0730] When not present, the value of pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_outpuUdu_delay.The length of the syntax element pic_spt_dpb_output_du_delay is given in bits by dpb_output_delay_du_length_minus1+1.

[0731] Bitstream conformance requires that all DU information SEI messages associated with the same AU, applied to the same operation point and having (in a variant without removing the string) decoding_unit_dpb_du_params_in_pic_timing_sei_flag equal to 0 or decoding_unit_dpb_du_params_in_update_du_sei_flag equal to 1 shall have the same pic_spt_dpb_output_du_delay value.

[0732] The output time derived from pic_spt_dpb_output_du_delay of any picture output from the decoder that complies with the output timing shall precede the output time derived from pic_spt_dpb_output_du_delay of all pictures in any subsequent CVS in decoding order.

[0733] The picture output order established by the value of this syntax element shall be the same as the order established by the value of PicOrderCntVal.

[0734] For pictures that are not output by the "scramble" process because they precede in decoding order a CLVSS picture with no_output_of_prior_pics_flag equal to 1 or inferred to be 1, the output time derived from pic_spt_dpb_output_du_delay shall increase with increasing value of PicOrderCntVal with respect to all pictures within the same CVS.

[0735] For any two pictures in CVS, the difference between the output times of the two pictures when DecodingUnitHrdFlag is equal to 1 shall be the same as the same difference when DecodingUnitHrdFlag is equal to 0.

[0736] Furthermore, according to the techniques herein, the following process for picture output may be used to decode a picture buffer:

[0737] The process specified in this clause occurs immediately at the CPB removal time CpbRemovalTime[n] of AU n.

[0738] When picture n has PictureOutputFlag equal to 1, its DPB output time DpbOutputTime[n] is derived as follows, where the variable firstPicInBufferingPeriodFlag is equal to 1 when AU n is the first AU of the BP and equal to 0 otherwise:

[0739]

[0740] , where picDpbOutputDelay is the value of pic_dpb_output_delay, and picDpbOutputDelta is the value of picDpbOutputDelta[Htid] derived from cpb_removal_delay_minus1[Htid] and cpb_removal_delay_delta_idx[Htid]] in the PT SEI message associated with AU n, and picSptDpbOutputDuDelay is the value of picDpbOutputDelta[Htid] derived from cpb_removal_delay_minus1[Htid] and cpb_removal_delay_delta_idx[Htid]] in the PT SEI message associated with AU n, and picSptDpbOutputDuDelay is the value of picDpbOutputDelta[Htid] derived from cpb_removal_delay_minus1[Htid] and cpb_removal_delay_delta_idx[Htid]] in the PT SEI message associated with AU n. The value of pic_spt_dpb_output_du_delay in the DU information SEI message associated with AU n, or the value of pic_dpb_output_du_delay in the PT SEI message associated with AU n when decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 1 and decoding_unit_dpb_du_params_in_update_du_sei_flag is equal to 0.

[0741] NOTE—When the syntax element pic_spt_dpb_output_du_delay is not present in any DU information SEI message associated with AU n, the value is inferred to be equal to pic_dpb_output_du_delay in the PT SEI message associated with AU n.

[0742] The output of the current screen is specified as follows:

[0743] -If PictureOutputFlag is equal to 1 and DpbOutputTime[n] is equal to CpbRemovalTime[n], output the current picture.

[0744] - Otherwise, if PictureOutputFlag is equal to 0, the current picture is not output but stored in the DPB as specified above.

[0745] - Otherwise (PictureOutputFlag is equal to 1, DpbOutputTime[n] is greater than CpbRemovalTime[n]), the current picture is output later and will be stored in the DPB (as specified above) and output at time DpbOutputTime[n], unless NoOutputOfPriorPicsFlag is equal to 1 to indicate not to output.

[0746] When outputting, the picture is cropped using the picture's conforming cropping window. When picture n is an output picture and is not the last picture in the output bitstream, the value of the variable DpbOutputInterval[n] is derived as follows:

[0747] DpbOutputInterval[n]=DpbOutputTime[nextPidnOutputOrder]-DpbOutputTime[n]

[0748] Where nextPicInOutputOrder is the picture that follows picture n in the output order and has PictureOutputFlag equal to 1.

[0749] In another example:

[0750] Instead of using the new flag decoding_unit_dpb_du_params_in_pic_timing_sei_flag, for the proposed conditional signaling, the flag decoding_unit_cpb_params_in_pic_timing_sei_flag may be used. In this case, the flag may be referred to as decoding_unit_cpb_params_in_pic_timing_sei_flag.

[0751] In another example:

[0752] Bitstream compliance may require that when decoding_unit_cpb_params_in_pic_timing_sei_flag is equal to 1, decoding_unit_dpb_du_params_in_pic_timing_sei_flag shall be equal to 1. In another example, bitstream compliance may require that when decoding_unit_dpb_du_params_in_pic_timing_sei_flag is equal to 1, decoding_unit_cpb_params_in_pic_timing_sei_flag shall be equal to 1.

[0753] It should be noted that in the exemplary syntax shown in Table 15, the flag decoding_unit_dpb_du_params_in_update_du_sei_flag is used together with the syntax element decoding_unit_dpb_du_params_in_pic_timing_sei_flag signaled in the buffering period SEI message. However, in other examples, the flag may also be used together with the decoding_unit_dpb_du_params_in_pic_timing_sei_flag flag signaled in the picture timing SEI message.

[0754] As described above, in one example, according to the techniques herein, a signaling flag may be sent in a buffering period SEI message (or picture timing SEI message) that specifies whether DU-level picture DPB output delay information is signaled or inferred to be the same as AU-level information. Table 17 shows an example of a relevant portion of the buffering_period() syntax structure according to the techniques herein, where the flag in the buffering period SEI message specifies whether DU-level picture DPB output delay information is signaled or inferred to be the same as AU-level information.

[0755]

[0756] Table 17

[0757] For Table 17, the semantics may be based on the semantics provided above. In one example, the semantics of the syntax element decoding_unit_dpb_du_info_signalled_flag is based on the following:

[0758] decoding_unit_dpb_du_info_signalled_flag equal to 1 specifies that DU-level picture DPB output information (i.e., the pic_spt_dpb_output_du_delay syntax element in the DU information SEI message and / or the pt_pic_spt_dpb_output_du_delay syntax element in the picture timing SEI message) is present. decoding_unit_dpb_du_info_signalled_flag equal to 0 specifies that the DU-level picture DPB output information (i.e., the pic_spt_dpb_output_du_delay syntax element in the DU information SEI message and / or the pt_pic_spt_dpb_output_du_delay syntax element in the picture timing SEI message) is not present. When decoding_unit_dpb_du_info_signalled_flag is equal to 0, the DU-level picture DPB output information is inferred to be the same as the AU-level picture DPB output information (eg, pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay, and / or pt_pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay).

[0759] or in one example,

[0760] decoding_unit_dpb_du_info_signalled_flag equal to 1 specifies that DU-level picture DPB output information (i.e., the pic_spt_dpb_output_du_delay syntax element in the DU information SEI message and / or the pt_pic_spt_dpb_output_du_delay syntax element in the picture timing SEI message, or the pic_dpb_output_du_delay syntax element in the picture timing SEI message) is present. decoding_unit_dpb_du_info_signalled_flag equal to 0 specifies that the DU-level picture DPB output information (i.e., the pic_spt_dpb_output_du_delay syntax element in the DU information SEI message and / or the pt_pic_spt_dpb_output_du_delay syntax element in the picture timing SEI message, or the pic_dpb_output_du_delay syntax element in the picture timing SEI message) is not present. When decoding_unit_dpb_du_info_signalled_flag is equal to 0, the DU level picture DPB output information is inferred to be the same as the AU level picture DPB output information (e.g., pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay, and / or pt_pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay, and / or pic_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay).

[0761] Table 18 shows a decoding unit syntax structure that can be used in conjunction with the syntax provided in Table 17 according to the techniques herein.

[0762]

[0763] Table 18

[0764] For Table 18, the semantics may be based on the semantics provided above.

[0765] Table 19 shows an example of the relevant portion of the buffering_period() syntax structure according to the techniques herein, where a flag in the buffering period SEI message specifies whether DU-level picture DPB output delay information is signaled or inferred to be the same as the AU-level information.

[0766]

[0767] Table 19

[0768] For Table 19, the semantics may be based on the semantics provided above. In one example, the semantics of the syntax element decoding_unit_dpb_du_info_signalled_flag is based on the following:

[0769] decoding_unit_dpb_du_info_signalled_flag equal to 1 specifies that DU-level picture DPB output information (i.e., decoding_unit_dpb_du_params_in_pic_timing_sei_flag in the buffering period SEI message and / or pic_spt_dpb_output_du_delay syntax element in the DU information SEI message and / or pic_dpb_output_du_delay syntax element in the picture timing SEI message) is present. decoding_unit_dpb_du_info_signalled_flag equal to 0 specifies that DU-level picture DPB output information (i.e., decoding_unit_dpb_du_params_in_pic_timing_sei_flag in the buffering period SEI message and / or pic_spt_dpb_output_du_delay syntax element in the DU information SEI message and / or pic_dpb_putput_du_delay syntax element in the picture timing SEI message) is not present. When decoding_unit_dpb_du_info_signalled_flag is equal to 0, the DU-level picture DPB output information is inferred to be the same as the AU-level picture DPB output information (eg, pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay, and / or pt_pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay).

[0770] In one example, when not present, the value of decoding_unit_dpb_du_params_in_pic_timing_sei_flag is inferred to be equal to 1.

[0771] In one example, when not present, decoding_unit_dpb_du_params_in_pic_timing_sei_flag is inferred to be equal to 0.

[0772] Table 20 shows a picture timing syntax structure according to the techniques herein, and Table 21 shows a decoding unit syntax structure that can be used in conjunction with the syntax provided in Table 19.

[0773]

[0774]

[0775] Table 20

[0776]

[0777] Table 21

[0778] For Table 20 and Table 21, the semantics may be based on the semantics provided above and the following semantic rules:

[0779] In an example:

[0780] When not present and decoding_unit_dpb_du_info_signalled_flag is equal to 0, pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay.

[0781] In another example:

[0782] When decoding_unit_dpb_du_info_signalled_flag is equal to 0, pic_spt_dpb_output_du_delay is inferred to be equal to pic_dpb_output_delay.

[0783] As mentioned above, JVET-P2001 provides a picture output process for a decoded picture buffer. In addition, JVET-P2001 provides the following for determining the removal delay of an encoded picture buffer:

[0784] If DecodingUnitHrdFlag is equal to 0, decodingUnitParamsFlag is set equal to 0 and the procedures specified in the remainder of this clause are called to derive the initial and final CPB arrival times for AU n, treating the DU as an AU.

[0785] Otherwise (DecodingUnitHrdFlag is equal to 1), first call the procedure specified in the remainder of this clause with the variable DecodingUnitParamsFlag set to 0 and the DU considered to be the AU to derive the initial and final CPB arrival times of AU n, then call the procedure specified in the remainder of this clause with the variable decodingUnitParamsFlag set to 1 and the DU considered to be a subset of the AU to derive the initial and final CPB arrival times of the DUs in AU n. Call the procedure specified in the remainder of this clause to derive the initial and final CPB arrival times of AU n.

[0786] Variables InitCpbRemovalDelay[Htid][ScIdx] and

[0787] InitCpbRemovalDelayOffset[Htid][ScIdx] is derived as follows:

[0788] - If one or more of the following conditions are true, then InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, of AU 1 when NalHrdModeFlag is equal to 1 minus the values ​​of the PT SEI message syntax elements cpb_alt_initial_removal_delay_delta and cpb_alt_initial_removal_offset_delta, respectively, of AU 1 when NalHrdModeFlag is equal to 0; The BP SEI message containing the syntax elements is selected as specified below:

[0789] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0790] -DefaultInitCpbParamsFlag is equal to 0.

[0791] Otherwise, if the value of decodingUnitParamsFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_alt_cpb_removal_delay[Htid][ScIdx] and nal_nitial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_alt_cpb_removal_delay[Htid][ScIdx] and vcl_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0792] Otherwise (DecodingUnitHrdFlag is equal to 0), InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0793] When the BP SEI message associated with AU 0 has cpb_alt_timing_info_present_flag equal to 1, any of the following applies to selecting the initial CPB removal delay and delay offset:

[0794] - If NalHrdModeFlag is equal to 1, the default initial CPB removal delay and delay offset represented by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. - Otherwise, the default initial CPB removal delay and delay offset represented by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. The variable DefaultInitCpbParamsFlag is set to equal 1.

[0795] - If NalHrdModeFlag is equal to 1, the alternative initial CPB removal delay and delay offset denoted by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU that follows AU 0 in decoding order. Otherwise, the alternative initial CPB removal delay and delay offset denoted by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU following AU 0 in decoding order. The variable DefaultInitCpbParamsFlag is set equal to 0, and one of the following applies:

[0796] - The RASL AU associated with AU 0 is discarded from BitstreamToDecode, and the remaining bitstream is allocated to BitstreamToDecode.

[0797] - Discard all AUs following AU 0 in decoding order up to the AU associated with the DRAP indication SEI message from BitstreamToDecode and assign the remaining bitstream to BitstreamToDecode.

[0798] With reference to Table 8, it should be noted that in JVET-P2001, the initial buffering delay parameters can be different for VCL HRD and NAL HRD. In addition, with reference to Table 9, JVET-P2001 provides a set of alternative buffering delay parameters to be signaled via the picture timing SEI as initial CPB removal delay offsets (i.e., cpb_alt_initial_cpb_removal_delay_delta[i], and cpb_alt_initial_cpb_removal_offset_delta[i]). However, in the picture timing SEI, only a single set of delay offsets is signaled. It should be noted that the syntax elements cpb_alt_initial_cpb_removal_delay_delta[i] and cpb_alt_mitial_cpb_removal_offset_delta[i] can be called by other names instead. In one example, according to the techniques herein, a separate set of alternative buffering delay parameters can be signaled for VCL HRD and NAL HRD. Table 22 shows an example of relevant portions of a picture timing message according to the techniques herein.

[0799]

[0800] Table 22

[0801] For Table 22, the semantics may be based on the semantics provided above as well as the following semantics:

[0802] cpb_alt_timing_info_present_flag equal to 1 indicates the presence of the syntax elements nal_cpb_alt_initial_cpb_removal_delay_delta[i], nal_cpb_alt_initial_cpb_removal_offset_delta[i], vcl_cpb_alt_initial_cpb_removal_delay_delta[i], vcl_cpb_alt_initial_cpb_removal_offset_delta[i], cpb_delay_offset, and dpb_delay_offset. The value of cpb_alt_timing_info_present_flag shall be equal to 0 when the associated picture is a RASL picture.

[0803] cpb_alt_initial_cpb_removal_delay_delta[i], cpb_delay_offset, and dpb_delay_offset. When the associated picture is a RASL picture, the value of cpb_alt_timing_info_present_flag shall be equal to 0.

[0804] NOTE—For more than one AU following an IRAP picture in decoding order, the value of cpb_alt_timing_info_present_flag may be equal to 1. However, the value of cpb_alt_timing_info_present_flag only applies to the first AU that has cpb_alt_timing_info_present_flag equal to 1 and follows an IRAP picture in decoding order.

[0805] nal_cpb_alt_initial_cpb_removal_delay_delta[i] specifies the alternative initial CPB removal delay delta for the i-th CPB of the NAL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_delay_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits.

[0806] nal_cpb_alt_imtial_cpb_removal_offset_delta[i] specifies the alternative initial CPB removal offset delta for the i-th CPB of the NAL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_offset_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits.

[0807] vcl_cpb_alt_mitial_cpb_removal_delay_delta[i] specifies the alternative initial CPB removal delay delta for the i-th CPB of the VCL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_delay_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits.

[0808] vcl_cpb_alt_initial_cpb_removal_offset_delta[i] specifies the alternative initial CPB removal offset delta for the i-th CPB of the VCL HRD, in units of 90kHz clock. The length of vcl_cpb_alt_initial_cpb_removal_offset_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits.

[0809] In one example, the units of one or more of nal_cpb_alt_initial_cpb_removal_delay_delta[i], vcl_cpb_alt_initial_cpb_removal_delay_delta[i], and vcl_cpb_alt_initial_cpb_removal_offset_delta[i] may be different from “in units of a 90 kHz clock.” Similarly, for example, the semantics of one or more of these syntax elements may be defined omitting the term “in units of a 90 kHz clock.”

[0810] In one example, bp_nal_hrd_params_present_flag is not used to conditionally signal nal_cpb_alt_initial_cpb_removal_delay_delta[i] and

[0811] nal_cpb_alt_initial_cpb_removal_offset_delta, instead a separate new flag can be used.

[0812] In one example, bp_vcl_hrd_params_present_flag is not used to conditionally signal vcl_cpb_alt_initial_cpb_removal_delay_delta[i] and

[0813] vcl_cpb_alt_initial_cpb_removal_offset_delta, instead a separate new flag can be used.

[0814] For Table 22, in one example, the process for determining the removal delay of the coded picture buffer may be as follows:

[0815] The variables InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are derived as follows:

[0816] - If one or more of the following conditions are true, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, of AU 1 minus the values ​​of the PT SEI message syntax elements nal_cpb_alt_initial_removal_delay_delta[ScIdx] and nal_cpb_alt_initial_removal_offset_delta[ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, of AU 1 when NalHrdModeFlag is equal to 0: 1 minus the values ​​of the PT SEI message syntax elements vcl_cpb_altinitial_removal_delay_delta[Scldx] and vcl_cpb_alt_initial_rernoval_pffset_delta[Scldx], where the BP SEI message containing the syntax elements is selected as specified below:

[0817] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0818] -DefaultInitCpbParamsFlag is equal to 0.

[0819] Otherwise, if the value of decodingUnitParamsFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_alt_cpb_removal_delay[Htid][ScIdx] and nal_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_alt_cpb_removal_delay[Htid][ScIdx] and vcl_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0820] Otherwise (DecodingUnitHrdFlag is equal to 0), InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0821] When the BP SEI message associated with AU 0 has cpb_alt_timing_info_present_flag equal to 1, any of the following applies to selecting the initial CPB removal delay and delay offset:

[0822] - If NalHrdModeFlag is equal to 1, the default initial CPB removal delay and delay offset represented by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. Otherwise, the default initial CPB removal delay and delay offset represented by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. The variable DefaultInitCpbParamsFlag is set to 1.

[0823] - If NalHrdModeFlag is equal to 1, the alternative initial CPB removal delay and delay offset denoted by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by nal_cpb_alt_initial_removal_delay_delta[ScIdx] and nal_cpb_alt_initial_removal_offset_delta[ScIdx], respectively, are selected in the PTSEI message associated with the AU that follows AU 0 in decoding order. Otherwise, the alternative initial CPB removal delay and delay offset represented by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset represented by vcl_cpb_alt_initial_removal_delay_delta[Scidx] and vcl_cpb_alt_initial_removal_offset_delta[Scldx], respectively, are selected in the PT SEI message associated with the AU that follows AU 0 in decoding order. The variable DefaultInitCpbParamsFlag is set equal to 0, and one of the following applies:

[0824] - The RASL AU associated with AU 0 is discarded from BitstreamToDecode, and the remaining bitstream is allocated to BitstreamToDecode.

[0825] - All AUs following AU 0 in decoding order up to the AU associated with the DRAP indication SEI message are discarded from BitstreamToDecode, and the remaining bitstream is allocated to BitstreamToDecode.

[0826] In another example, cpb_delay_offset and / or dpb_delay_offset syntax elements may also be signaled in the picture timing SEI separately for VCL HRD and for NAL HRD. Table 23 shows an example of the relevant part of the picture timing message according to the techniques herein

[0827]

[0828] Table 23

[0829] For Table 23, the semantics may be based on the semantics provided above as well as the following semantics:

[0830] nal_cpb_delay_offset specifies the offset to be used when deriving the nominal CPB removal time of the AU associated with the PT SEI message and the AU that follows it in decoding order, when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the NAL HRD. The length of nal_cpb_delay_offset is au_cpb_removal_delay_length_minus1+1 bits. When not present, the value of nal_cpb_delay_offset is inferred to be equal to 0.

[0831] nal_dpb_delay_offset specifies the offset to be used when deriving the DPB output time of the IRAP AU associated with the BP SEI message when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the NAL HRD. The length of nal_dpb_delay_offset is dpb_output_delay_length_minus1+1 bits. When not present, the value of nal_dpb_delay_offset is inferred to be equal to 0.

[0832] vcl_cpb_delay_offset specifies the offset to be used when deriving the nominal CPB removal time of the AU associated with the PT SEI message and the AU that follows it in decoding order, when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the VCL HRD. The length of vcl_cpb_delay_offset is au_cpb_removal_delay_length_minus1+1 bits. When not present, the value of vcl_cpb_delay_offset is inferred to be equal to 0.

[0833] vcl_dpb_delay_offset specifies the offset to be used when deriving the DPB output time of the IRAP AU associated with the BP SEI message when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the VCL HRD. The length of vcl_dpb_delay_offset is dpb_output_delay_length_minus1+1 bits. When not present, the value of vcl_dpb_delay_offset is inferred to be equal to 0.

[0834] The variable pResetFlag of the current screen is derived as follows:

[0835] - If the current picture is associated with a BP SEI message, BpResetFlag is set equal to 1.

[0836] - Otherwise, BpResetFlag is set equal to 0.

[0837] With respect to Table 23, in one example, the process for deriving the variables DpbDelayOffset and CpbDelayOffset may be as follows:

[0838] The variables DpbDelayOffset and CpbDelayOffset are derived as follows, where k is the AU associated with the BP SEI message:

[0839] - If one or more of the following conditions are true, DpbDelayOffset is set equal to the value of the PT SEI message syntax element nal_dpb_delay_offset of AU k+1 (if NalHrdModeFlag is equal to 1), or equal to vcl_dpb_delay_offset (if NalHrdModeFlag is equal to 0), and CpbDelayOffset is set equal to the value of the PT SEI message syntax element nal_cpb_delay_offset of AU k+1 (if NalHrdModeFlag is equal to 1), or equal to vcl_dpb_delay_offset (if NalHrdModeFlag is equal to 0), where the PT SEI message containing the syntax elements is selected as specified herein:

[0840] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0841] -DefaultInitCpbParamsFlag is equal to 0.

[0842] Otherwise, DpbDelayOffset and CpbDelayOffset are set equal to 0.

[0843] Furthermore, it should be noted that in JVET-P2001, for the initial CPB removal delay offset (i.e., cpb_alt_initial_cpb_removal_delay_delta[i], and cpb_alt_initial_cpb_removal_offset_delta[i]), only a single set of parameters is signaled without considering temporal scalability. In one example, according to the techniques herein, a separate set of parameters may be signaled for different temporal sub-layer representations. Table 24 shows an example of the relevant portion of a picture timing message according to the techniques herein.

[0844]

[0845] Table 24

[0846] For Table 24, the semantics may be based on the semantics provided above as well as the following semantics:

[0847] cpb_alt_timing_info_present_flag equal to 1 specifies the presence of the syntax elements cpb_alt_initial_cpb_removal_delay_delta[i][j], cpb_alt_initial_cpb_removal_offset_delta[i][j], cpb_delay_offset, and dpb_delay_offset. The value of cpb_alt_timing_info_present_flag shall be equal to 0 when the associated picture is a RASL picture.

[0848] NOTE—For more than one AU following an IRAP picture in decoding order, the value of cpb_alt_timing_info_present_flag may be equal to 1. However, the value of cpb_alt_timing_info_present_flag only applies to the first AU that has cpb_alt_timing_info_present_flag equal to 1 and follows an IRAP picture in decoding order.

[0849] cpb_alt_initial_cpb_removal_delay_delta[i][j] specifies the alternative initial CPB removal delay delta for the i-th temporal sublayer of the j-th CPB schedule. The length of cpb_alt_initial_cpb_removal_delay_delta[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0850] cpb_alt_initial_cpb_removal_offset_delta[i][j] specifies the alternative initial CPB removal offset delta for the i-th CPB. The length of cpb_alt_initial_cpb_removal_offset_delta[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0851] It should be noted that in one example, array index [i][j] may instead be flipped to index [j][i].

[0852] In one example, the words “for the i-th temporal sublayer” may be replaced with the words “for the i-th temporal sublayer representation”.

[0853] For Table 24, in one example, the following process for determining the removal delay of the coded picture buffer may be as follows:

[0854] The variables InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are derived as follows:

[0855] - If one or more of the following conditions are true, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, of AU 1 when NalHrdModeFlag is equal to 1, minus the values ​​of the PT SEI message syntax elements cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, of AU 1 when NalHrdModeFlag is equal to 0: The values ​​of the PT SEI message syntax elements cpb_alt_initial_removal_delay_delta[Htid][Scldx] and cpb_alt_initial_removal_offset_delta[Htid][Scldx] are subtracted from vcl_initial_cpb_removal_delay[Htid][Scldx] and vcl_initial_cpb_removal_offset[Htid][Scldx] of 1, where the BPSEI message containing the syntax elements is selected as specified below.

[0856] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0857] -DefaultInitCpbParamsFlag is equal to 0.

[0858] Otherwise, if the value of decodingUnitParamsFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_alt_cpb_removal_delay[Htid][ScIdx] and nal_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_alt_cpb_removal_delay[Htid][ScIdx] and vcl_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0859] - Otherwise (DecodingUnitHrdFlag is equal to 0), when NalHrdModeFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, or when NalHrdModeFlag is equal to 0, equal to vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, where the BP SEI message syntax elements are selected as specified below.

[0860] When the BP SEI message associated with AU 0 has cpb_alt_timing_info_present_flag equal to 1, any of the following applies to selecting the initial CPB removal delay and delay offset:

[0861] - If NalHrdModeFlag is equal to 1, the default initial CPB removal delay and delay offset represented by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. - Otherwise, the default initial CPB removal delay and delay offset represented by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. The variable DefaultInitCpbParamsFlag is set to equal 1.

[0862] - If NalHrdModeFlag is equal to 1, the alternative initial CPB removal delay and delay offset denoted by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU that follows AU 0 in decoding order. Otherwise, the alternative initial CPB removal delay and delay offset represented by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset represented by cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU that follows AU 0 in decoding order. The variable DefaultInitCpbParamsFlag is set equal to 0, and one of the following applies:

[0863] - The RASL AU associated with AU 0 is discarded from BitstreamToDecode, and the remaining bitstream is allocated to BitstreamToDecode.

[0864] - Discard all AUs following AU 0 in decoding order up to the AU associated with the DRAP indication SEI message from BitstreamToDecode and assign the remaining bitstream to BitstreamToDecode.

[0865] In one example, instead of using sub_layer_initial_cpb_removal_delay_present_flag to conditionally signal cpb_alt_initial_cpb_removal_delay_delta[i][j] and cpb_alt_initial_cpb_removal_offset_delta[i][j], a separate new flag may be used.

[0866] In one example, the cpb_delay_offset and / or dpb_delay_offset syntax elements may additionally be signaled in the picture timing SEI separately for each sub-layer representation and for each HRD schedule.Table 25 shows an example of relevant parts of a picture timing message according to the techniques herein.

[0867]

[0868] Table 25

[0869] For Table 25, the semantics may be based on the semantics provided above as well as the following semantics:

[0870] cpb_delay_offset[i] specifies the offset to be used when deriving the nominal CPB removal time of the AU associated with the PT SEI message and the AU that follows it in decoding order, when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order, for the i-th temporal sub-layer. The length of cpb_delay_offset[i] is au_cpb_removal_delay_length_minus1+1 bits. When not present, the value of cpb_delay_offset[i] is inferred to be equal to 0.

[0871] dpb_delay_offset[i] specifies the offset to be used when deriving the DPB output time of the IRAP AU associated with the BP SEI message, when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order, for the i-th temporal sub-layer. The length of dpb_delay_offset[i] is dpb_output_delay_length_minus1+1 bits. When not present, the value of dpb_delay_offset[i] is inferred to be equal to 0. The variable pResetFlag for the current picture is derived as follows:

[0872] - If the current picture is associated with a BP SEI message, BpResetFlag is set equal to 1.

[0873] - Otherwise, BpResetFlag is set equal to 0.

[0874] With respect to Table 25, in one example, the process for deriving the variables DpbDelayOffset and CpbDelayOffset may be as follows:

[0875] The variables DpbDelayOffset and CpbDelayOffset are derived as follows, where k is the AU associated with the BP SEI message:

[0876] - If one or more of the following conditions are true, DpbDelayOffset is set equal to the value of the PT SEI message syntax element dpb_delay_offset[Htid] of AU k+1, and CpbDelayOffset is set equal to the value of the PT SEI message syntax element cpb_delay_offset[Htid] of AU k+1, where the PT SEI message containing the syntax elements is selected as specified herein:

[0877] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0878] -DefaultInitCpbParamsFlag is equal to 0.

[0879] Otherwise, DpbDelayOffset and CpbDelayOffset are set equal to 0.

[0880] For Table 24 and Table 25, in one example, the semantics of the syntax elements cpb_alt_initial_removal_delay_delta, cpb_alt_initial_removal_offset_delta, cpb_delay_offset, and dpb_delay_offset may be based on the following:

[0881] cpb_alt_initial_removal_delay_delta[i][j] specifies the alternative initial CPB removal delay delta for the i-th sublayer of the j-th CPB. The length of cpb_alt_initial_removal_delay_delta[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0882] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and cpb_alt_initial_removal_delay_delta[i][j] is not present, its value is inferred to be equal to cpb_alt_initial_removal_delay_delta[bp_max_sublayers_minus1][j].

[0883] In a variant example, the inference rule can be expressed as follows:

[0884] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and cqb_alt_initial_removal_delay_delta[i][j] is not present, its value is inferred to be equal to 0. In this case, the CPB buffer will be fully filled during initial buffering.

[0885] In another variant example, the inference rule can be expressed as follows:

[0886] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and cpb_alt_initial_removal_delay_delta[i][j] is not present, its value is inferred to be equal to cpb_alt_initial_removal_delay_delta[i+1][j].

[0887] cpb_alt_initial_removal_offset_delta[i][j] specifies the alternative initial CPB removal offset delta for the i-th sublayer of the j-th CPB. The length of cpb_alt_initial_removal_offset_delta[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0888] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and cpb_alt_initial_removal_offset_delta[i][j] is not present, its value is inferred to be equal to cpb_alt_initial_removal_offset_delta[bp_max_sublayers_minus1][j].

[0889] In another variant example, the inference rule can be expressed as follows:

[0890] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and cpb_alt_initial_removal_offset_delta[i][j] is not present, its value is inferred to be equal to 0.

[0891] In this case, the CPB buffer will be completely filled during the initial buffering period.

[0892] In another variation, the inference rule may be expressed as follows:

[0893] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and cpb_alt_initial_removal_offset_delta[i][j] is not present, its value is inferred to be equal to cpb_alt_initial_removal_offset_delta[i+1][j].

[0894] cpb_delay_offset[i] specifies, for the i-th sublayer, when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order, the offset to be used when deriving the nominal CPB removal time of the AU associated with the PT SEI message and the AU that follows it in decoding order. The length of cpb_delay_offset[i] is au_cpb_removal_delay_length_minus1+1 bits.

[0895] When cpb_alt_timing_info_present_flag is equal to 1, and when not present, the value of cpb_delay_offset[i] is inferred to be equal to cpb_delay_offset[bp_max_sublayers_minus1].

[0896] In a variant example, the inference rule can be expressed as follows:

[0897] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and cpb_delay_offset[i] is not present, its value is inferred to be equal to cpb_delay_offset[bp_max_sublayers_minus1]. Otherwise, when not present, the value of cpb_delay_offset[i] is inferred to be equal to 0.

[0898] In another variant example, the inference rule can be expressed as follows:

[0899] The inference rule for cpb_delay_offset[i] is unchanged, ie, it is inferred to be equal to 0 when not present.

[0900] dpb_delay_offset[i] specifies the offset to be used when deriving the DPB output time of the IRAP AU associated with the BP SEI message, for the i-th sublayer, when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order. The length of dpb_delay_offset[i] is dpb_output_delay_length_minus1+1 bits. When cpb_alt_timing_info_present_flag is equal to 1, and when not present, the value of dpb_delay_offset[i] is inferred to be equal to dpb_delay_offset[bp_max_sublayers_minus1].

[0901] In a variant example, the inference rule can be expressed as follows:

[0902] For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and dpb_delay_offset[i] is not present, its value is inferred to be equal to dpb_delay_offset[bp_max_sublayers_minus1]. Otherwise, when not present, the value of dpb_delay_offset[i] is inferred to be equal to 0.

[0903] In another variant example, the inference rule can be expressed as follows:

[0904] The inference rule is unchanged, i.e., it is inferred to be equal to 0 when not present.

[0905] It should be noted that, in one example, one or more of the inference conditions above including “when cpb_alt_timing_info_present_flag is equal to 1” may be modified to “when cpb_alt_timing_info_present_flag is equal to 1 and sublayer_initial_cpb_removal_delay_present_flag is equal to 0”

[0906] For the syntax element cpb_alt_initial_removal_delay_delta[i][j], it should be noted that one or more of these inference rules may be particularly useful if, instead of using a single flag (sublayer_initial_cpb_removal_delay_present_flag), separate flags (sublayer_initial_cpb_removal_delay_present_flag[i]) are used to control the presence of syntax elements for each i-th temporal sublayer. In this case, it may be necessary to apply the inference rules in descending order of i values, starting with i equal to bp_max_sublayers_minus1-1.

[0907] For the syntax element cpb_alt_initial_removal_offset_delta[i][j], it should be noted that one or more of these inference rules may be particularly useful if, instead of using a single flag (sublayer_initial_cpb_removal_delay_present_flag), separate flags (sublayer_initial_cpb_removal_delay_present_flag[i]) are used to control the presence of syntax elements for each i-th temporal sublayer. In this case, it may be necessary to apply the inference rules in descending order of i values, starting with i equal to bp_max_sublayers_minus1-1.

[0908] Furthermore, for the buffering_period() syntax structure, in one example, the semantics of the syntax elements initial_cpb_removal_delay_length_minus1, cpb_removal_delay_length_minus1, and dpb_output_delay_length_minus1 may be based on the following:

[0909] initial_cpb_removal_delay_length_minus1 plus 1 specifies the length in bits of the syntax elements nal_initial_cpb_removal_delay[i][j], nal_initial_cpb_removal_offset[i][j], vcl_initial_cpb_removal_delay[i][j], and vcl_initial_cpb_removal_offset[i][j] of the BP SEI message and the syntax elements cpb_alt_initial_removal_delay_delta[i][j], cpb_alt_initial_removal_offset_delta[i][j] of the PT SEI message in the current buffering period. When not present, the value of initial_cpb_removal_delay_length_minus1 is inferred to be 23.

[0910] cpb_removal_delay_length_minus1 plus 1 specifies the length in bits of the syntax elements cpb_removal_delay_delta_minus1 and cpb_removal_delay_delta[i] in the BP SEI message and the syntax elements cpb_removal_delay_minus1[i] and cpb_delay_offset[i] in the PT SEI message for the current buffering period. When not present, the value of cpb_removal_delay_length_minus1 is inferred to be equal to 23.

[0911] dpb_output_delay_length_minus1 plus 1 specifies the length, in bits, of the syntax elements dpb_output_delay and dpb_delay_offset[i] in the PT SEI message in the current buffering period. When not present, the value of dpb_output_delay_length_minus1 is inferred to be equal to 23.

[0912] It should be noted that these semantics provide the lengths of the syntax elements cpb_delay_offset[i], cpb_alt_initial_removal_delay_delta[i][j], cpb_alt_initial_removal_offset_delta[i][j] in the picture timing SEI message.

[0913] In one example, according to the techniques herein, the syntax structures shown in Table 22 and Table 24 can be combined to signal alternative timing HRD parameters for VCL HRD and NAL HRD for the temporal sub-layer. Table 26A shows an example of the relevant portion of a picture timing message according to the techniques herein.

[0914]

[0915] Table 26A

[0916] For Table 26A, the semantics may be based on the semantics provided above as well as the following semantics:

[0917] cpb_alt_timing_info_present_flag equal to 1 indicates the presence of the syntax elements nal_cpb_alt_initial_cpb_removal_delay_delta[i][j], nal_cpb_alt_initial_cpb_removal_offset_delta[i][j], vcl_cpb_alt_initial_cpb_removal_delay_delta[i][j], vcl_cpb_alt_initial_cpb_removal_offset_delta[i][j], cpb_delay_offset, and dpb_delay_offset. The value of cpb_alt_timing_info_present_flag shall be 0 when the associated picture is a RASL picture.

[0918] NOTE—For more than one AU following an IRAP picture in decoding order, the value of cpb_alt_timing_info_present_flag may be equal to 1. However, the value of cpb_alt_timing_info_present_flag only applies to the first AU that has cpb_alt_timing_info_present_flag equal to 1 and follows an IRAP picture in decoding order.

[0919] nal_cpb_alt_initial_cpb_removal_delay_delta[i][j] specifies the alternative initial CPB removal delay delta for the i-th temporal sublayer of the j-th CPB schedule of the NAL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_delay[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0920] nal_cpb_alt_initial_cpb_removal_offset_delta[i][j] specifies the alternative initial CPB removal offset delta for the i-th temporal sublayer of the j-th CPB schedule of the NAL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_offset_delta[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0921] vcl_epb_alt_initial_cpb_removal_delay_delta[i][j] specifies the alternative initial CPB removal delay delta for the i-th temporal sublayer of the j-th CPB schedule of the VCL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_delay_delta[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0922] vcl_cpb_alt_initial_cpb_removal_offset_delta[i][j] specifies the alternative initial CPB removal offset delta for the i-th temporal sublayer of the j-th CPB schedule of the VCL HRD, in units of 90kHz clock. The length of vcl_cpb_alt_initial_cpb_removal_offset_delta[i][j] is initial_cpb_removal_delay_length_minus1+1 bits.

[0923] Table 26B shows another example of relevant portions of a picture timing message according to the techniques herein.

[0924]

[0925] Table 26B

[0926] For Table 26B, the semantics may be based on the semantics provided above as well as the following semantics:

[0927] cpb_alt_timing_info_present_flag equal to 1 indicates the presence of the syntax elements nal_cpb_alt_initial_cpb_removal_delay_delta[i][j], nal_cpb_alt_initial_cpb_removal_offset_delta[i][j], vcl_cpb_alt_initial_cpb_removal_delay_delta[i][j], vcl_cpb_alt_initial_cpb_removal_offset_delta[i][j], nal_cpb_delay_offset[i], vcl_cpb_alt_initial_cpb_removal_offset_delta[i][j], nal_cpb_delay_offset[i], vcl_cpb_delay_offset[i], vcl_dpb_delay_offset[i], and vcl_dpb_delay_offset[i]. The value of cpb_alt_timing_info_present_flag shall be equal to 0 when the associated picture is a RASL picture.

[0928] NOTE—For more than one AU following an IRAP picture in decoding order, the value of cpb_alt_timing_info_present_flag may be equal to 1. However, the value of cpb_alt_timing_info_present_flag only applies to the first AU that has cpb_alt_timing_info_present_flag equal to 1 and follows an IRAP picture in decoding order.

[0929] nal_cpb_alt_initial_removal_delay_delta[i][j] specifies the alternative initial CPB removal delay delta for the i-th sublayer of the j-th CPB of the NAL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_delay_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits. For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and nal_cpb_alt_initial_removal_delay_delta[i][j] is not present, its value is inferred to be equal to 0.

[0930] In another example: for any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and nal_cpb_alt_initial_removal_delay_delta[i][j] is not present, its value is inferred to be equal to nal_cpb_alt_initial_removal_delay_delta[bp_max_sublayers_minus1][j].

[0931] In another example: when not present, nal_cpb_alt_initial_removal_delay_delta[i][j] is inferred to be equal to 0.

[0932] nal_cpb_alt_initial_removal_offset_delta[i][j] specifies the alternative initial CPB removal offset delta for the i-th sublayer of the j-th CPB of the NAL HRD, in units of 90kHz clock. The length of nal_cpb_alt_initial_cpb_removal_offset_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits. For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and nal_cpb_alt_initial_removal_offset[i][j] is not present, its value is inferred to be equal to 0.

[0933] In another example: for any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and nal_cpb_alt_initial_removal_offset_delta[i][j] is not present, its value is inferred to be equal to nal_cpb_alt_initial_removal_offset_delta[bp_max_sublayers_minus1][j].

[0934] In another example: when not present, nal_cpb_alt_initial_removal_offset_delta[i][j] is inferred to be equal to 0.

[0935] vcl_cpb_alt_initial_cpb_removal_delay_delta[i][j] specifies the alternative initial CPB removal delay delta for the i-th sublayer of the j-th CPB of the VCL HRD, in units of the 90kHz clock. The length of vcl_cpb_alt_initial_cpb_removal_delay_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits. For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and vcl_cpb_alt_initial_removal_delay_delta[i][j] is not present, its value is inferred to be equal to 0.

[0936] In another example: for any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and vcl_cpb_alt_initial_removal_delay_delta[i][j] is not present, its value is inferred to be equal to vcl_cpb_alt_initial_removal_delay_delta[bp_max_sublayers_minus1][j].

[0937] In another example: when not present, vcl_cpb_alt_initial_removal_delay_delta[i][j] is inferred to be equal to 0.

[0938] vcl_cpb_alt_imtial_cpb_removal_offset_delta[i][j] specifies the alternative initial CPB removal offset delta for the i-th sublayer of the j-th CPB of the VCL HRD, in units of 90kHz clock. The length of vcl_cpb_alt_initial_cpb_removal_offset_delta[i] is initial_cpb_removal_delay_length_minus1+1 bits. For any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and vcl_cpb_alt_initial_removal_offset[i][j] is not present, its value is inferred to be equal to 0.

[0939] In another example: for any value of i less than bp_max_sublayers_minus1, when cpb_alt_timing_info_present_flag is equal to 1 and vcl_cpb_alt_initial_removal_offset_delta[i][j] is not present, its value is inferred to be equal to vcl_cpb_alt_initial_removal_offset_delta[bp_max_sublayers_minus1][j].

[0940] In another example: when not present, vcl_cpb_alt_initial_removal_offset_delta[i][j] is inferred to be equal to 0.

[0941] nal_cpb_delay_offset[i] specifies the offset to be used when deriving the nominal CPB removal time of the AU associated with the PT SEI message and the AU that follows it in decoding order when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the NAL HRD. The length of nal_cpb_delay_offset[i] is au_cpb_removal_delay_length_minus1+1 bits. When not present, the value of nal_cpb_delay_offset[i] is inferred to be equal to 0.

[0942] nal_dpb_delay_offset[i] specifies the offset to be used when deriving the DPB output time of the IRAP AU associated with the BP SEI message when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the NAL HRD. The length of nal_dpb_delay_offset[i] is dpb_output_delay_length_minus1+1 bits. When not present, the value of nal_dpb_delay_offset[i] is inferred to be equal to 0.

[0943] vcl_cpb_delay_offset[i] specifies the offset to be used when deriving the nominal CPB removal time of the AU associated with the PT SEI message and the AU that follows it in decoding order, when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the VCL HRD. The length of vcl_cpb_delay_offset[i] is au_cpb_removal_delay_length_minus1+1 bits. When not present, the value of vcl_cpb_delay_offset[i] is inferred to be equal to 0.

[0944] vcl_dpb_delay_offset[i] specifies the offset to be used when deriving the DPB output time of the IRAP AU associated with the BP SEI message when the AU associated with the PT SEI message directly follows the AU associated with the BP SEI message in decoding order for the VCL HRD. The length of vcl_dpb_delay_offset[i] is dpb_output_delay_length_minus1+1 bits. When not present, the value of vcl_dpb_delay_offset[i] is inferred to be equal to 0.

[0945] For Table 24, in one example, the following process for determining the removal delay of the coded picture buffer may be as follows:

[0946] The variables InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are derived as follows:

[0947] If one or more of the following conditions are true, then when NalHrdModeFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, of AU 1 minus the PT The values ​​of the SEI message syntax elements nal_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and nal_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], or when NalHrdModeFlag is equal to 0, the values ​​of vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][Scldx] of AU1 minus the values ​​of the PT SEI message syntax elements vcl_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and vcl_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, where the BP SEI message containing the syntax elements is selected as specified below:

[0948] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0949] -DefaultInitCpbParamsFlag is equal to 0.

[0950] Otherwise, if the value of decodingUnitParamsFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_alt_cpb_removal_delay[Htid][ScIdx] and nal_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_alt_cpb_removal_delay[Htid][ScIdx] and vcl_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0951] - Otherwise (DecodingUnitHrdFlag is equal to 0), when NalHrdModeFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, or when NalHrdModeFlag is equal to 0, equal to vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, where the BP SEI message syntax elements are selected as specified below.

[0952] When the BP SEI message associated with AU 0 has cpb_alt_timing_info_present_flag equal to 1, any of the following applies to selecting the initial CPB removal delay and delay offset:

[0953] - If NalHrdModeFlag is equal to 1, the default initial CPB removal delay and delay offset represented by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. - Otherwise, the default initial CPB removal delay and delay offset represented by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. The variable DefaultInitCpbParamsFlag is set to equal 1.

[0954] - If NalHrdModeFlag is equal to 1, the alternative initial CPB removal delay and delay offset denoted by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by nal_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and nal_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU that follows AU 0 in decoding order. Otherwise, the alternative initial CPB removal delay and delay offset denoted by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by vcl_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and vcl_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU following AU 0 in decoding order. The variable DefaultInitCpbParamsFlag is set equal to 0, and one of the following applies:

[0955] - The RASL AU associated with AU 0 is discarded from BitstreamToDecode, and the remaining bitstream is allocated to BitstreamToDecode.

[0956] - Discard all AUs following AU 0 in decoding order up to the AU associated with the DRAP indication SEI message from BitstreamToDecode and assign the remaining bitstream to BitstreamToDecode.

[0957] In one example, the following process for determining the removal delay of a coded picture buffer may be as follows:

[0958] The variables InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are derived as follows:

[0959] If one or more of the following conditions are true, then when NalHrdModeFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, of AU 1 minus the PT The values ​​of the SEI message syntax elements nal_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and nal_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], or when NalHrdModeFlag is equal to 0, the values ​​of vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][Scldx] of AU1 minus the values ​​of the PT SEI message syntax elements vcl_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and vcl_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, where the BP SEI message containing the syntax elements is selected as specified below:

[0960] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0961] -DefaultInitCpbParamsFlag is equal to 0.

[0962] Otherwise, if the value of decodingUnitParamsFlag is equal to 1, InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_alt_cpb_removal_delay[Htid][ScIdx] and nal_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_alt_cpb_removal_delay[Htid][ScIdx] and vcl_initial_alt_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0963] Otherwise (DecodingUnitHrdFlag is equal to 0), InitCpbRemovalDelay[Htid][ScIdx] and InitCpbRemovalDelayOffset[Htid][ScIdx] are set equal to the values ​​of the BP SEI message syntax elements nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 1, or equal to vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, when NalHrdModeFlag is equal to 0, where the BP SEI message syntax elements are selected as specified below.

[0964] The variables DpbDelayOffset and CpbDelayOffset are derived as follows, where k is the AU associated with the BP SEI message:

[0965] If one or more of the following conditions are true, DpbDelayOffset is set equal to the value of the PT SEI message syntax element nal_dpb_delay_offset[Htid] of AU k+1 (if NalHrdModeFlag is equal to 1), or equal to vcl_dpb_delay_offset[Htid] (if NalHrdModeFlag is equal to 0), and CpbDelayOffset is set equal to the value of the PT SEI message syntax element nal_cpb_delay_offset[Htid] of AU k+1 (if NalHrdModeFlag is equal to 1), or equal to vcl_dpb_delay_offset[Htid] (if NalHrdModeFlag is equal to 0), where the PT SEI message containing the syntax elements is selected as specified below:

[0966] -AU 0's UseAltCpbParamsFlag is equal to 1.

[0967] -DefaultInitCpbParamsFlag is equal to 0.

[0968] Otherwise, DpbDelayOffset and CpbDelayOffset are set equal to 0.

[0969] When the BP SEI message associated with AU 0 has cpb_alt_timing_info_present_flag equal to 1, any of the following applies to selecting the initial CPB removal delay and delay offset:

[0970] - If NalHrdModeFlag is equal to 1, the default initial CPB removal delay and delay offset represented by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. - Otherwise, the default initial CPB removal delay and delay offset represented by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message. The variable DefaultInitCpbParamsFlag is set to equal 1.

[0971] - If NalHrdModeFlag is equal to 1, the alternative initial CPB removal delay and delay offset denoted by nal_initial_cpb_removal_delay[Htid][ScIdx] and nal_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by nal_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and nal_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU that follows AU 0 in decoding order. Otherwise, the alternative initial CPB removal delay and delay offset denoted by vcl_initial_cpb_removal_delay[Htid][ScIdx] and vcl_initial_cpb_removal_offset[Htid][ScIdx], respectively, are selected in the selected BP SEI message, and the alternative initial CPB removal delay and delay offset denoted by vcl_cpb_alt_initial_removal_delay_delta[Htid][ScIdx] and vcl_cpb_alt_initial_removal_offset_delta[Htid][ScIdx], respectively, are selected in the PT SEI message associated with the AU following AU 0 in decoding order. The variable DefaultInitCpbParamsFlag is set equal to 0, and one of the following applies:

[0972] - The RASL AU associated with AU 0 is discarded from BitstreamToDecode, and the remaining bitstream is allocated to BitstreamToDecode.

[0973] - All AUs following AU 0 in decoding order up to the AU associated with the DRAP indication SEI message are discarded from BitstreamToDecode, and the remaining bitstream is allocated to BitstreamToDecode.

[0974] As described above, for example, for Table 9, Table 12, Table 14, Table 15, and Table 20, the pic_timing() syntax structure may include the syntax elements du_common_cpb_removal_delay_flag, du_common_cpb_removal_delay_increment_minus1[i], num_nalus_in_du_minus1[i], and du_cpb_removal_delay_increment_minus1[i][j]. In one example, according to the techniques herein, the syntax elements du_common_cpb_removal_delay_flag, du_common_cpb_removal_delay_increment_minus1[], num_nalus_in_du_minus1[i], and du_cpb_removal_delay_increment_minus1[i][j] may be signaled only when there is more than one DU in the AU. Tables 27A to 27C show examples of relevant portions of a picture timing message according to the techniques herein, where the syntax elements du_common_cpb_removal_delay_flag, du_common_cpb_removal_delay_increment_minus1[i], num_nalus_in_du_minus1[i], and du_cpb_removal_delay_increment_minus1[i][j] are signaled only when there is more than one DU in an AU.

[0975]

[0976] Table 27A

[0977]

[0978] Table 27B

[0979]

[0980] Table 27C

[0981] For Tables 27A-27B, the semantics may be based on the semantics provided above as well as the following semantics:

[0982] du_common_cpb_removal_delay_flag equal to 1 indicates the presence of the syntax element du_common_cpb_removal_delay_increment_minus1[i]. du_common_cpb_removal_delay_flag equal to 0 indicates the absence of the syntax element du_common_cpb_removal_delay_increment_minus1[i]. When not present, du_common_cpb_removal_delay_flag is inferred to be equal to 0.

[0983] num_nalus_in_du_minus1[i] plus 1 specifies the number of NAL units in the i-th DU of the AU associated with the PT SEI message. The value of num_nalus_in_du_minus1[i] should be in the range of 0 to PicSizelnCtbsY-1, inclusive. When num_decoding_units_minus1 is equal to 0, and when not present (i.e., when num_nalus_in_du_minus1[0] is not present), num_nalus_in_du_minus1[0] is inferred to be equal to the number of NAL units in the AU. (In another example, this inference rule may not be included in the semantics.)

[0984] The first DU of an AU consists of the first num_nalus_in_du_minus1[0]+1 consecutive NAL units in the AU in decoding order. The i-th (where i is greater than 0) DU of an AU consists of num_nalus_in_du_minus1[i]+1 consecutive NAL units that immediately follow the last NAL unit in the previous DU of the AU in decoding order. There should be at least one VCL NAL unit in each DU. All non-VCL NAL units associated with a VCL NAL unit should be included in the same DU as the VCL NAL unit.

[0985] For Table 27C, the semantics may be based on the semantics provided above as well as the following semantics:

[0986] du_common_cpb_removal_delay_flag equal to 1 indicates the presence of the syntax element du_common_cpb_removal_delay_increment_minus1[i]. du_common_cpb_removal_delay_flag equal to 0 indicates the absence of the syntax element du_common_cpb_removal_delay_increment_minus1[i]. When not present, du_common_cpb_removal_delay_flag is inferred to be equal to 1.

[0987] It should be noted that in some cases, the value of num_decoding_units_minus1 should be in the range of 0 to PicSizelnCtbsY-1 (inclusive). It is asserted that in at least the following types of cases, num_decoding_units_minus1 can be equal to 0 and the DU-based parameters can be included in the PT SEI message:

[0988] - Decoding unit based operation is allowed / supported, and therefore the buffering period SEI message has set bp_decoding_unit_hrd_params_present_flag equal to 1. In this case, many subsequent pictures may have multiple DUs in the AU, but one or more pictures may have a single DU in the AU (e.g., possibly due to the smaller size of the compressed pictures).

[0989] - A sub-picture sub-bitstream extraction process is applied to the bitstream, and the resulting sub-bitstream has a single sub-picture which is also a DU (eg, a single slice mode per sub-picture is used for slices).

[0990] In one example, according to the techniques herein, the flag du_common_cpb_removal_delay_flag may be signaled, but needs to have a specific value when only one DU is present in an AU. Tables 28A and 28B show examples of relevant portions of a picture timing message according to the techniques herein, where the flag du_common_cpb_removal_delay_flag is signaled, but needs to have a specific value when only one DU is present in an AU.

[0991]

[0992] Table 28A

[0993]

[0994] Table 28B

[0995] For Table 28A, the semantics may be based on the semantics provided above, and in this case, bitstream compliance may require that when num_decoding_units_minus1 is equal to 0, du_common_cpb_removal_delay_flag shall be equal to 1.

[0996] For Table 28B, the semantics may be based on the semantics provided above as well as the following semantics:

[0997] num_nalus_in_du_minus1[i] plus 1 specifies the number of NAL units in the i-th DU of the AU associated with the PT SEI message. The value of num_nalus_in_du_minus1[i] should be in the range of 0 to PicSizelnCtbsY-1, inclusive. When num_decoding_units_minus1 is equal to 0, and when not present (i.e., when num_nalus_in_du_minus1[0] is not present), num_nalus_in_du_minus1[0] is inferred to be equal to the number of NAL units in the AU. (In another example, this inference rule may not be included in the semantics.)

[0998] The first DU of an AU consists of the first num_nalus_in_du_minus1[0]+1 consecutive NAL units in the AU in decoding order. The i-th (where i is greater than 0) DU of an AU consists of num_nalus_in_du_minus1[i]+1 consecutive NAL units that immediately follow the last NAL unit in the previous DU of the AU in decoding order. There should be at least one VCL NAL unit in each DU. All non-VCL NAL units associated with a VCL NAL unit should be included in the same DU as the VCL NAL unit.

[0999] In this case (when using Table 28B) compliance may require:

[1000] When num_decoding_units_minus1 is equal to 0, du_common_cpb_removal_delay_flag shall be equal to 0.

[1001] In one example, the condition:

[1002] if(!du_common_cpb_removal_delay_flag&&i <num_decoding_units_minus1)

[1003] It can be expressed as:

[1004] if(!du_common_cpb_removal_delay_flag&&i<num_decoding_units_minus1&&num_decoding_units_minus1> 0)

[1005] For Tables 27A to 28B, in one example, the variable duCpbRemovalDelayInc is derived as follows:

[1006] When DecodingUnitHrdFlag is equal to 1, the following applies:

[1007] -The variable duCpbRemovalDelayInc is derived as follows:

[1008] If du_cpb_params_in_pic_timing_sei_flag is equal to 0, duCpbRemovalDelayInc is set equal to the value of du_spt_cpb_removal_delay_increment[i] in the selected DU information SEI message associated with DU m.

[1009] Otherwise, for DU m in the PT SEI message selected as specified associated with AU n, if du_common_cpb_removal_delay_flag is equal to 0 and num_decoding_units_minus1 is greater than 0, then duCpbRemovalDelayInc is set equal to the value of du_cpb_removal_delay_increment_minus1[i][Htid]+1, where the value of i is 0 for the first num_nalus_in_du_minus1[0]+1 consecutive NAL units in the AU containing DU m, 1 for the subsequent num_nalus_in_du_minus1[1]+1 NAL units in the same AU, 2 for the subsequent num_nalus_in_du_minus1[2]+1 NAL units in the same AU, and so on.

[1010] Otherwise, if du_common_cpb_removal_delay_flag is equal to 1 and num_decoding_units_minus1 is greater than 0, then duCpbRemovalDelayInc is set equal to the value of du_common_cpb_removal_delay_increment_minus1[Htid]+1 in the PT SEI message associated with AU n, as selected as specified.

[1011] - Otherwise, duCpbRemovalDelayInc is set equal to 0 (in one example, this condition may not exist in the export).

[1012] For Tables 27A to 28B, in another example, the variable duCpbRemovalDelayInc may be derived as follows:

[1013] When DecodingUnitHrdFlag is equal to 1, the following applies:

[1014] -When num_decoding_units_minus1 is greater than 0, the variable duCpbRemovalDelayInc is derived as follows:

[1015] If du_cpb_params_in_pic_timing_sei_flag is equal to 0, duCpbRemovalDelayInc is set equal to the value of du_spt_cpb_removal_delay_increment[i] in the selected DU information SEI message associated with DU m.

[1016] Otherwise, for DU m in the selected PT SEI message associated with AU n, if du_common_cpb_removal_delay_flag is equal to 0, duCpbRemovalDelayInc is set equal to the value of du_cpb_removal_delay_increment_minus1[i][Htid]+1, where the value of i is 0 for the first num_nalus_in_du_minus1[0]+1 consecutive NAL units in the AU containing DU m, 1 for the subsequent num_nalus_in_du_minus1[1]+1 NAL units in the same AU, 2 for the subsequent num_nalus_in_du_minus1[2]+1 NAL units in the same AU, and so on.

[1017] - Otherwise, duCpbRemovalDelayInc is set equal to the value of du_common_cpb_removal_delay_increment_minus1[Htid]+1 in the PTSEI message associated with AU n, as specified in the selection.

[1018] In one example, decoding unit mode signaling in the PT SEI is allowed only when there is more than one DU in the AU. According to the techniques herein, num_decoding_umts_minus1 can be replaced with a syntax element num_decoding_units_minus2 with the following semantics:

[1019] num_decoding_units_minus2 plus 1 specifies the number of DUs in the AU associated with the PT SEI message. The value of num_decoding_units_minus2 should be in the range of 0 to PicSizelnCtbsY-2, inclusive.

[1020] It should be noted that in this case, the condition

[1021] for(i=0;i<=num_decoding_units_minus1;i++)

[1022] You can replace it with the following condition

[1023] for(i=0;i<=num_decoding_units_minus2+1;i++)

[1024] And the conditions

[1025] if(!du_common_cpb_removal_delay_flag&&i <num_decoding_units_minus1)

[1026] Can be replaced with if(!du_common_cpb_removal_delay_flag&&i<(num_decoding_units_minus2+1))

[1027] It should be noted that the exemplary picture timing message syntax structures described in Tables 22 to 28B can be combined with other picture timing message syntax structures described herein.

[1028] In this manner, source device 102 represents an example of a device configured to signal a syntax element indicating whether decoding unit parameters are included in a picture timing message, and conditionally signal decoding unit parameters in a picture timing message based on a value of the syntax element.

[1029] Reference again Figure 1 , the interface 108 may include any device configured to receive the data generated by the data encapsulator 107 and transmit and / or store the data to a communication medium. The interface 108 may include a network interface card such as an Ethernet card, and may 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 may include a computer system interface that enables files to be stored on a storage device. For example, the interface 108 may include a computer system interface that supports the Peripheral Component Interconnect (PCI) and Peripheral Component Interconnect Express (PCIe) bus protocols, proprietary bus protocols, Universal Serial Bus (USB) protocols, I 2 C's chipset, or any other logical and physical structure that can be used to interconnect peer devices.

[1030] Refer...

Claims

1. A method for decoding a picture timing supplemental enhancement information (SEI) message, the method comprising: Receive buffering period SEI message; Parsing a first flag syntax element, where the first flag syntax element specifies whether a second flag syntax element and a third flag syntax element are present in the buffering period SEI message; parsing the second flag syntax element in the buffering period SEI message based on a value of the first flag syntax element, wherein the second flag syntax element specifies whether a decoding unit level decoded picture buffer output delay parameter is present in the picture timing SEI message; parsing the third flag syntax element in the buffering period SEI message based on a value of the first flag syntax element, wherein the third flag syntax element specifies whether a decoding unit level coded picture buffer removal delay parameter is present in the picture timing SEI message; receiving the picture timing SEI message; as well as When the value of the first flag syntax element is equal to one and the value of the second flag syntax element is equal to one, parsing a first syntax element in the picture timing SEI message, wherein the first syntax element is used to calculate the decoded picture buffer output time and specifies how many clock ticks to wait.

2. The method according to claim 1, further comprising: Receive decoding unit information SEI message; as well as In a case where the value of the second flag syntax element is equal to zero, parsing a second syntax element in the decoding unit information SEI message, wherein the second syntax element is used to calculate the decoded picture buffer output time.

3. A device (120) for decoding a picture timing supplemental enhancement information (SEI) message, the device (120) comprising: processor; as well as a memory associated with the processor; The processor is configured to perform the following steps: Receive buffering period SEI message; Parsing a first flag syntax element, where the first flag syntax element specifies whether a second flag syntax element and a third flag syntax element are present in the buffering period SEI message; parsing the second flag syntax element in the buffering period SEI message based on a value of the first flag syntax element, wherein the second flag syntax element specifies whether a decoding unit level decoded picture buffer output delay parameter is present in the picture timing SEI message; parsing the third flag syntax element in the buffering period SEI message based on a value of the first flag syntax element, wherein the third flag syntax element specifies whether a decoding unit level coded picture buffer removal delay parameter is present in the picture timing SEI message; receiving the picture timing SEI message; as well as When the value of the first flag syntax element is equal to one and the value of the second flag syntax element is equal to one, parsing a first syntax element in the picture timing SEI message, wherein the first syntax element is used to calculate the decoded picture buffer output time and specifies how many clock ticks to wait.

4. A method for signaling a picture timing supplemental enhancement information (SEI) message, the method comprising: Send a signaling buffering period SEI message, the buffering period SEI message including: A first flag syntax element specifies whether a second flag syntax element and a third flag syntax element are present in the buffering period SEI message, a second flag syntax element based on the value of the first flag syntax element, wherein the second flag syntax element specifies whether a decoding unit level decoded picture buffer output delay parameter is present in the picture timing SEI message, and the third flag syntax element based on the value of the first flag syntax element, wherein the third flag syntax element specifies whether a decoding unit level coded picture buffer removal delay parameter is present in the picture timing SEI message; and Signaling the picture timing SEI message, wherein: When the value of the first flag syntax element is equal to one and the value of the second flag syntax element is equal to one, the picture timing SEI message includes a first syntax element, wherein the first syntax element is used to calculate the decoded picture buffer output time and specifies how many clock ticks to wait.

5. A device (102) for signaling a picture timing supplemental enhancement information (SEI) message, the device (102) comprising: processor; as well as a memory associated with the processor; The processor is configured to perform the following steps: Send a signaling buffering period SEI message, the buffering period SEI message including: a first flag syntax element, the first flag syntax element specifying whether a second flag syntax element and a third flag syntax element are present in the buffering period SEI message, a second flag syntax element based on a value of the first flag syntax element, wherein the second flag syntax element specifies whether a decoding unit level decoded picture buffer output delay parameter is present in the picture timing SEI message; and the third flag syntax element based on the value of the first flag syntax element, wherein the third flag syntax element specifies whether a decoding unit level coded picture buffer removal delay parameter is present in the picture timing SEI message; and Signaling the picture timing SEI message, wherein: When the value of the first flag syntax element is equal to one and the value of the second flag syntax element is equal to one, the picture timing SEI message includes a first syntax element, wherein the first syntax element is used to calculate the decoded picture buffer output time and specifies how many clock ticks to wait.