DECODED PICTURE BUFFER (DPB) PARAMETER SIGNALING FOR VIDEO CODING

An example method includes decoding, when a sequence parameter set (SPS) of a current bitstream of video data is referred to by a layer that is an only layer of an output layer set (OLS), a decoded picture buffer (DPB) parameters syntax structure from the SPS; and reconstructing, based on the DPB parameters syntax structure, video data represented by the current bitstream.

TECHNICAL FIELD

BACKGROUND

SUMMARY

In general, this disclosure describes techniques for signalling decoded picture buffer (DPB) parameters in video coding. DPB parameters may be included in a DPB parameter set and may specify various aspects for construction of a DPB such as DPB size, maximum picture reorder number, and maximum latency. In some examples, a video coder (e.g., video encoder or video decoder) may signal the DPB parameters in a video parameter set (VPS). However, in some scenarios (e.g., where only a single layer is coded), the video coder may not signal a VPS. Problems may be presented when a video decoder attempts to reference DPB parameters from a VPS when the VPS is not signalled.

In accordance with one or more techniques of this disclosure, a video coder may selectively signal DPB parameters outside of the VPS. For instance, the video coder may signal DPB parameters in a sequence parameter set (SPS) in scenarios where the DPB parameters would not be available in the VPS. As one example, the video coder may signal the DPB parameters in the SPS where the SPS is referred by a layer, which is the only layer in an OLS (i.e., the OLS has only one layer, or only one layer is encoded in a bitstream). In this way, the techniques of this disclosure enable a video decoder to avoid attempting to reference parameters from a non-signaled parameter set.

In one example, a method includes coding, when a sequence parameter set (SPS) of a current bitstream of video data is referred to by a layer that is an only layer of an output layer set (OLS), a decoded picture buffer (DPB) parameters syntax structure from the SPS; and reconstructing, based on the DPB parameters syntax structure, video data represented by the current bitstream.

In another example, a device includes a memory configured to store at least a portion of a coded video bitstream; and one or more processors that are implemented in circuitry and configured to: decode, when a sequence parameter set (SPS) of the coded video bitstream is referred to by a layer that is an only layer of an output layer set (OLS), a decoded picture buffer (DPB) parameters syntax structure from the SPS; and reconstruct, based on the DPB parameters syntax structure, video data represented by the current bitstream.

In another example, a device includes means for coding, when a sequence parameter set (SPS) of a current bitstream of video data is referred to by a layer that is an only layer of an output layer set (OLS), a decoded picture buffer (DPB) parameters syntax structure from the SPS; and means for reconstructing, based on the DPB parameters syntax structure, video data represented by the current bitstream.

In another example, a computer-readable storage medium stores instructions that, when executed, cause one or more processors to code, when a sequence parameter set (SPS) of a current bitstream of video data is referred to by a layer that is an only layer of an output layer set (OLS), a decoded picture buffer (DPB) parameters syntax structure from the SPS; and reconstruct, based on the DPB parameters syntax structure, video data represented by the current bitstream.

DETAILED DESCRIPTION

In some examples, source device102may output encoded video data to file server114or another intermediate storage device that may store the encoded video generated by source device102. Destination device116may access stored video data from file server114via streaming or download. File server114may be any type of server device capable of storing encoded video data and transmitting that encoded video data to the destination device116. File server114may represent a web server (e.g., for a website), a File Transfer Protocol (FTP) server, a content delivery network device, or a network attached storage (NAS) device. Destination device116may access encoded video data from file server114through any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriber line (DSL), cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on file server114. File server114and input interface122may be configured to operate according to a streaming transmission protocol, a download transmission protocol, or a combination thereof.

Although not shown inFIG. 1, in some examples, video encoder200and video decoder300may each be integrated with an audio encoder and/or audio decoder, and may include appropriate MUX-DEMUX units, or other hardware and/or software, to handle multiplexed streams including both audio and video in a common data stream. If applicable, MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol, or other protocols such as the user datagram protocol (UDP).

Video encoder200and video decoder300may operate according to a video coding standard, such as ITU-T H.265, also referred to as High Efficiency Video Coding (HEVC) or extensions thereto, such as the multi-view and/or scalable video coding extensions. Alternatively, video encoder200and video decoder300may operate according to other proprietary or industry standards, such as the Joint Exploration Test Model (JEM) or ITU-T H.266, also referred to as Versatile Video Coding (VVC). A recent draft of the VVC standard is described in Bross, et al. “Versatile Video Coding (Draft 8),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 17th Meeting: Brussels, BE, 7-17 Jan. 2020, JVET-Q2001-v11 (hereinafter “VVC Draft 8”). The techniques of this disclosure, however, are not limited to any particular coding standard.

In some examples, a tile may be partitioned into multiple bricks, each of which may include one or more CTU rows within the tile. A tile that is not partitioned into multiple bricks may also be referred to as a brick. However, a brick that is a true subset of a tile may not be referred to as a tile.

The bricks in a picture may also be arranged in a slice. A slice may be an integer number of bricks of a picture that may be exclusively contained in a single network abstraction layer (NAL) unit. In some examples, a slice includes either a number of complete tiles or only a consecutive sequence of complete bricks of one tile.

During the coding process, video encoder200and video decoder300may store decoded video data in decoded picture buffers (DPBs). The structure of these DPBs may vary and video encoder200may determine a structure of DBPs and signal one or more syntax elements that indicate the determined structure. In VVC draft standard (e.g., VVC Draft 8), video encoder200may signal syntax elements that indicate that the DPB parameter structure can be signaled in video parameter set (VPS). Video encoder200may also signal the number of DPB structures (vps_num_dpb_params), but the signalling may be conditional on whether all layers are independently coded (vps_all_independent_layers_flag).

In VVC Draft 8, the following syntax table is present:

The following semantics describe syntax elements from the above syntax table:

vps_all_independent_layers_flag equal to 1 specifies that all layers in the CVS are independently coded without using inter-layer prediction. vps_all_independent_layers_flag equal to 0 specifies that one or more of the layers in the CVS may use inter-layer prediction. When not present, the value of vps_all_independent_layers_flag is inferred to be equal to 1.

each_layer_is_an_ols_flag equal to 1 specifies that each OLS contains only one layer and each layer itself in a CVS referring to the VPS is an OLS with the single included layer being the only output layer. each_layer_is_an_ols_flag equal to 0 that an OLS may contain more than one layer. If vps_max_layers_minus1 is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 1. Otherwise, when vps_all_independent_layers_flag is equal to 0, the value of each_layer_is_an_ols_flag is inferred to be equal to 0.

vps_num_dpb_params specifies the number of dpb_parameters( ) syntax structures in the VPS. The value of vps_num_dpb_params shall be in the range of 0 to 16, inclusive. When not present, the value of vps_num_dpb_params is inferred to be equal to 0.

ols_dpb_params_idx[i] specifies the index, to the list of dpb_parameters( ) syntax structures in the VPS, of the dpb_parameters( ) syntax structure that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params−1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

vps_sublayer_dpb_params_present_flag is used to control the presence of max_dec_pic_buffering_minus1[ ], max_num_reorder_pics[ ], and max_latency_increase_plus1[ ] syntax elements in the dpb_parameters( ) syntax strucures in the VPS. When not present, vps_sub_dpb_params_info_present_flag is inferred to be equal to 0.

vps_general_hrd_params_present_flag equal to 1 specifies that the syntax structure general_hrd_parameters( ) and other HRD parameters are present in the VPS RBSP syntax structure. vps_general_hrd_params_present_flag equal to 0 specifies that the syntax structure general_hrd_parameters( ) and other HRD parameters are not present in the VPS RBSP syntax structure. When not present, the value of vps_general_hrd_params_present_flag is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the general_hrd_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

In VVC Draft 8, video coder200may signal one or more syntax elements that indicate the DPB structure in the sequence parameter set (SPS) with the following condition:

sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that a profile_tier_level( ) syntax structure and a dpb_parameters( ) syntax structure are present in the SPS, and a general_hrd_parameters( ) syntax structure and an ols_hrd_parameters( ) syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures is present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]].

The techniques of VVC Draft 8 may present one or more disadvantages. For instance, there can be a case when all layers are independently coded, and more than one layer is included into output layer set (OLS). In such case, video encoder200may signal zero DPB structures in the VPS, but the DPB structure is later referred by ols_dpb_params_idx, when it is inferred to be equal to 0. Additionally, the DPB parameters from the VPS DPB structure are used to define, for example, maximum DPB size in the level limits. The following excerpt is from the section of VVC Draft 8 entitled “A.4.1 General tier and level limits”:Otherwise (NumLayersInOls[TargetOlsIdx] is greater than 1), PicWidthMaxInSamplesY is set equal to ols_dpb_pic_width[TargetOlsIdx], PicHeightMaxInSamplesY is set equal to ols_dpb_pic_height[TargetOlsIdx], PicSizeMaxInSamplesY is set equal to PicWidthMaxInSamplesY*PicHeightMaxInSamplesY, and the applicable dpb_parameters( ) syntax structure is identified by ols_dpb_params_idx[TargetOlsIdx] found in the VPS.

In this case, dpb_parameters( ) is not signaled but is referred to (e.g., used) and is used. In such cases, video decoder300may attempt to refer to a syntax element that is not signalled, which may result in unpredictable and undesirable operation of video decoder300.

In SPS, it may be required that video encoder200signal DPB structure when vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is equal to 1, meaning that the layer is independently coded. However, the independently coded layer may be included into and OLS, and the dpb_parameters( ) may be used instead.

This disclosure proposes several techniques that may solve the above-described problems. As one example, video encoder200may signal DPB parameters for an output layer set (OLS) having more than one layer regardless whether a layer included into OLS is independent or all layers included into an OLS are independent. A layer may be considered to be an independent layer where the layer can be decoded without any other layer information. As another example, video encoder200may always signal (e.g., the signaling may be required) the DPB parameters in the SPS if the SPS is referred by a layer, which is the only layer in an OLS (i.e., OLS has only one layer, or only one layer is encoded in a bitstream).

In VVC Draft 8, vps_num_dpb_params can be signaled be equal to 0 (i.e., to indicate that no dpb_parameters( ) are present in VPS). However, when not present, vps_num_dpb_params is inferred to 0. As there is no need to signal 0 values, this disclosure proposes that the syntax element that specifies the number of dpb_parameters( ) syntax structures in the VPS (i.e., vps_num_dpb_params in VVC Draft 8) be modified to specify the number of dpb_parameters( ) syntax structures in the VPS minus one (e.g., vps_num_dpb_params may be replaced by vps_num_dpb_params_minus1). This syntax element (e.g., vps_num_dpb_params_minus1) may be signalled if there is at least one dpb_parameters( ) structure. In one example, the semantics of this syntax element can be represented as follows:

vps_num_dpb_params_minus1 specifies the number minus 1 of dpb_parameters( ) syntax structures in the VPS. The value of vps_num_dpb_params_minus1 shall be in the range of 0 to 15, inclusive. When not present, the value of vps_num_dpb_params_minus1 is inferred to be equal to 0.

Then, the signalling of the ols_dpb_params_idx syntax element may be conditioned based on the value of the vps_num_dpb_params_minus1 syntax element.

As one example, the conditioning may be implemented as follows:

The signaling of the vps_sublayer_dpb_params_present_flag syntax element may also be modified to be conditioned on the value of the vps_num_dpb_params_minus1 syntax element. As one example, the conditioning may be implemented as follows:

In another example, the signaling of vps_sublayer_dpb_params_present_flag can be combined with vps_num_dpb_params, then vps_num_dpb_params_minus1>0 condition may not be needed and only condition having more than one temporal layer (vps_max_sublayers_minus1>0) may be retained.

As another example, as all independent layers can be included into OLS, video encoder200may signal the vps_num_dpb_params syntax element for this case as well. In accordance with one or more techniques of this disclosure, video encoder200may conditionally signal the vps_num_dpb_params syntax element such that the vps_num_dpb_params syntax element is signalled where more than 1 layer is present in VPS and when more than one layer is included into any OLS. As one example, the conditioning may be implemented as follows:

Alternatively, video encoder200may condition the signalling of the vps_num_dpb_params syntax element based on one of, but not both, of the aforementioned conditions. For instance, video encoder200may condition the signalling of the vps_num_dpb_params syntax element based on either condition vps_max_layers_minus1>0 (having more than 1 layer) or !each_layer_is_an_ols_flag (more than one layer is included into OLS).

In yet another alternative, video encoder200may unconditionally signal the vps_num_dpb_params syntax element. In some examples, the semantics of the vps_num_dpb_params syntax element may be constrained that the value of vps_num_dpb_params shall be equal to zero when only one layer is present in CVS, or all OLSs contain only one layer. In some examples, the semantics of the vps_num_dpb_params syntax element may be modified such that the value of vps_num_dpb_params shall be greater than 0 if more than 1 layer is present in CVS or more then one layer is included into any OLS.

Video encoder200may conditionally signal hypothetical reference decoder (HRD) parameters (vps_general_hrd_params_present_flag) under the same condition as vps_num_dpb_params signaling (e.g., when there is more then one layer included into an OLS (!each_layer_is_an_ols_flag)). In such case, the signaling of vps_num_dpb_params and vps_general_hrd_params_present_flag can be combined under the one condition to avoid checking the condition twice. In one example, it can be implemented as follows:

In SPS, when independent layer is included into and OLS, the dpb_parameters( ) may be signaled but is not used, since the dpb_parameters( ) is VPS is utilized. In accordance with one or more techniques of this disclosure, the semantics of the sps_ptl_dpb_hrd_params_present_flag syntax element may be modified such that dpb_parameters( ) is required to be signaled only when SPS is referred by a single layer. In one example, it is modified as follows:

sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that a profile_tier_level( ) syntax structure and a dpb_parameters( ) syntax structure are present in the SPS, and a general_hrd_parameters( ) syntax structure and an ols_hrd_parameters( ) syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures is present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to 1 when the SPS is referred by a single layer included into an OLS.

The following example syntax and semantics may illustrate one or more implementations of the above-described techniques. Modifications relative to VVC Draft 8 are presented in italics.

The following example syntax and semantics may illustrate one or more implementations of the above-described techniques. Modifications relative to VVC Draft 8 are presented in italics.

vps_num_dpb_params_minus1 specifies the number minus 1 of dpb_parameters( ) syntax structures in the VPS. The value of vps_num_dpb_params_minus1 shall be in the range of 0 to 15, inclusive. When not present, the value of vps_num_dpb_params_minus1 is inferred to be equal to 0.

ols_dpb_params_idx[i] specifies the index, to the list of dpb_parameters( ) syntax structures in the VPS, of the dpb_parameters( ) syntax structure that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params_minus1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

In accordance with the techniques of this disclosure, video encoder200and/or video decoder300may code a syntax element that specifies the number minus 1 of decoded picture buffer (DPB) parameters syntax structures in a video parameter set (VPS) of a current bitstream of video data; responsive to determining that the syntax element is not present in the bitstream, infer that the number of DPB syntax structures in the VPS is zero; and reconstruct video data represented by the current bitstream.

While described generally with reference to decoded picture buffer (DPB) structures, the techniques of this disclosure may be equally applicable to other syntax structures. As one example, the techniques of this disclosure may be applicable to profile tier level (PTL) syntax structures. As another example, the techniques of this disclosure may be applicable to hypothetical reference decoder (HRD) syntax structures.

In some examples, it may be desirable for a video coder to utilize a consistent design in signaling of PTL, HRD, and DPB structures. For instance, a video coder may signal a common flag to indicate the presence or absence of PTL, DBP, and HRD parameters (e.g., sps_ptl_dpb_hrd_params_present_flag) in the sequence parameter set (SPS)

In accordance with one or more techniques of this disclosure, a video coder may signal a common flag to indicate the presence or absence of DBP and HRD parameters in the video parameter set (VPS). The video coder may separately signal a flag to indicate the presence or absence of PTL parameters (e.g., as the PTL parameters may be used for session negotiation purposes).

The following example syntax and semantics may illustrate one or more implementations of the above-described techniques. Modifications relative to VVC Draft 8 are presented in italics.

ols_dpb_params_idx[i] specifies the index, to the list of dpb_parameters( ) syntax structures in the VPS, of the dpb_parameters( ) syntax structure that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params_minus1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) and general_hrd_parameters( ) syntax structures that apply to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

vps_dpb_hrd_params_present_flag shall be equal to 1 if more than one layer is included into any OLS in VPS.

In SPS semantics, the inference to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is removed as it is not sufficient since in case of more than one layer in OLS dpb_parameters( ) and ols_hrd_parameters( ) are derived from VPS and shall be signaled there.

sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that a profile_tier_level( ) syntax structure and a dpb_parameters( ) syntax structure are present in the SPS, and a general_hrd_parameters( ) syntax structure and an ols_hrd_parameters( ) syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures is present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to 1 when sps_video_parameter_set_id is equal to 0 or only one layer is included into any OLS of the referred VPS.

The following is a clean version of the above example syntax and semantics.

vps_num_dpb_params_minus1 specifies the number minus 1 of dpb_parameters( ) syntax structures in the VPS. The value of vps_num_dpb_params_minus1 shall be in the range of 0 to 15, inclusive.

ols_dpb_params_idx[i] specifies the index, to the list of dpb_parameters( ) syntax structures in the VPS, of the dpb_parameters( ) syntax structure that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params_minus1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) and general_hrd_parameters( ) syntax structures that apply to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

vps_dpb_hrd_params_present_flag shall be equal to 1 if more than one layer is included into any OLS in VPS.

In SPS semantics, the inference to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is removed as it is not sufficient since in case of more than one layer in OLS dpb_parameters( ) and ols_hrd_parameters( ) are derived from VPS and shall be signaled there.

sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that a profile_tier_level( ) syntax structure and a dpb_parameters( ) syntax structure are present in the SPS, and a general_hrd_parameters( ) syntax structure and an ols_hrd_parameters( ) syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures is present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to 1 when sps_video_parameter_set_id is equal to 0 or only one layer is included into any OLS of the referred VPS.

In some examples, a video coder may signal the presence or absence of PTL, DBP, and HRD structures under one common gating flag in the SPS, while PTL may always be signaled in VPS (vps_num_ptls_minus1). PTL signalled in VPS can be used for session negotiation, however may not currently be a mechanism to disable PTL signaling in VPS even for the case having only a single layer in an OLS.

In accordance with one or more techniques of this disclosure, a video coder may signal a common gating flag in the VPS to indicate the presence or absence of PTL, DPB, and HRD syntax structures. For instance, the video coder may include PTL under the common gating flag along with DPB and HRD in the VPS.

The following example syntax and semantics may illustrate one or more implementations of the above-described techniques. Modifications relative to VVC Draft 8 are presented in italics.

vps_num_dpb_params_minus1 specifies the number minus 1 of dpb_parameters( ) syntax structures in the VPS. The value of vps_num_dpb_params shall be in the range of 0 to 15, inclusive.

ols_dpb_params_idx[i] specifies the index, to the list of dpb_parameters( ) syntax structures in the VPS, of the dpb_parameters( ) syntax structure that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params_minus1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

vps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that the syntax structures profile_tier_level( ) dpb_parameters( ), general_hrd_parameters( ) and other HRD parameters are present in the VPS RBSP syntax structure. vps_ptl dpb_hrd_params_present_flag equal to 0 specifies that these syntax structures are not present in the VPS RBSP syntax structure. When not present, the value of vps_ptl_dpb_hrd_params_present_flag is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the general_hrd_parameters( ) and dpb_parameters( ) syntax structures that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

vps_ptl_dpb_hrd_params_present_flag shall be equal to 1 if more than one layer is included into any OLS in VPS.

In SPS semantics, the inference to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is removed as it is not sufficient since in case of more than one layer in OLS dpb_parameters( ) and ols_hrd_parameters( ) are derived from VPS and shall be signaled there.

sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that a profile_tier_level( ) syntax structure and a dpb_parameters( ) syntax structure are present in the SPS, and a general_hrd_parameters( ) syntax structure and an ols_hrd_parameters( ) syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures is present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to 1 when sps_video_parameter_set_id is equal to 0 or only one layer is included into any OLS of the referred VPS.

The following is a clean version of the above example syntax and semantics.

vps_num_dpb_params_minus1 specifies the number minus 1 of dpb_parameters( ) syntax structures in the VPS. The value of vps_num_dpb_params shall be in the range of 0 to 15, inclusive.

ols_dpb_params_idx[i] specifies the index, to the list of dpb_parameters( ) syntax structures in the VPS, of the dpb_parameters( ) syntax structure that applies to the i-th OLS when NumLayersInOls[i] is greater than 1. When present, the value of ols_dpb_params_idx[i] shall be in the range of 0 to vps_num_dpb_params_minus1, inclusive. When ols_dpb_params_idx[i] is not present, the value of ols_dpb_params_idx[i] is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the dpb_parameters( ) syntax structure that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

vps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that the syntax structures profile_tier_level( ) dpb_parameters( ), general_hrd_parameters( ) and other HRD parameters are present in the VPS RBSP syntax structure. vps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that these syntax structures are not present in the VPS RBSP syntax structure. When not present, the value of vps_ptl_dpb_hrd_params_present_flag is inferred to be equal to 0.

When NumLayersInOls[i] is equal to 1, the general_hrd_parameters( ) and dpb_parameters( ) syntax structures that applies to the i-th OLS is present in the SPS referred to by the layer in the i-th OLS.

vps_ptl_dpb_hrd_params_present_flag shall be equal to 1 if more than one layer is included into any OLS in VPS.

In SPS semantics, the inference to vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]] is removed as it is not sufficient since in case of more than one layer in OLS dpb_parameters( ) and ols_hrd_parameters( ) are derived from VPS and shall be signaled there.

sps_ptl_dpb_hrd_params_present_flag equal to 1 specifies that a profile_tier_level( ) syntax structure and a dpb_parameters( ) syntax structure are present in the SPS, and a general_hrd_parameters( ) syntax structure and an ols_hrd_parameters( ) syntax structure may also be present in the SPS. sps_ptl_dpb_hrd_params_present_flag equal to 0 specifies that none of these four syntax structures is present in the SPS. The value of sps_ptl_dpb_hrd_params_present_flag shall be equal to 1 when sps_video_parameter_set_id is equal to 0 or only one layer is included into any OLS of the referred VPS.

In the above example, it may be required for a video coder to signal the presence or absence of DBP, HRD structures, and optionally PTL syntax structures, in the VPS for all cases, including cases where all layers are independent. However, there is the potential for an independent layer to be extracted into a single bitstream where VPS presence may be optional.

In accordance with one or more techniques of this disclosure, a video coder may signal DPB, HRD, or PTL in the SPS or any other parameter set for independent layers even for the case when more that one layer is included into an OLS. When DPB, HRD, or PTL parameters are accessed. In case of more than one layer included into OLS, the video coder may determine whether a layer of the OLS is independent and, if the layer is independent, the video coder may access DPB, HRD, or PTL from an SPS or any other parameter set referred by the layer instead of accessing DPB, HRD, or PTL from the VPS. In some examples, the video coder may access those parameters (e.g., DPB, HRD, or PTL) from VPS for the dependent layers. A similar method may be used for any other parameters. In this way, the video coder may enable VPS optional functionality.

FIGS. 2A and 2Bare conceptual diagrams illustrating an example quadtree binary tree (QTBT) structure130, and a corresponding coding tree unit (CTU)132. The solid lines represent quadtree splitting, and dotted lines indicate binary tree splitting. In each split (i.e., non-leaf) node of the binary tree, one flag is signaled to indicate which splitting type (i.e., horizontal or vertical) is used, where 0 indicates horizontal splitting and 1 indicates vertical splitting in this example. For the quadtree splitting, there is no need to indicate the splitting type, because quadtree nodes split a block horizontally and vertically into 4 sub-blocks with equal size. Accordingly, video encoder200may encode, and video decoder300may decode, syntax elements (such as splitting information) for a region tree level of QTBT structure130(i.e., the solid lines) and syntax elements (such as splitting information) for a prediction tree level of QTBT structure130(i.e., the dashed lines). Video encoder200may encode, and video decoder300may decode, video data, such as prediction and transform data, for CUs represented by terminal leaf nodes of QTBT structure130.

In general, CTU132ofFIG. 2Bmay be associated with parameters defining sizes of blocks corresponding to nodes of QTBT structure130at the first and second levels. These parameters may include a CTU size (representing a size of CTU132in samples), a minimum quadtree size (MinQTSize, representing a minimum allowed quadtree leaf node size), a maximum binary tree size (MaxBTSize, representing a maximum allowed binary tree root node size), a maximum binary tree depth (MaxBTDepth, representing a maximum allowed binary tree depth), and a minimum binary tree size (MinBTSize, representing the minimum allowed binary tree leaf node size).

The root node of a QTBT structure corresponding to a CTU may have four child nodes at the first level of the QTBT structure, each of which may be partitioned according to quadtree partitioning. That is, nodes of the first level are either leaf nodes (having no child nodes) or have four child nodes. The example of QTBT structure130represents such nodes as including the parent node and child nodes having solid lines for branches. If nodes of the first level are not larger than the maximum allowed binary tree root node size (MaxBTSize), then the nodes can be further partitioned by respective binary trees. The binary tree splitting of one node can be iterated until the nodes resulting from the split reach the minimum allowed binary tree leaf node size (MinBTSize) or the maximum allowed binary tree depth (MaxBTDepth). The example of QTBT structure130represents such nodes as having dashed lines for branches. The binary tree leaf node is referred to as a coding unit (CU), which is used for prediction (e.g., intra-picture or inter-picture prediction) and transform, without any further partitioning. As discussed above, CUs may also be referred to as “video blocks” or “blocks.”

In one example of the QTBT partitioning structure, the CTU size is set as 128×128 (luma samples and two corresponding 64×64 chroma samples), the MinQTSize is set as 16×16, the MaxBTSize is set as 64×64, the MinBTSize (for both width and height) is set as 4, and the MaxBTDepth is set as 4. The quadtree partitioning is applied to the CTU first to generate quad-tree leaf nodes. The quadtree leaf nodes may have a size from 16×16 (i.e., the MinQTSize) to 128×128 (i.e., the CTU size). If the leaf quadtree node is 128×128, the leaf quadtree node will not be further split by the binary tree, because the size exceeds the MaxBTSize (i.e., 64×64, in this example). Otherwise, the leaf quadtree node will be further partitioned by the binary tree. Therefore, the quadtree leaf node is also the root node for the binary tree and has the binary tree depth as 0. When the binary tree depth reaches MaxBTDepth (4, in this example), no further splitting is permitted. When the binary tree node has a width equal to MinBTSize (4, in this example), it implies no further horizontal splitting is permitted. Similarly, a binary tree node having a height equal to MinBTSize implies no further vertical splitting is permitted for that binary tree node. As noted above, leaf nodes of the binary tree are referred to as CUs, and are further processed according to prediction and transform without further partitioning.

FIG. 3is a block diagram illustrating an example video encoder200that may perform the techniques of this disclosure.FIG. 3is provided for purposes of explanation and should not be considered limiting of the techniques as broadly exemplified and described in this disclosure. For purposes of explanation, this disclosure describes video encoder200according to the techniques of JEM, VVC (ITU-T H.266, under development), and HEVC (ITU-T H.265). However, the techniques of this disclosure may be performed by video encoding devices that are configured to other video coding standards.

In the example ofFIG. 3, video encoder200includes video data memory230, mode selection unit202, residual generation unit204, transform processing unit206, quantization unit208, inverse quantization unit210, inverse transform processing unit212, reconstruction unit214, filter unit216, decoded picture buffer (DPB)218, and entropy encoding unit220. Any or all of video data memory230, mode selection unit202, residual generation unit204, transform processing unit206, quantization unit208, inverse quantization unit210, inverse transform processing unit212, reconstruction unit214, filter unit216, DPB218, and entropy encoding unit220may be implemented in one or more processors or in processing circuitry. For instance, the units of video encoder200may be implemented as one or more circuits or logic elements as part of hardware circuitry, or as part of a processor, ASIC, of FPGA. Moreover, video encoder200may include additional or alternative processors or processing circuitry to perform these and other functions.

Video encoder200stores reconstructed blocks in DPB218. For instance, in examples where operations of filter unit216are not needed, reconstruction unit214may store reconstructed blocks to DPB218. In examples where operations of filter unit216are needed, filter unit216may store the filtered reconstructed blocks to DPB218. Motion estimation unit222and motion compensation unit224may retrieve a reference picture from DPB218, formed from the reconstructed (and potentially filtered) blocks, to inter-predict blocks of subsequently encoded pictures. In addition, intra-prediction unit226may use reconstructed blocks in DPB218of a current picture to intra-predict other blocks in the current picture.

Video encoder200represents an example of a device configured to encode video data including a memory configured to store video data, and one or more processing units implemented in circuitry and configured to code a syntax element that specifies the number minus 1 of decoded picture buffer (DPB) parameters syntax structures in a video parameter set (VPS) of a current bitstream of video data; responsive to determining that the syntax element is not present in the bitstream, infer that the number of DPB syntax structures in the VPS is zero; and reconstruct video data represented by the current bitstream. Video encoder200may configure a structure of DPB218based on the structure(s) described by the DPB syntax structures in the VPS.

In the example ofFIG. 4, video decoder300includes coded picture buffer (CPB) memory320, entropy decoding unit302, prediction processing unit304, inverse quantization unit306, inverse transform processing unit308, reconstruction unit310, filter unit312, and decoded picture buffer (DPB)314. Any or all of CPB memory320, entropy decoding unit302, prediction processing unit304, inverse quantization unit306, inverse transform processing unit308, reconstruction unit310, filter unit312, and DPB314may be implemented in one or more processors or in processing circuitry. For instance, the units of video decoder300may be implemented as one or more circuits or logic elements as part of hardware circuitry, or as part of a processor, ASIC, of FPGA. Moreover, video decoder300may include additional or alternative processors or processing circuitry to perform these and other functions.

Video decoder300may store the reconstructed blocks in DPB314. For instance, in examples where operations of filter unit312are not performed, reconstruction unit310may store reconstructed blocks to DPB314. In examples where operations of filter unit312are performed, filter unit312may store the filtered reconstructed blocks to DPB314. As discussed above, DPB314may provide reference information, such as samples of a current picture for intra-prediction and previously decoded pictures for subsequent motion compensation, to prediction processing unit304. Moreover, video decoder300may output decoded pictures (e.g., decoded video) from DPB314for subsequent presentation on a display device, such as display device118ofFIG. 1.

In this manner, video decoder300represents an example of a video decoding device including a memory configured to store video data, and one or more processing units implemented in circuitry and configured to decode a syntax element that specifies the number minus 1 of decoded picture buffer (DPB) parameters syntax structures in a video parameter set (VPS) of a current bitstream of video data; responsive to determining that the syntax element is not present in the bitstream, infer that the number of DPB syntax structures in the VPS is zero; and reconstruct video data represented by the current bitstream. Video decoder300may configure a structure of DPB314based on the structure(s) described by the DPB syntax structures in the VPS.

FIG. 5is a flowchart illustrating an example method for encoding a current block in accordance with one or more techniques of this disclosure. The current block may comprise a current CU. Although described with respect to video encoder200(FIGS. 1 and 3), it should be understood that other devices may be configured to perform a method similar to that ofFIG. 5.

In this example, video encoder200initially predicts the current block (350). For example, video encoder200may form a prediction block for the current block. Video encoder200may then calculate a residual block for the current block (352). To calculate the residual block, video encoder200may calculate a difference between the original, unencoded block and the prediction block for the current block. Video encoder200may then transform the residual block and quantize transform coefficients of the residual block (354). Next, video encoder200may scan the quantized transform coefficients of the residual block (356). During the scan, or following the scan, video encoder200may entropy encode the transform coefficients (358). For example, video encoder200may encode the transform coefficients using CAVLC or CABAC. Video encoder200may then output the entropy encoded data of the block (360). Video encoder200may further to selectively encode a syntax element that specifies the number minus 1 of decoded picture buffer (DPB) parameters syntax structures in a video parameter set (VPS) of a current bitstream of video data.

FIG. 6is a flowchart illustrating an example method for decoding a current block of video data. The current block may comprise a current CU. Although described with respect to video decoder300(FIGS. 1 and 4), it should be understood that other devices may be configured to perform a method similar to that ofFIG. 6.

Video decoder300may receive entropy encoded data for the current block, such as entropy encoded prediction information and entropy encoded data for coefficients of a residual block corresponding to the current block (370). Video decoder300may entropy decode the entropy encoded data to determine prediction information for the current block and to reproduce coefficients of the residual block (372). Video decoder300may predict the current block (374), e.g., using an intra- or inter-prediction mode as indicated by the prediction information for the current block, to calculate a prediction block for the current block. Video decoder300may then inverse scan the reproduced coefficients (376), to create a block of quantized transform coefficients. Video decoder300may then inverse quantize and inverse transform the transform coefficients to produce a residual block (378). Video decoder300may ultimately decode the current block by combining the prediction block and the residual block (380). Video decoder300may further decode a syntax element that specifies the number minus 1 of decoded picture buffer (DPB) parameters syntax structures in a video parameter set (VPS) of a current bitstream of video data; responsive to determining that the syntax element is not present in the bitstream, infer that the number of DPB syntax structures in the VPS is zero; and reconstruct video data represented by the current bitstream.

FIG. 7is a flowchart illustrating an example method for signaling DPB parameters, in accordance with one or more aspects of this disclosure. Although described with respect to video decoder300(FIGS. 1 and 4), it should be understood that other devices may be configured to perform a method similar to that ofFIG. 7(e.g., video encoder200).

As shown inFIG. 7, video decoder300may determine whether decoded picture buffer (DPB) parameters syntax structures are present in a sequence parameter set (SPS) of a current bitstream (702). For instance, entropy decoding unit302of video decoder300may decode a syntax element that specifies whether a DPB parameters syntax structure is present in the SPS. As one example, entropy decoding unit302may decode a sps_ptl_dpb_hrd_params_present_flag syntax element. Where the sps_ptl_dpb_hrd_params_present_flag syntax element is equal to 1, a DPB parameters syntax structure may be present in the SPS. Alternatively, where the sps_ptl_dpb_hrd_params_present_flag syntax element is equal to 0, the SPS may not include a DPB parameters syntax structure. In accordance with one or more aspects of this disclosure, the sps_ptl_dpb_hrd_params_present_flag syntax element may always be 1 (i.e., the SPS contains a DPB parameters syntax structure) when the SPS is referred to by a layer that is an only layer of an output layer set (OLS) (i.e., where sps_video_parameter_set_id is equal to 0). Additionally or alternatively, the value of sps_ptl_dpb_hrd_params_present_flag shall be equal to 1 when sps_video_parameter_set_id is equal to 0 or only one layer is included into any OLS of the referred VPS.

Where the DPB parameters syntax structure is present in the SPS (“Yes” branch of702), video decoder300may decode the DPB parameters syntax structure from the SPS (704). For instance, entropy decoding unit302may decode the DPB parameters syntax structure by at least decoding a syntax structure that include syntax elements that provide information of DPB size, maximum picture reorder number, and maximum latency for one or more OLSs.

Where the DPB parameters syntax structure is not present in the SPS (“No” branch of702), video decoder300may decode, from a video parameter set (VPS), a syntax element that specifies whether each OLS contains only one layer or is allowed to contain multiple layers (706) and determine, based on the syntax element, whether each OLS is allowed to contain multiple layers (708). For instance, entropy decoding unit302may decode, from the VPS, an each_layer_is_an_ols_flag syntax element. Where the each_layer_is_an_ols_flag syntax element is equal to 1, video decoder300may determine that each OLS contains only one layer. Where the each_layer_is_an_ols_flag syntax element is equal to 0, video decoder300may determine that each OLS is allowed to contain multiple layers.

Where each OLS is allowed to contain multiple layers (“Yes” branch of708), video decoder300may decode, from the VPS, a syntax element that specifies the number minus one of DPB parameters syntax structures in the VPS (710). For instance, entropy decoding unit302may decode a vps_num_dpb_params_minus1 syntax element.

Video decoder300may reconstruct, based on the DPB parameters syntax structure(s), video data represented by the current bitstream (712). For instance, video decoder300may configure one or more aspects (e.g., size, maximum picture reorder number, maximum latency) of DPB314. As discussed above, DPB314may store pictures, which video decoder300may output and/or use as reference video data when decoding subsequent data or pictures of the encoded video bitstream.

Where each OLS is not allowed to contain multiple layers (i.e., each OLS contains only one layer) (“No” branch of708), video decoder300may infer that the VPS contains zero DPB syntax structures (714). For instance, where the each_layer_is_an_ols_flag syntax element is equal to 1, the coded bitstream may not include a vps_num_dpb_params_minus1 syntax element. By signalling the number of DPB parameters syntax structures in the VPS as the number minus one, the techniques of this disclosure enable video coders to avoid having to explicitly signal that the VPS includes zero DPB parameters syntax structures. As such, the techniques of this disclosure enable a reduction in the quantity of bits used to signal the number of DPB parameters syntax structures included in the VPS, which improves coding efficiency.

In some examples, video decoder300may condition the decoding of one or more other syntax elements on the value of the syntax element that specifies whether each OLS contains only one layer or is allowed to contain multiple layers. For instance, responsive to the syntax element indicating that each OLS is allowed to contain multiple layers, video decoder300may decode, from the VPS, a syntax element that specifies whether the VPS includes a hypothetical reference decoder (HRD) parameters syntax structure. As one example, entropy decoding unit302may decode a hrd_params_present_flag from the VPS.

The following numbered clauses may illustrate one or more aspects of this disclosure:

Clause 1. A method of coding video data, the method comprising: coding a syntax element that specifies the number minus 1 of decoded picture buffer (DPB) parameters syntax structures in a video parameter set (VPS) of a current bitstream of video data; responsive to determining that the syntax element is not present in the bitstream, inferring that the number of DPB syntax structures in the VPS is zero; and reconstructing video data represented by the current bitstream.

Clause 2. The method of clause 1, wherein coding the syntax element comprises selectively coding the syntax element based on a value of a syntax element that specifies a number of layers contained in each output layer set (OLS).

Clause 3. The method of clause 2, wherein the syntax element that specifies the number minus 1 of DPB parameters syntax structures in the VPS comprises a vps_num_dpb_params_minus1 syntax element.

Clause 4. The method of clause 3, wherein the syntax element that specifies the number of layers contained in each OLS comprises each_layer_is_an_ols_flag syntax element.

Clause 5. A method of coding video data, the method comprising: coding, in a video parameter set (VPS) of a current bitstream of video data, a syntax element that jointly indicates whether decoded picture buffer (DPB) parameters syntax structures and hypothetical reference decoder (HRD) parameters syntax structures are present in the VPS; responsive to the syntax element indicating that DPB parameters syntax structures and HRD parameters syntax structures are present in the VPS, decoding, from the VPS, the DPB parameters syntax structures and the HRD parameters syntax structures; and reconstructing, based on the DPB parameters syntax structures and the HRD parameters syntax structures, video data represented by the current bitstream.

Clause 6. The method of clause 5, wherein coding the syntax element comprises selectively coding the syntax element based on a value of a syntax element that specifies a number of layers contained in each output layer set (OLS).

Clause 7. The method of clause 6, wherein the syntax element that jointly indicates whether the DPB parameters syntax structures and the HRD parameters syntax structures are present in the VPS comprises a vps_dpb_hrd_params_present_flag syntax element.

Clause 8. The method of clause 7, wherein the syntax element that specifies the number of layers contained in each OLS comprises each_layer_is_an_ols_flag syntax element.

Clause 9. A method of coding video data, the method comprising: coding, in a video parameter set (VPS) of a current bitstream of video data, a syntax element that jointly indicates whether decoded picture buffer (DPB) parameters syntax structures, hypothetical reference decoder (HRD) parameters syntax structures, and profile tier level (PTL) parameters syntax structures are present in the VPS; responsive to the syntax element indicating that DPB, HRD, and PTL parameters syntax structures are present in the VPS, decoding, from the VPS, the DPB, HRD, and PTL parameters syntax structures; and reconstructing, based on the DPB, HRD, and PTL parameters syntax structures, video data represented by the current bitstream.

Clause 10. The method of clause 9, wherein coding the syntax element comprises selectively coding the syntax element based on a value of a syntax element that specifies a number of layers contained in each output layer set (OLS).

Clause 11. The method of clause 10, wherein the syntax element that jointly indicates whether the DPB, HRD, and PTL parameters syntax structures are present in the VPS comprises a vps_ptl_dpb_hrd_params_present_flag syntax element.

Clause 12. The method of clause 11, wherein the syntax element that specifies the number of layers contained in each OLS comprises each_layer_is_an_ols_flag syntax element.

Clause 13. The method of any of clauses 1-12, wherein coding comprises decoding.

Clause 14. The method of any of clauses 1-13, wherein coding comprises encoding.

Clause 15. A device for coding video data, the device comprising one or more means for performing the method of any of clauses 1-14.

Clause 16. The device of clause 15, wherein the one or more means comprise one or more processors implemented in circuitry.

Clause 17. The device of any of clauses 15 and 16, further comprising a memory to store the video data.

Clause 18. The device of any of clauses 15-17, further comprising a display configured to display decoded video data.

Clause 19. The device of any of clauses 15-18, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

Clause 20. The device of any of clauses 15-19, wherein the device comprises a video decoder.

Clause 21. The device of any of clauses 15-19, wherein the device comprises a video encoder.

Clause 22. A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to perform the method of any of clauses 1-14.

Clause 23. A method of coding video data, the method comprising: determining a number of decoded picture buffer (DPB) parameters syntax structures in a video parameter set (VPS) of a current bitstream of video data; and coding a block based on the determined number of DPB parameters syntax structures in the VPS.

Clause 24. The method of clause 23, wherein determining the number of DPB parameters syntax structures in the VPS comprises inferring that the number of DPB parameters syntax structures in the VPS is zero responsive to determining that a syntax element that specifies the number of DPB parameters syntax structures in the VPS is not present in the bitstream.

Clause 25. The method of clause 23, further comprising avoiding signaling a syntax element that specifies a number of DPB parameters syntax structures in the VPS is not present in the bitstream based on the determination that the number of DPB parameters syntax structures in the VPS is zero.

Clause 26. The method of any of clauses 24 and 25, wherein the syntax element that specifies the number of DPB parameters syntax structures in the VPS comprises the number minus 1 of the DPB parameters syntax structures in the VPS of the current bitstream of video data.

Clause 27. The method of clause 24, wherein the number of DPB parameters syntax structures in the VPS comprises a first number of DPB parameters syntax structures, and wherein the syntax element comprises a first instance of the syntax element, the method further comprising determining a second number of DPB parameters syntax structures in the VPS based on a second instance of the syntax element that specifies the second number of DPB parameters syntax structures in the VPS.

Clause 28. The method of clause 25, wherein the number of DPB parameters syntax structures in the VPS comprises a first number of DPB parameters syntax structures, and wherein the syntax element comprises a first instance of the syntax element, the method further comprising signaling a second number of DPB parameters syntax structures in the VPS based on a second instance of the syntax element that specifies the second number of DPB parameters syntax structures in the VPS, wherein the second number of DPB parameters syntax structures is greater than zero.

Clause 29. A method of decoding video data, the method comprising: decoding, when a sequence parameter set (SPS) of a current bitstream of video data is referred to by a layer that is an only layer of an output layer set (OLS), a decoded picture buffer (DPB) parameters syntax structure from the SPS; and reconstructing, based on the DPB parameters syntax structure, video data represented by the current bitstream.

Clause 30. The method of clause 29, wherein the DPB parameters syntax structure includes syntax elements that provide information of DPB size, maximum picture reorder number, and maximum latency for one or more OLSs.

Clause 31. The method of clause 29 or 30, further comprising: decoding, from a video parameter set (VPS) of the current bitstream of video data, a syntax element that specifies the number minus one of DPB parameters syntax structures in the VPS; and responsive to determining that the syntax element is not present in the bitstream, inferring that the number of DPB syntax structures in the VPS is zero.

Clause 32. The method of clause 31, further comprising: decoding, when only one layer is included into any OLS of the VPS, the DPB parameters syntax structure from the SPS.

Clause 33. The method of clause 31 or 32, wherein the syntax element comprises a vps_num_dpb_params_minus1 syntax element.

Clause 34. The method of any of clauses 31-33, wherein the syntax element that specifies the number minus one of DPB parameters syntax structures in the VPS is a first syntax element, further comprising: decoding, from the VPS, a second syntax element that specifies whether each OLS contains only one layer or is allowed to contain multiple layers, wherein decoding the first syntax element comprises: responsive to the second syntax element indicating that each OLS is allowed to contain multiple layers, decoding the first syntax element.

Clause 35. The method of clause 34, wherein the second syntax element comprises an each_layer_is_an_ols_flag syntax element.

Clause 36. The method of clause 34 or 35, further comprising: responsive to the second syntax element indicating that each OLS is allowed to contain multiple layers, decoding, from the VPS, a third syntax element that specifies whether the VPS includes a hypothetical reference decoder (HRD) parameters syntax structure.

Clause 37. The method of clause 36, wherein the third syntax element comprises a hrd_params_present_flag.

Clause 38. A video decoding device includes: a memory configured to store at least a portion of a coded video bitstream; and one or more processors that are implemented in circuitry and configured to perform the method of any of clauses 29-37

Clause 39. A video decoding device comprising means for performing the method of any of clauses 29-37.

Clause 40. A computer-readable storage medium storing instructions that, when executed, cause one or more processors to perform the method of any of clauses 29-37

Clause 41. Any combination of clauses 1-40.