Scalable nesting SEI message for a given layer

The scalable nesting all_layers_flag in video coding systems addresses conformance test errors in incomplete AUs by applying SEI messages to all layers, improving efficiency and accuracy in encoders and decoders.

JP7612818B2Active Publication Date: 2025-01-14HUAWEI TECH CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023197913
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-09-24
Filing Date
2023-11-22
Publication Date
2025-01-14
Estimated Expiration
2040-09-21

AI Technical Summary

Technical Problem

Existing video coding systems face conformance test errors when using scalable nested SEI messages due to incomplete access units (AUs) lacking pictures in certain layers, leading to unpredictable errors in virtual reference decoder (HRD) testing.

Method used

Implementing a scalable nesting all_layers_flag to indicate that SEI messages apply to all layers specified in the video parameter set (VPS), eliminating redundant signaling and ensuring correct conformance testing across incomplete AUs.

Benefits of technology

Enhances coding efficiency by reducing processor, memory, and network signaling resource usage, while ensuring accurate conformance testing without unpredictable errors in both encoders and decoders.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007612818000019
    Figure 0007612818000019
  • Figure 0007612818000020
    Figure 0007612818000020
  • Figure 0007612818000021
    Figure 0007612818000021
Patent Text Reader

Abstract

To provide a decoding method and an encoding method, and a complex machine, an encoder and a coding device related to scalable nesting supplemental enhancement information (SEI) messages.SOLUTION: A decoding method includes receiving a bitstream 700 at a decoder. The bitstream includes a scalable nesting SEI message, at one or more layers and a current supplemental enhancement information (SEI) network abstraction layer (NAL) unit. The scalable nesting SEI message contains a syntax element that specifies whether a scalable-nested SEI message is applied to all layers having the scalable-nested SEI message and a layer identifier (Id) that is greater than or equal to a layer Id of the current SEI NAL unit. A coded picture is decoded from one or more layers to produce a decoded picture.SELECTED DRAWING: Figure 7
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This disclosure relates generally to video coding, and more particularly to scalable nesting supplemental enhancement information (SEI) messages used to support coding layers in multi-layer bitstreams. [Background technology]

[0002] The amount of video data required to depict even a relatively short video can be substantial, which can become difficult when the data is streamed or otherwise communicated over a communications network that has limited bandwidth capacity. Therefore, video data is typically compressed before being communicated over modern telecommunications networks. The size of the video can also be an issue when the video is stored on a storage device, since memory resources may be limited. Video compression devices often use software and / or hardware at the source to code the video data prior to transmission or storage, thereby reducing the amount of data required to represent a digital video image. The compressed data is then received at the destination by a video decompression device, which decodes the video data. With limited network resources and a constantly increasing demand for higher video quality, improved compression and decompression techniques that improve compression ratios with little sacrifice in picture quality are desirable. Summary of the Invention

[0003] In one embodiment, the disclosure includes a method implemented in a decoder, the method including receiving, by a receiver of the decoder, a bitstream including a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting SEI message and a scalable nesting all layers flag (all_layers_flag) that specifies whether the scalable nesting SEI message applies to all layers having a layer identifier (Id) that is greater than or equal to the layer identifier (Id) of the current SEI NAL unit; decoding, by a processor of the decoder, coded pictures from the one or more layers to generate a decoded picture; and forwarding, by the processor, the decoded picture for display as part of a decoded video sequence.

[0004] Some video coding systems use SEI messages. The SEI messages contain information that is not needed by the decoding process to determine the values ​​of samples in a decoded picture. For example, the SEI messages may contain parameters used to inspect the bitstream for conformance with a standard. In some examples, video is coded into a bitstream using multiple layers. The scalable nesting SEI message may be used to include SEI messages for multiple layers. For example, the scalable nesting SEI message includes a scalable nested SEI message. A problem occurs when a flag is used to indicate that a scalable nested SEI message in a scalable nesting SEI message applies to all layers in an access unit (AU). An AU is a set of coded pictures that are included in different layers and that relate to the same output time. This approach works when all AUs contain pictures for all layers. However, in some cases, a picture may be present for an output time in some layers and omitted in other layers. For example, a high frame rate layer may include pictures in each AU, while a low frame rate layer omits pictures in many AUs occupied by the high frame rate layer. As a result, the flag ensures that the SEI message applies only to layers that include pictures in the current AU. This causes a conformance test error because the hypothetical reference decoder (HRD) may not be able to associate the scalable nesting SEI message with a layer that omits pictures in the current AU. For example, such a layer may include pictures in an AU after the current AU. In such a case, the HRD will not recognize the scalable nesting SEI message as applying to such a layer when the later AUs are tested for conformance.Therefore, the HRD may not be able to accurately test such layers for conformance in later AUs when flags for all layers are used in an incomplete AU.

[0005] This example includes the scalable nesting all_layers_flag to correct the above error. The scalable nesting all_layers_flag can be set to indicate that the scalable nesting SEI message in the scalable nesting SEI message applies to all layers specified in the video parameter set (VPS). The VPS lists all layers. Therefore, this approach allows the encoder to clearly indicate when the scalable nesting SEI message applies globally to all layers. The HRD conformance test process can check the bitstream for conformance without returning unpredictable errors in AUs following an incomplete AU associated with the scalable nesting SEI message. Therefore, the scalable nesting all_layers_flag increases the functionality of the encoder and / or decoder by allowing the bitstream to be correctly checked for conformance when incomplete AUs are present. Furthermore, the scalable nesting all_layers_flag reduces the size of the coded bitstream by eliminating explicit layer signaling for scalable nesting SEI messages when such messages apply to all layers, resulting in increased coding efficiency, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0006] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that the scalable nesting all_layers_flag is equal to 1 when it specifies that the scalable nested SEI message applies to all layers having a NAL unit header layer Id (nuh_layer_id) greater than or equal to the nuh_layer_id of the current SEI NAL unit.

[0007] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that the scalable nesting all_layers_flag is equal to 0 when specifying that the scalable nested SEI message may or may not apply to all layers with a nuh_layer_id greater than or equal to the nuh_layer_id of the current SEI NAL unit.

[0008] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides for further including deriving, by the processor, a nestingNumLayers variable that specifies the number of layers to which the scalable nested SEI message is applied.

[0009] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that the aspect further includes deriving, by the processor, a list of nesting layer Ids (NestingLayerId[i]) that specifies, for i in the range of 0 to nestingNumLayers-1 (inclusive), a list of nuh_layer_id values ​​of layers to which the scalable nested SEI message applies.

[0010] Optionally, in any of the aforementioned aspects, another implementation of the aspect is further characterized in that nestingNumLayers and NestingLayerId[i] are:

number

[0011] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that the scalable nesting SEI messages provide a mechanism for associating an SEI message with a particular layer.

[0012] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that the coded picture is decoded based on a scalable nested SEI message.

[0013] In one embodiment, the disclosure includes a method implemented in an encoder, the method including: encoding, by a processor of the encoder, a bitstream including one or more layers; encoding, by the processor, a scalable nesting SEI in a current SEI NAL unit, the scalable nesting SEI message including a scalable nesting all_layers_flag that specifies whether the scalable nested SEI message applies to the scalable nested SEI message and all layers having a layer Id that is greater than or equal to the layer Id of the current SEI NAL unit; performing, by the processor, a set of bitstream conformance tests on the layers based on the scalable nested SEI message; and storing, by a memory coupled to the processor, the bitstream for communication to a decoder.

[0014] Some video coding systems use SEI messages. The SEI messages contain information that is not needed by the decoding process to determine the values ​​of samples in a decoded picture. For example, the SEI messages may contain parameters used to inspect the bitstream for conformance with a standard. In some examples, video is coded into a bitstream using multiple layers. The scalable nesting SEI message may be used to include SEI messages for multiple layers. For example, the scalable nesting SEI message includes a scalable nested SEI message. A problem occurs when a flag is used to indicate that a scalable nested SEI message in a scalable nesting SEI message applies to all layers in an access unit (AU). An AU is a set of coded pictures that are included in different layers and that relate to the same output time. This approach works when all AUs contain pictures for all layers. However, in some cases, a picture may be present for an output time in some layers and omitted in other layers. For example, a high frame rate layer may include pictures in each AU, while a low frame rate layer omits pictures in many AUs occupied by the high frame rate layer. As a result, the flag ensures that the SEI message applies only to layers that include pictures in the current AU. This causes a conformance test error because the hypothetical reference decoder (HRD) may not be able to associate the scalable nesting SEI message with a layer that omits pictures in the current AU. For example, such a layer may include pictures in an AU after the current AU. In such a case, the HRD will not recognize the scalable nesting SEI message as applying to such a layer when the later AUs are tested for conformance.Therefore, the HRD may not be able to accurately test such layers for conformance in later AUs when flags for all layers are used in an incomplete AU.

[0015] This example includes the scalable nesting all_layers_flag to correct the above error. The scalable nesting all_layers_flag can be set to indicate that the scalable nesting SEI message in the scalable nesting SEI message applies to all layers specified in the video parameter set (VPS). The VPS lists all layers. Therefore, this approach allows the encoder to clearly indicate when the scalable nesting SEI message applies globally to all layers. The HRD conformance test process can check the bitstream for conformance without returning unpredictable errors in AUs following an incomplete AU associated with the scalable nesting SEI message. Therefore, the scalable nesting all_layers_flag increases the functionality of the encoder and / or decoder by allowing the bitstream to be correctly checked for conformance when incomplete AUs are present. Furthermore, the scalable nesting all_layers_flag reduces the size of the coded bitstream by eliminating explicit layer signaling for scalable nesting SEI messages when such messages apply to all layers, resulting in increased coding efficiency, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0016] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides further including setting scalable nesting all_layer_flag to 1 when specifying that the scalable nested SEI message applies to all layers with a nuh_layer_id greater than or equal to the nuh_layer_id of the current SEI NAL unit.

[0017] Optionally, provided that in any of the aforementioned aspects, the method further includes setting a scalable nesting all_layer_flag to 0 when specifying that the scalable nested SEI message may or may not apply to all layers having a nuh_layer_id greater than or equal to the nuh_layer_id of the current SEI NAL unit.

[0018] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that performing the set of bitstream conformance tests further includes deriving a nestingNumLayers variable that specifies the number of layers to which the scalable nested SEI message applies.

[0019] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that performing the set of bitstream conformance tests further includes deriving NestingLayerId[i], for i in the range of 0 to nestingNumLayers-1, inclusive, that specifies a list of nuh_layer_id values ​​of layers to which the scalable nested SEI message applies.

[0020] Optionally, in any of the aforementioned aspects, another implementation of the aspect is further characterized in that nestingNumLayers and NestingLayerId[i] are:

number

[0021] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides a mechanism for scalable nesting SEI messages to associate an SEI message with a particular layer.

[0022] In an embodiment, the present disclosure comprises a video coding device including a processor, a receiver coupled to the processor, a memory coupled to the processor, and a transmitter coupled to the processor, wherein the processor, receiver, memory, and transmitter are configured to perform the method of any of the preceding aspects.

[0023] In one embodiment, the present disclosure provides a non-transitory computer-readable medium including a computer program product for use by a video coding device, the computer program product including computer-executable instructions stored on the non-transitory computer-readable medium that, when executed by a processor, causes the video coding device to perform a method of any of the preceding aspects.

[0024] In one embodiment, the disclosure provides a decoder comprising: receiving means for receiving a bitstream including a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI NAL unit, the scalable nesting SEI message including a scalable nesting SEI message and a scalable nesting all_layers_flag that specifies whether the scalable nested SEI message applies to all layers having a layer Id that is greater than or equal to the layer Id of the current SEI NAL unit; decoding means for decoding coded pictures from the one or more layers to generate a decoded picture; and forwarding means for forwarding the decoded picture for display as part of a decoded video sequence.

[0025] Some video coding systems use SEI messages. The SEI messages contain information that is not needed by the decoding process to determine the values ​​of samples in a decoded picture. For example, the SEI messages may contain parameters used to inspect the bitstream for conformance with a standard. In some examples, video is coded into a bitstream using multiple layers. The scalable nesting SEI message may be used to include SEI messages for multiple layers. For example, the scalable nesting SEI message includes a scalable nested SEI message. A problem occurs when a flag is used to indicate that a scalable nested SEI message in a scalable nesting SEI message applies to all layers in an access unit (AU). An AU is a set of coded pictures that are included in different layers and that relate to the same output time. This approach works when all AUs contain pictures for all layers. However, in some cases, a picture may be present for an output time in some layers and omitted in other layers. For example, a high frame rate layer may include pictures in each AU, while a low frame rate layer omits pictures in many AUs occupied by the high frame rate layer. As a result, the flag ensures that the SEI message applies only to layers that include pictures in the current AU. This causes a conformance test error because the hypothetical reference decoder (HRD) may not be able to associate the scalable nesting SEI message with a layer that omits pictures in the current AU. For example, such a layer may include pictures in an AU after the current AU. In such a case, the HRD will not recognize the scalable nesting SEI message as applying to such a layer when the later AUs are tested for conformance.Therefore, the HRD may not be able to accurately test such layers for conformance in later AUs when flags for all layers are used in an incomplete AU.

[0026] This example includes the scalable nesting all_layers_flag to correct the above error. The scalable nesting all_layers_flag can be set to indicate that the scalable nesting SEI message in the scalable nesting SEI message applies to all layers specified in the video parameter set (VPS). The VPS lists all layers. Therefore, this approach allows the encoder to clearly indicate when the scalable nesting SEI message applies globally to all layers. The HRD conformance test process can check the bitstream for conformance without returning unpredictable errors in AUs following an incomplete AU associated with the scalable nesting SEI message. Therefore, the scalable nesting all_layers_flag increases the functionality of the encoder and / or decoder by allowing the bitstream to be correctly checked for conformance when incomplete AUs are present. Furthermore, the scalable nesting all_layers_flag reduces the size of the coded bitstream by eliminating explicit layer signaling for scalable nesting SEI messages when such messages apply to all layers, resulting in increased coding efficiency, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0027] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that the decoder is further configured to perform the method of any of the aforementioned aspects.

[0028] In one embodiment, the disclosure includes an encoder including: encoding means for encoding a bitstream including one or more layers; and encoding a scalable nesting SEI in a current SEI NAL unit, where the scalable nesting SEI message includes the scalable nested SEI message and an all_layers_flag that specifies whether the scalable nested SEI message applies to all layers having a layer Id that is greater than or equal to the layer Id of the current SEI NAL unit; and HRD (High Level Reliability Check) means for performing a set of bitstream conformance tests on the layers based on the scalable nested SEI message; and storing means for storing the bitstream for communication to a decoder.

[0029] Some video coding systems use SEI messages. The SEI messages contain information that is not needed by the decoding process to determine the values ​​of samples in a decoded picture. For example, the SEI messages may contain parameters used to inspect the bitstream for conformance with a standard. In some examples, video is coded into a bitstream using multiple layers. The scalable nesting SEI message may be used to include SEI messages for multiple layers. For example, the scalable nesting SEI message includes a scalable nested SEI message. A problem occurs when a flag is used to indicate that a scalable nested SEI message in a scalable nesting SEI message applies to all layers in an access unit (AU). An AU is a set of coded pictures that are included in different layers and that relate to the same output time. This approach works when all AUs contain pictures for all layers. However, in some cases, a picture may be present for an output time in some layers and omitted in other layers. For example, a high frame rate layer may include pictures in each AU, while a low frame rate layer omits pictures in many AUs occupied by the high frame rate layer. As a result, the flag ensures that the SEI message applies only to layers that include pictures in the current AU. This causes a conformance test error because the hypothetical reference decoder (HRD) may not be able to associate the scalable nesting SEI message with a layer that omits pictures in the current AU. For example, such a layer may include pictures in an AU after the current AU. In such a case, the HRD will not recognize the scalable nesting SEI message as applying to such a layer when the later AUs are tested for conformance.Therefore, the HRD may not be able to accurately test such layers for conformance in later AUs when flags for all layers are used in an incomplete AU.

[0030] This example includes the scalable nesting all_layers_flag to correct the above error. The scalable nesting all_layers_flag can be set to indicate that the scalable nesting SEI message in the scalable nesting SEI message applies to all layers specified in the video parameter set (VPS). The VPS lists all layers. Therefore, this approach allows the encoder to clearly indicate when the scalable nesting SEI message applies globally to all layers. The HRD conformance test process can check the bitstream for conformance without returning unpredictable errors in AUs following an incomplete AU associated with the scalable nesting SEI message. Therefore, the scalable nesting all_layers_flag increases the functionality of the encoder and / or decoder by allowing the bitstream to be correctly checked for conformance when incomplete AUs are present. Furthermore, the scalable nesting all_layers_flag reduces the size of the coded bitstream by eliminating explicit layer signaling for scalable nesting SEI messages when such messages apply to all layers, resulting in increased coding efficiency, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0031] Optionally, in any of the aforementioned aspects, another implementation of the aspect provides that the encoder is further configured to perform the method of any of the preceding aspects.

[0032] For clarity, any one of the above-described embodiments may be combined with any one or more of the other above-described embodiments to create new embodiments within the scope of the present disclosure.

[0033] These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. [Brief description of the drawings]

[0034] For a more complete understanding of the present disclosure, reference is now made to the following brief description, taken in conjunction with the accompanying drawings and detailed description, in which like reference numerals represent like parts.

[0035] [Figure 1] 4 is a flowchart of an exemplary method for coding a video signal.

[0036] [Diagram 2] 1 is a schematic diagram of an exemplary coding and decoding (codec) system for video coding.

[0037] [Diagram 3] 1 is a schematic diagram illustrating an example video encoder.

[0038] [Figure 4] 1 is a schematic diagram illustrating an exemplary video decoder.

[0039] [Diagram 5] 1 is a schematic diagram illustrating an exemplary hypothetical reference decoder (HRD).

[0040] [Figure 6] FIG. 2 is a schematic diagram illustrating an example multi-layer video sequence configured for inter-layer prediction.

[0041] [Figure 7] FIG. 2 is a schematic diagram illustrating an exemplary bitstream.

[0042] [Figure 8] 1 is a schematic diagram of an exemplary video coding device.

[0043] [Figure 9] 1 is a flowchart of an example method for encoding a video sequence into a bitstream that includes scalable nesting SEI messages that are applied to layers.

[0044] [Figure 10] 1 is a flowchart of an example method for decoding a video sequence from a bitstream that includes a scalable nesting SEI message that is applied to a layer.

[0045] [Figure 11] 1 is a schematic diagram of an example system for encoding a video sequence using a bitstream that includes scalable nesting SEI messages that are applied to layers. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0046] First, while an example implementation of one or more embodiments is provided below, it should be understood that the disclosed systems and / or methods may be implemented using any number of technologies, whether currently known or in existence. The present disclosure is in no way limited to the example implementations, drawings, and technologies shown below, including the example designs and implementations shown and described herein, but may be modified within the scope of the appended claims to the full extent of their equivalents.

[0047] The following terms are defined as follows, unless used in the present specification in a contrary context. Specifically, the following definitions are intended to provide further clarity to the present disclosure. However, in different contexts, terms may be explained differently. Therefore, the following definitions should be considered as supplementary and should not be considered as limiting any other definitions of the explanations provided for such terms in the present specification.

[0048] A bitstream may be a sequence of bits containing video data to be compressed for transmission between an encoder and a decoder. An encoder may be a device configured to use an encoding process to compress video data into a bitstream. A decoder may be a device configured to use a decoding process to reconstruct video data from the bitstream for display. A picture may be an array of luma samples and / or chroma samples that generate a frame or a field thereof. A picture being encoded or decoded may be referred to as a current picture for clarity of discussion. A coded picture may be a coded representation of a picture that includes a video coding layer (VCL) network abstraction layer (NAL) unit that has a particular value of a NAL unit header layer identifier (nuh_layer_id) in an access unit (AU) and includes all coding tree units (CTUs) of the picture. A decoded picture may be a picture generated by applying a decoding process to a coded picture. An AU may be a set of coded pictures that are included in different layers and are related to the same time for output from a decoded picture buffer (DPB). A NAL unit may be a syntax structure that contains data in the form of a Raw Byte Sequence Payload (RBSP), which is an indication of the type of data, and optionally interspersed with emulation prevention bytes. A VCL NAL unit may be a NAL unit coded to contain video data, such as a coded slice of a picture. A non-VCL NAL unit may be a NAL unit that contains non-video data, such as syntax and / or parameters, that support decoding, conformance checking, or other operations on the video data. A layer may be a set of VCL NAL units that share certain characteristics (e.g., a common resolution, frame rate, picture size, etc.), as indicated by a layer Id (identifier) ​​and the associated non-VCL NAL unit.A NAL unit header layer identifier (nuh_layer_id) may be a syntax element that specifies an identifier of the layer that contains the NAL unit. A video parameter set (VPS) may be a data unit that contains parameters pertaining to the entire video. A coded video sequence may be a set of one or more coded pictures. A decoded video sequence may be a set of one or more decoded pictures.

[0049] A hypothetical reference decoder (HRD) may be a decoder model that operates with an encoder that checks the variability of the bitstream generated by the encoding process to verify conformance with specified constraints. A bitstream conformance test may be a test to determine whether the encoded bitstream conforms to a standard such as Generic Video Coding (VVC). HRD parameters are syntax elements that initialize and / or define the operating conditions of the HRD. HRD parameters may be included in a Supplemental Enhancement Information (SEI) message. An SEI message may be a syntax structure with a specified meaning that carries information that is not required by the decoding process to determine the values ​​of samples in the decoded picture. An SEI NAL unit may be a NAL unit that contains one or more SEI messages. A particular SEI NAL unit may be referred to as the current SEI NAL unit. A scalable nesting SEI message may be a message that contains multiple SEI messages corresponding to one or more output layer sets (OLS) or one or more layers. The buffer period (BP) SEI message may be an SEI message including HRD parameters for initializing the HRD and managing the coded picture buffer (CPB). The picture timing (PT) SEI message may be an SEI message including HRD parameters for managing delivery information for access units (AUs) in the CPB and / or the decoded picture buffer (DPB). The decoding unit information (DUI) SEI message may be an SEI message including HRD parameters for managing delivery information for DUs in the CPB and / or the DPB.

[0050] The scalable nesting SEI message may be a set of scalable nested SEI messages. The scalable nested SEI message may be an SEI message nested within the scalable nesting SEI message. The scalable nesting layer Id (layer_Id[i]) may be a syntax element in the scalable nesting SEI message that specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies. The scalable nesting all layers flag (all_layers_flag) may be a syntax element in the scalable nesting SEI message that specifies whether the scalable nested SEI messages in the scalable nesting SEI message apply to all layers. The scalable nesting number of layers minus 1 (num_layers_minus1) may be a syntax element in the scalable nesting SEI message that specifies the number of layers to which the scalable nested SEI message applies. VPS max layers minus 1 (vps_max_layers_minus1) may be a syntax element in the VPS that specifies the number of layers specified by the VPS. VPS layer Id (vps_layer_id[i]) may be a syntax element in the VPS that specifies the nuh_layer_id value of the i-th layer. Nesting number of layers (nestingNumLayers) may be a variable that is set to the number of layers to which the scalable nested SEI message applies based on the data in the bitstream. Nesting layer Id list (NestingLayerId[i]) may be a variable that is set to specify a list of nuh_layer_id values ​​of layers to which the scalable nested SEI message applies for each layer i based on the data in the bitstream.The general layer index (GeneralLayerIdx) may be a variable that is set to specify the layer index of each layer with nuh_layer_id based on the data in the bitstream.

[0051] The following acronyms are used herein: Access Unit (AU), Coding Tree Block (CTB), Coding Tree Unit (CTU), Coding Unit (CU), Coded Layer Video Sequence (CLVS), Coded Layer Video Sequence Start (CLVSS), Coded Video Sequence (CVS), Coded Video Sequence Supervision (CVSS), Joint Video Experts Team (JVET), Motion Constrained Tile Set (MCTS), Maximum Transmission Unit (MTU), Network Abstraction Layer (NAL), Output Layer Set (OLS), Picture Order Count (POC), Random Access Point (RAP), Raw Byte Sequence Payload (RBSP), Sequence Parameter Set (SPS), Video Parameter Set (VPS), and Generic Video Coding (VVC).

[0052] Many video compression techniques may be used to reduce the size of a video file with minimal data loss. For example, video compression techniques may include performing spatial (e.g., intra-picture) prediction and / or temporal (e.g., inter-picture) prediction to reduce or remove data redundancy in a video sequence. For block-based video coding, a video slice (e.g., a video picture or a portion of a video picture) may be partitioned into video blocks, which may be referred to as tree blocks (CTBs), coding tree units (CTUs), coding units (CUs), and / or coding nodes. Video blocks in an intra-coded (I) slice of a picture are coded using spatial prediction with respect to reference samples in neighboring blocks in the same picture. Video blocks in an inter-coded unidirectionally predicted (P) or bidirectionally predicted (B) slice of a picture may be coded by using spatial prediction with respect to reference samples in neighboring blocks in the same picture or temporal prediction with respect to reference samples in other reference pictures. A picture may be referred to as a frame and / or an image, and a reference picture may be referred to as a reference frame and / or a reference image. Spatial or temporal prediction results in a prediction block, which represents an image block. The residual data represents the pixel difference between the original image block and the prediction block. Thus, an inter-coded block is coded according to a motion vector that points to a block of reference samples that form the prediction block, and the residual data indicates the difference between the coded block and the prediction block. An intra-coded block is coded according to an intra-coding mode and the residual data. For further compression, the residual data may be transformed from the pixel domain to a transform domain. These result in residual transform coefficients, which may be quantized. The quantized transform coefficients may be initially arranged in a two-dimensional array. The quantized transform coefficients may be scanned to generate a one-dimensional vector of transform coefficients.Entropy coding may be applied to achieve even more compression. Such video compression techniques are discussed in more detail below.

[0053] To ensure that the encoded video is decoded accurately, the video is encoded and decoded according to a corresponding video coding standard, including International Telecommunications Union (ITU) Standardization Sector (ITU-T) H.261, International Organization for Standardization / International Electrotechnical Commission (ISO / IEC) Motion Picture Experts Group (MPEG)-1 Part 2, Advanced Video Coding (AVC), also known as ITU-T H.262 or ISO / IEC MPEG-2 Part 2, ITU-T H.263, ISO / IEC MPEG-4 Part 2, ITU-T H.264 or ISO / IEC MPEG-4 Part 10, and High Efficiency Video Coding (HEVC), also known as ITU-T H.265 or MPEG-H Part 2. AVC includes extensions such as Scalable Video Coding (SVC), Multiview Video Coding (MVC) and Multiview Video Coding plus Depth (MVC+D), and three-dimensional (3D) AVC (3D-AVC). HEVC includes extensions such as Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), and 3D HEVC (3D-HEVC). The ITU-T and ISO / IEC Joint Video Experts Team (JVET) has begun development of a video coding standard called Versatile Video Coding. VVC is included in working drafts (WDs) including JVET-N1001-v14.

[0054] Some video coding systems use supplemental enhancement information (SEI) messages. The SEI messages contain information that is not needed by the decoding process to determine values ​​of samples in a decoded picture. For example, the SEI messages may contain parameters used to inspect the bitstream for conformance with a standard. In some examples, video is coded into the bitstream using multiple layers. A scalable nesting SEI message may be used to contain SEI messages for multiple layers. For example, the scalable nesting SEI message contains a scalable nested SEI message.

[0055] The first problem can occur when a scalable nesting SEI message includes a list of layer identifiers (Ids) to indicate the correspondence between the scalable nesting SEI message and the layers. The scalable nesting SEI message is included in an SEI network abstraction layer (NAL) unit, which may be denoted as the current SEI NAL unit for clarity of discussion. The current SEI NAL unit is associated with a layer Id. A scalable nesting SEI message always pertains to the layer associated with the current SEI NAL unit. This leads to redundant signaling, because the layer Id of the current SEI NAL unit is included in the current SEI NAL unit, which is also included in the current scalable nesting SEI message.

[0056] In a first example, disclosed herein is an enhancement to a scalable nesting SEI message for use in conjunction with a particular layer. Specifically, the layer Id may be referred to as the header layer Id (nuh_layer_id) of a NAL unit. The nuh_layer_id of the current SEI NAL unit is excluded from the scalable nesting SEI message. This may be done by using a scalable nesting layer Id (layer_Id[i]) syntax element that specifies a nuh_layer_id for each layer to which the scalable nesting SEI message applies. The scalable nesting layer_id[i] is constrained to only include nuh_layer_ids that are greater than the nuh_layer_id of the current SEI NAL unit. Therefore, the nuh_layer_id of the current SEI NAL unit is omitted from the scalable nesting SEI message and inferred from the current SEI NAL unit. This enhances the scalable nesting SEI message by eliminating redundant Ids. For example, the loop that encodes / decodes scalable nesting layer_id[i] executes once in less time, which reduces processor resources during encoding and / or decoding. In addition, this reduces the size of the encoded bitstream for each scalable nesting SEI message in the bitstream. As a result, coding efficiency increases, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0057] The second problem occurs when a flag in a scalable nesting SEI message is used to indicate that the scalable nesting SEI message applies to all layers in an access unit (AU). An AU is a set of coded pictures that are included in different layers and relate to the same output time. This approach works when all AUs contain pictures for all layers. However, in some cases, a picture may be present for an output time in some layers and omitted in other layers. For example, a high frame rate layer may contain pictures in each AU, while a low frame rate layer omits pictures in many AUs occupied by the high frame rate layer. As a result, the flag ensures that the SEI message applies only to layers that contain pictures in the current AU. This causes a conformance test error because a hypothetical reference decoder (HRD) may not be able to associate the scalable nesting SEI message to a layer that omits a picture in the current AU. For example, such a layer may contain pictures in an AU after the current AU. In such cases, the HRD will not recognize the scalable nesting SEI message as applying to such layers when the later AU is tested for conformance, and therefore the HRD may not be able to correctly test such layers for conformance in later AUs when flags for all layers are used in the incomplete AU.

[0058] In a second example, disclosed herein is a scalable nesting all layers flag (all_layers_flag) for correcting the above-mentioned error. The scalable nesting all_layers_flag can be set to indicate that the scalable nested SEI message in the scalable nesting SEI message applies to all layers specified in the video parameter set (VPS). The VPS lists all layers. Therefore, this approach allows the encoder to clearly indicate when the scalable nested SEI message applies globally to all layers. The HRD conformance test process can check the bitstream for conformance without returning unpredictable errors in AUs following an incomplete AU associated with the scalable nesting SEI message. Therefore, the scalable nesting all_layers_flag increases the functionality of the encoder and / or decoder by allowing the bitstream to be properly checked for conformance when incomplete AUs are present. Furthermore, the scalable nesting all_layers_flag reduces the size of the coded bitstream by eliminating explicit layer signaling for scalable nesting SEI messages when such messages apply to all layers, resulting in increased coding efficiency, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0059] FIG. 1 is a flow chart of an exemplary method 100 of coding a video signal. Specifically, a video signal is encoded at an encoder. The encoding process compresses the video signal by using various mechanisms to reduce the video file size. The smaller file size allows the compressed video file to be transmitted to a user while reducing the associated bandwidth overhead. A decoder then decodes the compressed video file to reconstruct the original video signal for display to the end user. The decoding process generally mirrors the encoding process, allowing the decoder to consistently reconstruct the video signal.

[0060] At step 101, a video signal is input to an encoder. For example, the video signal may be an uncompressed video file stored in memory. As another example, the video file may be captured by a video capture device, such as a video camera, and encoded to support live streaming of the video. The video file may include both audio and video components. The video component includes a series of image frames that, when viewed in sequence, give the impression of visual movement. The frames include pixels that are represented in terms of light, referred to herein as luminance components (or luminance samples), and color, referred to herein as chrominance components (or color samples). In some examples, the frames may also include depth values ​​to support three-dimensional viewing.

[0061] At step 103, the video is partitioned into blocks. Partitioning involves subdividing the pixels in each frame into square and / or rectangular blocks for compression. For example, in High Efficiency Video Coding (HEVC) (also known as H.265 and MPEG-H Part 2), a frame may first be divided into coding tree units (CTUs), which are blocks of a predetermined size (e.g., 64 pixels by 64 pixels). The CTUs contain both luma and chroma samples. A coding tree may be used to divide the CTUs into blocks, which may then be recursively subdivided until a configuration is achieved that supports further encoding. For example, the luma component of a frame may be subdivided until each individual block contains relatively uniform light values. Additionally, the chroma component of a frame may be subdivided until each individual block contains relatively uniform color values. Thus, the partitioning mechanism varies depending on the content of the video frame.

[0062] At step 105, various compression mechanisms are employed to compress the image blocks partitioned at step 103. For example, inter-prediction and / or intra-prediction may be used. Inter-prediction is designed to take advantage of the fact that objects in a common scene tend to appear in successive frames. Thus, a block representing an object in a reference frame does not need to be described repeatedly in adjacent frames. Specifically, an object such as a table may remain in a constant position across multiple frames. Hence, the table may be described once and adjacent frames may refer back to the reference frame. A pattern matching mechanism may be used to match objects across multiple frames. Additionally, moving objects may be represented across multiple frames, for example, due to object motion or camera motion. As a specific example, a video may show a car moving across the screen across multiple frames. Such motion may be described using motion vectors. A motion vector is a two-dimensional vector that provides an offset from the object's coordinates in a frame to the object's coordinates in a reference frame. Thus, inter-prediction may encode an image block in a current frame as a set of motion vectors that indicate an offset from a corresponding block in a reference frame.

[0063] Intra prediction codes blocks in a common frame. Intra prediction exploits the fact that luma and chroma components tend to cluster in a frame. For example, a green patch in a part of a tree tends to be located adjacent to similar green patches. Intra prediction uses multi-directional prediction modes (e.g., 33 in HEVC), planar mode, and direct current (DC) mode. Directional mode indicates that the current block is similar / same as the samples of neighboring blocks in the corresponding direction. Planar mode indicates that a series of blocks (e.g., a plane) along a row / column can be interpolated based on neighboring blocks at the end of the row. Planar mode effectively indicates a smooth transition of light / color across the row / column by using a relatively constant slope in changing the values. DC mode is used for boundary smoothing, indicating that the block is similar / same as the average value associated with the samples of all neighboring blocks associated with the angular direction of the directional prediction mode. Thus, intra prediction blocks can represent the image block as various related prediction mode values ​​instead of the actual values. Additionally, inter-prediction blocks can represent image blocks as motion vector values ​​instead of actual values. In either case, the prediction block may not represent the image block exactly in some cases. Any differences are stored in the residual block. A transform may be applied to the residual block to further compress the file.

[0064] In step 107, various filtering techniques may be applied. In HEVC, filters are applied according to an in-loop filtering scheme. Block-based prediction as discussed above may result in the generation of blocky images at the decoder. Furthermore, block-based prediction schemes may encode blocks and then reconstruct the encoded blocks for later use as reference blocks. In-loop filtering schemes sequentially apply noise suppression filters, deblocking filters, adaptive loop filters, and sample adaptive offset (SAO) filters to blocks / frames. These filters mitigate such blocking artifacts so that the encoded file can be accurately reconstructed. Furthermore, these filters mitigate artifacts in the reconstructed reference blocks such that the artifacts are less likely to generate additional artifacts in subsequent blocks that are encoded based on the reconstructed reference blocks.

[0065] Once the video signal has been partitioned, compressed, and filtered, the resulting data is coded into a bitstream at step 109. The bitstream includes the data discussed above as well as any signal data desired to support proper video signal reconstruction at the decoder. For example, such data may include partition data, prediction data, residual blocks, and various flags that provide coding instructions to the decoder. The bitstream may be stored in a memory for transmission to a decoder upon request. The bitstream may also be broadcast and / or multicast to multiple decoders. The generation of the bitstream is an iterative process. Thus, steps 101, 103, 105, 107, and 109 may occur sequentially and / or simultaneously across many frames and blocks. The order depicted in FIG. 1 is presented for clarity and ease of discussion and is not intended to limit the video coding process to any particular order.

[0066] The decoder receives the bitstream and begins the decoding process at step 111. Specifically, the decoder converts the bitstream into corresponding syntax data and video data using an entropy decoding scheme. The decoder uses the syntax data from the bitstream to determine the partitions of the frame at step 111. The partitioning matches the result of the block partitioning at step 103. The entropy coding / decoding used at step 111 is now described. The encoder makes many choices during the compression process, such as selecting a block partitioning scheme from several possible choices based on the spatial positioning of values ​​in the input image. Signaling the exact choice may use a number of bins. As used herein, a bin is a binary value (e.g., a bit value that may change depending on the context) that is treated as a variable. Entropy coding allows the encoder to discard any options that are clearly infeasible for a particular case, leaving a set of acceptable options. Each acceptable option is assigned a codeword. The length of the code word is based on the number of allowable options (e.g., one bin for two options, two bins for three to four options, etc.). The encoder then encodes a code word for the selected option. This scheme reduces the size of the code word because it is desirable for the code word to be large enough to uniquely indicate a selection from a small subset of allowable options, as opposed to uniquely indicating a selection from a possible larger set of all possible options. The decoder then decodes the selection by determining the set of allowable options in a similar manner as the encoder. By determining the set of allowable options, the decoder can read the code word and determine the selection made by the encoder.

[0067] In step 113, the decoder performs block decoding. Specifically, the decoder uses an inverse transform to generate a residual block. The decoder then uses the residual block and a corresponding prediction block to reconstruct an image block according to the partitioning. The prediction block may include both intra-prediction blocks and inter-prediction blocks as generated in the encoder in step 105. The reconstructed image block is then positioned within a frame of the reconstructed video signal according to the partitioning data determined in step 111. The syntax for step 113 may also be signaled in the bitstream by entropy coding as discussed above.

[0068] At step 115, filtering is performed on the frames of the reconstructed video signal in a manner similar to step 107 in the encoder. For example, a noise suppression filter, a deblocking filter, an adaptive loop filter, and an SAO filter may be applied to the frames to remove blocking artifacts. Once the frames are filtered, the video signal may be output to a display at step 117 for viewing by an end user.

[0069] 2 is a schematic diagram of an exemplary coding and decoding (codec) system 200 for video coding. Specifically, the codec system 200 provides functionality to support the implementation of the operational method 100. The codec system 200 is generalized to show components used in both an encoder and a decoder. The codec system 200 receives and partitions a video signal, as discussed with respect to steps 101 and 103 in the operational method 100, which results in a partitioned video signal 201. The codec system 200 then compresses the partitioned video signal 201 into a coded bitstream when acting as an encoder, as discussed with respect to steps 105, 107, and 109 in the method 100. When acting as a decoder, the codec system 200 generates an output video signal from the bitstream, as discussed with respect to steps 111, 113, 115, and 117 in the operational method 100. Codec system 200 includes a general coder control component 211, a transform scaling and quantization component 213, an intra picture estimation component 215, an intra picture prediction component 217, a motion compensation component 219, a motion estimation component 221, a scaling and inverse transform component 229, a filter control analysis component 227, an in-loop filter component 225, a decoded picture buffer component 223, and a header formatting and context-adaptive binary arithmetic coding (CABAC) component 231. Such components are coupled as shown. In FIG. 2, the black lines indicate the movement of data to be coded / decoded, and the dashed lines indicate the movement of control data that controls the operation of the other components. All of the components of codec system 200 may be present in an encoder. A decoder may include a subset of the components of codec system 200.For example, the decoder may include an intra-picture prediction component 217, a motion compensation component 219, a scaling and inverse transform component 229, an in-loop filter component 225, and a decoded picture buffer component 223. These components are described herein.

[0070] The partitioned video signal 201 is a captured video sequence that has been partitioned into blocks of pixels by a coding tree. The coding tree uses various partitioning modes to sub-partition the blocks of pixels into smaller blocks of pixels. These blocks may then be further subdivided into smaller blocks. The blocks may be referred to as nodes on the coding tree. Larger parent nodes are partitioned into smaller child nodes. The number of times a node is sub-partitioned is referred to as the depth of the node / coding tree. In some cases, the partitioned blocks may be included in a coding unit (CU). For example, a CU may be a sub-part of a CTU that includes a luma block, a red-difference chroma (Cr) block, and a blue-difference chroma (Cb) block, along with the corresponding syntax instructions for the CU. The partitioning modes may include a binary tree (BT), a triple tree (TT), and a quad tree (QT), which are used to partition a node into two, three, or four child nodes of varying shapes, respectively, depending on the partitioning mode used. The partitioned video signal 201 is forwarded to a generic coder control component 211, a transform scaling and quantization component 213, an intra picture estimation component 215, a filter control analysis component 227, and a motion estimation component 221 for compression.

[0071] The generic coder control component 211 is configured to make decisions related to coding the images of the video sequence into a bitstream according to application constraints. For example, the generic coder control component 211 manages the optimization of bitrate / bitstream size versus reconstruction quality. Such decisions may be made based on storage space / bandwidth availability and image resolution requirements. The generic coder control component 211 also manages buffer utilization in light of transmission rate to mitigate buffer under-run and over-run issues. To manage these issues, the generic coder control component 211 manages partitioning, prediction, and filtering by other components. For example, the generic coder control component 211 can dynamically increase the compression complexity to increase resolution and increase bandwidth usage, or decrease the compression complexity to decrease resolution and bandwidth usage. Hence, the generic coder control component 211 controls other components of the codec system 200 to balance bitrate concerns and video signal reconstruction quality. The generic coder control component 211 creates control data that controls the operation of other components. The control data is also forwarded to the header format and CABAC component 231 to be encoded in the bitstream into signal parameters for decoding at the decoder.

[0072] The partitioned video signal 201 is also sent to a motion estimation component 221 and a motion compensation component 219 for inter prediction. A frame or slice of the partitioned video signal 201 may be divided into multiple video blocks. The motion estimation component 221 and the motion compensation component 219 perform inter predictive coding of the received video blocks relative to one or more blocks in one or more reference frames to provide temporal prediction. The codec system 200 may perform multiple coding passes, for example to select an appropriate coding mode for each block of video data.

[0073] The motion estimation component 221 and the motion compensation component 219 may be highly integrated, but are shown separately for conceptual purposes. Motion estimation performed by the motion estimation component 221 is the process of generating motion vectors, which estimate the motion of video blocks. A motion vector may indicate, for example, the displacement of a coded object relative to a predictive block. A predictive block is a block that is found to closely match a block to be coded in terms of pixel differences. A predictive block may also be referred to as a reference block. Such pixel differences may be determined by sum of absolute differences (SAD), sum of squared differences (SSD), or other difference metrics. HEVC uses several coded objects, including CTUs, coding tree blocks (CTBs), and CUs. For example, a CTU may be divided into CTBs, which are then divided into CBs for inclusion in a CU. A CU may be coded as a prediction unit (PU), which contains prediction data, and / or a transform unit (TU), which contains transform residual data for the CU. The motion estimation component 221 generates the motion vectors, PUs, and TUs by using a rate-distortion analysis as part of a rate-distortion optimization process. For example, the motion estimation component 221 may determine multiple reference blocks, multiple motion vectors, etc. for a current block / frame, and select the reference block, motion vector, etc. with the best rate-distortion characteristics. The best rate-distortion characteristics balance both the quality of the video reconstruction (e.g., the amount of data lost due to compression) and the coding efficiency (e.g., the size of the final encoding).

[0074] In some examples, the codec system 200 may calculate values ​​for sub-integer pixel positions of the reference picture stored in the decoded picture buffer component 223. For example, the video codec system 200 may interpolate values ​​for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference picture. Thus, the motion estimation component 221 may perform motion search for whole pixel positions and fractional pixel positions and output fractional pixel precision motion vectors. The motion estimation component 221 calculates the motion vectors for the PUs of the video blocks in the inter-coded slices by comparing the positions of the PUs with the positions of the predictive blocks of the reference pictures. The motion estimation component 221 outputs the calculated motion vectors as motion data to the header formatting and CABAC component 231 for encoding and the calculated motion vectors to the motion compensation component 219.

[0075] The motion compensation performed by the motion compensation component 219 may involve fetching or generating a prediction block based on the motion vector determined by the motion estimation component 221. Again, in some examples, the motion estimation component 221 and the motion compensation component 219 may be functionally integrated. Upon receiving the motion vector for the PU of the current video block, the motion compensation unit 219 may locate the prediction block to which the motion vector points. A residual video block is then formed by subtracting pixel values ​​of the prediction block from pixel values ​​of the current video block being coded to form pixel difference values. Generally, the motion estimation component 221 performs motion estimation on the luma component, and the motion compensation component 219 uses the motion vector calculated based on the luma component for both the chroma and luma components. The prediction block and the residual block are forwarded to the scaling and quantization component 213 for transformation.

[0076] The partitioned video signal 201 is also sent to an intra picture estimation component 215 and an intra picture prediction component 217. As with the motion estimation component 221 and the motion compensation component 219, the intra picture estimation component 215 and the intra picture prediction component 217 may be highly integrated, but are shown separately for conceptual purposes. The intra picture estimation component 215 and the intra picture prediction component 217 intra predict a current block relative to blocks in a current frame, as an alternative to the inter prediction performed by the inter-frame motion estimation component 221 and the motion compensation component 219, as described above. In particular, the intra picture estimation component 215 determines an intra prediction mode to use to encode the current block. In some examples, the intra picture estimation component 215 selects an appropriate intra prediction mode to encode the current block from a plurality of tested intra picture prediction modes. The selected intra prediction mode is then forwarded to the header formatting and CABAC component 231 for encoding.

[0077] For example, the intra picture estimation component 215 may use a rate-distortion analysis for various tested intra picture prediction modes to calculate rate-distortion values ​​and select the intra prediction mode with the best rate-distortion characteristics among the tested modes. The rate-distortion analysis generally determines the amount of distortion (or error) between the coded block and the original uncoded block that is coded to generate the coded block, and the bit rate (e.g., number of bits) used to generate the coded block. The intra picture estimation component 215 may calculate a ratio from the distortion and rate for the various coded blocks and determine which intra prediction mode exhibits the best rate-distortion value for the block. Additionally, the intra picture estimation component 215 may be configured to code the depth blocks of the depth map using a rate-distortion optimization (RDO) based depth modeling mode (DMM).

[0078] The intra picture prediction component 217 may generate a residual block from the prediction block based on a selected intra picture prediction mode determined by the intra picture prediction component 215 when implemented in an encoder, or may read the residual block from the bitstream when implemented in a decoder. The residual block includes the difference in values ​​between the prediction block and the original block represented as a matrix. The residual block is then forwarded to the transform scaling and quantization component 213. The intra picture estimation component 215 and the intra picture prediction component 217 may operate on both the luma and chroma components.

[0079] The transform scaling and quantization component 213 is configured to further compress the residual block. The transform scaling and quantization component 213 applies a transform, such as a discrete cosine transform (DCT), a discrete sine transform (DST), or a conceptually similar transform, to the residual block to generate a video block including residual transform coefficient values. A wavelet transform, an integer transform, a subband transform, or other types of transforms may also be used. The transform may convert the residual information from a pixel value domain to a transform domain, such as the frequency domain. The transform scaling and quantization component 213 is also configured to scale the transformed residual information, for example based on frequency. Such scaling involves applying a scale factor to the residual information such that different frequency information is quantized with different granularity, which may affect the final visual quality of the reconstructed video. The transform scaling and quantization component 213 is also configured to quantize the transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, the transform scaling and quantization component 213 may then perform a scan of a matrix containing the quantized transform coefficients, which are forwarded to the header formatting and CABAC component 231 to be encoded in the bitstream.

[0080] The scaling and inverse transform component 229 applies the inverse operations of the transform scaling and quantization component 213 to support motion estimation. The scaling and inverse transform component 229 applies, for example, inverse scaling, transformation, and / or quantization to reconstruct a residual block in the pixel domain for use as a reference block that may later become a predictive block for another current block. The motion estimation component 221 and / or motion compensation component 219 may calculate a reference block by adding the residual block to a corresponding predictive block for use in motion estimation for a later block / frame. A filter is applied to the reconstructed reference block to mitigate artifacts generated during the scaling, quantization, and transformation. Such artifacts may otherwise cause inaccurate predictions (and create additional artifacts) when subsequent blocks are predicted.

[0081] The filter control analysis component 227 and the in-loop filter component 225 apply filters to the residual block and / or the reconstructed image block. For example, the transformed residual block from the scaling and inverse transform component 229 may be combined with a corresponding prediction block from the intra-picture prediction component 217 and / or the motion compensation component 219 to reconstruct the original image block. The filter may then be applied to the reconstructed image block. In some examples, the filter may instead be applied to the residual block. As with the other components in FIG. 2, the filter control analysis component 227 and the in-loop filter component 225 are highly integrated and may be implemented together, but are shown separately for conceptual purposes. The filters applied to the reconstructed reference block are applied to a particular spatial region and include multiple parameters to adjust how such filters are applied. The filter control analysis component 227 analyzes the reconstructed reference block to determine where such filters should be applied and sets the corresponding parameters. Such data is forwarded to the header formatting and CABAC component 231 as filter control data for encoding. The in-loop filter component 225 applies such filters based on the filter control data. The filters may include deblocking filters, noise suppression filters, SAO filters, and adaptive loop filters. Such filters may be applied in the spatial / pixel domain (e.g., reconstructed pixel blocks) or in the frequency domain, depending on the example.

[0082] When operating as an encoder, the filtered reconstructed picture blocks, residual blocks, and / or predictive blocks are stored in the decoded picture buffer component 223 for later use in motion estimation as discussed above. When operating as a decoder, the decoded picture buffer component 223 stores the reconstructed filtered blocks and forwards them as part of the output video signal towards the display. The decoded picture buffer component 223 may be any memory device capable of storing predictive blocks, residual blocks, and / or reconstructed image blocks.

[0083] The header formatting and CABAC component 231 receives data from various components of the codec system 200 and encodes such data into a coded bitstream for transmission towards the decoder. In particular, the header formatting and CABAC component 231 generates various headers for encoding control data, such as general control data and filter control data. Additionally, prediction data, including intra prediction and motion data, as well as residual data in the form of quantized transform coefficient data, are all encoded in the bitstream. The final bitstream contains all the information desired by the decoder to reconstruct the original partitioned video signal 201. Such information may also include an intra prediction mode index table (also called a code word mapping table), definitions of coding contexts for various blocks, an indication of the most probable intra prediction mode, an indication of partition information, etc. Such data may be encoded using entropy coding. For example, the information may be encoded using Context-Adaptive Variable Length Coding (CAVLC), CABAC, Syntax-Based Context-Adaptive Binary Arithmetic Coding (SBAC), Probability Interval Partitioning Entropy (PIPE) coding, or another entropy coding technique. After entropy coding, the coded bitstream may be transmitted to another device (e.g., a video decoder) or archived for later transmission or retrieval.

[0084] 3 is a block diagram illustrating an example video encoder 300. The video encoder 300 may be used to implement the encoding functionality of the codec system 200 and / or to implement steps 101, 103, 105, 107, and / or 109 of the method of operation 100. The encoder 300 partitions an input video signal, resulting in a partitioned video signal 301 that is substantially similar to the partitioned video signal 201. The partitioned video signal 301 is then compressed and encoded into a bitstream by components of the encoder 300.

[0085] Specifically, the partitioned video signal 301 is forwarded to an intra picture prediction component 317 for intra prediction. The intra picture prediction component 317 may be substantially similar to the intra picture estimation component 215 and the intra picture prediction component 217. Also, the partitioned video signal 301 is forwarded to a motion compensation component 321 for inter prediction based on a reference block in a decoded picture buffer component 323. The motion compensation component 321 may be substantially similar to the motion estimation component 221 and the motion compensation component 219. The prediction block and the residual block from the intra picture prediction component 317 and the motion compensation component 321 are forwarded to a transform and quantization component 313 for transform and quantization of the residual block. The transform and quantization component 313 may be substantially similar to the transform scaling and quantization component 213. The transformed and quantized residual block and the corresponding prediction block (along with associated control data) are forwarded to an entropy coding component 331 for coding into a bitstream. The entropy coding component 331 may be substantially similar to the header formatting and CABAC component 231.

[0086] The transformed and quantized residual block and / or the corresponding prediction block are also forwarded from the transform and quantization component 313 to the inverse transform and quantization component 329 for reconstruction into a reference block for use by the motion compensation component 321. The inverse transform and quantization component 329 may be substantially similar to the scaling and inverse transform component 229. An in-loop filter in the in-loop filter component 325 is also applied to the residual block and / or the reconstructed reference block, depending on the example. The in-loop filter component 325 may be substantially similar to the filter control analysis component 227 and the in-loop filter component 225. The in-loop filter component 325 may include multiple filters as discussed with respect to the in-loop filter component 225. The filtered block is then stored in the decoded picture buffer component 323 for use as a reference block by the motion compensation component 321. The decoded picture buffer component 323 may be substantially similar to the decoded picture buffer component 223.

[0087] 4 is a block diagram illustrating an example video decoder 400. Video decoder 400 may be used to implement the decoding functionality of codec system 200 and / or to implement steps 111, 113, 115, and / or 117 of method of operation 100. Decoder 400 may receive a bitstream from, for example, encoder 300 and generate a reconstructed output video signal based on the bitstream for display to an end user.

[0088] The bitstream is received by the entropy decoding component 433. The entropy decoding component 433 is configured to implement an entropy decoding scheme, such as CAVLC, CABAC, SBAC, PIPE coding, or other entropy coding techniques. For example, the entropy decoding component 433 can use header information to provide a context for interpreting additional data encoded as codewords in the bitstream. The decoded information includes any desired information for decoding the video signal, such as general control data, filter control data, partition information, motion data, prediction data, and quantized transform coefficients from the residual block. The quantized transform coefficients are forwarded to the inverse transform and quantization component 429 for reconstruction into a residual block. The inverse transform and quantization component 429 can be similar to the inverse transform and quantization component 329.

[0089] The reconstructed residual block and / or predictive block are forwarded to an intra picture prediction component 417 for reconstructing into an image block based on an intra prediction operation. The intra picture prediction component 417 may be substantially similar to the intra picture estimation component 215 and the intra picture prediction component 217. Specifically, the intra picture prediction component 417 uses a prediction mode to locate a reference block within a frame and applies the residual block to the result to reconstruct an intra predicted image block. The reconstructed intra predicted image block and / or residual block and the corresponding inter predicted data are forwarded to a decoded picture buffer component 423 via an in-loop filter component 425, which may be substantially similar to the decoded picture buffer component 223 and the in-loop filter component 225, respectively. The in-loop filter component 425 filters the reconstructed image block, the residual block and / or the predictive block, and such information is stored in the decoded picture buffer component 423. The reconstructed picture blocks from the decoded picture buffer component 423 are forwarded to the motion compensation component 421 for inter prediction. The motion compensation component 421 may be substantially similar to the motion estimation component 221 and / or the motion compensation component 219. Specifically, the motion compensation component 421 uses a motion vector from a reference block to generate a prediction block and applies a residual block to the result to reconstruct an image block. The resulting reconstructed block may be forwarded to the decoded picture buffer component 423 via an in-loop filter component 425. The decoded picture buffer component 423 continues to store additional reconstructed image blocks, which may be reconstructed into frames via the partition information. Such frames may be arranged into a sequence. The sequence is output to a display as a reconstructed output video signal.

[0090] 5 is a schematic diagram illustrating an exemplary HRD 500. The HRD 500 may be used in codec system 200 and / or an encoder, such as encoder 30. The HRD 500 may inspect the bitstream generated in step 109 of method 100 before the bitstream is forwarded to a decoder, such as decoder 400. In some examples, the bitstream may be continuously forwarded through the HRD 500 as it is encoded. In the event that a portion of the bitstream does not conform to an associated constraint, the HRD 500 may indicate such incompatibilities to the encoder so that the encoder re-encodes the corresponding section of the bitstream with a different mechanism.

[0091] The HRD 500 includes a virtual stream scheduler (HSS) 541. The HSS 541 is a component configured to execute a virtual delivery mechanism. The virtual delivery mechanism is used to check the conformance of a bitstream or a decoder with respect to the timing and data flow of the bitstream 551 input to the HRD 500. For example, the HSS 541 may receive the bitstream 551 output from an encoder and manage a conformance testing process on the bitstream 551. In a particular example, the HSS 541 may control the rate at which coded pictures move through the HRD 500 and verify that the bitstream 551 does not contain non-conforming data.

[0092] The HSS 541 may forward the bitstream 551 to the CPB 543 at a predetermined rate. The HRD 500 may manage data in a decoding unit (DU) 553. The DU 553 is an access unit (AU) or a subset of an AU, which is associated with a non-video coding layer (VCL) network abstraction layer (NAL) unit. Specifically, an AU includes one or more pictures that are associated with an output time. For example, an AU may include a single picture in a single-layer bitstream or may include pictures for each layer in a multi-layer bitstream. Each picture in an AU may be divided into slices that are each included in a corresponding VCL NAL unit. Thus, the DU 553 may include one or more pictures, one or more slices of a picture, or a combination thereof. Also, parameters used to decode the AU, picture, and / or slice may be included in the non-VCL NAL unit. Thus, the DU 553 includes non-VCL NAL units that include data necessary to support the decoding of the VCL NAL units in the DU 553. The CPB 543 is a first-in, first-out buffer in the HRD 500. The CPB 543 contains the DU 553, which contains the video data in decoding order. The CPB 543 stores the video data for use during bitstream conformance verification.

[0093] The CPB 543 forwards the DU 553 to a decoding process component 545. The decoding process component 545 is a component that conforms to the VVC standard. For example, the decoding process component 545 may emulate the decoder 400 used by an end user. The decoding process component 545 decodes the DU 553 at a rate that can be achieved by an exemplary end user decoder. If the decoding process component 545 cannot decode the DU 553 fast enough to prevent overflow of the CPB 543, then the bitstream 551 does not conform to the standard and should be re-encoded.

[0094] The decoding process component 545 decodes the DU 553, which generates a decoded DU 555. The decoded DU 555 includes a decoded picture. The decoded DU 555 is forwarded to the DPB 547. The DPB 547 may be substantially similar to the decoded picture buffer components 223, 323, and / or 423. To support inter-prediction, pictures marked for use as reference pictures 556 obtained from the decoded DU 555 are returned to the decoding process component 545 to support further decoding. The DPB 547 outputs the decoded video sequence as a series of pictures 557. The pictures 557 are reconstructed pictures, typically mirror pictures, that were encoded into the bitstream 551 by the encoder.

[0095] Picture 557 is forwarded to output cropping component 549, which is configured to apply a conformance cropping window to picture 557. This results in output cropped picture 559. Output cropped picture 559 is a perfectly reconstructed picture. Thus, output cropped picture 559 mimics what an end user would see when decoding bitstream 551. Thus, the encoder can review output cropped picture 559 to ensure that the encoding is satisfactory.

[0096] The HRD 500 is initialized based on HRD parameters in the bitstream 551. For example, the HRD 500 may read the HRD parameters from the VPS, SPS, and / or SEI messages. The HRD 500 may then perform conformance testing operations on the bitstream 551 based on the information in such HRD parameters. As a specific example, the HRD 500 may determine one or more CPB delivery schedules from the HRD parameters. The delivery schedules specify the timing of delivery of video data to and / or from memory locations such as the CPB and / or DPB. Thus, the CPB delivery schedules specify the timing of delivery of AUs, DUs 553, and / or pictures to and from the CPB 543. It should be noted that the HRD 500 may use a DPB delivery schedule for the DPB 547 that is similar to the CPB delivery schedule.

[0097] Video may be coded into different layers and / or OLSs for use by decoders with various levels of hardware capabilities and for various network conditions. The CPB delivery schedules are selected to reflect these issues. Thus, the upper layer sub-bitstreams are designated for optimal hardware and network conditions, and therefore the upper layers may receive one or more CPB delivery schedules with large amounts of memory in the CPB 543 and short delays for the transfer of the DUs 553 towards the DPB 547. Similarly, the lower layer sub-bitstreams are designated for limited decoder hardware capabilities and / or poor network conditions. Therefore, the lower layers may receive one or more CPB delivery schedules with small amounts of memory in the CPB 543 and longer delays for the transfer of the DUs 553 towards the DPB 547. The OLSs, layers, sub-layers, or combinations thereof may then be tested according to the corresponding delivery schedules to ensure that the resulting sub-bitstreams can be accurately decoded under the conditions expected for the sub-bitstreams. Thus, the HRD parameters in the bitstream 551 may indicate a CPB delivery schedule and may include sufficient data to enable the HRD 500 to determine the CPB delivery schedule and correlate the CPB delivery schedule to a corresponding OLS, layer, and / or ablayer.

[0098] FIG. 6 is a schematic diagram illustrating an example multi-layer video sequence 600 configured for inter-layer prediction 621. The multi-layer video sequence 600 may be encoded by an encoder, such as the codec system 200 and / or the encoder 300, and decoded by a decoder, such as the codec system 200 and / or the decoder 400, according to, for example, the method 100. Additionally, the multi-layer video sequence 600 may be checked for standard conformance by an HRD, such as the HRD 500. The multi-layer video sequence 600 is included to illustrate an example application for layers in a coded video sequence. The multi-layer video sequence 600 is any video sequence that employs multiple layers, such as layer N 631 and layer N+1 632.

[0099] In one embodiment, the multi-layer video sequence 600 may use inter-layer prediction 621. Inter-layer prediction 621 is applied to different layers between pictures 611, 612, 613, and 614 and pictures 615, 616, 617, and 618. In the illustrated example, pictures 611, 612, 613, and 614 are part of layer N+1 632, and pictures 615, 616, 617, and 618 are part of layer N 631. A layer, such as layer N 631 and / or layer N+1 632, is a group of pictures that are all associated with similar values ​​of a characteristic, such as similar size, quality, resolution, signal-to-noise ratio, capacity, etc. A layer may be formally defined as a set of VCL NAL units and associated non-VCL NAL units. A VCL NAL unit may be a NAL unit coded to contain video data, such as a coded slice of a picture. A non-VCL NAL unit is a NAL unit that contains non-video data, such as syntax and / or parameters, that support decoding, conformance checking, or other operations on the video data.

[0100] In the illustrated example, layer N+1 632 is associated with a larger image size than layer N 631. Thus, pictures 611, 612, 613, and 614 in layer N+1 632 have a larger picture size (e.g., larger height and width, and therefore more samples) than pictures 615, 616, 617, and 618 in layer N 631 in this example. However, such pictures may be separated by other characteristics between layer N+1 632 and layer N 631. Although only two layers, layer N+1 632 and layer N 631, are shown, a set of pictures may be separated into any number of layers based on associated characteristics. Layer N+1 632 and layer N 631 may also be indicated by a layer Id. A layer Id is an item of data associated with a picture and indicates that the picture is part of the indicated layer. Thus, each picture 611-618 may be associated with a corresponding layer Id to indicate which layer N+1 632 or layer N 631 contains the corresponding picture. For example, the layer Id may include a NAL unit header layer identifier (nuh_layer_id), which is a syntax element that specifies an identifier of a layer that contains a NAL unit (e.g., containing slices and / or parameters of a picture in a layer). A layer associated with a lower quality / bitstream size, such as layer N 631, is generally assigned a lower layer Id and is referred to as a lower layer. Furthermore, a layer associated with a higher quality / bitstream size, such as layer N+1 632, is generally assigned a higher layer Id and is referred to as a higher layer.

[0101] Pictures 611-618 in different layers 631-632 are configured to be displayed alternatively. As a particular example, if a smaller picture is desired, the decoder may decode and display picture 615 at the current display time, and if a larger picture is desired, the decoder may decode and display picture 611 at the current display time. Thus, pictures 611-614 in higher layer N+1 632 contain substantially the same image data as corresponding pictures 615-618 in lower layer N 631 (despite differences in picture size). Specifically, picture 611 contains substantially the same image data as picture 615, picture 612 contains substantially the same image data as picture 616, and so on.

[0102] Pictures 611-618 may be coded by referencing other pictures 611-618 in the same layer N 631 or N+1 632. Coding a picture with reference to another picture in the same layer results in inter-prediction 623. Inter-prediction 623 is indicated by solid arrows. For example, picture 613 may be coded by using one or two of pictures 611, 612, and / or 614 in layer N+1 632 as references, one picture referenced for unidirectional inter-prediction and / or two pictures referenced for bidirectional inter-prediction. Furthermore, picture 617 may be coded by using one or two of pictures 615, 616, and / or 618 in layer N 631 as references, one picture referenced for unidirectional inter-prediction and / or two pictures referenced for bidirectional inter-prediction. When a picture is used as a reference for another picture in the same layer when performing inter prediction 623, the picture may be called a reference picture. For example, picture 612 may be a reference picture used to code picture 613 according to inter prediction 623. Inter prediction 623 may also be called intra-layer prediction in a multi-layer context. Thus, inter prediction 623 is a mechanism for coding samples of a current picture by referencing indicated samples in a reference picture different from the current picture, where the reference picture and the current picture are in the same layer.

[0103] Pictures 611-618 may also be coded by referencing other pictures 611-618 in different layers. This process is known as inter-layer prediction 621 and is indicated by dashed arrows. Inter-layer prediction 621 is a mechanism of coding samples of a current picture by referencing indicated samples in reference pictures, where the current picture and the reference pictures are in different layers and therefore have different layer IDs. For example, a picture in lower layer N 631 may be used as a reference picture to code a corresponding picture in upper layer N+1 631. As a specific example, picture 611 may be coded by referencing picture 615 according to inter-layer prediction 621. In such a case, picture 615 is used as an inter-layer reference picture. An inter-layer reference picture is a reference picture used for inter-layer prediction 621. In most cases, inter-layer prediction 621 is constrained such that a current picture, such as picture 611, can only use inter-layer reference pictures that are included in the same AU and are in a lower layer, such as picture 615. When multiple layers (e.g., two or more) are available, inter-layer prediction 621 can encode / decode the current picture based on multiple inter-layer reference pictures at a lower level than the current picture.

[0104] A video encoder may use the multi-layer video sequence 600 to encode pictures 611-618 via many different combinations and / or permutations of inter-prediction 623 and inter-layer prediction 621. For example, picture 615 may be coded according to intra-prediction. Pictures 616-618 may then be coded according to inter-prediction 623 by using picture 615 as a reference picture. Furthermore, picture 611 may be coded according to inter-layer prediction 621 by using picture 615 as an inter-layer reference picture. Pictures 612-614 may then be coded according to inter-prediction 623 by using picture 611 as a reference picture. In this manner, reference pictures can function as both single-layer reference pictures and inter-layer reference pictures for different encoding mechanisms. By coding the upper layer N+1 632 picture based on the lower layer N 631 picture, the upper layer N+1 632 can avoid using intra prediction, which has much lower coding efficiency than inter prediction 623 and inter-layer prediction 621. Thus, the poor coding efficiency of intra prediction may be limited to pictures with the smallest / lowest quality and therefore limited to coding a minimum amount of video data. Pictures used as reference pictures and / or inter-layer reference pictures may be indicated in entries of a reference picture list included in a reference picture list structure.

[0105] Pictures 611-618 may also be included in access units 627 and 628. AUs 627-628 are a set of coded pictures that are included in different layers and relate to the same output time during decoding. Thus, pictures coded in the same AUs 627-628 are scheduled for output from the DPB at the same time at the decoder. For example, pictures 614 and 618 are in the same AU 628. Pictures 613 and 617 are in a different AU 627 than pictures 614 and 618. Pictures 614 and 618 in the same AU 628 may be displayed as alternatives. For example, picture 618 may be displayed when a small picture size is desired and picture 614 may be displayed when a large picture size is desired. When a large picture size is desired, picture 614 is output and picture 618 is used only for inter-layer prediction 621. In this case, the picture 618 is discarded without being output when the inter-layer prediction 621 is completed. An AU 627 that does not include pictures at all layers may be referred to as a complete AU 627. An AU 628 that does not include pictures at all layers may be referred to as an incomplete AU 628.

[0106] Layer N-1 633 is included to illustrate a scenario in which AU 628 is incomplete. Layer N-1 633 includes pictures 625 and 626, which are substantially the same as pictures 615 and 617, respectively. However, layer N-1 633 does not include pictures that correspond to pictures 616 and 618. Thus, layer N-1 633 is substantially similar to layer N 631, but includes a lower frame rate. Thus, AU 627, which includes pictures 611, 615, and 625, is complete. However, AU 628, which includes pictures 612 and 616, is an incomplete AU 628, since AU 628 is missing pictures in the N-1 633 layer.

[0107] Encoding an incomplete AU 628 can be useful because it allows the multi-layer video sequence 600 to be transmitted at different frame rates to different users. However, the incomplete AU 628 can create difficulties when inspecting the encoded video sequence for conformance. For example, an SEI message may be used to transmit parameters used by an HRD, such as the HRD 500, when inspecting the multi-layer video sequence 600 for conformance with a standard. Some video coding systems allow an SEI message to be applied to all layers in AUs 627-628. The problem is that such an SEI message may be persistent for multiple AUs 627-628. When an SEI message is applied to all layers in an incomplete AU 628, such an SEI message is not applied to layer N-1 633 because layer N-1 633 is not included in the incomplete AU 628. Thus, the SEI message is not applied to layer N-1 633 in the complete AU 627 that follows the incomplete AU 628. This can lead to unpredictable errors since the SEI messages are properly applied to layer N-1 633 when such messages occur associated with a complete AU 627, but are not applied to layer N-1 633 when such messages occur associated with an incomplete AU 628. This and other issues are addressed by the signaling scheme described below.

[0108] 7 is a schematic diagram illustrating an exemplary bitstream 700. For example, the bitstream 700 may be generated by the codec system 200 and / or the encoder 300 for decoding by the codec system 200 and / or the decoder 400 according to the method 100. Furthermore, the bitstream 700 may include the multi-layer video sequence 600. Additionally, the bitstream 700 may include various parameters for controlling the operation of an HRD, such as the HRD 500. Based on such parameters, the HRD 500 may check the bitstream 700 for compliance with a standard before sending it towards the decoder for decoding.

[0109] The bitstream 700 includes a VPS 711, one or more SPSs 713, a number of picture parameter sets (PPS) 715, a number of slice headers 717, image data 720, and an SEI message 719. The VPS 711 includes data related to the entire bitstream 700. For example, the VPS 711 may include data related to the OLS, layers, and / or sublayers used in the bitstream 700. The SPS 713 includes sequence data common to all pictures in a coded video sequence included in the bitstream 700. For example, each layer may include one or more coded video sequences, and each coded video sequence may reference the SPS 713 for corresponding parameters. The parameters in the SPS 713 may include picture size, bit depth, coding tool parameters, bit rate limits, etc. It should be noted that while each sequence references an SPS 713, a single SPS 713 may include data for multiple sequences in some examples. PPS 715 includes parameters that apply to the entire picture. Therefore, each picture in a video sequence may reference PPS 715. Note that while each picture references PPS 715, a single PPS 715 may contain data for multiple pictures in some instances. For example, multiple similar pictures may be coded according to similar parameters. In such a case, a single PPS 715 may contain data for such similar pictures. PPS 715 may indicate coding tools available for slices in the corresponding picture, quantization parameters, offsets, etc.

[0110] The slice header 717 includes parameters specific to each slice in a picture. Therefore, in a video sequence, there may be one slice header 717 per slice. The slice header 717 may include slice type information, POC, reference picture list, prediction weights, tile entry points, deblocking parameters, etc. Note that in some examples, the bitstream 700 may include a picture header, which is a syntax structure that includes parameters that apply to all slices in a single picture. For this reason, the picture header and slice header 717 may be used interchangeably in some contexts. For example, certain parameters may be moved between the slice header 717 and the picture header depending on whether such parameters are common to all slices in a picture.

[0111] Image data 720 includes video data encoded according to inter prediction and / or intra prediction, as well as corresponding transformed and quantized residual data. For example, image data 720 may include layer 723, picture 725, and / or slice 727. Layer 723 is a set of VCL NAL units and associated non-VCL NAL units that share certain characteristics (e.g., a common resolution, frame rate, image size, etc.) as indicated by a layer ID, such as nuh_layer_id 729. For example, layer 723 may include a set of pictures 725 that share the same nuh_layer_id. Layer 723 may be substantially similar to layers 631, 632, and / or 633. nuh_layer_id 729 is a syntax element that specifies an identifier of layer 723 that includes at least one NAL unit. For example, the lowest quality layer 723, known as the base layer, may include the lowest value of nuh_layer_id 729 with increasing values ​​of nuh_layer_id 729 for higher quality layers 723. Thus, the lower layer is the layer 723 with the smaller value of nuh_layer_id 729 and the higher layer is the layer 723 with the larger value of nuh_layer_id 729.

[0112] A picture 725 is an array of luma samples and / or chroma samples that generate a frame or a field thereof. For example, a picture 725 is a coded image that may be output for display or may be used to support coding of other pictures 725 for output. A picture 725 includes one or more slices 727. A slice 727 may be defined as an integer number of complete tiles or an integer number of consecutive complete coding tree unit (CTU) rows (e.g., within a tile) of a picture 725 that are exclusively contained in a single NAL unit. A slice 727 is further divided into CTUs and / or coding tree blocks (CTBs). A CTU is a group of samples of a predefined size that can be partitioned by a coding tree. A CTB is a subset of a CTU and includes the luma or chroma component of the CTU. The CTUs / CTBs are further divided into coding blocks based on the coding tree. The coding blocks may then be encoded / decoded according to a prediction mechanism.

[0113] The bitstream 700 may be coded as a sequence of NAL units. A NAL unit is a container for video data and / or supporting syntax. The NAL units may be VCL NAL units or non-VCL NAL units. A VCL NAL unit is a NAL unit coded to contain video data, such as image data 720 and associated slice headers 717. A non-VCL NAL unit is a NAL unit that contains non-video data, such as syntax and / or parameters, that support decoding, conformance checking, or other operations on the video data. For example, a non-VCL NAL unit may contain a VPS 711, an SPS 713, a PPS 715, an SEI message 719, or other supporting syntax.

[0114] The SEI messages 719 may be syntax structures with specified meanings that carry information that is not required by the decoding process to determine values ​​of samples in the decoded picture. For example, the SEI messages 719 may include data that supports the HRD process or other support data that is not directly related to decoding the bitstream 700 at the decoder. A set of SEI messages 719 may be implemented as a scalable nesting SEI message 741. The scalable nesting SEI message 741 provides a mechanism to associate an SEI message 719 with a particular layer 723. The scalable nesting SEI message 741 is a message that includes multiple scalable nested SEI messages 742. The scalable nesting SEI message 742 is an SEI message 719 that corresponds to one or more OLSs or one or more layers 723. An OLS is a set of layers 723, at least one of which is an output layer. Thus, the scalable nesting SEI message 741 can be said to include a set of scalable nested SEI messages 742 or to include a set of SEI messages 719, depending on the context. Furthermore, the scalable nesting SEI message 741 includes a set of scalable nested SEI messages 742 of the same type. The SEI message 719 may include a BP SEI message including HRD parameters for initializing the HRD and managing the CPB to test the corresponding OLS and / or layer 723. The SEI message 719 may also include a PT SEI message including HRD parameters for managing delivery information for AUs in the CPB and / or DPB to test the corresponding OLS and / or layer 723. The SEI message 719 may also include a DUI SEI message including HRD parameters for managing delivery information for DUs in the CPB and / or DPB to test the corresponding OLS and / or layer 723.

[0115] As mentioned above, the SEI message 719 may be included in a non-VCL NAL unit. For example, the scalable nesting SEI message 741 may be included in a SEI NAL unit 743. The SEI NAL unit 743 is a NAL unit having type data indicating that the SEI NAL unit 743 contains SEI data. One advantage of the scalable nesting SEI message 741 is that it allows a set of scalable nesting SEI messages 742 to be included in a single SEI NAL unit 743. When the scalable nesting SEI message 741 is not used, each SEI message 719 is included in a separate SEI NAL unit 743. For clarity of discussion, the particular SEI NAL unit 743 may be referred to as the current SEI NAL unit 743.

[0116] One problem with the scalable nesting SEI message 741 is that the entire set of scalable nested SEI messages 742 is contained in a single SEI NAL unit 743. However, the set of scalable nested SEI messages 742 can relate to corresponding layers 723 in many ways. For example, each of the scalable nested SEI messages 742 in the set can relate to all layers 723. In another example, each of the scalable nested SEI messages 742 in the set can relate to one or more of the layers 723. Various flags can be used to indicate the correlation between the scalable nesting SEI message 742 and the layers 723. As mentioned above, one problem with the scalable nested SEI message 742 flag is that the flag indicating a scalable nested SEI message 742 applies to all layers in an AU, which can cause errors when a video sequence includes an incomplete AU. Another problem is that the SEI NAL unit 743 that contains the scalable nesting SEI message 741 is always associated with a layer 723, e.g., the layer 723 with the lowest nuh_layer_id 729. When a scalable nesting SEI message 742 is applied to a layer 723 that is associated with the SEI NAL unit 743, the association is signaled in both the SEI NAL unit 743 and the scalable nesting SEI message 741. This is redundant and wastes bits.

[0117] The bitstream 700 includes various flags for signaling the configuration of the SEI message 719 while addressing the above-mentioned problems. For example, the scalable nesting SEI message 741 may include a scalable nesting all layers flag (all_layers_flag) 735. The scalable nesting all_layers_flag 735 syntax element specifies whether the scalable nested SEI message 742 in the scalable nesting SEI message 741 applies to all layers 723, for example as specified in the VPS 711. By using the scalable nesting all_layers_flag 735, which does not address AUs, the incomplete AU problem is avoided. Thus, when scalable nesting all_layers_flag 735 is set, the scalable nested SEI message 742 contained in the scalable nesting SEI message 741 applies to all layers 723, regardless of the number of layers 723 contained in the AU to which the scalable nesting SEI message 741 applies. In a particular example, scalable nesting all_layers_flag 735 is set equal to 1 to specify that the scalable nested SEI message 742 applies to all layers 723 with nuh_layer_id 729 greater than or equal to the nuh_layer_id 729 of the current SEI NAL unit 743. Additionally, scalable nesting all_layers_flag 735 may be set equal to 0 to specify that the scalable nested SEI message 742 may or may not apply to all layers 723 with nuh_layer_id 729 greater than or equal to the nuh_layer_id 729 of the current SEI NAL unit 743.Therefore, the scalable nesting all_layers_flag 735 increases the functionality of the encoder and / or decoder by allowing the bitstream 700 to be properly checked for conformance when incomplete AUs are present. Furthermore, the scalable nesting all_layers_flag 735 reduces the size of the encoded bitstream 700 by eliminating explicit layer signaling for the scalable nested SEI message 742 when such a message applies to all layers 723. As a result, the coding efficiency is increased, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and the decoder.

[0118] To address the redundant signaling issue, the scalable nesting SEI message 741 may include a scalable nesting layer id (layer_id[i]) 739. The scalable nesting layer_id[i] 739 is a syntax element that specifies the nuh_layer_id 729 value of the i-th layer to which the scalable nested SEI message 742 applies. The scalable nesting layer_id[i] 739 may be used when the scalable nesting all_layers_flag 735 is set to 0. In this manner, the layer_Id[i] 739 may be used to correlate each of the scalable nested SEI messages 742 to a corresponding layer 723. Further, scalable nesting layer_id[i] 739 is configured to signal all nuh_layer_id 729 of the layer 723 corresponding to the scalable nested SEI message 742 except for the nuh_layer_id 729 of the layer 723 corresponding to the SEI NAL unit 743. When the scalable nested SEI message 742 is not associated with a nuh_layer_id 729 value in scalable nesting layer_id[i] 739, it may be inferred that the scalable nested SEI message 742 pertains to the layer 723 associated with the SEI NAL unit 743. For example, the SEI NAL unit 743 may be associated with the lowest value of nuh_layer_id 729. Therefore, scalable nesting layer_id[i] 739 may be constrained such that the scalable nesting layer_id[i] 739 for each layer i must be greater than the nuh_layer_id 729 of the current SEI NAL unit 743.This ensures that the nuh_layer_id 729 of the current SEI NAL unit 743 is signaled in the current SEI NAL unit yunitto 743 but is not repeated in the scalable nesting layer_id[i] 739 in the scalable nesting SEI message 741 . This improves the scalable nesting SEI message 741 by eliminating redundant Ids. For example, the loop that encodes / decodes the scalable nesting layer_id[i] 739 runs once in less time, which reduces processor resources during encoding and / or decoding. Furthermore, this reduces the size of the encoded bitstream 700 for each scalable nesting SEI message 741 in the bitstream 700. As a result, coding efficiency is increased, which reduces the usage of processor, memory, and / or network signaling resources in both the encoder and decoder.

[0119] The HRD and / or decoder may use the scalable nesting layer_id[i] 739 and scalable nesting all_layers_flag 735 to correlate the scalable nested SEI message 742 to layers 723, e.g., based on other syntax elements in the bitstream 700. For example, the HRD and / or decoder may use a number of nesting layers (nestingNumLayers) variable and a list of nesting layer Ids (NestingLayerId[i]) variable. As a matter of nomenclature, syntax elements with an underscore may be signaled in the bitstream 700 by the encoder, while syntax elements without an underscore or space may be variables determined (e.g., at the HRD and / or decoder) when reading data from the bitstream 700. The nestingNumLayers variable specifies the number of layers 723 to which the scalable nesting SEI message 742 applies based on data in the bitstream 700. The NestingLayerId[i] variable is a variable that is set to specify a list of nuh_layer_id values ​​of layers 723 to which the scalable nested SEI message 742 applies, for i in the range 0 to nestingNumLayers-1 (inclusive), based on the data in bitstream 700. nestingNumLayers and NestingLayerId[i] may be determined as follows:

number

[0120] The above code relies on the VPS Max Layers minus one (vps_max_layers_minus1) 731, which is a syntax element carried in the VPS 711 that specifies the multi-layers 723 in the bitstream 700. The above code also relies on the VPS Layer Id (vps_layer_id[i]) 733. The vps_layer_id[i] 733 is a syntax element carried in the VPS 733 that specifies the nuh_layer_id 729 value of the i-th layer. Therefore, vps_layer_id[i] 733 specifies the nuh_layer_id 729 for each layer 723 such that the nuh_layer_id 729 can be accessed by layer index i.

[0121] The preceding code also relies on a general layer index (GeneralLayerIdx) variable. GeneralLayerIdx is a variable determined by the HRD and / or the decoder that specifies the layer index of layer 723 with nuh_layer_id equal to vps_layer_id[i] 733. The preceding code also relies on the scalable nesting number of layers minus one (num_layers_minus1) 737 syntax element. Scalable nesting num_layers_minus1 737 is a syntax element carried in the scalable nesting SEI message 741 that specifies the number of layers 723 to which the scalable nested SEI message 742 in the scalable nesting SEI message 741 applies. scalable nesting num_layers_minus1 737 uses a minus-one format and therefore contains one less than the actual value. For example, if a scalable nesting SEI message 741 includes a scalable nesting SEI message 742 related to five layers 723, then scalable nesting num_layers_minus1 737 is set to a value of 4. In some examples, scalable nesting num_layers_minus1 737 is constrained to be in the range 0 to vps_max_layers_minus1 731 - GeneralLayerIdx[nuh_layer_id] (inclusive), where nuh_layer_id 729 is the nuh_layer_id 729 of the current SEI NAL unit 743.

[0122] The foregoing information is described in more detail below in this specification. Layered video coding is also referred to as scalable video coding or video coding with scalability. Scalability in video coding may be supported by using multi-layer coding techniques. A multi-layer bitstream includes a base layer (BL) and one or more enhancement layers (EL). Examples of scalability include spatial scalability, quality / signal-to-noise ratio (SNR) scalability, multi-view scalability, frame rate scalability, etc. When multi-layer coding techniques are used, a picture or a part thereof may be coded without using a reference picture (intra prediction), may be coded by referencing a reference picture in the same layer (inter prediction), or may be coded by referencing a reference picture in another layer (inter-layer prediction). A reference picture used for inter-layer prediction of a current picture is called an inter-layer reference picture (ILRP). Figure 6 shows an example of multi-layer coding for spatial scalability where pictures in different layers have different resolutions.

[0123] Some video coding families provide support for scalability in profiles separated from profiles for single-layer coding. Scalable Video Coding (SVC) is a scalable extension of Advanced Video Coding (AVC) that provides support for spatial, temporal and quality scalability. In SVC, a flag is signaled in each macroblock (MB) in an EL picture to indicate whether the EL MB is predicted using collocated blocks from the lower layer. Predictions from collocated blocks may include texture, motion vectors, and / or coding modes. An implementation of SVC may not directly reuse unmodified AVC implementations in its design. The SVC EL macroblock syntax and decoding process differ from the AVC syntax and decoding process.

[0124] Scalable HEVC (SHVC) is an extension of HEVC that provides support for spatial and quality scalability. Multiview HEVC (MV-HEVC) is an extension of HEVC that provides support for multiview scalability. 3D HEVC (3D-HEVC) is an extension of HEVC that provides support for 3D video coding that is more advanced and efficient than MV-HEVC. Temporal scalability may be included as an integral part of a single-layer HEVC codec. In the multi-layer extension of HEVC, decoded pictures used for inter-layer prediction originate only from the same AU and are treated as long-term reference pictures (LTRPs). Such pictures are assigned a reference index in the reference picture list along with other temporal reference pictures in the current layer. Inter-layer prediction (ILP) is achieved at the prediction unit (PU) level by setting the value of the reference index to refer to an inter-layer reference picture in the reference picture list. Spatial scalability involves resampling a reference picture or part of it when the ILRP has a different spatial resolution than the current picture being coded or decoded. The resampling of the reference picture can be realized either at the picture level or at the coding block level.

[0125] VVC may also support layered video coding. A VVC bitstream may contain multiple layers. Each layer may be independent of the other. For example, each layer may be coded without using inter-layer prediction. In this case, the layers are also referred to as co-cast layers. In some cases, some of the layers are coded using ILP. A flag in the VPS may indicate whether the layers are co-cast layers or whether some layers use ILP. When some layers use ILP, layer dependencies between layers are also signaled in the VPS. Unlike SHVC and MV-HEVC, VVC may not specify an OLS. An OLS includes a specified set of layers, and one or more layers in the set of layers are specified to be output layers. An output layer is a layer of the OLS that is output. In some implementations of VVC, only one layer may be selected for decoding and output when a layer is a co-cast layer. In some implementations of VVC, the entire bitstream including all layers is specified to be decoded when any layer uses ILP. In addition, certain layers between layers are specified to be output layers. The output layer may be indicated to be the top layer, all layers, or just the top layer plus the set of indicated lower layers.

[0126] The aforementioned aspects include certain problems. Some video coding systems specify that scalable nesting SEI messages for associating SEI messages with bitstream subsets correspond to different operation points with specific layers and / or sublayers. The first problem occurs when nesting SEI messages for specific layers using scalable nesting SEI messages contained in SEI NAL units with a specific nuh_layer_id value of nuh_LayerId. In this case, applicable layers with nuh_layer_id equal to nuh_LayerId are also explicitly signaled when the nested SEI message does not apply to all layers. However, applicable layers with nuh_layer_id equal to nuh_LayerId are always applicable layers. Thus, signaling nuh_layer_id in the SEI NAL units is not necessary (e.g., redundant) and is a waste of bits.

[0127] The second problem occurs when the nested SEI message applies to all layers. The semantics may indicate that all_layer_flag is set equal to 1 to specify that the list nestingLayerIdList[0] contains all values ​​of nuh_layer_id present in the current access unit that are greater than or equal to the nuh_layer_id of the current SEI NAL unit, in ascending order of value. However, the current AU may be an incomplete AU. This may occur when the AU does not have pictures present for all layers. The persistent scope of the nested SEI message may include other AUs that contain pictures for more layers than the current AU. As a result, layers that are missing in the current AU (the AU that contains the scalable nesting SEI message) are not specified as applicable. When other AUs in the persistent scope of the nested SEI message have pictures of layers that are missing in the current AU, the information carried in the nested SEI message is interpreted as not applicable to those pictures. As a result, an error may occur. For example, if a nested SEI message contains a frame packaging SEI message, the rendered picture may contain artifacts that result in a poor user experience.

[0128] In general, this disclosure describes an approach for scalable nesting of SEI messages for layers in a multi-layer video bitstream. The description of the techniques is based on VVC. However, the techniques also apply to layered video coding based on other video codec specifications.

[0129] One or more of the above problems may be resolved as follows. Specifically, the present disclosure includes a method for efficiently nesting SEI messages for use with layers in conjunction with incomplete AUs, as described above. First, the layer with a layer Id equal to that of the SEI NAL unit that contains the scalable nesting SEI message is inferred to be the layer to which the nested SEI message applies, rather than being explicitly signaled. Second, when the nested SEI message applies to all layers, the nested SEI message applies to all layers specified by the VPS, which are all layers that may be present in the bitstream, rather than all layers present in the current AU.

[0130] An exemplary implementation of the aforementioned mechanism is as follows: An exemplary scalable nesting SEI message syntax is as follows: [Table 1]

[0131] In an alternative example, the syntax element nesting_layer_id[i] is a ue(v) coding of the layer index between layers specified by the VPS. In another alternative example, the syntax element nesting_layer_id[i] is a ue(v) coding of the delta of the layer index between layers specified by the VPS. In another alternative example, the syntax element nesting_layer_id[i] is a ue(v) coding of the delta of nuh_layer_id.

[0132] Exemplary scalable nesting SEI message semantics are as follows: A scalable nesting SEI message provides a mechanism to associate an SEI message with a specific layer in the context of a specific OLS or with a specific layer not in the context of an OLS. A scalable nesting SEI message contains one or more SEI messages. An SEI message contained in a scalable nesting SEI message is also called a scalable nested SEI message. Bitstream conformance MAY require that the following restrictions apply when an SEI message is included in a scalable nesting SEI message:

[0133] A SEI message with payloadType equal to 132 (decoded picture hash) or 133 (scalable nesting) SHOULD NOT be included in a scalable nesting SEI message. When a scalable nesting SEI message contains a buffer duration, picture timing, or decoding unit information SEI message, the scalable nesting SEI message SHOULD NOT contain any other SEI message with payloadType not equal to 0 (buffer duration), 1 (picture timing), or 130 (decoding unit information).

[0134] Bitstream conformance MAY need to apply the following restrictions on the value of nal_unit_type of an SEI NAL unit that contains a scalable nesting SEI message: When a scalable nesting SEI message contains an SEI message with payloadType equal to 0 (buffer duration), 1 (picture timing), 130 (decoded unit information), 145 (dependent RAP indication), or 168 (frame field information), the SEI NAL unit that contains the scalable nesting SEI message SHOULD have nal_unit_type set equal to PREFIX_SEI_NUT. When a scalable nesting SEI message contains an SEI message with payloadType equal to 132 (decoded picture hash), the SEI NAL unit that contains the scalable nesting SEI message SHOULD have nal_unit_type set equal to SUFFIX_SEI_NUT.

[0135] nesting_ols_flag may be set equal to 1 to specify that the scalable nesting SEI message applies to a particular layer in the context of a particular OLS. nesting_ols_flag may be set equal to 0 to specify that the scalable nesting SEI message applies to a particular layer generally (e.g., not in the context of an OLS).

[0136] Bitstream conformance may require that the following constraints apply to the value of nesting_ols_flag: When a scalable nesting SEI message contains an SEI message with payloadType equal to 0 (buffer duration), 1 (picture timing), or 130 (decoding unit information), the value of nesting_ols_flag shall be equal to 1. When a scalable nesting SEI message contains an SEI message with payloadType equal to a value in VclAssociatedSeiList, the value of nesting_ols_flag shall be equal to 0.

[0137] nesting_num_olss_minus1+1 specifies the number of OLSs to which the scalable nesting SEI message applies. The value of nesting_num_olss_minus1 shall be in the range of 0 to TotalNumOlss-1. nesting_ols_Idx_delta_minus1[i] is used to derive the variable NestingOlsIdx[i], which specifies the OLS index of the ith OLS to which the scalable nesting SEI message applies, when nesting_ols_flag is equal to 1. The value of nesting_ols_Idx_delta_minus1[i] shall be in the range of 0 to TotalNumOls-2, inclusive. The variable NestingOlsIdx[i] may be derived as follows:

number

[0138] nesting_num_ols_layers_minus1[i]+1 specifies the number of layers to which the scalable nesting SEI message applies in the context of the NestingOlsIdx[i]-th OLS. The value of nesting_num_ols_layers_minus1[i] should be in the range 0 to NumLayersInOls[NestingOlsIdx[i]]-1, inclusive.

[0139] nesting_ols_layer_idx_delta_minus1[i][j] is used to derive the variable NestingOlsLayerIdx[i][j] that specifies the OLS layer index of the jth layer to which the scalable nested SEI message applies in the context of the NestingOlsLayerIdx[i][j]th OLS when nesting_ols_flag is equal to 1. The value of nesting_ols_layer_idx_delta_minus1[i] should be in the range 0 to NumLayersInOls[nestingOlsIdx[i]]-2, inclusive.

[0140] The variable NestingOlsLayerIdx[i][j] may be derived as follows:

number

[0141] LayerIdInOls[NestingOlsIdx[i]][NestingOlsIdx[i][NestingOlsLayerIdx[i][0]] for i in the range 0 to nesting_num_olss_minus1, inclusive, SHALL be equal to the nuh_layer_id of the current SEI NAL unit (e.g., the SEI NAL unit that contains the scalable nesting SEI message). nesting_all_layers_flag MAY be set equal to 1 to specify that the scalable nested SEI message applies generically to all layers with nuh_layer_id greater than or equal to the nuh_layer_id of the current SEI NAL unit. nesting_all_layers_flag MAY be set equal to 0 to specify that the scalable nested SEI message may or may not apply generically to all layers with nuh_layer_id greater than or equal to the nuh_layer_id of the current SEI NAL unit.

[0142] nesting_num_layers_minus1+1 specifies the number of layers to which a scalable nested SEI message generally applies. The value of nesting_num_layers_minus1 SHALL be in the range from 0 to vps_max_layers_minus1-GeneralLayerIdx[nuh_layer_id], inclusive, where nuh_layer_id is the nuh_layer_id of the current SEI NAL unit. nesting_layer_id[i] specifies the nuh_layer_id value of the i-th layer to which a scalable nested SEI message generally applies when nesting_all_layers_flag is equal to 0. The value of nesting_layer_id[i] SHALL be greater than nuh_layer_id, where nuh_layer_id is the nuh_layer_id of the current SEI NAL unit.

[0143] The variables Nesting NumLayers, which specifies the number of layers to which a scalable nested SEI message generally applies when nesting_ols_flag is equal to 1, and Nesting LayerId[i], which specifies the list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to Nesting NumLayers-1 (inclusive), are derived as follows, where nuh_layer_id is the nuh_layer_id of the current SEI NAL unit:

number

[0144] nesting_num_seis_minus1+1 specifies the number of scalable nested SEI messages. The value of nesting_num_seis_minus1 should be in the range of 0 to 63 (inclusive). nesting_zero_bit should be set equal to zero.

[0145] FIG. 8 is a schematic diagram of an exemplary video coding device 800. The video coding device 800 is suitable for implementing the disclosed examples / embodiments described herein. The video coding device 800 includes a downstream port 820, an upstream port 850, and / or a transceiver unit 810 including a transmitter and / or receiver for communicating data upstream and / or downstream over a network. The video coding device 800 also includes a processor 830 including a logic unit and / or central processing unit (CPU) for processing data, and a memory 832 for storing data. The video coding device 800 may also include electrical components, optical-to-electrical (OE) components, electrical-to-optical (EO) components, and / or wireless communication components coupled to the upstream port 850 and / or downstream port 820 for communication of data over an electrical, optical, or wireless communication network. The video coding device 800 may also include input and / or output (I / O) devices 860 for communicating data to and from a user. The I / O devices 860 may include output devices such as a display for displaying video data, speakers for outputting audio data, etc. The I / O devices 860 may also include input devices such as a keyboard, a mouse, a trackball, etc., and / or corresponding interfaces for interacting with such output devices.

[0146] The processor 830 is implemented by hardware and software. The processor 830 may be implemented as one or more CPU chips, cores (e.g., multi-core processors), field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and digital signal processors (DSPs). The processor 830 is in communication with the downstream port 820, the Tx / Rx 810, the upstream port 850, and the memory 832. The processor 830 includes a coding module 814. The coding module 814 implements the embodiments described and disclosed herein, such as the methods 100, 900, and 1000, which may use the multi-layer video sequence 600 and / or the bitstream 700. The coding module 814 may also implement any other method / mechanism described herein. Additionally, the coding module 814 may implement the codec system 200, the encoder 300, the decoder 400, and / or the HRD 500. For example, coding module 814 may be used to implement HRD. Furthermore, coding module 814 may be used to encode the scalable nesting SEI message with a corresponding flag to support clear and concise signaling of a correlation between the scalable nested SEI message and a corresponding layer in the scalable nesting SEI message. Thus, coding module 814 may be configured to execute a mechanism to address one or more of the problems discussed above. Thus, coding module 814 causes video coding device 800 to provide additional functionality and / or coding efficiency when coding video data. In this manner, coding module 814 improves the functionality of video coding device 800 while addressing problems inherent in video coding techniques. Furthermore, coding module 814 effects transformation of video coding device 800 into different states.Alternatively, the coding module 814 may be implemented as instructions stored in memory 832 and executed by the processor 830 (e.g., as a computer program product stored on a non-transitory medium).

[0147] The memory 832 may include one or more memory types such as a disk, a tape drive, a solid state drive, a read-only memory (ROM), a random access memory (RAM), flash memory, a ternary content addressable memory (TCAM), a static random access memory (SRAM), etc. The memory 832 is used as an overflow data storage device to store programs when such programs are selected for execution and to store instructions and data read during program execution.

[0148] 9 is a flow chart of an example method 900 for encoding a video sequence into a bitstream, such as bitstream 700, that includes scalable nesting SEI messages that apply to layers. Method 900 may be used by an encoder, such as codec system 200, encoder 300, and / or video coding device 800, when performing method 100. Additionally, method 900 may operate on HRD 500 and thus perform conformance tests on multi-layer video sequence 600.

[0149] Method 900 may begin when an encoder receives a video sequence and determines, for example, based on user input, to encode the video sequence into a multi-layer bitstream. In step 901, the encoder encodes the video sequence into one or more layers and encodes the layers into a multi-layer bitstream. Thus, the bitstream includes one or more layers. A layer may include a set of VCL NAL units and non-VCL NAL units having the same layer Id. For example, a layer may include a set of VCL NAL units including video data of a coded picture as well as any parameter set used to code such picture. One or more of the layers may be output layers. Layers that are not output layers are coded to support reconstruction of output layers, but such support layers are not intended for output at a decoder. In this manner, the encoder may encode various combinations of layers for transmission to a decoder upon request. Layers may be transmitted as needed to enable a decoder to obtain different representations of the video sequence depending on network conditions, hardware capabilities, and / or user settings.

[0150] In step 903, the encoder encodes one or more scalable nesting SEI messages into the bitstream in the current SEI NAL unit. The SEI message is a syntax structure that includes data that is not used for decoding. For example, the SEI message may include data to support conformance testing to ensure that the bitstream conforms to a standard. To support simplified signaling when used in conjunction with a multi-layer bitstream, the SEI message is encoded as a scalable nesting SEI message. The scalable nesting SEI message provides a mechanism to associate an SEI message with a particular layer. The scalable nesting SEI message includes one or more scalable nested SEI messages. The scalable nested SEI messages may each apply to one or more of the OLSs and / or one or more of the layers. To support simplified signaling, the scalable nesting SEI message includes the scalable nesting all_layers_flag, which specifies whether the scalable nesting SEI message applies to all layers with layer-Ids that are equal to or greater than the layer-Id of the current SEI NAL unit. Because the scalable nesting all_layers_flag is global and is not specified based on the corresponding AU, the scalable nesting all_layers_flag actually applies to all layers. This prevents the above-mentioned error even when the current SEI NAL unit is associated with an incomplete AU. Thus, the scalable nesting all_layers_flag allows the scalable nesting SEI message to apply to all layers, regardless of whether the current AU is a complete or incomplete AU.

[0151] In a particular example, the scalable nesting all_layers_flag is set equal to 1 when specifying that the scalable nested SEI message applies to all layers with nuh_layer_id equal to or greater than the nuh_layer_id of the current SEI NAL unit. In a particular example, the scalable nesting all_layers_flag is set equal to 0 when specifying that the scalable nested SEI message may or may not apply to all layers with nuh_layer_id equal to or greater than the nuh_layer_id of the current SEI NAL unit. The above constraints and / or requirements ensure that the bitstream complies with, for example, VVC as modified as set forth herein or some other standard. However, the encoder may also be capable of operating in other modes that are not subject to the constraints, for example, when operating with a different standard or a different version of the same standard.

[0152] In step 905, the HRD running at the encoder may perform a set of bitstream conformance tests on the layers based on the scalable nesting SEI message. For example, the HRD may read a flag in the scalable nesting SEI message to determine how to interpret the scalable nested SEI message included in the scalable nesting SEI message. The HRD may then read the scalable nested SEI message to determine how to check the layers for conformance to the standard. The HRD may then perform conformance tests on the layers based on corresponding flags in the scalable nested SEI message and / or the scalable nesting SEI message.

[0153] In some examples, the HRD can determine the correlation between the scalable nested SEI message and the layers using the nestingNumLayers and NestingLayerId[i] variables. The nestingNumLayers variable specifies the number of layers to which the scalable nested SEI message applies. NestingLayerId[i] specifies the list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive. The nestingNumLayers and NestingLayerId[i] can be derived by the HRD based on data from the bitstream. The HRD can then use the nestingNumLayers and NestingLayerId[i] variables as needed to support conformance testing. In some examples, the nestingNumLayers and NestingLayerId[i] are derived as follows:

number

[0154] In step 907, the encoder can store the bitstream for communication to the decoder upon request. The encoder can also transmit the bitstream to the encoder as needed.

[0155] 10 is a flow chart of an example method 1000 of decoding a video sequence from a bitstream, such as bitstream 700, that includes scalable nesting SEI messages that apply to layers. Method 1000 may be used by a decoder, such as codec system 200, decoder 400, and / or video coding device 800, when performing method 100. Additionally, method 1000 may be used with a multi-layer video sequence 600 that has been checked for conformance by an HRD, such as HRD 500.

[0156] Method 1000 may begin when a decoder begins receiving a bitstream of coded data representing a multi-layer video sequence, e.g., as a result of method 900. In step 1001, the decoder receives a bitstream including one or more layers. A layer may include a set of VCL NAL units and non-VCL NAL units having the same layer Id. For example, a layer may include a set of VCL NAL units including video data of a coded picture as well as any parameter set used to code such picture. One or more of the layers may be output layers. Layers that are not output layers are decoded to support decoding of output layers, but such supporting layers are not output.

[0157] The bitstream also includes one or more scalable nesting SEI messages. An SEI message is a syntax structure that includes data that is not used for decoding. For example, an SEI message may include data to support conformance testing to ensure that the bitstream conforms to a standard. To support simplified signaling when used in conjunction with a multi-layer bitstream, an SEI message is coded in a scalable nesting SEI message. The scalable nesting SEI message provides a mechanism to associate an SEI message with a particular layer. The scalable nesting SEI message includes one or more scalable nested SEI messages. A specified scalable nesting SEI message may be included in the current SEI NAL unit, where the current SEI NAL unit is a non-VCL NAL unit that includes the SEI message. The scalable nested SEI messages may each apply to one or more of the OLSs and / or one or more of the layers. To support simplified signaling, the scalable nesting SEI message includes the scalable nesting all_layers_flag, which specifies whether the scalable nesting SEI message applies to all layers with layer-Ids that are equal to or greater than the layer-Id of the current SEI NAL unit. Because the scalable nesting all_layers_flag is global and is not specified based on the corresponding AU, the scalable nesting all_layers_flag actually applies to all layers. This prevents the above-mentioned error even when the current SEI NAL unit is associated with an incomplete AU. Thus, the scalable nesting all_layers_flag allows the scalable nesting SEI message to apply to all layers, regardless of whether the current AU is a complete or incomplete AU.

[0158] In some examples, the scalable nesting all_layers_flag is set equal to 1 to specify that the scalable nested SEI message applies to all layers with a nuh_layer_id greater than or equal to the nuh_layer_id of the current SEI NAL unit. In a particular example, the scalable nesting all_layers_flag is set equal to 0 to specify that the scalable nested SEI message may or may not apply to all layers with a nuh_layer_id greater than or equal to the nuh_layer_id of the current SEI NAL unit.

[0159] In some examples, the decoder can determine the correlation between a scalable nested SEI message and a layer using the nestingNumLayers and NestingLayerId[i] variables. The nestingNumLayers variable specifies the number of layers to which the scalable nested SEI message applies. NestingLayerId[i], for i in the range 0 to nestingNumLayers-1, inclusive, specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies. nestingNumLayers and NestingLayerId[i] may be derived by a decoder based on data from the bitstream. The decoder may then use the nestingNumLayers and NestingLayerId[i] variables as necessary to support decoding and / or display. In some examples, nestingNumLayers and NestingLayerId[i] are derived as follows:

number

[0160] In an embodiment, the video decoder expects the scalable nesting SEI message to use the scalable nesting all_layers_flag as described above under VVC or some other standard. However, if the decoder determines that this condition is not true, the decoder may detect an error, signal an error, request that a corrected bitstream (or a portion thereof) be retransmitted, or take some other corrective action to ensure that a conforming bitstream is received.

[0161] In step 1003, the decoder may decode the coded pictures from one or more layers to generate a decoded picture. For example, the presence of a scalable nesting SEI message may indicate that the bitstream has been inspected by the HRD at the encoder and therefore conforms to the standard. Thus, the presence of the scalable nesting SEI message indicates that the bitstream may be decoded. In step 1005, the decoder may forward the decoded video for display as part of a decoded video sequence. For example, the decoded pictures and / or video sequence may be displayed to a user on a display or screen of an electronic device (e.g., a smart phone, a tablet, a laptop, a personal computer, etc.).

[0162] 11 is a schematic diagram of an example system 1100 for coding a video sequence using a bitstream including scalable nesting SEI messages applied to layers. The system 1100 may be implemented by an encoder and a decoder, such as the codec system 200, the encoder 300, the decoder 400, and / or the video coding device 800. Additionally, the system 1100 may use the HRD 500 to perform conformance tests on the multi-layer video sequence 600 and / or the bitstream 700. Additionally, the system 1100 may be used when implementing the methods 100, 900, and / or 1000.

[0163] The system 1100 includes a video encoder 1102. The video encoder 1102 includes a coding module 1103 for encoding a bitstream including one or more layers. The coding module 1103 is further for encoding a scalable nesting SEI message in a current SEI NAL unit into a bitstream, the scalable nesting SEI message including a scalable nesting SEI message and a scalable nesting all_layers_flag that specifies whether the scalable nesting SEI message applies to all layers having a layer Id equal to or greater than the layer Id of the current SEI NAL unit. The video encoder 1102 further includes an HRD module 1105 for performing a set of bitstream conformance tests on the layers based on the scalable nested SEI message. The video encoder 1102 further includes a storage module 1106 for storing the bitstream for communication to a decoder. The video encoder 1102 further includes a transmission module 1107 for transmitting the bitstream towards the video decoder 1110. The video encoder 1102 may be further configured to perform any of the steps of the method 900.

[0164] The system 1100 also includes a video decoder 1110. The video decoder 1110 includes a receiving module 1111 for receiving a bitstream including one or more layers and a scalable nesting supplemental enhancement information (SEI) message in a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting SEI message and a scalable nesting all_layers_flag that specifies whether the scalable nesting SEI message applies to all layers having a layer Id equal to or greater than the layer Id of the current SEI NAL unit. The video decoder 1110 further includes a decoding module 1113 for decoding coded pictures from the one or more layers to generate decoded pictures. The video decoder 1110 further includes a transport module 1115 for transporting the decoded pictures for display as part of a decoded video sequence. The video decoder 1110 may be further configured to perform any of the steps of the method 1000.

[0165] A first component is directly coupled to a second component when there are no intervening components, other than a line, trace, or other medium between the first and second components. A first component is indirectly coupled to a second component when there are intervening components, other than a line, trace, or other medium between the first and second components. The term "coupled" and variations thereof include both directly coupled and indirectly coupled. Use of the term "about" means a range that includes ±10% of the subsequent number, unless otherwise specified.

[0166] It should also be understood that the steps of the exemplary methods described herein do not necessarily have to be performed in the order described, and that the ordering of steps of such methods is merely exemplary. Similarly, additional steps may be included in such methods, and certain steps may be omitted or combined in methods consistent with various embodiments of the present disclosure.

[0167] Although multiple embodiments are provided in this disclosure, it will be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the disclosure. The examples are considered to be illustrative and not limiting, and the intention is not to be limited to the details provided herein. For example, various elements or components may be combined or integrated into another system, or certain features may be omitted, or not implemented.

[0168] Additionally, the techniques, systems, subsystems, and methods described and illustrated individually or separately in the various embodiments may be combined or integrated with other systems, components, techniques, or methods without departing from the scope of the present disclosure. Other examples of changes, substitutions, and alterations will be ascertainable by one of ordinary skill in the art and may be made without departing from the spirit and scope disclosed herein.

Claims

1. 1. A method implemented in a decoder, comprising: receiving, by a receiver of a decoder, a bitstream including one or more layers and a scalable nesting supplemental enhancement information (SEI) message in a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id equal to or greater than a nuh_layer_id of the current SEI NAL unit; set equal to 0 when specifying that the scalable nested SEI message may or may not be applied to all layers with nuh_layer_id equal to or greater than the nuh_layer_id of a NAL unit; and when nesting_ols_flag is equal to a first value, deriving by the processor a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]), where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies and where NestingLayerId[i] specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive, and where the nestingNumLayers and the NestingLayerId[i] are [0010] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies.

2. 1. A method implemented in an encoder, comprising: encoding, by a processor of the encoder, a bitstream comprising one or more layers; encoding, by the processor, a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit into the bitstream, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit; set equal to 0 when specifying that the scalable nested SEI message may or may not be applied to all layers with nuh_layer_id equal to or greater than the nuh_layer_id of a NAL unit; deriving, by the processor, when nesting_ols_flag is equal to a first value, a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]), where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies and where NestingLayerId[i] specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive, where the nestingNumLayers and the NestingLayerId[i] specify [0025] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies.

3. 1. A receiving means for receiving a bitstream including a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit, receiving means for receiving a scalable nested SEI message, the scalable nested SEI message being set equal to 0 when specifying that the scalable nested SEI message may or may not be applied to all layers having a nuh_layer_id equal to or greater than the nuh_layer_id of a NAL unit; 2. A method for deriving a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]) when nesting_ols_flag is equal to a first value, wherein said nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies, and wherein said NestingLayerId[i] specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive, wherein said nestingNumLayers and said NestingLayerId[i] are [0030] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting and a deriving means, where layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies.

4. encoding a bitstream comprising one or more layers; encoding a scalable nesting supplemental enhancement information (SEI) message into the bitstream in a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id equal to or greater than a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id equal to or greater than a nuh_layer_id of the current SEI NAL unit; set equal to 0 when specifying that the scalable nested SEI message may or may not be applied to all layers with nuh_layer_id equal to or greater than the nuh_layer_id of a NAL unit; deriving a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]) when nesting_ols_flag is equal to a first value, where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies, and where NestingLayerId[i] specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive, and where the nestingNumLayers and the NestingLayerId[i] are [0045] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies.

5. a receiver configured to receive pictures to encode or to receive a bitstream to decode; a transmitter coupled to the receiver, the transmitter configured to transmit the bitstream to a decoder or to transmit a decoded image to a display; a memory coupled to at least one of the receiver or the transmitter, the memory configured to store instructions; A processor coupled to the memory, the processor configured to execute the instructions stored in the memory to perform the method of claim 1 or 2.

6. An encoder; and a decoder in communication with said encoder, said encoder or said decoder being a decoder according to claim 3, an encoder according to claim 4, or a coding device according to claim 5.

7. receiving means arranged to receive pictures to be coded or to receive a bitstream to be decoded; a transmitting means coupled to said receiving means, said transmitting means being configured to transmit said bitstream to a decoding means or to transmit a decoded image to a display means; a storage means coupled to at least one of said receiving means or said transmitting means, said storage means configured to store instructions; and a processing means coupled to said storage means, said processing means being configured to execute said instructions stored in said storage means to perform the method according to claim 1 or 2.

8. A device for storing a bitstream, the device including at least one storage medium and at least one communication interface; the at least one communication interface is configured to receive or transmit the bitstream; the at least one storage medium is configured to store the bitstream; The bitstream includes a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers with a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers with a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit. set equal to 0 when specifying that the scalable nested SEI message may or may not be applied to all layers having a nuh_layer_id equal to or greater than the nuh_layer_id of the NAL unit; The device is configured, when nesting_ols_flag is equal to a first value, to derive a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]), where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies and where NestingLayerId[i] specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive, where the nestingNumLayers and the NestingLayerId[i] are [0050] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting A device, wherein layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies.

9. 1. A method for storing a bitstream, comprising: Receiving or transmitting a bitstream over a communications interface; storing the bitstream in one or more storage media, the bitstream including a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit; set equal to 0 when specifying that the scalable nested SEI message may or may not be applied to all layers with nuh_layer_id equal to or greater than the nuh_layer_id of a NAL unit; deriving a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]) when nesting_ols_flag is equal to a first value, where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies, and where NestingLayerId[i] specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive, and where the nestingNumLayers and the NestingLayerId[i] are [006] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies.

10. 1. A device for transmitting a bitstream, comprising: At least one storage medium configured to store at least one bitstream, the bitstream including a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id equal to or greater than a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id equal to or greater than a nuh_layer_id of the current SEI NAL unit, At least one storage medium, the scalable nested SEI message may or may not be applied to all layers having a nuh_layer_id equal to or greater than the nuh_layer_id of a NAL unit; and at least one processor configured to obtain one or more bitstreams from one of the at least one storage medium and transmit the at least one bitstream to a destination device; The at least one processor is configured, when nesting_ols_flag is equal to a first value, to derive a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]), where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies and where NestingLayerId[i] specifies, for i in the range 0 to nestingNumLayers-1, inclusive, a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, and where the nestingNumLayers and the NestingLayerId[i] are [0070] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting A device, wherein layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies.

11. 1. A method for transmitting a bitstream, comprising: Storing at least one bitstream on at least one storage medium, the bitstream including a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id equal to or greater than a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers having a nuh_layer_id equal to or greater than a nuh_layer_id of the current SEI NAL unit, storing, when specifying that the scalable nested SEI message may or may not be applied to all layers having a nuh_layer_id equal to or greater than the nuh_layer_id of a NAL unit; deriving a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]) when nesting_ols_flag is equal to a first value, where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies, and where NestingLayerId[i] specifies a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, for i in the range 0 to nestingNumLayers-1, inclusive, and where the nestingNumLayers and the NestingLayerId[i] are [0080] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies; and obtaining one or more bitstreams from one of the at least one storage medium; transmitting the at least one bitstream to a destination device.

12. 1. A system for processing a bitstream, comprising: an encoding device; one or more storage devices; and a decoding device; the encoding device is configured to obtain a video signal and encode the video signal to obtain one or more bitstreams; The bitstream includes a scalable nesting supplemental enhancement information (SEI) message in one or more layers and a current SEI network abstraction layer (NAL) unit, the scalable nesting SEI message including a scalable nesting all_layers_flag, the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers with a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit, and the scalable nesting all_layers_flag being set equal to 1 when specifying that a scalable nested SEI message applies to all layers with a nuh_layer_id greater than or equal to a nuh_layer_id of the current SEI NAL unit. set equal to 0 when specifying that the scalable nested SEI message may or may not be applied to all layers having a nuh_layer_id equal to or greater than the nuh_layer_id of the NAL unit; The encoding device is configured, when nesting_ols_flag is equal to a first value, to derive a number of nesting layers (nestingNumLayers) and a list of nesting layer Ids (NestingLayerId[i]), where the nestingNumLayers specifies a number of layers to which the scalable nested SEI message applies and where NestingLayerId[i] specifies, for i in the range 0 to nestingNumLayers-1, inclusive, a list of nuh_layer_id values ​​of the layers to which the scalable nested SEI message applies, and where the nestingNumLayers and the NestingLayerId[i] are [0090] where the nesting_ols_flag equal to a first value indicates that the scalable nested SEI message applies to a particular layer, vps_max_layers_minus1+1 specifies the number of layers specified by a video parameter set (VPS), GeneralLayerIdx is a variable that specifies the layer index of the layer having nuh_layer_id equal to vps_layer_id[i], vps_layer_id[i] specifies the nuh_layer_id value of the i-th layer, scalable nesting num_minus1+1 specifies the number of layers to which the scalable nested SEI message applies, and scalable nesting layer_id[i] specifies the nuh_layer_id value of the i-th layer to which the scalable nested SEI message applies; the one or more storage devices are used to store the one or more bitstreams; The decoding device is used to decode the one or more bitstreams.

13. A computer readable storage medium storing a computer program, the computer program being configured to, when executed by a processor, cause the processor to perform the method of claim 1 or 2.

14. A program comprising program code, which when executed by a computer or a processor causes the computer or processor to carry out the method according to claim 1 or 2.

15. A coder including circuitry for carrying out the method according to claim 1 or 2.

Citation Information

Patent Citations

  • Identification of operation points applicable to nested SEI message in video coding

    US20140098894A1

  • Generic use of HEVC SEI messages for multi-layer codecs

    US20150271529A1

  • Method and apparatus for video coding and decoding

    WO2015104451A1